From 03f9fc74d0c5dd12d2ad1ab9f454da571f5c6f9c Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Thu, 29 Aug 2024 15:21:43 +1200 Subject: [PATCH 001/154] docs(start): partner logos to be visible in dark-mode (#2212) * docs(start): databases * docs(start): hosting * docs(start): observability * docs(start): fix the link * docs(start): authentication * docs(start): use the tracking link * docs(start): use the tracking link * docs(start): more tracking link stuff * docs(start): overview --- docs/framework/react/start/authentication.md | 8 +++- docs/framework/react/start/databases.md | 14 +++--- docs/framework/react/start/hosting.md | 14 ++++-- docs/framework/react/start/observability.md | 14 ++++-- docs/framework/react/start/overview.md | 48 +++++++++++++++----- 5 files changed, 70 insertions(+), 28 deletions(-) diff --git a/docs/framework/react/start/authentication.md b/docs/framework/react/start/authentication.md index 3c7d0f6f62..36e3c10df4 100644 --- a/docs/framework/react/start/authentication.md +++ b/docs/framework/react/start/authentication.md @@ -15,7 +15,13 @@ That said, authentication is not something to be taken lightly. After much vetti ## What is Clerk? -[![Clerk Logo](https://github.com/raw/tannerlinsley/files/master/partners/clerk.svg)](https://go.clerk.com/wOwHtuJ) + + + + + Convex logo + + Clerk is a modern authentication platform that provides a full suite of authentication APIs and UI components to help you implement authentication in your application. Clerk is designed to be easy to use and provides a seamless user experience. With Clerk, you can implement authentication in your application in minutes and provide your users with a secure and reliable authentication experience. diff --git a/docs/framework/react/start/databases.md b/docs/framework/react/start/databases.md index 772c1b8efb..1cf048ed94 100644 --- a/docs/framework/react/start/databases.md +++ b/docs/framework/react/start/databases.md @@ -9,15 +9,15 @@ Databases are at the core of any dynamic application, providing the necessary in TanStack Start is **designed to work with any database provider**, so if you already have a preferred database system, you can integrate it with TanStack Start using the provided full-stack APIs. Whether you're working with SQL, NoSQL, or other types of databases, TanStack Start can handle your needs. -That said, the choice of a database is critical to your application's performance, scalability, and reliability, which is we highly recommend using [Convex](https://convex.dev) for the best possible database experience. +That said, the choice of a database is critical to your application's performance, scalability, and reliability, which is we highly recommend using [Convex](https://convex.dev?utm_source=tanstack) for the best possible database experience. ## What is Convex? - + - - - Convex logo + + + Convex logo @@ -25,8 +25,8 @@ Convex is a powerful, serverless database platform that simplifies the process o Convex’s declarative data model and automatic conflict resolution ensure that your application remains consistent and responsive, even at scale. It’s designed to be developer-friendly, with a focus on simplicity and productivity. -- To learn more about Convex, visit the [Convex website](https://convex.dev) -- To sign up, visit the [Convex dashboard](https://dashboard.convex.dev/signup) +- To learn more about Convex, visit the [Convex website](https://convex.dev?utm_source=tanstack) +- To sign up, visit the [Convex dashboard](https://dashboard.convex.dev/signup?utm_source=tanstack) ## Documentation & APIs diff --git a/docs/framework/react/start/hosting.md b/docs/framework/react/start/hosting.md index ebdecf8eee..9016d5225d 100644 --- a/docs/framework/react/start/hosting.md +++ b/docs/framework/react/start/hosting.md @@ -9,16 +9,22 @@ Hosting is the process of deploying your application to the internet so that use TanStack Start is **designed to work with any hosting provider**, so if you already have a hosting provider in mind, you can deploy your application there using the full-stack APIs provided by TanStack Start. -However, since hosting is one of the most crucial aspects of your application's performance, reliability, and scalability, we highly recommend using [Vercel](https://vercel.com) for the best possible hosting experience. +However, since hosting is one of the most crucial aspects of your application's performance, reliability, and scalability, we highly recommend using [Vercel](https://vercel.com?utm_source=tanstack) for the best possible hosting experience. ## What is Vercel? -[![Vercel Logo](https://github.com/raw/tannerlinsley/files/master/partners/vercel.svg)](https://vercel.com) + + + + + Convex logo + + Vercel is a leading hosting platform that provides a fast, secure, and reliable environment for deploying your web applications. With Vercel, you can deploy your TanStack Start application in just a few clicks and benefit from features like a global edge network, automatic scaling, and seamless integrations with GitHub and GitLab. Vercel is designed to make your development process as smooth as possible, from local development to production deployment. -- To learn more about Vercel, visit the [Vercel website](https://vercel.com) -- To sign up, visit the [Vercel dashboard](https://vercel.com/signup) +- To learn more about Vercel, visit the [Vercel website](https://vercel.com?utm_source=tanstack) +- To sign up, visit the [Vercel dashboard](https://vercel.com/signup?utm_source=tanstack) ## Documentation & APIs diff --git a/docs/framework/react/start/observability.md b/docs/framework/react/start/observability.md index 35077c510b..fb483ba814 100644 --- a/docs/framework/react/start/observability.md +++ b/docs/framework/react/start/observability.md @@ -9,18 +9,24 @@ Observability is a critical aspect of modern web development, enabling you to mo TanStack Start is **designed to work with any observability tool**, so you can integrate your preferred solution using the full-stack APIs provided by TanStack Start. Whether you need logging, tracing, or error monitoring, TanStack Start is flexible enough to meet your observability needs. -However, for the best observability experience, we highly recommend using [Sentry](https://sentry.io). Sentry is a powerful, full-featured observability platform that provides real-time insights into your application's performance and error tracking. +However, for the best observability experience, we highly recommend using [Sentry](https://sentry.io?utm_source=tanstack). Sentry is a powerful, full-featured observability platform that provides real-time insights into your application's performance and error tracking. ## What is Sentry? -[![Sentry Logo](https://github.com/raw/tannerlinsley/files/master/partners/sentry.svg)](https://sentry.io) + + + + + Convex logo + + Sentry is a leading observability platform that helps developers monitor and fix crashes in real-time. With Sentry, you can track errors, performance issues, and trends across your entire stack, from the frontend to the backend. Sentry integrates seamlessly with TanStack Start, enabling you to identify and resolve issues faster, maintain a high level of performance, and deliver a better experience to your users. Sentry’s comprehensive dashboards, alerting capabilities, and in-depth error analysis tools make it an invaluable resource for any development team looking to maintain control over their application’s health in production. -- To learn more about Sentry, visit the [Sentry website](https://sentry.io) -- To sign up, visit the [Sentry dashboard](https://sentry.io/signup) +- To learn more about Sentry, visit the [Sentry website](https://sentry.io?utm_source=tanstack) +- To sign up, visit the [Sentry dashboard](https://sentry.io/signup?utm_source=tanstack) ## Documentation & APIs diff --git a/docs/framework/react/start/overview.md b/docs/framework/react/start/overview.md index 40f066adac..d606a5d461 100644 --- a/docs/framework/react/start/overview.md +++ b/docs/framework/react/start/overview.md @@ -68,18 +68,42 @@ TanStack Start is not for you if: TanStack works closely with our partners to provide the best possible developer experience while also providing solutions that work anywhere and are vetted by industry experts. Each of our partners plays a unique role in the TanStack ecosystem: -- **Vercel** - Vercel - The leading hosting platform for web applications that provides a fast, secure, and reliable environment for deploying your web applications. We work closely with Vercel to ensure that TanStack Start applications not only deploy seamlessly to their platform, but also implement best practices for performance, security, and reliability regardless of where you end up deploying. -- **Clerk** - Clerk - The best possible authentication experience for modern web applications, including TanStack Start applications. Clerk provides TanStack Start users with first-class integrations and solutions to auth and collaborates closely with the TanStack team to ensure that TanStack Start provides APIs that are up to date with the latest in auth best practices. -- **Convex** - Convex - A serverless database platform that integrates seamlessly with TanStack Start. Convex is designed to simplify the process of managing your application's data and provides a real-time, scalable, and transactional data backend that works well with TanStack Start applications. Convex also collaborates closely with the TanStack team to ensure that TanStack Start provides APIs that are up to date with the latest in database best practices. -- **Sentry** - Sentry - A powerful, full-featured observability platform that integrates seamlessly with TanStack Start. Sentry helps developers monitor and fix crashes in real-time and provides insights into your application's performance and error tracking. Sentry collaborates closely with the TanStack team to ensure that TanStack Start provides APIs that are up to date with the latest in observability best practices. +- **Vercel** + + + + + Convex logo + + + The leading hosting platform for web applications that provides a fast, secure, and reliable environment for deploying your web applications. We work closely with Vercel to ensure that TanStack Start applications not only deploy seamlessly to their platform, but also implement best practices for performance, security, and reliability regardless of where you end up deploying. +- **Clerk** + + + + + Convex logo + + + The best possible authentication experience for modern web applications, including TanStack Start applications. Clerk provides TanStack Start users with first-class integrations and solutions to auth and collaborates closely with the TanStack team to ensure that TanStack Start provides APIs that are up to date with the latest in auth best practices. +- **Convex** + + + + + Convex logo + + + A serverless database platform that integrates seamlessly with TanStack Start. Convex is designed to simplify the process of managing your application's data and provides a real-time, scalable, and transactional data backend that works well with TanStack Start applications. Convex also collaborates closely with the TanStack team to ensure that TanStack Start provides APIs that are up to date with the latest in database best practices. +- **Sentry** + + + + + Convex logo + + + A powerful, full-featured observability platform that integrates seamlessly with TanStack Start. Sentry helps developers monitor and fix crashes in real-time and provides insights into your application's performance and error tracking. Sentry collaborates closely with the TanStack team to ensure that TanStack Start provides APIs that are up to date with the latest in observability best practices. ## Ready to get started? From 20266513a6bb0460ba55f7c9cb005eb945b8460b Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Wed, 28 Aug 2024 22:52:27 -0600 Subject: [PATCH 002/154] docs: route tree fixes --- docs/framework/react/guide/route-trees.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/framework/react/guide/route-trees.md b/docs/framework/react/guide/route-trees.md index ff16339f00..7602581227 100644 --- a/docs/framework/react/guide/route-trees.md +++ b/docs/framework/react/guide/route-trees.md @@ -16,11 +16,13 @@ the [Code-Based Routing](./code-based-routing.md) guide. ## Route Trees -Nested routing is a powerful concept that allows you to use a URL to render a nested component tree. For example, given the URL of `/blog/posts/123`, you could match a path hierarchy that looks like this: +Nested routing is a powerful concept that allows you to use a URL to render a nested component tree. For example, given the URL of `/blog/posts/123`, you could create a route hierarchy that looks like this: -- /blog - - /posts - - /$postId +```tsx +├── blog +│ ├── posts +│ │ ├── $postId +``` And render a component tree that looks like this: @@ -32,7 +34,7 @@ And render a component tree that looks like this: ``` -A file-based route tree might look something like this: +Let's take that concept and expand it out to a larger site structure, but with file-names now: ``` /routes From abf4d009941e3944a018d9a370105668bc49b8f8 Mon Sep 17 00:00:00 2001 From: Lachlan Collins <1667261+lachlancollins@users.noreply.github.com> Date: Thu, 29 Aug 2024 16:11:20 +1000 Subject: [PATCH 003/154] chore: remove unused dependencies (#2214) * chore: remove unused dependencies * Sync vite-tsconfig-paths version --- examples/react/start-basic-auth/package.json | 2 +- .../start-basic-react-query/package.json | 2 +- examples/react/start-basic-rsc/package.json | 2 +- examples/react/start-basic/package.json | 2 +- examples/react/start-clerk-basic/package.json | 2 +- .../react/start-convex-trellaux/package.json | 2 +- examples/react/start-trellaux/package.json | 4 +- packages/start/package.json | 7 +- pnpm-lock.yaml | 532 +++--------------- 9 files changed, 82 insertions(+), 473 deletions(-) diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 5d7604509e..a71df2d0fe 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -47,6 +47,6 @@ "tailwindcss": "^3.4.4", "typescript": "^5.5.3", "vite": "^5.3.3", - "vite-tsconfig-paths": "^4.3.2" + "vite-tsconfig-paths": "^5.0.1" } } diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 9d7de73ab8..cc4c2cf78c 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -42,6 +42,6 @@ "tailwindcss": "^3.4.7", "typescript": "^5.5.3", "vite": "^5.3.5", - "vite-tsconfig-paths": "^4.3.2" + "vite-tsconfig-paths": "^5.0.1" } } diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 88f0eb02e9..f1b87619d0 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -32,7 +32,7 @@ "tailwindcss": "^3.4.7", "typescript": "^5.5.3", "vite": "^5.3.5", - "vite-tsconfig-paths": "^4.3.2" + "vite-tsconfig-paths": "^5.0.1" }, "overrides": { "react": "0.0.0-experimental-035a41c4e-20230704", diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 8351a74250..5b41cb39b3 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -39,6 +39,6 @@ "tailwindcss": "^3.4.7", "typescript": "^5.5.3", "vite": "^5.3.5", - "vite-tsconfig-paths": "^4.3.2" + "vite-tsconfig-paths": "^5.0.1" } } diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 280720cdab..eabf760329 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -45,6 +45,6 @@ "tailwindcss": "^3.4.4", "typescript": "^5.5.3", "vite": "^5.3.3", - "vite-tsconfig-paths": "^4.3.2" + "vite-tsconfig-paths": "^5.0.1" } } diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 1abb664635..fa8bfc04b5 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -49,6 +49,6 @@ "tailwindcss": "^3.4.7", "typescript": "^5.5.3", "vite": "^5.3.5", - "vite-tsconfig-paths": "^4.3.2" + "vite-tsconfig-paths": "^5.0.1" } } diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 4647fdba8f..0e891fd24d 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -1,5 +1,5 @@ { - "name": "tanstack-router-example-react-start-basic-trellaux", + "name": "tanstack-router-example-react-start-trellaux", "private": true, "sideEffects": false, "type": "module", @@ -44,6 +44,6 @@ "tailwindcss": "^3.4.7", "typescript": "^5.5.3", "vite": "^5.3.5", - "vite-tsconfig-paths": "^4.3.2" + "vite-tsconfig-paths": "^5.0.1" } } diff --git a/packages/start/package.json b/packages/start/package.json index a37640f89a..8cbb66c05d 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -149,7 +149,7 @@ "jsesc": "^3.0.2", "tiny-invariant": "^1.3.3", "vinxi": "0.4.1", - "vite-tsconfig-paths": "^4.3.2", + "vite-tsconfig-paths": "^5.0.1", "zod": "^3.23.8" }, "devDependencies": { @@ -157,10 +157,7 @@ "@vitejs/plugin-react": "^4.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", - "rollup-plugin-preserve-directives": "^0.4.0", - "typescript": "^5.5.3", - "vite-plugin-dts": "^3.9.1", - "vite-plugin-externalize-deps": "^0.8.0" + "typescript": "^5.5.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b48c488388..49b01e2e47 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1142,8 +1142,8 @@ importers: specifier: ^5.3.5 version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) vite-tsconfig-paths: - specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + specifier: ^5.0.1 + version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) examples/react/start-basic-auth: dependencies: @@ -1242,8 +1242,8 @@ importers: specifier: ^5.3.3 version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) vite-tsconfig-paths: - specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + specifier: ^5.0.1 + version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) examples/react/start-basic-counter: dependencies: @@ -1376,8 +1376,8 @@ importers: specifier: ^5.3.5 version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) vite-tsconfig-paths: - specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + specifier: ^5.0.1 + version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) examples/react/start-basic-rsc: dependencies: @@ -1440,8 +1440,8 @@ importers: specifier: ^5.3.5 version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) vite-tsconfig-paths: - specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + specifier: ^5.0.1 + version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) examples/react/start-clerk-basic: dependencies: @@ -1537,8 +1537,8 @@ importers: specifier: ^5.3.3 version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) vite-tsconfig-paths: - specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + specifier: ^5.0.1 + version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) examples/react/start-convex-trellaux: dependencies: @@ -1643,8 +1643,8 @@ importers: specifier: ^5.3.5 version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) vite-tsconfig-paths: - specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + specifier: ^5.0.1 + version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) examples/react/start-trellaux: dependencies: @@ -1740,8 +1740,8 @@ importers: specifier: ^5.3.5 version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) vite-tsconfig-paths: - specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + specifier: ^5.0.1 + version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) examples/react/with-framer-motion: dependencies: @@ -2166,8 +2166,8 @@ importers: specifier: 0.4.1 version: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) vite-tsconfig-paths: - specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + specifier: ^5.0.1 + version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2184,18 +2184,9 @@ importers: react-dom: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) - rollup-plugin-preserve-directives: - specifier: ^0.4.0 - version: 0.4.0(rollup@4.18.0) typescript: specifier: ^5.5.3 version: 5.5.3 - vite-plugin-dts: - specifier: ^3.9.1 - version: 3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) - vite-plugin-externalize-deps: - specifier: ^0.8.0 - version: 0.8.0(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) packages/start-vite-plugin: dependencies: @@ -3591,9 +3582,6 @@ packages: '@jridgewell/source-map@0.3.6': resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} @@ -3631,29 +3619,16 @@ packages: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true - '@microsoft/api-extractor-model@7.28.13': - resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} - '@microsoft/api-extractor-model@7.29.4': resolution: {integrity: sha512-LHOMxmT8/tU1IiiiHOdHFF83Qsi+V8d0kLfscG4EvQE9cafiR8blOYr8SfkQKWB1wgEilQgXJX3MIA4vetDLZw==} - '@microsoft/api-extractor@7.43.0': - resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} - hasBin: true - '@microsoft/api-extractor@7.47.4': resolution: {integrity: sha512-HKm+P4VNzWwvq1Ey+Jfhhj/3MjsD+ka2hbt8L5AcRM95lu1MFOYnz3XlU7Gr79Q/ZhOb7W/imAKeYrOI0bFydg==} hasBin: true - '@microsoft/tsdoc-config@0.16.2': - resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} - '@microsoft/tsdoc-config@0.17.0': resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} - '@microsoft/tsdoc@0.14.2': - resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} - '@microsoft/tsdoc@0.15.0': resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} @@ -4678,14 +4653,6 @@ packages: '@rushstack/eslint-patch@1.10.3': resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} - '@rushstack/node-core-library@4.0.2': - resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - '@rushstack/node-core-library@5.5.1': resolution: {integrity: sha512-ZutW56qIzH8xIOlfyaLQJFx+8IBqdbVCZdnj+XT1MorQ1JqqxHse8vbCpEM+2MjsrqcbxcgDIbfggB1ZSQ2A3g==} peerDependencies: @@ -4694,20 +4661,9 @@ packages: '@types/node': optional: true - '@rushstack/rig-package@0.5.2': - resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} - '@rushstack/rig-package@0.5.3': resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} - '@rushstack/terminal@0.10.0': - resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - '@rushstack/terminal@0.13.3': resolution: {integrity: sha512-fc3zjXOw8E0pXS5t9vTiIPx9gHA0fIdTXsu9mT4WbH+P3mYvnrX0iAQ5a6NvyK1+CqYWBTw/wVNx7SDJkI+WYQ==} peerDependencies: @@ -4716,9 +4672,6 @@ packages: '@types/node': optional: true - '@rushstack/ts-command-line@4.19.1': - resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} - '@rushstack/ts-command-line@4.22.3': resolution: {integrity: sha512-edMpWB3QhFFZ4KtSzS8WNjBgR4PXPPOVrOHMbb7kNpmQ1UFS9HdVtjCXg1H5fG+xYAbeE+TMPcVPUyX2p84STA==} @@ -5110,10 +5063,6 @@ packages: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/scope-manager@7.17.0': - resolution: {integrity: sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@7.18.0': resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -5132,16 +5081,6 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@7.17.0': - resolution: {integrity: sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.57.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/type-utils@7.18.0': resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -5165,10 +5104,6 @@ packages: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/types@7.17.0': - resolution: {integrity: sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@7.18.0': resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -5186,15 +5121,6 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@7.17.0': - resolution: {integrity: sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/typescript-estree@7.18.0': resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -5219,12 +5145,6 @@ packages: peerDependencies: eslint: ^8.57.0 - '@typescript-eslint/utils@7.17.0': - resolution: {integrity: sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.57.0 - '@typescript-eslint/utils@7.18.0': resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -5241,10 +5161,6 @@ packages: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/visitor-keys@7.17.0': - resolution: {integrity: sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==} - engines: {node: ^18.18.0 || >=20.0.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} @@ -5312,21 +5228,12 @@ packages: '@vitest/utils@1.6.0': resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - '@volar/language-core@1.11.1': - resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} - '@volar/language-core@2.4.0': resolution: {integrity: sha512-FTla+khE+sYK0qJP+6hwPAAUwiNHVMph4RUXpxf/FIPKUP61NFrVZorml4mjFShnueR2y9/j8/vnh09YwVdH7A==} - '@volar/source-map@1.11.1': - resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} - '@volar/source-map@2.4.0': resolution: {integrity: sha512-2ceY8/NEZvN6F44TXw2qRP6AQsvCYhV2bxaBPWxV9HqIfkbRydSksTFObCF1DBDNBfKiZTS8G/4vqV6cvjdOIQ==} - '@volar/typescript@1.11.1': - resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} - '@volar/typescript@2.4.0': resolution: {integrity: sha512-9zx3lQWgHmVd+JRRAHUSRiEhe4TlzL7U7e6ulWXOxHH/WNYxzKwCvZD7WYWEZFdw4dHfTD9vUR0yPQO6GilCaQ==} @@ -5339,14 +5246,6 @@ packages: '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} - '@vue/language-core@1.8.27': - resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@vue/language-core@2.0.29': resolution: {integrity: sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==} peerDependencies: @@ -5882,9 +5781,6 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - caniuse-lite@1.0.30001647: - resolution: {integrity: sha512-n83xdNiyeNcHpzWY+1aFbqCK7LuLfBricc4+alSQL2Xb6OR3XpnQAmlDG+pQcdTfiHRuLcQ96VOfrPSGiNJYSg==} - caniuse-lite@1.0.30001651: resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} @@ -6036,10 +5932,6 @@ packages: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -6292,15 +6184,6 @@ packages: supports-color: optional: true - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.3.6: resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} engines: {node: '>=6.0'} @@ -7938,15 +7821,9 @@ packages: lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -7995,9 +7872,6 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} @@ -8167,9 +8041,6 @@ packages: typescript: optional: true - muggle-string@0.3.1: - resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} - muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} @@ -8946,9 +8817,6 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.19.0: - resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} - resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -9915,10 +9783,6 @@ packages: typescript: optional: true - validator@13.12.0: - resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} - engines: {node: '>= 0.10'} - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -9942,16 +9806,6 @@ packages: '@babel/core': ^7.0.0 vite: ^2.7.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - vite-plugin-dts@3.9.1: - resolution: {integrity: sha512-rVp2KM9Ue22NGWB8dNtWEr+KekN3rIgz1tWD050QnRGlriUCmaDwa7qA5zDEjbXg5lAXhYMSBJtx3q3hQIJZSg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - typescript: '*' - vite: '*' - peerDependenciesMeta: - vite: - optional: true - vite-plugin-dts@4.0.3: resolution: {integrity: sha512-+xnTsaONwU2kV6zhRjtbRJSGN41uFR/whqmcb4k4fftLFDJElxthp0PP5Fq8gMeM9ytWMt1yk5gGgekLREWYQQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -9967,14 +9821,6 @@ packages: peerDependencies: vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - vite-tsconfig-paths@4.3.2: - resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true - vite-tsconfig-paths@5.0.1: resolution: {integrity: sha512-yqwv+LstU7NwPeNqajZzLEBVpUFU6Dugtb2P84FXuvaoYA+/70l9MHE+GYfYAycVyPSDYZ7mjOFuYBRqlEpTig==} peerDependencies: @@ -10039,15 +9885,6 @@ packages: vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - vue-template-compiler@2.7.16: - resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} - - vue-tsc@1.8.27: - resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} - hasBin: true - peerDependencies: - typescript: '*' - vue-tsc@2.0.29: resolution: {integrity: sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==} hasBin: true @@ -10295,11 +10132,6 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - z-schema@5.0.5: - resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} - engines: {node: '>=8.0.0'} - hasBin: true - zip-stream@6.0.1: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} @@ -10352,7 +10184,7 @@ snapshots: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 convert-source-map: 2.0.0 - debug: 4.3.5 + debug: 4.3.6 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -10417,7 +10249,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - debug: 4.3.5 + debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -11247,7 +11079,7 @@ snapshots: '@babel/parser': 7.25.3 '@babel/template': 7.25.0 '@babel/types': 7.25.2 - debug: 4.3.5 + debug: 4.3.6 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -11698,7 +11530,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.6 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -11716,7 +11548,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.5 + debug: 4.3.6 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -11768,7 +11600,7 @@ snapshots: '@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.1': {} @@ -11780,14 +11612,12 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/sourcemap-codec@1.4.15': {} - '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jsonjoy.com/base64@1.1.2(tslib@2.6.2)': dependencies: @@ -11807,7 +11637,7 @@ snapshots: '@kwsites/file-exists@1.1.1': dependencies: - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -11830,14 +11660,6 @@ snapshots: - encoding - supports-color - '@microsoft/api-extractor-model@7.28.13(@types/node@20.14.9)': - dependencies: - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@20.14.9) - transitivePeerDependencies: - - '@types/node' - '@microsoft/api-extractor-model@7.29.4(@types/node@20.14.9)': dependencies: '@microsoft/tsdoc': 0.15.0 @@ -11846,24 +11668,6 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.43.0(@types/node@20.14.9)': - dependencies: - '@microsoft/api-extractor-model': 7.28.13(@types/node@20.14.9) - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@20.14.9) - '@rushstack/rig-package': 0.5.2 - '@rushstack/terminal': 0.10.0(@types/node@20.14.9) - '@rushstack/ts-command-line': 4.19.1(@types/node@20.14.9) - lodash: 4.17.21 - minimatch: 3.0.8 - resolve: 1.22.8 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.4.2 - transitivePeerDependencies: - - '@types/node' - '@microsoft/api-extractor@7.47.4(@types/node@20.14.9)': dependencies: '@microsoft/api-extractor-model': 7.29.4(@types/node@20.14.9) @@ -11882,13 +11686,6 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@microsoft/tsdoc-config@0.16.2': - dependencies: - '@microsoft/tsdoc': 0.14.2 - ajv: 6.12.6 - jju: 1.4.0 - resolve: 1.19.0 - '@microsoft/tsdoc-config@0.17.0': dependencies: '@microsoft/tsdoc': 0.15.0 @@ -11896,8 +11693,6 @@ snapshots: jju: 1.4.0 resolve: 1.22.8 - '@microsoft/tsdoc@0.14.2': {} - '@microsoft/tsdoc@0.15.0': {} '@module-federation/runtime-tools@0.1.6': @@ -12480,7 +12275,7 @@ snapshots: dependencies: '@playwright/test': 1.45.3 chalk: 4.1.2 - debug: 4.3.5 + debug: 4.3.6 fs-extra: 11.2.0 is-uuid: 1.0.2 jsonata: 1.8.7 @@ -12526,7 +12321,7 @@ snapshots: estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.30.10 + magic-string: 0.30.11 optionalDependencies: rollup: 4.18.0 @@ -12534,7 +12329,7 @@ snapshots: dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) estree-walker: 2.0.2 - magic-string: 0.30.10 + magic-string: 0.30.11 optionalDependencies: rollup: 4.18.0 @@ -12558,7 +12353,7 @@ snapshots: '@rollup/plugin-replace@5.0.7(rollup@4.18.0)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - magic-string: 0.30.10 + magic-string: 0.30.11 optionalDependencies: rollup: 4.18.0 @@ -12663,7 +12458,7 @@ snapshots: '@rsbuild/shared@1.0.0': dependencies: '@rspack/core': 0.4.0 - caniuse-lite: 1.0.30001647 + caniuse-lite: 1.0.30001651 line-diff: 2.1.1 lodash: 4.17.21 postcss: 8.4.31 @@ -12836,17 +12631,6 @@ snapshots: '@rushstack/eslint-patch@1.10.3': {} - '@rushstack/node-core-library@4.0.2(@types/node@20.14.9)': - dependencies: - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.8 - semver: 7.5.4 - z-schema: 5.0.5 - optionalDependencies: - '@types/node': 20.14.9 - '@rushstack/node-core-library@5.5.1(@types/node@20.14.9)': dependencies: ajv: 8.13.0 @@ -12860,23 +12644,11 @@ snapshots: optionalDependencies: '@types/node': 20.14.9 - '@rushstack/rig-package@0.5.2': - dependencies: - resolve: 1.22.8 - strip-json-comments: 3.1.1 - '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.10.0(@types/node@20.14.9)': - dependencies: - '@rushstack/node-core-library': 4.0.2(@types/node@20.14.9) - supports-color: 8.1.1 - optionalDependencies: - '@types/node': 20.14.9 - '@rushstack/terminal@0.13.3(@types/node@20.14.9)': dependencies: '@rushstack/node-core-library': 5.5.1(@types/node@20.14.9) @@ -12884,15 +12656,6 @@ snapshots: optionalDependencies: '@types/node': 20.14.9 - '@rushstack/ts-command-line@4.19.1(@types/node@20.14.9)': - dependencies: - '@rushstack/terminal': 0.10.0(@types/node@20.14.9) - '@types/argparse': 1.0.38 - argparse: 1.0.10 - string-argv: 0.3.2 - transitivePeerDependencies: - - '@types/node' - '@rushstack/ts-command-line@4.22.3(@types/node@20.14.9)': dependencies: '@rushstack/terminal': 0.13.3(@types/node@20.14.9) @@ -13280,7 +13043,7 @@ snapshots: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.5 + debug: 4.3.6 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 @@ -13323,7 +13086,7 @@ snapshots: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3) - debug: 4.3.5 + debug: 4.3.6 eslint: 8.57.0 optionalDependencies: typescript: 5.5.3 @@ -13336,7 +13099,7 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.3) '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.5 + debug: 4.3.6 eslint: 8.57.0 optionalDependencies: typescript: 5.5.3 @@ -13348,11 +13111,6 @@ snapshots: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/scope-manager@7.17.0': - dependencies: - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/visitor-keys': 7.17.0 - '@typescript-eslint/scope-manager@7.18.0': dependencies: '@typescript-eslint/types': 7.18.0 @@ -13367,7 +13125,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3) '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.5 + debug: 4.3.6 eslint: 8.57.0 tsutils: 3.21.0(typescript@5.5.3) optionalDependencies: @@ -13375,23 +13133,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@7.17.0(eslint@8.57.0)(typescript@5.5.3)': - dependencies: - '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.3) - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.5 - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.5.3) - optionalDependencies: - typescript: 5.5.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.3) '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.5 + debug: 4.3.6 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: @@ -13403,7 +13149,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.3) '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.5 + debug: 4.3.6 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 @@ -13413,8 +13159,6 @@ snapshots: '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/types@7.17.0': {} - '@typescript-eslint/types@7.18.0': {} '@typescript-eslint/types@8.0.0': {} @@ -13423,7 +13167,7 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.5 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 @@ -13433,26 +13177,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@7.17.0(typescript@5.5.3)': - dependencies: - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/visitor-keys': 7.17.0 - debug: 4.3.5 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.3) - optionalDependencies: - typescript: 5.5.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.3)': dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.5 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 @@ -13467,7 +13196,7 @@ snapshots: dependencies: '@typescript-eslint/types': 8.0.0 '@typescript-eslint/visitor-keys': 8.0.0 - debug: 4.3.5 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 @@ -13493,17 +13222,6 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@7.17.0(eslint@8.57.0)(typescript@5.5.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.3) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) @@ -13531,11 +13249,6 @@ snapshots: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@7.17.0': - dependencies: - '@typescript-eslint/types': 7.17.0 - eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@7.18.0': dependencies: '@typescript-eslint/types': 7.18.0 @@ -13657,7 +13370,7 @@ snapshots: '@vitest/snapshot@1.6.0': dependencies: - magic-string: 0.30.10 + magic-string: 0.30.11 pathe: 1.1.2 pretty-format: 29.7.0 @@ -13672,25 +13385,12 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 - '@volar/language-core@1.11.1': - dependencies: - '@volar/source-map': 1.11.1 - '@volar/language-core@2.4.0': dependencies: '@volar/source-map': 2.4.0 - '@volar/source-map@1.11.1': - dependencies: - muggle-string: 0.3.1 - '@volar/source-map@2.4.0': {} - '@volar/typescript@1.11.1': - dependencies: - '@volar/language-core': 1.11.1 - path-browserify: 1.0.1 - '@volar/typescript@2.4.0': dependencies: '@volar/language-core': 2.4.0 @@ -13715,20 +13415,6 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 - '@vue/language-core@1.8.27(typescript@5.5.3)': - dependencies: - '@volar/language-core': 1.11.1 - '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.4.27 - '@vue/shared': 3.4.27 - computeds: 0.0.1 - minimatch: 9.0.5 - muggle-string: 0.3.1 - path-browserify: 1.0.1 - vue-template-compiler: 2.7.16 - optionalDependencies: - typescript: 5.5.3 - '@vue/language-core@2.0.29(typescript@5.5.3)': dependencies: '@volar/language-core': 2.4.0 @@ -13895,13 +13581,13 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color agent-base@7.1.1: dependencies: - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -13914,9 +13600,9 @@ snapshots: optionalDependencies: ajv: 8.13.0 - ajv-formats@2.1.1(ajv@8.12.0): + ajv-formats@2.1.1(ajv@8.13.0): optionalDependencies: - ajv: 8.12.0 + ajv: 8.13.0 ajv-formats@3.0.1(ajv@8.13.0): optionalDependencies: @@ -13926,9 +13612,9 @@ snapshots: dependencies: ajv: 6.12.6 - ajv-keywords@5.1.0(ajv@8.12.0): + ajv-keywords@5.1.0(ajv@8.13.0): dependencies: - ajv: 8.12.0 + ajv: 8.13.0 fast-deep-equal: 3.1.3 ajv@6.12.6: @@ -14146,7 +13832,7 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.40): dependencies: browserslist: 4.23.3 - caniuse-lite: 1.0.30001647 + caniuse-lite: 1.0.30001651 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 @@ -14311,7 +13997,7 @@ snapshots: browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001647 + caniuse-lite: 1.0.30001651 electron-to-chromium: 1.5.4 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -14378,8 +14064,6 @@ snapshots: camelcase@7.0.1: {} - caniuse-lite@1.0.30001647: {} - caniuse-lite@1.0.30001651: {} chai@4.4.1: @@ -14525,9 +14209,6 @@ snapshots: commander@8.3.0: {} - commander@9.5.0: - optional: true - commondir@1.0.1: {} compare-func@2.0.0: @@ -14755,10 +14436,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.5: - dependencies: - ms: 2.1.2 - debug@4.3.6: dependencies: ms: 2.1.2 @@ -15043,7 +14720,7 @@ snapshots: esbuild-register@3.6.0(esbuild@0.21.5): dependencies: - debug: 4.3.5 + debug: 4.3.6 esbuild: 0.21.5 transitivePeerDependencies: - supports-color @@ -15204,8 +14881,8 @@ snapshots: eslint-plugin-import-x@3.1.0(eslint@8.57.0)(typescript@5.5.3): dependencies: - '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.5 + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.3) + debug: 4.3.6 doctrine: 3.0.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -15454,7 +15131,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.6 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -16071,7 +15748,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -16100,21 +15777,21 @@ snapshots: https-proxy-agent@5.0.0: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -16189,7 +15866,7 @@ snapshots: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.5 + debug: 4.3.6 denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -16286,7 +15963,7 @@ snapshots: is-immutable-type@4.0.0(eslint@8.57.0)(typescript@5.5.3): dependencies: - '@typescript-eslint/type-utils': 7.17.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.3) ts-declaration-location: 1.0.2(typescript@5.5.3) @@ -16670,12 +16347,8 @@ snapshots: lodash.defaults@4.2.0: {} - lodash.get@4.4.2: {} - lodash.isarguments@3.1.0: {} - lodash.isequal@4.5.0: {} - lodash.merge@4.6.2: {} lodash@4.17.21: {} @@ -16727,10 +16400,6 @@ snapshots: lz-string@1.5.0: {} - magic-string@0.30.10: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - magic-string@0.30.11: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -16886,8 +16555,6 @@ snapshots: optionalDependencies: typescript: 5.5.3 - muggle-string@0.3.1: {} - muggle-string@0.4.1: {} multicast-dns@7.2.5: @@ -16955,7 +16622,7 @@ snapshots: klona: 2.0.6 knitwork: 1.1.0 listhen: 1.7.2 - magic-string: 0.30.10 + magic-string: 0.30.11 mime: 4.0.3 mlly: 1.7.0 mri: 1.2.0 @@ -17785,11 +17452,6 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve@1.19.0: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - resolve@1.22.8: dependencies: is-core-module: 2.13.1 @@ -17822,7 +17484,7 @@ snapshots: rollup-plugin-preserve-directives@0.4.0(rollup@4.18.0): dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - magic-string: 0.30.10 + magic-string: 0.30.11 rollup: 4.18.0 rollup-plugin-visualizer@5.12.0(rollup@4.18.0): @@ -17912,9 +17574,9 @@ snapshots: schema-utils@4.2.0: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - ajv-keywords: 5.1.0(ajv@8.12.0) + ajv: 8.13.0 + ajv-formats: 2.1.1(ajv@8.13.0) + ajv-keywords: 5.1.0(ajv@8.13.0) scule@1.3.0: {} @@ -18048,7 +17710,7 @@ snapshots: dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -18115,7 +17777,7 @@ snapshots: spdy-transport@3.0.0: dependencies: - debug: 4.3.5 + debug: 4.3.6 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -18126,7 +17788,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.3.5 + debug: 4.3.6 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -18629,7 +18291,7 @@ snapshots: dependencies: acorn: 8.12.1 estree-walker: 3.0.3 - magic-string: 0.30.10 + magic-string: 0.30.11 unplugin: 1.12.2 undici-types@5.26.5: {} @@ -18671,7 +18333,7 @@ snapshots: estree-walker: 3.0.3 fast-glob: 3.3.2 local-pkg: 0.5.0 - magic-string: 0.30.10 + magic-string: 0.30.11 mlly: 1.7.0 pathe: 1.1.2 pkg-types: 1.1.1 @@ -18722,7 +18384,7 @@ snapshots: unwasm@0.3.9: dependencies: knitwork: 1.1.0 - magic-string: 0.30.10 + magic-string: 0.30.11 mlly: 1.7.0 pathe: 1.1.2 pkg-types: 1.1.1 @@ -18792,8 +18454,6 @@ snapshots: optionalDependencies: typescript: 5.5.3 - validator@13.12.0: {} - vary@1.1.2: {} vinxi@0.3.12(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1): @@ -18933,7 +18593,7 @@ snapshots: vite-node@1.6.0(@types/node@20.14.9)(terser@5.31.1): dependencies: cac: 6.7.14 - debug: 4.3.5 + debug: 4.3.6 pathe: 1.1.2 picocolors: 1.0.1 vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) @@ -18952,23 +18612,6 @@ snapshots: '@babel/core': 7.25.2 vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) - vite-plugin-dts@3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)): - dependencies: - '@microsoft/api-extractor': 7.43.0(@types/node@20.14.9) - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - '@vue/language-core': 1.8.27(typescript@5.5.3) - debug: 4.3.5 - kolorist: 1.8.0 - magic-string: 0.30.10 - typescript: 5.5.3 - vue-tsc: 1.8.27(typescript@5.5.3) - optionalDependencies: - vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) - transitivePeerDependencies: - - '@types/node' - - rollup - - supports-color - vite-plugin-dts@4.0.3(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)): dependencies: '@microsoft/api-extractor': 7.47.4(@types/node@20.14.9) @@ -18993,20 +18636,9 @@ snapshots: dependencies: vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) - vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)): - dependencies: - debug: 4.3.5 - globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.5.3) - optionalDependencies: - vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) - transitivePeerDependencies: - - supports-color - - typescript - vite-tsconfig-paths@5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)): dependencies: - debug: 4.3.5 + debug: 4.3.6 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.5.3) optionalDependencies: @@ -19034,10 +18666,10 @@ snapshots: '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 chai: 4.4.1 - debug: 4.3.5 + 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 @@ -19061,18 +18693,6 @@ snapshots: vscode-uri@3.0.8: {} - vue-template-compiler@2.7.16: - dependencies: - de-indent: 1.0.2 - he: 1.2.0 - - vue-tsc@1.8.27(typescript@5.5.3): - dependencies: - '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.27(typescript@5.5.3) - semver: 7.6.3 - typescript: 5.5.3 - vue-tsc@2.0.29(typescript@5.5.3): dependencies: '@volar/typescript': 2.4.0 @@ -19433,14 +19053,6 @@ snapshots: yocto-queue@1.0.0: {} - z-schema@5.0.5: - dependencies: - lodash.get: 4.4.2 - lodash.isequal: 4.5.0 - validator: 13.12.0 - optionalDependencies: - commander: 9.5.0 - zip-stream@6.0.1: dependencies: archiver-utils: 5.0.2 From 1b0678f1033f7bae5798d0aa1b2a951743aa2c42 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 29 Aug 2024 06:12:36 +0000 Subject: [PATCH 004/154] release: v1.51.3 --- examples/react/basic-ssr-file-based/package.json | 2 +- examples/react/basic-ssr-streaming-file-based/package.json | 2 +- examples/react/start-basic-auth/package.json | 2 +- examples/react/start-basic-counter/package.json | 2 +- examples/react/start-basic-react-query/package.json | 2 +- examples/react/start-basic-rsc/package.json | 2 +- examples/react/start-basic/package.json | 2 +- examples/react/start-clerk-basic/package.json | 2 +- examples/react/start-convex-trellaux/package.json | 2 +- examples/react/start-trellaux/package.json | 2 +- packages/start/package.json | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index f81b2639b1..223213726d 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-router": "^1.51.2", "@tanstack/router-devtools": "^1.51.2", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.2", + "@tanstack/start": "^1.51.3", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 000e386989..7ee606a5c2 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-router": "^1.51.2", "@tanstack/router-devtools": "^1.51.2", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.2", + "@tanstack/start": "^1.51.3", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index a71df2d0fe..506e67eefc 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -19,7 +19,7 @@ "@tanstack/react-router": "^1.51.2", "@tanstack/router-devtools": "^1.51.2", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.2", + "@tanstack/start": "^1.51.3", "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 5bc1bd3a09..b1aa639da5 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@tanstack/react-router": "^1.51.2", - "@tanstack/start": "^1.51.2", + "@tanstack/start": "^1.51.3", "@typescript-eslint/parser": "^7.18.0", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index cc4c2cf78c..4a392a6ce1 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -18,7 +18,7 @@ "@tanstack/react-router-with-query": "^1.51.2", "@tanstack/router-devtools": "^1.51.2", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.2", + "@tanstack/start": "^1.51.3", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index f1b87619d0..7c7cc06f6e 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -15,7 +15,7 @@ "@tanstack/react-router": "^1.51.2", "@tanstack/router-devtools": "^1.51.2", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.2", + "@tanstack/start": "^1.51.3", "redaxios": "^0.5.1", "tailwind-merge": "^2.4.0", "vinxi": "0.4.1" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 5b41cb39b3..e43afc5e38 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -15,7 +15,7 @@ "@tanstack/react-router": "^1.51.2", "@tanstack/router-devtools": "^1.51.2", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.2", + "@tanstack/start": "^1.51.3", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index eabf760329..d6c15c680c 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -18,7 +18,7 @@ "@tanstack/react-router": "^1.51.2", "@tanstack/router-devtools": "^1.51.2", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.2", + "@tanstack/start": "^1.51.3", "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index fa8bfc04b5..5a9303cf40 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -19,7 +19,7 @@ "@tanstack/react-router-with-query": "^1.51.2", "@tanstack/router-devtools": "^1.51.2", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.2", + "@tanstack/start": "^1.51.3", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 0e891fd24d..bb738731b0 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -17,7 +17,7 @@ "@tanstack/react-router-with-query": "^1.51.2", "@tanstack/router-devtools": "^1.51.2", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.2", + "@tanstack/start": "^1.51.3", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", diff --git a/packages/start/package.json b/packages/start/package.json index 8cbb66c05d..2924a199a0 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.51.2", + "version": "1.51.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From c6a80d637cb46ab8580e0bd2c1b85d290ac96d3f Mon Sep 17 00:00:00 2001 From: Lachlan Collins <1667261+lachlancollins@users.noreply.github.com> Date: Thu, 29 Aug 2024 17:06:35 +1000 Subject: [PATCH 005/154] chore(deps): update select dependencies (#2215) * chore(deps): update select dependencies * More updates * More deps * Sync vinxi --- examples/react/basic-file-based/package.json | 2 +- .../basic-react-query-file-based/package.json | 2 +- examples/react/basic-react-query/package.json | 2 +- examples/react/basic/package.json | 2 +- .../quickstart-rspack-file-based/package.json | 4 +- examples/react/start-basic-auth/package.json | 10 +- .../react/start-basic-counter/package.json | 2 +- .../start-basic-react-query/package.json | 6 +- examples/react/start-basic-rsc/package.json | 4 +- examples/react/start-basic/package.json | 6 +- examples/react/start-clerk-basic/package.json | 10 +- .../react/start-convex-trellaux/package.json | 4 +- examples/react/start-trellaux/package.json | 4 +- .../react/with-trpc-react-query/package.json | 2 +- examples/react/with-trpc/package.json | 2 +- package.json | 10 +- packages/react-router/package.json | 1 - packages/start/package.json | 8 +- pnpm-lock.yaml | 1228 ++++++++--------- 19 files changed, 578 insertions(+), 731 deletions(-) diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 4d7a4fbdaf..34bc5a6526 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -20,7 +20,7 @@ "zod": "^3.23.8" }, "devDependencies": { - "@playwright/test": "^1.45.3", + "@playwright/test": "^1.46.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index ac7473760e..e0e231ed86 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -22,7 +22,7 @@ "zod": "^3.23.8" }, "devDependencies": { - "@playwright/test": "^1.45.3", + "@playwright/test": "^1.46.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index e1870ce504..439ead682a 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -19,7 +19,7 @@ "redaxios": "^0.5.1" }, "devDependencies": { - "@playwright/test": "^1.45.3", + "@playwright/test": "^1.46.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index ce409469e5..9b544ed408 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -17,7 +17,7 @@ "redaxios": "^0.5.1" }, "devDependencies": { - "@playwright/test": "^1.45.3", + "@playwright/test": "^1.46.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index b7afa372fd..b126336e31 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -14,8 +14,8 @@ "react-dom": "^18.3.1" }, "devDependencies": { - "@rsbuild/core": "1.0.1-beta.15", - "@rsbuild/plugin-react": "1.0.1-beta.15", + "@rsbuild/core": "1.0.1-rc.0", + "@rsbuild/plugin-react": "1.0.1-rc.0", "@tanstack/router-plugin": "^1.51.0", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 506e67eefc..080c8d94fb 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,8 +14,8 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@remix-run/node": "^2.10.3", - "@remix-run/server-runtime": "^2.10.3", + "@remix-run/node": "^2.11.2", + "@remix-run/server-runtime": "^2.11.2", "@tanstack/react-router": "^1.51.2", "@tanstack/router-devtools": "^1.51.2", "@tanstack/router-plugin": "^1.51.0", @@ -29,11 +29,11 @@ "react-dom": "^18.3.1", "redaxios": "^0.5.1", "remix-auth-form": "^1.5.0", - "tailwind-merge": "^2.4.0", - "vinxi": "0.3.12" + "tailwind-merge": "^2.5.2", + "vinxi": "0.4.2" }, "devDependencies": { - "@playwright/test": "^1.45.1", + "@playwright/test": "^1.46.1", "@replayio/playwright": "^3.1.8", "@types/node": "^20.12.11", "@types/react": "^18.2.65", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index b1aa639da5..db5325cec0 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -16,7 +16,7 @@ "@typescript-eslint/parser": "^7.18.0", "react": "^18.3.1", "react-dom": "^18.3.1", - "vinxi": "0.4.1" + "vinxi": "0.4.2" }, "devDependencies": { "@types/node": "^20.12.11", diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 4a392a6ce1..dbe529a956 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -25,11 +25,11 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "redaxios": "^0.5.1", - "tailwind-merge": "^2.4.0", - "vinxi": "0.4.1" + "tailwind-merge": "^2.5.2", + "vinxi": "0.4.2" }, "devDependencies": { - "@playwright/test": "^1.45.3", + "@playwright/test": "^1.46.1", "@types/node": "^20.12.11", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 7c7cc06f6e..6e09d2081c 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -17,8 +17,8 @@ "@tanstack/router-plugin": "^1.51.0", "@tanstack/start": "^1.51.3", "redaxios": "^0.5.1", - "tailwind-merge": "^2.4.0", - "vinxi": "0.4.1" + "tailwind-merge": "^2.5.2", + "vinxi": "0.4.2" }, "devDependencies": { "@types/react": "^18.2.65", diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index e43afc5e38..528591a733 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -22,11 +22,11 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "redaxios": "^0.5.1", - "tailwind-merge": "^2.4.0", - "vinxi": "0.4.1" + "tailwind-merge": "^2.5.2", + "vinxi": "0.4.2" }, "devDependencies": { - "@playwright/test": "^1.45.3", + "@playwright/test": "^1.46.1", "@types/node": "^20.12.11", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index d6c15c680c..61203b5f00 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,8 +13,8 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@remix-run/node": "^2.10.3", - "@remix-run/server-runtime": "^2.10.3", + "@remix-run/node": "^2.11.2", + "@remix-run/server-runtime": "^2.11.2", "@tanstack/react-router": "^1.51.2", "@tanstack/router-devtools": "^1.51.2", "@tanstack/router-plugin": "^1.51.0", @@ -27,11 +27,11 @@ "react-dom": "^18.3.1", "redaxios": "^0.5.1", "remix-auth-form": "^1.5.0", - "tailwind-merge": "^2.4.0", - "vinxi": "0.3.12" + "tailwind-merge": "^2.5.2", + "vinxi": "0.4.2" }, "devDependencies": { - "@playwright/test": "^1.45.1", + "@playwright/test": "^1.46.1", "@replayio/playwright": "^3.1.8", "@types/node": "^20.12.11", "@types/react": "^18.2.65", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 5a9303cf40..7b90a0f685 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -32,9 +32,9 @@ "react-dom": "^18.3.1", "react-hot-toast": "^2.4.1", "redaxios": "^0.5.1", - "tailwind-merge": "^2.4.0", + "tailwind-merge": "^2.5.2", "tiny-invariant": "^1.3.3", - "vinxi": "0.4.1", + "vinxi": "0.4.2", "zod": "^3.23.8" }, "devDependencies": { diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index bb738731b0..a90e38b14a 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -27,9 +27,9 @@ "react-dom": "^18.3.1", "react-hot-toast": "^2.4.1", "redaxios": "^0.5.1", - "tailwind-merge": "^2.4.0", + "tailwind-merge": "^2.5.2", "tiny-invariant": "^1.3.3", - "vinxi": "0.4.1", + "vinxi": "0.4.2", "zod": "^3.23.8" }, "devDependencies": { diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index d71a1506a9..b4a1822c59 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -19,7 +19,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", - "vinxi": "0.4.1", + "vinxi": "0.4.2", "zod": "^3.23.8" }, "devDependencies": { diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 34cb7d541c..722b6353c0 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -16,7 +16,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", - "vinxi": "0.4.1", + "vinxi": "0.4.2", "zod": "^3.23.8" }, "devDependencies": { diff --git a/package.json b/package.json index 12cde525f3..f1d2ea66b8 100644 --- a/package.json +++ b/package.json @@ -30,19 +30,19 @@ "gpt-generate": "node gpt/generate.js" }, "devDependencies": { - "@eslint-react/eslint-plugin": "^1.8.2", - "@playwright/test": "^1.45.3", - "@rollup/plugin-replace": "^5.0.7", - "@tanstack/config": "^0.11.3", + "@eslint-react/eslint-plugin": "^1.12.3", + "@playwright/test": "^1.46.1", + "@tanstack/config": "^0.12.0", "@types/node": "^20.14.7", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.2", "glob": "^10.4.5", + "jsdom": "^25.0.0", "nx": "^19.5.6", "prettier": "^3.3.3", - "publint": "^0.2.9", + "publint": "^0.2.10", "react": "^18.3.1", "react-dom": "^18.3.1", "redaxios": "^0.5.1", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index dc4851556c..f8fdbe976e 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -74,7 +74,6 @@ "@testing-library/react": "^16.0.0", "@vitejs/plugin-react": "^4.3.1", "combinate": "^1.1.11", - "jsdom": "^24.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "zod": "^3.23.8" diff --git a/packages/start/package.json b/packages/start/package.json index 2924a199a0..8ab7b28943 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -140,15 +140,15 @@ "@tanstack/router-plugin": "workspace:^", "@tanstack/start-vite-plugin": "workspace:^", "@types/jsesc": "^3.0.3", - "@vinxi/react": "0.2.3", + "@vinxi/react": "0.2.4", "@vinxi/react-server-dom": "^0.0.3", - "@vinxi/server-components": "^0.4.1", - "@vinxi/server-functions": "^0.4.1", + "@vinxi/server-components": "^0.4.2", + "@vinxi/server-functions": "^0.4.2", "import-meta-resolve": "^4.1.0", "isbot": "^5.1.14", "jsesc": "^3.0.2", "tiny-invariant": "^1.3.3", - "vinxi": "0.4.1", + "vinxi": "0.4.2", "vite-tsconfig-paths": "^5.0.1", "zod": "^3.23.8" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49b01e2e47..0c66cc0ef9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,17 +29,14 @@ importers: .: devDependencies: '@eslint-react/eslint-plugin': - specifier: ^1.8.2 - version: 1.8.2(eslint@8.57.0)(typescript@5.5.3) + specifier: ^1.12.3 + version: 1.12.3(eslint@8.57.0)(typescript@5.5.3) '@playwright/test': - specifier: ^1.45.3 - version: 1.45.3 - '@rollup/plugin-replace': - specifier: ^5.0.7 - version: 5.0.7(rollup@4.18.0) + specifier: ^1.46.1 + version: 1.46.1 '@tanstack/config': - specifier: ^0.11.3 - version: 0.11.3(@types/node@20.14.9)(esbuild@0.21.5)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + specifier: ^0.12.0 + version: 0.12.0(@types/node@20.14.9)(esbuild@0.21.5)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) '@types/node': specifier: ^20.14.7 version: 20.14.9 @@ -58,15 +55,18 @@ importers: glob: specifier: ^10.4.5 version: 10.4.5 + jsdom: + specifier: ^25.0.0 + version: 25.0.0 nx: specifier: ^19.5.6 - version: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.11)) + version: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) prettier: specifier: ^3.3.3 version: 3.3.3 publint: - specifier: ^0.2.9 - version: 0.2.9 + specifier: ^0.2.10 + version: 0.2.10 react: specifier: ^18.3.1 version: 18.3.1 @@ -102,7 +102,7 @@ importers: version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.14.9)(jsdom@24.1.1)(terser@5.31.1) + version: 1.6.0(@types/node@20.14.9)(jsdom@25.0.0)(terser@5.31.1) examples/react/authenticated-routes: dependencies: @@ -163,8 +163,8 @@ importers: version: 0.5.1 devDependencies: '@playwright/test': - specifier: ^1.45.3 - version: 1.45.3 + specifier: ^1.46.1 + version: 1.46.1 '@types/react': specifier: ^18.2.47 version: 18.3.3 @@ -243,8 +243,8 @@ importers: version: 3.23.8 devDependencies: '@playwright/test': - specifier: ^1.45.3 - version: 1.45.3 + specifier: ^1.46.1 + version: 1.46.1 '@types/react': specifier: ^18.2.47 version: 18.3.3 @@ -323,8 +323,8 @@ importers: version: 0.5.1 devDependencies: '@playwright/test': - specifier: ^1.45.3 - version: 1.45.3 + specifier: ^1.46.1 + version: 1.46.1 '@types/react': specifier: ^18.2.47 version: 18.3.3 @@ -372,8 +372,8 @@ importers: version: 3.23.8 devDependencies: '@playwright/test': - specifier: ^1.45.3 - version: 1.45.3 + specifier: ^1.46.1 + version: 1.46.1 '@types/react': specifier: ^18.2.47 version: 18.3.3 @@ -919,11 +919,11 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@rsbuild/core': - specifier: 1.0.1-beta.15 - version: 1.0.1-beta.15 + specifier: 1.0.1-rc.0 + version: 1.0.1-rc.0 '@rsbuild/plugin-react': - specifier: 1.0.1-beta.15 - version: 1.0.1-beta.15(@rsbuild/core@1.0.1-beta.15) + specifier: 1.0.1-rc.0 + version: 1.0.1-rc.0(@rsbuild/core@1.0.1-rc.0) '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin @@ -954,7 +954,7 @@ importers: devDependencies: '@swc/core': specifier: ^1.7.6 - version: 1.7.6(@swc/helpers@0.5.11) + version: 1.7.6(@swc/helpers@0.5.12) '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin @@ -966,16 +966,16 @@ importers: version: 18.3.0 html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(@rspack/core@0.7.5(@swc/helpers@0.5.11))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4)) + version: 5.6.0(@rspack/core@1.0.0(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) swc-loader: specifier: ^0.2.6 - version: 0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.11))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4)) + version: 0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) typescript: specifier: ^5.5.3 version: 5.5.3 webpack: specifier: ^5.93.0 - version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) @@ -1099,15 +1099,15 @@ importers: specifier: ^0.5.1 version: 0.5.1 tailwind-merge: - specifier: ^2.4.0 - version: 2.4.0 + specifier: ^2.5.2 + version: 2.5.2 vinxi: - specifier: 0.4.1 - version: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.2 + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@playwright/test': - specifier: ^1.45.3 - version: 1.45.3 + specifier: ^1.46.1 + version: 1.46.1 '@types/node': specifier: ^20.12.11 version: 20.14.9 @@ -1151,11 +1151,11 @@ importers: specifier: 5.17.0 version: 5.17.0(prisma@5.18.0) '@remix-run/node': - specifier: ^2.10.3 - version: 2.11.1(typescript@5.5.3) + specifier: ^2.11.2 + version: 2.11.2(typescript@5.5.3) '@remix-run/server-runtime': - specifier: ^2.10.3 - version: 2.11.1(typescript@5.5.3) + specifier: ^2.11.2 + version: 2.11.2(typescript@5.5.3) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1194,20 +1194,20 @@ importers: version: 0.5.1 remix-auth-form: specifier: ^1.5.0 - version: 1.5.0(@remix-run/server-runtime@2.11.1(typescript@5.5.3))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.1(typescript@5.5.3))) + version: 1.5.0(@remix-run/server-runtime@2.11.2(typescript@5.5.3))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.2(typescript@5.5.3))) tailwind-merge: - specifier: ^2.4.0 - version: 2.4.0 + specifier: ^2.5.2 + version: 2.5.2 vinxi: - specifier: 0.3.12 - version: 0.3.12(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.2 + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@playwright/test': - specifier: ^1.45.1 - version: 1.45.3 + specifier: ^1.46.1 + version: 1.46.1 '@replayio/playwright': specifier: ^3.1.8 - version: 3.1.8(@playwright/test@1.45.3) + version: 3.1.8(@playwright/test@1.46.1) '@types/node': specifier: ^20.12.11 version: 20.14.9 @@ -1263,8 +1263,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) vinxi: - specifier: 0.4.1 - version: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.2 + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@types/node': specifier: ^20.12.11 @@ -1333,15 +1333,15 @@ importers: specifier: ^0.5.1 version: 0.5.1 tailwind-merge: - specifier: ^2.4.0 - version: 2.4.0 + specifier: ^2.5.2 + version: 2.5.2 vinxi: - specifier: 0.4.1 - version: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.2 + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@playwright/test': - specifier: ^1.45.3 - version: 1.45.3 + specifier: ^1.46.1 + version: 1.46.1 '@types/node': specifier: ^20.12.11 version: 20.14.9 @@ -1400,11 +1400,11 @@ importers: specifier: ^0.5.1 version: 0.5.1 tailwind-merge: - specifier: ^2.4.0 - version: 2.4.0 + specifier: ^2.5.2 + version: 2.5.2 vinxi: - specifier: 0.4.1 - version: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.2 + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@types/react': specifier: ^18.2.65 @@ -1449,11 +1449,11 @@ importers: specifier: 0.3.0-snapshot.vdf04997 version: 0.3.0-snapshot.vdf04997(@tanstack/react-router@packages+react-router)(@tanstack/start@packages+start)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@remix-run/node': - specifier: ^2.10.3 - version: 2.11.1(typescript@5.5.3) + specifier: ^2.11.2 + version: 2.11.2(typescript@5.5.3) '@remix-run/server-runtime': - specifier: ^2.10.3 - version: 2.11.1(typescript@5.5.3) + specifier: ^2.11.2 + version: 2.11.2(typescript@5.5.3) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1489,20 +1489,20 @@ importers: version: 0.5.1 remix-auth-form: specifier: ^1.5.0 - version: 1.5.0(@remix-run/server-runtime@2.11.1(typescript@5.5.3))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.1(typescript@5.5.3))) + version: 1.5.0(@remix-run/server-runtime@2.11.2(typescript@5.5.3))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.2(typescript@5.5.3))) tailwind-merge: - specifier: ^2.4.0 - version: 2.4.0 + specifier: ^2.5.2 + version: 2.5.2 vinxi: - specifier: 0.3.12 - version: 0.3.12(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.2 + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@playwright/test': - specifier: ^1.45.1 - version: 1.45.3 + specifier: ^1.46.1 + version: 1.46.1 '@replayio/playwright': specifier: ^3.1.8 - version: 3.1.8(@playwright/test@1.45.3) + version: 3.1.8(@playwright/test@1.46.1) '@types/node': specifier: ^20.12.11 version: 20.14.9 @@ -1600,14 +1600,14 @@ importers: specifier: ^0.5.1 version: 0.5.1 tailwind-merge: - specifier: ^2.4.0 - version: 2.4.0 + specifier: ^2.5.2 + version: 2.5.2 tiny-invariant: specifier: ^1.3.3 version: 1.3.3 vinxi: - specifier: 0.4.1 - version: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.2 + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -1697,14 +1697,14 @@ importers: specifier: ^0.5.1 version: 0.5.1 tailwind-merge: - specifier: ^2.4.0 - version: 2.4.0 + specifier: ^2.5.2 + version: 2.5.2 tiny-invariant: specifier: ^1.3.3 version: 1.3.3 vinxi: - specifier: 0.4.1 - version: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.2 + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -1810,8 +1810,8 @@ importers: specifier: ^0.5.1 version: 0.5.1 vinxi: - specifier: 0.4.1 - version: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.2 + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -1862,8 +1862,8 @@ importers: specifier: ^0.5.1 version: 0.5.1 vinxi: - specifier: 0.4.1 - version: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.2 + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -1919,9 +1919,6 @@ importers: combinate: specifier: ^1.1.11 version: 1.1.11 - jsdom: - specifier: ^24.1.1 - version: 24.1.1 react: specifier: ^18.2.0 version: 18.3.1 @@ -2073,7 +2070,7 @@ importers: version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5) + version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2139,17 +2136,17 @@ importers: specifier: ^3.0.3 version: 3.0.3 '@vinxi/react': - specifier: 0.2.3 - version: 0.2.3 + specifier: 0.2.4 + version: 0.2.4 '@vinxi/react-server-dom': specifier: ^0.0.3 version: 0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) '@vinxi/server-components': - specifier: ^0.4.1 - version: 0.4.1(vinxi@0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1)) + specifier: ^0.4.2 + version: 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1)) '@vinxi/server-functions': - specifier: ^0.4.1 - version: 0.4.1(vinxi@0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1)) + specifier: ^0.4.2 + version: 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1)) import-meta-resolve: specifier: ^4.1.0 version: 4.1.0 @@ -2163,8 +2160,8 @@ importers: specifier: ^1.3.3 version: 1.3.3 vinxi: - specifier: 0.4.1 - version: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.2 + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) @@ -3484,14 +3481,14 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-react/ast@1.8.2': - resolution: {integrity: sha512-JEGTvLgMhAqGirPve2x1xICHtf7vcJfUD/75QbNjl0qHsLDUfva1F99yv9k2kdGE4kESqKJHZehbzg8Xvn/sXg==} + '@eslint-react/ast@1.12.3': + resolution: {integrity: sha512-3uRe9EBiaLpyzHKyhvm4ZXGo3h+hp9kvhRBE6mjU5up2RmUkD4qtaTVwKoHrYECADNSvzBtwHH2URARXKQ7oHg==} - '@eslint-react/core@1.8.2': - resolution: {integrity: sha512-VYC3pGqxvEEYpWz2ZMq4ZGFOUKgPBo3kJSEYaX8BSeD8IBkqA0pOBh5c9/3ZUW9YYxpF9gFpZsGVS8h7NiWKOw==} + '@eslint-react/core@1.12.3': + resolution: {integrity: sha512-MKwkzrgouFyxdI01GzHY1iifK0KPeGnThqHiRc+IGk+Dgg/8Rq2T0glUx+15J10hRbIg1bl4Cja12R/dv4R9jA==} - '@eslint-react/eslint-plugin@1.8.2': - resolution: {integrity: sha512-fEVuqu7qz9g9XVKH/Pg2fLFzeyOjYbq3CjdAxo0H0VrbQPcRb3BNTuvsbURpbCb2agTrE2XlTxe24s/2ypjxPQ==} + '@eslint-react/eslint-plugin@1.12.3': + resolution: {integrity: sha512-S9Y3mdvbZLKH5ah1LHvAiSd9tc8ijzKjAENMPvfW5WWzyfs6+oRfUrmlrJS3u4k16Fi6zweIlV5hk7gjaFWniQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 @@ -3500,20 +3497,20 @@ packages: typescript: optional: true - '@eslint-react/jsx@1.8.2': - resolution: {integrity: sha512-0w9ofkVw1HbMHvC0IauUcK17qAYAW+W0WYiu3LJm+BNOSYbeqW/eiSJWFjV11wYi0ZoHcuFZ6xbrJbndjc79Zg==} + '@eslint-react/jsx@1.12.3': + resolution: {integrity: sha512-aKuJRjcwEPUbeAXu7VLKICFeVZk/NhbeQIwIRdjw0JAmfNtEO5QD2wqWDZLCb4+f1moR2W3+QD8e9t0opo70QQ==} - '@eslint-react/shared@1.8.2': - resolution: {integrity: sha512-CWYkJ0F4arYNqsqUs7n3TTdJKKt9gtwGEF7/i3prQLVZRNRaSriNE1EvUT7n181bwuT7HKYGQ3yGO/KXk1da1w==} + '@eslint-react/shared@1.12.3': + resolution: {integrity: sha512-4zBS9ISXbb/1OM6W0x5FH2Bu2+ULmfWLQRGc3GFcWiIcHMVBB4bQGK8CsYAcxSIUxaERh3PgPKMx4aZDwBNIhQ==} - '@eslint-react/tools@1.8.2': - resolution: {integrity: sha512-13jBjPoFZImEen+VubjUhfd5QXqaDdTvMxRQw49qWS7VRccVIdxS7Wwr9+ozQqEz1+Uu+yeRUJKr73zMknY1/g==} + '@eslint-react/tools@1.12.3': + resolution: {integrity: sha512-Q5HRbzY0lkJwdeatPkFsPgmBhP9KPGaVxtRKazsGcCO3edg2wTJP0C8khw2fplaIAce+Tj3I3YasUlp1uKQeCw==} - '@eslint-react/types@1.8.2': - resolution: {integrity: sha512-udWxV15Hw56Or+T4RDYv+XwYCVDWZ07TP7wvEgXvcN6uZfBQNlpakh8oyHsd1LvB5O3V0VGRYmKUNn2dz3/2PA==} + '@eslint-react/types@1.12.3': + resolution: {integrity: sha512-Ph6vXLz/NDeGE0/EvDTfWOrqtlE/qLcMhITCdt+ynGOP0HtRn1E8jrEZ0zTH6ri8wng6tlSHEPDnsZMNwe4hOg==} - '@eslint-react/var@1.8.2': - resolution: {integrity: sha512-NJeJ8wJWqTgIpPK2stgcKGr3PgF5qkcn0NyGcttak+YAioQYpoEb/yXcdB46oKjDnlV7a1JHNP5Txyx17LY5Gw==} + '@eslint-react/var@1.12.3': + resolution: {integrity: sha512-K9lBA5Ap3bFfH2OxcpZYyK7HieWmJOtyjAmvC2E2StsPcQlBci+ID82xQEqrPvdL1qdRYWKpSzvSd8Xu4cJf/w==} '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} @@ -3632,29 +3629,17 @@ packages: '@microsoft/tsdoc@0.15.0': resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} - '@module-federation/runtime-tools@0.1.6': - resolution: {integrity: sha512-7ILVnzMIa0Dlc0Blck5tVZG1tnk1MmLnuZpLOMpbdW+zl+N6wdMjjHMjEZFCUAJh2E5XJ3BREwfX8Ets0nIkLg==} - - '@module-federation/runtime-tools@0.2.3': - resolution: {integrity: sha512-capN8CVTCEqNAjnl102girrkevczoQfnQYyiYC4WuyKsg7+LUqfirIe1Eiyv6VSE2UgvOTZDnqvervA6rBOlmg==} - - '@module-federation/runtime@0.1.6': - resolution: {integrity: sha512-nj6a+yJ+QxmcE89qmrTl4lphBIoAds0PFPVGnqLRWflwAP88jrCcrrTqRhARegkFDL+wE9AE04+h6jzlbIfMKg==} + '@module-federation/runtime-tools@0.5.1': + resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} - '@module-federation/runtime@0.2.3': - resolution: {integrity: sha512-N+ZxBUb1mkmfO9XT1BwgYQgShtUTlijHbukqQ4afFka5lRAT+ayC7RKfHJLz0HbuexKPCmPBDfdmCnErR5WyTQ==} + '@module-federation/runtime@0.5.1': + resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==} - '@module-federation/sdk@0.1.6': - resolution: {integrity: sha512-qifXpyYLM7abUeEOIfv0oTkguZgRZuwh89YOAYIZJlkP6QbRG7DJMQvtM8X2yHXm9PTk0IYNnOJH0vNQCo6auQ==} + '@module-federation/sdk@0.5.1': + resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==} - '@module-federation/sdk@0.2.3': - resolution: {integrity: sha512-W9zrPchLocyCBc/B8CW21akcfJXLl++9xBe1L1EtgxZGfj/xwHt0GcBWE/y+QGvYTL2a1iZjwscbftbUhxgxXg==} - - '@module-federation/webpack-bundler-runtime@0.1.6': - resolution: {integrity: sha512-K5WhKZ4RVNaMEtfHsd/9CNCgGKB0ipbm/tgweNNeC11mEuBTNxJ09Y630vg3WPkKv9vfMCuXg2p2Dk+Q/KWTSA==} - - '@module-federation/webpack-bundler-runtime@0.2.3': - resolution: {integrity: sha512-L/jt2uJ+8dwYiyn9GxryzDR6tr/Wk8rpgvelM2EBeLIhu7YxCHSmSjQYhw3BTux9zZIr47d1K9fGjBFsVRd/SQ==} + '@module-federation/webpack-bundler-runtime@0.5.1': + resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==} '@mswjs/interceptors@0.27.2': resolution: {integrity: sha512-mE6PhwcoW70EX8+h+Y/4dLfHk33GFt/y5PzDJz56ktMyaVGFXMJ5BYLbUjdmGEABfE0x5GgAGyKbrbkYww2s3A==} @@ -4008,8 +3993,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.45.3': - resolution: {integrity: sha512-UKF4XsBfy+u3MFWEH44hva1Q8Da28G6RFtR2+5saw+jgAFQV5yYnB1fu68Mz7fO+5GJF3wgwAIs0UelU8TxFrA==} + '@playwright/test@1.46.1': + resolution: {integrity: sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==} engines: {node: '>=18'} hasBin: true @@ -4229,8 +4214,8 @@ packages: '@types/react': optional: true - '@remix-run/node@2.11.1': - resolution: {integrity: sha512-KCQPLSd5Y3OLCoJUQxxTGswALL1gZ+OgL3bf2ap6kITIp1AUZz3T4jqCNVVyWllVAU9gpCtrONaI+SiWf+8b2w==} + '@remix-run/node@2.11.2': + resolution: {integrity: sha512-gRNFM61EOYWNmYgf+pvBt6MrirWlkDz1G6RQsJNowtRqbYoy05AdDe5HiHGF5w8ZMAZVeXnZiwbL0Nt7ykYBCA==} engines: {node: '>=18.0.0'} peerDependencies: typescript: ^5.1.0 @@ -4253,6 +4238,10 @@ packages: resolution: {integrity: sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA==} engines: {node: '>=14.0.0'} + '@remix-run/router@1.19.1': + resolution: {integrity: sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==} + engines: {node: '>=14.0.0'} + '@remix-run/server-runtime@2.11.1': resolution: {integrity: sha512-j3AlrZul0javvPR6ZWdN32/l12t1E90sLeZI/k+4HpT0ifjqJVg8uG6alRJ0LLN9ae5BERYEslUebUqdfejSkQ==} engines: {node: '>=18.0.0'} @@ -4262,6 +4251,15 @@ packages: typescript: optional: true + '@remix-run/server-runtime@2.11.2': + resolution: {integrity: sha512-abG6ENj0X3eHqDxqO2thWM2NSEiPnqyt58z1BbiQCv+t8g0Zuqd5QHbB4wzdNvfS0vKhg+jJiigcJneAc4sZzw==} + engines: {node: '>=18.0.0'} + peerDependencies: + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + '@remix-run/web-blob@3.1.0': resolution: {integrity: sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==} @@ -4458,15 +4456,15 @@ packages: deprecated: This is a mistakenly released version, please do not use it hasBin: true - '@rsbuild/core@1.0.1-beta.15': - resolution: {integrity: sha512-Y9N5GvGhorbP5RCOJDYZ+gUJGSBbDAUlntLeXFOF4bSQU7Pa+tzt/tuL44wxuPjjEMj87wQz4K6wYOUVov9gZw==} + '@rsbuild/core@1.0.1-rc.0': + resolution: {integrity: sha512-tSszHL2sp/iNZkYMOOorgBonh4XAIfJODlt6JBTg5PMAywm+XXdFoEglaKeAM6WiQ/0rQYOataKrHbMkfxmh/A==} engines: {node: '>=16.7.0'} hasBin: true - '@rsbuild/plugin-react@1.0.1-beta.15': - resolution: {integrity: sha512-2HYxjWmIdRsBMugHtml9inPYrrbSUSaZc9oK8betBxJ1HiCCcUBi8jyZKMXogO8iQYkLA7ff6zDWmc2JoxyF0A==} + '@rsbuild/plugin-react@1.0.1-rc.0': + resolution: {integrity: sha512-bjKRNdihb3LoWW74Ri2lBQqrTaksIpGx9/mp/RiRpVUGzX+9/SDlXWvrnWdndKPm7UYfY3VBCZNT2zJRi0CCKg==} peerDependencies: - '@rsbuild/core': ^1.0.1-beta.15 + '@rsbuild/core': ^1.0.1-rc.0 '@rsbuild/shared@1.0.0': resolution: {integrity: sha512-S8naGkaXAN+5vjk22Ghox07kGK/Weg5C1imc1ELB4J66m5PWaDSnlxiv8hdmruKelcNuWUaqmTJrqEpUkVSezw==} @@ -4477,13 +4475,8 @@ packages: cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-arm64@0.7.5': - resolution: {integrity: sha512-mNBIm36s1BA7v4SL/r4f3IXIsjyH5CZX4eXMRPE52lBc3ClVuUB7d/8zk8dkyjJCMAj8PsZSnAJ3cfXnn7TN4g==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-arm64@1.0.0-beta.5': - resolution: {integrity: sha512-lHiQ5cZrBQEpoh7Cd0AY3ggzlfBy9HiK4T0x2VdtsT2ZMc81hPBJ23hB8WIA+CTfOwbeLUBi0Ypfo26jls+dBw==} + '@rspack/binding-darwin-arm64@1.0.0': + resolution: {integrity: sha512-ZHQk9YK+swlTG48kJTgzFUW9T26KjhLXRok5la7t2AMoiuHyhGHHgC5iQfPJLZ62XzcJ/rfqs2rwakl97151jQ==} cpu: [arm64] os: [darwin] @@ -4492,13 +4485,8 @@ packages: cpu: [x64] os: [darwin] - '@rspack/binding-darwin-x64@0.7.5': - resolution: {integrity: sha512-teLK0TB1x0CsvaaiCopsFx4EvJe+/Hljwii6R7C9qOZs5zSOfbT/LQ202eA0sAGodCncARCGaXVrsekbrRYqeA==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-darwin-x64@1.0.0-beta.5': - resolution: {integrity: sha512-uEWJe2Egs0LawG/8pnfHIyZeJWLMCZkQjZM1PY8iH7jVLXh1rELQJbGlMHNFbYvM4cU8Xfk9si2Vi4mPRepzlQ==} + '@rspack/binding-darwin-x64@1.0.0': + resolution: {integrity: sha512-qhTXm9wUhv2lBjsqqfCu59RchH1/2jursdPAmTqGc7zMReZdZvtJs2Ri6Ma1M48BLLu+7fS4fbL8Rw1g78TOOQ==} cpu: [x64] os: [darwin] @@ -4507,13 +4495,8 @@ packages: cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-gnu@0.7.5': - resolution: {integrity: sha512-/24UytJXrK+7CsucDb30GCKYIJ8nG6ceqbJyOtsJv9zeArNLHkxrYGSyjHJIpQfwVN17BPP4RNOi+yIZ3ZgDyA==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-arm64-gnu@1.0.0-beta.5': - resolution: {integrity: sha512-DHyd2f+H5Y1F12fH5aN1Rx341E6cvH86pGnqcbdsVaOgM+8GM55LIr4p90XIdrjK2vH5PYROFM8g/d6CGzX3VQ==} + '@rspack/binding-linux-arm64-gnu@1.0.0': + resolution: {integrity: sha512-yKnlsWgvydJRxDBGGKC+cyDeoSzIvOzuVqCloy5oAFAGOMXMY6bznxrkE6/olGZncdeLEpnJzZmXSuF1dYc8ow==} cpu: [arm64] os: [linux] @@ -4522,13 +4505,8 @@ packages: cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@0.7.5': - resolution: {integrity: sha512-6RcxG42mLM01Pa6UYycACu/Nu9qusghAPUJumb8b8x5TRIDEtklYC5Ck6Rmagm+8E0ucMude2E/D4rMdIFcS3A==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-arm64-musl@1.0.0-beta.5': - resolution: {integrity: sha512-QG9NYVcwpaDqkUT1Ny1yr+RAgSmdN8AswqLkLbtD42Q/P+DKlvKUa48BxU7irQgYe21AKEg4E7EnLCXaeSwRFw==} + '@rspack/binding-linux-arm64-musl@1.0.0': + resolution: {integrity: sha512-dKFmlqlF4FELT/AX02hSwX8aRawjH5zAliQzYnvgrqcEyCKE60vKacGJQ3ZeRyru6dh5MlbUNW4H1+TDT+cDVA==} cpu: [arm64] os: [linux] @@ -4537,13 +4515,8 @@ packages: cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-gnu@0.7.5': - resolution: {integrity: sha512-R0Lu4CJN2nWMW7WzPBuCIju80cQPpcaqwKJDj/quwQySpJJZ6c5qGwB8mntqjxIzZDrNH6u0OkpiUTbvWZj8ww==} - cpu: [x64] - os: [linux] - - '@rspack/binding-linux-x64-gnu@1.0.0-beta.5': - resolution: {integrity: sha512-r3KB58qDZvTh9zoAdZG0F6soh9f7MtCbhZzhLAiFb8E5J+QBK3dN+hn6LLtap8istZaU0nq9UdYiKDPOthhPiQ==} + '@rspack/binding-linux-x64-gnu@1.0.0': + resolution: {integrity: sha512-fRk9i8aE4FiwW7+LkNyw+5vfFzJ8BZ2seAL9V5U2iwYwYibzFJsukg3h3Uh+IsGm30/7+ZRENtGwybQiMruL4g==} cpu: [x64] os: [linux] @@ -4552,13 +4525,8 @@ packages: cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@0.7.5': - resolution: {integrity: sha512-dDgi/ThikMy1m4llxPeEXDCA2I8F8ezFS/eCPLZGU2/J1b4ALwDjuRsMmo+VXSlFCKgIt98V6h1woeg7nu96yg==} - cpu: [x64] - os: [linux] - - '@rspack/binding-linux-x64-musl@1.0.0-beta.5': - resolution: {integrity: sha512-/IDw2JI273wQXCoQQvnX2sthNglChMhQDig8XxFU3fLQmaPB8zxGFCxowstOQPjN/McSddHGdISGlv6RKh8rCQ==} + '@rspack/binding-linux-x64-musl@1.0.0': + resolution: {integrity: sha512-qcTJC8o3KvLwsnrJJcuBjfzSrjEbACMiCB4RtbFNecXDtI+Nputx1CO1SlUrINC25/44ILketf0/hsdBQHk60g==} cpu: [x64] os: [linux] @@ -4567,13 +4535,8 @@ packages: cpu: [arm64] os: [win32] - '@rspack/binding-win32-arm64-msvc@0.7.5': - resolution: {integrity: sha512-nEF4cUdLfgEK6FrgJSJhUlr2/7LY1tmqBNQCFsCjtDtUkQbJIEo1b8edT94G9tJcQoFE4cD+Re30yBYbQO2Thg==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-arm64-msvc@1.0.0-beta.5': - resolution: {integrity: sha512-HhT79VMinXof1sI7SWBRNBamSUUcwgZwlfhcQlaRtm06YzmK0wieJAWi1Gunr6/tlDPa4UNM+y3le6K5kibwfQ==} + '@rspack/binding-win32-arm64-msvc@1.0.0': + resolution: {integrity: sha512-gqtakP0Yl2aj+Q/Giwgt31hz8eOZpo2s+sJlkMJGVdIF4dejB31a8vbj/VNGeSN1tDRiLI4cyqa5eQU//t26aQ==} cpu: [arm64] os: [win32] @@ -4582,13 +4545,8 @@ packages: cpu: [ia32] os: [win32] - '@rspack/binding-win32-ia32-msvc@0.7.5': - resolution: {integrity: sha512-hEcHRwJIzpZsePr+5x6V/7TGhrPXhSZYG4sIhsrem1za9W+qqCYYLZ7KzzbRODU07QaAH2RxjcA1bf8F2QDYAQ==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@1.0.0-beta.5': - resolution: {integrity: sha512-oYXpiXpoVBL7v3biBHeUlkrW0EVceG3PsBPcBg/AuVqbpogePu1xN6gRdaN9CYK/uRNcDyFC3QWDOq+Cn3KExg==} + '@rspack/binding-win32-ia32-msvc@1.0.0': + resolution: {integrity: sha512-nLfGu5DjdzwawzZ7zK69vZX5aL1Gt9+Ovfz4RlngDq/D5ZzqCnNWw93cqKADgFRWS4qK9vOD9RXNNnkyWB2SEw==} cpu: [ia32] os: [win32] @@ -4597,40 +4555,23 @@ packages: cpu: [x64] os: [win32] - '@rspack/binding-win32-x64-msvc@0.7.5': - resolution: {integrity: sha512-PpVpP6J5/2b4T10hzSUwjLvmdpAOj3ozARl1Nrf/lsbYwhiXivoB8Gvoy/xe/Xpgr732Dk9VCeeW8rreWOOUVQ==} - cpu: [x64] - os: [win32] - - '@rspack/binding-win32-x64-msvc@1.0.0-beta.5': - resolution: {integrity: sha512-tXYOIThPgiIvKKoV91GN/+P405DGFcuhdZZ+i0AhrRrtbK7mpkIRdde8aVMXNbTA6NnKAcOSAvJ2bVUVq3F2rQ==} + '@rspack/binding-win32-x64-msvc@1.0.0': + resolution: {integrity: sha512-H9PqjgtZMw5aP+eXdFo7bgSP/Ycwn3oW81uI9qFqOOQ90W+o3T9ItghHBf2/ksc5GHibd208EwOBNxbKwjZDSQ==} cpu: [x64] os: [win32] '@rspack/binding@0.4.0': resolution: {integrity: sha512-SpjaySPGmyRnRHrQItl9W9NGE2WoHsUPnererZaLK+pfVgO92q9uoEoKl3EBNNI9uttG132SCz4cx1zXwN394w==} - '@rspack/binding@0.7.5': - resolution: {integrity: sha512-XcdOvaCz1mWWwr5vmEY9zncdInrjINEh60EWkYdqtCA67v7X7rB1fe6n4BeAI1+YLS2Eacj+lytlr+n7I+DYVg==} - - '@rspack/binding@1.0.0-beta.5': - resolution: {integrity: sha512-GT0cxYzD4jrXaB4eaGu1N/l32InSWelDREvqg1MDjZAYZlYreN2yFiA8Ds5+RqPz53csup1WWHFMqYcNH9KipQ==} + '@rspack/binding@1.0.0': + resolution: {integrity: sha512-eLyqSEM1h/exJYn98k+9MRktP8AYDB13x5oVn8hoxVucuhk0TubFqQSX8h9SQcZp1O3j/Z8eWWwOaNPe3JU40Q==} '@rspack/core@0.4.0': resolution: {integrity: sha512-GY8lsCGRzj1mj5q1Ss5kjazpSisT/HJdXpIU730pG4Os6mE2sGYVUJ0ncYRv/DEBcL1c2dVr5vtMKTHlNYRlfg==} engines: {node: '>=16.0.0'} - '@rspack/core@0.7.5': - resolution: {integrity: sha512-zVTe4WCyc3qsLPattosiDYZFeOzaJ32/BYukPP2I1VJtCVFa+PxGVRPVZhSoN6fXw5oy48yHg9W9v1T8CaEFhw==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@rspack/core@1.0.0-beta.5': - resolution: {integrity: sha512-X8amU6N26FE4/3JPs+asTIeBZlESrfCC4jlfEOc6bsjLCiMK8NkF3r84xFG7qpGBe178c+yXwmBluyHUkMGHqg==} + '@rspack/core@1.0.0': + resolution: {integrity: sha512-F4RA9uOLLvD1oTKa96Gcly+Sro1qaqPNENadFyiPwepa7DrwexQa/ym6CQKbvKMOYGKlVSFDPUmgFAirz35ETg==} engines: {node: '>=16.0.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -4766,14 +4707,14 @@ packages: '@swc/helpers@0.5.1': resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} - '@swc/helpers@0.5.11': - resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} + '@swc/helpers@0.5.12': + resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} '@swc/types@0.1.12': resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} - '@tanstack/config@0.11.3': - resolution: {integrity: sha512-jMhxnpsUoLNHAc1QZyN99p4Kxh46PmolvROUMr2oNNEn+8AtpL9b29HfWclm0ueP1csofdklZ9IUa0WXjiEUew==} + '@tanstack/config@0.12.0': + resolution: {integrity: sha512-hzvdYmMJlLZMcaVSAgkmH149Nc/UxzDFEOlBNUOR2mFMP6Siw6QhfhgvhHwiTtluWsnsrEGzN7zVc+Rxf4p2Jg==} engines: {node: '>=18'} hasBin: true @@ -5067,8 +5008,8 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.0.0': - resolution: {integrity: sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw==} + '@typescript-eslint/scope-manager@8.3.0': + resolution: {integrity: sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/type-utils@5.62.0': @@ -5091,8 +5032,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.0.0': - resolution: {integrity: sha512-mJAFP2mZLTBwAn5WI4PMakpywfWFH5nQZezUQdSKV23Pqo6o9iShQg1hP2+0hJJXP2LnZkWPphdIq4juYYwCeg==} + '@typescript-eslint/type-utils@8.3.0': + resolution: {integrity: sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -5108,8 +5049,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.0.0': - resolution: {integrity: sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw==} + '@typescript-eslint/types@8.3.0': + resolution: {integrity: sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -5130,8 +5071,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.0.0': - resolution: {integrity: sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg==} + '@typescript-eslint/typescript-estree@8.3.0': + resolution: {integrity: sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -5151,8 +5092,8 @@ packages: peerDependencies: eslint: ^8.57.0 - '@typescript-eslint/utils@8.0.0': - resolution: {integrity: sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q==} + '@typescript-eslint/utils@8.3.0': + resolution: {integrity: sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 @@ -5165,8 +5106,8 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.0.0': - resolution: {integrity: sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA==} + '@typescript-eslint/visitor-keys@8.3.0': + resolution: {integrity: sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.2.0': @@ -5181,10 +5122,10 @@ packages: resolution: {integrity: sha512-WSN1z931BtasZJlgPp704zJFnQFRg7yzSjkm3MzAWQYe4uXFXlFr1hc5Ac2zae5/HDOz5x1/zDM5Cb54vTCnWw==} hasBin: true - '@vinxi/plugin-directives@0.4.1': - resolution: {integrity: sha512-NsHCDyqU00i4RKGBoNNcBuONEirg/XfGgPCLFK1CZw3AYBE19haFSgvuo21Bx+BFGcwdRU3BRtaBMvwjLrUCnw==} + '@vinxi/plugin-directives@0.4.2': + resolution: {integrity: sha512-lQuKA6Bc6z3tGmqDTSyR2CC0aSOMc0nBlHmk+5HoROSJ9Lp24xVSJjqEyaBNEnUMaq4itw+4w2IGUX7+qoMhJQ==} peerDependencies: - vinxi: ^0.4.0 + vinxi: ^0.4.2 '@vinxi/react-server-dom@0.0.3': resolution: {integrity: sha512-ZJJZtuw1TbGFOBuDZBHmM3w40yzFpNFWoPCoC2QtZBkYEQXYF9sOHHxkjTfNvk4rSn/zaUAs6KNUbVRvebq/1Q==} @@ -5194,18 +5135,18 @@ packages: react-dom: 0.0.0-experimental-035a41c4e-20230704 vite: ^4.3.9 - '@vinxi/react@0.2.3': - resolution: {integrity: sha512-/JMHdzGzmoBTrXtW95E7DAvsF5bMrstz/2hphkL47Yb5iRaBNKs2Si4yTyHPmRHSh4teNRm/2YmvClRHtvQi4Q==} + '@vinxi/react@0.2.4': + resolution: {integrity: sha512-FYmmAWEzInpx5OAFGFSGlVauTdzDhVg8vVhqoc3DlhZAvsux3WyY/I3qp1IkCXI+mIrDFetFOZCahi3FkpSEWA==} - '@vinxi/server-components@0.4.1': - resolution: {integrity: sha512-rMS+RCGr1tujO1xWgILMLpOWIyw2OwDO46EtkuhTfqaVgLLt/w7+hxzOnh4s3O9sXoKKuUswtj9/MpQQkFoMOQ==} + '@vinxi/server-components@0.4.2': + resolution: {integrity: sha512-uQFQjfq7ZYBTYXij7NWQ7aKKH0HvpboLG/Oqxj+f3RNv09dY9xLlD03VdBvgJjx4TtssliGY2rYeFDjkrByVVw==} peerDependencies: - vinxi: ^0.4.0 + vinxi: ^0.4.2 - '@vinxi/server-functions@0.4.1': - resolution: {integrity: sha512-dj5v9V+DurXK8w/nBDgJof+UsK3bkcgk6K/xBUg+WVmn7sUrLTurDTGRkCaknC6tQCyadNzj4FWGGc+qlrWf9g==} + '@vinxi/server-functions@0.4.2': + resolution: {integrity: sha512-hI6MstgFx5LqR0ZFI2NU7WVBfSuurjD/NmQBE38FC1TY9gOwXCqVXi8aQ/DEUnO5mOGNBE0iPohIUxmsbHfnUQ==} peerDependencies: - vinxi: ^0.4.0 + vinxi: ^0.4.2 '@vitejs/plugin-react@4.3.1': resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} @@ -5781,8 +5722,8 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - caniuse-lite@1.0.30001651: - resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + caniuse-lite@1.0.30001653: + resolution: {integrity: sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==} chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} @@ -6587,8 +6528,8 @@ packages: peerDependencies: eslint: ^8.57.0 - eslint-plugin-react-debug@1.8.2: - resolution: {integrity: sha512-+DUv5IKQGoNH40wIDRpIL0O6seQeN08aM5DATQp3142/ZAIZsPycD4GZBF9U11hwvmBnBg0xHX11Gmt7YGIkJA==} + eslint-plugin-react-debug@1.12.3: + resolution: {integrity: sha512-rtKsmDWFz1aG5EMj27fNfbVIxsdhqA1MIv9G4CSRhXWgqlIdg4NMWvk+2yRJjBzLWfAh1TlpLeXjuLd0PDmreQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 @@ -6597,8 +6538,8 @@ packages: typescript: optional: true - eslint-plugin-react-dom@1.8.2: - resolution: {integrity: sha512-Jbe+qxwM8MoPWEks0HEEq92TVlgUK98aaWJp4hH8m85YY3nKSOIkt8EE/OvwiqTdv8e3Z19Qkth1ahCDc+gvlA==} + eslint-plugin-react-dom@1.12.3: + resolution: {integrity: sha512-bZOcY1Dew7WqYrdn9FLQPTL9U0qeBIpSpC2mOXKxgsvGC/B+BYQKp89K05WeRBubmqDfDKVdrqVcAku2f7BU7w==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 @@ -6607,8 +6548,8 @@ packages: typescript: optional: true - eslint-plugin-react-hooks-extra@1.8.2: - resolution: {integrity: sha512-nxeuBb6yth+NFRVRsqjivEA0cGPQXUK+GrnSiuFp4kAJ+PgIupE3GKvy8ucwPTpmacsL8edjjZnx+BxdRBJwPQ==} + eslint-plugin-react-hooks-extra@1.12.3: + resolution: {integrity: sha512-QdTOf+GddxSBA3UBme+2DwUaUJA4YzYIP+JYI3AD8Ja04nEoMqvSu4SOXVtmRr1aLWeWgR/fC3SNFXgGZUaI9A==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 @@ -6623,8 +6564,8 @@ packages: peerDependencies: eslint: ^8.57.0 - eslint-plugin-react-naming-convention@1.8.2: - resolution: {integrity: sha512-SvYH1ZsqvZT0FwVYxqDErPWxS9QQ9XAfcOwWmYRH4XkI1xAVwgdqb86Vn2tBQKplnLQhR9CVYlbxm/l2VZoD+g==} + eslint-plugin-react-naming-convention@1.12.3: + resolution: {integrity: sha512-PKKXx3Wvh/KUftE7nh+imyOrUzkIyF41i9TaPbDxuEt+ggIY0cuvYOE/bcDCVJBDq0ROb2ZhERe9i46RaJoG/Q==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 @@ -6633,8 +6574,18 @@ packages: typescript: optional: true - eslint-plugin-react-x@1.8.2: - resolution: {integrity: sha512-UbdjagNnMvvTAR10cJXQr/c04Vfr729zPQ7rqJhTG8iL5f/nLVcsTxtx2S+HBrada3ZAo1Ai3xBDQ2CsLtTDjA==} + eslint-plugin-react-web-api@1.12.3: + resolution: {integrity: sha512-I5UgttFfAUYQ4lSWoHs02pHb0Pp2ou3xJ4L3xRv7Uce2s8sRPKazYOt7frxqfvBMxdzStS4/g0Gu7k5/PtPypA==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-x@1.12.3: + resolution: {integrity: sha512-LfmjFDiqleIEFqOOcAbsPqQnTkkT68tlYEpeXZBa+IWUtQVC4jxIRTmus+m/h9Td6wf2XGVEzwwSqmYQQzcb7w==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 @@ -7413,8 +7364,8 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-immutable-type@4.0.0: - resolution: {integrity: sha512-gyFBCXv+NikTs8/PGZhgjbMmFZQ5jvHGZIsVu6+/9Bk4K7imlWBIDN7hTr9fNioGzFg71I4YM3z8f0aKXarTAw==} + is-immutable-type@5.0.0: + resolution: {integrity: sha512-mcvHasqbRBWJznuPqqHRKiJgYAz60sZ0mvO3bN70JbkuK7ksfmgc489aKZYxMEjIbRvyOseaTjaRZLRF/xFeRA==} peerDependencies: eslint: ^8.57.0 typescript: '>=4.7.4' @@ -7639,8 +7590,8 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsdom@24.1.1: - resolution: {integrity: sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==} + jsdom@25.0.0: + resolution: {integrity: sha512-OhoFVT59T7aEq75TVw9xxEfkXgacpqAhQaYgP9y/fDqWQCMB/b1H66RfmPm/MaeaAIU9nDwMOVTlPN51+ao6CQ==} engines: {node: '>=18'} peerDependencies: canvas: ^2.11.2 @@ -7965,6 +7916,10 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + minimatch@3.0.8: resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} @@ -8453,13 +8408,13 @@ packages: pkg-types@1.1.1: resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} - playwright-core@1.45.3: - resolution: {integrity: sha512-+ym0jNbcjikaOwwSZycFbwkWgfruWvYlJfThKYAlImbxUgdWFO2oW70ojPm4OpE4t6TAo2FY/smM+hpVTtkhDA==} + playwright-core@1.46.1: + resolution: {integrity: sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==} engines: {node: '>=18'} hasBin: true - playwright@1.45.3: - resolution: {integrity: sha512-QhVaS+lpluxCaioejDZ95l4Y4jSFCsBvl2UZkpeXlzxmqS+aABr5c82YmfMHrL6x27nvrvykJAFpkzT2eWdJww==} + playwright@1.46.1: + resolution: {integrity: sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==} engines: {node: '>=18'} hasBin: true @@ -8573,8 +8528,8 @@ packages: psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - publint@0.2.9: - resolution: {integrity: sha512-nITKS1NSwD68PQlts0ntryhxrWObep6P0CCycwi1lgXI+K7uKyacMYRRCQi7hTae8imkI3FCi0FlgnwLxjM8yA==} + publint@0.2.10: + resolution: {integrity: sha512-5TzYaAFiGpgkYX/k6VaItRMT2uHI4zO5OWJ2k7Er0Ot3jutBCNTJB1qRHuy1lYq07JhRczzFs6HFPB4D+A47xA==} engines: {node: '>=16'} hasBin: true @@ -8769,9 +8724,6 @@ packages: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} - remeda@2.7.0: - resolution: {integrity: sha512-7q7Xthw/C6uZBk8W5BfXpp/8IjaP51IPUrBVRfSZ3GB9dZMZJEAwYmVxA+TptDmhwlGRw8jUqoo4hL5zU0aV5Q==} - remix-auth-form@1.5.0: resolution: {integrity: sha512-xWM7T41vi4ZsIxL3f8gz/D6g2mxrnYF7LnG+rG3VqwHh6l13xCoKLraxzWRdbKMVKKQCMISKZRXAeJh9/PQwBA==} peerDependencies: @@ -9277,8 +9229,8 @@ packages: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} - tailwind-merge@2.4.0: - resolution: {integrity: sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==} + tailwind-merge@2.5.2: + resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} tailwindcss@3.4.7: resolution: {integrity: sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==} @@ -9418,16 +9370,16 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-declaration-location@1.0.2: - resolution: {integrity: sha512-F7+4QiD/WguzLqviTNu+4tgR5SJtW4orC9RDCYzkwbeyHNq7hfGpq4Y8odaf0w9Z6orH+y98jgUdVaUFOPNRhg==} + ts-declaration-location@1.0.4: + resolution: {integrity: sha512-r4JoxYhKULbZuH81Pjrp9OEG5St7XWk7zXwGkLKhmVcjiBVHTJXV5wK6dEa9JKW5QGSTW6b1lOjxAKp8R1SQhg==} peerDependencies: typescript: '>=4.0.0' ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-pattern@5.2.0: - resolution: {integrity: sha512-aGaSpOlDcns7ZoeG/OMftWyQG1KqPVhgplhJxNCvyIXqWrumM5uIoOSarw/hmmi/T1PnuQ/uD8NaFHvLpHicDg==} + ts-pattern@5.3.1: + resolution: {integrity: sha512-1RUMKa8jYQdNfmnK4jyzBK3/PS/tnjcZ1CW0v1vWDeYe5RBklc/nquw03MEoB66hVBm4BnlCfmOqDVxHyT1DpA==} tsconfck@3.0.3: resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} @@ -9464,6 +9416,9 @@ packages: turbo-stream@2.2.0: resolution: {integrity: sha512-FKFg7A0To1VU4CH9YmSMON5QphK0BXjSoiC7D9yMh+mEEbXLUP9qJ4hEt1qcjKtzncs1OpcnjZO8NgrlVbZH+g==} + turbo-stream@2.3.0: + resolution: {integrity: sha512-PhEr9mdexoVv+rJkQ3c8TjrN3DUghX37GNJkSMksoPR4KrXIPnM2MnqRt07sViIqX9IdlhrgtTSyjoVOASq6cg==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -9787,12 +9742,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vinxi@0.3.12: - resolution: {integrity: sha512-YU/Scild/Rdy6qwgdILYRlO99Wp8ti2CmlMlYioEg7lRtxAST5iCFjviDya+BYQDgc3Pugh4KzOypVwjZknF2A==} - hasBin: true - - vinxi@0.4.1: - resolution: {integrity: sha512-WGEYqIuJ2/P3sBoSVKsGvp/UKpW4wVSaAFdA18gthyMCEExN6nVteoA+Rv1wQFLKXTVL9JRpeGJjcLzcRRgGCA==} + vinxi@0.4.2: + resolution: {integrity: sha512-BbvIum9BLUQ22O/lU1RX0+aKNMXXcl58hofNoWFnFcKkm+efgVsHiD2d7HG3w8QLdb2Asdhmz5/ZzI1Y3zTBXw==} hasBin: true vite-node@1.6.0: @@ -11418,110 +11369,108 @@ snapshots: '@eslint-community/regexpp@4.11.0': {} - '@eslint-react/ast@1.8.2(eslint@8.57.0)(typescript@5.5.3)': + '@eslint-react/ast@1.12.3(eslint@8.57.0)(typescript@5.5.3)': dependencies: - '@eslint-react/tools': 1.8.2 - '@eslint-react/types': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/tools': 1.12.3 + '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) birecord: 0.1.1 - remeda: 2.7.0 string-ts: 2.2.0 - ts-pattern: 5.2.0 + ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/core@1.8.2(eslint@8.57.0)(typescript@5.5.3)': - dependencies: - '@eslint-react/ast': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/tools': 1.8.2 - '@eslint-react/types': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/var': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/type-utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) - remeda: 2.7.0 + '@eslint-react/core@1.12.3(eslint@8.57.0)(typescript@5.5.3)': + dependencies: + '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/tools': 1.12.3 + '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + birecord: 0.1.1 short-unique-id: 5.2.0 - ts-pattern: 5.2.0 + ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/eslint-plugin@1.8.2(eslint@8.57.0)(typescript@5.5.3)': + '@eslint-react/eslint-plugin@1.12.3(eslint@8.57.0)(typescript@5.5.3)': dependencies: - '@eslint-react/shared': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/tools': 1.8.2 - '@eslint-react/types': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/type-utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/tools': 1.12.3 + '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 - eslint-plugin-react-debug: 1.8.2(eslint@8.57.0)(typescript@5.5.3) - eslint-plugin-react-dom: 1.8.2(eslint@8.57.0)(typescript@5.5.3) - eslint-plugin-react-hooks-extra: 1.8.2(eslint@8.57.0)(typescript@5.5.3) - eslint-plugin-react-naming-convention: 1.8.2(eslint@8.57.0)(typescript@5.5.3) - eslint-plugin-react-x: 1.8.2(eslint@8.57.0)(typescript@5.5.3) - remeda: 2.7.0 + eslint-plugin-react-debug: 1.12.3(eslint@8.57.0)(typescript@5.5.3) + eslint-plugin-react-dom: 1.12.3(eslint@8.57.0)(typescript@5.5.3) + eslint-plugin-react-hooks-extra: 1.12.3(eslint@8.57.0)(typescript@5.5.3) + eslint-plugin-react-naming-convention: 1.12.3(eslint@8.57.0)(typescript@5.5.3) + eslint-plugin-react-web-api: 1.12.3(eslint@8.57.0)(typescript@5.5.3) + eslint-plugin-react-x: 1.12.3(eslint@8.57.0)(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@eslint-react/jsx@1.8.2(eslint@8.57.0)(typescript@5.5.3)': - dependencies: - '@eslint-react/ast': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/tools': 1.8.2 - '@eslint-react/types': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/var': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) - remeda: 2.7.0 - ts-pattern: 5.2.0 + '@eslint-react/jsx@1.12.3(eslint@8.57.0)(typescript@5.5.3)': + dependencies: + '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/tools': 1.12.3 + '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.8.2(eslint@8.57.0)(typescript@5.5.3)': + '@eslint-react/shared@1.12.3(eslint@8.57.0)(typescript@5.5.3)': dependencies: - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/tools': 1.12.3 + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) picomatch: 4.0.2 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/tools@1.8.2': {} + '@eslint-react/tools@1.12.3': {} - '@eslint-react/types@1.8.2(eslint@8.57.0)(typescript@5.5.3)': + '@eslint-react/types@1.12.3(eslint@8.57.0)(typescript@5.5.3)': dependencies: - '@eslint-react/tools': 1.8.2 - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) - remeda: 2.7.0 + '@eslint-react/tools': 1.12.3 + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/var@1.8.2(eslint@8.57.0)(typescript@5.5.3)': + '@eslint-react/var@1.12.3(eslint@8.57.0)(typescript@5.5.3)': dependencies: - '@eslint-react/ast': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/tools': 1.8.2 - '@eslint-react/types': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) - remeda: 2.7.0 + '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/tools': 1.12.3 + '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color @@ -11695,41 +11644,21 @@ snapshots: '@microsoft/tsdoc@0.15.0': {} - '@module-federation/runtime-tools@0.1.6': - dependencies: - '@module-federation/runtime': 0.1.6 - '@module-federation/webpack-bundler-runtime': 0.1.6 - optional: true - - '@module-federation/runtime-tools@0.2.3': - dependencies: - '@module-federation/runtime': 0.2.3 - '@module-federation/webpack-bundler-runtime': 0.2.3 - - '@module-federation/runtime@0.1.6': + '@module-federation/runtime-tools@0.5.1': dependencies: - '@module-federation/sdk': 0.1.6 - optional: true + '@module-federation/runtime': 0.5.1 + '@module-federation/webpack-bundler-runtime': 0.5.1 - '@module-federation/runtime@0.2.3': + '@module-federation/runtime@0.5.1': dependencies: - '@module-federation/sdk': 0.2.3 - - '@module-federation/sdk@0.1.6': - optional: true - - '@module-federation/sdk@0.2.3': {} + '@module-federation/sdk': 0.5.1 - '@module-federation/webpack-bundler-runtime@0.1.6': - dependencies: - '@module-federation/runtime': 0.1.6 - '@module-federation/sdk': 0.1.6 - optional: true + '@module-federation/sdk@0.5.1': {} - '@module-federation/webpack-bundler-runtime@0.2.3': + '@module-federation/webpack-bundler-runtime@0.5.1': dependencies: - '@module-federation/runtime': 0.2.3 - '@module-federation/sdk': 0.2.3 + '@module-federation/runtime': 0.5.1 + '@module-federation/sdk': 0.5.1 '@mswjs/interceptors@0.27.2': dependencies: @@ -11831,9 +11760,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.11))': + '@nrwl/tao@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12))': dependencies: - nx: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.11)) + nx: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) tslib: 2.6.2 transitivePeerDependencies: - '@swc-node/register' @@ -12018,9 +11947,9 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.45.3': + '@playwright/test@1.46.1': dependencies: - playwright: 1.45.3 + playwright: 1.46.1 '@prisma/client@5.17.0(prisma@5.18.0)': optionalDependencies: @@ -12205,9 +12134,9 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@remix-run/node@2.11.1(typescript@5.5.3)': + '@remix-run/node@2.11.2(typescript@5.5.3)': dependencies: - '@remix-run/server-runtime': 2.11.1(typescript@5.5.3) + '@remix-run/server-runtime': 2.11.2(typescript@5.5.3) '@remix-run/web-fetch': 4.4.2 '@web3-storage/multipart-parser': 1.0.0 cookie-signature: 1.2.1 @@ -12231,6 +12160,8 @@ snapshots: '@remix-run/router@1.19.0': {} + '@remix-run/router@1.19.1': {} + '@remix-run/server-runtime@2.11.1(typescript@5.5.3)': dependencies: '@remix-run/router': 1.19.0 @@ -12243,6 +12174,18 @@ snapshots: optionalDependencies: typescript: 5.5.3 + '@remix-run/server-runtime@2.11.2(typescript@5.5.3)': + dependencies: + '@remix-run/router': 1.19.1 + '@types/cookie': 0.6.0 + '@web3-storage/multipart-parser': 1.0.0 + cookie: 0.6.0 + set-cookie-parser: 2.7.0 + source-map: 0.7.4 + turbo-stream: 2.3.0 + optionalDependencies: + typescript: 5.5.3 + '@remix-run/web-blob@3.1.0': dependencies: '@remix-run/web-stream': 1.1.0 @@ -12271,9 +12214,9 @@ snapshots: dependencies: web-streams-polyfill: 3.2.1 - '@replayio/playwright@3.1.8(@playwright/test@1.45.3)': + '@replayio/playwright@3.1.8(@playwright/test@1.46.1)': dependencies: - '@playwright/test': 1.45.3 + '@playwright/test': 1.46.1 chalk: 4.1.2 debug: 4.3.6 fs-extra: 11.2.0 @@ -12439,26 +12382,26 @@ snapshots: - bufferutil - utf-8-validate - '@rsbuild/core@1.0.1-beta.15': + '@rsbuild/core@1.0.1-rc.0': dependencies: - '@rspack/core': 1.0.0-beta.5(@swc/helpers@0.5.11) + '@rspack/core': 1.0.0(@swc/helpers@0.5.12) '@rspack/lite-tapable': 1.0.0 - '@swc/helpers': 0.5.11 - caniuse-lite: 1.0.30001651 + '@swc/helpers': 0.5.12 + caniuse-lite: 1.0.30001653 core-js: 3.38.1 optionalDependencies: fsevents: 2.3.3 - '@rsbuild/plugin-react@1.0.1-beta.15(@rsbuild/core@1.0.1-beta.15)': + '@rsbuild/plugin-react@1.0.1-rc.0(@rsbuild/core@1.0.1-rc.0)': dependencies: - '@rsbuild/core': 1.0.1-beta.15 + '@rsbuild/core': 1.0.1-rc.0 '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) react-refresh: 0.14.2 '@rsbuild/shared@1.0.0': dependencies: '@rspack/core': 0.4.0 - caniuse-lite: 1.0.30001651 + caniuse-lite: 1.0.30001653 line-diff: 2.1.1 lodash: 4.17.21 postcss: 8.4.31 @@ -12466,82 +12409,55 @@ snapshots: '@rspack/binding-darwin-arm64@0.4.0': optional: true - '@rspack/binding-darwin-arm64@0.7.5': - optional: true - - '@rspack/binding-darwin-arm64@1.0.0-beta.5': + '@rspack/binding-darwin-arm64@1.0.0': optional: true '@rspack/binding-darwin-x64@0.4.0': optional: true - '@rspack/binding-darwin-x64@0.7.5': - optional: true - - '@rspack/binding-darwin-x64@1.0.0-beta.5': + '@rspack/binding-darwin-x64@1.0.0': optional: true '@rspack/binding-linux-arm64-gnu@0.4.0': optional: true - '@rspack/binding-linux-arm64-gnu@0.7.5': - optional: true - - '@rspack/binding-linux-arm64-gnu@1.0.0-beta.5': + '@rspack/binding-linux-arm64-gnu@1.0.0': optional: true '@rspack/binding-linux-arm64-musl@0.4.0': optional: true - '@rspack/binding-linux-arm64-musl@0.7.5': - optional: true - - '@rspack/binding-linux-arm64-musl@1.0.0-beta.5': + '@rspack/binding-linux-arm64-musl@1.0.0': optional: true '@rspack/binding-linux-x64-gnu@0.4.0': optional: true - '@rspack/binding-linux-x64-gnu@0.7.5': - optional: true - - '@rspack/binding-linux-x64-gnu@1.0.0-beta.5': + '@rspack/binding-linux-x64-gnu@1.0.0': optional: true '@rspack/binding-linux-x64-musl@0.4.0': optional: true - '@rspack/binding-linux-x64-musl@0.7.5': - optional: true - - '@rspack/binding-linux-x64-musl@1.0.0-beta.5': + '@rspack/binding-linux-x64-musl@1.0.0': optional: true '@rspack/binding-win32-arm64-msvc@0.4.0': optional: true - '@rspack/binding-win32-arm64-msvc@0.7.5': - optional: true - - '@rspack/binding-win32-arm64-msvc@1.0.0-beta.5': + '@rspack/binding-win32-arm64-msvc@1.0.0': optional: true '@rspack/binding-win32-ia32-msvc@0.4.0': optional: true - '@rspack/binding-win32-ia32-msvc@0.7.5': - optional: true - - '@rspack/binding-win32-ia32-msvc@1.0.0-beta.5': + '@rspack/binding-win32-ia32-msvc@1.0.0': optional: true '@rspack/binding-win32-x64-msvc@0.4.0': optional: true - '@rspack/binding-win32-x64-msvc@0.7.5': - optional: true - - '@rspack/binding-win32-x64-msvc@1.0.0-beta.5': + '@rspack/binding-win32-x64-msvc@1.0.0': optional: true '@rspack/binding@0.4.0': @@ -12556,30 +12472,17 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 0.4.0 '@rspack/binding-win32-x64-msvc': 0.4.0 - '@rspack/binding@0.7.5': + '@rspack/binding@1.0.0': optionalDependencies: - '@rspack/binding-darwin-arm64': 0.7.5 - '@rspack/binding-darwin-x64': 0.7.5 - '@rspack/binding-linux-arm64-gnu': 0.7.5 - '@rspack/binding-linux-arm64-musl': 0.7.5 - '@rspack/binding-linux-x64-gnu': 0.7.5 - '@rspack/binding-linux-x64-musl': 0.7.5 - '@rspack/binding-win32-arm64-msvc': 0.7.5 - '@rspack/binding-win32-ia32-msvc': 0.7.5 - '@rspack/binding-win32-x64-msvc': 0.7.5 - optional: true - - '@rspack/binding@1.0.0-beta.5': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.0.0-beta.5 - '@rspack/binding-darwin-x64': 1.0.0-beta.5 - '@rspack/binding-linux-arm64-gnu': 1.0.0-beta.5 - '@rspack/binding-linux-arm64-musl': 1.0.0-beta.5 - '@rspack/binding-linux-x64-gnu': 1.0.0-beta.5 - '@rspack/binding-linux-x64-musl': 1.0.0-beta.5 - '@rspack/binding-win32-arm64-msvc': 1.0.0-beta.5 - '@rspack/binding-win32-ia32-msvc': 1.0.0-beta.5 - '@rspack/binding-win32-x64-msvc': 1.0.0-beta.5 + '@rspack/binding-darwin-arm64': 1.0.0 + '@rspack/binding-darwin-x64': 1.0.0 + '@rspack/binding-linux-arm64-gnu': 1.0.0 + '@rspack/binding-linux-arm64-musl': 1.0.0 + '@rspack/binding-linux-x64-gnu': 1.0.0 + '@rspack/binding-linux-x64-musl': 1.0.0 + '@rspack/binding-win32-arm64-msvc': 1.0.0 + '@rspack/binding-win32-ia32-msvc': 1.0.0 + '@rspack/binding-win32-x64-msvc': 1.0.0 '@rspack/core@0.4.0': dependencies: @@ -12600,25 +12503,14 @@ snapshots: zod: 3.23.8 zod-validation-error: 1.2.0(zod@3.23.8) - '@rspack/core@0.7.5(@swc/helpers@0.5.11)': + '@rspack/core@1.0.0(@swc/helpers@0.5.12)': dependencies: - '@module-federation/runtime-tools': 0.1.6 - '@rspack/binding': 0.7.5 - caniuse-lite: 1.0.30001651 - tapable: 2.2.1 - webpack-sources: 3.2.3 - optionalDependencies: - '@swc/helpers': 0.5.11 - optional: true - - '@rspack/core@1.0.0-beta.5(@swc/helpers@0.5.11)': - dependencies: - '@module-federation/runtime-tools': 0.2.3 - '@rspack/binding': 1.0.0-beta.5 + '@module-federation/runtime-tools': 0.5.1 + '@rspack/binding': 1.0.0 '@rspack/lite-tapable': 1.0.0 - caniuse-lite: 1.0.30001651 + caniuse-lite: 1.0.30001653 optionalDependencies: - '@swc/helpers': 0.5.11 + '@swc/helpers': 0.5.12 '@rspack/lite-tapable@1.0.0': {} @@ -12711,7 +12603,7 @@ snapshots: '@swc/core-win32-x64-msvc@1.7.6': optional: true - '@swc/core@1.7.6(@swc/helpers@0.5.11)': + '@swc/core@1.7.6(@swc/helpers@0.5.12)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.12 @@ -12726,7 +12618,7 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.7.6 '@swc/core-win32-ia32-msvc': 1.7.6 '@swc/core-win32-x64-msvc': 1.7.6 - '@swc/helpers': 0.5.11 + '@swc/helpers': 0.5.12 '@swc/counter@0.1.3': {} @@ -12734,7 +12626,7 @@ snapshots: dependencies: tslib: 2.6.2 - '@swc/helpers@0.5.11': + '@swc/helpers@0.5.12': dependencies: tslib: 2.6.2 @@ -12742,7 +12634,7 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tanstack/config@0.11.3(@types/node@20.14.9)(esbuild@0.21.5)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': + '@tanstack/config@0.12.0(@types/node@20.14.9)(esbuild@0.21.5)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': dependencies: '@commitlint/parse': 19.0.3 '@eslint/js': 8.57.0 @@ -13116,10 +13008,10 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.0.0': + '@typescript-eslint/scope-manager@8.3.0': dependencies: - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/visitor-keys': 8.0.0 + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/visitor-keys': 8.3.0 '@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: @@ -13145,10 +13037,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.0.0(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/type-utils@8.3.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.3) - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) debug: 4.3.6 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: @@ -13161,7 +13053,7 @@ snapshots: '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.0.0': {} + '@typescript-eslint/types@8.3.0': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.3)': dependencies: @@ -13192,12 +13084,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.0.0(typescript@5.5.3)': + '@typescript-eslint/typescript-estree@8.3.0(typescript@5.5.3)': dependencies: - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/visitor-keys': 8.0.0 + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/visitor-keys': 8.3.0 debug: 4.3.6 - globby: 11.1.0 + fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 @@ -13233,12 +13125,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.0.0(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/utils@8.3.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) eslint: 8.57.0 transitivePeerDependencies: - supports-color @@ -13254,9 +13146,9 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.0.0': + '@typescript-eslint/visitor-keys@8.3.0': dependencies: - '@typescript-eslint/types': 8.0.0 + '@typescript-eslint/types': 8.3.0 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} @@ -13301,7 +13193,7 @@ snapshots: transitivePeerDependencies: - uWebSockets.js - '@vinxi/plugin-directives@0.4.1(vinxi@0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1))': + '@vinxi/plugin-directives@0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1))': dependencies: '@babel/parser': 7.25.3 acorn: 8.12.1 @@ -13312,7 +13204,7 @@ snapshots: magicast: 0.2.11 recast: 0.23.4 tslib: 2.6.2 - vinxi: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) '@vinxi/react-server-dom@0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': dependencies: @@ -13321,29 +13213,29 @@ snapshots: react-dom: 18.3.1(react@18.3.1) vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) - '@vinxi/react@0.2.3': {} + '@vinxi/react@0.2.4': {} - '@vinxi/server-components@0.4.1(vinxi@0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1))': + '@vinxi/server-components@0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1))': dependencies: - '@vinxi/plugin-directives': 0.4.1(vinxi@0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1)) + '@vinxi/plugin-directives': 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1)) acorn: 8.12.1 acorn-loose: 8.3.0 acorn-typescript: 1.4.13(acorn@8.12.1) astring: 1.8.6 magicast: 0.2.11 recast: 0.23.4 - vinxi: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) - '@vinxi/server-functions@0.4.1(vinxi@0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1))': + '@vinxi/server-functions@0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1))': dependencies: - '@vinxi/plugin-directives': 0.4.1(vinxi@0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1)) + '@vinxi/plugin-directives': 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1)) acorn: 8.12.1 acorn-loose: 8.3.0 acorn-typescript: 1.4.13(acorn@8.12.1) astring: 1.8.6 magicast: 0.2.11 recast: 0.23.4 - vinxi: 0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) '@vitejs/plugin-react@4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': dependencies: @@ -13508,19 +13400,19 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4))': dependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4))': dependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4))': dependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) optionalDependencies: webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) @@ -13832,7 +13724,7 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.40): dependencies: browserslist: 4.23.3 - caniuse-lite: 1.0.30001651 + caniuse-lite: 1.0.30001653 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 @@ -13997,7 +13889,7 @@ snapshots: browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001651 + caniuse-lite: 1.0.30001653 electron-to-chromium: 1.5.4 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -14064,7 +13956,7 @@ snapshots: camelcase@7.0.1: {} - caniuse-lite@1.0.30001651: {} + caniuse-lite@1.0.30001653: {} chai@4.4.1: dependencies: @@ -14965,60 +14857,61 @@ snapshots: minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-react-debug@1.8.2(eslint@8.57.0)(typescript@5.5.3): - dependencies: - '@eslint-react/ast': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/core': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/tools': 1.8.2 - '@eslint-react/types': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/type-utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) + eslint-plugin-react-debug@1.12.3(eslint@8.57.0)(typescript@5.5.3): + dependencies: + '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/tools': 1.12.3 + '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 - remeda: 2.7.0 string-ts: 2.2.0 + ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.8.2(eslint@8.57.0)(typescript@5.5.3): - dependencies: - '@eslint-react/ast': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/core': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/tools': 1.8.2 - '@eslint-react/types': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/var': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) + eslint-plugin-react-dom@1.12.3(eslint@8.57.0)(typescript@5.5.3): + dependencies: + '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/tools': 1.12.3 + '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 - remeda: 2.7.0 + ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.8.2(eslint@8.57.0)(typescript@5.5.3): - dependencies: - '@eslint-react/ast': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/core': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/tools': 1.8.2 - '@eslint-react/types': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/var': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/type-utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) + eslint-plugin-react-hooks-extra@1.12.3(eslint@8.57.0)(typescript@5.5.3): + dependencies: + '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/tools': 1.12.3 + '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 - remeda: 2.7.0 + ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: @@ -15028,41 +14921,61 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-plugin-react-naming-convention@1.8.2(eslint@8.57.0)(typescript@5.5.3): - dependencies: - '@eslint-react/ast': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/core': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/tools': 1.8.2 - '@eslint-react/types': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/type-utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) + eslint-plugin-react-naming-convention@1.12.3(eslint@8.57.0)(typescript@5.5.3): + dependencies: + '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/tools': 1.12.3 + '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + eslint: 8.57.0 + ts-pattern: 5.3.1 + optionalDependencies: + typescript: 5.5.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-web-api@1.12.3(eslint@8.57.0)(typescript@5.5.3): + dependencies: + '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/tools': 1.12.3 + '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + birecord: 0.1.1 eslint: 8.57.0 - remeda: 2.7.0 + ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.8.2(eslint@8.57.0)(typescript@5.5.3): - dependencies: - '@eslint-react/ast': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/core': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/tools': 1.8.2 - '@eslint-react/types': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/var': 1.8.2(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/type-utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.3) + eslint-plugin-react-x@1.12.3(eslint@8.57.0)(typescript@5.5.3): + dependencies: + '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/tools': 1.12.3 + '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 - is-immutable-type: 4.0.0(eslint@8.57.0)(typescript@5.5.3) - remeda: 2.7.0 + is-immutable-type: 5.0.0(eslint@8.57.0)(typescript@5.5.3) + ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: @@ -15708,7 +15621,7 @@ snapshots: lodash: 4.17.21 tapable: 2.2.1 - html-webpack-plugin@5.6.0(@rspack/core@0.7.5(@swc/helpers@0.5.11))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.0(@rspack/core@1.0.0(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -15716,8 +15629,8 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - '@rspack/core': 0.7.5(@swc/helpers@0.5.11) - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4) + '@rspack/core': 1.0.0(@swc/helpers@0.5.12) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) htmlparser2@6.1.0: dependencies: @@ -15961,12 +15874,12 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-immutable-type@4.0.0(eslint@8.57.0)(typescript@5.5.3): + is-immutable-type@5.0.0(eslint@8.57.0)(typescript@5.5.3): dependencies: - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.3) - ts-declaration-location: 1.0.2(typescript@5.5.3) + ts-declaration-location: 1.0.4(typescript@5.5.3) typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -16150,7 +16063,7 @@ snapshots: dependencies: argparse: 2.0.1 - jsdom@24.1.1: + jsdom@25.0.0: dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -16473,6 +16386,10 @@ snapshots: minimalistic-assert@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.0.8: dependencies: brace-expansion: 1.1.11 @@ -16749,10 +16666,10 @@ snapshots: nwsapi@2.2.12: {} - nx@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.11)): + nx@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.11)) + '@nrwl/tao': 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -16797,7 +16714,7 @@ snapshots: '@nx/nx-linux-x64-musl': 19.5.6 '@nx/nx-win32-arm64-msvc': 19.5.6 '@nx/nx-win32-x64-msvc': 19.5.6 - '@swc/core': 1.7.6(@swc/helpers@0.5.11) + '@swc/core': 1.7.6(@swc/helpers@0.5.12) transitivePeerDependencies: - debug @@ -17076,11 +16993,11 @@ snapshots: mlly: 1.7.0 pathe: 1.1.2 - playwright-core@1.45.3: {} + playwright-core@1.46.1: {} - playwright@1.45.3: + playwright@1.46.1: dependencies: - playwright-core: 1.45.3 + playwright-core: 1.46.1 optionalDependencies: fsevents: 2.3.2 @@ -17194,7 +17111,7 @@ snapshots: psl@1.9.0: {} - publint@0.2.9: + publint@0.2.10: dependencies: npm-packlist: 5.1.3 picocolors: 1.0.1 @@ -17408,19 +17325,15 @@ snapshots: relateurl@0.2.7: {} - remeda@2.7.0: + remix-auth-form@1.5.0(@remix-run/server-runtime@2.11.2(typescript@5.5.3))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.2(typescript@5.5.3))): dependencies: - type-fest: 4.23.0 + '@remix-run/server-runtime': 2.11.2(typescript@5.5.3) + remix-auth: 3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.2(typescript@5.5.3)) - remix-auth-form@1.5.0(@remix-run/server-runtime@2.11.1(typescript@5.5.3))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.1(typescript@5.5.3))): - dependencies: - '@remix-run/server-runtime': 2.11.1(typescript@5.5.3) - remix-auth: 3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.1(typescript@5.5.3)) - - remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.1(typescript@5.5.3)): + remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.2(typescript@5.5.3)): dependencies: '@remix-run/react': 2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3) - '@remix-run/server-runtime': 2.11.1(typescript@5.5.3) + '@remix-run/server-runtime': 2.11.2(typescript@5.5.3) uuid: 8.3.2 renderkid@3.0.0: @@ -17964,11 +17877,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - swc-loader@0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.11))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4)): + swc-loader@0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)): dependencies: - '@swc/core': 1.7.6(@swc/helpers@0.5.11) + '@swc/core': 1.7.6(@swc/helpers@0.5.12) '@swc/counter': 0.1.3 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) swr@2.2.5(react@18.3.1): dependencies: @@ -17980,7 +17893,7 @@ snapshots: system-architecture@0.1.0: {} - tailwind-merge@2.4.0: {} + tailwind-merge@2.5.2: {} tailwindcss@3.4.7: dependencies: @@ -18039,28 +17952,28 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) optionalDependencies: - '@swc/core': 1.7.6(@swc/helpers@0.5.11) + '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.21.5 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5) optionalDependencies: - '@swc/core': 1.7.6(@swc/helpers@0.5.11) + '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.21.5 terser@5.31.1: @@ -18137,14 +18050,14 @@ snapshots: dependencies: typescript: 5.5.3 - ts-declaration-location@1.0.2(typescript@5.5.3): + ts-declaration-location@1.0.4(typescript@5.5.3): dependencies: - minimatch: 9.0.5 + minimatch: 10.0.1 typescript: 5.5.3 ts-interface-checker@0.1.13: {} - ts-pattern@5.2.0: {} + ts-pattern@5.3.1: {} tsconfck@3.0.3(typescript@5.5.3): optionalDependencies: @@ -18176,6 +18089,8 @@ snapshots: turbo-stream@2.2.0: {} + turbo-stream@2.3.0: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -18456,74 +18371,7 @@ snapshots: vary@1.1.2: {} - vinxi@0.3.12(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1): - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) - '@types/micromatch': 4.0.7 - '@vinxi/listhen': 1.5.6 - boxen: 7.1.1 - chokidar: 3.6.0 - citty: 0.1.6 - consola: 3.2.3 - crossws: 0.2.4 - dax-sh: 0.39.2 - defu: 6.1.4 - es-module-lexer: 1.5.4 - esbuild: 0.20.2 - fast-glob: 3.3.2 - get-port-please: 3.1.2 - h3: 1.11.1 - hookable: 5.5.3 - http-proxy: 1.18.1 - micromatch: 4.0.7 - nitropack: 2.9.6(@opentelemetry/api@1.8.0) - node-fetch-native: 1.6.4 - path-to-regexp: 6.2.2 - pathe: 1.1.2 - radix3: 1.1.2 - resolve: 1.22.8 - serve-placeholder: 2.0.1 - serve-static: 1.15.0 - ufo: 1.5.3 - unctx: 2.3.1 - unenv: 1.9.0 - unstorage: 1.10.2(ioredis@5.4.1) - vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) - zod: 3.23.8 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@libsql/client' - - '@netlify/blobs' - - '@opentelemetry/api' - - '@planetscale/database' - - '@types/node' - - '@upstash/redis' - - '@vercel/kv' - - better-sqlite3 - - debug - - drizzle-orm - - encoding - - idb-keyval - - ioredis - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - uWebSockets.js - - xml2js - - vinxi@0.4.1(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1): + vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1): dependencies: '@babel/core': 7.25.2 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) @@ -18657,7 +18505,7 @@ snapshots: fsevents: 2.3.3 terser: 5.31.1 - vitest@1.6.0(@types/node@20.14.9)(jsdom@24.1.1)(terser@5.31.1): + vitest@1.6.0(@types/node@20.14.9)(jsdom@25.0.0)(terser@5.31.1): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -18681,7 +18529,7 @@ snapshots: why-is-node-running: 2.2.2 optionalDependencies: '@types/node': 20.14.9 - jsdom: 24.1.1 + jsdom: 25.0.0 transitivePeerDependencies: - less - lightningcss @@ -18732,9 +18580,9 @@ snapshots: webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4)) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -18743,12 +18591,12 @@ snapshots: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) - webpack-dev-middleware@7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4)): + webpack-dev-middleware@7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)): dependencies: colorette: 2.0.20 memfs: 4.9.3 @@ -18757,7 +18605,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0): dependencies: @@ -18789,10 +18637,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4)) + webpack-dev-middleware: 7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) ws: 8.18.0 optionalDependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - bufferutil @@ -18810,7 +18658,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -18833,7 +18681,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -18841,7 +18689,7 @@ snapshots: - esbuild - uglify-js - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -18864,7 +18712,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.11))(esbuild@0.21.5)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 optionalDependencies: From bac62c5dd99b1c307804ba87b2c28439f6b4b705 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Thu, 29 Aug 2024 19:58:09 +0200 Subject: [PATCH 006/154] fix(react-router): remove groups when using `createLazyFileRoute` (#2220) fixes #2219 --- packages/react-router/src/fileRoute.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/react-router/src/fileRoute.ts b/packages/react-router/src/fileRoute.ts index bb713ba93e..9f3a347d73 100644 --- a/packages/react-router/src/fileRoute.ts +++ b/packages/react-router/src/fileRoute.ts @@ -241,9 +241,16 @@ export function createLazyRoute< } } +const routeGroupPatternRegex = /\(.+\)/g + +function removeGroups(s: string) { + return s.replaceAll(routeGroupPatternRegex, '').replaceAll('//', '/') +} + export function createLazyFileRoute< TFilePath extends keyof FileRoutesByPath, TRoute extends FileRoutesByPath[TFilePath]['preLoaderRoute'], >(id: TFilePath) { - return (opts: LazyRouteOptions) => new LazyRoute({ id, ...opts }) + return (opts: LazyRouteOptions) => + new LazyRoute({ id: removeGroups(id), ...opts }) } From 823c4091fa6c6a12b91004eb04870cb900d437db Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 29 Aug 2024 17:59:13 +0000 Subject: [PATCH 007/154] release: v1.51.4 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 41 files changed, 90 insertions(+), 90 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 1af527a82c..7bc45bb88f 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 8891f9f1f2..011f32f498 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index cdd1086966..cd6f557152 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 34bc5a6526..386f61ac25 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index e0e231ed86..cb2d9e1f68 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 439ead682a..011fe77393 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 223213726d..8e402a7307 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.3", + "@tanstack/start": "^1.51.4", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 7ee606a5c2..1acf4ddc1b 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.3", + "@tanstack/start": "^1.51.4", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 9b544ed408..f56f4ac36b 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 01d2dd3fc9..96969fb1cc 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 7c5175e04d..79fefa83f1 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index b16a14380e..e444b351d9 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 697ec027cc..77955ae4ae 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 76a70828d9..74d325eac8 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index e9d78c0f7d..00db73a5f7 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 6770f164a7..7aaf81b3b7 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index b1596d42d8..54fd470dfe 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 3605945591..1446292e43 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index b126336e31..8b2393a6bd 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 11d76926b0..7a85c49711 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 1566be189b..9817a31a62 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index c20063f978..5d224080f4 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", + "@tanstack/react-router": "^1.51.4", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/router-devtools": "^1.51.4", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index afc0da7517..7ad6dda8ab 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/router-zod-adapter": "^1.51.2", - "@tanstack/router-valibot-adapter": "^1.51.2", - "@tanstack/router-arktype-adapter": "^1.51.2", + "@tanstack/router-zod-adapter": "^1.51.4", + "@tanstack/router-valibot-adapter": "^1.51.4", + "@tanstack/router-arktype-adapter": "^1.51.4", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 080c8d94fb..e494abe250 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -16,10 +16,10 @@ "@prisma/client": "5.17.0", "@remix-run/node": "^2.11.2", "@remix-run/server-runtime": "^2.11.2", - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.3", + "@tanstack/start": "^1.51.4", "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index db5325cec0..a125afbad3 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/start": "^1.51.3", + "@tanstack/react-router": "^1.51.4", + "@tanstack/start": "^1.51.4", "@typescript-eslint/parser": "^7.18.0", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index dbe529a956..e67e179ee1 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.2", - "@tanstack/react-router-with-query": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/react-router-with-query": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.3", + "@tanstack/start": "^1.51.4", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 6e09d2081c..166035ff09 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.3", + "@tanstack/start": "^1.51.4", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 528591a733..d0bb639cfc 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.3", + "@tanstack/start": "^1.51.4", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 61203b5f00..285f490c3a 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -15,10 +15,10 @@ "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", "@remix-run/node": "^2.11.2", "@remix-run/server-runtime": "^2.11.2", - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.3", + "@tanstack/start": "^1.51.4", "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 7b90a0f685..28f76dba04 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.2", - "@tanstack/react-router-with-query": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/react-router-with-query": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.3", + "@tanstack/start": "^1.51.4", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index a90e38b14a..4610e9bd32 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.2", - "@tanstack/react-router-with-query": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/react-router-with-query": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.3", + "@tanstack/start": "^1.51.4", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 771085b048..8cc8ba19d6 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index b4a1822c59..53e69961d5 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 722b6353c0..9a59772706 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.51.2", - "@tanstack/router-devtools": "^1.51.2", + "@tanstack/react-router": "^1.51.4", + "@tanstack/router-devtools": "^1.51.4", "@tanstack/router-plugin": "^1.51.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 7fd2759bdf..367bcfa43c 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.51.2", + "version": "1.51.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index f8fdbe976e..f9db1a0cda 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.51.2", + "version": "1.51.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index bab89c2c94..76fed46c48 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.51.2", + "version": "1.51.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index c51e7406a7..e7753d200a 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.51.2", + "version": "1.51.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 8c1722bb70..10f83eb371 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.51.2", + "version": "1.51.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 04951d99f9..28b0c25d78 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.51.2", + "version": "1.51.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 8ab7b28943..6ba975cac7 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.51.3", + "version": "1.51.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 7219e50b2e8cb9ace306b7b032d5a8060fac24f7 Mon Sep 17 00:00:00 2001 From: Christopher Horobin Date: Thu, 29 Aug 2024 21:30:12 +0200 Subject: [PATCH 008/154] fix: export more types to allow declaration: true or composite (#2222) --- packages/react-router/src/index.tsx | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/packages/react-router/src/index.tsx b/packages/react-router/src/index.tsx index 6a977f7f40..59bbe43f38 100644 --- a/packages/react-router/src/index.tsx +++ b/packages/react-router/src/index.tsx @@ -184,6 +184,40 @@ export type { TrimPathRight, RootRouteOptions, AnyRouteWithContext, + ParseSplatParams, + SplatParams, + StringifyParamsFn, + ParamsOptions, + FullSearchSchemaOption, + RouteContextFn, + RouteContextOptions, + BeforeLoadFn, + BeforeLoadContextOptions, + AnySearchValidator, + DefaultSearchValidator, + ContextOptions, + SearchValidatorObj, + AnySearchValidatorObj, + AnySearchValidatorAdapter, + AnySearchValidatorFn, + SearchValidatorFn, + SearchValidator, + InferAllParams, + InferAllContext, + ResolveSearchSchemaFnInput, + ResolveSearchSchemaInput, + ResolveSearchSchema, + LooseReturnType, + LooseAsyncReturnType, + ContextReturnType, + ContextAsyncReturnType, + RouteContextParameter, + BeforeLoadContextParameter, + ResolveAllContext, + ResolveLoaderData, + ResolveAllParamsFromParent, + ResolveRouteContext, + ResolveSearchSchemaFn, } from './route' export type { From 1dfd7d604b636de2723b8def0f288115b8d7e2cf Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 29 Aug 2024 19:31:48 +0000 Subject: [PATCH 009/154] release: v1.51.5 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 41 files changed, 90 insertions(+), 90 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 7bc45bb88f..acad8bbc05 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 011f32f498..2118fb5972 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index cd6f557152..885bbacfda 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 386f61ac25..cc9ffbf403 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index cb2d9e1f68..ad2d0f38fe 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 011fe77393..43267df486 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 8e402a7307..a8c0975fc9 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.4", + "@tanstack/start": "^1.51.5", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 1acf4ddc1b..56162f3858 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.4", + "@tanstack/start": "^1.51.5", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index f56f4ac36b..e72f5bae25 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 96969fb1cc..995507ff13 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 79fefa83f1..75af0b9dd3 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index e444b351d9..b93ea89d7b 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 77955ae4ae..f733f4f485 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 74d325eac8..3c4d647cc5 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 00db73a5f7..6ee7b8341a 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 7aaf81b3b7..def68a9e90 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 54fd470dfe..ed6179945e 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 1446292e43..ddcbadee90 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 8b2393a6bd..0a8a864820 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 7a85c49711..e8063d1ee7 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 9817a31a62..b9fc68772b 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 5d224080f4..8578dfe37d 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", + "@tanstack/react-router": "^1.51.5", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/router-devtools": "^1.51.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 7ad6dda8ab..ff47903cde 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/router-zod-adapter": "^1.51.4", - "@tanstack/router-valibot-adapter": "^1.51.4", - "@tanstack/router-arktype-adapter": "^1.51.4", + "@tanstack/router-zod-adapter": "^1.51.5", + "@tanstack/router-valibot-adapter": "^1.51.5", + "@tanstack/router-arktype-adapter": "^1.51.5", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index e494abe250..78c1021aab 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -16,10 +16,10 @@ "@prisma/client": "5.17.0", "@remix-run/node": "^2.11.2", "@remix-run/server-runtime": "^2.11.2", - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.4", + "@tanstack/start": "^1.51.5", "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index a125afbad3..bea8919fd0 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/start": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/start": "^1.51.5", "@typescript-eslint/parser": "^7.18.0", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index e67e179ee1..e2ced08eac 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.4", - "@tanstack/react-router-with-query": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/react-router-with-query": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.4", + "@tanstack/start": "^1.51.5", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 166035ff09..820fedfd11 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.4", + "@tanstack/start": "^1.51.5", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index d0bb639cfc..0202cdfb8c 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.4", + "@tanstack/start": "^1.51.5", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 285f490c3a..166921fc50 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -15,10 +15,10 @@ "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", "@remix-run/node": "^2.11.2", "@remix-run/server-runtime": "^2.11.2", - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.4", + "@tanstack/start": "^1.51.5", "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 28f76dba04..8e865abb90 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.4", - "@tanstack/react-router-with-query": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/react-router-with-query": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.4", + "@tanstack/start": "^1.51.5", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 4610e9bd32..9945153344 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.4", - "@tanstack/react-router-with-query": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/react-router-with-query": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.4", + "@tanstack/start": "^1.51.5", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 8cc8ba19d6..b8f66eae9e 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 53e69961d5..4bd1750f64 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 9a59772706..c77e326143 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.51.4", - "@tanstack/router-devtools": "^1.51.4", + "@tanstack/react-router": "^1.51.5", + "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 367bcfa43c..b150a6c2a6 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.51.4", + "version": "1.51.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index f9db1a0cda..36f9f7d24f 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.51.4", + "version": "1.51.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 76fed46c48..fdb1e5c19f 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.51.4", + "version": "1.51.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index e7753d200a..2d4548d047 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.51.4", + "version": "1.51.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 10f83eb371..14f852eda4 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.51.4", + "version": "1.51.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 28b0c25d78..45e7564986 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.51.4", + "version": "1.51.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 6ba975cac7..9309f03dac 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.51.4", + "version": "1.51.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From bf092b6956115e5388d9042eed1041e757416ce1 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 29 Aug 2024 14:00:56 -0600 Subject: [PATCH 010/154] docs: fix route trees --- docs/framework/react/guide/route-trees.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/docs/framework/react/guide/route-trees.md b/docs/framework/react/guide/route-trees.md index 7602581227..85d2c0e7da 100644 --- a/docs/framework/react/guide/route-trees.md +++ b/docs/framework/react/guide/route-trees.md @@ -55,20 +55,15 @@ Let's take that concept and expand it out to a larger site structure, but with f │ ├── $.tsx ``` -There's a lot of power and convention to unpack with file-based routing, so let's break it down a bit. +The above is a valid route tree configuration that can be used with TanStack Router! There's a lot of power and convention to unpack with file-based routing, so let's break it down a bit. ## Route Tree Configuration -Route trees can be represented using a number of different ways: +Route trees can be configured using a few different ways: - [Flat Routes](./route-trees.md#flat-routes) -- [Directory Routes](./route-trees.md#directory-routes) -- [Mixed Flat and Directory Routes](./route-trees.md#mixed-flat-and-directory-routes) +- [Directories](./route-trees.md#directory-routes) +- [Mixed Flat Routes and Directories](./route-trees.md#mixed-flat-and-directory-routes) - [Code-Based Routes](./route-trees.md#code-based-routes) -- [Case-Sensitivity](./route-trees.md#case-sensitivity) For a birds-eye view, the route tree examples below showcase the [Routing Concepts](./routing-concepts.md) that are available in TanStack Router, but please be sure to check out the full documentation links above for each type of route tree, or just proceed to the next section to get started with file-based routing. - -## Case-Sensitivity - -Route paths are **not case-sensitive** _by default_. This means that `about.tsx` and `AbOuT.tsx` are considered the same path out-of-the box. This is a good thing, since this is the way most of the web works anyway! That said, if you truly want to be weird and match a path with a different case, you can set a route's `caseSensitive` option to `true`. From 14b6042d6145975e1e31fc83281b2c2b0e323369 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 29 Aug 2024 14:28:58 -0600 Subject: [PATCH 011/154] examples: swap remix cookies for vinxi/http --- .../start-basic-auth/app/components/Login.tsx | 5 +- .../start-basic-auth/app/routes/__root.tsx | 13 +- .../start-basic-auth/app/routes/_authed.tsx | 14 +- .../start-basic-auth/app/routes/logout.tsx | 11 +- .../start-basic-auth/app/routes/signup.tsx | 30 ++-- .../start-basic-auth/app/utils/session.ts | 19 +-- examples/react/start-basic-auth/package.json | 2 - examples/react/start-clerk-basic/package.json | 2 - pnpm-lock.yaml | 149 ++---------------- 9 files changed, 50 insertions(+), 195 deletions(-) diff --git a/examples/react/start-basic-auth/app/components/Login.tsx b/examples/react/start-basic-auth/app/components/Login.tsx index e330d3d93f..1e268ef0ad 100644 --- a/examples/react/start-basic-auth/app/components/Login.tsx +++ b/examples/react/start-basic-auth/app/components/Login.tsx @@ -1,4 +1,4 @@ -import { Link, useRouter } from '@tanstack/react-router' +import { useRouter } from '@tanstack/react-router' import { useServerFn } from '@tanstack/start' import { useMutation } from '../hooks/useMutation' import { loginFn } from '../routes/_authed' @@ -13,9 +13,6 @@ export function Login() { onSuccess: (ctx) => { if (!ctx.data?.error) { router.invalidate() - router.navigate({ - to: '/', - }) return } }, diff --git a/examples/react/start-basic-auth/app/routes/__root.tsx b/examples/react/start-basic-auth/app/routes/__root.tsx index 8f90c99d55..4737215077 100644 --- a/examples/react/start-basic-auth/app/routes/__root.tsx +++ b/examples/react/start-basic-auth/app/routes/__root.tsx @@ -18,19 +18,18 @@ import { DefaultCatchBoundary } from '~/components/DefaultCatchBoundary.js' import { NotFound } from '~/components/NotFound.js' import appCss from '~/styles/app.css?url' import { seo } from '~/utils/seo.js' -import { sessionStorage } from '~/utils/session.js' +import { useAppSession } from '~/utils/session.js' -const fetchUser = createServerFn('GET', async (_, { request }) => { - const cookie = request.headers.get('cookie') - const session = await sessionStorage.getSession(cookie) - const userEmail = session.get('userEmail') +const fetchUser = createServerFn('GET', async () => { + // We need to auth on the server so we have access to secure cookies + const session = await useAppSession() - if (!userEmail) { + if (!session.data.userEmail) { return null } return { - email: userEmail, + email: session.data.userEmail, } }) diff --git a/examples/react/start-basic-auth/app/routes/_authed.tsx b/examples/react/start-basic-auth/app/routes/_authed.tsx index e5cd33d7ae..bcd6beaed0 100644 --- a/examples/react/start-basic-auth/app/routes/_authed.tsx +++ b/examples/react/start-basic-auth/app/routes/_authed.tsx @@ -1,9 +1,9 @@ import { createFileRoute } from '@tanstack/react-router' import { createServerFn, json } from '@tanstack/start' import { Auth } from '../components/Auth' -import { sessionStorage } from '~/utils/session.js' import { hashPassword, prismaClient } from '~/utils/prisma' import { Login } from '~/components/Login' +import { useAppSession } from '~/utils/session' export const loginFn = createServerFn( 'POST', @@ -41,17 +41,11 @@ export const loginFn = createServerFn( } // Create a session - const session = await sessionStorage.getSession( - request.headers.get('cookie'), - ) + const session = await useAppSession() // Store the user's email in the session - session.set('userEmail', user.email) - - return json(null, { - headers: { - 'Set-Cookie': await sessionStorage.commitSession(session), - }, + await session.update({ + userEmail: user.email, }) }, ) diff --git a/examples/react/start-basic-auth/app/routes/logout.tsx b/examples/react/start-basic-auth/app/routes/logout.tsx index 2ce954ded3..f78aa7d8ec 100644 --- a/examples/react/start-basic-auth/app/routes/logout.tsx +++ b/examples/react/start-basic-auth/app/routes/logout.tsx @@ -1,15 +1,14 @@ import { createFileRoute, redirect } from '@tanstack/react-router' import { createServerFn } from '@tanstack/start' -import { sessionStorage } from '~/utils/session' +import { useAppSession } from '~/utils/session' -const logoutFn = createServerFn('POST', async (_: void, { request }) => { - const session = await sessionStorage.getSession(request.headers.get('cookie')) +const logoutFn = createServerFn('POST', async () => { + const session = await useAppSession() + + session.clear() throw redirect({ href: '/', - headers: { - 'Set-Cookie': await sessionStorage.destroySession(session), - }, }) }) diff --git a/examples/react/start-basic-auth/app/routes/signup.tsx b/examples/react/start-basic-auth/app/routes/signup.tsx index 1acb45cb5c..5148372826 100644 --- a/examples/react/start-basic-auth/app/routes/signup.tsx +++ b/examples/react/start-basic-auth/app/routes/signup.tsx @@ -1,16 +1,18 @@ import { createFileRoute, redirect } from '@tanstack/react-router' import { createServerFn, useServerFn } from '@tanstack/start' +import { updateSession } from 'vinxi/http' import { hashPassword, prismaClient } from '~/utils/prisma' -import { sessionStorage } from '~/utils/session' import { useMutation } from '~/hooks/useMutation' import { Auth } from '~/components/Auth' +import { useAppSession } from '~/utils/session' export const signupFn = createServerFn( 'POST', - async ( - payload: { email: string; password: string; redirectUrl?: string }, - context, - ) => { + async (payload: { + email: string + password: string + redirectUrl?: string + }) => { // Check if the user already exists const found = await prismaClient.user.findUnique({ where: { @@ -22,9 +24,7 @@ export const signupFn = createServerFn( const password = await hashPassword(payload.password) // Create a session - const session = await sessionStorage.getSession( - context.request.headers.get('cookie'), - ) + const session = await useAppSession() if (found) { if (found.password !== password) { @@ -36,14 +36,13 @@ export const signupFn = createServerFn( } // Store the user's email in the session - session.set('userEmail', found.email) + await session.update({ + userEmail: found.email, + }) // Redirect to the prev page stored in the "redirect" search param throw redirect({ href: payload.redirectUrl || '/', - headers: { - 'Set-Cookie': await sessionStorage.commitSession(session), - }, }) } @@ -56,14 +55,13 @@ export const signupFn = createServerFn( }) // Store the user's email in the session - session.set('userEmail', user.email) + await session.update({ + userEmail: user.email, + }) // Redirect to the prev page stored in the "redirect" search param throw redirect({ href: payload.redirectUrl || '/', - headers: { - 'Set-Cookie': await sessionStorage.commitSession(session), - }, }) }, ) diff --git a/examples/react/start-basic-auth/app/utils/session.ts b/examples/react/start-basic-auth/app/utils/session.ts index bbf6cdc5ba..08d28177cb 100644 --- a/examples/react/start-basic-auth/app/utils/session.ts +++ b/examples/react/start-basic-auth/app/utils/session.ts @@ -1,20 +1,13 @@ // app/services/session.server.ts -import { createCookieSessionStorage } from '@remix-run/node' - +import { useSession } from 'vinxi/http' import type { User } from '@prisma/client' type SessionUser = { userEmail: User['email'] } -// export the whole sessionStorage object -export const sessionStorage = createCookieSessionStorage({ - cookie: { - name: '_session', // use any name you want here - sameSite: 'lax', // this helps with CSRF - path: '/', // remember to add this so the cookie will work in all routes - httpOnly: true, // for security reasons, make this cookie http only - secrets: ['s3cr3t'], // replace this with an actual secret - secure: process.env.NODE_ENV === 'production', // enable this in prod only - }, -}) +export function useAppSession() { + return useSession({ + password: 'ChangeThisBeforeShippingToProdOrYouWillBeFired', + }) +} diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 78c1021aab..1cd05e8f33 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,8 +14,6 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@remix-run/node": "^2.11.2", - "@remix-run/server-runtime": "^2.11.2", "@tanstack/react-router": "^1.51.5", "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 166921fc50..f58ac0e77e 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,8 +13,6 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@remix-run/node": "^2.11.2", - "@remix-run/server-runtime": "^2.11.2", "@tanstack/react-router": "^1.51.5", "@tanstack/router-devtools": "^1.51.5", "@tanstack/router-plugin": "^1.51.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c66cc0ef9..d1affdb69e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,7 +60,7 @@ importers: version: 25.0.0 nx: specifier: ^19.5.6 - version: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + version: 19.5.6(@swc/core@1.7.6) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -1150,12 +1150,6 @@ importers: '@prisma/client': specifier: 5.17.0 version: 5.17.0(prisma@5.18.0) - '@remix-run/node': - specifier: ^2.11.2 - version: 2.11.2(typescript@5.5.3) - '@remix-run/server-runtime': - specifier: ^2.11.2 - version: 2.11.2(typescript@5.5.3) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1448,12 +1442,6 @@ importers: '@clerk/tanstack-start': specifier: 0.3.0-snapshot.vdf04997 version: 0.3.0-snapshot.vdf04997(@tanstack/react-router@packages+react-router)(@tanstack/start@packages+start)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@remix-run/node': - specifier: ^2.11.2 - version: 2.11.2(typescript@5.5.3) - '@remix-run/server-runtime': - specifier: ^2.11.2 - version: 2.11.2(typescript@5.5.3) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -2070,7 +2058,7 @@ importers: version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5) + version: 5.93.0(@swc/core@1.7.6)(esbuild@0.21.5) zod: specifier: ^3.23.8 version: 3.23.8 @@ -4214,15 +4202,6 @@ packages: '@types/react': optional: true - '@remix-run/node@2.11.2': - resolution: {integrity: sha512-gRNFM61EOYWNmYgf+pvBt6MrirWlkDz1G6RQsJNowtRqbYoy05AdDe5HiHGF5w8ZMAZVeXnZiwbL0Nt7ykYBCA==} - engines: {node: '>=18.0.0'} - peerDependencies: - typescript: ^5.1.0 - peerDependenciesMeta: - typescript: - optional: true - '@remix-run/react@2.11.1': resolution: {integrity: sha512-bXilQrHx5WVHsdA6UFkWxYVePZJ1kzwfa/KYMdbMZi6zsSlv2/N6ZbgNuoemt8oM8/YgCT6EOPITzCgz+zEMVw==} engines: {node: '>=18.0.0'} @@ -4260,22 +4239,6 @@ packages: typescript: optional: true - '@remix-run/web-blob@3.1.0': - resolution: {integrity: sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==} - - '@remix-run/web-fetch@4.4.2': - resolution: {integrity: sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==} - engines: {node: ^10.17 || >=12.3} - - '@remix-run/web-file@3.1.0': - resolution: {integrity: sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==} - - '@remix-run/web-form-data@3.1.0': - resolution: {integrity: sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==} - - '@remix-run/web-stream@1.1.0': - resolution: {integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==} - '@replayio/playwright@3.1.8': resolution: {integrity: sha512-hRAjdPeC7kJYqus0za02nApfH3/f1yccXcf9qeqdlNPTVGeKTfFunTJCWVBxavwW6nEamKvsqzEoBHSk7+jwVg==} peerDependencies: @@ -5288,9 +5251,6 @@ packages: resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} hasBin: true - '@zxing/text-encoding@0.9.0': - resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} - JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -5970,10 +5930,6 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - cookie-signature@1.2.1: - resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==} - engines: {node: '>=6.6.0'} - cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} @@ -6061,10 +6017,6 @@ packages: damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - data-uri-to-buffer@3.0.1: - resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} - engines: {node: '>= 6'} - data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -7973,10 +7925,6 @@ packages: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - mrmime@1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} - engines: {node: '>=10'} - ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -9083,9 +9031,6 @@ packages: std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - stream-slice@0.1.2: - resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} - streamx@2.16.1: resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==} @@ -9559,10 +9504,6 @@ packages: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} - undici@6.19.7: - resolution: {integrity: sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==} - engines: {node: '>=18.17'} - unenv@1.9.0: resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} @@ -9856,9 +9797,6 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-encoding@1.1.5: - resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} - web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} @@ -11760,9 +11698,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12))': + '@nrwl/tao@19.5.6(@swc/core@1.7.6)': dependencies: - nx: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + nx: 19.5.6(@swc/core@1.7.6) tslib: 2.6.2 transitivePeerDependencies: - '@swc-node/register' @@ -12134,18 +12072,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@remix-run/node@2.11.2(typescript@5.5.3)': - dependencies: - '@remix-run/server-runtime': 2.11.2(typescript@5.5.3) - '@remix-run/web-fetch': 4.4.2 - '@web3-storage/multipart-parser': 1.0.0 - cookie-signature: 1.2.1 - source-map-support: 0.5.21 - stream-slice: 0.1.2 - undici: 6.19.7 - optionalDependencies: - typescript: 5.5.3 - '@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3)': dependencies: '@remix-run/router': 1.19.0 @@ -12186,34 +12112,6 @@ snapshots: optionalDependencies: typescript: 5.5.3 - '@remix-run/web-blob@3.1.0': - dependencies: - '@remix-run/web-stream': 1.1.0 - web-encoding: 1.1.5 - - '@remix-run/web-fetch@4.4.2': - dependencies: - '@remix-run/web-blob': 3.1.0 - '@remix-run/web-file': 3.1.0 - '@remix-run/web-form-data': 3.1.0 - '@remix-run/web-stream': 1.1.0 - '@web3-storage/multipart-parser': 1.0.0 - abort-controller: 3.0.0 - data-uri-to-buffer: 3.0.1 - mrmime: 1.0.1 - - '@remix-run/web-file@3.1.0': - dependencies: - '@remix-run/web-blob': 3.1.0 - - '@remix-run/web-form-data@3.1.0': - dependencies: - web-encoding: 1.1.5 - - '@remix-run/web-stream@1.1.0': - dependencies: - web-streams-polyfill: 3.2.1 - '@replayio/playwright@3.1.8(@playwright/test@1.46.1)': dependencies: '@playwright/test': 1.46.1 @@ -13432,9 +13330,6 @@ snapshots: dependencies: argparse: 2.0.1 - '@zxing/text-encoding@0.9.0': - optional: true - JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 @@ -14199,8 +14094,6 @@ snapshots: cookie-signature@1.0.6: {} - cookie-signature@1.2.1: {} - cookie@0.5.0: {} cookie@0.6.0: {} @@ -14280,8 +14173,6 @@ snapshots: damerau-levenshtein@1.0.8: {} - data-uri-to-buffer@3.0.1: {} - data-uri-to-buffer@4.0.1: {} data-urls@5.0.0: @@ -16442,8 +16333,6 @@ snapshots: mri@1.2.0: {} - mrmime@1.0.1: {} - ms@2.0.0: {} ms@2.1.2: {} @@ -16666,10 +16555,10 @@ snapshots: nwsapi@2.2.12: {} - nx@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)): + nx@19.5.6(@swc/core@1.7.6): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + '@nrwl/tao': 19.5.6(@swc/core@1.7.6) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -17733,8 +17622,6 @@ snapshots: std-env@3.7.0: {} - stream-slice@0.1.2: {} - streamx@2.16.1: dependencies: fast-fifo: 1.3.2 @@ -17964,14 +17851,14 @@ snapshots: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.21.5 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.6)(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.21.5)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5) + webpack: 5.93.0(@swc/core@1.7.6)(esbuild@0.21.5) optionalDependencies: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.21.5 @@ -18217,8 +18104,6 @@ snapshots: dependencies: '@fastify/busboy': 2.1.0 - undici@6.19.7: {} - unenv@1.9.0: dependencies: consola: 3.2.3 @@ -18565,12 +18450,6 @@ snapshots: dependencies: defaults: 1.0.4 - web-encoding@1.1.5: - dependencies: - util: 0.12.5 - optionalDependencies: - '@zxing/text-encoding': 0.9.0 - web-streams-polyfill@3.2.1: {} webidl-conversions@3.0.1: {} @@ -18658,7 +18537,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -18681,15 +18560,17 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4): + webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.21.5): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -18712,11 +18593,9 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6)(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.21.5)) watchpack: 2.4.1 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild From 0948389a78c73d62fb1118485d57c11ca606d8fe Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Fri, 30 Aug 2024 09:31:35 +1200 Subject: [PATCH 012/154] chore: fix start-basic-auth example to pass playwright test (#2226) --- examples/react/start-basic-auth/app/components/Login.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/react/start-basic-auth/app/components/Login.tsx b/examples/react/start-basic-auth/app/components/Login.tsx index 1e268ef0ad..6e114612e7 100644 --- a/examples/react/start-basic-auth/app/components/Login.tsx +++ b/examples/react/start-basic-auth/app/components/Login.tsx @@ -10,9 +10,10 @@ export function Login() { const loginMutation = useMutation({ fn: loginFn, - onSuccess: (ctx) => { + onSuccess: async (ctx) => { if (!ctx.data?.error) { - router.invalidate() + await router.invalidate() + router.navigate({ to: '/' }) return } }, From 3fb722676e525dc83c711ab60fbd8ccf69b9a84e Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Fri, 30 Aug 2024 00:59:17 +0200 Subject: [PATCH 013/154] fix(start): correctly generate .d.ts files (#2225) * chore: upgrade to latest config version to generate correct .d.ts files see #2223 * chore: added arethetypeswrong (attw) since attw will report a node10 related issue we want to ignore (see https://github.com/arethetypeswrong/arethetypeswrong.github.io/blob/main/docs/problems/NoResolution.md#true-positive-node-10-doesnt-support-packagejson-exports) and cannot (yet) be configured to skip node10 (see https://github.com/arethetypeswrong/arethetypeswrong.github.io/issues/112), the `no-resolution` rule is skipped * fix(start): correctly reference client * ci: apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- package.json | 3 +- packages/history/package.json | 2 +- packages/react-cross-context/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start-vite-plugin/package.json | 2 +- packages/start/package.json | 17 +- packages/start/src/client-runtime/index.tsx | 2 +- packages/start/src/server-runtime/index.tsx | 6 +- .../react-server-runtime.tsconfig.json | 10 - .../tsconfigs/server-handler.tsconfig.json | 10 - .../tsconfigs/server-runtime.tsconfig.json | 10 - packages/start/vite.config.ts | 3 + pnpm-lock.yaml | 232 +++++++++++++++++- 22 files changed, 256 insertions(+), 63 deletions(-) delete mode 100644 packages/start/tsconfigs/react-server-runtime.tsconfig.json delete mode 100644 packages/start/tsconfigs/server-handler.tsconfig.json delete mode 100644 packages/start/tsconfigs/server-runtime.tsconfig.json diff --git a/package.json b/package.json index f1d2ea66b8..b5e1a41cf6 100644 --- a/package.json +++ b/package.json @@ -30,9 +30,10 @@ "gpt-generate": "node gpt/generate.js" }, "devDependencies": { + "@arethetypeswrong/cli": "^0.15.4", "@eslint-react/eslint-plugin": "^1.12.3", "@playwright/test": "^1.46.1", - "@tanstack/config": "^0.12.0", + "@tanstack/config": "^0.12.1", "@types/node": "^20.14.7", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", diff --git a/packages/history/package.json b/packages/history/package.json index e9fe552263..ec57fbed59 100644 --- a/packages/history/package.json +++ b/packages/history/package.json @@ -28,7 +28,7 @@ "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", "test:types:ts55": "tsc", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "test:unit": "vitest", "test:unit:dev": "pnpm run test:unit --watch", "build": "vite build" diff --git a/packages/react-cross-context/package.json b/packages/react-cross-context/package.json index 0d5cd5a118..bc3917724f 100644 --- a/packages/react-cross-context/package.json +++ b/packages/react-cross-context/package.json @@ -24,7 +24,7 @@ "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", "test:types:ts55": "tsc", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, "type": "module", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index b150a6c2a6..e30eeda963 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -35,7 +35,7 @@ "test:types:ts55": "tsc", "test:unit": "vitest", "test:unit:dev": "pnpm run test:unit --watch", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, "type": "module", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 36f9f7d24f..d67a7225c0 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -35,7 +35,7 @@ "test:types:ts55": "tsc", "test:unit": "vitest", "test:unit:dev": "pnpm run test:unit --watch --hideSkippedTests", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, "type": "module", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index fdb1e5c19f..5a0390ed17 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -35,7 +35,7 @@ "test:types:ts55": "tsc", "test:unit": "vitest", "test:unit:dev": "pnpm run test:unit --watch --typecheck", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, "type": "module", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index f9ab38d846..a595645457 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -33,7 +33,7 @@ "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", "test:types:ts55": "tsc", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, "type": "module", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 2d4548d047..9cc5d645f4 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -33,7 +33,7 @@ "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", "test:types:ts55": "tsc", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, "type": "module", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index f17de4edff..2d912dd152 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -34,7 +34,7 @@ "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", "test:types:ts55": "tsc", "test:unit": "vitest", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, "type": "module", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 156d6912bb..67c900c6b0 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -36,7 +36,7 @@ "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", "test:types:ts55": "tsc", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, "type": "module", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 14f852eda4..9059144e8b 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -35,7 +35,7 @@ "test:types:ts55": "tsc", "test:unit": "vitest", "test:unit:dev": "pnpm run test:unit --watch --typecheck", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, "type": "module", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 99807ee523..6212443a40 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -35,7 +35,7 @@ "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", "test:types:ts55": "tsc", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, "type": "module", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 45e7564986..65a3dcb1b1 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -35,7 +35,7 @@ "test:types:ts55": "tsc", "test:unit": "vitest", "test:unit:dev": "pnpm run test:unit --watch --typecheck", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, "type": "module", diff --git a/packages/start-vite-plugin/package.json b/packages/start-vite-plugin/package.json index 8d4989cfad..14abd97c80 100644 --- a/packages/start-vite-plugin/package.json +++ b/packages/start-vite-plugin/package.json @@ -35,7 +35,7 @@ "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", "test:types:ts55": "tsc", - "test:build": "publint --strict", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, "type": "module", diff --git a/packages/start/package.json b/packages/start/package.json index 9309f03dac..f5c2b75662 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -33,13 +33,10 @@ "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", "test:types:ts55": "tsc", - "test:build": "publint --strict", - "build": "vite build && pnpm build:config && pnpm build:router-manifest && pnpm build:server-handler && pnpm build:server-runtime && pnpm build:react-server-runtime", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", + "build": "vite build && pnpm build:config && pnpm build:router-manifest", "build:config": "tsc --project tsconfigs/config.tsconfig.json", - "build:router-manifest": "tsc --project tsconfigs/router-manifest.tsconfig.json", - "build:server-handler": "tsc --project tsconfigs/server-handler.tsconfig.json", - "build:server-runtime": "tsc --project tsconfigs/server-runtime.tsconfig.json", - "build:react-server-runtime": "tsc --project tsconfigs/react-server-runtime.tsconfig.json" + "build:router-manifest": "tsc --project tsconfigs/router-manifest.tsconfig.json" }, "type": "module", "exports": { @@ -107,8 +104,8 @@ }, "./server-runtime": { "import": { - "types": "./dist/esm/server-runtime/server-runtime/index.d.ts", - "default": "./dist/esm/server-runtime/server-runtime/index.js" + "types": "./dist/esm/server-runtime/index.d.ts", + "default": "./dist/esm/server-runtime/index.js" } }, "./react-server-runtime": { @@ -119,8 +116,8 @@ }, "./server-handler": { "import": { - "types": "./dist/esm/server-handler/server-handler/index.d.ts", - "default": "./dist/esm/server-handler/server-handler/index.js" + "types": "./dist/esm/server-handler/index.d.ts", + "default": "./dist/esm/server-handler/index.js" } }, "./package.json": "./package.json" diff --git a/packages/start/src/client-runtime/index.tsx b/packages/start/src/client-runtime/index.tsx index 1205974461..26a870d846 100644 --- a/packages/start/src/client-runtime/index.tsx +++ b/packages/start/src/client-runtime/index.tsx @@ -1,6 +1,6 @@ import { fetcher } from './fetcher' import { getBaseUrl } from './getBaseUrl' -import type { FetchFn } from '../client' +import type { FetchFn } from '../client/createServerFn' export function createServerReference( _fn: FetchFn, diff --git a/packages/start/src/server-runtime/index.tsx b/packages/start/src/server-runtime/index.tsx index 4b807d2775..909038a1eb 100644 --- a/packages/start/src/server-runtime/index.tsx +++ b/packages/start/src/server-runtime/index.tsx @@ -1,10 +1,10 @@ import { Readable, Writable } from 'node:stream' import { getEvent, getRequestHeaders } from 'vinxi/http' -import { fetcher } from '../client-runtime' +import { fetcher } from '../client-runtime/fetcher' import { getBaseUrl } from '../client-runtime/getBaseUrl' -import { handleServerRequest } from '../server-handler' +import { handleServerRequest } from '../server-handler/index' import type { WritableOptions } from 'node:stream' -import type { FetchFn } from '../client' +import type { FetchFn } from '../client/createServerFn' /** * * @returns {import('node:http').IncomingMessage} diff --git a/packages/start/tsconfigs/react-server-runtime.tsconfig.json b/packages/start/tsconfigs/react-server-runtime.tsconfig.json deleted file mode 100644 index 9d94fb6491..0000000000 --- a/packages/start/tsconfigs/react-server-runtime.tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../../tsconfig.json", - "include": ["../src/react-server-runtime/index.tsx"], - "compilerOptions": { - "outDir": "../dist/esm/react-server-runtime", - "target": "esnext", - "noEmit": false, - "jsx": "react-jsx" - } -} diff --git a/packages/start/tsconfigs/server-handler.tsconfig.json b/packages/start/tsconfigs/server-handler.tsconfig.json deleted file mode 100644 index 0fad93aad0..0000000000 --- a/packages/start/tsconfigs/server-handler.tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../../tsconfig.json", - "include": ["../src/server-handler/index.tsx"], - "compilerOptions": { - "outDir": "../dist/esm/server-handler", - "target": "esnext", - "noEmit": false, - "jsx": "react-jsx" - } -} diff --git a/packages/start/tsconfigs/server-runtime.tsconfig.json b/packages/start/tsconfigs/server-runtime.tsconfig.json deleted file mode 100644 index 091334a19d..0000000000 --- a/packages/start/tsconfigs/server-runtime.tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../../tsconfig.json", - "include": ["../src/server-runtime/index.tsx"], - "compilerOptions": { - "outDir": "../dist/esm/server-runtime", - "target": "esnext", - "noEmit": false, - "jsx": "react-jsx" - } -} diff --git a/packages/start/vite.config.ts b/packages/start/vite.config.ts index 409c2073b1..d370358486 100644 --- a/packages/start/vite.config.ts +++ b/packages/start/vite.config.ts @@ -15,6 +15,9 @@ export default mergeConfig( './src/server/index.tsx', './src/client-runtime/index.tsx', './src/api/index.ts', + './src/server-runtime/index.tsx', + './src/react-server-runtime/index.tsx', + './src/server-handler/index.tsx', ], srcDir: './src', exclude: ['./src/config'], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d1affdb69e..8602ff0415 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,6 +28,9 @@ importers: .: devDependencies: + '@arethetypeswrong/cli': + specifier: ^0.15.4 + version: 0.15.4 '@eslint-react/eslint-plugin': specifier: ^1.12.3 version: 1.12.3(eslint@8.57.0)(typescript@5.5.3) @@ -35,8 +38,8 @@ importers: specifier: ^1.46.1 version: 1.46.1 '@tanstack/config': - specifier: ^0.12.0 - version: 0.12.0(@types/node@20.14.9)(esbuild@0.21.5)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + specifier: ^0.12.1 + version: 0.12.1(@types/node@20.14.9)(esbuild@0.21.5)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) '@types/node': specifier: ^20.14.7 version: 20.14.9 @@ -2229,6 +2232,18 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@andrewbranch/untar.js@1.0.3': + resolution: {integrity: sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==} + + '@arethetypeswrong/cli@0.15.4': + resolution: {integrity: sha512-YDbImAi1MGkouT7f2yAECpUMFhhA1J0EaXzIqoC5GGtK0xDgauLtcsZezm8tNq7d3wOFXH7OnY+IORYcG212rw==} + engines: {node: '>=18'} + hasBin: true + + '@arethetypeswrong/core@0.15.1': + resolution: {integrity: sha512-FYp6GBAgsNz81BkfItRz8RLZO03w5+BaeiPma1uCfmxTnxbtuMrI/dbzGiOk8VghO108uFI0oJo0OkewdSHw7g==} + engines: {node: '>=18'} + '@ark/schema@0.3.2': resolution: {integrity: sha512-StWlBec++TxgDgpEUAkOxB7rqCZmOJr1dsW0P44vcgoitGtlQN13eCW1MlHlzScTUWA5iOtyHD+TsA0gKm4X0w==} @@ -3005,6 +3020,10 @@ packages: resolution: {integrity: sha512-EeEjMobfuJrwoctj7FA1y1KEbM0+Q1xSjobIEyie9k4haVEBB7vkDvsasw1pM3rO39mL2akxIAzLMUAtrMHZhA==} engines: {node: '>=16.13'} + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} @@ -4585,6 +4604,10 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} @@ -4676,8 +4699,8 @@ packages: '@swc/types@0.1.12': resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} - '@tanstack/config@0.12.0': - resolution: {integrity: sha512-hzvdYmMJlLZMcaVSAgkmH149Nc/UxzDFEOlBNUOR2mFMP6Siw6QhfhgvhHwiTtluWsnsrEGzN7zVc+Rxf4p2Jg==} + '@tanstack/config@0.12.1': + resolution: {integrity: sha512-v0w00ZOrR1Pf32c3Vte4TCUNAjFTCubxeGpcb00QkxkUtYc6Njk4rjBqhl7SdSuExpgCyDN1U41sxk+mIKohUw==} engines: {node: '>=18'} hasBin: true @@ -5360,6 +5383,10 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + ansi-html-community@0.0.8: resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} engines: {'0': node >= 0.8.0} @@ -5705,6 +5732,10 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} @@ -5739,6 +5770,11 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + cli-spinners@2.6.1: resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} engines: {node: '>=6'} @@ -5747,6 +5783,10 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -5758,6 +5798,9 @@ packages: resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} engines: {node: '>=18'} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -6268,6 +6311,9 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + enabled@2.0.0: resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} @@ -6302,6 +6348,10 @@ packages: engines: {node: '>=4'} hasBin: true + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -6709,6 +6759,9 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -7044,6 +7097,9 @@ packages: headers-polyfill@4.0.3: resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + homedir-polyfill@1.0.3: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} @@ -7797,6 +7853,17 @@ packages: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true + marked-terminal@7.1.0: + resolution: {integrity: sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==} + engines: {node: '>=16.0.0'} + peerDependencies: + marked: '>=1 <14' + + marked@9.1.6: + resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} + engines: {node: '>= 16'} + hasBin: true + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -7997,6 +8064,10 @@ packages: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + node-emoji@2.1.3: + resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} + engines: {node: '>=18'} + node-fetch-native@1.6.4: resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} @@ -8259,6 +8330,15 @@ packages: resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} engines: {node: '>=0.10.0'} + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -8937,6 +9017,10 @@ packages: simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -9152,6 +9236,10 @@ packages: resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} engines: {node: '>=8'} + supports-hyperlinks@3.1.0: + resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} + engines: {node: '>=14.18'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -9320,6 +9408,9 @@ packages: peerDependencies: typescript: '>=4.0.0' + ts-expose-internals-conditionally@1.0.0-empty.0: + resolution: {integrity: sha512-F8m9NOF6ZhdOClDVdlM8gj3fDCav4ZIFSs/EI3ksQbAAXVSCN/Jh5OCJDDZWBuBy9psFc6jULGDlPwjMYMhJDw==} + ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -9511,6 +9602,10 @@ packages: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} @@ -9679,6 +9774,10 @@ packages: typescript: optional: true + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -10005,10 +10104,18 @@ packages: engines: {node: '>= 14'} hasBin: true + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -10047,6 +10154,27 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@andrewbranch/untar.js@1.0.3': {} + + '@arethetypeswrong/cli@0.15.4': + dependencies: + '@arethetypeswrong/core': 0.15.1 + chalk: 4.1.2 + cli-table3: 0.6.5 + commander: 10.0.1 + marked: 9.1.6 + marked-terminal: 7.1.0(marked@9.1.6) + semver: 7.6.3 + + '@arethetypeswrong/core@0.15.1': + dependencies: + '@andrewbranch/untar.js': 1.0.3 + fflate: 0.8.2 + semver: 7.6.3 + ts-expose-internals-conditionally: 1.0.0-empty.0 + typescript: 5.3.3 + validate-npm-package-name: 5.0.1 + '@ark/schema@0.3.2': dependencies: '@ark/util': 0.2.1 @@ -11042,6 +11170,9 @@ snapshots: dependencies: mime: 3.0.0 + '@colors/colors@1.5.0': + optional: true + '@colors/colors@1.6.0': {} '@commitlint/parse@19.0.3': @@ -12461,6 +12592,8 @@ snapshots: '@sinclair/typebox@0.27.8': {} + '@sindresorhus/is@4.6.0': {} + '@sindresorhus/merge-streams@2.3.0': {} '@stylistic/eslint-plugin-js@2.6.4(eslint@8.57.0)': @@ -12532,7 +12665,7 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tanstack/config@0.12.0(@types/node@20.14.9)(esbuild@0.21.5)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': + '@tanstack/config@0.12.1(@types/node@20.14.9)(esbuild@0.21.5)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': dependencies: '@commitlint/parse': 19.0.3 '@eslint/js': 8.57.0 @@ -13435,6 +13568,10 @@ snapshots: dependencies: type-fest: 0.21.3 + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + ansi-html-community@0.0.8: {} ansi-regex@5.0.1: {} @@ -13881,6 +14018,8 @@ snapshots: chalk@5.3.0: {} + char-regex@1.0.2: {} + check-error@1.0.3: dependencies: get-func-name: 2.0.2 @@ -13917,10 +14056,25 @@ snapshots: dependencies: restore-cursor: 3.1.0 + cli-highlight@2.1.11: + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + cli-spinners@2.6.1: {} cli-spinners@2.9.2: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + cli-width@4.1.0: {} client-only@0.0.1: {} @@ -13931,6 +14085,12 @@ snapshots: is-wsl: 3.1.0 is64bit: 2.0.0 + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -14371,6 +14531,8 @@ snapshots: emoji-regex@9.2.2: {} + emojilib@2.4.0: {} + enabled@2.0.0: {} encodeurl@1.0.2: {} @@ -14399,6 +14561,8 @@ snapshots: envinfo@7.13.0: {} + environment@1.1.0: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -15124,6 +15288,8 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 3.2.1 + fflate@0.8.2: {} + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 @@ -15478,6 +15644,8 @@ snapshots: headers-polyfill@4.0.3: {} + highlight.js@10.7.3: {} + homedir-polyfill@1.0.3: dependencies: parse-passwd: 1.0.0 @@ -16231,6 +16399,18 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 + marked-terminal@7.1.0(marked@9.1.6): + dependencies: + ansi-escapes: 7.0.0 + chalk: 5.3.0 + cli-highlight: 2.1.11 + cli-table3: 0.6.5 + marked: 9.1.6 + node-emoji: 2.1.3 + supports-hyperlinks: 3.1.0 + + marked@9.1.6: {} + mdurl@2.0.0: {} media-typer@0.3.0: {} @@ -16485,6 +16665,13 @@ snapshots: node-domexception@1.0.0: {} + node-emoji@2.1.3: + dependencies: + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 + node-fetch-native@1.6.4: {} node-fetch@2.7.0: @@ -16812,6 +16999,14 @@ snapshots: parse-passwd@1.0.0: {} + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + + parse5@5.1.1: {} + + parse5@6.0.1: {} + parse5@7.1.2: dependencies: entities: 4.5.0 @@ -17520,6 +17715,10 @@ snapshots: dependencies: is-arrayish: 0.3.2 + skin-tone@2.0.0: + dependencies: + unicode-emoji-modifier-base: 1.0.0 + slash@3.0.0: {} slash@4.0.0: {} @@ -17762,6 +17961,11 @@ snapshots: has-flag: 4.0.0 supports-color: 7.2.0 + supports-hyperlinks@3.1.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} swc-loader@0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)): @@ -17942,6 +18146,8 @@ snapshots: minimatch: 10.0.1 typescript: 5.5.3 + ts-expose-internals-conditionally@1.0.0-empty.0: {} + ts-interface-checker@0.1.13: {} ts-pattern@5.3.1: {} @@ -18114,6 +18320,8 @@ snapshots: unicode-canonical-property-names-ecmascript@2.0.0: {} + unicode-emoji-modifier-base@1.0.0: {} + unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 @@ -18254,6 +18462,8 @@ snapshots: optionalDependencies: typescript: 5.5.3 + validate-npm-package-name@5.0.1: {} + vary@1.1.2: {} vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1): @@ -18764,8 +18974,20 @@ snapshots: yaml@2.4.5: {} + yargs-parser@20.2.9: {} + yargs-parser@21.1.1: {} + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + yargs@17.7.2: dependencies: cliui: 8.0.1 From 513408927d92838b609d03a745b897ac5fca4214 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 29 Aug 2024 23:01:07 +0000 Subject: [PATCH 014/154] release: v1.51.6 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/history/package.json | 2 +- packages/react-cross-context/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start-vite-plugin/package.json | 2 +- packages/start/package.json | 2 +- 48 files changed, 119 insertions(+), 119 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index acad8bbc05..8f72e1f0e0 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 2118fb5972..a7f6e7f8f5 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 885bbacfda..7c1c5cd03a 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index cc9ffbf403..822db254e6 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index ad2d0f38fe..b552ecf8b2 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,9 +12,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 43267df486..846164d220 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index a8c0975fc9..ea352cc612 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", + "@tanstack/start": "^1.51.6", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 56162f3858..9b53da1d37 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", + "@tanstack/start": "^1.51.6", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index e72f5bae25..7441f7b5ef 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 995507ff13..49a1766e3c 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 75af0b9dd3..85b005e3f2 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index b93ea89d7b..9a93e331fe 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index f733f4f485..30ec152f6f 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 3c4d647cc5..0458298389 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 6ee7b8341a..e517e231b1 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index def68a9e90..8657c205ae 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index ed6179945e..f11dc50f67 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index ddcbadee90..3d5fa83262 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 0a8a864820..dc3ac0f17c 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.51.0", + "@tanstack/router-plugin": "^1.51.6", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.5.3" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index e8063d1ee7..c6a63704d4 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.51.0", + "@tanstack/router-plugin": "^1.51.6", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index b9fc68772b..97b7bcb8ef 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 8578dfe37d..8f3d46f0af 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", + "@tanstack/react-router": "^1.51.6", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/router-devtools": "^1.51.6", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index ff47903cde..8100ea3150 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", - "@tanstack/router-zod-adapter": "^1.51.5", - "@tanstack/router-valibot-adapter": "^1.51.5", - "@tanstack/router-arktype-adapter": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-zod-adapter": "^1.51.6", + "@tanstack/router-valibot-adapter": "^1.51.6", + "@tanstack/router-arktype-adapter": "^1.51.6", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 1cd05e8f33..9ce7aab0ab 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", + "@tanstack/start": "^1.51.6", "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index bea8919fd0..82586b1a37 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/start": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/start": "^1.51.6", "@typescript-eslint/parser": "^7.18.0", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index e2ced08eac..354263a059 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.5", - "@tanstack/react-router-with-query": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/react-router-with-query": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", + "@tanstack/start": "^1.51.6", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 820fedfd11..c549338260 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", + "@tanstack/start": "^1.51.6", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 0202cdfb8c..b99343d81f 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", + "@tanstack/start": "^1.51.6", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index f58ac0e77e..2c66dfd729 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", + "@tanstack/start": "^1.51.6", "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 8e865abb90..1fbf3ca44c 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.5", - "@tanstack/react-router-with-query": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/react-router-with-query": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", + "@tanstack/start": "^1.51.6", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 9945153344..d17168044c 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.5", - "@tanstack/react-router-with-query": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", - "@tanstack/start": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/react-router-with-query": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", + "@tanstack/start": "^1.51.6", "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index b8f66eae9e..f1e7ca850f 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 4bd1750f64..0b7af97754 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index c77e326143..ca52ec8908 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.51.5", - "@tanstack/router-devtools": "^1.51.5", - "@tanstack/router-plugin": "^1.51.0", + "@tanstack/react-router": "^1.51.6", + "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-plugin": "^1.51.6", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/history/package.json b/packages/history/package.json index ec57fbed59..6eb412b2ce 100644 --- a/packages/history/package.json +++ b/packages/history/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/history", - "version": "1.49.7", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-cross-context/package.json b/packages/react-cross-context/package.json index bc3917724f..a687361e09 100644 --- a/packages/react-cross-context/package.json +++ b/packages/react-cross-context/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-cross-context", - "version": "1.44.2", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index e30eeda963..0e29545bb7 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.51.5", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index d67a7225c0..5e2cfd8d35 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.51.5", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 5a0390ed17..eeb7ee0548 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.51.5", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index a595645457..56ce88d22e 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.51.0", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 9cc5d645f4..c0b9351f46 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.51.5", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 2d912dd152..e6b16ee408 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.51.0", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 67c900c6b0..2a2fe97f81 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.51.0", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 9059144e8b..500962e34a 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.51.5", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 6212443a40..f5f3c75a1a 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.51.0", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 65a3dcb1b1..9c68f6ddd4 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.51.5", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start-vite-plugin/package.json b/packages/start-vite-plugin/package.json index 14abd97c80..b6a3fdc0ae 100644 --- a/packages/start-vite-plugin/package.json +++ b/packages/start-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start-vite-plugin", - "version": "1.46.6", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index f5c2b75662..c40fe89da8 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.51.5", + "version": "1.51.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 46534e5b0295b2143f2ba51a4def99c2b1da315f Mon Sep 17 00:00:00 2001 From: Lachlan Collins <1667261+lachlancollins@users.noreply.github.com> Date: Fri, 30 Aug 2024 18:36:46 +1000 Subject: [PATCH 015/154] chore(deps): use ESLint v9 (#2228) --- eslint.config.js | 2 +- examples/react/start-basic-auth/.eslintrc | 5 - examples/react/start-basic-auth/package.json | 3 - examples/react/start-basic-counter/.eslintrc | 5 - .../react/start-basic-counter/package.json | 3 - .../react/start-basic-react-query/.eslintrc | 5 - .../start-basic-react-query/package.json | 3 - examples/react/start-basic-rsc/.eslintrc | 5 - examples/react/start-basic-rsc/package.json | 2 - examples/react/start-basic/.eslintrc | 5 - examples/react/start-basic/package.json | 3 - examples/react/start-clerk-basic/.eslintrc | 5 - examples/react/start-clerk-basic/package.json | 3 - .../react/start-convex-trellaux/.eslintrc | 5 - .../react/start-convex-trellaux/package.json | 3 - examples/react/start-trellaux/.eslintrc | 5 - examples/react/start-trellaux/package.json | 3 - package.json | 6 +- pnpm-lock.yaml | 13729 ++++++---------- 19 files changed, 5340 insertions(+), 8460 deletions(-) delete mode 100644 examples/react/start-basic-auth/.eslintrc delete mode 100644 examples/react/start-basic-counter/.eslintrc delete mode 100644 examples/react/start-basic-react-query/.eslintrc delete mode 100644 examples/react/start-basic-rsc/.eslintrc delete mode 100644 examples/react/start-basic/.eslintrc delete mode 100644 examples/react/start-clerk-basic/.eslintrc delete mode 100644 examples/react/start-convex-trellaux/.eslintrc delete mode 100644 examples/react/start-trellaux/.eslintrc diff --git a/eslint.config.js b/eslint.config.js index a4bea79d26..7315113009 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -8,7 +8,7 @@ export default [ { name: 'tanstack/temp', rules: { - '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/no-unsafe-function-type': 'off', 'no-shadow': 'off', }, }, diff --git a/examples/react/start-basic-auth/.eslintrc b/examples/react/start-basic-auth/.eslintrc deleted file mode 100644 index af7fa28f83..0000000000 --- a/examples/react/start-basic-auth/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["react-app"], - "parser": "@typescript-eslint/parser", - "plugins": ["react-hooks"] -} diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 9ce7aab0ab..c14ce12db1 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -18,7 +18,6 @@ "@tanstack/router-devtools": "^1.51.6", "@tanstack/router-plugin": "^1.51.6", "@tanstack/start": "^1.51.6", - "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", @@ -38,8 +37,6 @@ "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.19", - "eslint": "^8.57.0", - "eslint-config-react-app": "^7.0.1", "postcss": "^8.4.39", "prettier": "^3.3.3", "tailwindcss": "^3.4.4", diff --git a/examples/react/start-basic-counter/.eslintrc b/examples/react/start-basic-counter/.eslintrc deleted file mode 100644 index af7fa28f83..0000000000 --- a/examples/react/start-basic-counter/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["react-app"], - "parser": "@typescript-eslint/parser", - "plugins": ["react-hooks"] -} diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 82586b1a37..b4563543c6 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -13,7 +13,6 @@ "dependencies": { "@tanstack/react-router": "^1.51.6", "@tanstack/start": "^1.51.6", - "@typescript-eslint/parser": "^7.18.0", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" @@ -22,8 +21,6 @@ "@types/node": "^20.12.11", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", - "eslint": "^8.57.0", - "eslint-config-react-app": "^7.0.1", "prettier": "^3.3.3", "typescript": "^5.5.3", "vite": "^5.3.5" diff --git a/examples/react/start-basic-react-query/.eslintrc b/examples/react/start-basic-react-query/.eslintrc deleted file mode 100644 index af7fa28f83..0000000000 --- a/examples/react/start-basic-react-query/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["react-app"], - "parser": "@typescript-eslint/parser", - "plugins": ["react-hooks"] -} diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 354263a059..cd799664c5 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -19,7 +19,6 @@ "@tanstack/router-devtools": "^1.51.6", "@tanstack/router-plugin": "^1.51.6", "@tanstack/start": "^1.51.6", - "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", @@ -35,8 +34,6 @@ "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", - "eslint": "^8.57.0", - "eslint-config-react-app": "^7.0.1", "postcss": "^8.4.40", "prettier": "^3.3.3", "tailwindcss": "^3.4.7", diff --git a/examples/react/start-basic-rsc/.eslintrc b/examples/react/start-basic-rsc/.eslintrc deleted file mode 100644 index af7fa28f83..0000000000 --- a/examples/react/start-basic-rsc/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["react-app"], - "parser": "@typescript-eslint/parser", - "plugins": ["react-hooks"] -} diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index c549338260..5608ee15ff 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -25,8 +25,6 @@ "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", - "eslint": "^8.57.0", - "eslint-config-react-app": "^7.0.1", "postcss": "^8.4.40", "prettier": "^3.3.3", "tailwindcss": "^3.4.7", diff --git a/examples/react/start-basic/.eslintrc b/examples/react/start-basic/.eslintrc deleted file mode 100644 index af7fa28f83..0000000000 --- a/examples/react/start-basic/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["react-app"], - "parser": "@typescript-eslint/parser", - "plugins": ["react-hooks"] -} diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index b99343d81f..d149c6726a 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -16,7 +16,6 @@ "@tanstack/router-devtools": "^1.51.6", "@tanstack/router-plugin": "^1.51.6", "@tanstack/start": "^1.51.6", - "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", @@ -32,8 +31,6 @@ "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", - "eslint": "^8.57.0", - "eslint-config-react-app": "^7.0.1", "postcss": "^8.4.40", "prettier": "^3.3.3", "tailwindcss": "^3.4.7", diff --git a/examples/react/start-clerk-basic/.eslintrc b/examples/react/start-clerk-basic/.eslintrc deleted file mode 100644 index af7fa28f83..0000000000 --- a/examples/react/start-clerk-basic/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["react-app"], - "parser": "@typescript-eslint/parser", - "plugins": ["react-hooks"] -} diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 2c66dfd729..933549a4f4 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -17,7 +17,6 @@ "@tanstack/router-devtools": "^1.51.6", "@tanstack/router-plugin": "^1.51.6", "@tanstack/start": "^1.51.6", - "@typescript-eslint/parser": "^7.16.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", @@ -36,8 +35,6 @@ "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.19", - "eslint": "^8.57.0", - "eslint-config-react-app": "^7.0.1", "postcss": "^8.4.39", "prettier": "^3.3.3", "tailwindcss": "^3.4.4", diff --git a/examples/react/start-convex-trellaux/.eslintrc b/examples/react/start-convex-trellaux/.eslintrc deleted file mode 100644 index af7fa28f83..0000000000 --- a/examples/react/start-convex-trellaux/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["react-app"], - "parser": "@typescript-eslint/parser", - "plugins": ["react-hooks"] -} diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 1fbf3ca44c..d5b1453f3b 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -20,7 +20,6 @@ "@tanstack/router-devtools": "^1.51.6", "@tanstack/router-plugin": "^1.51.6", "@tanstack/start": "^1.51.6", - "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", @@ -42,8 +41,6 @@ "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", - "eslint": "^8.57.0", - "eslint-config-react-app": "^7.0.1", "postcss": "^8.4.40", "prettier": "^3.3.3", "tailwindcss": "^3.4.7", diff --git a/examples/react/start-trellaux/.eslintrc b/examples/react/start-trellaux/.eslintrc deleted file mode 100644 index af7fa28f83..0000000000 --- a/examples/react/start-trellaux/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["react-app"], - "parser": "@typescript-eslint/parser", - "plugins": ["react-hooks"] -} diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index d17168044c..ba07377145 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -18,7 +18,6 @@ "@tanstack/router-devtools": "^1.51.6", "@tanstack/router-plugin": "^1.51.6", "@tanstack/start": "^1.51.6", - "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", @@ -37,8 +36,6 @@ "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", - "eslint": "^8.57.0", - "eslint-config-react-app": "^7.0.1", "postcss": "^8.4.40", "prettier": "^3.3.3", "tailwindcss": "^3.4.7", diff --git a/package.json b/package.json index b5e1a41cf6..4155b5203e 100644 --- a/package.json +++ b/package.json @@ -33,12 +33,12 @@ "@arethetypeswrong/cli": "^0.15.4", "@eslint-react/eslint-plugin": "^1.12.3", "@playwright/test": "^1.46.1", - "@tanstack/config": "^0.12.1", + "@tanstack/config": "^0.13.0", "@types/node": "^20.14.7", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", - "eslint": "^8.57.0", - "eslint-plugin-react-hooks": "^4.6.2", + "eslint": "^9.9.1", + "eslint-plugin-react-hooks": "^5.1.0-rc-a19a8ab4-20240829", "glob": "^10.4.5", "jsdom": "^25.0.0", "nx": "^19.5.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8602ff0415..9fa7cad44e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: use-sync-external-store: 1.2.2 - eslint: ^8.57.0 + eslint: ^9.9.1 '@tanstack/history': workspace:* '@tanstack/react-cross-context': workspace:* '@tanstack/react-router': workspace:* @@ -33,13 +33,13 @@ importers: version: 0.15.4 '@eslint-react/eslint-plugin': specifier: ^1.12.3 - version: 1.12.3(eslint@8.57.0)(typescript@5.5.3) + version: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@playwright/test': specifier: ^1.46.1 version: 1.46.1 '@tanstack/config': - specifier: ^0.12.1 - version: 0.12.1(@types/node@20.14.9)(esbuild@0.21.5)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + specifier: ^0.13.0 + version: 0.13.0(@types/node@20.14.9)(esbuild@0.21.5)(eslint@9.9.1(jiti@1.21.0))(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) '@types/node': specifier: ^20.14.7 version: 20.14.9 @@ -50,11 +50,11 @@ importers: specifier: ^18.3.0 version: 18.3.0 eslint: - specifier: ^8.57.0 - version: 8.57.0 + specifier: ^9.9.1 + version: 9.9.1(jiti@1.21.0) eslint-plugin-react-hooks: - specifier: ^4.6.2 - version: 4.6.2(eslint@8.57.0) + specifier: ^5.1.0-rc-a19a8ab4-20240829 + version: 5.1.0-rc-fb9a90fa48-20240614(eslint@9.9.1(jiti@1.21.0)) glob: specifier: ^10.4.5 version: 10.4.5 @@ -63,7 +63,7 @@ importers: version: 25.0.0 nx: specifier: ^19.5.6 - version: 19.5.6(@swc/core@1.7.6) + version: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -1083,9 +1083,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@typescript-eslint/parser': - specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.0)(typescript@5.5.3) '@vitejs/plugin-react': specifier: ^4.3.1 version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) @@ -1123,12 +1120,6 @@ importers: autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.40) - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-react-app: - specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.25.2))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2))(eslint@8.57.0)(typescript@5.5.3) postcss: specifier: ^8.4.40 version: 8.4.40 @@ -1165,9 +1156,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@typescript-eslint/parser': - specifier: ^7.16.0 - version: 7.18.0(eslint@8.57.0)(typescript@5.5.3) '@vitejs/plugin-react': specifier: ^4.3.1 version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) @@ -1217,12 +1205,6 @@ importers: autoprefixer: specifier: ^10.4.19 version: 10.4.20(postcss@8.4.40) - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-react-app: - specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.25.2))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2))(eslint@8.57.0)(typescript@5.5.3) postcss: specifier: ^8.4.39 version: 8.4.40 @@ -1250,9 +1232,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@typescript-eslint/parser': - specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.0)(typescript@5.5.3) react: specifier: ^18.3.1 version: 18.3.1 @@ -1272,12 +1251,6 @@ importers: '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-react-app: - specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.25.2))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2))(eslint@8.57.0)(typescript@5.5.3) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -1311,9 +1284,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@typescript-eslint/parser': - specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.0)(typescript@5.5.3) '@vitejs/plugin-react': specifier: ^4.3.1 version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) @@ -1351,12 +1321,6 @@ importers: autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.40) - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-react-app: - specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.25.2))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2))(eslint@8.57.0)(typescript@5.5.3) postcss: specifier: ^8.4.40 version: 8.4.40 @@ -1415,12 +1379,6 @@ importers: autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.40) - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-react-app: - specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.25.2))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2))(eslint@8.57.0)(typescript@5.5.3) postcss: specifier: ^8.4.40 version: 8.4.40 @@ -1457,9 +1415,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@typescript-eslint/parser': - specifier: ^7.16.0 - version: 7.18.0(eslint@8.57.0)(typescript@5.5.3) '@vitejs/plugin-react': specifier: ^4.3.1 version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) @@ -1506,12 +1461,6 @@ importers: autoprefixer: specifier: ^10.4.19 version: 10.4.20(postcss@8.4.40) - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-react-app: - specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.25.2))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2))(eslint@8.57.0)(typescript@5.5.3) postcss: specifier: ^8.4.39 version: 8.4.40 @@ -1535,7 +1484,7 @@ importers: dependencies: '@convex-dev/react-query': specifier: 0.0.0-alpha.5 - version: 0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.13.2(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.13.2(eslint@9.9.1(jiti@1.21.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@tanstack/react-query': specifier: ^5.51.21 version: 5.51.21(react@18.3.1) @@ -1557,9 +1506,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@typescript-eslint/parser': - specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.0)(typescript@5.5.3) '@vitejs/plugin-react': specifier: ^4.3.1 version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) @@ -1568,7 +1514,7 @@ importers: version: 8.2.2 convex: specifier: ^1.13.2 - version: 1.13.2(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.13.2(eslint@9.9.1(jiti@1.21.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) isbot: specifier: ^5.1.14 version: 5.1.14 @@ -1612,12 +1558,6 @@ importers: autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.40) - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-react-app: - specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.25.2))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2))(eslint@8.57.0)(typescript@5.5.3) postcss: specifier: ^8.4.40 version: 8.4.40 @@ -1660,9 +1600,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@typescript-eslint/parser': - specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.0)(typescript@5.5.3) '@vitejs/plugin-react': specifier: ^4.3.1 version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) @@ -1709,12 +1646,6 @@ importers: autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.40) - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-react-app: - specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.25.2))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2))(eslint@8.57.0)(typescript@5.5.3) postcss: specifier: ^8.4.40 version: 8.4.40 @@ -2061,7 +1992,7 @@ importers: version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.93.0(@swc/core@1.7.6)(esbuild@0.21.5) + version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2262,62 +2193,14 @@ packages: resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} - '@babel/eslint-parser@7.24.5': - resolution: {integrity: sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': ^7.11.0 - eslint: ^8.57.0 - '@babel/generator@7.25.0': resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.24.7': - resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} - engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.2': resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.24.7': - resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.22.15': - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.6.2': - resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-environment-visitor@7.24.7': - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.24.7': - resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-hoist-variables@7.24.7': - resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.24.7': - resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} @@ -2328,38 +2211,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.24.7': - resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} - engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.24.7': resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.22.20': - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.24.7': - resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.24.7': resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.24.7': - resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} @@ -2372,10 +2231,6 @@ packages: resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.24.5': - resolution: {integrity: sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.0': resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} engines: {node: '>=6.9.0'} @@ -2389,8695 +2244,6740 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5': - resolution: {integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': - resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': - resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': - resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-class-properties@7.18.6': - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-decorators@7.24.1': - resolution: {integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==} + '@babel/plugin-syntax-typescript@7.24.7': + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + '@babel/plugin-transform-react-jsx-self@7.24.7': + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-numeric-separator@7.18.6': - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + '@babel/plugin-transform-react-jsx-source@7.24.7': + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-optional-chaining@7.21.0': - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + '@babel/runtime@7.23.5': + resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-private-methods@7.18.6': - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + '@babel/traverse@7.25.3': + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-private-property-in-object@7.21.11': - resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} + '@babel/types@7.25.2': + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@bundled-es-modules/cookie@2.0.0': + resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@bundled-es-modules/statuses@1.0.1': + resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@bundled-es-modules/tough-cookie@0.1.6': + resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} - '@babel/plugin-syntax-decorators@7.24.1': - resolution: {integrity: sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@clerk/backend@1.7.0-snapshot.vdf04997': + resolution: {integrity: sha512-yVKKF4H4pPXlH4xGuWhqQl8L8UfACQRyi6Bo0/n4SPI8xhfAUbI+xXgl+0ewa76ExdmAYqOpQ8Nokwf0LnYoaw==} + engines: {node: '>=18.17.0'} - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + '@clerk/clerk-react@5.4.2-snapshot.vdf04997': + resolution: {integrity: sha512-QiWbY5uvwI/90IdhKviotiPOSaezWSivoEotzh3gawlRtR+InLur1JTfRHqAonqq5WGejAet3R+3DKQrC0lw6Q==} + engines: {node: '>=18.17.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18 || >=19.0.0-beta' + react-dom: '>=18 || >=19.0.0-beta' - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + '@clerk/shared@2.5.2-snapshot.vdf04997': + resolution: {integrity: sha512-JokAhs1CcZ4UDQwJJCoSWPSqy/gUV7N8aRrgp4XkUiAiF7jeUrxvD4C9FNXjAlfn01utjmk3HuCQ1FyRMaB9Rg==} + engines: {node: '>=18.17.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18 || >=19.0.0-beta' + react-dom: '>=18 || >=19.0.0-beta' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true - '@babel/plugin-syntax-flow@7.24.6': - resolution: {integrity: sha512-gNkksSdV8RbsCoHF9sjVYrHfYACMl/8U32UfUhJ9+84/ASXw8dlx+eHyyF0m6ncQJ9IBSxfuCkB36GJqYdXTOA==} - engines: {node: '>=6.9.0'} + '@clerk/tanstack-start@0.3.0-snapshot.vdf04997': + resolution: {integrity: sha512-MR6uTPn2gUcQXd4iwVQnTz1C5IAPXbT96bRqjFyxqWWklmMCL55Z+AwqdkYWslRxrNjqWaS26VPZrZ3upOsMcg==} + engines: {node: '>=18.17.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@tanstack/react-router': workspace:* + '@tanstack/start': workspace:* + react: '>=18 || >=19.0.0-beta' + react-dom: '>=18 || >=19.0.0-beta' - '@babel/plugin-syntax-import-assertions@7.24.1': - resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@clerk/types@4.14.0-snapshot.vdf04997': + resolution: {integrity: sha512-X5OKm/AqWkdjPbTgP+0orYUB3Fa7Cky65LPhMN1Es5ATgQKxHgIfA5tetBdazqeK7kUL3eejSPQH/c03tksiaw==} + engines: {node: '>=18.17.0'} - '@babel/plugin-syntax-import-attributes@7.24.1': - resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@cloudflare/kv-asset-handler@0.3.2': + resolution: {integrity: sha512-EeEjMobfuJrwoctj7FA1y1KEbM0+Q1xSjobIEyie9k4haVEBB7vkDvsasw1pM3rO39mL2akxIAzLMUAtrMHZhA==} + engines: {node: '>=16.13'} - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@colors/colors@1.6.0': + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} - '@babel/plugin-syntax-jsx@7.24.7': - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@commitlint/parse@19.0.3': + resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} + engines: {node: '>=v18'} - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@commitlint/types@19.0.3': + resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} + engines: {node: '>=v18'} - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + '@convex-dev/react-query@0.0.0-alpha.5': + resolution: {integrity: sha512-/sd8fcEYit4UV5mM01j8ddeG9eBvlIxFkdRq2SR6l9XipIjgdhV+ybirHvr8iYZTdS4IejOk4t2iwzynOZSq8w==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@tanstack/react-query': ^5.0.0 + convex: ^1.13.0 - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@dabh/diagnostics@2.0.3': + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@deno/shim-deno-test@0.5.0': + resolution: {integrity: sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w==} - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@deno/shim-deno@0.19.1': + resolution: {integrity: sha512-8hYIpmDqpG76sn+UY1853RCi+CI7ZWz9tt37nfyDL8rwr6xbW0+GHUwCLcsGbh1uMIKURuJy6xtrIcnW+a0duA==} - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@discoveryjs/json-ext@0.5.7': + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emnapi/core@1.2.0': + resolution: {integrity: sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==} - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emnapi/runtime@1.2.0': + resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} - '@babel/plugin-syntax-typescript@7.24.7': - resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emnapi/wasi-threads@1.0.1': + resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@emotion/is-prop-valid@0.8.8': + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} - '@babel/plugin-transform-arrow-functions@7.24.1': - resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/memoize@0.7.4': + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} - '@babel/plugin-transform-async-generator-functions@7.24.3': - resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] - '@babel/plugin-transform-async-to-generator@7.24.1': - resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] - '@babel/plugin-transform-block-scoped-functions@7.24.1': - resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] - '@babel/plugin-transform-block-scoping@7.24.5': - resolution: {integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] - '@babel/plugin-transform-class-properties@7.24.1': - resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] - '@babel/plugin-transform-class-static-block@7.24.4': - resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] - '@babel/plugin-transform-classes@7.24.5': - resolution: {integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] - '@babel/plugin-transform-computed-properties@7.24.1': - resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] - '@babel/plugin-transform-destructuring@7.24.5': - resolution: {integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] - '@babel/plugin-transform-dotall-regex@7.24.1': - resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] - '@babel/plugin-transform-duplicate-keys@7.24.1': - resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] - '@babel/plugin-transform-dynamic-import@7.24.1': - resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] - '@babel/plugin-transform-exponentiation-operator@7.24.1': - resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] - '@babel/plugin-transform-export-namespace-from@7.24.1': - resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] - '@babel/plugin-transform-flow-strip-types@7.24.1': - resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] - '@babel/plugin-transform-for-of@7.24.1': - resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] - '@babel/plugin-transform-function-name@7.24.1': - resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] - '@babel/plugin-transform-json-strings@7.24.1': - resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] - '@babel/plugin-transform-literals@7.24.1': - resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] - '@babel/plugin-transform-logical-assignment-operators@7.24.1': - resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] - '@babel/plugin-transform-member-expression-literals@7.24.1': - resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] - '@babel/plugin-transform-modules-amd@7.24.1': - resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] - '@babel/plugin-transform-modules-commonjs@7.24.1': - resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] - '@babel/plugin-transform-modules-systemjs@7.24.1': - resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] - '@babel/plugin-transform-modules-umd@7.24.1': - resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] - '@babel/plugin-transform-new-target@7.24.1': - resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': - resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] - '@babel/plugin-transform-numeric-separator@7.24.1': - resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] - '@babel/plugin-transform-object-rest-spread@7.24.5': - resolution: {integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] - '@babel/plugin-transform-object-super@7.24.1': - resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] - '@babel/plugin-transform-optional-catch-binding@7.24.1': - resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] - '@babel/plugin-transform-optional-chaining@7.24.5': - resolution: {integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] - '@babel/plugin-transform-parameters@7.24.5': - resolution: {integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] - '@babel/plugin-transform-private-methods@7.24.1': - resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] - '@babel/plugin-transform-private-property-in-object@7.24.5': - resolution: {integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] - '@babel/plugin-transform-property-literals@7.24.1': - resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] - '@babel/plugin-transform-react-display-name@7.24.1': - resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-development@7.22.5': - resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] - '@babel/plugin-transform-react-jsx-self@7.24.7': - resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] - '@babel/plugin-transform-react-jsx-source@7.24.7': - resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] - '@babel/plugin-transform-react-jsx@7.24.7': - resolution: {integrity: sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] - '@babel/plugin-transform-react-pure-annotations@7.24.1': - resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] - '@babel/plugin-transform-regenerator@7.24.1': - resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] - '@babel/plugin-transform-reserved-words@7.24.1': - resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] - '@babel/plugin-transform-runtime@7.24.3': - resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] - '@babel/plugin-transform-shorthand-properties@7.24.1': - resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] - '@babel/plugin-transform-spread@7.24.1': - resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] - '@babel/plugin-transform-sticky-regex@7.24.1': - resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] - '@babel/plugin-transform-template-literals@7.24.1': - resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] - '@babel/plugin-transform-typeof-symbol@7.24.5': - resolution: {integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] - '@babel/plugin-transform-typescript@7.24.7': - resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] - '@babel/plugin-transform-unicode-escapes@7.24.1': - resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] - '@babel/plugin-transform-unicode-property-regex@7.24.1': - resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] - '@babel/plugin-transform-unicode-regex@7.24.1': - resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] - '@babel/plugin-transform-unicode-sets-regex@7.24.1': - resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] - '@babel/preset-env@7.24.5': - resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] - '@babel/preset-react@7.24.1': - resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] - '@babel/preset-typescript@7.24.1': - resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] - '@babel/regjsgen@0.8.0': - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] - '@babel/runtime@7.23.5': - resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} - engines: {node: '>=6.9.0'} + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} - engines: {node: '>=6.9.0'} + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] - '@babel/traverse@7.25.3': - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} - engines: {node: '>=6.9.0'} + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] - '@babel/types@7.25.2': - resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} - engines: {node: '>=6.9.0'} + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] - '@bundled-es-modules/cookie@2.0.0': - resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] - '@bundled-es-modules/statuses@1.0.1': - resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] - '@bundled-es-modules/tough-cookie@0.1.6': - resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] - '@clerk/backend@1.7.0-snapshot.vdf04997': - resolution: {integrity: sha512-yVKKF4H4pPXlH4xGuWhqQl8L8UfACQRyi6Bo0/n4SPI8xhfAUbI+xXgl+0ewa76ExdmAYqOpQ8Nokwf0LnYoaw==} - engines: {node: '>=18.17.0'} + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] - '@clerk/clerk-react@5.4.2-snapshot.vdf04997': - resolution: {integrity: sha512-QiWbY5uvwI/90IdhKviotiPOSaezWSivoEotzh3gawlRtR+InLur1JTfRHqAonqq5WGejAet3R+3DKQrC0lw6Q==} - engines: {node: '>=18.17.0'} + '@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: - react: '>=18 || >=19.0.0-beta' - react-dom: '>=18 || >=19.0.0-beta' + eslint: ^9.9.1 - '@clerk/shared@2.5.2-snapshot.vdf04997': - resolution: {integrity: sha512-JokAhs1CcZ4UDQwJJCoSWPSqy/gUV7N8aRrgp4XkUiAiF7jeUrxvD4C9FNXjAlfn01utjmk3HuCQ1FyRMaB9Rg==} - engines: {node: '>=18.17.0'} + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint-react/ast@1.12.3': + resolution: {integrity: sha512-3uRe9EBiaLpyzHKyhvm4ZXGo3h+hp9kvhRBE6mjU5up2RmUkD4qtaTVwKoHrYECADNSvzBtwHH2URARXKQ7oHg==} + + '@eslint-react/core@1.12.3': + resolution: {integrity: sha512-MKwkzrgouFyxdI01GzHY1iifK0KPeGnThqHiRc+IGk+Dgg/8Rq2T0glUx+15J10hRbIg1bl4Cja12R/dv4R9jA==} + + '@eslint-react/eslint-plugin@1.12.3': + resolution: {integrity: sha512-S9Y3mdvbZLKH5ah1LHvAiSd9tc8ijzKjAENMPvfW5WWzyfs6+oRfUrmlrJS3u4k16Fi6zweIlV5hk7gjaFWniQ==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - react: '>=18 || >=19.0.0-beta' - react-dom: '>=18 || >=19.0.0-beta' + eslint: ^9.9.1 + typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: - react: - optional: true - react-dom: + typescript: optional: true - '@clerk/tanstack-start@0.3.0-snapshot.vdf04997': - resolution: {integrity: sha512-MR6uTPn2gUcQXd4iwVQnTz1C5IAPXbT96bRqjFyxqWWklmMCL55Z+AwqdkYWslRxrNjqWaS26VPZrZ3upOsMcg==} - engines: {node: '>=18.17.0'} - peerDependencies: - '@tanstack/react-router': workspace:* - '@tanstack/start': workspace:* - react: '>=18 || >=19.0.0-beta' - react-dom: '>=18 || >=19.0.0-beta' + '@eslint-react/jsx@1.12.3': + resolution: {integrity: sha512-aKuJRjcwEPUbeAXu7VLKICFeVZk/NhbeQIwIRdjw0JAmfNtEO5QD2wqWDZLCb4+f1moR2W3+QD8e9t0opo70QQ==} - '@clerk/types@4.14.0-snapshot.vdf04997': - resolution: {integrity: sha512-X5OKm/AqWkdjPbTgP+0orYUB3Fa7Cky65LPhMN1Es5ATgQKxHgIfA5tetBdazqeK7kUL3eejSPQH/c03tksiaw==} - engines: {node: '>=18.17.0'} + '@eslint-react/shared@1.12.3': + resolution: {integrity: sha512-4zBS9ISXbb/1OM6W0x5FH2Bu2+ULmfWLQRGc3GFcWiIcHMVBB4bQGK8CsYAcxSIUxaERh3PgPKMx4aZDwBNIhQ==} - '@cloudflare/kv-asset-handler@0.3.2': - resolution: {integrity: sha512-EeEjMobfuJrwoctj7FA1y1KEbM0+Q1xSjobIEyie9k4haVEBB7vkDvsasw1pM3rO39mL2akxIAzLMUAtrMHZhA==} - engines: {node: '>=16.13'} + '@eslint-react/tools@1.12.3': + resolution: {integrity: sha512-Q5HRbzY0lkJwdeatPkFsPgmBhP9KPGaVxtRKazsGcCO3edg2wTJP0C8khw2fplaIAce+Tj3I3YasUlp1uKQeCw==} - '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} + '@eslint-react/types@1.12.3': + resolution: {integrity: sha512-Ph6vXLz/NDeGE0/EvDTfWOrqtlE/qLcMhITCdt+ynGOP0HtRn1E8jrEZ0zTH6ri8wng6tlSHEPDnsZMNwe4hOg==} - '@colors/colors@1.6.0': - resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} - engines: {node: '>=0.1.90'} + '@eslint-react/var@1.12.3': + resolution: {integrity: sha512-K9lBA5Ap3bFfH2OxcpZYyK7HieWmJOtyjAmvC2E2StsPcQlBci+ID82xQEqrPvdL1qdRYWKpSzvSd8Xu4cJf/w==} - '@commitlint/parse@19.0.3': - resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} - engines: {node: '>=v18'} + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@commitlint/types@19.0.3': - resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} - engines: {node: '>=v18'} + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@convex-dev/react-query@0.0.0-alpha.5': - resolution: {integrity: sha512-/sd8fcEYit4UV5mM01j8ddeG9eBvlIxFkdRq2SR6l9XipIjgdhV+ybirHvr8iYZTdS4IejOk4t2iwzynOZSq8w==} - peerDependencies: - '@tanstack/react-query': ^5.0.0 - convex: ^1.13.0 + '@eslint/js@9.9.1': + resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@dabh/diagnostics@2.0.3': - resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@deno/shim-deno-test@0.5.0': - resolution: {integrity: sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w==} + '@fastify/busboy@2.1.0': + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} - '@deno/shim-deno@0.19.1': - resolution: {integrity: sha512-8hYIpmDqpG76sn+UY1853RCi+CI7ZWz9tt37nfyDL8rwr6xbW0+GHUwCLcsGbh1uMIKURuJy6xtrIcnW+a0duA==} + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} - '@discoveryjs/json-ext@0.5.7': - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} - '@emnapi/core@1.2.0': - resolution: {integrity: sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==} + '@inquirer/confirm@3.1.10': + resolution: {integrity: sha512-/aAHu83Njy6yf44T+ZrRPUkMcUqprrOiIKsyMvf9jOV+vF5BNb2ja1aLP33MK36W8eaf91MTL/mU/e6METuENg==} + engines: {node: '>=18'} - '@emnapi/runtime@1.2.0': - resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + '@inquirer/core@8.2.3': + resolution: {integrity: sha512-WrpDVPAaxJQjHid3Ra4FhUO70YBzkHSYVyW5X48L5zHYdudoPISJqTRRWSeamHfaXda7PNNaC5Py5MEo7QwBNA==} + engines: {node: '>=18'} - '@emnapi/wasi-threads@1.0.1': - resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + '@inquirer/figures@1.0.3': + resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==} + engines: {node: '>=18'} - '@emotion/is-prop-valid@0.8.8': - resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + '@inquirer/type@1.3.3': + resolution: {integrity: sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==} + engines: {node: '>=18'} - '@emotion/memoize@0.7.4': - resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + '@ioredis/commands@1.2.0': + resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@esbuild/android-arm64@0.17.19': - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] + '@jridgewell/resolve-uri@3.1.1': + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} - '@esbuild/android-arm@0.17.19': - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - '@esbuild/android-arm@0.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@esbuild/android-x64@0.17.19': - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] + '@jsonjoy.com/base64@1.1.2': + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] + '@jsonjoy.com/json-pack@1.0.4': + resolution: {integrity: sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] + '@jsonjoy.com/util@1.2.0': + resolution: {integrity: sha512-4B8B+3vFsY4eo33DMKyJPlQ3sBMpPFUZK2dr3O3rXrOGKKbYG44J0XSFkDo1VOQiri5HFEhIeVvItjR2xcazmg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' - '@esbuild/darwin-arm64@0.17.19': - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + '@kwsites/file-exists@1.1.1': + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + '@kwsites/promise-deferred@1.1.1': + resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@esbuild/darwin-x64@0.17.19': - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] + '@mapbox/node-pre-gyp@1.0.11': + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] + '@microsoft/api-extractor-model@7.29.4': + resolution: {integrity: sha512-LHOMxmT8/tU1IiiiHOdHFF83Qsi+V8d0kLfscG4EvQE9cafiR8blOYr8SfkQKWB1wgEilQgXJX3MIA4vetDLZw==} - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] + '@microsoft/api-extractor@7.47.4': + resolution: {integrity: sha512-HKm+P4VNzWwvq1Ey+Jfhhj/3MjsD+ka2hbt8L5AcRM95lu1MFOYnz3XlU7Gr79Q/ZhOb7W/imAKeYrOI0bFydg==} + hasBin: true - '@esbuild/freebsd-arm64@0.17.19': - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] + '@microsoft/tsdoc-config@0.17.0': + resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] + '@microsoft/tsdoc@0.15.0': + resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} + '@module-federation/runtime-tools@0.5.1': + resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} + + '@module-federation/runtime@0.5.1': + resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==} + + '@module-federation/sdk@0.5.1': + resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==} + + '@module-federation/webpack-bundler-runtime@0.5.1': + resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==} + + '@mswjs/interceptors@0.27.2': + resolution: {integrity: sha512-mE6PhwcoW70EX8+h+Y/4dLfHk33GFt/y5PzDJz56ktMyaVGFXMJ5BYLbUjdmGEABfE0x5GgAGyKbrbkYww2s3A==} + engines: {node: '>=18'} + + '@mswjs/interceptors@0.29.1': + resolution: {integrity: sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw==} + engines: {node: '>=18'} + + '@napi-rs/snappy-android-arm-eabi@7.2.2': + resolution: {integrity: sha512-H7DuVkPCK5BlAr1NfSU8bDEN7gYs+R78pSHhDng83QxRnCLmVIZk33ymmIwurmoA1HrdTxbkbuNl+lMvNqnytw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@napi-rs/snappy-android-arm64@7.2.2': + resolution: {integrity: sha512-2R/A3qok+nGtpVK8oUMcrIi5OMDckGYNoBLFyli3zp8w6IArPRfg1yOfVUcHvpUDTo9T7LOS1fXgMOoC796eQw==} + engines: {node: '>= 10'} cpu: [arm64] - os: [freebsd] + os: [android] - '@esbuild/freebsd-x64@0.17.19': - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] + '@napi-rs/snappy-darwin-arm64@7.2.2': + resolution: {integrity: sha512-USgArHbfrmdbuq33bD5ssbkPIoT7YCXCRLmZpDS6dMDrx+iM7eD2BecNbOOo7/v1eu6TRmQ0xOzeQ6I/9FIi5g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} - engines: {node: '>=12'} + '@napi-rs/snappy-darwin-x64@7.2.2': + resolution: {integrity: sha512-0APDu8iO5iT0IJKblk2lH0VpWSl9zOZndZKnBYIc+ei1npw2L5QvuErFOTeTdHBtzvUHASB+9bvgaWnQo4PvTQ==} + engines: {node: '>= 10'} cpu: [x64] - os: [freebsd] + os: [darwin] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} + '@napi-rs/snappy-freebsd-x64@7.2.2': + resolution: {integrity: sha512-mRTCJsuzy0o/B0Hnp9CwNB5V6cOJ4wedDTWEthsdKHSsQlO7WU9W1yP7H3Qv3Ccp/ZfMyrmG98Ad7u7lG58WXA==} + engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.17.19': - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} - engines: {node: '>=12'} - cpu: [arm64] + '@napi-rs/snappy-linux-arm-gnueabihf@7.2.2': + resolution: {integrity: sha512-v1uzm8+6uYjasBPcFkv90VLZ+WhLzr/tnfkZ/iD9mHYiULqkqpRuC8zvc3FZaJy5wLQE9zTDkTJN1IvUcZ+Vcg==} + engines: {node: '>= 10'} + cpu: [arm] os: [linux] - '@esbuild/linux-arm64@0.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} - engines: {node: '>=12'} + '@napi-rs/snappy-linux-arm64-gnu@7.2.2': + resolution: {integrity: sha512-LrEMa5pBScs4GXWOn6ZYXfQ72IzoolZw5txqUHVGs8eK4g1HR9HTHhb2oY5ySNaKakG5sOgMsb1rwaEnjhChmQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} + '@napi-rs/snappy-linux-arm64-musl@7.2.2': + resolution: {integrity: sha512-3orWZo9hUpGQcB+3aTLW7UFDqNCQfbr0+MvV67x8nMNYj5eAeUtMmUE/HxLznHO4eZ1qSqiTwLbVx05/Socdlw==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.17.19': - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} - engines: {node: '>=12'} - cpu: [arm] + '@napi-rs/snappy-linux-x64-gnu@7.2.2': + resolution: {integrity: sha512-jZt8Jit/HHDcavt80zxEkDpH+R1Ic0ssiVCoueASzMXa7vwPJeF4ZxZyqUw4qeSy7n8UUExomu8G8ZbP6VKhgw==} + engines: {node: '>= 10'} + cpu: [x64] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] + '@napi-rs/snappy-linux-x64-musl@7.2.2': + resolution: {integrity: sha512-Dh96IXgcZrV39a+Tej/owcd9vr5ihiZ3KRix11rr1v0MWtVb61+H1GXXlz6+Zcx9y8jM1NmOuiIuJwkV4vZ4WA==} + engines: {node: '>= 10'} + cpu: [x64] os: [linux] - '@esbuild/linux-ia32@0.17.19': - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] + '@napi-rs/snappy-win32-arm64-msvc@7.2.2': + resolution: {integrity: sha512-9No0b3xGbHSWv2wtLEn3MO76Yopn1U2TdemZpCaEgOGccz1V+a/1d16Piz3ofSmnA13HGFz3h9NwZH9EOaIgYA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} - engines: {node: '>=12'} + '@napi-rs/snappy-win32-ia32-msvc@7.2.2': + resolution: {integrity: sha512-QiGe+0G86J74Qz1JcHtBwM3OYdTni1hX1PFyLRo3HhQUSpmi13Bzc1En7APn+6Pvo7gkrcy81dObGLDSxFAkQQ==} + engines: {node: '>= 10'} cpu: [ia32] - os: [linux] + os: [win32] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] + '@napi-rs/snappy-win32-x64-msvc@7.2.2': + resolution: {integrity: sha512-a43cyx1nK0daw6BZxVcvDEXxKMFLSBSDTAhsFD0VqSKcC7MGUBMaqyoWUcMiI7LBSz4bxUmxDWKfCYzpEmeb3w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] - '@esbuild/linux-loong64@0.17.19': - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] + '@napi-rs/wasm-runtime@0.2.4': + resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] + '@netlify/functions@2.6.3': + resolution: {integrity: sha512-7Z9gWyAuPI2NnBOvpYPD66KIWOgNznLz9BkyZ0c7qeRE6p23UCMVZ2VsrJpjPDgoJtKplGSBzASl6fQD7iEeWw==} + engines: {node: '>=14.0.0'} - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] + '@netlify/node-cookies@0.1.0': + resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} + engines: {node: ^14.16.0 || >=16.0.0} - '@esbuild/linux-mips64el@0.17.19': - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] + '@netlify/serverless-functions-api@1.18.0': + resolution: {integrity: sha512-VCU5btoGZ8M6iI7HSwpfZXCpBLKWFmRtq5xYt0K7dY96BZWVBmaZY6Tn+w4L2DrGXwAsIeOFNp8CHjVXfuCAkg==} + engines: {node: '>=18.0.0'} - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} - '@esbuild/linux-ppc64@0.17.19': - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] + '@nrwl/tao@19.5.6': + resolution: {integrity: sha512-p1bxEjW32bIHAiTp+PVdJpa2V9En2s9FigepHXyvmT2Aipisz96CKiDjexhPTjOZHUKtqA9FgmOIuVl3sBME3g==} + hasBin: true - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] + '@nx/nx-darwin-arm64@19.5.6': + resolution: {integrity: sha512-evEpUq571PQkhaLBR7ul5iqE2l97QS7Q37/rxoBuwJzyQ/QKHfNu5t032bR3KLyEOrv7golT10jMeoQlNeF7eQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] - '@esbuild/linux-riscv64@0.17.19': - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] + '@nx/nx-darwin-x64@19.5.6': + resolution: {integrity: sha512-o1tu0dOW7TZ80VN9N11FQL/3gHd1+t6NqtEmRClN0/sAh2MZyiBdbXv7UeN5HoKE7HAusiVFIxK3c1lxOvFtsQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] + '@nx/nx-freebsd-x64@19.5.6': + resolution: {integrity: sha512-IUL0ROGpLUol9cuVJ7VeUvaB/ptxg7DOjMef1+LJeOgxl/SFNa0bj0kKpA/AQwujz6cLI7Ei7xLTVQOboNh1DA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] + '@nx/nx-linux-arm-gnueabihf@19.5.6': + resolution: {integrity: sha512-TGf1+cpWg5QiPEGW5kgxa1fVNyASMuqu+LvQ9CKhNYNz5EPD15yr/k6C0tOjgSXro3wi8TikTeG0Ln2hpmn6pw==} + engines: {node: '>= 10'} + cpu: [arm] os: [linux] - '@esbuild/linux-s390x@0.17.19': - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} - engines: {node: '>=12'} - cpu: [s390x] + '@nx/nx-linux-arm64-gnu@19.5.6': + resolution: {integrity: sha512-4hZI5NmnBEAzr3NV/BtlPjbSVffLWGGCJ5tB/JB/NpW/vMtzOPCZ4RvsHuJMPprqHcXOdUnBgZFEcLbEMUXz0A==} + engines: {node: '>= 10'} + cpu: [arm64] os: [linux] - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} - engines: {node: '>=12'} - cpu: [s390x] + '@nx/nx-linux-arm64-musl@19.5.6': + resolution: {integrity: sha512-n0oIBblMN+nlcBUbrFUkRSyzKZVR+G1lzdZ3PuHVwLC664hkbijEBAdF2E321yRfv5ohQVY0UIYDZVFN2XhFUg==} + engines: {node: '>= 10'} + cpu: [arm64] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] + '@nx/nx-linux-x64-gnu@19.5.6': + resolution: {integrity: sha512-IuoNo1bDHyJEeHom/n2m4+AA+UQ+Rlryvt9+bTdADclSFjmBLYCgbJwQRy7q9+vQk2mpQm0pQJv4d3XKCpDH+g==} + engines: {node: '>= 10'} + cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.17.19': - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} - engines: {node: '>=12'} + '@nx/nx-linux-x64-musl@19.5.6': + resolution: {integrity: sha512-FXtB8m/CSRkXLtDOAGfImO9OCUDIwYBssnvCVqX6PyPTBaVWo/GvX1O9WRbXSqSVIaJJTPn1aY/p6vptlGbDFw==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.17.19': - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} - 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/openbsd-x64@0.17.19': - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.17.19': - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} - 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/win32-arm64@0.17.19': - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} - engines: {node: '>=12'} + '@nx/nx-win32-arm64-msvc@19.5.6': + resolution: {integrity: sha512-aIDU84rjvxoqyUDIdN4VwS91Yec8bAtXOxjOFlF2acY2tXh0RjzmM+mkEP44nVAzFy0V1/cjzBKb6643FsEqdA==} + engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} - engines: {node: '>=12'} - cpu: [arm64] + '@nx/nx-win32-x64-msvc@19.5.6': + resolution: {integrity: sha512-zWB/2TjhNYKHbuPh++5hYitno3EpSFXrPND0I0VLec27WW7voRY9XQFFznA3omForU4FfmVhITcKCqzIb3EtpA==} + engines: {node: '>= 10'} + cpu: [x64] os: [win32] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] + '@open-draft/deferred-promise@2.2.0': + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} - '@esbuild/win32-ia32@0.17.19': - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] + '@open-draft/logger@0.3.0': + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] + '@open-draft/until@2.1.0': + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] + '@opentelemetry/api-logs@0.50.0': + resolution: {integrity: sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==} + engines: {node: '>=14'} - '@esbuild/win32-x64@0.17.19': - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] + '@opentelemetry/api@1.8.0': + resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==} + engines: {node: '>=8.0.0'} - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] + '@opentelemetry/core@1.23.0': + resolution: {integrity: sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] + '@opentelemetry/core@1.24.1': + resolution: {integrity: sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@opentelemetry/otlp-transformer@0.50.0': + resolution: {integrity: sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==} + engines: {node: '>=14'} peerDependencies: - eslint: ^8.57.0 + '@opentelemetry/api': '>=1.3.0 <1.9.0' - '@eslint-community/regexpp@4.11.0': - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@opentelemetry/resources@1.23.0': + resolution: {integrity: sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' - '@eslint-react/ast@1.12.3': - resolution: {integrity: sha512-3uRe9EBiaLpyzHKyhvm4ZXGo3h+hp9kvhRBE6mjU5up2RmUkD4qtaTVwKoHrYECADNSvzBtwHH2URARXKQ7oHg==} + '@opentelemetry/resources@1.24.1': + resolution: {integrity: sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' - '@eslint-react/core@1.12.3': - resolution: {integrity: sha512-MKwkzrgouFyxdI01GzHY1iifK0KPeGnThqHiRc+IGk+Dgg/8Rq2T0glUx+15J10hRbIg1bl4Cja12R/dv4R9jA==} + '@opentelemetry/sdk-logs@0.50.0': + resolution: {integrity: sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.9.0' + '@opentelemetry/api-logs': '>=0.39.1' - '@eslint-react/eslint-plugin@1.12.3': - resolution: {integrity: sha512-S9Y3mdvbZLKH5ah1LHvAiSd9tc8ijzKjAENMPvfW5WWzyfs6+oRfUrmlrJS3u4k16Fi6zweIlV5hk7gjaFWniQ==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + '@opentelemetry/sdk-metrics@1.23.0': + resolution: {integrity: sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==} + engines: {node: '>=14'} peerDependencies: - eslint: ^8.57.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + '@opentelemetry/api': '>=1.3.0 <1.9.0' - '@eslint-react/jsx@1.12.3': - resolution: {integrity: sha512-aKuJRjcwEPUbeAXu7VLKICFeVZk/NhbeQIwIRdjw0JAmfNtEO5QD2wqWDZLCb4+f1moR2W3+QD8e9t0opo70QQ==} + '@opentelemetry/sdk-trace-base@1.23.0': + resolution: {integrity: sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' - '@eslint-react/shared@1.12.3': - resolution: {integrity: sha512-4zBS9ISXbb/1OM6W0x5FH2Bu2+ULmfWLQRGc3GFcWiIcHMVBB4bQGK8CsYAcxSIUxaERh3PgPKMx4aZDwBNIhQ==} + '@opentelemetry/sdk-trace-base@1.24.1': + resolution: {integrity: sha512-zz+N423IcySgjihl2NfjBf0qw1RWe11XIAWVrTNOSSI6dtSPJiVom2zipFB2AEEtJWpv0Iz6DY6+TjnyTV5pWg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' - '@eslint-react/tools@1.12.3': - resolution: {integrity: sha512-Q5HRbzY0lkJwdeatPkFsPgmBhP9KPGaVxtRKazsGcCO3edg2wTJP0C8khw2fplaIAce+Tj3I3YasUlp1uKQeCw==} + '@opentelemetry/semantic-conventions@1.23.0': + resolution: {integrity: sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==} + engines: {node: '>=14'} - '@eslint-react/types@1.12.3': - resolution: {integrity: sha512-Ph6vXLz/NDeGE0/EvDTfWOrqtlE/qLcMhITCdt+ynGOP0HtRn1E8jrEZ0zTH6ri8wng6tlSHEPDnsZMNwe4hOg==} + '@opentelemetry/semantic-conventions@1.24.1': + resolution: {integrity: sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==} + engines: {node: '>=14'} - '@eslint-react/var@1.12.3': - resolution: {integrity: sha512-K9lBA5Ap3bFfH2OxcpZYyK7HieWmJOtyjAmvC2E2StsPcQlBci+ID82xQEqrPvdL1qdRYWKpSzvSd8Xu4cJf/w==} + '@parcel/watcher-android-arm64@2.4.1': + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@parcel/watcher-darwin-arm64@2.4.1': + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@parcel/watcher-darwin-x64@2.4.1': + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] - '@fastify/busboy@2.1.0': - resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} - engines: {node: '>=14'} + '@parcel/watcher-freebsd-x64@2.4.1': + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@parcel/watcher-linux-arm-glibc@2.4.1': + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} + '@parcel/watcher-linux-arm64-glibc@2.4.1': + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] - '@humanwhocodes/object-schema@2.0.2': - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} - deprecated: Use @eslint/object-schema instead + '@parcel/watcher-linux-arm64-musl@2.4.1': + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] - '@inquirer/confirm@3.1.10': - resolution: {integrity: sha512-/aAHu83Njy6yf44T+ZrRPUkMcUqprrOiIKsyMvf9jOV+vF5BNb2ja1aLP33MK36W8eaf91MTL/mU/e6METuENg==} - engines: {node: '>=18'} + '@parcel/watcher-linux-x64-glibc@2.4.1': + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] - '@inquirer/core@8.2.3': - resolution: {integrity: sha512-WrpDVPAaxJQjHid3Ra4FhUO70YBzkHSYVyW5X48L5zHYdudoPISJqTRRWSeamHfaXda7PNNaC5Py5MEo7QwBNA==} - engines: {node: '>=18'} - - '@inquirer/figures@1.0.3': - resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==} - engines: {node: '>=18'} - - '@inquirer/type@1.3.3': - resolution: {integrity: sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==} - engines: {node: '>=18'} - - '@ioredis/commands@1.2.0': - resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} + '@parcel/watcher-linux-x64-musl@2.4.1': + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@parcel/watcher-wasm@2.3.0': + resolution: {integrity: sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==} + engines: {node: '>= 10.0.0'} + bundledDependencies: + - napi-wasm - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} + '@parcel/watcher-wasm@2.4.1': + resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} + engines: {node: '>= 10.0.0'} + bundledDependencies: + - napi-wasm - '@jridgewell/resolve-uri@3.1.1': - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} + '@parcel/watcher-win32-arm64@2.4.1': + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@parcel/watcher-win32-ia32@2.4.1': + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@parcel/watcher-win32-x64@2.4.1': + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@parcel/watcher@2.4.1': + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} - '@jsonjoy.com/base64@1.1.2': - resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' + '@playwright/test@1.46.1': + resolution: {integrity: sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==} + engines: {node: '>=18'} + hasBin: true - '@jsonjoy.com/json-pack@1.0.4': - resolution: {integrity: sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==} - engines: {node: '>=10.0'} + '@prisma/client@5.17.0': + resolution: {integrity: sha512-N2tnyKayT0Zf7mHjwEyE8iG7FwTmXDHFZ1GnNhQp0pJUObsuel4ZZ1XwfuAYkq5mRIiC/Kot0kt0tGCfLJ70Jw==} + engines: {node: '>=16.13'} peerDependencies: - tslib: '2' + prisma: '*' + peerDependenciesMeta: + prisma: + optional: true - '@jsonjoy.com/util@1.2.0': - resolution: {integrity: sha512-4B8B+3vFsY4eo33DMKyJPlQ3sBMpPFUZK2dr3O3rXrOGKKbYG44J0XSFkDo1VOQiri5HFEhIeVvItjR2xcazmg==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' + '@prisma/debug@5.18.0': + resolution: {integrity: sha512-f+ZvpTLidSo3LMJxQPVgAxdAjzv5OpzAo/eF8qZqbwvgi2F5cTOI9XCpdRzJYA0iGfajjwjOKKrVq64vkxEfUw==} - '@kwsites/file-exists@1.1.1': - resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + '@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169': + resolution: {integrity: sha512-a/+LpJj8vYU3nmtkg+N3X51ddbt35yYrRe8wqHTJtYQt7l1f8kjIBcCs6sHJvodW/EK5XGvboOiwm47fmNrbgg==} - '@kwsites/promise-deferred@1.1.1': - resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + '@prisma/engines@5.18.0': + resolution: {integrity: sha512-ofmpGLeJ2q2P0wa/XaEgTnX/IsLnvSp/gZts0zjgLNdBhfuj2lowOOPmDcfKljLQUXMvAek3lw5T01kHmCG8rg==} - '@leichtgewicht/ip-codec@2.0.5': - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + '@prisma/fetch-engine@5.18.0': + resolution: {integrity: sha512-I/3u0x2n31rGaAuBRx2YK4eB7R/1zCuayo2DGwSpGyrJWsZesrV7QVw7ND0/Suxeo/vLkJ5OwuBqHoCxvTHpOg==} - '@mapbox/node-pre-gyp@1.0.11': - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true + '@prisma/get-platform@5.18.0': + resolution: {integrity: sha512-Tk+m7+uhqcKDgnMnFN0lRiH7Ewea0OEsZZs9pqXa7i3+7svS3FSCqDBCaM9x5fmhhkufiG0BtunJVDka+46DlA==} - '@microsoft/api-extractor-model@7.29.4': - resolution: {integrity: sha512-LHOMxmT8/tU1IiiiHOdHFF83Qsi+V8d0kLfscG4EvQE9cafiR8blOYr8SfkQKWB1wgEilQgXJX3MIA4vetDLZw==} + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - '@microsoft/api-extractor@7.47.4': - resolution: {integrity: sha512-HKm+P4VNzWwvq1Ey+Jfhhj/3MjsD+ka2hbt8L5AcRM95lu1MFOYnz3XlU7Gr79Q/ZhOb7W/imAKeYrOI0bFydg==} - hasBin: true + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - '@microsoft/tsdoc-config@0.17.0': - resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - '@microsoft/tsdoc@0.15.0': - resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - '@module-federation/runtime-tools@0.5.1': - resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - '@module-federation/runtime@0.5.1': - resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==} + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - '@module-federation/sdk@0.5.1': - resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==} + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - '@module-federation/webpack-bundler-runtime@0.5.1': - resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==} + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - '@mswjs/interceptors@0.27.2': - resolution: {integrity: sha512-mE6PhwcoW70EX8+h+Y/4dLfHk33GFt/y5PzDJz56ktMyaVGFXMJ5BYLbUjdmGEABfE0x5GgAGyKbrbkYww2s3A==} - engines: {node: '>=18'} + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - '@mswjs/interceptors@0.29.1': - resolution: {integrity: sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw==} - engines: {node: '>=18'} + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@napi-rs/snappy-android-arm-eabi@7.2.2': - resolution: {integrity: sha512-H7DuVkPCK5BlAr1NfSU8bDEN7gYs+R78pSHhDng83QxRnCLmVIZk33ymmIwurmoA1HrdTxbkbuNl+lMvNqnytw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [android] + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - '@napi-rs/snappy-android-arm64@7.2.2': - resolution: {integrity: sha512-2R/A3qok+nGtpVK8oUMcrIi5OMDckGYNoBLFyli3zp8w6IArPRfg1yOfVUcHvpUDTo9T7LOS1fXgMOoC796eQw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@napi-rs/snappy-darwin-arm64@7.2.2': - resolution: {integrity: sha512-USgArHbfrmdbuq33bD5ssbkPIoT7YCXCRLmZpDS6dMDrx+iM7eD2BecNbOOo7/v1eu6TRmQ0xOzeQ6I/9FIi5g==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@napi-rs/snappy-darwin-x64@7.2.2': - resolution: {integrity: sha512-0APDu8iO5iT0IJKblk2lH0VpWSl9zOZndZKnBYIc+ei1npw2L5QvuErFOTeTdHBtzvUHASB+9bvgaWnQo4PvTQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] + '@radix-ui/react-dialog@1.1.1': + resolution: {integrity: sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@napi-rs/snappy-freebsd-x64@7.2.2': - resolution: {integrity: sha512-mRTCJsuzy0o/B0Hnp9CwNB5V6cOJ4wedDTWEthsdKHSsQlO7WU9W1yP7H3Qv3Ccp/ZfMyrmG98Ad7u7lG58WXA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] + '@radix-ui/react-dismissable-layer@1.1.0': + resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@napi-rs/snappy-linux-arm-gnueabihf@7.2.2': - resolution: {integrity: sha512-v1uzm8+6uYjasBPcFkv90VLZ+WhLzr/tnfkZ/iD9mHYiULqkqpRuC8zvc3FZaJy5wLQE9zTDkTJN1IvUcZ+Vcg==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] + '@radix-ui/react-focus-guards@1.1.0': + resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@napi-rs/snappy-linux-arm64-gnu@7.2.2': - resolution: {integrity: sha512-LrEMa5pBScs4GXWOn6ZYXfQ72IzoolZw5txqUHVGs8eK4g1HR9HTHhb2oY5ySNaKakG5sOgMsb1rwaEnjhChmQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] + '@radix-ui/react-focus-scope@1.1.0': + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@napi-rs/snappy-linux-arm64-musl@7.2.2': - resolution: {integrity: sha512-3orWZo9hUpGQcB+3aTLW7UFDqNCQfbr0+MvV67x8nMNYj5eAeUtMmUE/HxLznHO4eZ1qSqiTwLbVx05/Socdlw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@napi-rs/snappy-linux-x64-gnu@7.2.2': - resolution: {integrity: sha512-jZt8Jit/HHDcavt80zxEkDpH+R1Ic0ssiVCoueASzMXa7vwPJeF4ZxZyqUw4qeSy7n8UUExomu8G8ZbP6VKhgw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@napi-rs/snappy-linux-x64-musl@7.2.2': - resolution: {integrity: sha512-Dh96IXgcZrV39a+Tej/owcd9vr5ihiZ3KRix11rr1v0MWtVb61+H1GXXlz6+Zcx9y8jM1NmOuiIuJwkV4vZ4WA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@napi-rs/snappy-win32-arm64-msvc@7.2.2': - resolution: {integrity: sha512-9No0b3xGbHSWv2wtLEn3MO76Yopn1U2TdemZpCaEgOGccz1V+a/1d16Piz3ofSmnA13HGFz3h9NwZH9EOaIgYA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@napi-rs/snappy-win32-ia32-msvc@7.2.2': - resolution: {integrity: sha512-QiGe+0G86J74Qz1JcHtBwM3OYdTni1hX1PFyLRo3HhQUSpmi13Bzc1En7APn+6Pvo7gkrcy81dObGLDSxFAkQQ==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@napi-rs/snappy-win32-x64-msvc@7.2.2': - resolution: {integrity: sha512-a43cyx1nK0daw6BZxVcvDEXxKMFLSBSDTAhsFD0VqSKcC7MGUBMaqyoWUcMiI7LBSz4bxUmxDWKfCYzpEmeb3w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@napi-rs/wasm-runtime@0.2.4': - resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - - '@netlify/functions@2.6.3': - resolution: {integrity: sha512-7Z9gWyAuPI2NnBOvpYPD66KIWOgNznLz9BkyZ0c7qeRE6p23UCMVZ2VsrJpjPDgoJtKplGSBzASl6fQD7iEeWw==} - engines: {node: '>=14.0.0'} - - '@netlify/node-cookies@0.1.0': - resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} - engines: {node: ^14.16.0 || >=16.0.0} - - '@netlify/serverless-functions-api@1.18.0': - resolution: {integrity: sha512-VCU5btoGZ8M6iI7HSwpfZXCpBLKWFmRtq5xYt0K7dY96BZWVBmaZY6Tn+w4L2DrGXwAsIeOFNp8CHjVXfuCAkg==} - engines: {node: '>=18.0.0'} - - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@nrwl/tao@19.5.6': - resolution: {integrity: sha512-p1bxEjW32bIHAiTp+PVdJpa2V9En2s9FigepHXyvmT2Aipisz96CKiDjexhPTjOZHUKtqA9FgmOIuVl3sBME3g==} - hasBin: true - - '@nx/nx-darwin-arm64@19.5.6': - resolution: {integrity: sha512-evEpUq571PQkhaLBR7ul5iqE2l97QS7Q37/rxoBuwJzyQ/QKHfNu5t032bR3KLyEOrv7golT10jMeoQlNeF7eQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@nx/nx-darwin-x64@19.5.6': - resolution: {integrity: sha512-o1tu0dOW7TZ80VN9N11FQL/3gHd1+t6NqtEmRClN0/sAh2MZyiBdbXv7UeN5HoKE7HAusiVFIxK3c1lxOvFtsQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@nx/nx-freebsd-x64@19.5.6': - resolution: {integrity: sha512-IUL0ROGpLUol9cuVJ7VeUvaB/ptxg7DOjMef1+LJeOgxl/SFNa0bj0kKpA/AQwujz6cLI7Ei7xLTVQOboNh1DA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - - '@nx/nx-linux-arm-gnueabihf@19.5.6': - resolution: {integrity: sha512-TGf1+cpWg5QiPEGW5kgxa1fVNyASMuqu+LvQ9CKhNYNz5EPD15yr/k6C0tOjgSXro3wi8TikTeG0Ln2hpmn6pw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@nx/nx-linux-arm64-gnu@19.5.6': - resolution: {integrity: sha512-4hZI5NmnBEAzr3NV/BtlPjbSVffLWGGCJ5tB/JB/NpW/vMtzOPCZ4RvsHuJMPprqHcXOdUnBgZFEcLbEMUXz0A==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@nx/nx-linux-arm64-musl@19.5.6': - resolution: {integrity: sha512-n0oIBblMN+nlcBUbrFUkRSyzKZVR+G1lzdZ3PuHVwLC664hkbijEBAdF2E321yRfv5ohQVY0UIYDZVFN2XhFUg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@nx/nx-linux-x64-gnu@19.5.6': - resolution: {integrity: sha512-IuoNo1bDHyJEeHom/n2m4+AA+UQ+Rlryvt9+bTdADclSFjmBLYCgbJwQRy7q9+vQk2mpQm0pQJv4d3XKCpDH+g==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@nx/nx-linux-x64-musl@19.5.6': - resolution: {integrity: sha512-FXtB8m/CSRkXLtDOAGfImO9OCUDIwYBssnvCVqX6PyPTBaVWo/GvX1O9WRbXSqSVIaJJTPn1aY/p6vptlGbDFw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@nx/nx-win32-arm64-msvc@19.5.6': - resolution: {integrity: sha512-aIDU84rjvxoqyUDIdN4VwS91Yec8bAtXOxjOFlF2acY2tXh0RjzmM+mkEP44nVAzFy0V1/cjzBKb6643FsEqdA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@nx/nx-win32-x64-msvc@19.5.6': - resolution: {integrity: sha512-zWB/2TjhNYKHbuPh++5hYitno3EpSFXrPND0I0VLec27WW7voRY9XQFFznA3omForU4FfmVhITcKCqzIb3EtpA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@open-draft/deferred-promise@2.2.0': - resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} - - '@open-draft/logger@0.3.0': - resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} - - '@open-draft/until@2.1.0': - resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - - '@opentelemetry/api-logs@0.50.0': - resolution: {integrity: sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==} - engines: {node: '>=14'} - - '@opentelemetry/api@1.8.0': - resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==} - engines: {node: '>=8.0.0'} - - '@opentelemetry/core@1.23.0': - resolution: {integrity: sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' - - '@opentelemetry/core@1.24.1': - resolution: {integrity: sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' - - '@opentelemetry/otlp-transformer@0.50.0': - resolution: {integrity: sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.9.0' - - '@opentelemetry/resources@1.23.0': - resolution: {integrity: sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' - - '@opentelemetry/resources@1.24.1': - resolution: {integrity: sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' - - '@opentelemetry/sdk-logs@0.50.0': - resolution: {integrity: sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.4.0 <1.9.0' - '@opentelemetry/api-logs': '>=0.39.1' - - '@opentelemetry/sdk-metrics@1.23.0': - resolution: {integrity: sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.9.0' - - '@opentelemetry/sdk-trace-base@1.23.0': - resolution: {integrity: sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' - - '@opentelemetry/sdk-trace-base@1.24.1': - resolution: {integrity: sha512-zz+N423IcySgjihl2NfjBf0qw1RWe11XIAWVrTNOSSI6dtSPJiVom2zipFB2AEEtJWpv0Iz6DY6+TjnyTV5pWg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' - - '@opentelemetry/semantic-conventions@1.23.0': - resolution: {integrity: sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==} - engines: {node: '>=14'} - - '@opentelemetry/semantic-conventions@1.24.1': - resolution: {integrity: sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==} - engines: {node: '>=14'} - - '@parcel/watcher-android-arm64@2.4.1': - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - - '@parcel/watcher-darwin-arm64@2.4.1': - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - - '@parcel/watcher-darwin-x64@2.4.1': - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - - '@parcel/watcher-freebsd-x64@2.4.1': - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - - '@parcel/watcher-linux-arm-glibc@2.4.1': - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm64-glibc@2.4.1': - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-arm64-musl@2.4.1': - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-x64-glibc@2.4.1': - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-linux-x64-musl@2.4.1': - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-wasm@2.3.0': - resolution: {integrity: sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==} - engines: {node: '>= 10.0.0'} - bundledDependencies: - - napi-wasm - - '@parcel/watcher-wasm@2.4.1': - resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} - engines: {node: '>= 10.0.0'} - bundledDependencies: - - napi-wasm - - '@parcel/watcher-win32-arm64@2.4.1': - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - - '@parcel/watcher-win32-ia32@2.4.1': - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - - '@parcel/watcher-win32-x64@2.4.1': - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - - '@parcel/watcher@2.4.1': - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} - engines: {node: '>= 10.0.0'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@playwright/test@1.46.1': - resolution: {integrity: sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==} - engines: {node: '>=18'} - hasBin: true - - '@prisma/client@5.17.0': - resolution: {integrity: sha512-N2tnyKayT0Zf7mHjwEyE8iG7FwTmXDHFZ1GnNhQp0pJUObsuel4ZZ1XwfuAYkq5mRIiC/Kot0kt0tGCfLJ70Jw==} - engines: {node: '>=16.13'} - peerDependencies: - prisma: '*' - peerDependenciesMeta: - prisma: - optional: true - - '@prisma/debug@5.18.0': - resolution: {integrity: sha512-f+ZvpTLidSo3LMJxQPVgAxdAjzv5OpzAo/eF8qZqbwvgi2F5cTOI9XCpdRzJYA0iGfajjwjOKKrVq64vkxEfUw==} - - '@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169': - resolution: {integrity: sha512-a/+LpJj8vYU3nmtkg+N3X51ddbt35yYrRe8wqHTJtYQt7l1f8kjIBcCs6sHJvodW/EK5XGvboOiwm47fmNrbgg==} - - '@prisma/engines@5.18.0': - resolution: {integrity: sha512-ofmpGLeJ2q2P0wa/XaEgTnX/IsLnvSp/gZts0zjgLNdBhfuj2lowOOPmDcfKljLQUXMvAek3lw5T01kHmCG8rg==} - - '@prisma/fetch-engine@5.18.0': - resolution: {integrity: sha512-I/3u0x2n31rGaAuBRx2YK4eB7R/1zCuayo2DGwSpGyrJWsZesrV7QVw7ND0/Suxeo/vLkJ5OwuBqHoCxvTHpOg==} - - '@prisma/get-platform@5.18.0': - resolution: {integrity: sha512-Tk+m7+uhqcKDgnMnFN0lRiH7Ewea0OEsZZs9pqXa7i3+7svS3FSCqDBCaM9x5fmhhkufiG0BtunJVDka+46DlA==} - - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - - '@radix-ui/primitive@1.1.0': - resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - - '@radix-ui/react-compose-refs@1.1.0': - resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.1.0': - resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dialog@1.1.1': - resolution: {integrity: sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-dismissable-layer@1.1.0': - resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-focus-guards@1.1.0': - resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-focus-scope@1.1.0': - resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-id@1.1.0': - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-portal@1.1.1': - resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-presence@1.1.0': - resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-primitive@2.0.0': - resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.1.0': - resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-callback-ref@1.1.0': - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.1.0': - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.1.0': - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.0': - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@remix-run/react@2.11.1': - resolution: {integrity: sha512-bXilQrHx5WVHsdA6UFkWxYVePZJ1kzwfa/KYMdbMZi6zsSlv2/N6ZbgNuoemt8oM8/YgCT6EOPITzCgz+zEMVw==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - typescript: ^5.1.0 - peerDependenciesMeta: - typescript: - optional: true - - '@remix-run/router@1.19.0': - resolution: {integrity: sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA==} - engines: {node: '>=14.0.0'} - - '@remix-run/router@1.19.1': - resolution: {integrity: sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==} - engines: {node: '>=14.0.0'} - - '@remix-run/server-runtime@2.11.1': - resolution: {integrity: sha512-j3AlrZul0javvPR6ZWdN32/l12t1E90sLeZI/k+4HpT0ifjqJVg8uG6alRJ0LLN9ae5BERYEslUebUqdfejSkQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - typescript: ^5.1.0 - peerDependenciesMeta: - typescript: - optional: true - - '@remix-run/server-runtime@2.11.2': - resolution: {integrity: sha512-abG6ENj0X3eHqDxqO2thWM2NSEiPnqyt58z1BbiQCv+t8g0Zuqd5QHbB4wzdNvfS0vKhg+jJiigcJneAc4sZzw==} - engines: {node: '>=18.0.0'} - peerDependencies: - typescript: ^5.1.0 - peerDependenciesMeta: - typescript: - optional: true - - '@replayio/playwright@3.1.8': - resolution: {integrity: sha512-hRAjdPeC7kJYqus0za02nApfH3/f1yccXcf9qeqdlNPTVGeKTfFunTJCWVBxavwW6nEamKvsqzEoBHSk7+jwVg==} - peerDependencies: - '@playwright/test': ^1.34.0 - - '@rollup/plugin-alias@5.1.0': - resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-babel@6.0.4': - resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - rollup: - optional: true - - '@rollup/plugin-commonjs@25.0.7': - resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-inject@5.0.5': - resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@15.2.3': - resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-replace@5.0.7': - resolution: {integrity: sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-terser@0.4.4': - resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.18.0': - resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.18.0': - resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.18.0': - resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.18.0': - resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': - resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.18.0': - resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.18.0': - resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.18.0': - resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': - resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.18.0': - resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.18.0': - resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.18.0': - resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.18.0': - resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.18.0': - resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.18.0': - resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.18.0': - resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} - cpu: [x64] - os: [win32] - - '@rsbuild/core@1.0.0': - resolution: {integrity: sha512-3CGB2vP5o5BEioHCkkdr2CA0RpMHYCwonWkaHkIsiTfCMKUaHLCkJzWJinGvg5muuHZA6YANI2YwF6wG8/cOAw==} - engines: {node: '>=14.0.0'} - deprecated: This is a mistakenly released version, please do not use it - hasBin: true - - '@rsbuild/core@1.0.1-rc.0': - resolution: {integrity: sha512-tSszHL2sp/iNZkYMOOorgBonh4XAIfJODlt6JBTg5PMAywm+XXdFoEglaKeAM6WiQ/0rQYOataKrHbMkfxmh/A==} - engines: {node: '>=16.7.0'} - hasBin: true - - '@rsbuild/plugin-react@1.0.1-rc.0': - resolution: {integrity: sha512-bjKRNdihb3LoWW74Ri2lBQqrTaksIpGx9/mp/RiRpVUGzX+9/SDlXWvrnWdndKPm7UYfY3VBCZNT2zJRi0CCKg==} - peerDependencies: - '@rsbuild/core': ^1.0.1-rc.0 - - '@rsbuild/shared@1.0.0': - resolution: {integrity: sha512-S8naGkaXAN+5vjk22Ghox07kGK/Weg5C1imc1ELB4J66m5PWaDSnlxiv8hdmruKelcNuWUaqmTJrqEpUkVSezw==} - deprecated: This is a mistakenly released version, please do not use it - - '@rspack/binding-darwin-arm64@0.4.0': - resolution: {integrity: sha512-iQ6ERHXzY58zgHIZZAC7L7hrosO7BZXH3RpOTTibiZdTVex4Bq10CVmy6q6m88iQuqAQS2BHOXzAYLJtZlZRRw==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-arm64@1.0.0': - resolution: {integrity: sha512-ZHQk9YK+swlTG48kJTgzFUW9T26KjhLXRok5la7t2AMoiuHyhGHHgC5iQfPJLZ62XzcJ/rfqs2rwakl97151jQ==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-x64@0.4.0': - resolution: {integrity: sha512-LRCiMPCbAIwwo0euqao7+8peUXj+qPDSi0nSK2y6wjaXfUVi8FwpWQ+O+B3RH3rpyFBU63IqatC8razalt8JgQ==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-darwin-x64@1.0.0': - resolution: {integrity: sha512-qhTXm9wUhv2lBjsqqfCu59RchH1/2jursdPAmTqGc7zMReZdZvtJs2Ri6Ma1M48BLLu+7fS4fbL8Rw1g78TOOQ==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-linux-arm64-gnu@0.4.0': - resolution: {integrity: sha512-trfEUQ7awu6dLWUlIXmSJmwW48lSxEl7kW4FUas/UMNH3/B/wim8TPx6ZuDrCzVhYk5HP7ccjbQg7mnbJ+E48w==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-arm64-gnu@1.0.0': - resolution: {integrity: sha512-yKnlsWgvydJRxDBGGKC+cyDeoSzIvOzuVqCloy5oAFAGOMXMY6bznxrkE6/olGZncdeLEpnJzZmXSuF1dYc8ow==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-arm64-musl@0.4.0': - resolution: {integrity: sha512-ubIcXmRopSJ6n+F/cRXDfGSgK847OX0CPeSSL4tiJ4dah5lz8iISZ9GLrNHJQ+SvphOH8F9lDpp8h2iwVt0Pbw==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-arm64-musl@1.0.0': - resolution: {integrity: sha512-dKFmlqlF4FELT/AX02hSwX8aRawjH5zAliQzYnvgrqcEyCKE60vKacGJQ3ZeRyru6dh5MlbUNW4H1+TDT+cDVA==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-x64-gnu@0.4.0': - resolution: {integrity: sha512-Q3mqjgV2k68F8VuzZwaqhHggBhcSlD0N+vvtFP8BxXIX4Pdkmk2shwwVjniZmY+oKB16dbSmXxShdMlCE3CCng==} - cpu: [x64] - os: [linux] - - '@rspack/binding-linux-x64-gnu@1.0.0': - resolution: {integrity: sha512-fRk9i8aE4FiwW7+LkNyw+5vfFzJ8BZ2seAL9V5U2iwYwYibzFJsukg3h3Uh+IsGm30/7+ZRENtGwybQiMruL4g==} - cpu: [x64] - os: [linux] - - '@rspack/binding-linux-x64-musl@0.4.0': - resolution: {integrity: sha512-5l6Q00yZDIeT8T1ruxEfF1Wj3m3SqnSHrPFiUqYydmgmNll1iCCRC2AmGVsmAACDQ7rg9z8BhhHtKukNBvmwTQ==} - cpu: [x64] - os: [linux] - - '@rspack/binding-linux-x64-musl@1.0.0': - resolution: {integrity: sha512-qcTJC8o3KvLwsnrJJcuBjfzSrjEbACMiCB4RtbFNecXDtI+Nputx1CO1SlUrINC25/44ILketf0/hsdBQHk60g==} - cpu: [x64] - os: [linux] - - '@rspack/binding-win32-arm64-msvc@0.4.0': - resolution: {integrity: sha512-k96/PSkVT/VEvqHygenzgr8Z7n4SuCSKONVFB5zazWDPaJwCqaqANQuvX0PbuazVy6PbiLE/YI0+4TDjL7dHCw==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-arm64-msvc@1.0.0': - resolution: {integrity: sha512-gqtakP0Yl2aj+Q/Giwgt31hz8eOZpo2s+sJlkMJGVdIF4dejB31a8vbj/VNGeSN1tDRiLI4cyqa5eQU//t26aQ==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@0.4.0': - resolution: {integrity: sha512-DmC7MumePZuss1AigT4FaIbFPZFtZXdcWBhD7dF88CvsvQRVtOcMujtByWkkNJ6ZDp+IUHyXOtPQWr1iRjDOCQ==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@1.0.0': - resolution: {integrity: sha512-nLfGu5DjdzwawzZ7zK69vZX5aL1Gt9+Ovfz4RlngDq/D5ZzqCnNWw93cqKADgFRWS4qK9vOD9RXNNnkyWB2SEw==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-x64-msvc@0.4.0': - resolution: {integrity: sha512-F3pAxz1GakFkyq8S+iPTqVkvIFnHG9te36wLW+tIzY4oC0vNPsEVunBp6NrYHzTaOf3aBZ+bvsLZyfvg+pKxqA==} - cpu: [x64] - os: [win32] - - '@rspack/binding-win32-x64-msvc@1.0.0': - resolution: {integrity: sha512-H9PqjgtZMw5aP+eXdFo7bgSP/Ycwn3oW81uI9qFqOOQ90W+o3T9ItghHBf2/ksc5GHibd208EwOBNxbKwjZDSQ==} - cpu: [x64] - os: [win32] - - '@rspack/binding@0.4.0': - resolution: {integrity: sha512-SpjaySPGmyRnRHrQItl9W9NGE2WoHsUPnererZaLK+pfVgO92q9uoEoKl3EBNNI9uttG132SCz4cx1zXwN394w==} - - '@rspack/binding@1.0.0': - resolution: {integrity: sha512-eLyqSEM1h/exJYn98k+9MRktP8AYDB13x5oVn8hoxVucuhk0TubFqQSX8h9SQcZp1O3j/Z8eWWwOaNPe3JU40Q==} - - '@rspack/core@0.4.0': - resolution: {integrity: sha512-GY8lsCGRzj1mj5q1Ss5kjazpSisT/HJdXpIU730pG4Os6mE2sGYVUJ0ncYRv/DEBcL1c2dVr5vtMKTHlNYRlfg==} - engines: {node: '>=16.0.0'} - - '@rspack/core@1.0.0': - resolution: {integrity: sha512-F4RA9uOLLvD1oTKa96Gcly+Sro1qaqPNENadFyiPwepa7DrwexQa/ym6CQKbvKMOYGKlVSFDPUmgFAirz35ETg==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@rspack/lite-tapable@1.0.0': - resolution: {integrity: sha512-7MZf4lburSUZoEenwazwUDKHhqyfnLCGnQ/tKcUtztfmVzfjZfRn/EaiT0AKkYGnL2U8AGsw89oUeVyvaOLVCw==} - engines: {node: '>=16.0.0'} - - '@rspack/plugin-react-refresh@1.0.0': - resolution: {integrity: sha512-WvXkLewW5G0Mlo5H1b251yDh5FFiH4NDAbYlFpvFjcuXX2AchZRf9zdw57BDE/ADyWsJgA8kixN/zZWBTN3iYA==} - peerDependencies: - react-refresh: '>=0.10.0 <1.0.0' - peerDependenciesMeta: - react-refresh: - optional: true - - '@rushstack/eslint-patch@1.10.3': - resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} - - '@rushstack/node-core-library@5.5.1': - resolution: {integrity: sha512-ZutW56qIzH8xIOlfyaLQJFx+8IBqdbVCZdnj+XT1MorQ1JqqxHse8vbCpEM+2MjsrqcbxcgDIbfggB1ZSQ2A3g==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - - '@rushstack/rig-package@0.5.3': - resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} - - '@rushstack/terminal@0.13.3': - resolution: {integrity: sha512-fc3zjXOw8E0pXS5t9vTiIPx9gHA0fIdTXsu9mT4WbH+P3mYvnrX0iAQ5a6NvyK1+CqYWBTw/wVNx7SDJkI+WYQ==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - - '@rushstack/ts-command-line@4.22.3': - resolution: {integrity: sha512-edMpWB3QhFFZ4KtSzS8WNjBgR4PXPPOVrOHMbb7kNpmQ1UFS9HdVtjCXg1H5fG+xYAbeE+TMPcVPUyX2p84STA==} - - '@shikijs/core@1.11.0': - resolution: {integrity: sha512-VbEhDAhT/2ozO0TPr5/ZQBO/NWLqtk4ZiBf6NplYpF38mKjNfMMied5fNEfIfYfN+cdKvhDB4VMcKvG/g9c3zg==} - - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@sindresorhus/is@4.6.0': - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - - '@stylistic/eslint-plugin-js@2.6.4': - resolution: {integrity: sha512-kx1hS3xTvzxZLdr/DCU/dLBE++vcP97sHeEFX2QXhk1Ipa4K1rzPOLw1HCbf4mU3s+7kHP5eYpDe+QteEOFLug==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 - - '@swc/core-darwin-arm64@1.7.6': - resolution: {integrity: sha512-6lYHey84ZzsdtC7UuPheM4Rm0Inzxm6Sb8U6dmKc4eCx8JL0LfWG4LC5RsdsrTxnjTsbriWlnhZBffh8ijUHIQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.7.6': - resolution: {integrity: sha512-Fyl+8aH9O5rpx4O7r2KnsPpoi32iWoKOYKiipeTbGjQ/E95tNPxbmsz4yqE8Ovldcga60IPJ5OKQA3HWRiuzdw==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.7.6': - resolution: {integrity: sha512-2WxYTqFaOx48GKC2cbO1/IntA+w+kfCFy436Ij7qRqqtV/WAvTM9TC1OmiFbqq436rSot52qYmX8fkwdB5UcLQ==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.7.6': - resolution: {integrity: sha512-TBEGMSe0LhvPe4S7E68c7VzgT3OMu4VTmBLS7B2aHv4v8uZO92Khpp7L0WqgYU1y5eMjk+XLDLi4kokiNHv/Hg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.7.6': - resolution: {integrity: sha512-QI8QGL0HGT42tj7F1A+YAzhGkJjUcvvTfI1e2m704W0Enl2/UIK9v5D1zvQzYwusRyKuaQfbeBRYDh0NcLOGLg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.7.6': - resolution: {integrity: sha512-61AYVzhjuNQAVIKKWOJu3H0/pFD28RYJGxnGg3YMhvRLRyuWNyY5Nyyj2WkKcz/ON+g38Arlz00NT1LDIViRLg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.7.6': - resolution: {integrity: sha512-hQFznpfLK8XajfAAN9Cjs0w/aVmO7iu9VZvInyrTCRcPqxV5O+rvrhRxKvC1LRMZXr5M6JRSRtepp5w+TK4kAw==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.7.6': - resolution: {integrity: sha512-Aqsd9afykVMuekzjm4X4TDqwxmG4CrzoOSFe0hZrn9SMio72l5eAPnMtYoe5LsIqtjV8MNprLfXaNbjHjTegmA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.7.6': - resolution: {integrity: sha512-9h0hYnOeRVNeQgHQTvD1Im67faNSSzBZ7Adtxyu9urNLfBTJilMllFd2QuGHlKW5+uaT6ZH7ZWDb+c/enx7Lcg==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.7.6': - resolution: {integrity: sha512-izeoB8glCSe6IIDQmrVm6bvR9muk9TeKgmtY7b6l1BwL4BFnTUk4dMmpbntT90bEVQn3JPCaPtUG4HfL8VuyuA==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.7.6': - resolution: {integrity: sha512-FZxyao9eQks1MRmUshgsZTmlg/HB2oXK5fghkoWJm/1CU2q2kaJlVDll2as5j+rmWiwkp0Gidlq8wlXcEEAO+g==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '*' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/helpers@0.5.1': - resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} - - '@swc/helpers@0.5.12': - resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} - - '@swc/types@0.1.12': - resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} - - '@tanstack/config@0.12.1': - resolution: {integrity: sha512-v0w00ZOrR1Pf32c3Vte4TCUNAjFTCubxeGpcb00QkxkUtYc6Njk4rjBqhl7SdSuExpgCyDN1U41sxk+mIKohUw==} - engines: {node: '>=18'} - hasBin: true - - '@tanstack/query-core@5.51.21': - resolution: {integrity: sha512-POQxm42IUp6n89kKWF4IZi18v3fxQWFRolvBA6phNVmA8psdfB1MvDnGacCJdS+EOX12w/CyHM62z//rHmYmvw==} - - '@tanstack/query-devtools@5.51.16': - resolution: {integrity: sha512-ajwuq4WnkNCMj/Hy3KR8d3RtZ6PSKc1dD2vs2T408MdjgKzQ3klVoL6zDgVO7X+5jlb5zfgcO3thh4ojPhfIaw==} - - '@tanstack/react-query-devtools@5.51.21': - resolution: {integrity: sha512-mi5ef8dvsS48GsG6/8M60O2EgrzPK1kNPngOcHBTlIUrB5dGkxP9fuHf05GQRxtSp5W5GlyeUpzOmtkKNpf9dQ==} - peerDependencies: - '@tanstack/react-query': ^5.51.21 - react: ^18 || ^19 - - '@tanstack/react-query@5.51.21': - resolution: {integrity: sha512-Q/V81x3sAYgCsxjwOkfLXfrmoG+FmDhLeHH5okC/Bp8Aaw2c33lbEo/mMcMnkxUPVtB2FLpzHT0tq3c+OlZEbw==} - peerDependencies: - react: ^18.0.0 - - '@tanstack/react-store@0.5.5': - resolution: {integrity: sha512-1orYXGatBqXCYKuroFwV8Ll/6aDa5E3pU6RR4h7RvRk7TmxF1+zLCsWALZaeijXkySNMGmvawSbUXRypivg2XA==} - peerDependencies: - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - - '@tanstack/react-virtual@3.8.4': - resolution: {integrity: sha512-Dq0VQr3QlTS2qL35g360QaJWBt7tCn/0xw4uZ0dHXPLO1Ak4Z4nVX4vuj1Npg1b/jqNMDToRtR5OIxM2NXRBWg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@tanstack/store@0.5.5': - resolution: {integrity: sha512-EOSrgdDAJExbvRZEQ/Xhh9iZchXpMN+ga1Bnk8Nmygzs8TfiE6hbzThF+Pr2G19uHL6+DTDTHhJ8VQiOd7l4tA==} - - '@tanstack/virtual-core@3.8.4': - resolution: {integrity: sha512-iO5Ujgw3O1yIxWDe9FgUPNkGjyT657b1WNX52u+Wv1DyBFEpdCdGkuVaky0M3hHFqNWjAmHWTn4wgj9rTr7ZQg==} - - '@testing-library/dom@10.0.0': - resolution: {integrity: sha512-PmJPnogldqoVFf+EwbHvbBJ98MmqASV8kLrBYgsDNxQcFMeIS7JFL48sfyXvuMtgmWO/wMhh25odr+8VhDmn4g==} - engines: {node: '>=18'} - - '@testing-library/jest-dom@6.4.8': - resolution: {integrity: sha512-JD0G+Zc38f5MBHA4NgxQMR5XtO5Jx9g86jqturNTt2WUfRmLDIY7iKkWHDCCTiDuFMre6nxAD5wHw9W5kI4rGw==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - - '@testing-library/react@16.0.0': - resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==} - engines: {node: '>=18'} - peerDependencies: - '@testing-library/dom': ^10.0.0 - '@types/react': ^18.0.0 - '@types/react-dom': ^18.0.0 - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@trpc/client@11.0.0-rc.477': - resolution: {integrity: sha512-Ah/Er3vxTm2bIEUcIrike7Z/8Yc+DkFveU2ZHQQ0+zY7yxs931438+4OEJuY/Xl/0p5OTDeZTm6HBuZ1REFiyA==} - peerDependencies: - '@trpc/server': 11.0.0-rc.477+a467f8314 - - '@trpc/react-query@11.0.0-rc.477': - resolution: {integrity: sha512-1ZCAm0wv7yLmb3muq+5DTRxdKXzI1KjTrcM2+QRKCFu6EherGM8x6zGI36P9ZmC6o+SCoedzxqazDNe+kkqVqA==} - peerDependencies: - '@tanstack/react-query': ^5.49.2 - '@trpc/client': 11.0.0-rc.477+a467f8314 - '@trpc/server': 11.0.0-rc.477+a467f8314 - react: '>=18.2.0' - react-dom: '>=18.2.0' - - '@trpc/server@11.0.0-rc.477': - resolution: {integrity: sha512-K6zmjRv96fWilqm/ETehEK1DWsy5bSyrs2xbsNzCbjguMgamMhOClRHgYzJcwgLp2kasJ7QgD9YbahOhV1/u1w==} - - '@tybys/wasm-util@0.9.0': - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} - - '@types/argparse@1.0.38': - resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} - - '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - - '@types/body-parser@1.19.2': - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} - - '@types/bonjour@3.5.13': - resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - - '@types/braces@3.0.4': - resolution: {integrity: sha512-0WR3b8eaISjEW7RpZnclONaLFDf7buaowRHdqLp4vLj54AsSAYWfh3DRbfiYJY9XDxMgx1B4sE1Afw2PGpuHOA==} - - '@types/connect-history-api-fallback@1.5.4': - resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} - - '@types/connect@3.4.35': - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} - - '@types/conventional-commits-parser@5.0.0': - resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} - - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.0': - resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/express-serve-static-core@4.17.36': - resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} - - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - - '@types/html-minifier-terser@6.1.0': - resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - - '@types/http-proxy@1.17.14': - resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} - - '@types/jsesc@3.0.3': - resolution: {integrity: sha512-YZZ9ZOAiiSVC6KApWd/fTCDTdTOOMiRU4Lq3/VSmXNPse8IvCVOn5kYRRLu900Ub1lTPurVZFI5unEqLDJR7wg==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/micromatch@4.0.7': - resolution: {integrity: sha512-C/FMQ8HJAZhTsDpl4wDKZdMeeW5USjgzOczUwTGbRc1ZopPgOhIEnxY2ZgUrsuyy4DwK1JVOJZKFakv3TbCKiA==} - - '@types/mime@1.3.2': - resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} - - '@types/mime@3.0.4': - resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} - - '@types/mute-stream@0.0.4': - resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} - - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - - '@types/node@20.14.9': - resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/prop-types@15.7.12': - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - - '@types/qs@6.9.7': - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - - '@types/range-parser@1.2.4': - resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - - '@types/react-dom@18.3.0': - resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} - - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} - - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - - '@types/retry@0.12.2': - resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} - - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - '@types/send@0.17.1': - resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} - - '@types/serve-index@1.9.4': - resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - - '@types/serve-static@1.15.5': - resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} - - '@types/sockjs@0.3.36': - resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - - '@types/statuses@2.0.5': - resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} - - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - - '@types/triple-beam@1.3.5': - resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} - - '@types/unist@3.0.2': - resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - - '@types/wrap-ansi@3.0.0': - resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} - - '@types/ws@8.5.10': - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} - - '@types/yargs-parser@21.0.0': - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - - '@types/yargs@17.0.32': - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - - '@typescript-eslint/eslint-plugin@5.62.0': - resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^8.57.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@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.57.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/experimental-utils@5.62.0': - resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^8.57.0 - - '@typescript-eslint/parser@5.62.0': - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^8.57.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.57.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@5.62.0': - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@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/scope-manager@8.3.0': - resolution: {integrity: sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@5.62.0': - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^8.57.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@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.57.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/type-utils@8.3.0': - resolution: {integrity: sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@5.62.0': - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@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/types@8.3.0': - resolution: {integrity: sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@5.62.0': - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@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/typescript-estree@8.3.0': - resolution: {integrity: sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@5.62.0': - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^8.57.0 - - '@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.57.0 - - '@typescript-eslint/utils@8.3.0': - resolution: {integrity: sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 - - '@typescript-eslint/visitor-keys@5.62.0': - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.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} - - '@typescript-eslint/visitor-keys@8.3.0': - resolution: {integrity: sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@vercel/nft@0.26.5': - resolution: {integrity: sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==} - engines: {node: '>=16'} - hasBin: true - - '@vinxi/listhen@1.5.6': - resolution: {integrity: sha512-WSN1z931BtasZJlgPp704zJFnQFRg7yzSjkm3MzAWQYe4uXFXlFr1hc5Ac2zae5/HDOz5x1/zDM5Cb54vTCnWw==} - hasBin: true - - '@vinxi/plugin-directives@0.4.2': - resolution: {integrity: sha512-lQuKA6Bc6z3tGmqDTSyR2CC0aSOMc0nBlHmk+5HoROSJ9Lp24xVSJjqEyaBNEnUMaq4itw+4w2IGUX7+qoMhJQ==} - peerDependencies: - vinxi: ^0.4.2 - - '@vinxi/react-server-dom@0.0.3': - resolution: {integrity: sha512-ZJJZtuw1TbGFOBuDZBHmM3w40yzFpNFWoPCoC2QtZBkYEQXYF9sOHHxkjTfNvk4rSn/zaUAs6KNUbVRvebq/1Q==} - engines: {node: '>=0.10.0'} - peerDependencies: - react: 0.0.0-experimental-035a41c4e-20230704 - react-dom: 0.0.0-experimental-035a41c4e-20230704 - vite: ^4.3.9 - - '@vinxi/react@0.2.4': - resolution: {integrity: sha512-FYmmAWEzInpx5OAFGFSGlVauTdzDhVg8vVhqoc3DlhZAvsux3WyY/I3qp1IkCXI+mIrDFetFOZCahi3FkpSEWA==} - - '@vinxi/server-components@0.4.2': - resolution: {integrity: sha512-uQFQjfq7ZYBTYXij7NWQ7aKKH0HvpboLG/Oqxj+f3RNv09dY9xLlD03VdBvgJjx4TtssliGY2rYeFDjkrByVVw==} - peerDependencies: - vinxi: ^0.4.2 - - '@vinxi/server-functions@0.4.2': - resolution: {integrity: sha512-hI6MstgFx5LqR0ZFI2NU7WVBfSuurjD/NmQBE38FC1TY9gOwXCqVXi8aQ/DEUnO5mOGNBE0iPohIUxmsbHfnUQ==} - peerDependencies: - vinxi: ^0.4.2 - - '@vitejs/plugin-react@4.3.1': - resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 - - '@vitest/expect@1.6.0': - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - - '@vitest/runner@1.6.0': - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - - '@vitest/snapshot@1.6.0': - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - - '@vitest/spy@1.6.0': - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - - '@vitest/utils@1.6.0': - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - - '@volar/language-core@2.4.0': - resolution: {integrity: sha512-FTla+khE+sYK0qJP+6hwPAAUwiNHVMph4RUXpxf/FIPKUP61NFrVZorml4mjFShnueR2y9/j8/vnh09YwVdH7A==} - - '@volar/source-map@2.4.0': - resolution: {integrity: sha512-2ceY8/NEZvN6F44TXw2qRP6AQsvCYhV2bxaBPWxV9HqIfkbRydSksTFObCF1DBDNBfKiZTS8G/4vqV6cvjdOIQ==} - - '@volar/typescript@2.4.0': - resolution: {integrity: sha512-9zx3lQWgHmVd+JRRAHUSRiEhe4TlzL7U7e6ulWXOxHH/WNYxzKwCvZD7WYWEZFdw4dHfTD9vUR0yPQO6GilCaQ==} - - '@vue/compiler-core@3.4.27': - resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==} - - '@vue/compiler-dom@3.4.27': - resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==} - - '@vue/compiler-vue2@2.7.16': - resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} - - '@vue/language-core@2.0.29': - resolution: {integrity: sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==} + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} peerDependencies: - typescript: '*' + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - typescript: + '@types/react': optional: true - '@vue/shared@3.4.27': - resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==} - - '@web3-storage/multipart-parser@1.0.0': - resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} - - '@webassemblyjs/ast@1.12.1': - resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} - - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - - '@webassemblyjs/helper-api-error@1.11.6': - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - - '@webassemblyjs/helper-buffer@1.12.1': - resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - - '@webassemblyjs/helper-numbers@1.11.6': - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - - '@webassemblyjs/helper-wasm-section@1.12.1': - resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} - - '@webassemblyjs/ieee754@1.11.6': - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - - '@webassemblyjs/leb128@1.11.6': - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - - '@webassemblyjs/utf8@1.11.6': - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - - '@webassemblyjs/wasm-edit@1.12.1': - resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} - - '@webassemblyjs/wasm-gen@1.12.1': - resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} - - '@webassemblyjs/wasm-opt@1.12.1': - resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} - - '@webassemblyjs/wasm-parser@1.12.1': - resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} - - '@webassemblyjs/wast-printer@1.12.1': - resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} - - '@webpack-cli/configtest@2.1.1': - resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - - '@webpack-cli/info@2.0.2': - resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - - '@webpack-cli/serve@2.0.5': - resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} - engines: {node: '>=14.15.0'} + '@radix-ui/react-portal@1.1.1': + resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - webpack-dev-server: '*' + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - webpack-dev-server: + '@types/react': + optional: true + '@types/react-dom': optional: true - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - - '@yarnpkg/parsers@3.0.0-rc.46': - resolution: {integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==} - engines: {node: '>=14.15.0'} - - '@zkochan/js-yaml@0.0.7': - resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} - hasBin: true - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-loose@8.3.0: - resolution: {integrity: sha512-75lAs9H19ldmW+fAbyqHdjgdCrz0pWGXKmnqFoh8PyVd1L2RIb4RzYrSjmopeqv3E1G3/Pimu6GgLlrGbrkF7w==} - engines: {node: '>=0.4.0'} - - acorn-typescript@1.4.13: - resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} + '@radix-ui/react-presence@1.1.0': + resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} peerDependencies: - acorn: '>=8.9.0' - - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} - engines: {node: '>= 14'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - ajv-draft-04@1.0.0: - resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} peerDependencies: - ajv: ^8.5.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - ajv: + '@types/react': + optional: true + '@types/react-dom': optional: true - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} peerDependencies: - ajv: ^8.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - ajv: + '@types/react': optional: true - ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} peerDependencies: - ajv: ^8.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - ajv: + '@types/react': optional: true - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} peerDependencies: - ajv: ^6.9.1 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} peerDependencies: - ajv: ^8.8.2 - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - - ajv@8.13.0: - resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} - - ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} - engines: {node: '>=18'} - - ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - 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'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - archiver-utils@5.0.2: - resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} - engines: {node: '>= 14'} - - archiver@7.0.1: - resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} - engines: {node: '>= 14'} - - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} - engines: {node: '>=10'} - - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - arktype@2.0.0-beta.5: - resolution: {integrity: sha512-3bNUyiA2iuvyV/rfiErLli9HrrvC6W4XT8Ja6SAEihljM60PRQhYJEr5jM4MGGtj1k/oFxgOkHd++VjQrm6SoA==} - - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - - array-each@1.0.1: - resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} - engines: {node: '>=0.10.0'} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - array-ify@1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - - array-slice@1.1.0: - resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} - engines: {node: '>=0.10.0'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - - array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - - array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} - - array.prototype.tosorted@1.1.3: - resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} - - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - - assert@2.1.0: - resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - - ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} - - astring@1.8.6: - resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} - hasBin: true + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - async-exit-hook@2.0.1: - resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} - engines: {node: '>=0.12.0'} + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - async-sema@3.1.1: - resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} + '@remix-run/react@2.11.1': + resolution: {integrity: sha512-bXilQrHx5WVHsdA6UFkWxYVePZJ1kzwfa/KYMdbMZi6zsSlv2/N6ZbgNuoemt8oM8/YgCT6EOPITzCgz+zEMVw==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true - async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + '@remix-run/router@1.19.0': + resolution: {integrity: sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA==} + engines: {node: '>=14.0.0'} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + '@remix-run/router@1.19.1': + resolution: {integrity: sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==} + engines: {node: '>=14.0.0'} - autoprefixer@10.4.20: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true + '@remix-run/server-runtime@2.11.1': + resolution: {integrity: sha512-j3AlrZul0javvPR6ZWdN32/l12t1E90sLeZI/k+4HpT0ifjqJVg8uG6alRJ0LLN9ae5BERYEslUebUqdfejSkQ==} + engines: {node: '>=18.0.0'} peerDependencies: - postcss: ^8.1.0 - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true - axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} - engines: {node: '>=4'} + '@remix-run/server-runtime@2.11.2': + resolution: {integrity: sha512-abG6ENj0X3eHqDxqO2thWM2NSEiPnqyt58z1BbiQCv+t8g0Zuqd5QHbB4wzdNvfS0vKhg+jJiigcJneAc4sZzw==} + engines: {node: '>=18.0.0'} + peerDependencies: + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true - axios@1.7.2: - resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} + '@replayio/playwright@3.1.8': + resolution: {integrity: sha512-hRAjdPeC7kJYqus0za02nApfH3/f1yccXcf9qeqdlNPTVGeKTfFunTJCWVBxavwW6nEamKvsqzEoBHSk7+jwVg==} + peerDependencies: + '@playwright/test': ^1.34.0 - axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + '@rollup/plugin-alias@5.1.0': + resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - b4a@1.6.6: - resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + '@rollup/plugin-babel@6.0.4': + resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + rollup: + optional: true - babel-dead-code-elimination@1.0.6: - resolution: {integrity: sha512-JxFi9qyRJpN0LjEbbjbN8g0ux71Qppn9R8Qe3k6QzHg2CaKsbUQtbn307LQGiDLGjV6JCtEFqfxzVig9MyDCHQ==} + '@rollup/plugin-commonjs@25.0.7': + resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - babel-plugin-add-module-exports@0.2.1: - resolution: {integrity: sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==} + '@rollup/plugin-inject@5.0.5': + resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - babel-plugin-polyfill-corejs2@0.4.11: - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + '@rollup/plugin-node-resolve@15.2.3': + resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} + engines: {node: '>=14.0.0'} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - babel-plugin-polyfill-corejs3@0.10.4: - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + '@rollup/plugin-replace@5.0.7': + resolution: {integrity: sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==} + engines: {node: '>=14.0.0'} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - babel-plugin-polyfill-regenerator@0.6.2: - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + '@rollup/plugin-terser@0.4.4': + resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} + engines: {node: '>=14.0.0'} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - babel-plugin-transform-react-remove-prop-types@0.4.24: - resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} - babel-preset-react-app@10.0.1: - resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + '@rollup/rollup-android-arm-eabi@4.18.0': + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} + cpu: [arm] + os: [android] - bare-events@2.2.2: - resolution: {integrity: sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==} + '@rollup/rollup-android-arm64@4.18.0': + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} + cpu: [arm64] + os: [android] - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + '@rollup/rollup-darwin-arm64@4.18.0': + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} + cpu: [arm64] + os: [darwin] - batch@0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + '@rollup/rollup-darwin-x64@4.18.0': + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} + cpu: [x64] + os: [darwin] - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + cpu: [arm] + os: [linux] - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} + cpu: [arm] + os: [linux] - birecord@0.1.1: - resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} + '@rollup/rollup-linux-arm64-gnu@4.18.0': + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} + cpu: [arm64] + os: [linux] - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + '@rollup/rollup-linux-arm64-musl@4.18.0': + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + cpu: [arm64] + os: [linux] - body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + cpu: [ppc64] + os: [linux] - bonjour-service@1.2.1: - resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} + cpu: [riscv64] + os: [linux] - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + '@rollup/rollup-linux-s390x-gnu@4.18.0': + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} + cpu: [s390x] + os: [linux] - boxen@7.1.1: - resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} - engines: {node: '>=14.16'} + '@rollup/rollup-linux-x64-gnu@4.18.0': + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} + cpu: [x64] + os: [linux] - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + '@rollup/rollup-linux-x64-musl@4.18.0': + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} + cpu: [x64] + os: [linux] - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + '@rollup/rollup-win32-arm64-msvc@4.18.0': + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} + cpu: [arm64] + os: [win32] - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + '@rollup/rollup-win32-ia32-msvc@4.18.0': + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} + cpu: [ia32] + os: [win32] - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + '@rollup/rollup-win32-x64-msvc@4.18.0': + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} + cpu: [x64] + os: [win32] + + '@rsbuild/core@1.0.0': + resolution: {integrity: sha512-3CGB2vP5o5BEioHCkkdr2CA0RpMHYCwonWkaHkIsiTfCMKUaHLCkJzWJinGvg5muuHZA6YANI2YwF6wG8/cOAw==} + engines: {node: '>=14.0.0'} + deprecated: This is a mistakenly released version, please do not use it hasBin: true - btoa@1.2.1: - resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} - engines: {node: '>= 0.4.0'} + '@rsbuild/core@1.0.1-rc.0': + resolution: {integrity: sha512-tSszHL2sp/iNZkYMOOorgBonh4XAIfJODlt6JBTg5PMAywm+XXdFoEglaKeAM6WiQ/0rQYOataKrHbMkfxmh/A==} + engines: {node: '>=16.7.0'} hasBin: true - buffer-crc32@1.0.0: - resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} - engines: {node: '>=8.0.0'} + '@rsbuild/plugin-react@1.0.1-rc.0': + resolution: {integrity: sha512-bjKRNdihb3LoWW74Ri2lBQqrTaksIpGx9/mp/RiRpVUGzX+9/SDlXWvrnWdndKPm7UYfY3VBCZNT2zJRi0CCKg==} + peerDependencies: + '@rsbuild/core': ^1.0.1-rc.0 - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + '@rsbuild/shared@1.0.0': + resolution: {integrity: sha512-S8naGkaXAN+5vjk22Ghox07kGK/Weg5C1imc1ELB4J66m5PWaDSnlxiv8hdmruKelcNuWUaqmTJrqEpUkVSezw==} + deprecated: This is a mistakenly released version, please do not use it - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + '@rspack/binding-darwin-arm64@0.4.0': + resolution: {integrity: sha512-iQ6ERHXzY58zgHIZZAC7L7hrosO7BZXH3RpOTTibiZdTVex4Bq10CVmy6q6m88iQuqAQS2BHOXzAYLJtZlZRRw==} + cpu: [arm64] + os: [darwin] - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + '@rspack/binding-darwin-arm64@1.0.0': + resolution: {integrity: sha512-ZHQk9YK+swlTG48kJTgzFUW9T26KjhLXRok5la7t2AMoiuHyhGHHgC5iQfPJLZ62XzcJ/rfqs2rwakl97151jQ==} + cpu: [arm64] + os: [darwin] - builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} + '@rspack/binding-darwin-x64@0.4.0': + resolution: {integrity: sha512-LRCiMPCbAIwwo0euqao7+8peUXj+qPDSi0nSK2y6wjaXfUVi8FwpWQ+O+B3RH3rpyFBU63IqatC8razalt8JgQ==} + cpu: [x64] + os: [darwin] - bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} - engines: {node: '>=18'} + '@rspack/binding-darwin-x64@1.0.0': + resolution: {integrity: sha512-qhTXm9wUhv2lBjsqqfCu59RchH1/2jursdPAmTqGc7zMReZdZvtJs2Ri6Ma1M48BLLu+7fS4fbL8Rw1g78TOOQ==} + cpu: [x64] + os: [darwin] - bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} + '@rspack/binding-linux-arm64-gnu@0.4.0': + resolution: {integrity: sha512-trfEUQ7awu6dLWUlIXmSJmwW48lSxEl7kW4FUas/UMNH3/B/wim8TPx6ZuDrCzVhYk5HP7ccjbQg7mnbJ+E48w==} + cpu: [arm64] + os: [linux] - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} + '@rspack/binding-linux-arm64-gnu@1.0.0': + resolution: {integrity: sha512-yKnlsWgvydJRxDBGGKC+cyDeoSzIvOzuVqCloy5oAFAGOMXMY6bznxrkE6/olGZncdeLEpnJzZmXSuF1dYc8ow==} + cpu: [arm64] + os: [linux] - c12@1.10.0: - resolution: {integrity: sha512-0SsG7UDhoRWcuSvKWHaXmu5uNjDCDN3nkQLRL4Q42IlFy+ze58FcCoI3uPwINXinkz7ZinbhEgyzYFw9u9ZV8g==} + '@rspack/binding-linux-arm64-musl@0.4.0': + resolution: {integrity: sha512-ubIcXmRopSJ6n+F/cRXDfGSgK847OX0CPeSSL4tiJ4dah5lz8iISZ9GLrNHJQ+SvphOH8F9lDpp8h2iwVt0Pbw==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-arm64-musl@1.0.0': + resolution: {integrity: sha512-dKFmlqlF4FELT/AX02hSwX8aRawjH5zAliQzYnvgrqcEyCKE60vKacGJQ3ZeRyru6dh5MlbUNW4H1+TDT+cDVA==} + cpu: [arm64] + os: [linux] - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} + '@rspack/binding-linux-x64-gnu@0.4.0': + resolution: {integrity: sha512-Q3mqjgV2k68F8VuzZwaqhHggBhcSlD0N+vvtFP8BxXIX4Pdkmk2shwwVjniZmY+oKB16dbSmXxShdMlCE3CCng==} + cpu: [x64] + os: [linux] - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} + '@rspack/binding-linux-x64-gnu@1.0.0': + resolution: {integrity: sha512-fRk9i8aE4FiwW7+LkNyw+5vfFzJ8BZ2seAL9V5U2iwYwYibzFJsukg3h3Uh+IsGm30/7+ZRENtGwybQiMruL4g==} + cpu: [x64] + os: [linux] - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} + '@rspack/binding-linux-x64-musl@0.4.0': + resolution: {integrity: sha512-5l6Q00yZDIeT8T1ruxEfF1Wj3m3SqnSHrPFiUqYydmgmNll1iCCRC2AmGVsmAACDQ7rg9z8BhhHtKukNBvmwTQ==} + cpu: [x64] + os: [linux] - camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + '@rspack/binding-linux-x64-musl@1.0.0': + resolution: {integrity: sha512-qcTJC8o3KvLwsnrJJcuBjfzSrjEbACMiCB4RtbFNecXDtI+Nputx1CO1SlUrINC25/44ILketf0/hsdBQHk60g==} + cpu: [x64] + os: [linux] - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} + '@rspack/binding-win32-arm64-msvc@0.4.0': + resolution: {integrity: sha512-k96/PSkVT/VEvqHygenzgr8Z7n4SuCSKONVFB5zazWDPaJwCqaqANQuvX0PbuazVy6PbiLE/YI0+4TDjL7dHCw==} + cpu: [arm64] + os: [win32] - camelcase@7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} + '@rspack/binding-win32-arm64-msvc@1.0.0': + resolution: {integrity: sha512-gqtakP0Yl2aj+Q/Giwgt31hz8eOZpo2s+sJlkMJGVdIF4dejB31a8vbj/VNGeSN1tDRiLI4cyqa5eQU//t26aQ==} + cpu: [arm64] + os: [win32] - caniuse-lite@1.0.30001653: - resolution: {integrity: sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==} + '@rspack/binding-win32-ia32-msvc@0.4.0': + resolution: {integrity: sha512-DmC7MumePZuss1AigT4FaIbFPZFtZXdcWBhD7dF88CvsvQRVtOcMujtByWkkNJ6ZDp+IUHyXOtPQWr1iRjDOCQ==} + cpu: [ia32] + os: [win32] - chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} + '@rspack/binding-win32-ia32-msvc@1.0.0': + resolution: {integrity: sha512-nLfGu5DjdzwawzZ7zK69vZX5aL1Gt9+Ovfz4RlngDq/D5ZzqCnNWw93cqKADgFRWS4qK9vOD9RXNNnkyWB2SEw==} + cpu: [ia32] + os: [win32] - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + '@rspack/binding-win32-x64-msvc@0.4.0': + resolution: {integrity: sha512-F3pAxz1GakFkyq8S+iPTqVkvIFnHG9te36wLW+tIzY4oC0vNPsEVunBp6NrYHzTaOf3aBZ+bvsLZyfvg+pKxqA==} + cpu: [x64] + os: [win32] - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} + '@rspack/binding-win32-x64-msvc@1.0.0': + resolution: {integrity: sha512-H9PqjgtZMw5aP+eXdFo7bgSP/Ycwn3oW81uI9qFqOOQ90W+o3T9ItghHBf2/ksc5GHibd208EwOBNxbKwjZDSQ==} + cpu: [x64] + os: [win32] - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + '@rspack/binding@0.4.0': + resolution: {integrity: sha512-SpjaySPGmyRnRHrQItl9W9NGE2WoHsUPnererZaLK+pfVgO92q9uoEoKl3EBNNI9uttG132SCz4cx1zXwN394w==} - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + '@rspack/binding@1.0.0': + resolution: {integrity: sha512-eLyqSEM1h/exJYn98k+9MRktP8AYDB13x5oVn8hoxVucuhk0TubFqQSX8h9SQcZp1O3j/Z8eWWwOaNPe3JU40Q==} - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} + '@rspack/core@0.4.0': + resolution: {integrity: sha512-GY8lsCGRzj1mj5q1Ss5kjazpSisT/HJdXpIU730pG4Os6mE2sGYVUJ0ncYRv/DEBcL1c2dVr5vtMKTHlNYRlfg==} + engines: {node: '>=16.0.0'} - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + '@rspack/core@1.0.0': + resolution: {integrity: sha512-F4RA9uOLLvD1oTKa96Gcly+Sro1qaqPNENadFyiPwepa7DrwexQa/ym6CQKbvKMOYGKlVSFDPUmgFAirz35ETg==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} + '@rspack/lite-tapable@1.0.0': + resolution: {integrity: sha512-7MZf4lburSUZoEenwazwUDKHhqyfnLCGnQ/tKcUtztfmVzfjZfRn/EaiT0AKkYGnL2U8AGsw89oUeVyvaOLVCw==} + engines: {node: '>=16.0.0'} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} + '@rspack/plugin-react-refresh@1.0.0': + resolution: {integrity: sha512-WvXkLewW5G0Mlo5H1b251yDh5FFiH4NDAbYlFpvFjcuXX2AchZRf9zdw57BDE/ADyWsJgA8kixN/zZWBTN3iYA==} + peerDependencies: + react-refresh: '>=0.10.0 <1.0.0' + peerDependenciesMeta: + react-refresh: + optional: true - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} + '@rushstack/node-core-library@5.5.1': + resolution: {integrity: sha512-ZutW56qIzH8xIOlfyaLQJFx+8IBqdbVCZdnj+XT1MorQ1JqqxHse8vbCpEM+2MjsrqcbxcgDIbfggB1ZSQ2A3g==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + '@rushstack/rig-package@0.5.3': + resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} - clean-css@5.3.3: - resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} - engines: {node: '>= 10.0'} + '@rushstack/terminal@0.13.3': + resolution: {integrity: sha512-fc3zjXOw8E0pXS5t9vTiIPx9gHA0fIdTXsu9mT4WbH+P3mYvnrX0iAQ5a6NvyK1+CqYWBTw/wVNx7SDJkI+WYQ==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} + '@rushstack/ts-command-line@4.22.3': + resolution: {integrity: sha512-edMpWB3QhFFZ4KtSzS8WNjBgR4PXPPOVrOHMbb7kNpmQ1UFS9HdVtjCXg1H5fG+xYAbeE+TMPcVPUyX2p84STA==} - cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} + '@shikijs/core@1.11.0': + resolution: {integrity: sha512-VbEhDAhT/2ozO0TPr5/ZQBO/NWLqtk4ZiBf6NplYpF38mKjNfMMied5fNEfIfYfN+cdKvhDB4VMcKvG/g9c3zg==} - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - cli-highlight@2.1.11: - resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} - engines: {node: '>=8.0.0', npm: '>=5.0.0'} - hasBin: true + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} - cli-spinners@2.6.1: - resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} - engines: {node: '>=6'} + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} + '@stylistic/eslint-plugin-js@2.7.1': + resolution: {integrity: sha512-4YgqaPhPV8nMAMWnRz+RB7S/CQh/ximISMj2QJ8HPveUzCqUBkeNV7iB4cggr4pkalcDCsIu0y4LhmrlS1yAgA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.9.1 - cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} + '@swc/core-darwin-arm64@1.7.6': + resolution: {integrity: sha512-6lYHey84ZzsdtC7UuPheM4Rm0Inzxm6Sb8U6dmKc4eCx8JL0LfWG4LC5RsdsrTxnjTsbriWlnhZBffh8ijUHIQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] - cli-width@4.1.0: - resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} - engines: {node: '>= 12'} + '@swc/core-darwin-x64@1.7.6': + resolution: {integrity: sha512-Fyl+8aH9O5rpx4O7r2KnsPpoi32iWoKOYKiipeTbGjQ/E95tNPxbmsz4yqE8Ovldcga60IPJ5OKQA3HWRiuzdw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] - client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + '@swc/core-linux-arm-gnueabihf@1.7.6': + resolution: {integrity: sha512-2WxYTqFaOx48GKC2cbO1/IntA+w+kfCFy436Ij7qRqqtV/WAvTM9TC1OmiFbqq436rSot52qYmX8fkwdB5UcLQ==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] - clipboardy@4.0.0: - resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} - engines: {node: '>=18'} + '@swc/core-linux-arm64-gnu@1.7.6': + resolution: {integrity: sha512-TBEGMSe0LhvPe4S7E68c7VzgT3OMu4VTmBLS7B2aHv4v8uZO92Khpp7L0WqgYU1y5eMjk+XLDLi4kokiNHv/Hg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + '@swc/core-linux-arm64-musl@1.7.6': + resolution: {integrity: sha512-QI8QGL0HGT42tj7F1A+YAzhGkJjUcvvTfI1e2m704W0Enl2/UIK9v5D1zvQzYwusRyKuaQfbeBRYDh0NcLOGLg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + '@swc/core-linux-x64-gnu@1.7.6': + resolution: {integrity: sha512-61AYVzhjuNQAVIKKWOJu3H0/pFD28RYJGxnGg3YMhvRLRyuWNyY5Nyyj2WkKcz/ON+g38Arlz00NT1LDIViRLg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} + '@swc/core-linux-x64-musl@1.7.6': + resolution: {integrity: sha512-hQFznpfLK8XajfAAN9Cjs0w/aVmO7iu9VZvInyrTCRcPqxV5O+rvrhRxKvC1LRMZXr5M6JRSRtepp5w+TK4kAw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} + '@swc/core-win32-arm64-msvc@1.7.6': + resolution: {integrity: sha512-Aqsd9afykVMuekzjm4X4TDqwxmG4CrzoOSFe0hZrn9SMio72l5eAPnMtYoe5LsIqtjV8MNprLfXaNbjHjTegmA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} + '@swc/core-win32-ia32-msvc@1.7.6': + resolution: {integrity: sha512-9h0hYnOeRVNeQgHQTvD1Im67faNSSzBZ7Adtxyu9urNLfBTJilMllFd2QuGHlKW5+uaT6ZH7ZWDb+c/enx7Lcg==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] - cluster-key-slot@1.1.2: - resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} - engines: {node: '>=0.10.0'} + '@swc/core-win32-x64-msvc@1.7.6': + resolution: {integrity: sha512-izeoB8glCSe6IIDQmrVm6bvR9muk9TeKgmtY7b6l1BwL4BFnTUk4dMmpbntT90bEVQn3JPCaPtUG4HfL8VuyuA==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + '@swc/core@1.7.6': + resolution: {integrity: sha512-FZxyao9eQks1MRmUshgsZTmlg/HB2oXK5fghkoWJm/1CU2q2kaJlVDll2as5j+rmWiwkp0Gidlq8wlXcEEAO+g==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + '@swc/helpers@0.5.1': + resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + '@swc/helpers@0.5.12': + resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + '@swc/types@0.1.12': + resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + '@tanstack/config@0.13.0': + resolution: {integrity: sha512-vkPmNYH/Ee8Zqn9f0lwB2tyi/Erg9kKmaywQZGBWRfaHwXUGahMWc0S8Fb2iS/SMa8YOkUUl1w79J0hELTY65A==} + engines: {node: '>=18'} hasBin: true - color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + '@tanstack/query-core@5.51.21': + resolution: {integrity: sha512-POQxm42IUp6n89kKWF4IZi18v3fxQWFRolvBA6phNVmA8psdfB1MvDnGacCJdS+EOX12w/CyHM62z//rHmYmvw==} - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + '@tanstack/query-devtools@5.51.16': + resolution: {integrity: sha512-ajwuq4WnkNCMj/Hy3KR8d3RtZ6PSKc1dD2vs2T408MdjgKzQ3klVoL6zDgVO7X+5jlb5zfgcO3thh4ojPhfIaw==} - colorspace@1.1.4: - resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + '@tanstack/react-query-devtools@5.51.21': + resolution: {integrity: sha512-mi5ef8dvsS48GsG6/8M60O2EgrzPK1kNPngOcHBTlIUrB5dGkxP9fuHf05GQRxtSp5W5GlyeUpzOmtkKNpf9dQ==} + peerDependencies: + '@tanstack/react-query': ^5.51.21 + react: ^18 || ^19 - combinate@1.1.11: - resolution: {integrity: sha512-+2MNAQ29HtNejOxkgaTQPC2Bm+pQvFuqf7o18uObl/Bx3daX06kjLUNY/qa9f+YSqzqm/ic3SdrlfN0fvTlw2g==} + '@tanstack/react-query@5.51.21': + resolution: {integrity: sha512-Q/V81x3sAYgCsxjwOkfLXfrmoG+FmDhLeHH5okC/Bp8Aaw2c33lbEo/mMcMnkxUPVtB2FLpzHT0tq3c+OlZEbw==} + peerDependencies: + react: ^18.0.0 - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + '@tanstack/react-store@0.5.5': + resolution: {integrity: sha512-1orYXGatBqXCYKuroFwV8Ll/6aDa5E3pU6RR4h7RvRk7TmxF1+zLCsWALZaeijXkySNMGmvawSbUXRypivg2XA==} + peerDependencies: + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} + '@tanstack/react-virtual@3.8.4': + resolution: {integrity: sha512-Dq0VQr3QlTS2qL35g360QaJWBt7tCn/0xw4uZ0dHXPLO1Ak4Z4nVX4vuj1Npg1b/jqNMDToRtR5OIxM2NXRBWg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} + '@tanstack/store@0.5.5': + resolution: {integrity: sha512-EOSrgdDAJExbvRZEQ/Xhh9iZchXpMN+ga1Bnk8Nmygzs8TfiE6hbzThF+Pr2G19uHL6+DTDTHhJ8VQiOd7l4tA==} - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + '@tanstack/virtual-core@3.8.4': + resolution: {integrity: sha512-iO5Ujgw3O1yIxWDe9FgUPNkGjyT657b1WNX52u+Wv1DyBFEpdCdGkuVaky0M3hHFqNWjAmHWTn4wgj9rTr7ZQg==} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + '@testing-library/dom@10.0.0': + resolution: {integrity: sha512-PmJPnogldqoVFf+EwbHvbBJ98MmqASV8kLrBYgsDNxQcFMeIS7JFL48sfyXvuMtgmWO/wMhh25odr+8VhDmn4g==} + engines: {node: '>=18'} - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} + '@testing-library/jest-dom@6.4.8': + resolution: {integrity: sha512-JD0G+Zc38f5MBHA4NgxQMR5XtO5Jx9g86jqturNTt2WUfRmLDIY7iKkWHDCCTiDuFMre6nxAD5wHw9W5kI4rGw==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + '@testing-library/react@16.0.0': + resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 + '@types/react-dom': ^18.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - compare-func@2.0.0: - resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + '@trpc/client@11.0.0-rc.477': + resolution: {integrity: sha512-Ah/Er3vxTm2bIEUcIrike7Z/8Yc+DkFveU2ZHQQ0+zY7yxs931438+4OEJuY/Xl/0p5OTDeZTm6HBuZ1REFiyA==} + peerDependencies: + '@trpc/server': 11.0.0-rc.477+a467f8314 - compare-versions@6.0.0-rc.1: - resolution: {integrity: sha512-cFhkjbGY1jLFWIV7KegECbfuyYPxSGvgGkdkfM+ibboQDoPwg2FRHm5BSNTOApiauRBzJIQH7qvOJs2sW5ueKQ==} + '@trpc/react-query@11.0.0-rc.477': + resolution: {integrity: sha512-1ZCAm0wv7yLmb3muq+5DTRxdKXzI1KjTrcM2+QRKCFu6EherGM8x6zGI36P9ZmC6o+SCoedzxqazDNe+kkqVqA==} + peerDependencies: + '@tanstack/react-query': ^5.49.2 + '@trpc/client': 11.0.0-rc.477+a467f8314 + '@trpc/server': 11.0.0-rc.477+a467f8314 + react: '>=18.2.0' + react-dom: '>=18.2.0' - compare-versions@6.1.1: - resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + '@trpc/server@11.0.0-rc.477': + resolution: {integrity: sha512-K6zmjRv96fWilqm/ETehEK1DWsy5bSyrs2xbsNzCbjguMgamMhOClRHgYzJcwgLp2kasJ7QgD9YbahOhV1/u1w==} - compress-commons@6.0.2: - resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} - engines: {node: '>= 14'} + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} + '@types/argparse@1.0.38': + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} - compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - computeds@0.0.1: - resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - concurrently@8.2.2: - resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} - engines: {node: ^14.13.0 || >=16.0.0} - hasBin: true + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + '@types/body-parser@1.19.2': + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} - connect-history-api-fallback@2.0.0: - resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} - engines: {node: '>=0.8'} + '@types/bonjour@3.5.13': + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} + '@types/braces@3.0.4': + resolution: {integrity: sha512-0WR3b8eaISjEW7RpZnclONaLFDf7buaowRHdqLp4vLj54AsSAYWfh3DRbfiYJY9XDxMgx1B4sE1Afw2PGpuHOA==} - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} + '@types/connect@3.4.35': + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} + '@types/conventional-commits-parser@5.0.0': + resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} - conventional-changelog-angular@7.0.0: - resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} - engines: {node: '>=16'} + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - conventional-commits-parser@5.0.0: - resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} - engines: {node: '>=16'} - hasBin: true + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - convex@1.13.2: - resolution: {integrity: sha512-XtXv5f5QXQgpcd+zcgecfIdUn1JmusGuHlP0c6XKxLEdA6v9dXI43/s5CgB3ioX1vwVTHpJBp0bqtpe37XXbuA==} - engines: {node: '>=16.15.1', npm: '>=7.0.0'} - hasBin: true - peerDependencies: - '@auth0/auth0-react': ^2.0.1 - '@clerk/clerk-react': ^4.12.8 || ^5.0.0 - react: ^17.0.2 || ^18.0.0 - react-dom: ^17.0.2 || ^18.0.0 - peerDependenciesMeta: - '@auth0/auth0-react': - optional: true - '@clerk/clerk-react': - optional: true - react: - optional: true - react-dom: - optional: true + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - cookie-es@1.1.0: - resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} + '@types/express-serve-static-core@4.17.36': + resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} + '@types/html-minifier-terser@6.1.0': + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - copy-anything@3.0.2: - resolution: {integrity: sha512-CzATjGXzUQ0EvuvgOCI6A4BGOo2bcVx8B+eC2nF862iv9fopnPQwlrbACakNCHRIJbCSBj+J/9JeDf60k64MkA==} - engines: {node: '>=12.13'} + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - core-js-compat@3.37.1: - resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + '@types/http-proxy@1.17.14': + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} - core-js@3.32.2: - resolution: {integrity: sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==} + '@types/jsesc@3.0.3': + resolution: {integrity: sha512-YZZ9ZOAiiSVC6KApWd/fTCDTdTOOMiRU4Lq3/VSmXNPse8IvCVOn5kYRRLu900Ub1lTPurVZFI5unEqLDJR7wg==} - core-js@3.38.1: - resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + '@types/micromatch@4.0.7': + resolution: {integrity: sha512-C/FMQ8HJAZhTsDpl4wDKZdMeeW5USjgzOczUwTGbRc1ZopPgOhIEnxY2ZgUrsuyy4DwK1JVOJZKFakv3TbCKiA==} - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} + '@types/mime@1.3.2': + resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true + '@types/mime@3.0.4': + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + + '@types/mute-stream@0.0.4': + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} - crc32-stream@6.0.0: - resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} - engines: {node: '>= 14'} + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - croner@8.0.2: - resolution: {integrity: sha512-HgSdlSUX8mIgDTTiQpWUP4qY4IFRMsduPCYdca34Pelt8MVdxdaDOzreFtCscA6R+cRZd7UbD1CD3uyx6J3X1A==} - engines: {node: '>=18.0'} + '@types/node@20.14.9': + resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} - cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + '@types/qs@6.9.7': + resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - crossws@0.2.4: - resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} - peerDependencies: - uWebSockets.js: '*' - peerDependenciesMeta: - uWebSockets.js: - optional: true + '@types/range-parser@1.2.4': + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + '@types/react-dom@18.3.0': + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} + '@types/react@18.3.3': + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} - css.escape@1.5.1: - resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true + '@types/retry@0.12.2': + resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} - cssstyle@4.0.1: - resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} - engines: {node: '>=18'} + '@types/send@0.17.1': + resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} - csstype@3.1.1: - resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + '@types/serve-index@1.9.4': + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + '@types/serve-static@1.15.5': + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} - current-git-branch@1.1.0: - resolution: {integrity: sha512-n5mwGZllLsFzxDPtTmadqGe4IIBPfqPbiIRX4xgFR9VK/Bx47U+94KiVkxSKAKN6/s43TlkztS2GZpgMKzwQ8A==} + '@types/sockjs@0.3.36': + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + '@types/statuses@2.0.5': + resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} - data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} + '@types/triple-beam@1.3.5': + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} + '@types/unist@3.0.2': + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} + '@types/wrap-ansi@3.0.0': + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} + '@types/ws@8.5.10': + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} - date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} + '@types/yargs-parser@21.0.0': + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dax-sh@0.39.2: - resolution: {integrity: sha512-gpuGEkBQM+5y6p4cWaw9+ePy5TNon+fdwFVtTI8leU3UhwhsBfPewRxMXGuQNC+M2b/MDGMlfgpqynkcd0C3FQ==} + '@types/yargs@17.0.32': + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - db0@0.1.4: - resolution: {integrity: sha512-Ft6eCwONYxlwLjBXSJxw0t0RYtA5gW9mq8JfBXn9TtC0nDPlqePAhpv9v4g9aONBi6JI1OXHTKKkUYGd+BOrCA==} + '@typescript-eslint/eslint-plugin@8.3.0': + resolution: {integrity: sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@libsql/client': ^0.5.2 - better-sqlite3: ^9.4.3 - drizzle-orm: ^0.29.4 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^9.9.1 + typescript: '*' peerDependenciesMeta: - '@libsql/client': - optional: true - better-sqlite3: - optional: true - drizzle-orm: + typescript: optional: true - de-indent@1.0.2: - resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + '@typescript-eslint/parser@8.3.0': + resolution: {integrity: sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - supports-color: '*' + eslint: ^9.9.1 + typescript: '*' peerDependenciesMeta: - supports-color: + typescript: optional: true - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + '@typescript-eslint/scope-manager@8.3.0': + resolution: {integrity: sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.3.0': + resolution: {integrity: sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - supports-color: '*' + typescript: '*' peerDependenciesMeta: - supports-color: + typescript: optional: true - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} - engines: {node: '>=6.0'} + '@typescript-eslint/types@8.3.0': + resolution: {integrity: sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.3.0': + resolution: {integrity: sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - supports-color: '*' + typescript: '*' peerDependenciesMeta: - supports-color: + typescript: optional: true - decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + '@typescript-eslint/utils@8.3.0': + resolution: {integrity: sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.9.1 - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} + '@typescript-eslint/visitor-keys@8.3.0': + resolution: {integrity: sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + '@vercel/nft@0.26.5': + resolution: {integrity: sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==} + engines: {node: '>=16'} + hasBin: true - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + '@vinxi/listhen@1.5.6': + resolution: {integrity: sha512-WSN1z931BtasZJlgPp704zJFnQFRg7yzSjkm3MzAWQYe4uXFXlFr1hc5Ac2zae5/HDOz5x1/zDM5Cb54vTCnWw==} + hasBin: true + + '@vinxi/plugin-directives@0.4.2': + resolution: {integrity: sha512-lQuKA6Bc6z3tGmqDTSyR2CC0aSOMc0nBlHmk+5HoROSJ9Lp24xVSJjqEyaBNEnUMaq4itw+4w2IGUX7+qoMhJQ==} + peerDependencies: + vinxi: ^0.4.2 + + '@vinxi/react-server-dom@0.0.3': + resolution: {integrity: sha512-ZJJZtuw1TbGFOBuDZBHmM3w40yzFpNFWoPCoC2QtZBkYEQXYF9sOHHxkjTfNvk4rSn/zaUAs6KNUbVRvebq/1Q==} engines: {node: '>=0.10.0'} + peerDependencies: + react: 0.0.0-experimental-035a41c4e-20230704 + react-dom: 0.0.0-experimental-035a41c4e-20230704 + vite: ^4.3.9 - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} - engines: {node: '>=18'} + '@vinxi/react@0.2.4': + resolution: {integrity: sha512-FYmmAWEzInpx5OAFGFSGlVauTdzDhVg8vVhqoc3DlhZAvsux3WyY/I3qp1IkCXI+mIrDFetFOZCahi3FkpSEWA==} - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} - engines: {node: '>=18'} + '@vinxi/server-components@0.4.2': + resolution: {integrity: sha512-uQFQjfq7ZYBTYXij7NWQ7aKKH0HvpboLG/Oqxj+f3RNv09dY9xLlD03VdBvgJjx4TtssliGY2rYeFDjkrByVVw==} + peerDependencies: + vinxi: ^0.4.2 - default-gateway@6.0.3: - resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} - engines: {node: '>= 10'} + '@vinxi/server-functions@0.4.2': + resolution: {integrity: sha512-hI6MstgFx5LqR0ZFI2NU7WVBfSuurjD/NmQBE38FC1TY9gOwXCqVXi8aQ/DEUnO5mOGNBE0iPohIUxmsbHfnUQ==} + peerDependencies: + vinxi: ^0.4.2 - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + '@vitejs/plugin-react@4.3.1': + resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + '@volar/language-core@2.4.0': + resolution: {integrity: sha512-FTla+khE+sYK0qJP+6hwPAAUwiNHVMph4RUXpxf/FIPKUP61NFrVZorml4mjFShnueR2y9/j8/vnh09YwVdH7A==} - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + '@volar/source-map@2.4.0': + resolution: {integrity: sha512-2ceY8/NEZvN6F44TXw2qRP6AQsvCYhV2bxaBPWxV9HqIfkbRydSksTFObCF1DBDNBfKiZTS8G/4vqV6cvjdOIQ==} - denque@2.1.0: - resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} - engines: {node: '>=0.10'} + '@volar/typescript@2.4.0': + resolution: {integrity: sha512-9zx3lQWgHmVd+JRRAHUSRiEhe4TlzL7U7e6ulWXOxHH/WNYxzKwCvZD7WYWEZFdw4dHfTD9vUR0yPQO6GilCaQ==} - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} + '@vue/compiler-core@3.4.27': + resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==} - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} + '@vue/compiler-dom@3.4.27': + resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + '@vue/language-core@2.0.29': + resolution: {integrity: sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + '@vue/shared@3.4.27': + resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==} - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + '@web3-storage/multipart-parser@1.0.0': + resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} - detect-file@1.0.0: - resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} - engines: {node: '>=0.10.0'} + '@webassemblyjs/ast@1.12.1': + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} - engines: {node: '>=8'} + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + '@webassemblyjs/helper-buffer@1.12.1': + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@webassemblyjs/helper-wasm-section@1.12.1': + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + '@webassemblyjs/wasm-edit@1.12.1': + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + '@webassemblyjs/wasm-gen@1.12.1': + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} - dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + '@webassemblyjs/wasm-opt@1.12.1': + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} - dom-accessibility-api@0.6.3: - resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + '@webassemblyjs/wasm-parser@1.12.1': + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} - dom-converter@0.2.0: - resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + '@webassemblyjs/wast-printer@1.12.1': + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} - dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + '@webpack-cli/configtest@2.1.1': + resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + '@webpack-cli/info@2.0.2': + resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x - domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} + '@webpack-cli/serve@2.0.5': + resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + webpack-dev-server: '*' + peerDependenciesMeta: + webpack-dev-server: + optional: true - domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} + '@yarnpkg/lockfile@1.1.0': + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - dot-prop@8.0.2: - resolution: {integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==} - engines: {node: '>=16'} + '@yarnpkg/parsers@3.0.0-rc.46': + resolution: {integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==} + engines: {node: '>=14.15.0'} - dotenv-expand@11.0.6: - resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==} - engines: {node: '>=12'} + '@zkochan/js-yaml@0.0.7': + resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} + hasBin: true - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} - electron-to-chromium@1.5.4: - resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + acorn-loose@8.3.0: + resolution: {integrity: sha512-75lAs9H19ldmW+fAbyqHdjgdCrz0pWGXKmnqFoh8PyVd1L2RIb4RzYrSjmopeqv3E1G3/Pimu6GgLlrGbrkF7w==} + engines: {node: '>=0.4.0'} - emojilib@2.4.0: - resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + acorn-typescript@1.4.13: + resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} + peerDependencies: + acorn: '>=8.9.0' - enabled@2.0.0: - resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} - enhanced-resolve@5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} - engines: {node: '>=10.13.0'} + agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} - enhanced-resolve@5.17.0: - resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} - engines: {node: '>=10.13.0'} + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} - enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true - envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 - environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} - engines: {node: '>=18'} + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} + ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} - es-iterator-helpers@1.0.18: - resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} - engines: {node: '>= 0.4'} + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} - es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} - esbuild-register@3.6.0: - resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} - peerDependencies: - esbuild: '>=0.12 <1' + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} - esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} - engines: {node: '>=12'} - hasBin: true + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - hasBin: true - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + archiver-utils@5.0.2: + resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} + engines: {node: '>= 14'} - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} + archiver@7.0.1: + resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} + engines: {node: '>= 14'} - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} + deprecated: This package is no longer supported. - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - eslint-compat-utils@0.5.1: - resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} - engines: {node: '>=12'} - peerDependencies: - eslint: ^8.57.0 + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - eslint-config-react-app@7.0.1: - resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} - engines: {node: '>=14.0.0'} - peerDependencies: - eslint: ^8.57.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + aria-hidden@1.2.3: + resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + engines: {node: '>=10'} - eslint-module-utils@2.8.1: - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - eslint-plugin-es-x@7.8.0: - resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: ^8.57.0 + arktype@2.0.0-beta.5: + resolution: {integrity: sha512-3bNUyiA2iuvyV/rfiErLli9HrrvC6W4XT8Ja6SAEihljM60PRQhYJEr5jM4MGGtj1k/oFxgOkHd++VjQrm6SoA==} - eslint-plugin-flowtype@8.0.3: - resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@babel/plugin-syntax-flow': ^7.14.5 - '@babel/plugin-transform-react-jsx': ^7.14.9 - eslint: ^8.57.0 + array-each@1.0.1: + resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} + engines: {node: '>=0.10.0'} - eslint-plugin-import-x@3.1.0: - resolution: {integrity: sha512-/UbPA+bYY7nIxcjL3kpcDY3UNdoLHFhyBFzHox2M0ypcUoueTn6woZUUmzzi5et/dXChksasYYFeKE2wshOrhg==} - engines: {node: '>=16'} - peerDependencies: - eslint: ^8.57.0 + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + array-slice@1.1.0: + resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} + engines: {node: '>=0.10.0'} + + assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - eslint-plugin-import@2.29.1: - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^8.57.0 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint-plugin-jest@25.7.0: - resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 - eslint: ^8.57.0 - jest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - jest: - optional: true + astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + hasBin: true - eslint-plugin-jsx-a11y@6.8.0: - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^8.57.0 + async-exit-hook@2.0.1: + resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} + engines: {node: '>=0.12.0'} - eslint-plugin-n@17.10.2: - resolution: {integrity: sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 + async-sema@3.1.1: + resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - eslint-plugin-react-debug@1.12.3: - resolution: {integrity: sha512-rtKsmDWFz1aG5EMj27fNfbVIxsdhqA1MIv9G4CSRhXWgqlIdg4NMWvk+2yRJjBzLWfAh1TlpLeXjuLd0PDmreQ==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} - peerDependencies: - eslint: ^8.57.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - eslint-plugin-react-dom@1.12.3: - resolution: {integrity: sha512-bZOcY1Dew7WqYrdn9FLQPTL9U0qeBIpSpC2mOXKxgsvGC/B+BYQKp89K05WeRBubmqDfDKVdrqVcAku2f7BU7w==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} - peerDependencies: - eslint: ^8.57.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - eslint-plugin-react-hooks-extra@1.12.3: - resolution: {integrity: sha512-QdTOf+GddxSBA3UBme+2DwUaUJA4YzYIP+JYI3AD8Ja04nEoMqvSu4SOXVtmRr1aLWeWgR/fC3SNFXgGZUaI9A==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true peerDependencies: - eslint: ^8.57.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + postcss: ^8.1.0 - eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^8.57.0 + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} - eslint-plugin-react-naming-convention@1.12.3: - resolution: {integrity: sha512-PKKXx3Wvh/KUftE7nh+imyOrUzkIyF41i9TaPbDxuEt+ggIY0cuvYOE/bcDCVJBDq0ROb2ZhERe9i46RaJoG/Q==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} - peerDependencies: - eslint: ^8.57.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + axios@1.7.2: + resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} - eslint-plugin-react-web-api@1.12.3: - resolution: {integrity: sha512-I5UgttFfAUYQ4lSWoHs02pHb0Pp2ou3xJ4L3xRv7Uce2s8sRPKazYOt7frxqfvBMxdzStS4/g0Gu7k5/PtPypA==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} - peerDependencies: - eslint: ^8.57.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} - eslint-plugin-react-x@1.12.3: - resolution: {integrity: sha512-LfmjFDiqleIEFqOOcAbsPqQnTkkT68tlYEpeXZBa+IWUtQVC4jxIRTmus+m/h9Td6wf2XGVEzwwSqmYQQzcb7w==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} - peerDependencies: - eslint: ^8.57.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + babel-dead-code-elimination@1.0.6: + resolution: {integrity: sha512-JxFi9qyRJpN0LjEbbjbN8g0ux71Qppn9R8Qe3k6QzHg2CaKsbUQtbn307LQGiDLGjV6JCtEFqfxzVig9MyDCHQ==} + + babel-plugin-add-module-exports@0.2.1: + resolution: {integrity: sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - eslint-plugin-react@7.34.1: - resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^8.57.0 + bare-events@2.2.2: + resolution: {integrity: sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==} - eslint-plugin-require-extensions@0.1.3: - resolution: {integrity: sha512-T3c1PZ9PIdI3hjV8LdunfYI8gj017UQjzAnCrxuo3wAjneDbTPHdE3oNWInOjMA+z/aBkUtlW5vC0YepYMZIug==} - engines: {node: '>=16'} - peerDependencies: - eslint: ^8.57.0 + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - eslint-plugin-testing-library@5.11.1: - resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} - peerDependencies: - eslint: ^8.57.0 + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} + birecord@0.1.1: + resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} - 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} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + bonjour-service@1.2.1: + resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} - espree@10.1.0: - resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} + btoa@1.2.1: + resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} + engines: {node: '>= 0.4.0'} + hasBin: true - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} - execa@0.6.3: - resolution: {integrity: sha512-/teX3MDLFBdYUhRk8WCBYboIMUmqeizu0m9Z3YF3JWrbEh/SlZg00vLJSaAGWw3wrZ9tE0buNw79eaAPYhUuvg==} - engines: {node: '>=4'} + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + c12@1.10.0: + resolution: {integrity: sha512-0SsG7UDhoRWcuSvKWHaXmu5uNjDCDN3nkQLRL4Q42IlFy+ze58FcCoI3uPwINXinkz7ZinbhEgyzYFw9u9ZV8g==} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} - expand-tilde@2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} - express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} - engines: {node: '>= 0.10.0'} + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - fast-decode-uri-component@1.0.1: - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} - fast-deep-equal@2.0.1: - resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} + camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + caniuse-lite@1.0.30001653: + resolution: {integrity: sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==} - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} - fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - fastest-levenshtein@1.0.16: - resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} - engines: {node: '>= 4.9.1'} + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} - fecha@4.2.3: - resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} - fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} - fflate@0.8.2: - resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + cli-spinners@2.6.1: + resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} + engines: {node: '>=6'} - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} - findup-sync@5.0.0: - resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} - engines: {node: '>= 10.13.0'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} - fined@2.0.0: - resolution: {integrity: sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==} - engines: {node: '>= 10.13.0'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} - flagged-respawn@2.0.0: - resolution: {integrity: sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==} - engines: {node: '>= 10.13.0'} + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + clipboardy@4.0.0: + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} + engines: {node: '>=18'} - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} - fn.name@1.1.0: - resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} - follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} - for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} - for-own@1.0.0: - resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} - engines: {node: '>=0.10.0'} + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true - framer-motion@11.3.21: - resolution: {integrity: sha512-D+hfIsvzV8eL/iycld4K+tKlg2Q2LdwnrcBEohtGw3cG1AIuNYATbT5RUqIM1ndsAk+EfGhoSGf0UaiFodc5Tw==} - peerDependencies: - '@emotion/is-prop-valid': '*' - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - '@emotion/is-prop-valid': - optional: true - react: - optional: true - react-dom: - optional: true + color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - front-matter@4.0.2: - resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} + colorspace@1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + combinate@1.1.11: + resolution: {integrity: sha512-+2MNAQ29HtNejOxkgaTQPC2Bm+pQvFuqf7o18uObl/Bx3daX06kjLUNY/qa9f+YSqzqm/ic3SdrlfN0fvTlw2g==} - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + compare-versions@6.0.0-rc.1: + resolution: {integrity: sha512-cFhkjbGY1jLFWIV7KegECbfuyYPxSGvgGkdkfM+ibboQDoPwg2FRHm5BSNTOApiauRBzJIQH7qvOJs2sW5ueKQ==} - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. + compare-versions@6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + compress-commons@6.0.2: + resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} + engines: {node: '>= 14'} - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} + computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - get-port-please@3.1.2: - resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + concurrently@8.2.2: + resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} + engines: {node: ^14.13.0 || >=16.0.0} + hasBin: true - get-port@7.1.0: - resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} - engines: {node: '>=16'} + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - get-stream@3.0.0: - resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} - engines: {node: '>=4'} + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} - get-tsconfig@4.7.5: - resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} - giget@1.2.1: - resolution: {integrity: sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==} + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} hasBin: true - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + convex@1.13.2: + resolution: {integrity: sha512-XtXv5f5QXQgpcd+zcgecfIdUn1JmusGuHlP0c6XKxLEdA6v9dXI43/s5CgB3ioX1vwVTHpJBp0bqtpe37XXbuA==} + engines: {node: '>=16.15.1', npm: '>=7.0.0'} + hasBin: true + peerDependencies: + '@auth0/auth0-react': ^2.0.1 + '@clerk/clerk-react': ^4.12.8 || ^5.0.0 + react: ^17.0.2 || ^18.0.0 + react-dom: ^17.0.2 || ^18.0.0 + peerDependenciesMeta: + '@auth0/auth0-react': + optional: true + '@clerk/clerk-react': + optional: true + react: + optional: true + react-dom: + optional: true - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + cookie-es@1.1.0: + resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} - global-modules@1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} + copy-anything@3.0.2: + resolution: {integrity: sha512-CzATjGXzUQ0EvuvgOCI6A4BGOo2bcVx8B+eC2nF862iv9fopnPQwlrbACakNCHRIJbCSBj+J/9JeDf60k64MkA==} + engines: {node: '>=12.13'} - global-prefix@1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} + core-js@3.32.2: + resolution: {integrity: sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==} - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} + core-js@3.38.1: + resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - globals@15.9.0: - resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} - engines: {node: '>=18'} + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} + crc32-stream@6.0.0: + resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} + engines: {node: '>= 14'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + croner@8.0.2: + resolution: {integrity: sha512-HgSdlSUX8mIgDTTiQpWUP4qY4IFRMsduPCYdca34Pelt8MVdxdaDOzreFtCscA6R+cRZd7UbD1CD3uyx6J3X1A==} + engines: {node: '>=18.0'} - globby@14.0.1: - resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} - engines: {node: '>=18'} + cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} - goober@2.1.14: - resolution: {integrity: sha512-4UpC0NdGyAFqLNPnhCT2iHpza2q+RAY3GV85a/mRPdzyPQMsj0KmMMuetdIkzWRbJ+Hgau1EZztq8ImmiMGhsg==} + crossws@0.2.4: + resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} peerDependencies: - csstype: ^3.0.10 + uWebSockets.js: '*' + peerDependenciesMeta: + uWebSockets.js: + optional: true - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true - graphql@16.9.0: - resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + cssstyle@4.0.1: + resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} + engines: {node: '>=18'} - gzip-size@7.0.0: - resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + csstype@3.1.1: + resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - h3@1.11.1: - resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - handle-thing@2.0.1: - resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + current-git-branch@1.1.0: + resolution: {integrity: sha512-n5mwGZllLsFzxDPtTmadqGe4IIBPfqPbiIRX4xgFR9VK/Bx47U+94KiVkxSKAKN6/s43TlkztS2GZpgMKzwQ8A==} - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dax-sh@0.39.2: + resolution: {integrity: sha512-gpuGEkBQM+5y6p4cWaw9+ePy5TNon+fdwFVtTI8leU3UhwhsBfPewRxMXGuQNC+M2b/MDGMlfgpqynkcd0C3FQ==} - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} + db0@0.1.4: + resolution: {integrity: sha512-Ft6eCwONYxlwLjBXSJxw0t0RYtA5gW9mq8JfBXn9TtC0nDPlqePAhpv9v4g9aONBi6JI1OXHTKKkUYGd+BOrCA==} + peerDependencies: + '@libsql/client': ^0.5.2 + better-sqlite3: ^9.4.3 + drizzle-orm: ^0.29.4 + peerDependenciesMeta: + '@libsql/client': + optional: true + better-sqlite3: + optional: true + drizzle-orm: + optional: true - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - headers-polyfill@4.0.3: - resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} - highlight.js@10.7.3: - resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - - hpack.js@2.1.6: - resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} engines: {node: '>=18'} - html-entities@2.5.2: - resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} - html-minifier-terser@6.1.0: - resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} - engines: {node: '>=12'} - hasBin: true + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - html-rspack-plugin@5.5.7: - resolution: {integrity: sha512-7dNAURj9XBHWoYg59F8VU6hT7J7w+od4Lr5hc/rrgN6sy6QfqVpoPqW9Qw4IGFOgit8Pul7iQp1yysBSIhOlsg==} - engines: {node: '>=10.13.0'} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} - html-webpack-plugin@5.6.0: - resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} - engines: {node: '>=10.13.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.20.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} - htmlparser2@6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} - http-deceiver@1.2.7: - resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - http-parser-js@0.5.8: - resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - http-proxy-middleware@2.0.6: - resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - http-proxy@1.18.1: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} - http-shutdown@1.2.2: - resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true - https-proxy-agent@5.0.0: - resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} - engines: {node: '>= 6'} + detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - https-proxy-agent@7.0.5: - resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} - engines: {node: '>= 14'} + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - httpxy@0.1.5: - resolution: {integrity: sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ==} + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - hyperdyperid@1.2.0: - resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} - engines: {node: '>=10.18'} + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} - ignore-walk@5.0.1: - resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - immer@10.1.1: - resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} - import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - import-meta-resolve@4.1.0: - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + dot-prop@8.0.2: + resolution: {integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==} + engines: {node: '>=16'} - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} + dotenv-expand@11.0.6: + resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==} + engines: {node: '>=12'} - 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. + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} - inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} + electron-to-chromium@1.5.4: + resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} - interpret@3.1.1: - resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} - engines: {node: '>=10.13.0'} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - ioredis@5.4.1: - resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==} - engines: {node: '>=12.22.0'} + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} + enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} - iron-webcrypto@1.2.1: - resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - is-absolute@1.0.0: - resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} - engines: {node: '>=0.10.0'} + enhanced-resolve@5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} + enhanced-resolve@5.17.0: + resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} + engines: {node: '>=10.13.0'} - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} + enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} - is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} + envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} + engines: {node: '>=4'} + hasBin: true - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} - is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} hasBin: true - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} hasBin: true - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} - is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} - is-git-repository@1.1.1: - resolution: {integrity: sha512-hxLpJytJnIZ5Og5QsxSkzmb8Qx8rGau9bio1JN/QtXcGEFuSsQYau0IiqlsCwftsfVYjF1mOq6uLdmwNSspgpA==} + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} - is-immutable-type@5.0.0: - resolution: {integrity: sha512-mcvHasqbRBWJznuPqqHRKiJgYAz60sZ0mvO3bN70JbkuK7ksfmgc489aKZYxMEjIbRvyOseaTjaRZLRF/xFeRA==} + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} peerDependencies: - eslint: ^8.57.0 - typescript: '>=4.7.4' + eslint: ^9.9.1 - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: ^9.9.1 - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} + eslint-plugin-import-x@4.1.1: + resolution: {integrity: sha512-dBEM8fACIFNt4H7GoOaRmnH6evJW6JSTJTYYgmRd3vI4geBTjgDM/JyUDKUwIw0HDSyI+u7Vs3vFRXUo/BOAtA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.9.1 - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + eslint-plugin-n@17.10.2: + resolution: {integrity: sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.9.1 - is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} + eslint-plugin-react-debug@1.12.3: + resolution: {integrity: sha512-rtKsmDWFz1aG5EMj27fNfbVIxsdhqA1MIv9G4CSRhXWgqlIdg4NMWvk+2yRJjBzLWfAh1TlpLeXjuLd0PDmreQ==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^9.9.1 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} + eslint-plugin-react-dom@1.12.3: + resolution: {integrity: sha512-bZOcY1Dew7WqYrdn9FLQPTL9U0qeBIpSpC2mOXKxgsvGC/B+BYQKp89K05WeRBubmqDfDKVdrqVcAku2f7BU7w==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^9.9.1 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true - is-network-error@1.1.0: - resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} - engines: {node: '>=16'} + eslint-plugin-react-hooks-extra@1.12.3: + resolution: {integrity: sha512-QdTOf+GddxSBA3UBme+2DwUaUJA4YzYIP+JYI3AD8Ja04nEoMqvSu4SOXVtmRr1aLWeWgR/fC3SNFXgGZUaI9A==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^9.9.1 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true - is-node-process@1.2.0: - resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614: + resolution: {integrity: sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^9.9.1 - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + eslint-plugin-react-naming-convention@1.12.3: + resolution: {integrity: sha512-PKKXx3Wvh/KUftE7nh+imyOrUzkIyF41i9TaPbDxuEt+ggIY0cuvYOE/bcDCVJBDq0ROb2ZhERe9i46RaJoG/Q==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^9.9.1 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + eslint-plugin-react-web-api@1.12.3: + resolution: {integrity: sha512-I5UgttFfAUYQ4lSWoHs02pHb0Pp2ou3xJ4L3xRv7Uce2s8sRPKazYOt7frxqfvBMxdzStS4/g0Gu7k5/PtPypA==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^9.9.1 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true - is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} + eslint-plugin-react-x@1.12.3: + resolution: {integrity: sha512-LfmjFDiqleIEFqOOcAbsPqQnTkkT68tlYEpeXZBa+IWUtQVC4jxIRTmus+m/h9Td6wf2XGVEzwwSqmYQQzcb7w==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^9.9.1 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} + eslint-plugin-require-extensions@0.1.3: + resolution: {integrity: sha512-T3c1PZ9PIdI3hjV8LdunfYI8gj017UQjzAnCrxuo3wAjneDbTPHdE3oNWInOjMA+z/aBkUtlW5vC0YepYMZIug==} + engines: {node: '>=16'} + peerDependencies: + eslint: ^9.9.1 - is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} + eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.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} - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - is-primitive@3.0.1: - resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} - engines: {node: '>=0.10.0'} + eslint@9.9.1: + resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true - is-relative@1.0.0: - resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} - engines: {node: '>=0.10.0'} + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} - is-text-path@2.0.0: - resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} - engines: {node: '>=8'} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - is-unc-path@1.0.0: - resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} - engines: {node: '>=0.10.0'} + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@0.6.3: + resolution: {integrity: sha512-/teX3MDLFBdYUhRk8WCBYboIMUmqeizu0m9Z3YF3JWrbEh/SlZg00vLJSaAGWw3wrZ9tE0buNw79eaAPYhUuvg==} + engines: {node: '>=4'} - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - is-uuid@1.0.2: - resolution: {integrity: sha512-tCByphFcJgf2qmiMo5hMCgNAquNSagOetVetDvBXswGkNfoyEMvGH1yDlF8cbZbKnbVBr4Y5/rlpMz9umxyBkQ==} - - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} - is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} + express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} - is-what@4.1.8: - resolution: {integrity: sha512-yq8gMao5upkPoGEU9LsB2P+K3Kt8Q3fQFCGyNCWOAnJAMzEXVV9drYb0TXr42TTliLLhKIBvulgAXgtLLnwzGA==} - engines: {node: '>=12.13'} + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} + fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + fast-deep-equal@2.0.1: + resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - is64bit@2.0.0: - resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} - engines: {node: '>=18'} + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - isbot@5.1.14: - resolution: {integrity: sha512-4X8KZHyaIqXOqEv1qfZOqshMX3r7Q/VtMEMzuGPZljDMEIGpX7bcGODR9gZztXdcPBEJpNioQXXBJun+xi2G5g==} - engines: {node: '>=18'} + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} - jackspeak@3.4.0: - resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} - engines: {node: '>=14'} + fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} - jju@1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - js-cookie@3.0.5: - resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} - engines: {node: '>=14'} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + findup-sync@5.0.0: + resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} + engines: {node: '>= 10.13.0'} - jsdom@25.0.0: - resolution: {integrity: sha512-OhoFVT59T7aEq75TVw9xxEfkXgacpqAhQaYgP9y/fDqWQCMB/b1H66RfmPm/MaeaAIU9nDwMOVTlPN51+ao6CQ==} - engines: {node: '>=18'} - peerDependencies: - canvas: ^2.11.2 - peerDependenciesMeta: - canvas: - optional: true + fined@2.0.0: + resolution: {integrity: sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==} + engines: {node: '>= 10.13.0'} - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true + flagged-respawn@2.0.0: + resolution: {integrity: sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==} + engines: {node: '>= 10.13.0'} - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - json-parse-even-better-errors@3.0.2: - resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + for-own@1.0.0: + resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} + engines: {node: '>=0.10.0'} - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} - jsonata@1.8.7: - resolution: {integrity: sha512-tOW2/hZ+nR2bcQZs+0T62LVe5CHaNa3laFFWb/262r39utN6whJGBF7IR2Wq1QXrDbhftolk5gggW8uUJYlBTQ==} - engines: {node: '>= 8'} + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} - jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + framer-motion@11.3.21: + resolution: {integrity: sha512-D+hfIsvzV8eL/iycld4K+tKlg2Q2LdwnrcBEohtGw3cG1AIuNYATbT5RUqIM1ndsAk+EfGhoSGf0UaiFodc5Tw==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} + front-matter@4.0.2: + resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} - jwt-decode@3.1.2: - resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} - klona@2.0.6: - resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} - knitwork@1.1.0: - resolution: {integrity: sha512-oHnmiBUVHz1V+URE77PNot2lv3QiYU2zQf1JjOVkMt3YDKGbu8NAFr+c4mcNOhdsGrB/VpVbRwPwhiXrPhxQbw==} - - kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - kuler@2.0.0: - resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] - ky@1.5.0: - resolution: {integrity: sha512-bkQo+UqryW6Zmo/DsixYZE4Z9t2mzvNMhceyIhuMuInb3knm5Q+GNGMKveydJAj+Z6piN1SwI6eR/V0G+Z0BtA==} - engines: {node: '>=18'} + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] - language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. - launch-editor@2.8.0: - resolution: {integrity: sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==} + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} - launchdarkly-eventsource@2.0.3: - resolution: {integrity: sha512-VhFjppK7jXlcEKaS7bxdoibB5j01NKyeDR7a8XfssdDGNWCTsbF0/5IExSmPi44eDncPhkoPNxlSZhEZvrbD5w==} - engines: {node: '>=0.12.0'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} - launchdarkly-js-sdk-common@5.2.0: - resolution: {integrity: sha512-aLv2ZrUv229RIwLtFhdILu2aJS/fqGSJzTk4L/bCDZA8RuIh7PutI3ui/AJeNnzPzjKzdEQZw6wVhkVc84baog==} + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - launchdarkly-node-client-sdk@3.2.1: - resolution: {integrity: sha512-vIn1kFCWSX83M2hHIQEw+TyEZFqcXn4DTKja2Vdt9NFgs0I2BA70ENA+zgz8OSt+VqvTciZV0l5X90Uyv+3vsQ==} - engines: {node: '>= 12.0.0'} + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} - lazystream@1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} - engines: {node: '>= 0.6.3'} + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} - levdist@1.0.0: - resolution: {integrity: sha512-YguwC2spb0pqpJM3a5OsBhih/GG2ZHoaSHnmBqhEI7997a36buhqcRTegEjozHxyxByIwLpZHZTVYMThq+Zd3g==} + get-port-please@3.1.2: + resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + get-port@7.1.0: + resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} + engines: {node: '>=16'} - liftoff@5.0.0: - resolution: {integrity: sha512-a5BQjbCHnB+cy+gsro8lXJ4kZluzOijzJ1UVVfyJYZC+IP2pLv1h4+aysQeKuTmyO8NAqfyQAk4HWaP/HjcKTg==} - engines: {node: '>=10.13.0'} + get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} - line-diff@2.1.1: - resolution: {integrity: sha512-vswdynAI5AMPJacOo2o+JJ4caDJbnY2NEqms4MhMW0NJbjh3skP/brpVTAgBxrg55NRZ2Vtw88ef18hnagIpYQ==} + get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + giget@1.2.1: + resolution: {integrity: sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==} + hasBin: true - lines-and-columns@2.0.4: - resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} - linkify-it@5.0.0: - resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} - listhen@1.7.2: - resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} - lodash.isarguments@3.1.0: - resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + globals@15.9.0: + resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} + engines: {node: '>=18'} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + globby@14.0.1: + resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} + engines: {node: '>=18'} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + goober@2.1.14: + resolution: {integrity: sha512-4UpC0NdGyAFqLNPnhCT2iHpza2q+RAY3GV85a/mRPdzyPQMsj0KmMMuetdIkzWRbJ+Hgau1EZztq8ImmiMGhsg==} + peerDependencies: + csstype: ^3.0.10 - logform@2.6.1: - resolution: {integrity: sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==} - engines: {node: '>= 12.0.0'} + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - lru-cache@10.2.2: - resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} - engines: {node: 14 || >=16.14} + gzip-size@7.0.0: + resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + h3@1.11.1: + resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} - lunr@2.3.9: - resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - magic-string@0.30.11: - resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} - magicast@0.2.11: - resolution: {integrity: sha512-6saXbRDA1HMkqbsvHOU6HBjCVgZT460qheRkLhJQHWAbhXoWESI3Kn/dGGXyKs15FFKR85jsUqFx2sMK0wy/5g==} + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} - map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} - markdown-it@14.1.0: - resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - marked-terminal@7.1.0: - resolution: {integrity: sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==} - engines: {node: '>=16.0.0'} - peerDependencies: - marked: '>=1 <14' + headers-polyfill@4.0.3: + resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} - marked@9.1.6: - resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} - engines: {node: '>= 16'} - hasBin: true + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} - mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - memfs@4.9.3: - resolution: {integrity: sha512-bsYSSnirtYTWi1+OPMFb0M048evMKyUYe0EbtuGQgq6BVQM1g1W8/KIUJCCvjgI/El0j6Q4WsmMiBwLUBSw8LA==} - engines: {node: '>= 4.0.0'} + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} - meow@12.1.1: - resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} - engines: {node: '>=16.10'} + html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} - merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + html-rspack-plugin@5.5.7: + resolution: {integrity: sha512-7dNAURj9XBHWoYg59F8VU6hT7J7w+od4Lr5hc/rrgN6sy6QfqVpoPqW9Qw4IGFOgit8Pul7iQp1yysBSIhOlsg==} + engines: {node: '>=10.13.0'} - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + html-webpack-plugin@5.6.0: + resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} engines: {node: '>= 0.6'} - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true + http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} - mime@4.0.3: - resolution: {integrity: sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==} - engines: {node: '>=16'} - hasBin: true + http-proxy-middleware@2.0.6: + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} + http-shutdown@1.2.2: + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} + https-proxy-agent@5.0.0: + resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} + engines: {node: '>= 6'} - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + engines: {node: '>= 14'} - minimatch@3.0.8: - resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + httpxy@0.1.5: + resolution: {integrity: sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ==} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} + ignore-walk@5.0.1: + resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + immer@10.1.1: + resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} - mixpanel@0.18.0: - resolution: {integrity: sha512-VyUoiLB/S/7abYYHGD5x0LijeuJCUabG8Hb+FvYU3Y99xHf1Qh+s4/pH9lt50fRitAHncWbU1FE01EknUfVVjQ==} - engines: {node: '>=10.0'} + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} - mlly@1.7.0: - resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} + import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + 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. - msw@2.3.5: - resolution: {integrity: sha512-+GUI4gX5YC5Bv33epBrD+BGdmDvBg2XGruiWnI3GbIbRmMMBeZ5gs3mJ51OWSGHgJKztZ8AtZeYMMNMVrje2/Q==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - typescript: '>= 4.7.x' - peerDependenciesMeta: - typescript: - optional: true + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - muggle-string@0.4.1: - resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - multicast-dns@7.2.5: - resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} - hasBin: true + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - mute-stream@1.0.0: - resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + ioredis@5.4.1: + resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==} + engines: {node: '>=12.22.0'} - natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} - nitropack@2.9.6: - resolution: {integrity: sha512-HP2PE0dREcDIBVkL8Zm6eVyrDd10/GI9hTL00PHvjUM8I9Y/2cv73wRDmxNyInfrx/CJKHATb2U/pQrqpzJyXA==} - engines: {node: ^16.11.0 || >=17.0.0} - hasBin: true - peerDependencies: - xml2js: ^0.6.2 - peerDependenciesMeta: - xml2js: - optional: true + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - node-addon-api@7.1.0: - resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} - engines: {node: ^16 || ^18 || >= 20} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} - node-emoji@2.1.3: - resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} - engines: {node: '>=18'} + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} - node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true - node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} - node-gyp-build@4.8.1: - resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} - hasBin: true + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} - node-localstorage@1.3.1: - resolution: {integrity: sha512-NMWCSWWc6JbHT5PyWlNT2i8r7PgGYXVntmKawY83k/M0UJScZ5jirb61TLnqKwd815DfBQu+lR3sRw08SPzIaQ==} - engines: {node: '>=0.12'} + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} - node-machine-id@1.1.12: - resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + is-git-repository@1.1.1: + resolution: {integrity: sha512-hxLpJytJnIZ5Og5QsxSkzmb8Qx8rGau9bio1JN/QtXcGEFuSsQYau0IiqlsCwftsfVYjF1mOq6uLdmwNSspgpA==} - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} + is-immutable-type@5.0.0: + resolution: {integrity: sha512-mcvHasqbRBWJznuPqqHRKiJgYAz60sZ0mvO3bN70JbkuK7ksfmgc489aKZYxMEjIbRvyOseaTjaRZLRF/xFeRA==} + peerDependencies: + eslint: ^9.9.1 + typescript: '>=4.7.4' + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} hasBin: true - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - npm-bundled@2.0.1: - resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} - npm-normalize-package-bin@2.0.0: - resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + is-network-error@1.1.0: + resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} + engines: {node: '>=16'} - npm-packlist@5.1.3: - resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true + is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} - npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} - nwsapi@2.2.12: - resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==} + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} - nx@19.5.6: - resolution: {integrity: sha512-qjP17aa5ViXSpo0bDgJ7O3b8EY/0+PbX7ZIKvG1g6qasohtfM1y4Sx2bbSow0zCKU0+r1LnR53Q0lyX4OOgtUg==} - hasBin: true - peerDependencies: - '@swc-node/register': ^1.8.0 - '@swc/core': ^1.3.85 - peerDependenciesMeta: - '@swc-node/register': - optional: true - '@swc/core': - optional: true + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - nypm@0.3.4: - resolution: {integrity: sha512-1JLkp/zHBrkS3pZ692IqOaIKSYHmQXgqfELk6YTOfVBnwealAmPA1q2kKK7PHJAHSMBozerThEFZXP3G6o7Ukg==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true + is-primitive@3.0.1: + resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} + engines: {node: '>=0.10.0'} - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + + is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} engines: {node: '>=0.10.0'} - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} - object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} - object.defaults@1.1.0: - resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} + is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} engines: {node: '>=0.10.0'} - object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} + is-uuid@1.0.2: + resolution: {integrity: sha512-tCByphFcJgf2qmiMo5hMCgNAquNSagOetVetDvBXswGkNfoyEMvGH1yDlF8cbZbKnbVBr4Y5/rlpMz9umxyBkQ==} - object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} + is-what@4.1.8: + resolution: {integrity: sha512-yq8gMao5upkPoGEU9LsB2P+K3Kt8Q3fQFCGyNCWOAnJAMzEXVV9drYb0TXr42TTliLLhKIBvulgAXgtLLnwzGA==} + engines: {node: '>=12.13'} - object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} - obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} - ofetch@1.3.4: - resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + is64bit@2.0.0: + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} + engines: {node: '>=18'} - ohash@1.1.3: - resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + isbot@5.1.14: + resolution: {integrity: sha512-4X8KZHyaIqXOqEv1qfZOqshMX3r7Q/VtMEMzuGPZljDMEIGpX7bcGODR9gZztXdcPBEJpNioQXXBJun+xi2G5g==} + engines: {node: '>=18'} - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} - one-time@1.0.0: - resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + jackspeak@3.4.0: + resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} + engines: {node: '>=14'} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - open@10.1.0: - resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} - engines: {node: '>=18'} + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} - openapi-typescript@6.7.5: - resolution: {integrity: sha512-ZD6dgSZi0u1QCP55g8/2yS5hNJfIpgqsSGHLxxdOjvY7eIrXzj271FJEQw33VwsZ6RCtO/NOuhxa7GBWmEudyA==} + jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - ora@5.3.0: - resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} - engines: {node: '>=10'} + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} - outvariant@1.4.2: - resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + jsdom@25.0.0: + resolution: {integrity: sha512-OhoFVT59T7aEq75TVw9xxEfkXgacpqAhQaYgP9y/fDqWQCMB/b1H66RfmPm/MaeaAIU9nDwMOVTlPN51+ao6CQ==} engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-retry@6.2.0: - resolution: {integrity: sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==} - engines: {node: '>=16.17'} + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} + hasBin: true - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + json-parse-even-better-errors@3.0.2: + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - parse-filepath@1.0.2: - resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} - engines: {node: '>=0.8'} + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - parse-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - parse5-htmlparser2-tree-adapter@6.0.1: - resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true - parse5@5.1.1: - resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + jsonata@1.8.7: + resolution: {integrity: sha512-tOW2/hZ+nR2bcQZs+0T62LVe5CHaNa3laFFWb/262r39utN6whJGBF7IR2Wq1QXrDbhftolk5gggW8uUJYlBTQ==} + engines: {node: '>= 8'} - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + jwt-decode@3.1.2: + resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + knitwork@1.1.0: + resolution: {integrity: sha512-oHnmiBUVHz1V+URE77PNot2lv3QiYU2zQf1JjOVkMt3YDKGbu8NAFr+c4mcNOhdsGrB/VpVbRwPwhiXrPhxQbw==} - path-root-regex@0.1.2: - resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} - engines: {node: '>=0.10.0'} + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - path-root@0.1.1: - resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} - engines: {node: '>=0.10.0'} + kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} + ky@1.5.0: + resolution: {integrity: sha512-bkQo+UqryW6Zmo/DsixYZE4Z9t2mzvNMhceyIhuMuInb3knm5Q+GNGMKveydJAj+Z6piN1SwI6eR/V0G+Z0BtA==} + engines: {node: '>=18'} - path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + launch-editor@2.8.0: + resolution: {integrity: sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==} - path-to-regexp@6.2.2: - resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + launchdarkly-eventsource@2.0.3: + resolution: {integrity: sha512-VhFjppK7jXlcEKaS7bxdoibB5j01NKyeDR7a8XfssdDGNWCTsbF0/5IExSmPi44eDncPhkoPNxlSZhEZvrbD5w==} + engines: {node: '>=0.12.0'} - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + launchdarkly-js-sdk-common@5.2.0: + resolution: {integrity: sha512-aLv2ZrUv229RIwLtFhdILu2aJS/fqGSJzTk4L/bCDZA8RuIh7PutI3ui/AJeNnzPzjKzdEQZw6wVhkVc84baog==} - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} + launchdarkly-node-client-sdk@3.2.1: + resolution: {integrity: sha512-vIn1kFCWSX83M2hHIQEw+TyEZFqcXn4DTKja2Vdt9NFgs0I2BA70ENA+zgz8OSt+VqvTciZV0l5X90Uyv+3vsQ==} + engines: {node: '>= 12.0.0'} - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + levdist@1.0.0: + resolution: {integrity: sha512-YguwC2spb0pqpJM3a5OsBhih/GG2ZHoaSHnmBqhEI7997a36buhqcRTegEjozHxyxByIwLpZHZTVYMThq+Zd3g==} - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + liftoff@5.0.0: + resolution: {integrity: sha512-a5BQjbCHnB+cy+gsro8lXJ4kZluzOijzJ1UVVfyJYZC+IP2pLv1h4+aysQeKuTmyO8NAqfyQAk4HWaP/HjcKTg==} + engines: {node: '>=10.13.0'} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} + lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + engines: {node: '>=14'} - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + line-diff@2.1.1: + resolution: {integrity: sha512-vswdynAI5AMPJacOo2o+JJ4caDJbnY2NEqms4MhMW0NJbjh3skP/brpVTAgBxrg55NRZ2Vtw88ef18hnagIpYQ==} - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - pkg-types@1.1.1: - resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - playwright-core@1.46.1: - resolution: {integrity: sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==} - engines: {node: '>=18'} + listhen@1.7.2: + resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} hasBin: true - playwright@1.46.1: - resolution: {integrity: sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==} - engines: {node: '>=18'} - hasBin: true + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 + lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} - postcss@8.4.40: - resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} - engines: {node: ^10 || ^12 || >=14} + logform@2.6.1: + resolution: {integrity: sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==} + engines: {node: '>= 12.0.0'} - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} + long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} - engines: {node: '>=14'} - hasBin: true + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - pretty-bytes@6.1.1: - resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} - engines: {node: ^14.13.1 || >=16.0.0} + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - pretty-error@4.0.0: - resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + engines: {node: 14 || >=16.14} - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - prisma@5.18.0: - resolution: {integrity: sha512-+TrSIxZsh64OPOmaSgVPH7ALL9dfU0jceYaMJXsNrTkFHO7/3RANi5K2ZiPB1De9+KDxCWn7jvRq8y8pvk+o9g==} - engines: {node: '>=16.13'} - hasBin: true + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} - protobufjs@7.3.2: - resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==} - engines: {node: '>=12.0.0'} + magicast@0.2.11: + resolution: {integrity: sha512-6saXbRDA1HMkqbsvHOU6HBjCVgZT460qheRkLhJQHWAbhXoWESI3Kn/dGGXyKs15FFKR85jsUqFx2sMK0wy/5g==} - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} - psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true - publint@0.2.10: - resolution: {integrity: sha512-5TzYaAFiGpgkYX/k6VaItRMT2uHI4zO5OWJ2k7Er0Ot3jutBCNTJB1qRHuy1lYq07JhRczzFs6HFPB4D+A47xA==} - engines: {node: '>=16'} + marked-terminal@7.1.0: + resolution: {integrity: sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==} + engines: {node: '>=16.0.0'} + peerDependencies: + marked: '>=1 <14' + + marked@9.1.6: + resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} + engines: {node: '>= 16'} hasBin: true - punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} - engines: {node: '>=6'} + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} + memfs@4.9.3: + resolution: {integrity: sha512-bsYSSnirtYTWi1+OPMFb0M048evMKyUYe0EbtuGQgq6BVQM1g1W8/KIUJCCvjgI/El0j6Q4WsmMiBwLUBSw8LA==} + engines: {node: '>= 4.0.0'} - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - radix3@1.1.2: - resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true - rc9@2.1.1: - resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==} + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 + mime@4.0.3: + resolution: {integrity: sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==} + engines: {node: '>=16'} + hasBin: true - react-hot-toast@2.4.1: - resolution: {integrity: sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==} - engines: {node: '>=10'} - peerDependencies: - react: '>=16' - react-dom: '>=16' + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} - react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} - engines: {node: '>=0.10.0'} + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} - react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} + minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} - react-remove-scroll-bar@2.3.4: - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - react-remove-scroll@2.5.7: - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-router-dom@6.26.0: - resolution: {integrity: sha512-RRGUIiDtLrkX3uYcFiCIxKFWMcWQGMojpYZfcstc63A1+sSnVgILGIm9gNUA6na3Fm1QuPGSBQH2EMbAZOnMsQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} - react-router@6.26.0: - resolution: {integrity: sha512-wVQq0/iFYd3iZ9H2l3N3k4PL8EEHcb0XlU2Na8nEwmiXgIUElEH6gaJDtUQxJ+JFzmIXaQjfdpcGWaM6IoQGxg==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} - readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + mixpanel@0.18.0: + resolution: {integrity: sha512-VyUoiLB/S/7abYYHGD5x0LijeuJCUabG8Hb+FvYU3Y99xHf1Qh+s4/pH9lt50fRitAHncWbU1FE01EknUfVVjQ==} + engines: {node: '>=10.0'} - readdir-glob@1.1.3: - resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + mlly@1.7.0: + resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} - recast@0.23.4: - resolution: {integrity: sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==} - engines: {node: '>= 4'} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} - rechoir@0.8.0: - resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} - engines: {node: '>= 10.13.0'} + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - redaxios@0.5.1: - resolution: {integrity: sha512-FSD2AmfdbkYwl7KDExYQlVvIrFz6Yd83pGfaGjBzM9F6rpq8g652Q4Yq5QD4c+nf4g2AgeElv1y+8ajUPiOYMg==} + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - redis-errors@1.2.0: - resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} - engines: {node: '>=4'} + msw@2.3.5: + resolution: {integrity: sha512-+GUI4gX5YC5Bv33epBrD+BGdmDvBg2XGruiWnI3GbIbRmMMBeZ5gs3mJ51OWSGHgJKztZ8AtZeYMMNMVrje2/Q==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + typescript: '>= 4.7.x' + peerDependenciesMeta: + typescript: + optional: true - redis-parser@3.0.0: - resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} - engines: {node: '>=4'} + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} + multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true - regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} - engines: {node: '>=4'} + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} - regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + nitropack@2.9.6: + resolution: {integrity: sha512-HP2PE0dREcDIBVkL8Zm6eVyrDd10/GI9hTL00PHvjUM8I9Y/2cv73wRDmxNyInfrx/CJKHATb2U/pQrqpzJyXA==} + engines: {node: ^16.11.0 || >=17.0.0} hasBin: true + peerDependencies: + xml2js: ^0.6.2 + peerDependenciesMeta: + xml2js: + optional: true - relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - remix-auth-form@1.5.0: - resolution: {integrity: sha512-xWM7T41vi4ZsIxL3f8gz/D6g2mxrnYF7LnG+rG3VqwHh6l13xCoKLraxzWRdbKMVKKQCMISKZRXAeJh9/PQwBA==} - peerDependencies: - '@remix-run/server-runtime': ^1.0.0 || ^2.0.0 - remix-auth: ^3.6.0 + node-addon-api@7.1.0: + resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} + engines: {node: ^16 || ^18 || >= 20} - remix-auth@3.7.0: - resolution: {integrity: sha512-2QVjp2nJVaYxuFBecMQwzixCO7CLSssttLBU5eVlNcNlVeNMmY1g7OkmZ1Ogw9sBcoMXZ18J7xXSK0AISVFcfQ==} + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + + node-emoji@2.1.3: + resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} + engines: {node: '>=18'} + + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} peerDependencies: - '@remix-run/react': ^1.0.0 || ^2.0.0 - '@remix-run/server-runtime': ^1.0.0 || ^2.0.0 + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} - renderkid@3.0.0: - resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} + hasBin: true - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} + node-localstorage@1.3.1: + resolution: {integrity: sha512-NMWCSWWc6JbHT5PyWlNT2i8r7PgGYXVntmKawY83k/M0UJScZ5jirb61TLnqKwd815DfBQu+lR3sRw08SPzIaQ==} + engines: {node: '>=0.12'} - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} + node-machine-id@1.1.12: + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true - resolve-dir@1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} + npm-bundled@2.0.1: + resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + npm-normalize-package-bin@2.0.0: + resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + npm-packlist@5.1.3: + resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} hasBin: true - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true + npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. - rimraf@5.0.10: - resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} - hasBin: true + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - rollup-plugin-preserve-directives@0.4.0: - resolution: {integrity: sha512-gx4nBxYm5BysmEQS+e2tAMrtFxrGvk+Pe5ppafRibQi0zlW7VYAbEGk6IKDw9sJGPdFWgVTE0o4BU4cdG0Fylg==} - peerDependencies: - rollup: 2.x || 3.x || 4.x + nwsapi@2.2.12: + resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==} - rollup-plugin-visualizer@5.12.0: - resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} - engines: {node: '>=14'} + nx@19.5.6: + resolution: {integrity: sha512-qjP17aa5ViXSpo0bDgJ7O3b8EY/0+PbX7ZIKvG1g6qasohtfM1y4Sx2bbSow0zCKU0+r1LnR53Q0lyX4OOgtUg==} hasBin: true peerDependencies: - rollup: 2.x || 3.x || 4.x + '@swc-node/register': ^1.8.0 + '@swc/core': ^1.3.85 peerDependenciesMeta: - rollup: + '@swc-node/register': + optional: true + '@swc/core': optional: true - rollup@4.18.0: - resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + nypm@0.3.4: + resolution: {integrity: sha512-1JLkp/zHBrkS3pZ692IqOaIKSYHmQXgqfELk6YTOfVBnwealAmPA1q2kKK7PHJAHSMBozerThEFZXP3G6o7Ukg==} + engines: {node: ^14.16.0 || >=16.10.0} hasBin: true - rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} - rrweb-cssom@0.7.1: - resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} - run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} - engines: {node: '>=18'} + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} + object.defaults@1.1.0: + resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} + engines: {node: '>=0.10.0'} - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} + ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} - safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} - engines: {node: '>=10'} + ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} + one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} - schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} - scule@1.3.0: - resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} - select-hose@2.0.0: - resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + open@10.1.0: + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} + engines: {node: '>=18'} - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + openapi-typescript@6.7.5: + resolution: {integrity: sha512-ZD6dgSZi0u1QCP55g8/2yS5hNJfIpgqsSGHLxxdOjvY7eIrXzj271FJEQw33VwsZ6RCtO/NOuhxa7GBWmEudyA==} hasBin: true - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + ora@5.3.0: + resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} engines: {node: '>=10'} - hasBin: true - - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + outvariant@1.4.2: + resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} - serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} - engines: {node: '>= 0.8.0'} + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} - serve-placeholder@2.0.1: - resolution: {integrity: sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ==} + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} - set-cookie-parser@2.7.0: - resolution: {integrity: sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==} + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} - setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + p-retry@6.2.0: + resolution: {integrity: sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==} + engines: {node: '>=16.17'} - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} - sha-1@1.0.0: - resolution: {integrity: sha512-qjFA/+LdT0Gvu/JcmYTGZMvVy6WXJOWv1KQuY7HvSr2oBrMxA8PnZu2mc1/ZS2EvLMokj7lIeQsNPjkRzXrImw==} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + parse-filepath@1.0.2: + resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + engines: {node: '>=0.8'} - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} engines: {node: '>=0.10.0'} - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} - shiki@1.11.0: - resolution: {integrity: sha512-NqH/O1zRHvnuk/WfSL6b7+DtI7/kkMMSQGlZhm9DyzSU+SoIHhaw/fBZMr+zp9R8KjdIzkk3JKSC6hORuGDyng==} + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} - short-unique-id@5.2.0: - resolution: {integrity: sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==} - hasBin: true + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - simple-git@3.25.0: - resolution: {integrity: sha512-KIY5sBnzc4yEcJXW7Tdv4viEz8KyG+nU0hay+DWZasvdFOYKeUZ6Xc25LUHHjw0tinPT7O1eY6pzX7pRT1K8rw==} + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - skin-tone@2.0.0: - resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} - engines: {node: '>=8'} + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - slide@1.1.6: - resolution: {integrity: sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==} + path-root-regex@0.1.2: + resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + engines: {node: '>=0.10.0'} - smob@1.4.1: - resolution: {integrity: sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==} + path-root@0.1.1: + resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + engines: {node: '>=0.10.0'} - snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} - snakecase-keys@5.4.4: - resolution: {integrity: sha512-YTywJG93yxwHLgrYLZjlC75moVEX04LZM4FHfihjHe1FCXm+QaLOFfSf535aXOAd0ArVQMWUAe8ZPm4VtWyXaA==} + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} engines: {node: '>=12'} - snappy@7.2.2: - resolution: {integrity: sha512-iADMq1kY0v3vJmGTuKcFWSXt15qYUz7wFkArOrsSg0IFfI3nJqIJvK2/ZbEIndg7erIJLtAVX2nSOqPz7DcwbA==} - engines: {node: '>= 10'} + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - sockjs@0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} - spawn-command@0.0.2: - resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} - spdy-transport@3.0.0: - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} - spdy@4.0.2: - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} + pkg-types@1.1.1: + resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + playwright-core@1.46.1: + resolution: {integrity: sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==} + engines: {node: '>=18'} + hasBin: true - stable-hash@0.0.4: - resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + playwright@1.46.1: + resolution: {integrity: sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==} + engines: {node: '>=18'} + hasBin: true - stack-trace@0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 - stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true - standard-as-callback@2.1.0: - resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + postcss-nested@6.0.1: + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} + postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + engines: {node: '>=4'} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} - streamx@2.16.1: - resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==} + postcss@8.4.40: + resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + engines: {node: ^10 || ^12 || >=14} - strict-event-emitter@0.5.1: - resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} + prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true - string-natural-compare@3.0.1: - resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true - string-ts@2.2.0: - resolution: {integrity: sha512-VTP0LLZo4Jp9Gz5IiDVMS9WyLx/3IeYh0PXUn0NdPqusUFNgkHPWiEdbB9TU2Iv3myUskraD5WtYEdHUrQEIlQ==} + pretty-bytes@6.1.1: + resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} + engines: {node: ^14.13.1 || >=16.0.0} - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} + prisma@5.18.0: + resolution: {integrity: sha512-+TrSIxZsh64OPOmaSgVPH7ALL9dfU0jceYaMJXsNrTkFHO7/3RANi5K2ZiPB1De9+KDxCWn7jvRq8y8pvk+o9g==} + engines: {node: '>=16.13'} + hasBin: true - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + protobufjs@7.3.2: + resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==} + engines: {node: '>=12.0.0'} - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} + publint@0.2.10: + resolution: {integrity: sha512-5TzYaAFiGpgkYX/k6VaItRMT2uHI4zO5OWJ2k7Er0Ot3jutBCNTJB1qRHuy1lYq07JhRczzFs6HFPB4D+A47xA==} + engines: {node: '>=16'} + hasBin: true - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - strong-log-transformer@2.1.0: - resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} - engines: {node: '>=4'} - hasBin: true + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - superjson@2.2.1: - resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} - engines: {node: '>=16'} + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} - superstruct@1.0.4: - resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} - engines: {node: '>=14.0.0'} + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + rc9@2.1.1: + resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==} - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + react-hot-toast@2.4.1: + resolution: {integrity: sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==} engines: {node: '>=10'} + peerDependencies: + react: '>=16' + react-dom: '>=16' - supports-color@9.4.0: - resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} - engines: {node: '>=12'} + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} + react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - supports-hyperlinks@3.1.0: - resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} - engines: {node: '>=14.18'} + react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} - swc-loader@0.2.6: - resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==} + react-remove-scroll-bar@2.3.4: + resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + engines: {node: '>=10'} peerDependencies: - '@swc/core': ^1.2.147 - webpack: '>=2' + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - swr@2.2.5: - resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==} + react-remove-scroll@2.5.7: + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + engines: {node: '>=10'} peerDependencies: - react: ^16.11.0 || ^17.0.0 || ^18.0.0 + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + react-router-dom@6.26.0: + resolution: {integrity: sha512-RRGUIiDtLrkX3uYcFiCIxKFWMcWQGMojpYZfcstc63A1+sSnVgILGIm9gNUA6na3Fm1QuPGSBQH2EMbAZOnMsQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' - system-architecture@0.1.0: - resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} - engines: {node: '>=18'} + react-router@6.26.0: + resolution: {integrity: sha512-wVQq0/iFYd3iZ9H2l3N3k4PL8EEHcb0XlU2Na8nEwmiXgIUElEH6gaJDtUQxJ+JFzmIXaQjfdpcGWaM6IoQGxg==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' - tailwind-merge@2.5.2: - resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - tailwindcss@3.4.7: - resolution: {integrity: sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==} - engines: {node: '>=14.0.0'} - hasBin: true + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} - tar@6.2.0: - resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} - engines: {node: '>=10'} + readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} - terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} + recast@0.23.4: + resolution: {integrity: sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==} + engines: {node: '>= 4'} - terser-webpack-plugin@5.3.10: - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - terser@5.31.1: - resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} - engines: {node: '>=10'} - hasBin: true + redaxios@0.5.1: + resolution: {integrity: sha512-FSD2AmfdbkYwl7KDExYQlVvIrFz6Yd83pGfaGjBzM9F6rpq8g652Q4Yq5QD4c+nf4g2AgeElv1y+8ajUPiOYMg==} - text-extensions@2.4.0: - resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} - text-hex@1.0.0: - resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} - thingies@1.21.0: - resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} - engines: {node: '>=10.18'} + remix-auth-form@1.5.0: + resolution: {integrity: sha512-xWM7T41vi4ZsIxL3f8gz/D6g2mxrnYF7LnG+rG3VqwHh6l13xCoKLraxzWRdbKMVKKQCMISKZRXAeJh9/PQwBA==} peerDependencies: - tslib: ^2 - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + '@remix-run/server-runtime': ^1.0.0 || ^2.0.0 + remix-auth: ^3.6.0 - thunky@1.1.0: - resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + remix-auth@3.7.0: + resolution: {integrity: sha512-2QVjp2nJVaYxuFBecMQwzixCO7CLSssttLBU5eVlNcNlVeNMmY1g7OkmZ1Ogw9sBcoMXZ18J7xXSK0AISVFcfQ==} + peerDependencies: + '@remix-run/react': ^1.0.0 || ^2.0.0 + '@remix-run/server-runtime': ^1.0.0 || ^2.0.0 - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - tiny-warning@1.0.3: - resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} - tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} - engines: {node: '>=14.14'} + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} - tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} - engines: {node: '>=18'} + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} - tree-dump@1.0.2: - resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - triple-beam@1.4.1: - resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} - engines: {node: '>= 14.0.0'} + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} + rollup-plugin-preserve-directives@0.4.0: + resolution: {integrity: sha512-gx4nBxYm5BysmEQS+e2tAMrtFxrGvk+Pe5ppafRibQi0zlW7VYAbEGk6IKDw9sJGPdFWgVTE0o4BU4cdG0Fylg==} peerDependencies: - typescript: '>=4.2.0' + rollup: 2.x || 3.x || 4.x - ts-declaration-location@1.0.4: - resolution: {integrity: sha512-r4JoxYhKULbZuH81Pjrp9OEG5St7XWk7zXwGkLKhmVcjiBVHTJXV5wK6dEa9JKW5QGSTW6b1lOjxAKp8R1SQhg==} + rollup-plugin-visualizer@5.12.0: + resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} + engines: {node: '>=14'} + hasBin: true peerDependencies: - typescript: '>=4.0.0' + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rollup: + optional: true - ts-expose-internals-conditionally@1.0.0-empty.0: - resolution: {integrity: sha512-F8m9NOF6ZhdOClDVdlM8gj3fDCav4ZIFSs/EI3ksQbAAXVSCN/Jh5OCJDDZWBuBy9psFc6jULGDlPwjMYMhJDw==} + rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - ts-pattern@5.3.1: - resolution: {integrity: sha512-1RUMKa8jYQdNfmnK4jyzBK3/PS/tnjcZ1CW0v1vWDeYe5RBklc/nquw03MEoB66hVBm4BnlCfmOqDVxHyT1DpA==} + rrweb-cssom@0.7.1: + resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} - tsconfck@3.0.3: - resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true + run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - tslib@2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} - tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - turbo-stream@2.2.0: - resolution: {integrity: sha512-FKFg7A0To1VU4CH9YmSMON5QphK0BXjSoiC7D9yMh+mEEbXLUP9qJ4hEt1qcjKtzncs1OpcnjZO8NgrlVbZH+g==} + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} - turbo-stream@2.3.0: - resolution: {integrity: sha512-PhEr9mdexoVv+rJkQ3c8TjrN3DUghX37GNJkSMksoPR4KrXIPnM2MnqRt07sViIqX9IdlhrgtTSyjoVOASq6cg==} + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} + schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} + hasBin: true - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} + hasBin: true - type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} - type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - type-fest@4.23.0: - resolution: {integrity: sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==} - engines: {node: '>=16'} + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} + serve-placeholder@2.0.1: + resolution: {integrity: sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ==} - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} + set-cookie-parser@2.7.0: + resolution: {integrity: sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==} - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - typedoc-plugin-frontmatter@1.0.0: - resolution: {integrity: sha512-Mqn96+RjUjPUz/42H8MOp/8eOKjE5MVIgZRFDGmSI2YuggnMZSfh5MMpvd6ykjNTpq7gV5D2iwjqLt8nYRg9rg==} - peerDependencies: - typedoc-plugin-markdown: '>=4.0.0' + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - typedoc-plugin-markdown@4.2.6: - resolution: {integrity: sha512-k33o2lZSGpL3GjH28eW+RsujzCYFP0L5GNqpK+wa4CBcMOxpj8WV7SydNRLS6eSa2UvaPvNVJTaAZ6Tm+8GXoA==} - engines: {node: '>= 18'} - peerDependencies: - typedoc: 0.26.x + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - typedoc@0.26.6: - resolution: {integrity: sha512-SfEU3SH3wHNaxhFPjaZE2kNl/NFtLNW5c1oHsg7mti7GjmUj1Roq6osBQeMd+F4kL0BoRBBr8gQAuqBlfFu8LA==} - engines: {node: '>= 18'} - hasBin: true - peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x + sha-1@1.0.0: + resolution: {integrity: sha512-qjFA/+LdT0Gvu/JcmYTGZMvVy6WXJOWv1KQuY7HvSr2oBrMxA8PnZu2mc1/ZS2EvLMokj7lIeQsNPjkRzXrImw==} - typescript-eslint@7.18.0: - resolution: {integrity: sha512-PonBkP603E3tt05lDkbOMyaxJjvKqQrXsnow72sVeOFINDE/qNmnnd+f9b4N+U7W6MXnnYyrhtmF2t08QWwUbA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.57.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} - typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} - hasBin: true + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} - typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} - typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} - engines: {node: '>=14.17'} - hasBin: true + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} - typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} - engines: {node: '>=14.17'} - hasBin: true + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} - engines: {node: '>=14.17'} - hasBin: true + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true + shiki@1.11.0: + resolution: {integrity: sha512-NqH/O1zRHvnuk/WfSL6b7+DtI7/kkMMSQGlZhm9DyzSU+SoIHhaw/fBZMr+zp9R8KjdIzkk3JKSC6hORuGDyng==} - typescript@5.5.3: - resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} - engines: {node: '>=14.17'} + short-unique-id@5.2.0: + resolution: {integrity: sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==} hasBin: true - uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - - ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - unc-path-regex@0.1.2: - resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} - engines: {node: '>=0.10.0'} - - uncrypto@0.1.3: - resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - - unctx@2.3.1: - resolution: {integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==} + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - undici-types@5.28.4: - resolution: {integrity: sha512-3OeMF5Lyowe8VW0skf5qaIE7Or3yS9LS7fvMUI0gg4YxpIBVg0L8BxCmROw2CcYhSkpR68Epz7CGc8MPj94Uww==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - undici@5.28.4: - resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} - engines: {node: '>=14.0'} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} - unenv@1.9.0: - resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} + simple-git@3.25.0: + resolution: {integrity: sha512-KIY5sBnzc4yEcJXW7Tdv4viEz8KyG+nU0hay+DWZasvdFOYKeUZ6Xc25LUHHjw0tinPT7O1eY6pzX7pRT1K8rw==} - unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - unicode-emoji-modifier-base@1.0.0: - resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} - engines: {node: '>=4'} + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} - unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} + slide@1.1.6: + resolution: {integrity: sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==} - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} + smob@1.4.1: + resolution: {integrity: sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==} - unimport@3.7.1: - resolution: {integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==} + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} + snakecase-keys@5.4.4: + resolution: {integrity: sha512-YTywJG93yxwHLgrYLZjlC75moVEX04LZM4FHfihjHe1FCXm+QaLOFfSf535aXOAd0ArVQMWUAe8ZPm4VtWyXaA==} + engines: {node: '>=12'} - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} + snappy@7.2.2: + resolution: {integrity: sha512-iADMq1kY0v3vJmGTuKcFWSXt15qYUz7wFkArOrsSg0IFfI3nJqIJvK2/ZbEIndg7erIJLtAVX2nSOqPz7DcwbA==} + engines: {node: '>= 10'} - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} - unplugin@1.12.2: - resolution: {integrity: sha512-bEqQxeC7rxtxPZ3M5V4Djcc4lQqKPgGe3mAWZvxcSmX5jhGxll19NliaRzQSQPrk4xJZSGniK3puLWpRuZN7VQ==} - engines: {node: '>=14.0.0'} + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - unstorage@1.10.2: - resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} - peerDependencies: - '@azure/app-configuration': ^1.5.0 - '@azure/cosmos': ^4.0.0 - '@azure/data-tables': ^13.2.2 - '@azure/identity': ^4.0.1 - '@azure/keyvault-secrets': ^4.8.0 - '@azure/storage-blob': ^12.17.0 - '@capacitor/preferences': ^5.0.7 - '@netlify/blobs': ^6.5.0 || ^7.0.0 - '@planetscale/database': ^1.16.0 - '@upstash/redis': ^1.28.4 - '@vercel/kv': ^1.0.1 - idb-keyval: ^6.2.1 - ioredis: ^5.3.2 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@netlify/blobs': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/kv': - optional: true - idb-keyval: - optional: true - ioredis: - optional: true + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} - untun@0.1.3: - resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} - hasBin: true + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} - unwasm@0.3.9: - resolution: {integrity: sha512-LDxTx/2DkFURUd+BU1vUsF/moj0JsoTvl+2tcg2AUOiEzVturhGGx17/IMgGvKUYdZwr33EJHtChCJuhu9Ouvg==} + spawn-command@0.0.2: + resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - uqr@0.1.2: - resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - url-polyfill@1.1.12: - resolution: {integrity: sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A==} + stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} - urlpattern-polyfill@8.0.2: - resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - use-callback-ref@1.3.0: - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - use-sync-external-store@1.2.2: - resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} - utila@0.4.0: - resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true + streamx@2.16.1: + resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==} - v8flags@4.0.1: - resolution: {integrity: sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==} - engines: {node: '>= 10.13.0'} + strict-event-emitter@0.5.1: + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} - valibot@0.36.0: - resolution: {integrity: sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==} + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} - valibot@0.37.0: - resolution: {integrity: sha512-FQz52I8RXgFgOHym3XHYSREbNtkgSjF9prvMFH1nBsRyfL6SfCzoT1GuSDTlbsuPubM7/6Kbw0ZMQb8A+V+VsQ==} - peerDependencies: - typescript: '>=5' - peerDependenciesMeta: - typescript: - optional: true + string-ts@2.2.0: + resolution: {integrity: sha512-VTP0LLZo4Jp9Gz5IiDVMS9WyLx/3IeYh0PXUn0NdPqusUFNgkHPWiEdbB9TU2Iv3myUskraD5WtYEdHUrQEIlQ==} - validate-npm-package-name@5.0.1: - resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} - vinxi@0.4.2: - resolution: {integrity: sha512-BbvIum9BLUQ22O/lU1RX0+aKNMXXcl58hofNoWFnFcKkm+efgVsHiD2d7HG3w8QLdb2Asdhmz5/ZzI1Y3zTBXw==} + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + + strong-log-transformer@2.1.0: + resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} + engines: {node: '>=4'} hasBin: true - vite-node@1.6.0: - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} - engines: {node: ^18.0.0 || >=20.0.0} + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} hasBin: true - vite-plugin-babel@1.2.0: - resolution: {integrity: sha512-ltAnq535Ubf9sDbVCkztAdkwx5aQbNrwPFs+iZTJ5FaAhTdxjqmLGpxsAaRfJWEKBJ/kFf9KwMoTdArm0IRUUw==} - peerDependencies: - '@babel/core': ^7.0.0 - vite: ^2.7.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + superjson@2.2.1: + resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} + engines: {node: '>=16'} - vite-plugin-dts@4.0.3: - resolution: {integrity: sha512-+xnTsaONwU2kV6zhRjtbRJSGN41uFR/whqmcb4k4fftLFDJElxthp0PP5Fq8gMeM9ytWMt1yk5gGgekLREWYQQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - typescript: '*' - vite: '*' - peerDependenciesMeta: - vite: - optional: true + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} - vite-plugin-externalize-deps@0.8.0: - resolution: {integrity: sha512-MdC8kRNQ1ZjhUicU2HcqGVhL0UUFqv83Zp1JZdHjE82PoPR8wsSWZ3axpot7B6img3sW6g8shYJikE0CKA0chA==} - peerDependencies: - vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} - vite-tsconfig-paths@5.0.1: - resolution: {integrity: sha512-yqwv+LstU7NwPeNqajZzLEBVpUFU6Dugtb2P84FXuvaoYA+/70l9MHE+GYfYAycVyPSDYZ7mjOFuYBRqlEpTig==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} - vite@5.3.5: - resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-hyperlinks@3.1.0: + resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} + engines: {node: '>=14.18'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} - vitest@1.6.0: - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true + swc-loader@0.2.6: + resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==} peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + '@swc/core': ^1.2.147 + webpack: '>=2' - vue-tsc@2.0.29: - resolution: {integrity: sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==} - hasBin: true + swr@2.2.5: + resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==} peerDependencies: - typescript: '>=5.0.0' + react: ^16.11.0 || ^17.0.0 || ^18.0.0 - w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + system-architecture@0.1.0: + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} - watchpack@2.4.1: - resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} - engines: {node: '>=10.13.0'} + tailwind-merge@2.5.2: + resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} - wbuf@1.7.3: - resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + tailwindcss@3.4.7: + resolution: {integrity: sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==} + engines: {node: '>=14.0.0'} + hasBin: true - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} - web-streams-polyfill@3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} - engines: {node: '>= 8'} + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} + tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} - webpack-cli@5.1.4: - resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} - engines: {node: '>=14.15.0'} - hasBin: true - peerDependencies: - '@webpack-cli/generators': '*' - webpack: 5.x.x - webpack-bundle-analyzer: '*' - webpack-dev-server: '*' - peerDependenciesMeta: - '@webpack-cli/generators': - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} - webpack-dev-middleware@7.2.1: - resolution: {integrity: sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==} - engines: {node: '>= 18.12.0'} + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} peerDependencies: - webpack: ^5.0.0 + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 peerDependenciesMeta: - webpack: + '@swc/core': optional: true - - webpack-dev-server@5.0.4: - resolution: {integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==} - engines: {node: '>= 18.12.0'} - hasBin: true - peerDependencies: - webpack: ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: + esbuild: optional: true - webpack-cli: + uglify-js: optional: true - webpack-merge@5.10.0: - resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} - engines: {node: '>=10.0.0'} - - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} + terser@5.31.1: + resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} + engines: {node: '>=10'} + hasBin: true - webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} - webpack@5.93.0: - resolution: {integrity: sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true + text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} + thingies@1.21.0: + resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 - whatwg-url@14.0.0: - resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} - engines: {node: '>=18'} + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} + tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} - which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} - widest-line@4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} - wildcard@2.0.1: - resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - winston-loki@6.1.2: - resolution: {integrity: sha512-l1iqDDaEUt63Q8arDsiVCXIrK3jLjPOEc5UTs+WMVnWf8D+A8ZRErAAXKDOduT240aNGzpTbCwe5zfdqqLlzMg==} + tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} - winston-transport@4.7.1: - resolution: {integrity: sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==} - engines: {node: '>= 12.0.0'} + tree-dump@1.0.2: + resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' - winston@3.14.2: - resolution: {integrity: sha512-CO8cdpBB2yqzEf8v895L+GNKYJiEq8eKlHU38af3snQBQ+sdAIUepjMSguOIJC7ICbzm0ZI+Af2If4vIJrtmOg==} - engines: {node: '>= 12.0.0'} + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + ts-declaration-location@1.0.4: + resolution: {integrity: sha512-r4JoxYhKULbZuH81Pjrp9OEG5St7XWk7zXwGkLKhmVcjiBVHTJXV5wK6dEa9JKW5QGSTW6b1lOjxAKp8R1SQhg==} + peerDependencies: + typescript: '>=4.0.0' - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + ts-expose-internals-conditionally@1.0.0-empty.0: + resolution: {integrity: sha512-F8m9NOF6ZhdOClDVdlM8gj3fDCav4ZIFSs/EI3ksQbAAXVSCN/Jh5OCJDDZWBuBy9psFc6jULGDlPwjMYMhJDw==} - write-file-atomic@1.3.4: - resolution: {integrity: sha512-SdrHoC/yVBPpV0Xq/mUZQIpW2sWXAShb/V4pomcJXh92RuaO+f3UTWItiR3Px+pLnV2PvC2/bfn5cwr5X6Vfxw==} + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} + ts-pattern@5.3.1: + resolution: {integrity: sha512-1RUMKa8jYQdNfmnK4jyzBK3/PS/tnjcZ1CW0v1vWDeYe5RBklc/nquw03MEoB66hVBm4BnlCfmOqDVxHyT1DpA==} + + tsconfck@3.0.3: + resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} + engines: {node: ^18 || >=20} + hasBin: true peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' + typescript: ^5.0.0 peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: + typescript: optional: true - xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} + tslib@2.4.1: + resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + turbo-stream@2.2.0: + resolution: {integrity: sha512-FKFg7A0To1VU4CH9YmSMON5QphK0BXjSoiC7D9yMh+mEEbXLUP9qJ4hEt1qcjKtzncs1OpcnjZO8NgrlVbZH+g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + turbo-stream@2.3.0: + resolution: {integrity: sha512-PhEr9mdexoVv+rJkQ3c8TjrN3DUghX37GNJkSMksoPR4KrXIPnM2MnqRt07sViIqX9IdlhrgtTSyjoVOASq6cg==} - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} - yaml@2.4.5: - resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} - engines: {node: '>= 14'} - hasBin: true + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} + type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + type-fest@4.23.0: + resolution: {integrity: sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==} + engines: {node: '>=16'} - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} + typedoc-plugin-frontmatter@1.0.0: + resolution: {integrity: sha512-Mqn96+RjUjPUz/42H8MOp/8eOKjE5MVIgZRFDGmSI2YuggnMZSfh5MMpvd6ykjNTpq7gV5D2iwjqLt8nYRg9rg==} + peerDependencies: + typedoc-plugin-markdown: '>=4.0.0' - zip-stream@6.0.1: - resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} - engines: {node: '>= 14'} + typedoc-plugin-markdown@4.2.6: + resolution: {integrity: sha512-k33o2lZSGpL3GjH28eW+RsujzCYFP0L5GNqpK+wa4CBcMOxpj8WV7SydNRLS6eSa2UvaPvNVJTaAZ6Tm+8GXoA==} + engines: {node: '>= 18'} + peerDependencies: + typedoc: 0.26.x - zod-validation-error@1.2.0: - resolution: {integrity: sha512-laJkD/ugwEh8CpuH+xXv5L9Z+RLz3lH8alNxolfaHZJck611OJj97R4Rb+ZqA7WNly2kNtTo4QwjdjXw9scpiw==} - engines: {node: ^14.17 || >=16.0.0} + typedoc@0.26.6: + resolution: {integrity: sha512-SfEU3SH3wHNaxhFPjaZE2kNl/NFtLNW5c1oHsg7mti7GjmUj1Roq6osBQeMd+F4kL0BoRBBr8gQAuqBlfFu8LA==} + engines: {node: '>= 18'} + hasBin: true peerDependencies: - zod: ^3.18.0 + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + typescript-eslint@8.3.0: + resolution: {integrity: sha512-EvWjwWLwwKDIJuBjk2I6UkV8KEQcwZ0VM10nR1rIunRDIP67QJTZAHBXTX0HW/oI1H10YESF8yWie8fRQxjvFA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true -snapshots: + typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} + hasBin: true - '@aashutoshrathi/word-wrap@1.2.6': {} + typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true - '@adobe/css-tools@4.4.0': {} + typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true - '@alloc/quick-lru@5.2.0': {} + typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true - '@andrewbranch/untar.js@1.0.3': {} + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true - '@arethetypeswrong/cli@0.15.4': - dependencies: - '@arethetypeswrong/core': 0.15.1 - chalk: 4.1.2 - cli-table3: 0.6.5 - commander: 10.0.1 - marked: 9.1.6 - marked-terminal: 7.1.0(marked@9.1.6) - semver: 7.6.3 + typescript@5.5.3: + resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} + engines: {node: '>=14.17'} + hasBin: true - '@arethetypeswrong/core@0.15.1': - dependencies: - '@andrewbranch/untar.js': 1.0.3 - fflate: 0.8.2 - semver: 7.6.3 - ts-expose-internals-conditionally: 1.0.0-empty.0 - typescript: 5.3.3 - validate-npm-package-name: 5.0.1 + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - '@ark/schema@0.3.2': - dependencies: - '@ark/util': 0.2.1 + ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - '@ark/util@0.2.1': {} + unc-path-regex@0.1.2: + resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + engines: {node: '>=0.10.0'} - '@babel/code-frame@7.24.7': - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.0.1 + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - '@babel/compat-data@7.25.2': {} + unctx@2.3.1: + resolution: {integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==} - '@babel/core@7.25.2': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - convert-source-map: 2.0.0 - debug: 4.3.6 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - '@babel/eslint-parser@7.24.5(@babel/core@7.25.2)(eslint@8.57.0)': - dependencies: - '@babel/core': 7.25.2 - '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.57.0 - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 + undici-types@5.28.4: + resolution: {integrity: sha512-3OeMF5Lyowe8VW0skf5qaIE7Or3yS9LS7fvMUI0gg4YxpIBVg0L8BxCmROw2CcYhSkpR68Epz7CGc8MPj94Uww==} - '@babel/generator@7.25.0': - dependencies: - '@babel/types': 7.25.2 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} + engines: {node: '>=14.0'} + + unenv@1.9.0: + resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} + + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} - '@babel/helper-annotate-as-pure@7.24.7': - dependencies: - '@babel/types': 7.25.2 + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - dependencies: - '@babel/types': 7.25.2 + unimport@3.7.1: + resolution: {integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==} - '@babel/helper-compilation-targets@7.25.2': - dependencies: - '@babel/compat-data': 7.25.2 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 - lru-cache: 5.1.1 - semver: 6.3.1 + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} - '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.7 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - regexpu-core: 5.3.2 - semver: 6.3.1 + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - debug: 4.3.6 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} - '@babel/helper-environment-visitor@7.24.7': - dependencies: - '@babel/types': 7.25.2 + unplugin@1.12.2: + resolution: {integrity: sha512-bEqQxeC7rxtxPZ3M5V4Djcc4lQqKPgGe3mAWZvxcSmX5jhGxll19NliaRzQSQPrk4xJZSGniK3puLWpRuZN7VQ==} + engines: {node: '>=14.0.0'} - '@babel/helper-function-name@7.24.7': - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + unstorage@1.10.2: + resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} + peerDependencies: + '@azure/app-configuration': ^1.5.0 + '@azure/cosmos': ^4.0.0 + '@azure/data-tables': ^13.2.2 + '@azure/identity': ^4.0.1 + '@azure/keyvault-secrets': ^4.8.0 + '@azure/storage-blob': ^12.17.0 + '@capacitor/preferences': ^5.0.7 + '@netlify/blobs': ^6.5.0 || ^7.0.0 + '@planetscale/database': ^1.16.0 + '@upstash/redis': ^1.28.4 + '@vercel/kv': ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.3.2 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/kv': + optional: true + idb-keyval: + optional: true + ioredis: + optional: true - '@babel/helper-hoist-variables@7.24.7': - dependencies: - '@babel/types': 7.25.2 + untun@0.1.3: + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + hasBin: true - '@babel/helper-member-expression-to-functions@7.24.7': - dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - transitivePeerDependencies: - - supports-color + unwasm@0.3.9: + resolution: {integrity: sha512-LDxTx/2DkFURUd+BU1vUsF/moj0JsoTvl+2tcg2AUOiEzVturhGGx17/IMgGvKUYdZwr33EJHtChCJuhu9Ouvg==} - '@babel/helper-module-imports@7.24.7': - dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - transitivePeerDependencies: - - supports-color + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color + uqr@0.1.2: + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} - '@babel/helper-optimise-call-expression@7.24.7': - dependencies: - '@babel/types': 7.25.2 + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - '@babel/helper-plugin-utils@7.24.7': {} + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-wrap-function': 7.24.5 + url-polyfill@1.1.12: + resolution: {integrity: sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A==} - '@babel/helper-replace-supers@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.7 - '@babel/helper-optimise-call-expression': 7.24.7 - transitivePeerDependencies: - - supports-color + urlpattern-polyfill@8.0.2: + resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} - '@babel/helper-simple-access@7.24.7': - dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - transitivePeerDependencies: - - supports-color + use-callback-ref@1.3.0: + resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - transitivePeerDependencies: - - supports-color + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@babel/helper-split-export-declaration@7.24.7': - dependencies: - '@babel/types': 7.25.2 + use-sync-external-store@1.2.2: + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@babel/helper-string-parser@7.24.8': {} + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - '@babel/helper-validator-identifier@7.24.7': {} + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - '@babel/helper-validator-option@7.24.8': {} + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - '@babel/helper-wrap-function@7.24.5': - dependencies: - '@babel/helper-function-name': 7.24.7 - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} - '@babel/helpers@7.25.0': - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true - '@babel/highlight@7.24.7': - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.1 + v8flags@4.0.1: + resolution: {integrity: sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==} + engines: {node: '>= 10.13.0'} - '@babel/parser@7.25.3': - dependencies: - '@babel/types': 7.25.2 + valibot@0.36.0: + resolution: {integrity: sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==} - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + valibot@0.37.0: + resolution: {integrity: sha512-FQz52I8RXgFgOHym3XHYSREbNtkgSjF9prvMFH1nBsRyfL6SfCzoT1GuSDTlbsuPubM7/6Kbw0ZMQb8A+V+VsQ==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + vinxi@0.4.2: + resolution: {integrity: sha512-BbvIum9BLUQ22O/lU1RX0+aKNMXXcl58hofNoWFnFcKkm+efgVsHiD2d7HG3w8QLdb2Asdhmz5/ZzI1Y3zTBXw==} + hasBin: true - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true - '@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + vite-plugin-babel@1.2.0: + resolution: {integrity: sha512-ltAnq535Ubf9sDbVCkztAdkwx5aQbNrwPFs+iZTJ5FaAhTdxjqmLGpxsAaRfJWEKBJ/kFf9KwMoTdArm0IRUUw==} + peerDependencies: + '@babel/core': ^7.0.0 + vite: ^2.7.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + vite-plugin-dts@4.0.3: + resolution: {integrity: sha512-+xnTsaONwU2kV6zhRjtbRJSGN41uFR/whqmcb4k4fftLFDJElxthp0PP5Fq8gMeM9ytWMt1yk5gGgekLREWYQQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + vite-plugin-externalize-deps@0.8.0: + resolution: {integrity: sha512-MdC8kRNQ1ZjhUicU2HcqGVhL0UUFqv83Zp1JZdHjE82PoPR8wsSWZ3axpot7B6img3sW6g8shYJikE0CKA0chA==} + peerDependencies: + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + vite-tsconfig-paths@5.0.1: + resolution: {integrity: sha512-yqwv+LstU7NwPeNqajZzLEBVpUFU6Dugtb2P84FXuvaoYA+/70l9MHE+GYfYAycVyPSDYZ7mjOFuYBRqlEpTig==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color + vite@5.3.5: + resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + 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.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true - '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + vue-tsc@2.0.29: + resolution: {integrity: sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} - '@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} - '@babel/plugin-syntax-flow@7.24.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} - '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + webpack-cli@5.1.4: + resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} + engines: {node: '>=14.15.0'} + hasBin: true + peerDependencies: + '@webpack-cli/generators': '*' + webpack: 5.x.x + webpack-bundle-analyzer: '*' + webpack-dev-server: '*' + peerDependenciesMeta: + '@webpack-cli/generators': + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + webpack-dev-middleware@7.2.1: + resolution: {integrity: sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + webpack-dev-server@5.0.4: + resolution: {integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==} + engines: {node: '>= 18.12.0'} + hasBin: true + peerDependencies: + webpack: ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + webpack@5.93.0: + resolution: {integrity: sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true - '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true - '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true - '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true - '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - '@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} - '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color + wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + winston-loki@6.1.2: + resolution: {integrity: sha512-l1iqDDaEUt63Q8arDsiVCXIrK3jLjPOEc5UTs+WMVnWf8D+A8ZRErAAXKDOduT240aNGzpTbCwe5zfdqqLlzMg==} - '@babel/plugin-transform-classes@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.25.2) - '@babel/helper-split-export-declaration': 7.24.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + winston-transport@4.7.1: + resolution: {integrity: sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==} + engines: {node: '>= 12.0.0'} - '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/template': 7.25.0 + winston@3.14.2: + resolution: {integrity: sha512-CO8cdpBB2yqzEf8v895L+GNKYJiEq8eKlHU38af3snQBQ+sdAIUepjMSguOIJC7ICbzm0ZI+Af2If4vIJrtmOg==} + engines: {node: '>= 12.0.0'} - '@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} - '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} - '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} - '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.7 + write-file-atomic@1.3.4: + resolution: {integrity: sha512-SdrHoC/yVBPpV0Xq/mUZQIpW2sWXAShb/V4pomcJXh92RuaO+f3UTWItiR3Px+pLnV2PvC2/bfn5cwr5X6Vfxw==} - '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-flow': 7.24.6(@babel/core@7.25.2) + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} - '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} - '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - '@babel/plugin-transform-literals@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} + engines: {node: '>= 14'} + hasBin: true - '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} - '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - transitivePeerDependencies: - - supports-color + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} - '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-hoist-variables': 7.24.7 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - transitivePeerDependencies: - - supports-color + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} - '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + zip-stream@6.0.1: + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} + engines: {node: '>= 14'} - '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + zod-validation-error@1.2.0: + resolution: {integrity: sha512-laJkD/ugwEh8CpuH+xXv5L9Z+RLz3lH8alNxolfaHZJck611OJj97R4Rb+ZqA7WNly2kNtTo4QwjdjXw9scpiw==} + engines: {node: ^14.17 || >=16.0.0} + peerDependencies: + zod: ^3.18.0 - '@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.25.2) + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color +snapshots: - '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@aashutoshrathi/word-wrap@1.2.6': {} - '@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + '@adobe/css-tools@4.4.0': {} + + '@alloc/quick-lru@5.2.0': {} - '@babel/plugin-transform-parameters@7.24.5(@babel/core@7.25.2)': + '@ampproject/remapping@2.3.0': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 - '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color + '@andrewbranch/untar.js@1.0.3': {} - '@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.25.2)': + '@arethetypeswrong/cli@0.15.4': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + '@arethetypeswrong/core': 0.15.1 + chalk: 4.1.2 + cli-table3: 0.6.5 + commander: 10.0.1 + marked: 9.1.6 + marked-terminal: 7.1.0(marked@9.1.6) + semver: 7.6.3 - '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.25.2)': + '@arethetypeswrong/core@0.15.1': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@andrewbranch/untar.js': 1.0.3 + fflate: 0.8.2 + semver: 7.6.3 + ts-expose-internals-conditionally: 1.0.0-empty.0 + typescript: 5.3.3 + validate-npm-package-name: 5.0.1 - '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.25.2)': + '@ark/schema@0.3.2': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@ark/util': 0.2.1 - '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + '@ark/util@0.2.1': {} - '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': + '@babel/code-frame@7.24.7': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 - '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/compat-data@7.25.2': {} - '@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2)': + '@babel/core@7.25.2': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.25.2)': + '@babel/generator@7.25.0': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/types': 7.25.2 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 - '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.25.2)': + '@babel/helper-compilation-targets@7.25.2': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - regenerator-transform: 0.15.2 + '@babel/compat-data': 7.25.2 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 - '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.25.2)': + '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-runtime@7.24.3(@babel/core@7.25.2)': + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - semver: 6.3.1 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils@7.24.7': {} - '@babel/plugin-transform-spread@7.24.1(@babel/core@7.25.2)': + '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-string-parser@7.24.8': {} - '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + '@babel/helper-validator-identifier@7.24.7': {} - '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-option@7.24.8': {} - '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.25.2)': + '@babel/helpers@7.25.0': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 - '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.25.2)': + '@babel/highlight@7.24.7': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 - '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.25.2)': + '@babel/parser@7.25.3': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/types': 7.25.2 - '@babel/preset-env@7.24.5(@babel/core@7.25.2)': + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/compat-data': 7.25.2 '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.25.2) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.25.2) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.37.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - '@babel/types': 7.25.2 - esutils: 2.0.3 - '@babel/preset-react@7.24.1(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.25.2) - '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - '@babel/preset-typescript@7.24.1(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/regjsgen@0.8.0': {} '@babel/runtime@7.23.5': dependencies: @@ -11186,10 +9086,10 @@ snapshots: '@types/conventional-commits-parser': 5.0.0 chalk: 5.3.0 - '@convex-dev/react-query@0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.13.2(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@convex-dev/react-query@0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.13.2(eslint@9.9.1(jiti@1.21.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@tanstack/react-query': 5.51.21(react@18.3.1) - convex: 1.13.2(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + convex: 1.13.2(eslint@9.9.1(jiti@1.21.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dabh/diagnostics@2.0.3': dependencies: @@ -11209,15 +9109,15 @@ snapshots: '@emnapi/core@1.2.0': dependencies: '@emnapi/wasi-threads': 1.0.1 - tslib: 2.6.2 + tslib: 2.7.0 '@emnapi/runtime@1.2.0': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@emnapi/wasi-threads@1.0.1': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@emotion/is-prop-valid@0.8.8': dependencies: @@ -11431,20 +9331,20 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.21.0))': dependencies: - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.21.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} - '@eslint-react/ast@1.12.3(eslint@8.57.0)(typescript@5.5.3)': + '@eslint-react/ast@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': dependencies: '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) birecord: 0.1.1 string-ts: 2.2.0 ts-pattern: 5.3.1 @@ -11453,18 +9353,18 @@ snapshots: - supports-color - typescript - '@eslint-react/core@1.12.3(eslint@8.57.0)(typescript@5.5.3)': + '@eslint-react/core@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': dependencies: - '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) birecord: 0.1.1 short-unique-id: 5.2.0 ts-pattern: 5.3.1 @@ -11473,46 +9373,46 @@ snapshots: - supports-color - typescript - '@eslint-react/eslint-plugin@1.12.3(eslint@8.57.0)(typescript@5.5.3)': + '@eslint-react/eslint-plugin@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': dependencies: - '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 - eslint-plugin-react-debug: 1.12.3(eslint@8.57.0)(typescript@5.5.3) - eslint-plugin-react-dom: 1.12.3(eslint@8.57.0)(typescript@5.5.3) - eslint-plugin-react-hooks-extra: 1.12.3(eslint@8.57.0)(typescript@5.5.3) - eslint-plugin-react-naming-convention: 1.12.3(eslint@8.57.0)(typescript@5.5.3) - eslint-plugin-react-web-api: 1.12.3(eslint@8.57.0)(typescript@5.5.3) - eslint-plugin-react-x: 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.0) + eslint-plugin-react-debug: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint-plugin-react-dom: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint-plugin-react-hooks-extra: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint-plugin-react-naming-convention: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint-plugin-react-web-api: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint-plugin-react-x: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@eslint-react/jsx@1.12.3(eslint@8.57.0)(typescript@5.5.3)': + '@eslint-react/jsx@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': dependencies: - '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.12.3(eslint@8.57.0)(typescript@5.5.3)': + '@eslint-react/shared@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': dependencies: '@eslint-react/tools': 1.12.3 - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) picomatch: 4.0.2 transitivePeerDependencies: - eslint @@ -11521,36 +9421,44 @@ snapshots: '@eslint-react/tools@1.12.3': {} - '@eslint-react/types@1.12.3(eslint@8.57.0)(typescript@5.5.3)': + '@eslint-react/types@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': dependencies: '@eslint-react/tools': 1.12.3 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/var@1.12.3(eslint@8.57.0)(typescript@5.5.3)': + '@eslint-react/var@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': dependencies: - '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint/eslintrc@2.1.4': + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.6 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 debug: 4.3.6 - espree: 9.6.1 - globals: 13.24.0 + espree: 10.1.0 + globals: 14.0.0 ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -11559,21 +9467,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.0': {} + '@eslint/js@9.9.1': {} - '@fastify/busboy@2.1.0': {} + '@eslint/object-schema@2.1.4': {} - '@humanwhocodes/config-array@0.11.14': - dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.6 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@fastify/busboy@2.1.0': {} '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.2': {} + '@humanwhocodes/retry@0.3.0': {} '@inquirer/confirm@3.1.10': dependencies: @@ -11637,21 +9539,21 @@ snapshots: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.5.0 - '@jsonjoy.com/base64@1.1.2(tslib@2.6.2)': + '@jsonjoy.com/base64@1.1.2(tslib@2.7.0)': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 - '@jsonjoy.com/json-pack@1.0.4(tslib@2.6.2)': + '@jsonjoy.com/json-pack@1.0.4(tslib@2.7.0)': dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.6.2) - '@jsonjoy.com/util': 1.2.0(tslib@2.6.2) + '@jsonjoy.com/base64': 1.1.2(tslib@2.7.0) + '@jsonjoy.com/util': 1.2.0(tslib@2.7.0) hyperdyperid: 1.2.0 - thingies: 1.21.0(tslib@2.6.2) - tslib: 2.6.2 + thingies: 1.21.0(tslib@2.7.0) + tslib: 2.7.0 - '@jsonjoy.com/util@1.2.0(tslib@2.6.2)': + '@jsonjoy.com/util@1.2.0(tslib@2.7.0)': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@kwsites/file-exists@1.1.1': dependencies: @@ -11813,10 +9715,6 @@ snapshots: transitivePeerDependencies: - '@opentelemetry/api' - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - dependencies: - eslint-scope: 5.1.1 - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -11829,10 +9727,10 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.5.6(@swc/core@1.7.6)': + '@nrwl/tao@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12))': dependencies: - nx: 19.5.6(@swc/core@1.7.6) - tslib: 2.6.2 + nx: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + tslib: 2.7.0 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' @@ -12550,8 +10448,6 @@ snapshots: optionalDependencies: react-refresh: 0.14.2 - '@rushstack/eslint-patch@1.10.3': {} - '@rushstack/node-core-library@5.5.1(@types/node@20.14.9)': dependencies: ajv: 8.13.0 @@ -12596,11 +10492,10 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} - '@stylistic/eslint-plugin-js@2.6.4(eslint@8.57.0)': + '@stylistic/eslint-plugin-js@2.7.1(eslint@9.9.1(jiti@1.21.0))': dependencies: - '@types/eslint': 9.6.0 - acorn: 8.12.1 - eslint: 8.57.0 + '@types/eslint': 9.6.1 + eslint: 9.9.1(jiti@1.21.0) eslint-visitor-keys: 4.0.0 espree: 10.1.0 @@ -12655,26 +10550,26 @@ snapshots: '@swc/helpers@0.5.1': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@swc/helpers@0.5.12': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@swc/types@0.1.12': dependencies: '@swc/counter': 0.1.3 - '@tanstack/config@0.12.1(@types/node@20.14.9)(esbuild@0.21.5)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': + '@tanstack/config@0.13.0(@types/node@20.14.9)(esbuild@0.21.5)(eslint@9.9.1(jiti@1.21.0))(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': dependencies: '@commitlint/parse': 19.0.3 - '@eslint/js': 8.57.0 - '@stylistic/eslint-plugin-js': 2.6.4(eslint@8.57.0) + '@eslint/js': 9.9.1 + '@stylistic/eslint-plugin-js': 2.7.1(eslint@9.9.1(jiti@1.21.0)) commander: 12.1.0 current-git-branch: 1.1.0 esbuild-register: 3.6.0(esbuild@0.21.5) - eslint-plugin-import-x: 3.1.0(eslint@8.57.0)(typescript@5.5.3) - eslint-plugin-n: 17.10.2(eslint@8.57.0) + eslint-plugin-import-x: 4.1.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint-plugin-n: 17.10.2(eslint@9.9.1(jiti@1.21.0)) globals: 15.9.0 interpret: 3.1.1 jsonfile: 6.1.0 @@ -12686,7 +10581,7 @@ snapshots: typedoc: 0.26.6(typescript@5.5.3) typedoc-plugin-frontmatter: 1.0.0(typedoc-plugin-markdown@4.2.6(typedoc@0.26.6(typescript@5.5.3))) typedoc-plugin-markdown: 4.2.6(typedoc@0.26.6(typescript@5.5.3)) - typescript-eslint: 7.18.0(eslint@8.57.0)(typescript@5.5.3) + typescript-eslint: 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) v8flags: 4.0.1 vite-plugin-dts: 4.0.3(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) vite-plugin-externalize-deps: 0.8.0(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) @@ -12780,7 +10675,7 @@ snapshots: '@tybys/wasm-util@0.9.0': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@types/argparse@1.0.38': {} @@ -12835,10 +10730,10 @@ snapshots: '@types/eslint-scope@3.7.7': dependencies: - '@types/eslint': 9.6.0 + '@types/eslint': 9.6.1 '@types/estree': 1.0.5 - '@types/eslint@9.6.0': + '@types/eslint@9.6.1': dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -12875,8 +10770,6 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/json5@0.0.29': {} - '@types/micromatch@4.0.7': dependencies: '@types/braces': 3.0.4 @@ -12897,8 +10790,6 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/parse-json@4.0.2': {} - '@types/prop-types@15.7.12': {} '@types/qs@6.9.7': {} @@ -12918,8 +10809,6 @@ snapshots: '@types/retry@0.12.2': {} - '@types/semver@7.5.8': {} - '@types/send@0.17.1': dependencies: '@types/mime': 1.3.2 @@ -12959,162 +10848,56 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.0 - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)': - dependencies: - '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.6 - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare-lite: 1.4.0 - semver: 7.6.3 - tsutils: 3.21.0(typescript@5.5.3) - optionalDependencies: - typescript: 5.5.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3))(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 8.57.0 + '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 8.3.0 + eslint: 9.9.1(jiti@1.21.0) graphemer: 1.4.0 ignore: 5.3.1 - natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.3) - optionalDependencies: - typescript: 5.5.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.0)(typescript@5.5.3)': - dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3)': - dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3) - debug: 4.3.6 - eslint: 8.57.0 - optionalDependencies: - typescript: 5.5.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3)': - dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.3) - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.6 - eslint: 8.57.0 - optionalDependencies: - typescript: 5.5.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@5.62.0': - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - - '@typescript-eslint/scope-manager@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - - '@typescript-eslint/scope-manager@8.3.0': - dependencies: - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/visitor-keys': 8.3.0 - - '@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.5.3)': - dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.6 - eslint: 8.57.0 - tsutils: 3.21.0(typescript@5.5.3) - optionalDependencies: - typescript: 5.5.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.3)': - dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.6 - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.5.3) - optionalDependencies: - typescript: 5.5.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@8.3.0(eslint@8.57.0)(typescript@5.5.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.6 + natural-compare: 1.4.0 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - - eslint - supports-color - '@typescript-eslint/types@5.62.0': {} - - '@typescript-eslint/types@7.18.0': {} - - '@typescript-eslint/types@8.3.0': {} - - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.3)': + '@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 8.3.0 debug: 4.3.6 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.6.3 - tsutils: 3.21.0(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.0) optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.3)': + '@typescript-eslint/scope-manager@8.3.0': + dependencies: + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/visitor-keys': 8.3.0 + + '@typescript-eslint/type-utils@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) debug: 4.3.6 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: + - eslint - supports-color + '@typescript-eslint/types@8.3.0': {} + '@typescript-eslint/typescript-estree@8.3.0(typescript@5.5.3)': dependencies: '@typescript-eslint/types': 8.3.0 @@ -13130,60 +10913,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.5.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3) - eslint: 8.57.0 - eslint-scope: 5.1.1 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.3)': - 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.3) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@8.3.0(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.0)) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.21.0) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@5.62.0': - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.3.0': dependencies: '@typescript-eslint/types': 8.3.0 eslint-visitor-keys: 3.4.3 - '@ungap/structured-clone@1.2.0': {} - '@vercel/nft@0.26.5': dependencies: '@mapbox/node-pre-gyp': 1.0.11 @@ -13234,7 +10979,7 @@ snapshots: astring: 1.8.6 magicast: 0.2.11 recast: 0.23.4 - tslib: 2.6.2 + tslib: 2.7.0 vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) '@vinxi/react-server-dom@0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': @@ -13457,7 +11202,7 @@ snapshots: '@yarnpkg/parsers@3.0.0-rc.46': dependencies: js-yaml: 3.14.1 - tslib: 2.6.2 + tslib: 2.7.0 '@zkochan/js-yaml@0.0.7': dependencies: @@ -13634,7 +11379,7 @@ snapshots: aria-hidden@1.2.3: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 aria-query@5.3.0: dependencies: @@ -13645,88 +11390,14 @@ snapshots: '@ark/schema': 0.3.2 '@ark/util': 0.2.1 - array-buffer-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - array-each@1.0.1: {} array-flatten@1.1.1: {} array-ify@1.0.0: {} - array-includes@3.1.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - array-slice@1.1.0: {} - array-union@2.1.0: {} - - array.prototype.findlast@1.2.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - - array.prototype.findlastindex@1.2.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - - array.prototype.flat@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - - array.prototype.flatmap@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - - array.prototype.toreversed@1.1.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - - array.prototype.tosorted@1.1.3: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - - arraybuffer.prototype.slice@1.0.3: - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - assert@2.1.0: dependencies: call-bind: 1.0.7 @@ -13737,11 +11408,9 @@ snapshots: assertion-error@1.1.0: {} - ast-types-flow@0.0.8: {} - ast-types@0.16.1: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 astring@1.8.6: {} @@ -13767,8 +11436,6 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - axe-core@4.7.0: {} - axios@1.7.2: dependencies: follow-redirects: 1.15.6 @@ -13777,10 +11444,6 @@ snapshots: transitivePeerDependencies: - debug - axobject-query@3.2.1: - dependencies: - dequal: 2.0.3 - b4a@1.6.6: {} babel-dead-code-elimination@1.0.6: @@ -13794,60 +11457,6 @@ snapshots: babel-plugin-add-module-exports@0.2.1: {} - babel-plugin-macros@3.1.0: - dependencies: - '@babel/runtime': 7.23.5 - cosmiconfig: 7.1.0 - resolve: 1.22.8 - - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): - dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.37.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-react-remove-prop-types@0.4.24: {} - - babel-preset-react-app@10.0.1: - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.25.2) - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.25.2) - '@babel/preset-env': 7.24.5(@babel/core@7.25.2) - '@babel/preset-react': 7.24.1(@babel/core@7.25.2) - '@babel/preset-typescript': 7.24.1(@babel/core@7.25.2) - '@babel/runtime': 7.23.5 - babel-plugin-macros: 3.1.0 - babel-plugin-transform-react-remove-prop-types: 0.4.24 - transitivePeerDependencies: - - supports-color - balanced-match@1.0.2: {} bare-events@2.2.2: @@ -13982,7 +11591,7 @@ snapshots: camel-case@4.1.2: dependencies: pascal-case: 3.1.2 - tslib: 2.6.2 + tslib: 2.7.0 camelcase-css@2.0.1: {} @@ -14209,8 +11818,6 @@ snapshots: confbox@0.1.7: {} - confusing-browser-globals@1.0.11: {} - connect-history-api-fallback@2.0.0: {} consola@3.2.3: {} @@ -14236,10 +11843,10 @@ snapshots: convert-source-map@2.0.0: {} - convex@1.13.2(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + convex@1.13.2(eslint@9.9.1(jiti@1.21.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: esbuild: 0.17.19 - eslint-plugin-require-extensions: 0.1.3(eslint@8.57.0) + eslint-plugin-require-extensions: 0.1.3(eslint@9.9.1(jiti@1.21.0)) jwt-decode: 3.1.2 node-fetch: 2.7.0 prettier: 3.2.5 @@ -14262,24 +11869,12 @@ snapshots: dependencies: is-what: 4.1.8 - core-js-compat@3.37.1: - dependencies: - browserslist: 4.23.3 - core-js@3.32.2: {} core-js@3.38.1: {} core-util-is@1.0.3: {} - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - crc-32@1.2.2: {} crc32-stream@6.0.0: @@ -14331,8 +11926,6 @@ snapshots: execa: 0.6.3 is-git-repository: 1.1.1 - damerau-levenshtein@1.0.8: {} - data-uri-to-buffer@4.0.1: {} data-urls@5.0.0: @@ -14340,24 +11933,6 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - data-view-buffer@1.0.1: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - - data-view-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - - data-view-byte-offset@1.0.0: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - date-fns@2.30.0: dependencies: '@babel/runtime': 7.23.5 @@ -14456,20 +12031,12 @@ snapshots: diff-sequences@29.6.3: {} - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - dlv@1.1.3: {} dns-packet@5.6.1: dependencies: '@leichtgewicht/ip-codec': 2.0.5 - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - doctrine@3.0.0: dependencies: esutils: 2.0.3 @@ -14503,7 +12070,7 @@ snapshots: dot-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 dot-prop@5.3.0: dependencies: @@ -14563,108 +12130,18 @@ snapshots: environment@1.1.0: {} - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - error-stack-parser@2.1.4: dependencies: stackframe: 1.3.4 - es-abstract@1.23.3: - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 es-errors@1.3.0: {} - es-iterator-helpers@1.0.18: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.2 - es-module-lexer@1.5.4: {} - es-object-atoms@1.0.0: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.0.3: - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - es-shim-unscopables@1.0.2: - dependencies: - hasown: 2.0.2 - - es-to-primitive@1.2.1: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - esbuild-register@3.6.0(esbuild@0.21.5): dependencies: debug: 4.3.6 @@ -14761,38 +12238,11 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@8.57.0): + eslint-compat-utils@0.5.1(eslint@9.9.1(jiti@1.21.0)): dependencies: - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.21.0) semver: 7.6.3 - eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.25.2))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2))(eslint@8.57.0)(typescript@5.5.3): - dependencies: - '@babel/core': 7.25.2 - '@babel/eslint-parser': 7.24.5(@babel/core@7.25.2)(eslint@8.57.0) - '@rushstack/eslint-patch': 1.10.3 - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - babel-preset-react-app: 10.0.1 - confusing-browser-globals: 1.0.11 - eslint: 8.57.0 - eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.25.2))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.34.1(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) - eslint-plugin-testing-library: 5.11.1(eslint@8.57.0)(typescript@5.5.3) - optionalDependencies: - typescript: 5.5.3 - transitivePeerDependencies: - - '@babel/plugin-syntax-flow' - - '@babel/plugin-transform-react-jsx' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - jest - - supports-color - eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 @@ -14801,131 +12251,57 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-plugin-es-x@7.8.0(eslint@8.57.0): + eslint-plugin-es-x@7.8.0(eslint@9.9.1(jiti@1.21.0)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.0)) '@eslint-community/regexpp': 4.11.0 - eslint: 8.57.0 - eslint-compat-utils: 0.5.1(eslint@8.57.0) - - eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.25.2))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2))(eslint@8.57.0): - dependencies: - '@babel/plugin-syntax-flow': 7.24.6(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.25.2) - eslint: 8.57.0 - lodash: 4.17.21 - string-natural-compare: 3.0.1 + eslint: 9.9.1(jiti@1.21.0) + eslint-compat-utils: 0.5.1(eslint@9.9.1(jiti@1.21.0)) - eslint-plugin-import-x@3.1.0(eslint@8.57.0)(typescript@5.5.3): + eslint-plugin-import-x@4.1.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) debug: 4.3.6 doctrine: 3.0.0 - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.21.0) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.5 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 stable-hash: 0.0.4 - tslib: 2.6.2 - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0): - dependencies: - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) - hasown: 2.0.2 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3): - dependencies: - '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 - optionalDependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) + tslib: 2.7.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + eslint-plugin-n@17.10.2(eslint@9.9.1(jiti@1.21.0)): dependencies: - '@babel/runtime': 7.23.5 - aria-query: 5.3.0 - array-includes: 3.1.8 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.18 - eslint: 8.57.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - - eslint-plugin-n@17.10.2(eslint@8.57.0): - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.0)) enhanced-resolve: 5.17.0 - eslint: 8.57.0 - eslint-plugin-es-x: 7.8.0(eslint@8.57.0) + eslint: 9.9.1(jiti@1.21.0) + eslint-plugin-es-x: 7.8.0(eslint@9.9.1(jiti@1.21.0)) get-tsconfig: 4.7.5 globals: 15.9.0 ignore: 5.3.1 minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-react-debug@1.12.3(eslint@8.57.0)(typescript@5.5.3): + eslint-plugin-react-debug@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): dependencies: - '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.0) string-ts: 2.2.0 ts-pattern: 5.3.1 optionalDependencies: @@ -14933,191 +12309,155 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.12.3(eslint@8.57.0)(typescript@5.5.3): + eslint-plugin-react-dom@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): dependencies: - '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.0) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.12.3(eslint@8.57.0)(typescript@5.5.3): + eslint-plugin-react-hooks-extra@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): dependencies: - '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.0) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): + eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614(eslint@9.9.1(jiti@1.21.0)): dependencies: - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.21.0) - eslint-plugin-react-naming-convention@1.12.3(eslint@8.57.0)(typescript@5.5.3): + eslint-plugin-react-naming-convention@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): dependencies: - '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.0) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.12.3(eslint@8.57.0)(typescript@5.5.3): + eslint-plugin-react-web-api@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): dependencies: - '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) birecord: 0.1.1 - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.21.0) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.12.3(eslint@8.57.0)(typescript@5.5.3): + eslint-plugin-react-x@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): dependencies: - '@eslint-react/ast': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@8.57.0)(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@8.57.0)(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 - is-immutable-type: 5.0.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.0) + is-immutable-type: 5.0.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-plugin-react@7.34.1(eslint@8.57.0): - dependencies: - array-includes: 3.1.8 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.18 - eslint: 8.57.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - object.hasown: 1.1.4 - object.values: 1.2.0 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.11 - - eslint-plugin-require-extensions@0.1.3(eslint@8.57.0): + eslint-plugin-require-extensions@0.1.3(eslint@9.9.1(jiti@1.21.0)): dependencies: - eslint: 8.57.0 - - eslint-plugin-testing-library@5.11.1(eslint@8.57.0)(typescript@5.5.3): - dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript + eslint: 9.9.1(jiti@1.21.0) eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@7.2.2: + eslint-scope@8.0.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-visitor-keys@2.1.0: {} - eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@4.0.0: {} - eslint@8.57.0: + eslint@9.9.1(jiti@1.21.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.0)) '@eslint-community/regexpp': 4.11.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/config-array': 0.18.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.9.1 '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 '@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 + eslint-scope: 8.0.2 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 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 @@ -15126,20 +12466,16 @@ snapshots: optionator: 0.9.3 strip-ansi: 6.0.1 text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.0 transitivePeerDependencies: - supports-color - espree@10.1.0: - dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 4.0.0 - - espree@9.6.1: + espree@10.1.0: dependencies: acorn: 8.12.1 acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 3.4.3 + eslint-visitor-keys: 4.0.0 esprima@4.0.1: {} @@ -15294,9 +12630,9 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - file-entry-cache@6.0.1: + file-entry-cache@8.0.0: dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 file-uri-to-path@1.0.0: {} @@ -15343,11 +12679,10 @@ snapshots: flagged-respawn@2.0.0: {} - flat-cache@3.2.0: + flat-cache@4.0.1: dependencies: flatted: 3.3.1 keyv: 4.5.4 - rimraf: 3.0.2 flat@5.0.2: {} @@ -15388,7 +12723,7 @@ snapshots: framer-motion@11.3.21(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - tslib: 2.6.2 + tslib: 2.7.0 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 react: 18.3.1 @@ -15428,15 +12763,6 @@ snapshots: function-bind@1.1.2: {} - function.prototype.name@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - functions-have-names: 1.2.3 - - functions-have-names@1.2.3: {} - gauge@3.0.2: dependencies: aproba: 2.0.0 @@ -15475,12 +12801,6 @@ snapshots: get-stream@8.0.1: {} - get-symbol-description@1.0.2: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - get-tsconfig@4.7.5: dependencies: resolve-pkg-maps: 1.0.0 @@ -15548,26 +12868,10 @@ snapshots: globals@11.12.0: {} - globals@13.24.0: - dependencies: - type-fest: 0.20.2 + globals@14.0.0: {} globals@15.9.0: {} - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.0.1 - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - globby@14.0.1: dependencies: '@sindresorhus/merge-streams': 2.3.0 @@ -15616,8 +12920,6 @@ snapshots: handle-thing@2.0.1: {} - has-bigints@1.0.2: {} - has-flag@3.0.0: {} has-flag@4.0.0: {} @@ -15822,12 +13124,6 @@ snapshots: ini@1.3.8: {} - internal-slot@1.0.7: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 - interpret@3.1.1: {} invariant@2.2.4: @@ -15864,32 +13160,12 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 - is-array-buffer@3.0.4: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - - is-arrayish@0.2.1: {} - is-arrayish@0.3.2: {} - is-async-function@2.0.0: - dependencies: - has-tostringtag: 1.0.2 - - is-bigint@1.0.4: - dependencies: - has-bigints: 1.0.2 - is-binary-path@2.1.0: dependencies: binary-extensions: 2.2.0 - is-boolean-object@1.1.2: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - is-builtin-module@3.2.1: dependencies: builtin-modules: 3.3.0 @@ -15900,24 +13176,12 @@ snapshots: dependencies: hasown: 2.0.2 - is-data-view@1.0.1: - dependencies: - is-typed-array: 1.1.13 - - is-date-object@1.0.5: - dependencies: - has-tostringtag: 1.0.2 - is-docker@2.2.1: {} is-docker@3.0.0: {} is-extglob@2.1.1: {} - is-finalizationregistry@1.0.2: - dependencies: - call-bind: 1.0.7 - is-fullwidth-code-point@3.0.0: {} is-generator-function@1.0.10: @@ -15933,10 +13197,10 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-immutable-type@5.0.0(eslint@8.57.0)(typescript@5.5.3): + is-immutable-type@5.0.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): dependencies: - '@typescript-eslint/type-utils': 8.3.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.0) ts-api-utils: 1.3.0(typescript@5.5.3) ts-declaration-location: 1.0.4(typescript@5.5.3) typescript: 5.5.3 @@ -15949,8 +13213,6 @@ snapshots: is-interactive@1.0.0: {} - is-map@2.0.3: {} - is-module@1.0.0: {} is-nan@1.3.2: @@ -15958,16 +13220,10 @@ snapshots: call-bind: 1.0.7 define-properties: 1.2.1 - is-negative-zero@2.0.3: {} - is-network-error@1.1.0: {} is-node-process@1.2.0: {} - is-number-object@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - is-number@7.0.0: {} is-obj@2.0.0: {} @@ -15990,35 +13246,16 @@ snapshots: dependencies: '@types/estree': 1.0.5 - is-regex@1.1.4: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - is-relative@1.0.0: dependencies: is-unc-path: 1.0.0 - is-set@2.0.3: {} - - is-shared-array-buffer@1.0.3: - dependencies: - call-bind: 1.0.7 - is-stream@1.1.0: {} is-stream@2.0.1: {} is-stream@3.0.0: {} - is-string@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - - is-symbol@1.0.4: - dependencies: - has-symbols: 1.0.3 - is-text-path@2.0.0: dependencies: text-extensions: 2.4.0 @@ -16035,17 +13272,6 @@ snapshots: is-uuid@1.0.2: {} - is-weakmap@2.0.2: {} - - is-weakref@1.0.2: - dependencies: - call-bind: 1.0.7 - - is-weakset@2.0.3: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - is-what@4.1.8: {} is-windows@1.0.2: {} @@ -16064,8 +13290,6 @@ snapshots: isarray@1.0.0: {} - isarray@2.0.5: {} - isbot@5.1.14: {} isexe@2.0.0: {} @@ -16074,14 +13298,6 @@ snapshots: isobject@3.0.1: {} - iterator.prototype@1.1.2: - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.6 - set-function-name: 2.0.2 - jackspeak@3.4.0: dependencies: '@isaacs/cliui': 8.0.2 @@ -16150,8 +13366,6 @@ snapshots: - supports-color - utf-8-validate - jsesc@0.5.0: {} - jsesc@2.5.2: {} jsesc@3.0.2: {} @@ -16168,10 +13382,6 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json5@1.0.2: - dependencies: - minimist: 1.2.8 - json5@2.2.3: {} jsonata@1.8.7: {} @@ -16190,13 +13400,6 @@ snapshots: jsonparse@1.3.1: {} - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.2.0 - jwt-decode@3.1.2: {} keyv@4.5.4: @@ -16215,12 +13418,6 @@ snapshots: ky@1.5.0: {} - language-subtag-registry@0.3.22: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.22 - launch-editor@2.8.0: dependencies: picocolors: 1.0.1 @@ -16315,8 +13512,6 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash.debounce@4.0.8: {} - lodash.defaults@4.2.0: {} lodash.isarguments@3.1.0: {} @@ -16351,7 +13546,7 @@ snapshots: lower-case@2.0.2: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 lru-cache@10.2.2: {} @@ -16417,10 +13612,10 @@ snapshots: memfs@4.9.3: dependencies: - '@jsonjoy.com/json-pack': 1.0.4(tslib@2.6.2) - '@jsonjoy.com/util': 1.2.0(tslib@2.6.2) - tree-dump: 1.0.2(tslib@2.6.2) - tslib: 2.6.2 + '@jsonjoy.com/json-pack': 1.0.4(tslib@2.7.0) + '@jsonjoy.com/util': 1.2.0(tslib@2.7.0) + tree-dump: 1.0.2(tslib@2.7.0) + tslib: 2.7.0 meow@12.1.1: {} @@ -16558,8 +13753,6 @@ snapshots: nanoid@3.3.7: {} - natural-compare-lite@1.4.0: {} - natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -16659,7 +13852,7 @@ snapshots: no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.6.2 + tslib: 2.7.0 node-addon-api@7.1.0: {} @@ -16742,10 +13935,10 @@ snapshots: nwsapi@2.2.12: {} - nx@19.5.6(@swc/core@1.7.6): + nx@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.5.6(@swc/core@1.7.6) + '@nrwl/tao': 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -16776,7 +13969,7 @@ snapshots: tar-stream: 2.2.0 tmp: 0.2.3 tsconfig-paths: 4.2.0 - tslib: 2.6.2 + tslib: 2.7.0 yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: @@ -16828,41 +14021,10 @@ snapshots: for-own: 1.0.0 isobject: 3.0.1 - object.entries@1.1.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - - object.groupby@1.0.3: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - - object.hasown@1.1.4: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - object.pick@1.3.0: dependencies: isobject: 3.0.1 - object.values@1.2.0: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - obuf@1.1.2: {} ofetch@1.3.4: @@ -16978,7 +14140,7 @@ snapshots: param-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 parent-module@1.0.1: dependencies: @@ -16990,13 +14152,6 @@ snapshots: map-cache: 0.2.2 path-root: 0.1.1 - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.24.7 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - parse-passwd@1.0.0: {} parse5-htmlparser2-tree-adapter@6.0.1: @@ -17016,7 +14171,7 @@ snapshots: pascal-case@3.1.2: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 path-browserify@1.0.1: {} @@ -17047,8 +14202,6 @@ snapshots: path-to-regexp@6.2.2: {} - path-type@4.0.0: {} - path-type@5.0.0: {} pathe@1.1.2: {} @@ -17163,12 +14316,6 @@ snapshots: process@0.11.10: {} - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - protobufjs@7.3.2: dependencies: '@protobufjs/aspromise': 1.1.2 @@ -17250,8 +14397,6 @@ snapshots: transitivePeerDependencies: - csstype - react-is@16.13.1: {} - react-is@17.0.2: {} react-is@18.2.0: {} @@ -17264,7 +14409,7 @@ snapshots: dependencies: react: 18.3.1 react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.2 + tslib: 2.7.0 optionalDependencies: '@types/react': 18.3.3 @@ -17273,7 +14418,7 @@ snapshots: react: 18.3.1 react-remove-scroll-bar: 2.3.4(@types/react@18.3.3)(react@18.3.1) react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.2 + tslib: 2.7.0 use-callback-ref: 1.3.0(@types/react@18.3.3)(react@18.3.1) use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) optionalDependencies: @@ -17296,7 +14441,7 @@ snapshots: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.3.1 - tslib: 2.6.2 + tslib: 2.7.0 optionalDependencies: '@types/react': 18.3.3 @@ -17346,7 +14491,7 @@ snapshots: ast-types: 0.16.1 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.6.2 + tslib: 2.7.0 rechoir@0.8.0: dependencies: @@ -17365,48 +14510,8 @@ snapshots: dependencies: redis-errors: 1.2.0 - reflect.getprototypeof@1.0.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - which-builtin-type: 1.1.3 - - regenerate-unicode-properties@10.1.1: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - regenerator-runtime@0.14.0: {} - regenerator-transform@0.15.2: - dependencies: - '@babel/runtime': 7.23.5 - - regexp.prototype.flags@1.5.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - - regexpu-core@5.3.2: - dependencies: - '@babel/regjsgen': 0.8.0 - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 - - regjsparser@0.9.1: - dependencies: - jsesc: 0.5.0 - relateurl@0.2.7: {} remix-auth-form@1.5.0(@remix-run/server-runtime@2.11.2(typescript@5.5.3))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.2(typescript@5.5.3))): @@ -17455,12 +14560,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.5: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@3.1.0: dependencies: onetime: 5.1.2 @@ -17527,29 +14626,16 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 sade@1.8.1: dependencies: mri: 1.2.0 - safe-array-concat@1.1.2: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 - safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} - safe-regex-test@1.0.3: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - safe-stable-stringify@2.4.3: {} safer-buffer@2.1.2: {} @@ -17652,13 +14738,6 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.2 - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - setprototypeof@1.1.0: {} setprototypeof@1.2.0: {} @@ -17719,8 +14798,6 @@ snapshots: dependencies: unicode-emoji-modifier-base: 1.0.0 - slash@3.0.0: {} - slash@4.0.0: {} slash@5.1.0: {} @@ -17732,7 +14809,7 @@ snapshots: snake-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 snakecase-keys@5.4.4: dependencies: @@ -17832,8 +14909,6 @@ snapshots: string-argv@0.3.2: {} - string-natural-compare@3.0.1: {} - string-ts@2.2.0: {} string-width@4.2.3: @@ -17848,40 +14923,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string.prototype.matchall@4.0.11: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 - set-function-name: 2.0.2 - side-channel: 1.0.6 - - string.prototype.trim@1.2.9: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - - string.prototype.trimend@1.0.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -18055,14 +15096,14 @@ snapshots: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.21.5 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6)(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.21.5)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6)(esbuild@0.21.5) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5) optionalDependencies: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.21.5 @@ -18088,9 +15129,9 @@ snapshots: dependencies: any-promise: 1.3.0 - thingies@1.21.0(tslib@2.6.2): + thingies@1.21.0(tslib@2.7.0): dependencies: - tslib: 2.6.2 + tslib: 2.7.0 through@2.3.8: {} @@ -18129,9 +15170,9 @@ snapshots: dependencies: punycode: 2.3.1 - tree-dump@1.0.2(tslib@2.6.2): + tree-dump@1.0.2(tslib@2.7.0): dependencies: - tslib: 2.6.2 + tslib: 2.7.0 tree-kill@1.2.2: {} @@ -18156,29 +15197,15 @@ snapshots: optionalDependencies: typescript: 5.5.3 - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - tsconfig-paths@4.2.0: dependencies: json5: 2.2.3 minimist: 1.2.8 strip-bom: 3.0.0 - tslib@1.14.1: {} - tslib@2.4.1: {} - tslib@2.6.2: {} - - tsutils@3.21.0(typescript@5.5.3): - dependencies: - tslib: 1.14.1 - typescript: 5.5.3 + tslib@2.7.0: {} turbo-stream@2.2.0: {} @@ -18190,8 +15217,6 @@ snapshots: type-detect@4.0.8: {} - type-fest@0.20.2: {} - type-fest@0.21.3: {} type-fest@2.19.0: {} @@ -18205,38 +15230,6 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typed-array-buffer@1.0.2: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - - typed-array-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-byte-offset@1.0.2: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-length@1.0.6: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - typedoc-plugin-frontmatter@1.0.0(typedoc-plugin-markdown@4.2.6(typedoc@0.26.6(typescript@5.5.3))): dependencies: typedoc-plugin-markdown: 4.2.6(typedoc@0.26.6(typescript@5.5.3)) @@ -18255,15 +15248,15 @@ snapshots: typescript: 5.5.3 yaml: 2.4.5 - typescript-eslint@7.18.0(eslint@8.57.0)(typescript@5.5.3): + typescript-eslint@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): dependencies: - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 + '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3))(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: + - eslint - supports-color typescript@5.0.4: {} @@ -18284,13 +15277,6 @@ snapshots: ufo@1.5.3: {} - unbox-primitive@1.0.2: - dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - unc-path-regex@0.1.2: {} uncrypto@0.1.3: {} @@ -18318,19 +15304,8 @@ snapshots: node-fetch-native: 1.6.4 pathe: 1.1.2 - unicode-canonical-property-names-ecmascript@2.0.0: {} - unicode-emoji-modifier-base@1.0.0: {} - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.1.0: {} - - unicode-property-aliases-ecmascript@2.1.0: {} - unicorn-magic@0.1.0: {} unimport@3.7.1(rollup@4.18.0): @@ -18422,7 +15397,7 @@ snapshots: use-callback-ref@1.3.0(@types/react@18.3.3)(react@18.3.1): dependencies: react: 18.3.1 - tslib: 2.6.2 + tslib: 2.7.0 optionalDependencies: '@types/react': 18.3.3 @@ -18430,7 +15405,7 @@ snapshots: dependencies: detect-node-es: 1.1.0 react: 18.3.1 - tslib: 2.6.2 + tslib: 2.7.0 optionalDependencies: '@types/react': 18.3.3 @@ -18747,7 +15722,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -18770,17 +15745,15 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)) watchpack: 2.4.1 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.21.5): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -18803,9 +15776,11 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6)(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.21.5)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -18835,36 +15810,6 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-boxed-primitive@1.0.2: - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - - which-builtin-type@1.1.3: - dependencies: - function.prototype.name: 1.1.6 - has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - - which-collection@1.0.2: - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.3 - which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 @@ -18970,8 +15915,6 @@ snapshots: yallist@4.0.0: {} - yaml@1.10.2: {} - yaml@2.4.5: {} yargs-parser@20.2.9: {} From 14477ec3fb287cfc292c72f5388a280cdf3b5560 Mon Sep 17 00:00:00 2001 From: Lachlan Collins <1667261+lachlancollins@users.noreply.github.com> Date: Fri, 30 Aug 2024 19:44:22 +1000 Subject: [PATCH 016/154] chore(deps): update to @tanstack/config 0.13.1 (#2230) --- package.json | 2 +- packages/react-router/src/Matches.tsx | 6 +----- packages/router-arktype-adapter/src/index.ts | 2 +- packages/router-valibot-adapter/src/index.ts | 5 +++-- packages/router-zod-adapter/src/index.ts | 2 +- packages/start/src/router-manifest/index.ts | 3 +-- .../start/src/server/createRequestHandler.ts | 7 ++----- packages/start/src/server/createStartHandler.ts | 16 ++++------------ pnpm-lock.yaml | 10 +++++----- 9 files changed, 19 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index 4155b5203e..44b3571145 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@arethetypeswrong/cli": "^0.15.4", "@eslint-react/eslint-plugin": "^1.12.3", "@playwright/test": "^1.46.1", - "@tanstack/config": "^0.13.0", + "@tanstack/config": "^0.13.1", "@types/node": "^20.14.7", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", diff --git a/packages/react-router/src/Matches.tsx b/packages/react-router/src/Matches.tsx index 0874e30d5e..e6359a32b1 100644 --- a/packages/react-router/src/Matches.tsx +++ b/packages/react-router/src/Matches.tsx @@ -4,14 +4,10 @@ import { CatchBoundary, ErrorComponent } from './CatchBoundary' import { useRouterState } from './useRouterState' import { useRouter } from './useRouter' import { Transitioner } from './Transitioner' -import { - type AnyRoute, - type ReactNode, - type StaticDataRouteOption, -} from './route' import { matchContext } from './matchContext' import { Match } from './Match' import { SafeFragment } from './SafeFragment' +import type { AnyRoute, ReactNode, StaticDataRouteOption } from './route' import type { AnyRouter, RegisteredRouter } from './router' import type { ResolveRelativePath, ToOptions } from './link' import type { diff --git a/packages/router-arktype-adapter/src/index.ts b/packages/router-arktype-adapter/src/index.ts index 2a77d92104..a5957a6283 100644 --- a/packages/router-arktype-adapter/src/index.ts +++ b/packages/router-arktype-adapter/src/index.ts @@ -1,4 +1,4 @@ -import { type SearchValidatorAdapter } from '@tanstack/react-router' +import type { SearchValidatorAdapter } from '@tanstack/react-router' export interface ArkTypeLike { infer: any diff --git a/packages/router-valibot-adapter/src/index.ts b/packages/router-valibot-adapter/src/index.ts index 6d904f8e72..ba9487d087 100644 --- a/packages/router-valibot-adapter/src/index.ts +++ b/packages/router-valibot-adapter/src/index.ts @@ -1,5 +1,6 @@ -import { type SearchValidatorAdapter } from '@tanstack/react-router' -import { type GenericSchema, parse } from 'valibot' +import { parse } from 'valibot' +import type { SearchValidatorAdapter } from '@tanstack/react-router' +import type { GenericSchema } from 'valibot' export type ValibotSearchValidatorAdapter = SearchValidatorAdapter< diff --git a/packages/router-zod-adapter/src/index.ts b/packages/router-zod-adapter/src/index.ts index 4151d0f2bc..b83e2bd932 100644 --- a/packages/router-zod-adapter/src/index.ts +++ b/packages/router-zod-adapter/src/index.ts @@ -1,5 +1,5 @@ -import { type SearchValidatorAdapter } from '@tanstack/react-router' import { z } from 'zod' +import type { SearchValidatorAdapter } from '@tanstack/react-router' export interface ZodTypeLike { _input: any diff --git a/packages/start/src/router-manifest/index.ts b/packages/start/src/router-manifest/index.ts index 8e37d2e8d1..7d5b4cfdc6 100644 --- a/packages/start/src/router-manifest/index.ts +++ b/packages/start/src/router-manifest/index.ts @@ -1,7 +1,6 @@ -import { getManifest } from 'vinxi/manifest' // @ts-expect-error -// eslint-disable-next-line import/no-unresolved import tsrGetManifest from 'tsr:routes-manifest' +import { getManifest } from 'vinxi/manifest' import type { Manifest } from '@tanstack/react-router' /** diff --git a/packages/start/src/server/createRequestHandler.ts b/packages/start/src/server/createRequestHandler.ts index 5357d6cbdd..b3b1c49344 100644 --- a/packages/start/src/server/createRequestHandler.ts +++ b/packages/start/src/server/createRequestHandler.ts @@ -1,14 +1,11 @@ -import { - type AnyRouter, - type Manifest, - createMemoryHistory, -} from '@tanstack/react-router' +import { createMemoryHistory } from '@tanstack/react-router' import { serializeLoaderData } from '../client/serialization' import { mergeHeaders, serverFnPayloadTypeHeader, serverFnReturnTypeHeader, } from '../client' +import type { AnyRouter, Manifest } from '@tanstack/react-router' import type { HandlerCallback } from './defaultStreamHandler' export type RequestHandler = ( diff --git a/packages/start/src/server/createStartHandler.ts b/packages/start/src/server/createStartHandler.ts index 26071c55ed..d53637300f 100644 --- a/packages/start/src/server/createStartHandler.ts +++ b/packages/start/src/server/createStartHandler.ts @@ -1,21 +1,13 @@ -import { eventHandler, toWebRequest } from 'vinxi/http' -import { - type AnyRouter, - type Manifest, - createMemoryHistory, -} from '@tanstack/react-router' -import { - type EventHandler, - type EventHandlerRequest, - type H3Event, - getResponseHeaders, -} from 'vinxi/http' +import { eventHandler, getResponseHeaders, toWebRequest } from 'vinxi/http' +import { createMemoryHistory } from '@tanstack/react-router' import { serializeLoaderData } from '../client/serialization' import { mergeHeaders } from '../client/headers' import { serverFnPayloadTypeHeader, serverFnReturnTypeHeader, } from '../constants' +import type { EventHandler, EventHandlerRequest, H3Event } from 'vinxi/http' +import type { AnyRouter, Manifest } from '@tanstack/react-router' import type { HandlerCallback } from './defaultStreamHandler' export type CustomizeStartHandler = ( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9fa7cad44e..b477bf4ac5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,8 +38,8 @@ importers: specifier: ^1.46.1 version: 1.46.1 '@tanstack/config': - specifier: ^0.13.0 - version: 0.13.0(@types/node@20.14.9)(esbuild@0.21.5)(eslint@9.9.1(jiti@1.21.0))(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + specifier: ^0.13.1 + version: 0.13.1(@types/node@20.14.9)(esbuild@0.21.5)(eslint@9.9.1(jiti@1.21.0))(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) '@types/node': specifier: ^20.14.7 version: 20.14.9 @@ -4009,8 +4009,8 @@ packages: '@swc/types@0.1.12': resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} - '@tanstack/config@0.13.0': - resolution: {integrity: sha512-vkPmNYH/Ee8Zqn9f0lwB2tyi/Erg9kKmaywQZGBWRfaHwXUGahMWc0S8Fb2iS/SMa8YOkUUl1w79J0hELTY65A==} + '@tanstack/config@0.13.1': + resolution: {integrity: sha512-p8K5lrwZPGjvfPuvP1UxHyucDmdADrHOqzpO/zRAhjqV6uBZBatZ2CTKR8Zlvekmb2bdXKjqBGoiyIuLiT0xTA==} engines: {node: '>=18'} hasBin: true @@ -10560,7 +10560,7 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tanstack/config@0.13.0(@types/node@20.14.9)(esbuild@0.21.5)(eslint@9.9.1(jiti@1.21.0))(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': + '@tanstack/config@0.13.1(@types/node@20.14.9)(esbuild@0.21.5)(eslint@9.9.1(jiti@1.21.0))(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': dependencies: '@commitlint/parse': 19.0.3 '@eslint/js': 9.9.1 From a8703f017d79ad7a62c65edd17ab0d24992ffdb1 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Fri, 30 Aug 2024 10:20:40 -0600 Subject: [PATCH 017/154] docs: update api-routes and server-function to use vinxi --- .../framework/react/guide/server-functions.md | 259 ----------------- docs/framework/react/start/api-routes.md | 115 +++++--- .../framework/react/start/server-functions.md | 262 ++++++++++++++++-- 3 files changed, 317 insertions(+), 319 deletions(-) delete mode 100644 docs/framework/react/guide/server-functions.md diff --git a/docs/framework/react/guide/server-functions.md b/docs/framework/react/guide/server-functions.md deleted file mode 100644 index 8628fc2ef5..0000000000 --- a/docs/framework/react/guide/server-functions.md +++ /dev/null @@ -1,259 +0,0 @@ ---- -id: server-functions -title: Server Functions ---- - -As [TanStack Start](./tanstack-start.md) is a full-stack framework, we need a way to call a function on the client which then executes some code on the server. - -This is where Server Functions come in. - -## What are Server Functions? - -> [!TIP] -> You can think of Server Functions like mini-portals that let your users trigger a pre-defined action on the server (like a built-in RPC solution 🤯). - -Server Functions are actions that can be executed on the server from the client or from other server functions. - -When a server function is called, it will execute the server-side code and return the result to the caller (regardless of whether the caller is a client or another server function). - -Server Functions are more than just a way to send and receive data. They're like a bridge that lets you connect your backend code (the behind-the-scenes magic) directly to your frontend code (what the user sees), making it easier to build a seamless user experience. - -## How to use Server Functions in TanStack Start - -While some frameworks use special pragmas to denote a function that will execute on the server, Start uses a utility to -create an instance of a server function. - -```typescript -const yourFn = createServerFn('POST', async () => { - // Server-side code lives here -}) -``` - -This function can then be called from the client: - -```tsx -function Component() { - // Just to demonstrate that this is a client-side function - const buttonRef = (el: HTMLButtonElement) => { - if (!el) return - el.addEventListener('click', async () => { - const result = await yourFn() - console.info(result) - }) - } - - return -} - -// Or, even just: -function Component() { - return -} -``` - -Or from another server function: - -```typescript -const yourFn2 = createServerFn('POST', async () => { - const result = await yourFn() - console.info(result) -}) -``` - -Or even from other server-side code: - -```typescript -async function someServerFunction() { - const result = await yourFn() - console(result) -} -``` - -When this function is called from the client, it will make a request to the server, execute the server-side code, and -return the serialized result to the client. - -## Server Function Arguments - -Like any function, server functions can take arguments: - -```typescript -const yourFn = createServerFn('POST', async (val: number) => { - // Server-side code lives here -}) - -// Call it like this: -yourFn(123) -``` - -Only one argument is supported, but you can pass an object if you need to pass multiple values: - -```typescript -const yourFn = createServerFn('POST', async (obj: { a: number; b: number }) => { - // Server-side code lives here -}) -``` - -Any serializable value can be passed as an argument to a server function. - -## Serialization - -Anything that can be serialized via `JSON.stringify` and `JSON.parse` can be used as an argument to or returned from a -server function. - -This includes: - -- `string` -- `number` -- `boolean` -- `null` -- `Array` -- `Object` - -In addition, we support serializing the following: - -- [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream)s of other serializable types -- [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)s of other - serializable types - -## No-JS Server Functions - -Without JavaScript enabled, there's only one way to execute server functions: by submitting a form. - -This is done by adding a `form` element to the page -with [the HTML attribute `action`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/action). - -> Notice that we mentioned the **HTML** attribute `action`. This attribute only accepts a string in HTML, just like all -> other attributes. -> -> While React -> 19 [added support for passing a function to `action`](https://react.dev/reference/react-dom/components/form#form), -> it's -> a React-specific feature and not part of the HTML standard. - -The `action` attribute tells the browser where to send the form data when the form is submitted. In this case, we want -to send the form data to the server function. - -To do this, we can utilize the `url` property of the server function: - -```typescript -const yourFn = createServerFn('POST', async () => { - // Server-side code lives here -}) - -console.info(yourFn.url) -``` - -And pass this to the `action` attribute of the form: - -```tsx -function Component() { - return ( -
- -
- ) -} -``` - -When the form is submitted, the server function will be executed. - -### No-JS Server Function Arguments - -To pass arguments to a server function when submitting a form, you can use the `input` element with the `name` attribute -to attach the argument to the [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) passed to your -server function: - -```tsx -const yourFn = createServerFn('POST', async (formData: FormData) => { - // `val` will be '123' - const val = formData.get('val') - // ... -}) - -function Component() { - return ( - // We need to tell the server that our data type is `multipart/form-data` by setting the `encType` attribute on the form. -
- - -
- ) -} -``` - -When the form is submitted, the server function will be executed with the form's data as an argument. - -### No-JS Server Function Return Value - -Regardless of whether JavaScript is enabled, the server function will return a response to the HTTP request made from -the client. - -When JavaScript is enabled, this response can be accessed as the return value of the server function in the client's -JavaScript code. - -```typescript -const yourFn = createServerFn('POST', async () => { - return 'Hello, world!' -}) - -// `.then` is not available when JavaScript is disabled -yourFn().then(console.log) -``` - -However, when JavaScript is disabled, there is no way to access the return value of the server function in the client's -JavaScript code. - -Instead, the server function can provide a response to the client, telling the browser to navigate in a certain way. - -When combined with a `loader`, we're able to provide an experience similar to a single-page application, even when -JavaScript is disabled; -all by telling the browser to reload the current page with new data piped through the `loader`: - -```tsx -import * as fs from 'fs' -import { createFileRoute } from '@tanstack/react-router' -import { createServerFn } from '@tanstack/start' - -const filePath = 'count.txt' - -async function readCount() { - return parseInt( - await fs.promises.readFile(filePath, 'utf-8').catch(() => '0'), - ) -} - -const getCount = createServerFn('GET', () => { - return readCount() -}) - -const updateCount = createServerFn('POST', async (formData: FormData) => { - const count = await readCount() - const addBy = Number(formData.get('addBy')) - await fs.promises.writeFile(filePath, `${count + addBy}`) - // Reload the page to trigger the loader again - return new Response('ok', { status: 301, headers: { Location: '/' } }) -}) - -export const Route = createFileRoute('/')({ - component: Home, - loader: async () => await getCount(), -}) - -function Home() { - const state = Route.useLoaderData() - - return ( -
-
- - -
-
{state}
-
- ) -} -``` diff --git a/docs/framework/react/start/api-routes.md b/docs/framework/react/start/api-routes.md index 85ccf29dc3..7d298b6f2a 100644 --- a/docs/framework/react/start/api-routes.md +++ b/docs/framework/react/start/api-routes.md @@ -193,7 +193,9 @@ export const Route = createAPIFileRoute('/hello')({ // {"message":"Hello, World!"} ``` -Or you can use the `json` helper function to automatically set the `Content-Type` header to `application/json`. +## Using the `json` helper function + +Or you can use the `json` helper function to automatically set the `Content-Type` header to `application/json` and serialize the JSON object for you. ```ts // routes/api/hello.ts @@ -212,46 +214,87 @@ export const Route = createAPIFileRoute('/hello')({ ## Responding with a status code -You can set the status code of the response by passing it as the second argument to the `Response` constructor. - -```ts -// routes/api/hello.ts -import { json } from '@tanstack/start' -import { createAPIFileRoute } from '@tanstack/start/api' - -export const Route = createAPIFileRoute('/users/$id')({ - GET: async ({ request, params }) => { - const user = await findUser(params.id) - if (!user) { - return new Response('User not found', { - status: 404, - }) - } - return json(user) - }, -}) -``` +You can set the status code of the response by either: + +- Passing it as a property of the second argument to the `Response` constructor + + ```ts + // routes/api/hello.ts + import { json } from '@tanstack/start' + import { createAPIFileRoute } from '@tanstack/start/api' + + export const Route = createAPIFileRoute('/users/$id')({ + GET: async ({ request, params }) => { + const user = await findUser(params.id) + if (!user) { + return new Response('User not found', { + status: 404, + }) + } + return json(user) + }, + }) + ``` + +- Using the `setStatus` helper function from `vinxi/http` + + ```ts + // routes/api/hello.ts + import { json } from '@tanstack/start' + import { createAPIFileRoute } from '@tanstack/start/api' + import { setStatus } from 'vinxi/http' + + export const Route = createAPIFileRoute('/users/$id')({ + GET: async ({ request, params }) => { + const user = await findUser(params.id) + if (!user) { + setStatus(404) + return new Response('User not found') + } + return json(user) + }, + }) + ``` In this example, we're returning a `404` status code if the user is not found. You can set any valid HTTP status code using this method. ## Setting headers in the response -Sometimes you may need to set headers in the response. You can do this by passing an object as the second argument to the `Response` constructor. +Sometimes you may need to set headers in the response. You can do this by either: -```ts -// routes/api/hello.ts -import { createAPIFileRoute } from '@tanstack/start/api' +- Passing an object as the second argument to the `Response` constructor. -export const Route = createAPIFileRoute('/hello')({ - GET: async ({ request }) => { - return new Response('Hello, World!', { - headers: { - 'Content-Type': 'text/plain', - }, - }) - }, -}) + ```ts + // routes/api/hello.ts + import { createAPIFileRoute } from '@tanstack/start/api' -// Visit /api/hello to see the response -// Hello, World! -``` + export const Route = createAPIFileRoute('/hello')({ + GET: async ({ request }) => { + return new Response('Hello, World!', { + headers: { + 'Content-Type': 'text/plain', + }, + }) + }, + }) + + // Visit /api/hello to see the response + // Hello, World! + ``` + +- Or using the `setHeaders` helper function from `vinxi/http`. + + ```ts + // routes/api/hello.ts + import { createAPIFileRoute } from '@tanstack/start/api' + import { setHeaders } from 'vinxi/http' + + export const Route = createAPIFileRoute('/hello')({ + GET: async ({ request }) => { + setHeaders({ + 'Content-Type': 'text/plain', + }) + return new Response('Hello, World!') + }, + }) + ``` diff --git a/docs/framework/react/start/server-functions.md b/docs/framework/react/start/server-functions.md index cfb7ac4f80..379fd6c4bb 100644 --- a/docs/framework/react/start/server-functions.md +++ b/docs/framework/react/start/server-functions.md @@ -3,7 +3,16 @@ id: server-functions title: Server Functions --- -Server functions are functions that run **only** on the server. They are used to perform tasks that should never be directly exposed to the client. Server functions can be defined anywhere in your application, but must be defined at the top level of a file. They can be called from anywhere in your application, including loaders, hooks, etc. They are just asynchronous functions! +## What are Server Functions? + +Server functions allow you to specify specific function to run **only** on the server. They are used to perform tasks that should never be directly exposed to the client. + +## How do they work? + +Server functions can be defined anywhere in your application, but must be defined at the top level of a file. They can be called from anywhere in your application, including loaders, hooks, etc. Traditionally, this pattern is known as a Remote Procedure Call (RPC), but due to the isomorphic nature of these functions, we refer to them as server functions. + +- On the server bundle, server functions are left alone. Nothing needs to be done since they are already in the correct place. +- On the client however, server functions are removed out of the client bundle and replaced with a function that, when called, makes a `fetch` request to the server instructing it to execute the server function in the server bundle and then send the response back to the client. ## Defining Server Functions @@ -21,13 +30,27 @@ export const getServerTime = createServerFn('GET', async () => { }) ``` +## Where can I call server functions? + +- From server-side code +- From client-side code +- From other server functions +- Anywhere, really! + ## Accepting Parameters Server functions accept a single parameter, which can be a variety of types: - Primitives -- JSON-serializable objects + - `string` + - `number` + - `boolean` + - `null` + - `Array` + - `Object` - FormData +- ReadableStream (of any of the above) +- Promise (of any of the above) Here's an example of a server function that accepts a simple string parameter: @@ -112,20 +135,70 @@ function Test() { ## Server Function Context -In addition to the single parameter that server functions accept, they also have access to a special `context` object that contains information about the current request. This object is useful for accessing headers, cookies, and other request-specific information. It contains properties like: +In addition to the single parameter that server functions accept, you can also access server request context from within any server function using many utilites from `vinxi/http`. Under the hood, Vinxi uses `unjs`'s `h3` package to perform cross-platform HTTP requests. -- `method`: The HTTP method of the request -- `request`: The `Request` object +There are many context functions available to you for things like: + +- Accessing the request context +- Accessing/setting headers +- Accessing/setting sessions/cookies +- Setting response status codes and status messages +- Dealing with mulit-part form data +- Reading/Setting custom server context properties + +For a full list of available context functions, see all of the available [h3 Methods](https://h3.unjs.io/utils/request) or inspect the [Vinxi Exports Source Code](https://github.com/nksaraf/vinxi/blob/main/packages/vinxi/runtime/http.js#L232-L320). + +For starters, here are a few examples: + +## Accessing the Request Context + +Let's use Vinxi's `getWebRequest` function to access the request itself from within a server function: ```tsx import { createServerFn } from '@tanstack/start' +import { getWebRequest } from 'vinxi/http' + +export const getServerTime = createServerFn('GET', async () => { + const { method } = getWebRequest() + + console.log(method) // GET -export const getServerTime = createServerFn('GET', async (_, context) => { - console.log(context.method) // GET console.log(context.request.headers.get('User-Agent')) // Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3 }) ``` +## Accessing Headers + +Use Vinxi's `getHeaders` function to access all headers from within a server function: + +```tsx +import { createServerFn } from '@tanstack/start' +import { getHeaders } from 'vinxi/http' + +export const getServerTime = createServerFn('GET', async () => { + console.log(getHeaders()) + // { + // "accept": "*/*", + // "accept-encoding": "gzip, deflate, br", + // "accept-language": "en-US,en;q=0.9", + // "connection": "keep-alive", + // "host": "localhost:3000", + // ... + // } +}) +``` + +You can also access individual headers using the `getHeader` function: + +```tsx +import { createServerFn } from '@tanstack/start' +import { getHeader } from 'vinxi/http' + +export const getServerTime = createServerFn('GET', async () => { + console.log(getHeader('User-Agent')) // Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3 +}) +``` + ## Returning Values Server functions can return a few different types of values: @@ -156,19 +229,31 @@ export const getServerData = createServerFn('GET', async () => { By default, server functions assume that any non-Response object returned is either a primitive or JSON-serializable object. -## Returning Primitives and JSON with custom headers +## Responding with Custom Headers -To return a primitive or JSON-serializable object with custom headers, use the `json` function exported from the `@tanstack/start` package: +To respond with custom headers, you can use Vinxi's `setHeader` function: ```tsx -import { createServerFn, json } from '@tanstack/start' +import { createServerFn } from '@tanstack/start' +import { setHeader } from 'vinxi/http' export const getServerTime = createServerFn('GET', async () => { - return json(new Date().toISOString(), { - headers: { - 'X-Custom-Header': 'value', - }, - }) + setHeader('X-Custom-Header', 'value') + return new Date().toISOString() +}) +``` + +## Responding with Custom Status Codes + +To respond with a custom status code, you can use Vinxi's `setStatus` function: + +```tsx +import { createServerFn } from '@tanstack/start' +import { setStatus } from 'vinxi/http' + +export const getServerTime = createServerFn('GET', async () => { + setStatus(201) + return new Date().toISOString() }) ``` @@ -291,6 +376,8 @@ export const doStuff = createServerFn('GET', async () => { }) ``` +> ⚠️ Do not use Vinxi's `sendRedirect` function to send soft redirects from within server functions. This will send the redirect using the `Location` header and will force a full page hard navigation on the client. + ## Redirect Headers You can also set custom headers on a redirect by passing a `headers` option: @@ -368,23 +455,150 @@ export const Route = createFileRoute('/stuff')({ }) ``` -## Can I simply use the `use server` directive? +## No-JS Server Functions + +Without JavaScript enabled, there's only one way to execute server functions: by submitting a form. + +This is done by adding a `form` element to the page +with [the HTML attribute `action`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/action). + +> Notice that we mentioned the **HTML** attribute `action`. This attribute only accepts a string in HTML, just like all +> other attributes. +> +> While React +> 19 [added support for passing a function to `action`](https://react.dev/reference/react-dom/components/form#form), +> it's +> a React-specific feature and not part of the HTML standard. + +The `action` attribute tells the browser where to send the form data when the form is submitted. In this case, we want +to send the form data to the server function. + +To do this, we can utilize the `url` property of the server function: + +```typescript +const yourFn = createServerFn('POST', async () => { + // Server-side code lives here +}) + +console.info(yourFn.url) +``` + +And pass this to the `action` attribute of the form: + +```tsx +function Component() { + return ( +
+ +
+ ) +} +``` + +When the form is submitted, the server function will be executed. -Sure, you can use the `use server` directive instead of the `createServerFn` function, however be aware of some caveats: +### No-JS Server Function Arguments -- All arguments must be JSON-serializable and are passed as is -- You will not have access to the `context` object, and thus will not be able to access request-specific information like method, headers, cookies, etc. +To pass arguments to a server function when submitting a form, you can use the `input` element with the `name` attribute +to attach the argument to the [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) passed to your +server function: ```tsx -// getServerTime.ts +const yourFn = createServerFn('POST', async (formData: FormData) => { + // `val` will be '123' + const val = formData.get('val') + // ... +}) + +function Component() { + return ( + // We need to tell the server that our data type is `multipart/form-data` by setting the `encType` attribute on the form. +
+ + +
+ ) +} +``` + +When the form is submitted, the server function will be executed with the form's data as an argument. + +### No-JS Server Function Return Value -function greetUser(greeting: string, name: string) { - 'use server' - return `${greeting}, ${name}!` +Regardless of whether JavaScript is enabled, the server function will return a response to the HTTP request made from +the client. + +When JavaScript is enabled, this response can be accessed as the return value of the server function in the client's +JavaScript code. + +```typescript +const yourFn = createServerFn('POST', async () => { + return 'Hello, world!' +}) + +// `.then` is not available when JavaScript is disabled +yourFn().then(console.log) +``` + +However, when JavaScript is disabled, there is no way to access the return value of the server function in the client's +JavaScript code. + +Instead, the server function can provide a response to the client, telling the browser to navigate in a certain way. + +When combined with a `loader` from TanStack Router, we're able to provide an experience similar to a single-page application, even when +JavaScript is disabled; +all by telling the browser to reload the current page with new data piped through the `loader`: + +```tsx +import * as fs from 'fs' +import { createFileRoute } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' + +const filePath = 'count.txt' + +async function readCount() { + return parseInt( + await fs.promises.readFile(filePath, 'utf-8').catch(() => '0'), + ) +} + +const getCount = createServerFn('GET', () => { + return readCount() +}) + +const updateCount = createServerFn('POST', async (formData: FormData) => { + const count = await readCount() + const addBy = Number(formData.get('addBy')) + await fs.promises.writeFile(filePath, `${count + addBy}`) + // Reload the page to trigger the loader again + return new Response('ok', { status: 301, headers: { Location: '/' } }) +}) + +export const Route = createFileRoute('/')({ + component: Home, + loader: async () => await getCount(), +}) + +function Home() { + const state = Route.useLoaderData() + + return ( +
+
+ + +
+
{state}
+
+ ) } ``` -## How do server functions work? +## How are server functions compiled? Under the hood, server functions are extracted out of the client bundle and into a separate server bundle. On the server, they are executed as-is, and the result is sent back to the client. On the client, server functions proxy the request to the server, which executes the function and sends the result back to the client, all via `fetch`. From dc40904b44b9fc71063fec8314b90e8b4bcd7d84 Mon Sep 17 00:00:00 2001 From: Tom Ballinger Date: Fri, 30 Aug 2024 13:13:34 -0700 Subject: [PATCH 018/154] Update convex version (#2232) --- .../convex/_generated/api.d.ts | 1 - .../convex/_generated/api.js | 1 - .../convex/_generated/dataModel.d.ts | 1 - .../convex/_generated/server.d.ts | 1 - .../convex/_generated/server.js | 1 - .../react/start-convex-trellaux/package.json | 4 +- pnpm-lock.yaml | 61 +++++++------------ 7 files changed, 25 insertions(+), 45 deletions(-) diff --git a/examples/react/start-convex-trellaux/convex/_generated/api.d.ts b/examples/react/start-convex-trellaux/convex/_generated/api.d.ts index e0ff5e0653..6158319746 100644 --- a/examples/react/start-convex-trellaux/convex/_generated/api.d.ts +++ b/examples/react/start-convex-trellaux/convex/_generated/api.d.ts @@ -4,7 +4,6 @@ * * THIS CODE IS AUTOMATICALLY GENERATED. * - * Generated by convex@1.13.2. * To regenerate, run `npx convex dev`. * @module */ diff --git a/examples/react/start-convex-trellaux/convex/_generated/api.js b/examples/react/start-convex-trellaux/convex/_generated/api.js index 72032d5575..2b62e6b82f 100644 --- a/examples/react/start-convex-trellaux/convex/_generated/api.js +++ b/examples/react/start-convex-trellaux/convex/_generated/api.js @@ -4,7 +4,6 @@ * * THIS CODE IS AUTOMATICALLY GENERATED. * - * Generated by convex@1.13.2. * To regenerate, run `npx convex dev`. * @module */ diff --git a/examples/react/start-convex-trellaux/convex/_generated/dataModel.d.ts b/examples/react/start-convex-trellaux/convex/_generated/dataModel.d.ts index 9f252168ef..5b936a43a0 100644 --- a/examples/react/start-convex-trellaux/convex/_generated/dataModel.d.ts +++ b/examples/react/start-convex-trellaux/convex/_generated/dataModel.d.ts @@ -4,7 +4,6 @@ * * THIS CODE IS AUTOMATICALLY GENERATED. * - * Generated by convex@1.13.2. * To regenerate, run `npx convex dev`. * @module */ diff --git a/examples/react/start-convex-trellaux/convex/_generated/server.d.ts b/examples/react/start-convex-trellaux/convex/_generated/server.d.ts index 948e82a490..869a677bc4 100644 --- a/examples/react/start-convex-trellaux/convex/_generated/server.d.ts +++ b/examples/react/start-convex-trellaux/convex/_generated/server.d.ts @@ -4,7 +4,6 @@ * * THIS CODE IS AUTOMATICALLY GENERATED. * - * Generated by convex@1.13.2. * To regenerate, run `npx convex dev`. * @module */ diff --git a/examples/react/start-convex-trellaux/convex/_generated/server.js b/examples/react/start-convex-trellaux/convex/_generated/server.js index c60175993d..d16f9527d3 100644 --- a/examples/react/start-convex-trellaux/convex/_generated/server.js +++ b/examples/react/start-convex-trellaux/convex/_generated/server.js @@ -4,7 +4,6 @@ * * THIS CODE IS AUTOMATICALLY GENERATED. * - * Generated by convex@1.13.2. * To regenerate, run `npx convex dev`. * @module */ diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index d5b1453f3b..8c51e01eff 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -4,7 +4,7 @@ "sideEffects": false, "type": "module", "scripts": { - "dev": "convex init && concurrently -r npm:dev:web npm:dev:db", + "dev": "npx convex dev --once && concurrently -r npm:dev:web npm:dev:db", "dev:web": "vinxi dev", "dev:db": "convex dev --run board:seed", "build": "vinxi build", @@ -23,7 +23,7 @@ "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", - "convex": "^1.13.2", + "convex": "^1.15.0", "isbot": "^5.1.14", "ky": "^1.5.0", "msw": "^2.3.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b477bf4ac5..9923c81506 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,7 +63,7 @@ importers: version: 25.0.0 nx: specifier: ^19.5.6 - version: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + version: 19.5.6(@swc/core@1.7.6) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -1484,7 +1484,7 @@ importers: dependencies: '@convex-dev/react-query': specifier: 0.0.0-alpha.5 - version: 0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.13.2(eslint@9.9.1(jiti@1.21.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@tanstack/react-query': specifier: ^5.51.21 version: 5.51.21(react@18.3.1) @@ -1513,8 +1513,8 @@ importers: specifier: ^8.2.2 version: 8.2.2 convex: - specifier: ^1.13.2 - version: 1.13.2(eslint@9.9.1(jiti@1.21.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.15.0 + version: 1.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) isbot: specifier: ^5.1.14 version: 5.1.14 @@ -1992,7 +1992,7 @@ importers: version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5) + version: 5.93.0(@swc/core@1.7.6)(esbuild@0.21.5) zod: specifier: ^3.23.8 version: 3.23.8 @@ -5069,9 +5069,9 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - convex@1.13.2: - resolution: {integrity: sha512-XtXv5f5QXQgpcd+zcgecfIdUn1JmusGuHlP0c6XKxLEdA6v9dXI43/s5CgB3ioX1vwVTHpJBp0bqtpe37XXbuA==} - engines: {node: '>=16.15.1', npm: '>=7.0.0'} + convex@1.15.0: + resolution: {integrity: sha512-NTyr+4x3hhjzDwiQ18Rx7pfkkoZIWak3ERUd3ihWt1jQP4HVx+mqtU1B/q7ZkV5Xp4FLj3aJeck55wjc9im/bQ==} + engines: {node: '>=18.0.0', npm: '>=7.0.0'} hasBin: true peerDependencies: '@auth0/auth0-react': ^2.0.1 @@ -5593,12 +5593,6 @@ packages: typescript: optional: true - eslint-plugin-require-extensions@0.1.3: - resolution: {integrity: sha512-T3c1PZ9PIdI3hjV8LdunfYI8gj017UQjzAnCrxuo3wAjneDbTPHdE3oNWInOjMA+z/aBkUtlW5vC0YepYMZIug==} - engines: {node: '>=16'} - peerDependencies: - eslint: ^9.9.1 - eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -9086,10 +9080,10 @@ snapshots: '@types/conventional-commits-parser': 5.0.0 chalk: 5.3.0 - '@convex-dev/react-query@0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.13.2(eslint@9.9.1(jiti@1.21.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@convex-dev/react-query@0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@tanstack/react-query': 5.51.21(react@18.3.1) - convex: 1.13.2(eslint@9.9.1(jiti@1.21.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + convex: 1.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dabh/diagnostics@2.0.3': dependencies: @@ -9727,9 +9721,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12))': + '@nrwl/tao@19.5.6(@swc/core@1.7.6)': dependencies: - nx: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + nx: 19.5.6(@swc/core@1.7.6) tslib: 2.7.0 transitivePeerDependencies: - '@swc-node/register' @@ -11843,19 +11837,14 @@ snapshots: convert-source-map@2.0.0: {} - convex@1.13.2(eslint@9.9.1(jiti@1.21.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + convex@1.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: esbuild: 0.17.19 - eslint-plugin-require-extensions: 0.1.3(eslint@9.9.1(jiti@1.21.0)) jwt-decode: 3.1.2 - node-fetch: 2.7.0 prettier: 3.2.5 optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - encoding - - eslint cookie-es@1.1.0: {} @@ -12412,10 +12401,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-require-extensions@0.1.3(eslint@9.9.1(jiti@1.21.0)): - dependencies: - eslint: 9.9.1(jiti@1.21.0) - eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 @@ -13935,10 +13920,10 @@ snapshots: nwsapi@2.2.12: {} - nx@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)): + nx@19.5.6(@swc/core@1.7.6): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + '@nrwl/tao': 19.5.6(@swc/core@1.7.6) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -15096,14 +15081,14 @@ snapshots: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.21.5 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.6)(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.21.5)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5) + webpack: 5.93.0(@swc/core@1.7.6)(esbuild@0.21.5) optionalDependencies: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.21.5 @@ -15722,7 +15707,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -15745,15 +15730,17 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4): + webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.21.5): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -15776,11 +15763,9 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6)(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.21.5)) watchpack: 2.4.1 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild From 1504f8d6e744fb038fd52ea6133fd9adfdbbc379 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sat, 31 Aug 2024 07:49:37 +0200 Subject: [PATCH 019/154] fix: make stacked navigations use latest search params (#2057) * tests: failing test to show that parallel navigate calls are not combined * fix: do not flush immediately in tests * tests: fix test regression from history change * fix: Always use the most up to date search params when building URLs --------- Co-authored-by: Tanner Linsley --- packages/history/src/index.ts | 4 -- packages/react-router/src/router.ts | 15 ++--- .../react-router/tests/routeContext.test.tsx | 6 +- .../react-router/tests/useNavigate.test.tsx | 63 +++++++++++++++++-- 4 files changed, 68 insertions(+), 20 deletions(-) diff --git a/packages/history/src/index.ts b/packages/history/src/index.ts index ab16a03d3f..16fefadc64 100644 --- a/packages/history/src/index.ts +++ b/packages/history/src/index.ts @@ -281,10 +281,6 @@ export function createBrowserHistory(opts?: { } if (!scheduled) { - if (process.env.NODE_ENV === 'test') { - flush() - return - } // Schedule an update to the browser history scheduled = Promise.resolve().then(() => flush()) } diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index 50d9b3e2f7..6eb4ae25fd 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -492,7 +492,6 @@ export interface BuildNextOptions { unmaskOnReload?: boolean } from?: string - fromSearch?: unknown _fromLocation?: ParsedLocation } @@ -1304,13 +1303,9 @@ export class Router< } = {}, matches?: Array>, ): ParsedLocation => { - const fromMatches = - dest._fromLocation != null - ? this.matchRoutes({ - ...dest._fromLocation, - search: dest.fromSearch || dest._fromLocation.search, - }) - : this.state.matches + const fromMatches = dest._fromLocation + ? this.matchRoutes(dest._fromLocation) + : this.state.matches const fromMatch = dest.from != null @@ -1330,7 +1325,9 @@ export class Router< 'Could not find match for from: ' + dest.from, ) - const fromSearch = last(fromMatches)?.search || this.latestLocation.search + const fromSearch = this.state.pendingMatches + ? last(this.state.pendingMatches)?.search + : last(fromMatches)?.search || this.latestLocation.search const stayingMatches = matches?.filter((d) => fromMatches.find((e) => e.routeId === d.routeId), diff --git a/packages/react-router/tests/routeContext.test.tsx b/packages/react-router/tests/routeContext.test.tsx index 934883ef61..02be38c195 100644 --- a/packages/react-router/tests/routeContext.test.tsx +++ b/packages/react-router/tests/routeContext.test.tsx @@ -2503,13 +2503,13 @@ describe('useRouteContext in the component', () => { expect(linkToAbout).toBeInTheDocument() fireEvent.click(linkToAbout) - expect(router.state.location.href).toBe('/nested/about') - expect(window.location.pathname).toBe('/nested/about') - const content = await screen.findByText( JSON.stringify({ foo: 'bar', layout: 'nested' }), ) + expect(router.state.location.href).toBe('/nested/about') + expect(window.location.pathname).toBe('/nested/about') + expect(content).toBeInTheDocument() }) diff --git a/packages/react-router/tests/useNavigate.test.tsx b/packages/react-router/tests/useNavigate.test.tsx index ec6bbb5d6a..c00b108ea9 100644 --- a/packages/react-router/tests/useNavigate.test.tsx +++ b/packages/react-router/tests/useNavigate.test.tsx @@ -3,15 +3,16 @@ import '@testing-library/jest-dom/vitest' import { afterEach, expect, test } from 'vitest' import { cleanup, fireEvent, render, screen } from '@testing-library/react' +import { z } from 'zod' import { + Outlet, + RouterProvider, createRootRoute, createRoute, + createRouteMask, createRouter, - useParams, - Outlet, useNavigate, - RouterProvider, - createRouteMask, + useParams, } from '../src' afterEach(() => { @@ -1231,3 +1232,57 @@ test('when navigating to /posts/$postId/info which is imperatively masked as /po expect(window.location.pathname).toEqual('/posts/id1') }) + +test('when setting search params with 2 parallel navigate calls', async () => { + const rootRoute = createRootRoute() + + const IndexComponent = () => { + const navigate = useNavigate() + return ( + +

Index

+ +
+ ) + } + + const indexRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/', + component: IndexComponent, + validateSearch: z.object({ + param1: z.string().default('param1-default'), + param2: z.string().default('param2-default'), + }), + }) + + const router = createRouter({ + routeTree: rootRoute.addChildren([indexRoute]), + }) + + render() + expect(router.state.location.search).toEqual({ + param1: 'param1-default', + param2: 'param2-default', + }) + + const postsButton = await screen.findByRole('button', { name: 'search' }) + + fireEvent.click(postsButton) + + expect(router.state.location.search).toEqual({ param1: 'foo', param2: 'bar' }) +}) From e945089570e152786f8c67de188a3960e00fb143 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sat, 31 Aug 2024 05:50:56 +0000 Subject: [PATCH 020/154] release: v1.51.7 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/history/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 42 files changed, 91 insertions(+), 91 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 8f72e1f0e0..d374cac8cf 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index a7f6e7f8f5..dfd6ee2ea0 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 7c1c5cd03a..4a474babd1 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 822db254e6..2db9064860 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index b552ecf8b2..1bc1b9d9c2 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 846164d220..6789d6d8f6 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index ea352cc612..cd1822e683 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.6", + "@tanstack/start": "^1.51.7", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 9b53da1d37..725406c7f5 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.6", + "@tanstack/start": "^1.51.7", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 7441f7b5ef..f016d7d046 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 49a1766e3c..f36a11d712 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 85b005e3f2..0b5e6447cb 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 9a93e331fe..ac0af30533 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 30ec152f6f..4e815e62f4 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 0458298389..b37761fc3a 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index e517e231b1..9dbe1ebf16 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 8657c205ae..1805664e1f 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index f11dc50f67..af91387bf5 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 3d5fa83262..6e40b3f3dd 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index dc3ac0f17c..4e4c7e729f 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index c6a63704d4..a2300caab4 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 97b7bcb8ef..0b1a3353ef 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 8f3d46f0af..84c57f05ea 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", + "@tanstack/react-router": "^1.51.7", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/router-devtools": "^1.51.7", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 8100ea3150..d530b99d67 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/router-zod-adapter": "^1.51.6", - "@tanstack/router-valibot-adapter": "^1.51.6", - "@tanstack/router-arktype-adapter": "^1.51.6", + "@tanstack/router-zod-adapter": "^1.51.7", + "@tanstack/router-valibot-adapter": "^1.51.7", + "@tanstack/router-arktype-adapter": "^1.51.7", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index c14ce12db1..f7dee3b72e 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.6", + "@tanstack/start": "^1.51.7", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index b4563543c6..4e9a5ed63d 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/start": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/start": "^1.51.7", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index cd799664c5..c6ebed41cc 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.6", - "@tanstack/react-router-with-query": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/react-router-with-query": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.6", + "@tanstack/start": "^1.51.7", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 5608ee15ff..465c4f6471 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.6", + "@tanstack/start": "^1.51.7", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index d149c6726a..d9ddda5702 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.6", + "@tanstack/start": "^1.51.7", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 933549a4f4..d8b908b5ed 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.6", + "@tanstack/start": "^1.51.7", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 8c51e01eff..30736eeef9 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.6", - "@tanstack/react-router-with-query": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/react-router-with-query": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.6", + "@tanstack/start": "^1.51.7", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index ba07377145..32695825a2 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.6", - "@tanstack/react-router-with-query": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/react-router-with-query": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.6", + "@tanstack/start": "^1.51.7", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index f1e7ca850f..096cbef76a 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 0b7af97754..a113af0eb9 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index ca52ec8908..ba3b61d6c7 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.51.6", - "@tanstack/router-devtools": "^1.51.6", + "@tanstack/react-router": "^1.51.7", + "@tanstack/router-devtools": "^1.51.7", "@tanstack/router-plugin": "^1.51.6", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/history/package.json b/packages/history/package.json index 6eb412b2ce..c7b127cfe4 100644 --- a/packages/history/package.json +++ b/packages/history/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/history", - "version": "1.51.6", + "version": "1.51.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 0e29545bb7..20f15fd1d6 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.51.6", + "version": "1.51.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 5e2cfd8d35..d2697d2a2a 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.51.6", + "version": "1.51.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index eeb7ee0548..ba88b762cc 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.51.6", + "version": "1.51.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index c0b9351f46..78f4c78e8a 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.51.6", + "version": "1.51.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 500962e34a..73dc2b19b6 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.51.6", + "version": "1.51.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 9c68f6ddd4..ca4f8c820e 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.51.6", + "version": "1.51.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index c40fe89da8..3bb14ca922 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.51.6", + "version": "1.51.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From d39d0fd15a821607b5ddf9a9e32df0f7079f3b7e Mon Sep 17 00:00:00 2001 From: kshramt Date: Sat, 31 Aug 2024 22:33:20 +0900 Subject: [PATCH 021/154] fix(react-router): decode search keys (#2227) * fix: Decode search keys * chore: Add a few more tests for search param key decoding * ci: apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- packages/react-router/src/qss.ts | 2 ++ packages/react-router/tests/navigate.test.tsx | 27 +++++++++++++++++++ packages/react-router/tests/qss.test.ts | 24 +++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/packages/react-router/src/qss.ts b/packages/react-router/src/qss.ts index b5ec8e9e4d..b08d5878f1 100644 --- a/packages/react-router/src/qss.ts +++ b/packages/react-router/src/qss.ts @@ -68,6 +68,7 @@ export function decode(str: any, pfx?: string) { const equalIndex = tmp.indexOf('=') if (equalIndex !== -1) { k = tmp.slice(0, equalIndex) + k = decodeURIComponent(k) const value = tmp.slice(equalIndex + 1) if (out[k] !== void 0) { // @ts-expect-error @@ -77,6 +78,7 @@ export function decode(str: any, pfx?: string) { } } else { k = tmp + k = decodeURIComponent(k) out[k] = '' } } diff --git a/packages/react-router/tests/navigate.test.tsx b/packages/react-router/tests/navigate.test.tsx index 61e34f55cd..cf91b66122 100644 --- a/packages/react-router/tests/navigate.test.tsx +++ b/packages/react-router/tests/navigate.test.tsx @@ -68,6 +68,15 @@ function createTestRouter(initialHistory?: RouterHistory) { getParentRoute: () => gLayoutRoute, path: '$username', }) + const searchRoute = createRoute({ + getParentRoute: () => rootRoute, + path: 'search', + validateSearch: (search: Record) => { + return { + ['foo=bar']: Number(search['foo=bar'] ?? 1), + } + }, + }) const projectTree = projectRoute.addChildren([ projectIdRoute.addChildren([ @@ -460,4 +469,22 @@ describe('router.navigate navigation using layout routes resolves correctly', as expect(router.state.location.pathname).toBe('/g/tkdodo') }) + + it('should handle search params with special characters', async () => { + const { router } = createTestRouter( + createMemoryHistory({ initialEntries: ['/search?foo%3Dbar=2'] }), + ) + + await router.load() + + expect(router.state.location.pathname).toBe('/search') + expect(router.state.location.search).toStrictEqual({ 'foo=bar': 2 }) + + await router.navigate({ + search: { 'foo=bar': 3 }, + }) + await router.invalidate() + + expect(router.state.location.search).toStrictEqual({ 'foo=bar': 3 }) + }) }) diff --git a/packages/react-router/tests/qss.test.ts b/packages/react-router/tests/qss.test.ts index b7aebec203..7f1bbca239 100644 --- a/packages/react-router/tests/qss.test.ts +++ b/packages/react-router/tests/qss.test.ts @@ -32,6 +32,12 @@ describe('encode function', () => { const queryString = encode(obj) expect(queryString).toEqual('token=foo%3F&key=value%3D') }) + + it('should handle encoding a top-level key with a special character', () => { + const obj = { 'foo=bar': 1 } + const queryString = encode(obj) + expect(queryString).toEqual('foo%3Dbar=1') + }) }) describe('decode function', () => { @@ -64,4 +70,22 @@ describe('decode function', () => { const decodedObj = decode(queryString) expect(decodedObj).toEqual({ token: 'foo?', key: 'value=' }) }) + + it('should handle decoding a top-level key with a special character', () => { + const queryString = 'foo%3Dbar=1' + const decodedObj = decode(queryString) + expect(decodedObj).toEqual({ 'foo=bar': 1 }) + }) + + it('should handle decoding a top-level key with a special character and without a value', () => { + const queryString = 'foo%3Dbar=' + const decodedObj = decode(queryString) + expect(decodedObj).toEqual({ 'foo=bar': '' }) + }) + + it('should handle decoding a value-less top-level key with a special character', () => { + const queryString = 'foo%3Dbar' + const decodedObj = decode(queryString) + expect(decodedObj).toEqual({ 'foo=bar': '' }) + }) }) From 665e0bf7a6938f4df9373a1342090c93331ac0e9 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sat, 31 Aug 2024 13:37:12 +0000 Subject: [PATCH 022/154] release: v1.51.8 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 41 files changed, 90 insertions(+), 90 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index d374cac8cf..38ba282eb9 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index dfd6ee2ea0..4cec7b6cc0 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 4a474babd1..d8af393a8f 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 2db9064860..cd9e4855d9 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 1bc1b9d9c2..c4b758782b 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 6789d6d8f6..1e968aa2d9 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index cd1822e683..61b99c3acd 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.7", + "@tanstack/start": "^1.51.8", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 725406c7f5..8cf33ef2a0 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.7", + "@tanstack/start": "^1.51.8", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index f016d7d046..4dac82d5f2 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index f36a11d712..f394273408 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 0b5e6447cb..abec1dfeca 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index ac0af30533..910c4995ea 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 4e815e62f4..f7bf782715 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index b37761fc3a..58dce3cebd 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 9dbe1ebf16..4ac10670cd 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 1805664e1f..b50df96421 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index af91387bf5..86c5c2b342 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 6e40b3f3dd..8f558aad63 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 4e4c7e729f..f193bf8abf 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index a2300caab4..388c022593 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 0b1a3353ef..9fbcc3d87d 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 84c57f05ea..5df0f468f3 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", + "@tanstack/react-router": "^1.51.8", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/router-devtools": "^1.51.8", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index d530b99d67..57974a1eb2 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/router-zod-adapter": "^1.51.7", - "@tanstack/router-valibot-adapter": "^1.51.7", - "@tanstack/router-arktype-adapter": "^1.51.7", + "@tanstack/router-zod-adapter": "^1.51.8", + "@tanstack/router-valibot-adapter": "^1.51.8", + "@tanstack/router-arktype-adapter": "^1.51.8", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index f7dee3b72e..57ca1af43a 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.7", + "@tanstack/start": "^1.51.8", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 4e9a5ed63d..4072819ce6 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/start": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/start": "^1.51.8", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index c6ebed41cc..a0f5a1cd22 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.7", - "@tanstack/react-router-with-query": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/react-router-with-query": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.7", + "@tanstack/start": "^1.51.8", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 465c4f6471..6d2e7dc3df 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.7", + "@tanstack/start": "^1.51.8", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index d9ddda5702..902d85b545 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.7", + "@tanstack/start": "^1.51.8", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index d8b908b5ed..24d818bd94 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.7", + "@tanstack/start": "^1.51.8", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 30736eeef9..eb65116f15 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.7", - "@tanstack/react-router-with-query": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/react-router-with-query": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.7", + "@tanstack/start": "^1.51.8", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 32695825a2..577fd8fd0f 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.7", - "@tanstack/react-router-with-query": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/react-router-with-query": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.7", + "@tanstack/start": "^1.51.8", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 096cbef76a..0c51f0e3bd 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index a113af0eb9..bef1c9d3e4 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index ba3b61d6c7..a15e156e89 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.51.7", - "@tanstack/router-devtools": "^1.51.7", + "@tanstack/react-router": "^1.51.8", + "@tanstack/router-devtools": "^1.51.8", "@tanstack/router-plugin": "^1.51.6", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 20f15fd1d6..a9d67ab20f 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.51.7", + "version": "1.51.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index d2697d2a2a..8355166f9d 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.51.7", + "version": "1.51.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index ba88b762cc..44bc8b9de6 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.51.7", + "version": "1.51.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 78f4c78e8a..8f6a3e2008 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.51.7", + "version": "1.51.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 73dc2b19b6..f5d7281205 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.51.7", + "version": "1.51.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index ca4f8c820e..272b921a84 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.51.7", + "version": "1.51.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 3bb14ca922..4a82fb7138 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.51.7", + "version": "1.51.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From e5cfb31a5a3f86720040cb5b37c3a1ae00da9d64 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sat, 31 Aug 2024 19:38:03 +0200 Subject: [PATCH 023/154] fix(react-router): throw invariant exception when trying to access route properties prior to initialization (#2235) * fix(react-router): throw invariant exception when trying to access route properties prior to initialization closes #2231 * remove outdated / commented out tests * tests for invariants * do not throw if path is undefined for pathless routes --- packages/react-router/src/route.ts | 54 ++- .../react-router/tests/createRoute.test.ts | 330 ------------------ packages/react-router/tests/route.test.ts | 53 --- packages/react-router/tests/route.test.tsx | 140 ++++++++ 4 files changed, 183 insertions(+), 394 deletions(-) delete mode 100644 packages/react-router/tests/createRoute.test.ts delete mode 100644 packages/react-router/tests/route.test.ts create mode 100644 packages/react-router/tests/route.test.tsx diff --git a/packages/react-router/src/route.ts b/packages/react-router/src/route.ts index 000bdef20d..7797b496bc 100644 --- a/packages/react-router/src/route.ts +++ b/packages/react-router/src/route.ts @@ -879,13 +879,45 @@ export class Route< TBeforeLoadFn > - // Set up in this.init() + // The following properties are set up in this.init() parentRoute!: TParentRoute - id!: TId - // customId!: TCustomId - path!: TPath - fullPath!: TFullPath - to!: TrimPathRight + private _id!: TId + private _path!: TPath + private _fullPath!: TFullPath + private _to!: TrimPathRight + + public get to() { + invariant( + this._to, + `trying to access property 'to' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`, + ) + return this._to + } + + public get id() { + invariant( + this._id, + `trying to access property 'id' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`, + ) + return this._id + } + + public get path() { + invariant( + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + this.isRoot || this._id || this._path, + `trying to access property 'path' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`, + ) + return this._path + } + + public get fullPath() { + invariant( + this._fullPath, + `trying to access property 'fullPath' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`, + ) + return this._fullPath + } // Optional children?: TChildren @@ -981,7 +1013,7 @@ export class Route< this.parentRoute = this.options.getParentRoute?.() if (isRoot) { - this.path = rootRouteId as TPath + this._path = rootRouteId as TPath } else { invariant( this.parentRoute, @@ -1017,11 +1049,11 @@ export class Route< const fullPath = id === rootRouteId ? '/' : joinPaths([this.parentRoute.fullPath, path]) - this.path = path as TPath - this.id = id as TId + this._path = path as TPath + this._id = id as TId // this.customId = customId as TCustomId - this.fullPath = fullPath as TFullPath - this.to = fullPath as TrimPathRight + this._fullPath = fullPath as TFullPath + this._to = fullPath as TrimPathRight } addChildren< diff --git a/packages/react-router/tests/createRoute.test.ts b/packages/react-router/tests/createRoute.test.ts deleted file mode 100644 index efa13c814d..0000000000 --- a/packages/react-router/tests/createRoute.test.ts +++ /dev/null @@ -1,330 +0,0 @@ -import { describe, it } from 'vitest' -import { z } from 'zod' -import { createMemoryHistory, RootRoute, Route, createRouter } from '../src' - -const lazyTest = (comp: any, key: any) => { - comp.preload = () => {} - return comp -} - -// Write a test -describe('everything', () => { - it('should work', () => { - // // Build our routes. We could do this in our component, too. - // const rootRoute = createRootRoute() - // const indexRoute = createRoute({ - // getParentRoute: () => rootRoute, - // path: '/', - // validateSearch: (search) => - // z - // .object({ - // version: z.number(), - // }) - // .parse(search), - // }) - // const testRoute = createRoute({ - // getParentRoute: () => rootRoute, - // component: lazyTest(() => import('./TestComponent'), 'NamedComponent'), - // path: 'test', - // validateSearch: (search) => - // z - // .object({ - // version: z.number(), - // isGood: z.boolean(), - // }) - // .parse(search), - // }) - // const dashboardRoute = createRoute({ - // getParentRoute: () => rootRoute, - // path: 'dashboard', - // loader: async () => { - // console.info('Fetching all invoices...') - // return { - // invoices: 'await fetchInvoices()', - // } - // }, - // }) - // const dashboardIndexRoute = createRoute({ - // getParentRoute: () => dashboardRoute, - // path: '/', - // }) - // const invoicesRoute = createRoute({ - // getParentRoute: () => dashboardRoute, - // path: 'invoices', - // }) - // const invoicesIndexRoute = createRoute({ - // getParentRoute: () => invoicesRoute, - // path: '/', - // }) - // const invoiceRoute = createRoute({ - // getParentRoute: () => invoicesRoute, - // path: '$invoiceId', - // parseParams: ({ invoiceId }) => ({ invoiceId: Number(invoiceId) }), - // stringifyParams: ({ invoiceId }) => ({ - // invoiceId: String(invoiceId), - // }), - // loader: async ({ params: { invoiceId } }) => { - // console.info('Fetching invoice...') - // return { - // invoice: 'await fetchInvoiceById(invoiceId!)', - // } - // }, - // }) - // const usersRoute = createRoute({ - // getParentRoute: () => dashboardRoute, - // path: 'users', - // loader: async () => { - // return { - // users: 'await fetchUsers()', - // } - // }, - // validateSearch: (search) => - // z - // .object({ - // usersView: z - // .object({ - // sortBy: z.enum(['name', 'id', 'email']).optional(), - // filterBy: z.string().optional(), - // }) - // .optional(), - // }) - // .parse(search), - // preSearchFilters: [ - // // Keep the usersView search param around - // // while in this route (or it's children!) - // (search) => ({ - // ...search, - // usersView: { - // ...search.usersView, - // }, - // }), - // ], - // }) - // const userRoute = createRoute({ - // getParentRoute: () => usersRoute, - // path: '$userId', - // loader: async ({ params: { userId }, search }) => { - // return { - // user: 'await fetchUserById(userId!)', - // } - // }, - // }) - // const authenticatedRoute = createRoute({ - // getParentRoute: () => rootRoute, - // path: 'authenticated/', // Trailing slash doesn't mean anything - // }) - // const authenticatedIndexRoute = createRoute({ - // getParentRoute: () => authenticatedRoute, - // path: '/', - // }) - // const layoutRoute = createRoute({ - // getParentRoute: () => rootRoute, - // id: 'layout', - // component: () => 'layout-wrapper', - // validateSearch: (search) => - // z - // .object({ - // isLayout: z.boolean(), - // }) - // .parse(search), - // }) - // const layoutARoute = createRoute({ - // getParentRoute: () => layoutRoute, - // path: 'layout-a', - // component: () => 'layout-a', - // }) - // const layoutBRoute = createRoute({ - // getParentRoute: () => layoutRoute, - // path: 'layout-b', - // component: () => 'layout-b', - // }) - // const routeTree = rootRoute.addChildren([ - // indexRoute, - // testRoute, - // dashboardRoute.addChildren([ - // dashboardIndexRoute, - // invoicesRoute.addChildren([invoicesIndexRoute, invoiceRoute]), - // usersRoute.addChildren([userRoute]), - // ]), - // authenticatedRoute.addChildren([authenticatedIndexRoute]), - // layoutRoute.addChildren([layoutARoute, layoutBRoute]), - // ]) - // const router = createRouter({ - // routeTree, - // history: createMemoryHistory({ - // initialEntries: ['/?version=1'], - // }), - // }) - // const route = router.getRoute('/dashboard/users/$userId') - // router.buildLink({ - // to: '/dashboard/users/$userId', - // params: { - // userId: '2', - // }, - // search: (prev) => ({ - // usersView: { - // sortBy: 'email', - // }, - // }), - // }) - // // @ts-expect-error - // router.buildLink({ - // from: '/', - // to: '/test', - // }) - // router.buildLink({ - // from: '/', - // to: '/test', - // search: () => { - // return { - // version: 2, - // isGood: true, - // } - // }, - // }) - // router.buildLink({ - // from: '/test', - // to: '/', - // }) - // router.buildLink({ - // from: route.id, - // to: '', - // }) - // router.buildLink({ - // from: '/dashboard', - // to: '/dashboard/invoices', - // params: { - // invoiceId: 2, - // }, - // }) - // router.buildLink({ - // from: '/dashboard', - // to: '/dashboard/invoices/$invoiceId', - // params: { - // // @ts-expect-error - // invoiceId: '2', - // }, - // }) - // router.buildLink({ - // to: '/dashboard/invoices/$invoiceId', - // params: { - // invoiceId: 2, - // }, - // }) - // router.buildLink({ - // to: '/', - // search: { - // version: 2, - // }, - // }) - // router.buildLink({ - // to: '/dashboard/users/$userId', - // // @ts-expect-error - // params: (current) => ({ - // userId: current?.invoiceId, - // }), - // search: (old) => ({ - // usersView: { - // sortBy: 'email' as const, - // filterBy: String(old.version), - // }, - // }), - // }) - // router.buildLink({ - // from: '/dashboard/invoices/$invoiceId', - // to: '/dashboard/users/$userId', - // params: (current) => ({ - // userId: `${current?.invoiceId}`, - // }), - // search: (prev) => { - // return { - // usersView: { - // sortBy: 'name' as const, - // filterBy: 'tanner', - // }, - // } - // }, - // }) - // router.buildLink({ - // from: '/dashboard/users/$userId', - // to: '/', - // search: (prev) => { - // return { - // version: 2, - // } - // }, - // }) - // router.buildLink({ - // from: '/', - // to: '/dashboard/users/$userId', - // params: { - // userId: '2', - // }, - // search: (prev) => ({ - // usersView: { - // sortBy: 'id', - // filterBy: `${prev.version}`, - // }, - // }), - // }) - // router.navigate({ - // search: (prev: any) => ({ - // version: prev.version, - // }), - // }) - // router.buildLink({ - // from: '/dashboard/invoices', - // to: '/dashboard', - // }) - // router.buildLink({ - // from: '/', - // // @ts-expect-error - // to: '/does-not-exist', - // }) - // router.buildLink({ - // to: '/dashboard/invoices/$invoiceId', - // params: { - // invoiceId: 2, - // }, - // }) - // router.buildLink({ - // from: '/dashboard/invoices/$invoiceId', - // to: '.', - // params: (d) => ({ - // invoiceId: d.invoiceId, - // }), - // }) - // router.buildLink({ - // from: '/dashboard/invoices/$invoiceId', - // to: testRoute.fullPath, - // search: { - // version: 2, - // isGood: true, - // }, - // }) - // router.buildLink({ - // to: '/layout-a', - // search: (current) => ({ - // isLayout: !!current.version, - // }), - // }) - // router.buildLink({ - // to: '/', - // state: true, - // }) - // router.buildLink({ - // to: '/', - // state: {}, - // }) - // router.buildLink({ - // to: '/', - // state: (prev) => prev, - // }) - // router.buildLink({ - // to: '/', - // state: (prev) => ({ - // test: true, - // }), - // }) - }) -}) diff --git a/packages/react-router/tests/route.test.ts b/packages/react-router/tests/route.test.ts deleted file mode 100644 index a001f7bfa7..0000000000 --- a/packages/react-router/tests/route.test.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* eslint-disable */ -import { describe, it, expect } from 'vitest' -import { getRouteApi, createRoute } from '../src' - -describe('getRouteApi', () => { - it('should have the useMatch hook', () => { - const api = getRouteApi('foo') - expect(api.useMatch).toBeDefined() - }) - - it('should have the useRouteContext hook', () => { - const api = getRouteApi('foo') - expect(api.useRouteContext).toBeDefined() - }) - - it('should have the useSearch hook', () => { - const api = getRouteApi('foo') - expect(api.useSearch).toBeDefined() - }) - - it('should have the useParams hook', () => { - const api = getRouteApi('foo') - expect(api.useParams).toBeDefined() - }) - - it('should have the useLoaderData hook', () => { - const api = getRouteApi('foo') - expect(api.useLoaderData).toBeDefined() - }) - - it('should have the useLoaderDeps hook', () => { - const api = getRouteApi('foo') - expect(api.useLoaderDeps).toBeDefined() - }) - - it('should have the useNavigate hook', () => { - const api = getRouteApi('foo') - expect(api.useNavigate).toBeDefined() - }) -}) - -describe('createRoute has the same hooks as getRouteApi', () => { - const routeApi = getRouteApi('foo') - const hookNames = Object.keys(routeApi).filter((key) => key.startsWith('use')) - const route = createRoute({} as any) - - it.each(hookNames.map((name) => [name]))( - 'should have the "%s" hook defined', - (hookName) => { - expect(route[hookName as keyof typeof route]).toBeDefined() - }, - ) -}) diff --git a/packages/react-router/tests/route.test.tsx b/packages/react-router/tests/route.test.tsx new file mode 100644 index 0000000000..fd881e328f --- /dev/null +++ b/packages/react-router/tests/route.test.tsx @@ -0,0 +1,140 @@ +/* eslint-disable */ +import { describe, it, expect } from 'vitest' +import { + getRouteApi, + createRoute, + createRootRoute, + createRouter, + useNavigate, +} from '../src' +import React from 'react' +import exp from 'constants' + +describe('getRouteApi', () => { + it('should have the useMatch hook', () => { + const api = getRouteApi('foo') + expect(api.useMatch).toBeDefined() + }) + + it('should have the useRouteContext hook', () => { + const api = getRouteApi('foo') + expect(api.useRouteContext).toBeDefined() + }) + + it('should have the useSearch hook', () => { + const api = getRouteApi('foo') + expect(api.useSearch).toBeDefined() + }) + + it('should have the useParams hook', () => { + const api = getRouteApi('foo') + expect(api.useParams).toBeDefined() + }) + + it('should have the useLoaderData hook', () => { + const api = getRouteApi('foo') + expect(api.useLoaderData).toBeDefined() + }) + + it('should have the useLoaderDeps hook', () => { + const api = getRouteApi('foo') + expect(api.useLoaderDeps).toBeDefined() + }) + + it('should have the useNavigate hook', () => { + const api = getRouteApi('foo') + expect(api.useNavigate).toBeDefined() + }) +}) + +describe('createRoute has the same hooks as getRouteApi', () => { + const routeApi = getRouteApi('foo') + const hookNames = Object.keys(routeApi).filter((key) => key.startsWith('use')) + const route = createRoute({} as any) + + it.each(hookNames.map((name) => [name]))( + 'should have the "%s" hook defined', + (hookName) => { + expect(route[hookName as keyof typeof route]).toBeDefined() + }, + ) +}) + +describe('throws invariant exception when trying to access properties before `createRouter` completed', () => { + function setup() { + const rootRoute = createRootRoute() + + const IndexComponent = () => { + const navigate = useNavigate() + return ( + +

Index

+ + +
+ ) + } + + const indexRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/', + component: IndexComponent, + }) + + const postsRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/posts', + component: () => { + return ( + +

Posts

+
+ ) + }, + }) + const initRouter = () => + createRouter({ + routeTree: rootRoute.addChildren([indexRoute, postsRoute]), + }) + return { initRouter, rootRoute, indexRoute, postsRoute } + } + + it('to', () => { + const { initRouter, indexRoute, postsRoute } = setup() + + const expectedError = `Invariant failed: trying to access property 'to' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.` + expect(() => indexRoute.to).toThrowError(expectedError) + expect(() => postsRoute.to).toThrowError(expectedError) + + initRouter() + + expect(indexRoute.to).toBe('/') + expect(postsRoute.to).toBe('/posts') + }) + + it('fullPath', () => { + const { initRouter, indexRoute, postsRoute } = setup() + + const expectedError = `trying to access property 'fullPath' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.` + expect(() => indexRoute.fullPath).toThrowError(expectedError) + expect(() => postsRoute.fullPath).toThrowError(expectedError) + + initRouter() + + expect(indexRoute.fullPath).toBe('/') + expect(postsRoute.fullPath).toBe('/posts') + }) + + it('id', () => { + const { initRouter, indexRoute, postsRoute } = setup() + + const expectedError = `Invariant failed: trying to access property 'id' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.` + expect(() => indexRoute.id).toThrowError(expectedError) + expect(() => postsRoute.id).toThrowError(expectedError) + + initRouter() + + expect(indexRoute.to).toBe('/') + expect(postsRoute.to).toBe('/posts') + }) +}) From 7f51877da0908318312a3bdcf10fd35d2032ff05 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sat, 31 Aug 2024 17:39:18 +0000 Subject: [PATCH 024/154] release: v1.51.9 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 41 files changed, 90 insertions(+), 90 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 38ba282eb9..12dffe9f0b 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 4cec7b6cc0..83aafaefdf 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index d8af393a8f..0892c49d44 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index cd9e4855d9..c8d0abe66b 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index c4b758782b..f9cbf5f7c2 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 1e968aa2d9..789b4306c4 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 61b99c3acd..0ecae80386 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.8", + "@tanstack/start": "^1.51.9", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 8cf33ef2a0..54b5c49c2e 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.8", + "@tanstack/start": "^1.51.9", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 4dac82d5f2..f81fa46a34 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index f394273408..822ad86332 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index abec1dfeca..0bfa5d8ca4 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 910c4995ea..63044af86a 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index f7bf782715..efdfadb295 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 58dce3cebd..291a7d6353 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 4ac10670cd..bdfa98cb69 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index b50df96421..b94e1e350a 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 86c5c2b342..338f716c25 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 8f558aad63..a58df31ab0 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index f193bf8abf..c4e374c205 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 388c022593..5662fa9f1a 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 9fbcc3d87d..74e0f693fc 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 5df0f468f3..2cbe2d5234 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", + "@tanstack/react-router": "^1.51.9", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/router-devtools": "^1.51.9", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 57974a1eb2..7bff705bc2 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/router-zod-adapter": "^1.51.8", - "@tanstack/router-valibot-adapter": "^1.51.8", - "@tanstack/router-arktype-adapter": "^1.51.8", + "@tanstack/router-zod-adapter": "^1.51.9", + "@tanstack/router-valibot-adapter": "^1.51.9", + "@tanstack/router-arktype-adapter": "^1.51.9", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 57ca1af43a..8ee073a80c 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.8", + "@tanstack/start": "^1.51.9", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 4072819ce6..1bc309e453 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/start": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/start": "^1.51.9", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index a0f5a1cd22..106622cb5c 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.8", - "@tanstack/react-router-with-query": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/react-router-with-query": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.8", + "@tanstack/start": "^1.51.9", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 6d2e7dc3df..8918415eee 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.8", + "@tanstack/start": "^1.51.9", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 902d85b545..9ad3064a94 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.8", + "@tanstack/start": "^1.51.9", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 24d818bd94..0116987a36 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.8", + "@tanstack/start": "^1.51.9", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index eb65116f15..ce4345c7c2 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.8", - "@tanstack/react-router-with-query": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/react-router-with-query": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.8", + "@tanstack/start": "^1.51.9", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 577fd8fd0f..91ba52c870 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.8", - "@tanstack/react-router-with-query": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/react-router-with-query": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.8", + "@tanstack/start": "^1.51.9", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 0c51f0e3bd..a2be92e4a1 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index bef1c9d3e4..7e0516609f 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index a15e156e89..37f9365747 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.51.8", - "@tanstack/router-devtools": "^1.51.8", + "@tanstack/react-router": "^1.51.9", + "@tanstack/router-devtools": "^1.51.9", "@tanstack/router-plugin": "^1.51.6", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index a9d67ab20f..d2a01da3a9 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.51.8", + "version": "1.51.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 8355166f9d..11788f2efe 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.51.8", + "version": "1.51.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 44bc8b9de6..9986fb1097 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.51.8", + "version": "1.51.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 8f6a3e2008..87da2a5370 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.51.8", + "version": "1.51.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index f5d7281205..c777d661a8 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.51.8", + "version": "1.51.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 272b921a84..74b61f940e 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.51.8", + "version": "1.51.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 4a82fb7138..c4930cfdd2 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.51.8", + "version": "1.51.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 0d77cbf2e334ed9b6e3a70718a59b3f31de1fc54 Mon Sep 17 00:00:00 2001 From: Brian <61732049+brithe00@users.noreply.github.com> Date: Sat, 31 Aug 2024 19:42:51 +0200 Subject: [PATCH 025/154] docs(react): remove duplicated line in overview.md (#2236) --- docs/framework/react/overview.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/framework/react/overview.md b/docs/framework/react/overview.md index dcf38f8ebd..b20be5d073 100644 --- a/docs/framework/react/overview.md +++ b/docs/framework/react/overview.md @@ -53,7 +53,6 @@ TanStack Router delivers on the same fundamental expectations as other routers t - URL Path Params - Error Boundaries and Handling - SSR -- Prefetching - Route Masking And it also delivers some new features that raise the bar: From 6dbe4b0eedf48f5f44c42690f92110b7dc6afeca Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sat, 31 Aug 2024 22:36:58 +0200 Subject: [PATCH 026/154] feat(router-generator): allow to customize `index` and `route` token (#2203) * feat(router-generator): allow to customize `index` and `route` token * semantically validate generator config in a single place * ci: apply automated fixes * remove usage of CHECK_USER_FLAGS_TO_BE_CHANGED * check indexToken / routeToken before determining isLayout status * use tokens with leading and trailing slashes * ci: apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- .../react/guide/file-based-routing.md | 10 +- packages/router-generator/src/config.ts | 23 +++ packages/router-generator/src/generator.ts | 28 ++- .../router-generator/tests/generator.test.ts | 4 + .../custom-tokens/routeTree.snapshot.ts | 193 ++++++++++++++++++ .../generator/custom-tokens/routes/_1nd3x.tsx | 1 + .../generator/custom-tokens/routes/__root.tsx | 1 + .../custom-tokens/routes/blog/$slug.tsx | 1 + .../custom-tokens/routes/blog/_1nd3x.tsx | 1 + .../custom-tokens/routes/blog/_r0ut3_.tsx | 1 + .../routes/posts/$postId/_1nd3x.tsx | 1 + .../routes/posts/$postId/deep.tsx | 1 + .../custom-tokens/routes/posts/_1nd3x.tsx | 1 + .../custom-tokens/routes/posts/_r0ut3_.tsx | 1 + .../src/core/router-code-splitter-plugin.ts | 21 +- packages/start/src/config/index.ts | 8 +- 16 files changed, 265 insertions(+), 31 deletions(-) create mode 100644 packages/router-generator/tests/generator/custom-tokens/routeTree.snapshot.ts create mode 100644 packages/router-generator/tests/generator/custom-tokens/routes/_1nd3x.tsx create mode 100644 packages/router-generator/tests/generator/custom-tokens/routes/__root.tsx create mode 100644 packages/router-generator/tests/generator/custom-tokens/routes/blog/$slug.tsx create mode 100644 packages/router-generator/tests/generator/custom-tokens/routes/blog/_1nd3x.tsx create mode 100644 packages/router-generator/tests/generator/custom-tokens/routes/blog/_r0ut3_.tsx create mode 100644 packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/_1nd3x.tsx create mode 100644 packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/deep.tsx create mode 100644 packages/router-generator/tests/generator/custom-tokens/routes/posts/_1nd3x.tsx create mode 100644 packages/router-generator/tests/generator/custom-tokens/routes/posts/_r0ut3_.tsx diff --git a/docs/framework/react/guide/file-based-routing.md b/docs/framework/react/guide/file-based-routing.md index a54037493b..ac93d9ec5a 100644 --- a/docs/framework/react/guide/file-based-routing.md +++ b/docs/framework/react/guide/file-based-routing.md @@ -132,9 +132,11 @@ File-based routing requires that you follow a few simple file naming conventions - **`(folder)` folder name pattern**: - A folder that matches this pattern is treated as a **route group** which prevents this folder to be included in the route's URL path. - **`index` Token** - - Routes segments ending with the `index` token (but before any file types) will be used to match the parent route when the URL pathname matches the parent route exactly. + - Routes segments ending with the `index` token (but before any file types) will be used to match the parent route when the URL pathname matches the parent route exactly. + This can be configured via the `indexToken` configuration option, see [options](#options). - **`.route.tsx` File Type** - - When using directories to organize your routes, the `route` suffix can be used to create a route file at the directory's path. For example, `blog.post.route.tsx` or `blog/post/route.tsx` can be used at the route file for the `/blog/post` route. + - When using directories to organize your routes, the `route` suffix can be used to create a route file at the directory's path. For example, `blog.post.route.tsx` or `blog/post/route.tsx` can be used at the route file for the `/blog/post` route. + This can be configured via the `routeToken` configuration option, see [options](#options). - **`.lazy.tsx` File Type** - The `lazy` suffix can be used to code-split components for a route. For example, `blog.post.lazy.tsx` will be used as the component for the `blog.post` route. @@ -331,6 +333,10 @@ The following options are available for configuration via the `tsr.config.json` - (Optional, **Defaults to `-`**) Route files and directories that start with this string will be ignored. By default this is set to `-` to allow for the use of directories to house related files that do not contain any route files. - **`routeFileIgnorePattern`** - (Optional) Ignore specific files and directories in the route directory. It can be used in regular expression format. For example, `.((css|const).ts)|test-page` will ignore files / directories with names containing `.css.ts`, `.const.ts` or `test-page`. +- **`indexToken`** + - (Optional, **Defaults to `'index'`**) allows to customize the `index` Token [file naming convention](#file-naming-conventions). +- **`routeToken`** + - (Optional, **Defaults to `'route'`**) allows to customize the `route` Token [file naming convention](#file-naming-conventions). - **`routesDirectory`** - (Required) The directory containing the routes relative to the cwd. - **`generatedRouteTree`** diff --git a/packages/router-generator/src/config.ts b/packages/router-generator/src/config.ts index 9c96132b42..0f36cf3cbc 100644 --- a/packages/router-generator/src/config.ts +++ b/packages/router-generator/src/config.ts @@ -29,6 +29,8 @@ export const configSchema = z.object({ .optional() .default(['/* prettier-ignore-end */']), autoCodeSplitting: z.boolean().optional(), + indexToken: z.string().optional().default('index'), + routeToken: z.string().optional().default('route'), experimental: z .object({ // TODO: Remove this option in the next major release (v2). @@ -94,5 +96,26 @@ export function getConfig( } } + validateConfig(config) + return config +} + +function validateConfig(config: Config) { + if (typeof config.experimental?.enableCodeSplitting !== 'undefined') { + const message = ` +------ +⚠️ ⚠️ ⚠️ +ERROR: The "experimental.enableCodeSplitting" flag has been made stable and is now "autoCodeSplitting". Please update your configuration file to use "autoCodeSplitting" instead of "experimental.enableCodeSplitting". +------ +` + console.error(message) + throw new Error(message) + } + + if (config.indexToken === config.routeToken) { + throw new Error( + `The "indexToken" and "routeToken" options must be different.`, + ) + } return config } diff --git a/packages/router-generator/src/generator.ts b/packages/router-generator/src/generator.ts index 90622fd0a2..02ed118930 100644 --- a/packages/router-generator/src/generator.ts +++ b/packages/router-generator/src/generator.ts @@ -100,7 +100,7 @@ async function getRouteNodes(config: Config) { routePath = routePath.replace(/\/lazy$/, '') } - const isRoute = routePath.endsWith('/route') + const isRoute = routePath.endsWith(`/${config.routeToken}`) const isComponent = routePath.endsWith('/component') const isErrorComponent = routePath.endsWith('/errorComponent') const isPendingComponent = routePath.endsWith('/pendingComponent') @@ -110,8 +110,12 @@ async function getRouteNodes(config: Config) { ) const segments = routePath.split('/') + const lastRouteSegment = segments[segments.length - 1] const isLayout = - segments[segments.length - 1]?.startsWith('_') || false + (lastRouteSegment !== config.indexToken && + lastRouteSegment !== config.routeToken && + lastRouteSegment?.startsWith('_')) || + false ;( [ @@ -129,15 +133,18 @@ async function getRouteNodes(config: Config) { }) routePath = routePath.replace( - /\/(component|errorComponent|pendingComponent|loader|route|lazy)$/, + new RegExp( + `/(component|errorComponent|pendingComponent|loader|${config.routeToken}|lazy)$`, + ), '', ) - if (routePath === 'index') { + if (routePath === config.indexToken) { routePath = '/' } - routePath = routePath.replace(/\/index$/, '/') || '/' + routePath = + routePath.replace(new RegExp(`/${config.indexToken}$`), '/') || '/' routeNodes.push({ filePath, @@ -218,14 +225,16 @@ export async function generator(config: Config) { const preRouteNodes = multiSortBy(beforeRouteNodes, [ (d) => (d.routePath === '/' ? -1 : 1), (d) => d.routePath?.split('/').length, - (d) => (d.filePath.match(/[./]index[.]/) ? 1 : -1), + (d) => + d.filePath.match(new RegExp(`[./]${config.indexToken}[.]`)) ? 1 : -1, (d) => d.filePath.match( /[./](component|errorComponent|pendingComponent|loader|lazy)[.]/, ) ? 1 : -1, - (d) => (d.filePath.match(/[./]route[.]/) ? -1 : 1), + (d) => + d.filePath.match(new RegExp(`[./]${config.routeToken}[.]`)) ? -1 : 1, (d) => (d.routePath?.endsWith('/') ? -1 : 1), (d) => d.routePath, ]).filter((d) => ![`/${rootPathId}`].includes(d.routePath || '')) @@ -542,7 +551,7 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ const sortedRouteNodes = multiSortBy(routeNodes, [ (d) => (d.routePath?.includes(`/${rootPathId}`) ? -1 : 1), (d) => d.routePath?.split('/').length, - (d) => (d.routePath?.endsWith("index'") ? -1 : 1), + (d) => (d.routePath?.endsWith(config.indexToken) ? -1 : 1), (d) => d, ]) @@ -1044,13 +1053,14 @@ export type StartAPIRoutePathSegment = { */ export function startAPIRouteSegmentsFromTSRFilePath( src: string, + config: Config, ): Array { const routePath = determineInitialRoutePath(src) const parts = routePath .replaceAll('.', '/') .split('/') - .filter((p) => !!p && p !== 'index') + .filter((p) => !!p && p !== config.indexToken) const segments: Array = parts.map((part) => { if (part.startsWith('$')) { if (part === '$') { diff --git a/packages/router-generator/tests/generator.test.ts b/packages/router-generator/tests/generator.test.ts index 218c1bda32..a0cc942745 100644 --- a/packages/router-generator/tests/generator.test.ts +++ b/packages/router-generator/tests/generator.test.ts @@ -47,6 +47,10 @@ function rewriteConfigByFolderName(folderName: string, config: Config) { case 'no-manifest': config.disableManifestGeneration = true break + case 'custom-tokens': + config.indexToken = '_1nd3x' + config.routeToken = '_r0ut3_' + break default: break } diff --git a/packages/router-generator/tests/generator/custom-tokens/routeTree.snapshot.ts b/packages/router-generator/tests/generator/custom-tokens/routeTree.snapshot.ts new file mode 100644 index 0000000000..3fa9ec1f8c --- /dev/null +++ b/packages/router-generator/tests/generator/custom-tokens/routeTree.snapshot.ts @@ -0,0 +1,193 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as PostsR0ut3Import } from './routes/posts/_r0ut3_' +import { Route as BlogR0ut3Import } from './routes/blog/_r0ut3_' +import { Route as R1nd3xImport } from './routes/_1nd3x' +import { Route as Posts1nd3xImport } from './routes/posts/_1nd3x' +import { Route as Blog1nd3xImport } from './routes/blog/_1nd3x' +import { Route as BlogSlugImport } from './routes/blog/$slug' +import { Route as PostsPostId1nd3xImport } from './routes/posts/$postId/_1nd3x' +import { Route as PostsPostIdDeepImport } from './routes/posts/$postId/deep' + +// Create/Update Routes + +const PostsR0ut3Route = PostsR0ut3Import.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const BlogR0ut3Route = BlogR0ut3Import.update({ + path: '/blog', + getParentRoute: () => rootRoute, +} as any) + +const R1nd3xRoute = R1nd3xImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const Posts1nd3xRoute = Posts1nd3xImport.update({ + path: '/', + getParentRoute: () => PostsR0ut3Route, +} as any) + +const Blog1nd3xRoute = Blog1nd3xImport.update({ + path: '/', + getParentRoute: () => BlogR0ut3Route, +} as any) + +const BlogSlugRoute = BlogSlugImport.update({ + path: '/$slug', + getParentRoute: () => BlogR0ut3Route, +} as any) + +const PostsPostId1nd3xRoute = PostsPostId1nd3xImport.update({ + path: '/$postId/', + getParentRoute: () => PostsR0ut3Route, +} as any) + +const PostsPostIdDeepRoute = PostsPostIdDeepImport.update({ + path: '/$postId/deep', + getParentRoute: () => PostsR0ut3Route, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof R1nd3xImport + parentRoute: typeof rootRoute + } + '/blog': { + id: '/blog' + path: '/blog' + fullPath: '/blog' + preLoaderRoute: typeof BlogR0ut3Import + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsR0ut3Import + parentRoute: typeof rootRoute + } + '/blog/$slug': { + id: '/blog/$slug' + path: '/$slug' + fullPath: '/blog/$slug' + preLoaderRoute: typeof BlogSlugImport + parentRoute: typeof BlogR0ut3Import + } + '/blog/': { + id: '/blog/' + path: '/' + fullPath: '/blog/' + preLoaderRoute: typeof Blog1nd3xImport + parentRoute: typeof BlogR0ut3Import + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof Posts1nd3xImport + parentRoute: typeof PostsR0ut3Import + } + '/posts/$postId/deep': { + id: '/posts/$postId/deep' + path: '/$postId/deep' + fullPath: '/posts/$postId/deep' + preLoaderRoute: typeof PostsPostIdDeepImport + parentRoute: typeof PostsR0ut3Import + } + '/posts/$postId/': { + id: '/posts/$postId/' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof PostsPostId1nd3xImport + parentRoute: typeof PostsR0ut3Import + } + } +} + +// Create and export the route tree + +export const routeTree = rootRoute.addChildren({ + R1nd3xRoute, + BlogR0ut3Route: BlogR0ut3Route.addChildren({ BlogSlugRoute, Blog1nd3xRoute }), + PostsR0ut3Route: PostsR0ut3Route.addChildren({ + Posts1nd3xRoute, + PostsPostIdDeepRoute, + PostsPostId1nd3xRoute, + }), +}) + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/blog", + "/posts" + ] + }, + "/": { + "filePath": "_1nd3x.tsx" + }, + "/blog": { + "filePath": "blog/_r0ut3_.tsx", + "children": [ + "/blog/$slug", + "/blog/" + ] + }, + "/posts": { + "filePath": "posts/_r0ut3_.tsx", + "children": [ + "/posts/", + "/posts/$postId/deep", + "/posts/$postId/" + ] + }, + "/blog/$slug": { + "filePath": "blog/$slug.tsx", + "parent": "/blog" + }, + "/blog/": { + "filePath": "blog/_1nd3x.tsx", + "parent": "/blog" + }, + "/posts/": { + "filePath": "posts/_1nd3x.tsx", + "parent": "/posts" + }, + "/posts/$postId/deep": { + "filePath": "posts/$postId/deep.tsx", + "parent": "/posts" + }, + "/posts/$postId/": { + "filePath": "posts/$postId/_1nd3x.tsx", + "parent": "/posts" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/_1nd3x.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/_1nd3x.tsx new file mode 100644 index 0000000000..ab504e42e9 --- /dev/null +++ b/packages/router-generator/tests/generator/custom-tokens/routes/_1nd3x.tsx @@ -0,0 +1 @@ +/** */ diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/__root.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/__root.tsx new file mode 100644 index 0000000000..ab504e42e9 --- /dev/null +++ b/packages/router-generator/tests/generator/custom-tokens/routes/__root.tsx @@ -0,0 +1 @@ +/** */ diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/blog/$slug.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/blog/$slug.tsx new file mode 100644 index 0000000000..ab504e42e9 --- /dev/null +++ b/packages/router-generator/tests/generator/custom-tokens/routes/blog/$slug.tsx @@ -0,0 +1 @@ +/** */ diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/blog/_1nd3x.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/blog/_1nd3x.tsx new file mode 100644 index 0000000000..ab504e42e9 --- /dev/null +++ b/packages/router-generator/tests/generator/custom-tokens/routes/blog/_1nd3x.tsx @@ -0,0 +1 @@ +/** */ diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/blog/_r0ut3_.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/blog/_r0ut3_.tsx new file mode 100644 index 0000000000..ab504e42e9 --- /dev/null +++ b/packages/router-generator/tests/generator/custom-tokens/routes/blog/_r0ut3_.tsx @@ -0,0 +1 @@ +/** */ diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/_1nd3x.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/_1nd3x.tsx new file mode 100644 index 0000000000..79a9626b55 --- /dev/null +++ b/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/_1nd3x.tsx @@ -0,0 +1 @@ +/* */ diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/deep.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/deep.tsx new file mode 100644 index 0000000000..ab504e42e9 --- /dev/null +++ b/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/deep.tsx @@ -0,0 +1 @@ +/** */ diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/posts/_1nd3x.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/posts/_1nd3x.tsx new file mode 100644 index 0000000000..ab504e42e9 --- /dev/null +++ b/packages/router-generator/tests/generator/custom-tokens/routes/posts/_1nd3x.tsx @@ -0,0 +1 @@ +/** */ diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/posts/_r0ut3_.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/posts/_r0ut3_.tsx new file mode 100644 index 0000000000..ab504e42e9 --- /dev/null +++ b/packages/router-generator/tests/generator/custom-tokens/routes/posts/_r0ut3_.tsx @@ -0,0 +1 @@ +/** */ diff --git a/packages/router-plugin/src/core/router-code-splitter-plugin.ts b/packages/router-plugin/src/core/router-code-splitter-plugin.ts index 54264722c0..6498eab428 100644 --- a/packages/router-plugin/src/core/router-code-splitter-plugin.ts +++ b/packages/router-plugin/src/core/router-code-splitter-plugin.ts @@ -172,7 +172,7 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory< configResolved(config) { ROOT = config.root - userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT)) + userConfig = getConfig(options, ROOT) }, }, @@ -193,7 +193,7 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory< ) }) - userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT)) + userConfig = getConfig(options, ROOT) }, webpack(compiler) { @@ -213,7 +213,7 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory< ) }) - userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT)) + userConfig = getConfig(options, ROOT) if ( userConfig.autoCodeSplitting && @@ -229,18 +229,3 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory< }, } } - -function CHECK_USER_FLAGS_TO_BE_CHANGED(config: Config): Config { - if (typeof config.experimental?.enableCodeSplitting !== 'undefined') { - const message = ` ------- -⚠️ ⚠️ ⚠️ -ERROR: The "experimental.enableCodeSplitting" flag has been made stable and is now "autoCodeSplitting". Please update your configuration file to use "autoCodeSplitting" instead of "experimental.enableCodeSplitting". ------- -` - console.error(message) - throw new Error(message) - } - - return config -} diff --git a/packages/start/src/config/index.ts b/packages/start/src/config/index.ts index 10efa04d2e..8c42a3f708 100644 --- a/packages/start/src/config/index.ts +++ b/packages/start/src/config/index.ts @@ -4,9 +4,10 @@ import { readFile } from 'node:fs/promises' import { fileURLToPath } from 'node:url' import reactRefresh from '@vitejs/plugin-react' import { resolve } from 'import-meta-resolve' -import { TanStackRouterVite, configSchema } from '@tanstack/router-plugin/vite' +import { TanStackRouterVite } from '@tanstack/router-plugin/vite' import { TanStackStartVite } from '@tanstack/start-vite-plugin' import { + configSchema, getConfig, startAPIRouteSegmentsFromTSRFilePath, } from '@tanstack/router-generator' @@ -626,7 +627,10 @@ function tsrFileRouter(opts: { toPath(src: string): string { const inputPath = vinxiFsRouterCleanPath(src, this.config) - const segments = startAPIRouteSegmentsFromTSRFilePath(inputPath) + const segments = startAPIRouteSegmentsFromTSRFilePath( + inputPath, + opts.tsrConfig, + ) const pathname = segments .map((part) => { From 5340eda58311401241b1118042ecc00cdd7b78fd Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sat, 31 Aug 2024 20:40:37 +0000 Subject: [PATCH 027/154] release: v1.52.0 --- examples/react/authenticated-routes/package.json | 2 +- examples/react/basic-file-based-codesplitting/package.json | 2 +- examples/react/basic-file-based/package.json | 2 +- examples/react/basic-react-query-file-based/package.json | 2 +- examples/react/basic-ssr-file-based/package.json | 4 ++-- examples/react/basic-ssr-streaming-file-based/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 2 +- .../react/kitchen-sink-react-query-file-based/package.json | 2 +- examples/react/large-file-based/package.json | 2 +- examples/react/quickstart-file-based/package.json | 2 +- examples/react/quickstart-rspack-file-based/package.json | 2 +- examples/react/quickstart-webpack-file-based/package.json | 2 +- examples/react/search-validator-adapters/package.json | 2 +- examples/react/start-basic-auth/package.json | 4 ++-- examples/react/start-basic-counter/package.json | 2 +- examples/react/start-basic-react-query/package.json | 4 ++-- examples/react/start-basic-rsc/package.json | 4 ++-- examples/react/start-basic/package.json | 4 ++-- examples/react/start-clerk-basic/package.json | 4 ++-- examples/react/start-convex-trellaux/package.json | 4 ++-- examples/react/start-trellaux/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 2 +- examples/react/with-trpc/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/start/package.json | 2 +- 28 files changed, 37 insertions(+), 37 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 12dffe9f0b..0a543817c6 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 0892c49d44..311f91f82b 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index c8d0abe66b..996373fd19 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -12,7 +12,7 @@ "dependencies": { "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index f9cbf5f7c2..0bf47a0b3a 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 0ecae80386..f7cbd9c241 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.9", + "@tanstack/router-plugin": "^1.52.0", + "@tanstack/start": "^1.52.0", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 54b5c49c2e..b4b27d2368 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.9", + "@tanstack/router-plugin": "^1.52.0", + "@tanstack/start": "^1.52.0", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 0bfa5d8ca4..d3ba511670 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 63044af86a..4cf875ffec 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -13,7 +13,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index bdfa98cb69..e48dbb6649 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query": "^5.51.21", "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index a58df31ab0..be737782fe 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index c4e374c205..dbc1acb6af 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.5.3" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 5662fa9f1a..ffbf193dc3 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 7bff705bc2..58884be1b0 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "@tanstack/router-zod-adapter": "^1.51.9", "@tanstack/router-valibot-adapter": "^1.51.9", "@tanstack/router-arktype-adapter": "^1.51.9", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 8ee073a80c..3960113199 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -16,8 +16,8 @@ "@prisma/client": "5.17.0", "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.9", + "@tanstack/router-plugin": "^1.52.0", + "@tanstack/start": "^1.52.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 1bc309e453..1cc270cb11 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@tanstack/react-router": "^1.51.9", - "@tanstack/start": "^1.51.9", + "@tanstack/start": "^1.52.0", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 106622cb5c..bf24a23e7b 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -17,8 +17,8 @@ "@tanstack/react-router": "^1.51.9", "@tanstack/react-router-with-query": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.9", + "@tanstack/router-plugin": "^1.52.0", + "@tanstack/start": "^1.52.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 8918415eee..6cfe77ea9b 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -14,8 +14,8 @@ "@babel/plugin-syntax-typescript": "^7.24.7", "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.9", + "@tanstack/router-plugin": "^1.52.0", + "@tanstack/start": "^1.52.0", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 9ad3064a94..fdcbd0dc9f 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -14,8 +14,8 @@ "dependencies": { "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.9", + "@tanstack/router-plugin": "^1.52.0", + "@tanstack/start": "^1.52.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 0116987a36..d47741c146 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -15,8 +15,8 @@ "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.9", + "@tanstack/router-plugin": "^1.52.0", + "@tanstack/start": "^1.52.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index ce4345c7c2..932689838f 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -18,8 +18,8 @@ "@tanstack/react-router": "^1.51.9", "@tanstack/react-router-with-query": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.9", + "@tanstack/router-plugin": "^1.52.0", + "@tanstack/start": "^1.52.0", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 91ba52c870..af73d11d8b 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -16,8 +16,8 @@ "@tanstack/react-router": "^1.51.9", "@tanstack/react-router-with-query": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", - "@tanstack/start": "^1.51.9", + "@tanstack/router-plugin": "^1.52.0", + "@tanstack/start": "^1.52.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 7e0516609f..98b033c75c 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -12,7 +12,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 37f9365747..b55e85db00 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -10,7 +10,7 @@ "dependencies": { "@tanstack/react-router": "^1.51.9", "@tanstack/router-devtools": "^1.51.9", - "@tanstack/router-plugin": "^1.51.6", + "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 56ce88d22e..b7a47fb7bf 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.51.6", + "version": "1.52.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index e6b16ee408..bb07408d5f 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.51.6", + "version": "1.52.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 2a2fe97f81..776a2c63fd 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.51.6", + "version": "1.52.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index f5f3c75a1a..5f77eb72d2 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.51.6", + "version": "1.52.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index c4930cfdd2..4c0e002e26 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.51.9", + "version": "1.52.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 55a272721dfe25fe9bf80909e9f39da51cf9cbe4 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sat, 31 Aug 2024 23:07:17 +0200 Subject: [PATCH 028/154] fix(react-router): do not use routeId as key when rendering route component (#2237) this avoids re-mounting --- packages/react-router/src/Match.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-router/src/Match.tsx b/packages/react-router/src/Match.tsx index 24cfe06810..57c8754c56 100644 --- a/packages/react-router/src/Match.tsx +++ b/packages/react-router/src/Match.tsx @@ -129,8 +129,8 @@ export const MatchInner = React.memo(function MatchInnerImpl({ const out = React.useMemo(() => { const Comp = route.options.component ?? router.options.defaultComponent - return Comp ? : - }, [routeId, route.options.component, router.options.defaultComponent]) + return Comp ? : + }, [route.options.component, router.options.defaultComponent]) // function useChangedDiff(value: any) { // const ref = React.useRef(value) From a57398e1c4278c637100b6080e858d94b9538cf6 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sat, 31 Aug 2024 21:10:34 +0000 Subject: [PATCH 029/154] release: v1.52.1 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 41 files changed, 90 insertions(+), 90 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 0a543817c6..3e40df1dab 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 83aafaefdf..50e037c9dd 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 311f91f82b..e7200a6ae5 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 996373fd19..63762b575a 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 0bf47a0b3a..861382efa5 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 789b4306c4..b9b3fdf5fe 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index f7cbd9c241..4ec411544e 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.0", + "@tanstack/start": "^1.52.1", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index b4b27d2368..77d7598a78 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.0", + "@tanstack/start": "^1.52.1", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index f81fa46a34..c094c21e4c 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 822ad86332..1341c91184 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index d3ba511670..5745bc251a 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 4cf875ffec..58610dca8f 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index efdfadb295..7c1b1f7aa7 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 291a7d6353..113bf801f4 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index e48dbb6649..2a69c102df 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index b94e1e350a..bf5ef5bacf 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 338f716c25..4be651c286 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index be737782fe..4fbf3ee073 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index dbc1acb6af..6947b413a5 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index ffbf193dc3..38b6a9f2d5 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 74e0f693fc..4a63c44ac5 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 2cbe2d5234..5990f8a54c 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", + "@tanstack/react-router": "^1.52.1", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/router-devtools": "^1.52.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 58884be1b0..dbef45e16e 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/router-zod-adapter": "^1.51.9", - "@tanstack/router-valibot-adapter": "^1.51.9", - "@tanstack/router-arktype-adapter": "^1.51.9", + "@tanstack/router-zod-adapter": "^1.52.1", + "@tanstack/router-valibot-adapter": "^1.52.1", + "@tanstack/router-arktype-adapter": "^1.52.1", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 3960113199..557a688a6c 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.0", + "@tanstack/start": "^1.52.1", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 1cc270cb11..4994cab1e6 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/start": "^1.52.0", + "@tanstack/react-router": "^1.52.1", + "@tanstack/start": "^1.52.1", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index bf24a23e7b..c33a5eba4c 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.9", - "@tanstack/react-router-with-query": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/react-router-with-query": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.0", + "@tanstack/start": "^1.52.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 6cfe77ea9b..785f41cded 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.0", + "@tanstack/start": "^1.52.1", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index fdcbd0dc9f..a6e83cd094 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.0", + "@tanstack/start": "^1.52.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index d47741c146..e54e645f08 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.0", + "@tanstack/start": "^1.52.1", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 932689838f..7d75b0ee0a 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.9", - "@tanstack/react-router-with-query": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/react-router-with-query": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.0", + "@tanstack/start": "^1.52.1", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index af73d11d8b..871651f121 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.9", - "@tanstack/react-router-with-query": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/react-router-with-query": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.0", + "@tanstack/start": "^1.52.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index a2be92e4a1..d3cb6bfe69 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 98b033c75c..7e8a1d31ee 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index b55e85db00..b9fbeccb0e 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.51.9", - "@tanstack/router-devtools": "^1.51.9", + "@tanstack/react-router": "^1.52.1", + "@tanstack/router-devtools": "^1.52.1", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index d2a01da3a9..74cc98ae09 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.51.9", + "version": "1.52.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 11788f2efe..5a2fbcf12e 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.51.9", + "version": "1.52.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 9986fb1097..67f4c8a19c 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.51.9", + "version": "1.52.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 87da2a5370..08edbf2995 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.51.9", + "version": "1.52.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index c777d661a8..3a191a01a2 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.51.9", + "version": "1.52.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 74b61f940e..949039681c 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.51.9", + "version": "1.52.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 4c0e002e26..24f1b8a2f9 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.52.0", + "version": "1.52.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 2c93e4bbcf81fab358fe48a49b3c2513d81e6827 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sun, 1 Sep 2024 02:52:59 +0200 Subject: [PATCH 030/154] fix(react-router): if loader is running async for revalidation, do not overwrite `isFetching` (#2239) --- packages/react-router/src/router.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index 6eb4ae25fd..cb07523e98 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -2133,7 +2133,7 @@ export class Router< (async () => { const { loaderPromise: prevLoaderPromise } = this.getMatch(matchId)! - + let loaderRunningAsync = false if (prevLoaderPromise) { await prevLoaderPromise } else { @@ -2328,13 +2328,12 @@ export class Router< // If the route is successful and still fresh, just resolve const { status, invalid } = this.getMatch(matchId)! - - if (preload && route.options.preload === false) { - // Do nothing - } else if ( + loaderRunningAsync = status === 'success' && (invalid || (shouldReload ?? age > staleAge)) - ) { + if (preload && route.options.preload === false) { + // Do nothing + } else if (loaderRunningAsync) { ;(async () => { try { await runLoader() @@ -2353,7 +2352,7 @@ export class Router< updateMatch(matchId, (prev) => ({ ...prev, - isFetching: false, + isFetching: loaderRunningAsync ? prev.isFetching : false, loaderPromise: undefined, })) })(), From 01d5efd1c221236b320d7a7c2f7ca4683f6ce74a Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sun, 1 Sep 2024 00:54:32 +0000 Subject: [PATCH 031/154] release: v1.52.2 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 41 files changed, 90 insertions(+), 90 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 3e40df1dab..7f566e36a7 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 50e037c9dd..172ffa9212 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index e7200a6ae5..7daba3c8ab 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 63762b575a..20a0aaf143 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 861382efa5..c5fdde8a75 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index b9b3fdf5fe..896707a609 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 4ec411544e..b824d34c23 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.1", + "@tanstack/start": "^1.52.2", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 77d7598a78..84dd984f2a 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.1", + "@tanstack/start": "^1.52.2", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index c094c21e4c..ca61f06269 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 1341c91184..8218455165 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 5745bc251a..07bb40dc27 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 58610dca8f..e0a8f5a099 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 7c1b1f7aa7..13ba735b13 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 113bf801f4..9b7aaad508 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 2a69c102df..fce6409a80 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index bf5ef5bacf..04b6f62489 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 4be651c286..705ef21170 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 4fbf3ee073..64fca59bf2 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 6947b413a5..9a2d1d7479 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 38b6a9f2d5..6e17b3caf3 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 4a63c44ac5..f2bcbcf975 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 5990f8a54c..298915b0f1 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", + "@tanstack/react-router": "^1.52.2", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/router-devtools": "^1.52.2", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index dbef45e16e..02aa79fed1 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/router-zod-adapter": "^1.52.1", - "@tanstack/router-valibot-adapter": "^1.52.1", - "@tanstack/router-arktype-adapter": "^1.52.1", + "@tanstack/router-zod-adapter": "^1.52.2", + "@tanstack/router-valibot-adapter": "^1.52.2", + "@tanstack/router-arktype-adapter": "^1.52.2", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 557a688a6c..0f3ad0dae8 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.1", + "@tanstack/start": "^1.52.2", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 4994cab1e6..e1b2c4f0c3 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/start": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/start": "^1.52.2", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index c33a5eba4c..0ef8731e02 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.1", - "@tanstack/react-router-with-query": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/react-router-with-query": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.1", + "@tanstack/start": "^1.52.2", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 785f41cded..41ec596cd1 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.1", + "@tanstack/start": "^1.52.2", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index a6e83cd094..ab45e57886 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.1", + "@tanstack/start": "^1.52.2", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index e54e645f08..1cf4da95ff 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.1", + "@tanstack/start": "^1.52.2", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 7d75b0ee0a..2f0c6dc80a 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.1", - "@tanstack/react-router-with-query": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/react-router-with-query": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.1", + "@tanstack/start": "^1.52.2", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 871651f121..fcb492c06b 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.1", - "@tanstack/react-router-with-query": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/react-router-with-query": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.1", + "@tanstack/start": "^1.52.2", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index d3cb6bfe69..a190f7ba70 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 7e8a1d31ee..f88895c466 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index b9fbeccb0e..5de7d24631 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.52.1", - "@tanstack/router-devtools": "^1.52.1", + "@tanstack/react-router": "^1.52.2", + "@tanstack/router-devtools": "^1.52.2", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 74cc98ae09..709522f937 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.52.1", + "version": "1.52.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 5a2fbcf12e..864e1bfabc 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.52.1", + "version": "1.52.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 67f4c8a19c..83ae67cc12 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.52.1", + "version": "1.52.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 08edbf2995..62a2dd2d30 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.52.1", + "version": "1.52.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 3a191a01a2..32511cfa6d 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.52.1", + "version": "1.52.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 949039681c..49b6a3f3f7 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.52.1", + "version": "1.52.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 24f1b8a2f9..46c17e2cd1 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.52.1", + "version": "1.52.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 1e64284b1d0d1d7a44212c3a1e2da63a6a919cb7 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sun, 1 Sep 2024 08:40:53 +0200 Subject: [PATCH 032/154] fix(react-router): disable route properties check until HMR bug is fixed (#2240) --- packages/react-router/src/route.ts | 16 ++++++++-------- packages/react-router/tests/route.test.tsx | 3 ++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/react-router/src/route.ts b/packages/react-router/src/route.ts index 7797b496bc..79d0cf3d34 100644 --- a/packages/react-router/src/route.ts +++ b/packages/react-router/src/route.ts @@ -887,35 +887,35 @@ export class Route< private _to!: TrimPathRight public get to() { - invariant( + /* invariant( this._to, `trying to access property 'to' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`, - ) + )*/ return this._to } public get id() { - invariant( + /* invariant( this._id, `trying to access property 'id' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`, - ) + )*/ return this._id } public get path() { - invariant( + /* invariant( // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition this.isRoot || this._id || this._path, `trying to access property 'path' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`, - ) + )*/ return this._path } public get fullPath() { - invariant( + /* invariant( this._fullPath, `trying to access property 'fullPath' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`, - ) + )*/ return this._fullPath } diff --git a/packages/react-router/tests/route.test.tsx b/packages/react-router/tests/route.test.tsx index fd881e328f..a5a9a018b2 100644 --- a/packages/react-router/tests/route.test.tsx +++ b/packages/react-router/tests/route.test.tsx @@ -8,7 +8,6 @@ import { useNavigate, } from '../src' import React from 'react' -import exp from 'constants' describe('getRouteApi', () => { it('should have the useMatch hook', () => { @@ -60,6 +59,7 @@ describe('createRoute has the same hooks as getRouteApi', () => { ) }) +/* disabled until HMR bug is fixed describe('throws invariant exception when trying to access properties before `createRouter` completed', () => { function setup() { const rootRoute = createRootRoute() @@ -138,3 +138,4 @@ describe('throws invariant exception when trying to access properties before `cr expect(postsRoute.to).toBe('/posts') }) }) +*/ From 16ca2ac837c4e3188cabecdadecb0cd81a7378e9 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sun, 1 Sep 2024 06:41:59 +0000 Subject: [PATCH 033/154] release: v1.52.3 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 41 files changed, 90 insertions(+), 90 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 7f566e36a7..67a45212ba 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 172ffa9212..1f60d824c6 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 7daba3c8ab..0fcf5465e1 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 20a0aaf143..7fa7fd3fe7 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index c5fdde8a75..5fed43c5ae 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 896707a609..fde99974cf 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index b824d34c23..a60cc66a91 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.2", + "@tanstack/start": "^1.52.3", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 84dd984f2a..c4dd02d06b 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.2", + "@tanstack/start": "^1.52.3", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index ca61f06269..963ba87f5c 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 8218455165..11181b0d1c 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 07bb40dc27..d090299e75 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index e0a8f5a099..f7f19cb9cb 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 13ba735b13..879f64ef07 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 9b7aaad508..3f7df7a315 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index fce6409a80..a3e6954c9c 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 04b6f62489..ba5cf21a2d 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 705ef21170..8627ea50a3 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 64fca59bf2..03fdc131f9 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 9a2d1d7479..4e5a3aee21 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 6e17b3caf3..6449b2123f 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index f2bcbcf975..fbc7e70148 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 298915b0f1..b2460093a1 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", + "@tanstack/react-router": "^1.52.3", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/router-devtools": "^1.52.3", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 02aa79fed1..c9b4df1d4a 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/router-zod-adapter": "^1.52.2", - "@tanstack/router-valibot-adapter": "^1.52.2", - "@tanstack/router-arktype-adapter": "^1.52.2", + "@tanstack/router-zod-adapter": "^1.52.3", + "@tanstack/router-valibot-adapter": "^1.52.3", + "@tanstack/router-arktype-adapter": "^1.52.3", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 0f3ad0dae8..6717aeda9c 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.2", + "@tanstack/start": "^1.52.3", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index e1b2c4f0c3..42f6851304 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/start": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/start": "^1.52.3", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 0ef8731e02..43b8677a87 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.2", - "@tanstack/react-router-with-query": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/react-router-with-query": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.2", + "@tanstack/start": "^1.52.3", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 41ec596cd1..7df94f1488 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.2", + "@tanstack/start": "^1.52.3", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index ab45e57886..6e630518aa 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.2", + "@tanstack/start": "^1.52.3", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 1cf4da95ff..cbed6a9410 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.2", + "@tanstack/start": "^1.52.3", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 2f0c6dc80a..df3fb18730 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.2", - "@tanstack/react-router-with-query": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/react-router-with-query": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.2", + "@tanstack/start": "^1.52.3", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index fcb492c06b..d91cef99a6 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.2", - "@tanstack/react-router-with-query": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/react-router-with-query": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.2", + "@tanstack/start": "^1.52.3", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index a190f7ba70..2078468f9a 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index f88895c466..593435a07e 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 5de7d24631..ed933a1fdd 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.52.2", - "@tanstack/router-devtools": "^1.52.2", + "@tanstack/react-router": "^1.52.3", + "@tanstack/router-devtools": "^1.52.3", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 709522f937..cc9bf65f7d 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.52.2", + "version": "1.52.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 864e1bfabc..3cb54e8547 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.52.2", + "version": "1.52.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 83ae67cc12..4177cb19d6 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.52.2", + "version": "1.52.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 62a2dd2d30..7b09bd35c8 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.52.2", + "version": "1.52.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 32511cfa6d..fbf9874f3c 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.52.2", + "version": "1.52.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 49b6a3f3f7..0f9bd1379d 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.52.2", + "version": "1.52.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 46c17e2cd1..7f060fcd3b 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.52.2", + "version": "1.52.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From bbc5148399cea421c4e576300c36e13af0db1f30 Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Mon, 2 Sep 2024 08:47:30 +1200 Subject: [PATCH 034/154] chore: update the issue template to ask for Start or Router (#2242) * chore: issue template to ask for start or router * make the selection required * update the label and description --- .github/ISSUE_TEMPLATE/bug_report.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 4de68113bd..1c0a7232f0 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -16,6 +16,16 @@ body: - `router` Discussions tab: https://github.com/tanstack/router/discussions The more information you fill in, the better the community can help you. + - type: dropdown + id: project + attributes: + label: Which project does this relate to? + description: If you are unsure, please leave this as "Router". + options: + - Router + - Start + validations: + required: true - type: textarea id: description attributes: From 17d98859779c452ef3c0020128feb98fadbd3132 Mon Sep 17 00:00:00 2001 From: Langa Cristian <41761295+cristi-lng@users.noreply.github.com> Date: Mon, 2 Sep 2024 20:12:27 +0300 Subject: [PATCH 035/154] fix(react-router): reset error boundary after the new matches are ready (#2244) * fix(react-router)(issue-2162): reset error boundary after the new matches are ready * tests: reproducer for #2043 --------- Co-authored-by: Cristian Langa Co-authored-by: Manuel Schiller --- packages/react-router/src/router.ts | 6 +- packages/react-router/tests/link.test.tsx | 71 +++++++++++++++++++++++ 2 files changed, 72 insertions(+), 5 deletions(-) diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index cb07523e98..ff26c3bcb2 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -1643,11 +1643,6 @@ export class Router< load = async (): Promise => { this.latestLocation = this.parseLocation(this.latestLocation) - this.__store.setState((s) => ({ - ...s, - loadedAt: Date.now(), - })) - let redirect: ResolvedRedirect | undefined let notFound: NotFoundError | undefined @@ -1738,6 +1733,7 @@ export class Router< return { ...s, isLoading: false, + loadedAt: Date.now(), matches: newMatches, pendingMatches: undefined, cachedMatches: [ diff --git a/packages/react-router/tests/link.test.tsx b/packages/react-router/tests/link.test.tsx index 9bf54202b0..07a47d109c 100644 --- a/packages/react-router/tests/link.test.tsx +++ b/packages/react-router/tests/link.test.tsx @@ -760,6 +760,77 @@ describe('Link', () => { expect(onError).toHaveBeenCalledOnce() }) + test('when navigating away from a route with a loader that errors', async () => { + const postsOnError = vi.fn() + const indexOnError = vi.fn() + const rootRoute = createRootRoute({ + component: () => ( + <> +
+ Index Posts +
+
+ + + ), + }) + const indexRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/', + component: () => { + return ( + <> +

Index

+ + ) + }, + onError: indexOnError, + errorComponent: () => IndexError, + }) + + const error = new Error('Something went wrong!') + + const postsRoute = createRoute({ + getParentRoute: () => rootRoute, + path: 'posts', + loaderDeps: (opts) => ({ page: opts.search }), + loader: () => { + throw error + }, + onError: postsOnError, + errorComponent: () => PostsError, + component: () => { + return ( + <> +

Posts

+ + ) + }, + }) + + const router = createRouter({ + routeTree: rootRoute.addChildren([indexRoute, postsRoute]), + }) + + render() + + const postsLink = await screen.findByRole('link', { name: 'Posts' }) + + fireEvent.click(postsLink) + + const postsErrorText = await screen.findByText('PostsError') + expect(postsErrorText).toBeInTheDocument() + + expect(postsOnError).toHaveBeenCalledOnce() + expect(postsOnError).toHaveBeenCalledWith(error) + + const indexLink = await screen.findByRole('link', { name: 'Index' }) + fireEvent.click(indexLink) + + expect(screen.findByText('IndexError')).rejects.toThrow() + expect(indexOnError).not.toHaveBeenCalledOnce() + }) + test('when navigating to /posts with a beforeLoad that redirects', async () => { const rootRoute = createRootRoute() const indexRoute = createRoute({ From 71c5ceae4360c81f2555258adbafcf12a413077a Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Mon, 2 Sep 2024 17:16:43 +0000 Subject: [PATCH 036/154] release: v1.52.4 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 41 files changed, 90 insertions(+), 90 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 67a45212ba..7b81c77f30 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 1f60d824c6..b6ec2c0a63 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 0fcf5465e1..11c21f5f22 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 7fa7fd3fe7..8be70d2141 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 5fed43c5ae..a7cdb071d6 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index fde99974cf..afc0513b0a 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index a60cc66a91..7c05b33426 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.3", + "@tanstack/start": "^1.52.4", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index c4dd02d06b..7e17981922 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.3", + "@tanstack/start": "^1.52.4", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 963ba87f5c..3d42b884bb 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 11181b0d1c..5e51819f47 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index d090299e75..48d3241b84 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index f7f19cb9cb..5e52f1fcb2 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 879f64ef07..52e7ba7b5d 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 3f7df7a315..3f82bc0f50 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index a3e6954c9c..171c224d07 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index ba5cf21a2d..507c7be218 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 8627ea50a3..5b8c08cb33 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 03fdc131f9..9653566841 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 4e5a3aee21..c597ce714b 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 6449b2123f..77c7166eba 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index fbc7e70148..976ea22627 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index b2460093a1..3a9f33d720 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", + "@tanstack/react-router": "^1.52.4", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/router-devtools": "^1.52.4", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index c9b4df1d4a..054773fd71 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/router-zod-adapter": "^1.52.3", - "@tanstack/router-valibot-adapter": "^1.52.3", - "@tanstack/router-arktype-adapter": "^1.52.3", + "@tanstack/router-zod-adapter": "^1.52.4", + "@tanstack/router-valibot-adapter": "^1.52.4", + "@tanstack/router-arktype-adapter": "^1.52.4", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 6717aeda9c..4f05f20a00 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.3", + "@tanstack/start": "^1.52.4", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 42f6851304..b6ffc2a463 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/start": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/start": "^1.52.4", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 43b8677a87..3f8328c646 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.3", - "@tanstack/react-router-with-query": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/react-router-with-query": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.3", + "@tanstack/start": "^1.52.4", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 7df94f1488..feff4695a8 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.3", + "@tanstack/start": "^1.52.4", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 6e630518aa..f2f7def993 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.3", + "@tanstack/start": "^1.52.4", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index cbed6a9410..646140da58 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.3", + "@tanstack/start": "^1.52.4", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index df3fb18730..08850f5744 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.3", - "@tanstack/react-router-with-query": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/react-router-with-query": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.3", + "@tanstack/start": "^1.52.4", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index d91cef99a6..2c017a27b9 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.3", - "@tanstack/react-router-with-query": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/react-router-with-query": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.3", + "@tanstack/start": "^1.52.4", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 2078468f9a..7ffb146d24 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 593435a07e..610f767846 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index ed933a1fdd..8310d367cf 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.52.3", - "@tanstack/router-devtools": "^1.52.3", + "@tanstack/react-router": "^1.52.4", + "@tanstack/router-devtools": "^1.52.4", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index cc9bf65f7d..1d14b9b188 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.52.3", + "version": "1.52.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 3cb54e8547..e2d0fef8b5 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.52.3", + "version": "1.52.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 4177cb19d6..377e077cbc 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.52.3", + "version": "1.52.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 7b09bd35c8..c03aa54704 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.52.3", + "version": "1.52.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index fbf9874f3c..91efab3adb 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.52.3", + "version": "1.52.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 0f9bd1379d..5b2d24d318 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.52.3", + "version": "1.52.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 7f060fcd3b..5ba6a0a90f 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.52.3", + "version": "1.52.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From f32b01daaba9ae1eacf14637c84b14f8ac303a12 Mon Sep 17 00:00:00 2001 From: NekoChan <47508893+nekochan0122@users.noreply.github.com> Date: Mon, 2 Sep 2024 16:18:28 -0700 Subject: [PATCH 037/154] docs(start): fix tsconfig (#2246) --- docs/framework/react/start/getting-started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework/react/start/getting-started.md b/docs/framework/react/start/getting-started.md index 8b9acae243..240e6b2fa7 100644 --- a/docs/framework/react/start/getting-started.md +++ b/docs/framework/react/start/getting-started.md @@ -32,7 +32,7 @@ Create a `tsconfig.json` file with at least the following settings: "compilerOptions": { "jsx": "react-jsx", "moduleResolution": "Bundler", - "module": "Preserve", + "module": "ESNext", "target": "ES2022", "skipLibCheck": true, }, From 12fd81129de16e0e753d075accbe4c91d2907de7 Mon Sep 17 00:00:00 2001 From: Luca Lee <30341309+leeluca@users.noreply.github.com> Date: Tue, 3 Sep 2024 08:20:07 +0900 Subject: [PATCH 038/154] docs(router): fix broken links in route-trees.md and routing-concepts.md (#2249) --- docs/framework/react/guide/route-trees.md | 8 ++++---- docs/framework/react/guide/routing-concepts.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/framework/react/guide/route-trees.md b/docs/framework/react/guide/route-trees.md index 85d2c0e7da..8958500eee 100644 --- a/docs/framework/react/guide/route-trees.md +++ b/docs/framework/react/guide/route-trees.md @@ -61,9 +61,9 @@ The above is a valid route tree configuration that can be used with TanStack Rou Route trees can be configured using a few different ways: -- [Flat Routes](./route-trees.md#flat-routes) -- [Directories](./route-trees.md#directory-routes) -- [Mixed Flat Routes and Directories](./route-trees.md#mixed-flat-and-directory-routes) -- [Code-Based Routes](./route-trees.md#code-based-routes) +- [Flat Routes](./file-based-routing#flat-routes) +- [Directories](./file-based-routing#directory-routes) +- [Mixed Flat Routes and Directories](./file-based-routing#mixed-flat-and-directory-routes) +- [Code-Based Routes](./code-based-routing) For a birds-eye view, the route tree examples below showcase the [Routing Concepts](./routing-concepts.md) that are available in TanStack Router, but please be sure to check out the full documentation links above for each type of route tree, or just proceed to the next section to get started with file-based routing. diff --git a/docs/framework/react/guide/routing-concepts.md b/docs/framework/react/guide/routing-concepts.md index cafa3d5e49..b3febed35e 100644 --- a/docs/framework/react/guide/routing-concepts.md +++ b/docs/framework/react/guide/routing-concepts.md @@ -8,7 +8,7 @@ TanStack Router supports a number of powerful routing concepts that allow you to - [Static Routes](./routing-concepts.md#static-routes) - [Index Routes](./routing-concepts.md#index-routes) - [Dynamic Route Segments](./routing-concepts.md#dynamic-route-segments) -- [Splat / Catch-All Routes](./routing-concept.md#splat--catch-all-routes) +- [Splat / Catch-All Routes](./routing-concepts.md#splat--catch-all-routes) - [Pathless Routes](./routing-concepts.md#pathless--layout-routes) - [Non-Nested Routes](./routing-concepts.md#non-nested-routes) - [Not-Found Routes](./routing-concepts.md#404--notfoundroutes) From ae8c33af5fea610897fa85e1c441e2861ceaba6f Mon Sep 17 00:00:00 2001 From: Luca Lee <30341309+leeluca@users.noreply.github.com> Date: Tue, 3 Sep 2024 08:23:39 +0900 Subject: [PATCH 039/154] docs(react): remove reference to deleted examples in route-trees.md (#2250) Co-authored-by: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> --- docs/framework/react/guide/route-trees.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework/react/guide/route-trees.md b/docs/framework/react/guide/route-trees.md index 8958500eee..12132f5377 100644 --- a/docs/framework/react/guide/route-trees.md +++ b/docs/framework/react/guide/route-trees.md @@ -66,4 +66,4 @@ Route trees can be configured using a few different ways: - [Mixed Flat Routes and Directories](./file-based-routing#mixed-flat-and-directory-routes) - [Code-Based Routes](./code-based-routing) -For a birds-eye view, the route tree examples below showcase the [Routing Concepts](./routing-concepts.md) that are available in TanStack Router, but please be sure to check out the full documentation links above for each type of route tree, or just proceed to the next section to get started with file-based routing. +Please be sure to check out the full documentation links above for each type of route tree, or just proceed to the next section to get started with file-based routing. From 82404056ac4f14ffeaf88a522979c08cdd961522 Mon Sep 17 00:00:00 2001 From: Luca Lee <30341309+leeluca@users.noreply.github.com> Date: Tue, 3 Sep 2024 11:30:53 +0900 Subject: [PATCH 040/154] docs(react): add missing .md extension to link paths in route-trees.md (#2252) --- docs/framework/react/guide/route-trees.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/framework/react/guide/route-trees.md b/docs/framework/react/guide/route-trees.md index 12132f5377..b9ed2231f0 100644 --- a/docs/framework/react/guide/route-trees.md +++ b/docs/framework/react/guide/route-trees.md @@ -61,9 +61,9 @@ The above is a valid route tree configuration that can be used with TanStack Rou Route trees can be configured using a few different ways: -- [Flat Routes](./file-based-routing#flat-routes) -- [Directories](./file-based-routing#directory-routes) -- [Mixed Flat Routes and Directories](./file-based-routing#mixed-flat-and-directory-routes) -- [Code-Based Routes](./code-based-routing) +- [Flat Routes](./file-based-routing.md#flat-routes) +- [Directories](./file-based-routing.md#directory-routes) +- [Mixed Flat Routes and Directories](./file-based-routing.md#mixed-flat-and-directory-routes) +- [Code-Based Routes](./code-based-routing.md) Please be sure to check out the full documentation links above for each type of route tree, or just proceed to the next section to get started with file-based routing. From fe08fb5301241dc3765f74b0a72955c473ecd4f4 Mon Sep 17 00:00:00 2001 From: Maciej Garncarski <60816511+MaciejGarncarski@users.noreply.github.com> Date: Tue, 3 Sep 2024 06:30:52 +0200 Subject: [PATCH 041/154] fix(react-router): `pendingComponent` not rendering with preload='intent' (#2247) * fix(router): pendingComponent not showing * remove unused variable * tests: add test --- packages/react-router/src/router.ts | 41 ++++++++++------- packages/react-router/tests/link.test.tsx | 55 ++++++++++++++++++++++- 2 files changed, 80 insertions(+), 16 deletions(-) diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index ff26c3bcb2..0de4f86f11 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -1971,12 +1971,38 @@ export class Router< const existingMatch = this.getMatch(matchId)! const parentMatchId = matches[index - 1]?.id + const route = this.looseRoutesById[routeId]! + + const pendingMs = + route.options.pendingMs ?? this.options.defaultPendingMs + + const shouldPending = !!( + onReady && + !this.isServer && + !preload && + (route.options.loader || route.options.beforeLoad) && + typeof pendingMs === 'number' && + pendingMs !== Infinity && + (route.options.pendingComponent ?? + this.options.defaultPendingComponent) + ) + if ( // If we are in the middle of a load, either of these will be present // (not to be confused with `loadPromise`, which is always defined) existingMatch.beforeLoadPromise || existingMatch.loaderPromise ) { + if (shouldPending) { + setTimeout(() => { + try { + // Update the match and prematurely resolve the loadMatches promise so that + // the pending component can start rendering + triggerOnReady() + } catch {} + }, pendingMs) + } + // Wait for the beforeLoad to resolve before we continue await existingMatch.beforeLoadPromise } else { @@ -1990,23 +2016,8 @@ export class Router< beforeLoadPromise: createControlledPromise(), })) - const route = this.looseRoutesById[routeId]! const abortController = new AbortController() - const pendingMs = - route.options.pendingMs ?? this.options.defaultPendingMs - - const shouldPending = !!( - onReady && - !this.isServer && - !preload && - (route.options.loader || route.options.beforeLoad) && - typeof pendingMs === 'number' && - pendingMs !== Infinity && - (route.options.pendingComponent ?? - this.options.defaultPendingComponent) - ) - let pendingTimeout: ReturnType if (shouldPending) { diff --git a/packages/react-router/tests/link.test.tsx b/packages/react-router/tests/link.test.tsx index 07a47d109c..770caac8ec 100644 --- a/packages/react-router/tests/link.test.tsx +++ b/packages/react-router/tests/link.test.tsx @@ -28,7 +28,7 @@ import { useRouterState, useSearch, } from '../src' -import { getIntersectionObserverMock } from './utils' +import { getIntersectionObserverMock, sleep } from './utils' const ioObserveMock = vi.fn() const ioDisconnectMock = vi.fn() @@ -47,6 +47,8 @@ afterEach(() => { cleanup() }) +const WAIT_TIME = 300 + describe('Link', () => { test('when using renderHook it returns a hook with same content to prove rerender works', async () => { /** @@ -3599,6 +3601,57 @@ describe('Link', () => { expect(ioObserveMock).not.toBeCalled() }) + + test('Router.preload="intent", pendingComponent renders during unresolved route loader', async () => { + const rootRoute = createRootRoute() + const indexRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/', + component: () => { + return ( +
+

Index page

+ + link to posts + +
+ ) + }, + }) + + const postRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/posts', + loader: () => sleep(WAIT_TIME), + component: () =>
Posts page
, + }) + + const routeTree = rootRoute.addChildren([postRoute, indexRoute]) + const router = createRouter({ + routeTree, + defaultPreload: 'intent', + defaultPendingMs: 200, + defaultPendingComponent: () =>

Loading...

, + }) + + render() + + const linkToPosts = await screen.findByRole('link', { + name: 'link to posts', + }) + expect(linkToPosts).toBeInTheDocument() + + fireEvent.focus(linkToPosts) + fireEvent.click(linkToPosts) + + const loadingElement = await screen.findByText('Loading...') + expect(loadingElement).toBeInTheDocument() + + const postsElement = await screen.findByText('Posts page') + expect(postsElement).toBeInTheDocument() + + expect(window.location.pathname).toBe('/posts') + }) }) describe('createLink', () => { From 2e6a54354f3a55ad9ca5e3d25439f4d45c3452cf Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Tue, 3 Sep 2024 04:34:48 +0000 Subject: [PATCH 042/154] release: v1.52.5 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 41 files changed, 90 insertions(+), 90 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 7b81c77f30..8d1f7cab00 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index b6ec2c0a63..99fd866632 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 11c21f5f22..8769d60d03 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 8be70d2141..2fe06ec25a 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index a7cdb071d6..d7fd5e9176 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index afc0513b0a..9a4cf57306 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 7c05b33426..37b4f070c8 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.4", + "@tanstack/start": "^1.52.5", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 7e17981922..ff88197788 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.4", + "@tanstack/start": "^1.52.5", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 3d42b884bb..2d9eddf0e4 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 5e51819f47..cf0961f086 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 48d3241b84..ed6079b57c 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 5e52f1fcb2..58feb031cd 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 52e7ba7b5d..3295b66a79 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 3f82bc0f50..3ae4d1604d 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 171c224d07..8e214527c7 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 507c7be218..9dad3ab1af 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 5b8c08cb33..d1b6c30cab 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 9653566841..0bc1e847e7 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index c597ce714b..6a6fd35a94 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 77c7166eba..40912d8492 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 976ea22627..d322d9ac0c 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 3a9f33d720..85e7a26f9b 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", + "@tanstack/react-router": "^1.52.5", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/router-devtools": "^1.52.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 054773fd71..c7dcf89d90 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/router-zod-adapter": "^1.52.4", - "@tanstack/router-valibot-adapter": "^1.52.4", - "@tanstack/router-arktype-adapter": "^1.52.4", + "@tanstack/router-zod-adapter": "^1.52.5", + "@tanstack/router-valibot-adapter": "^1.52.5", + "@tanstack/router-arktype-adapter": "^1.52.5", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 4f05f20a00..57bd90a960 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.4", + "@tanstack/start": "^1.52.5", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index b6ffc2a463..2b110ec131 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/start": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/start": "^1.52.5", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 3f8328c646..c7999fe8f6 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.4", - "@tanstack/react-router-with-query": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/react-router-with-query": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.4", + "@tanstack/start": "^1.52.5", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index feff4695a8..4688e8c5f8 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.4", + "@tanstack/start": "^1.52.5", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index f2f7def993..41d1a570e2 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.4", + "@tanstack/start": "^1.52.5", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 646140da58..9343915349 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.4", + "@tanstack/start": "^1.52.5", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 08850f5744..21c47331cd 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.4", - "@tanstack/react-router-with-query": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/react-router-with-query": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.4", + "@tanstack/start": "^1.52.5", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 2c017a27b9..7253c5d7e6 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.4", - "@tanstack/react-router-with-query": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/react-router-with-query": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.4", + "@tanstack/start": "^1.52.5", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 7ffb146d24..176b89fcf0 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 610f767846..13aca0af10 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 8310d367cf..65bff05916 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.52.4", - "@tanstack/router-devtools": "^1.52.4", + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 1d14b9b188..8719d066c7 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.52.4", + "version": "1.52.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index e2d0fef8b5..9388100d63 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.52.4", + "version": "1.52.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 377e077cbc..88ab3f610c 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.52.4", + "version": "1.52.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index c03aa54704..44e26437fb 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.52.4", + "version": "1.52.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 91efab3adb..30c73bdb3e 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.52.4", + "version": "1.52.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 5b2d24d318..1c509a192d 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.52.4", + "version": "1.52.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 5ba6a0a90f..a2284b960e 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.52.4", + "version": "1.52.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 7ffdf93a9e2b83b6ed4e5d81276670c4663a9346 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Tue, 3 Sep 2024 23:46:21 +0200 Subject: [PATCH 043/154] feat: pass `matches` into `context()` and `beforeLoad()` (#2258) this will allow typesafe access to the matches so something like this can be done: ```tsx const leafMatch = c.matches[c.matches.length - 1]; if (leafMatch.fullPath === '/dashboard/invoices/$invoiceId') { if (leafMatch.params.invoiceId === '1') { throw notFound(); } } ``` --- packages/react-router/src/Matches.tsx | 6 +++--- packages/react-router/src/route.ts | 3 ++- packages/react-router/src/router.ts | 2 ++ packages/react-router/tests/route.test-d.tsx | 21 ++++++++++++++++++++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/packages/react-router/src/Matches.tsx b/packages/react-router/src/Matches.tsx index e6359a32b1..fd58cab151 100644 --- a/packages/react-router/src/Matches.tsx +++ b/packages/react-router/src/Matches.tsx @@ -352,8 +352,8 @@ export function MatchRoute< return params ? props.children : null } -export type MakeRouteMatches< - TRouter extends AnyRouter = AnyRouter, +export type MakeRouteMatchUnion< + TRouter extends AnyRouter = RegisteredRouter, TRoute extends AnyRoute = ParseRoute, > = TRoute extends any ? RouteMatch< @@ -369,7 +369,7 @@ export type MakeRouteMatches< export function useMatches< TRouter extends AnyRouter = RegisteredRouter, - TRouteMatch = MakeRouteMatches, + TRouteMatch = MakeRouteMatchUnion, T = Array, >(opts?: { select?: (matches: Array) => T }): T { return useRouterState({ diff --git a/packages/react-router/src/route.ts b/packages/react-router/src/route.ts index 79d0cf3d34..6256d83d42 100644 --- a/packages/react-router/src/route.ts +++ b/packages/react-router/src/route.ts @@ -11,7 +11,7 @@ import { rootRouteId } from './root' import type * as React from 'react' import type { RootRouteId } from './root' import type { UseNavigateResult } from './useNavigate' -import type { MakeRouteMatch, RouteMatch } from './Matches' +import type { MakeRouteMatch, MakeRouteMatchUnion, RouteMatch } from './Matches' import type { NavigateOptions, ParsePathParams, ToMaskOptions } from './link' import type { ParsedLocation } from './location' import type { RouteById, RouteIds, RoutePaths } from './routeInfo' @@ -285,6 +285,7 @@ export interface ContextOptions< navigate: NavigateFn buildLocation: BuildLocationFn cause: 'preload' | 'enter' | 'stay' + matches: Array } export interface RouteContextOptions< diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index 0de4f86f11..60821a02b2 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -1264,6 +1264,7 @@ export class Router< cause: match.cause, abortController: match.abortController, preload: !!match.preload, + matches, } // Get the route context @@ -2080,6 +2081,7 @@ export class Router< this.navigate({ ...opts, _fromLocation: location }), buildLocation: this.buildLocation, cause: preload ? 'preload' : cause, + matches, } let beforeLoadContext = diff --git a/packages/react-router/tests/route.test-d.tsx b/packages/react-router/tests/route.test-d.tsx index c005f052dc..3fdfb5d2b8 100644 --- a/packages/react-router/tests/route.test-d.tsx +++ b/packages/react-router/tests/route.test-d.tsx @@ -16,6 +16,7 @@ import type { Route, SearchSchemaInput, } from '../src' +import type { MakeRouteMatchUnion } from '../src/Matches' test('when creating the root', () => { const rootRoute = createRootRoute() @@ -38,6 +39,7 @@ test('when creating the root with routeContext', () => { cause: 'preload' | 'enter' | 'stay' context: {} search: {} + matches: Array }>() }, }) @@ -60,6 +62,7 @@ test('when creating the root with beforeLoad', () => { cause: 'preload' | 'enter' | 'stay' context: {} search: {} + matches: Array }>() }, }) @@ -107,6 +110,7 @@ test('when creating the root route with context and routeContext', () => { cause: 'preload' | 'enter' | 'stay' context: { userId: string } search: {} + matches: Array }>() }, }) @@ -141,6 +145,7 @@ test('when creating the root route with context and beforeLoad', () => { cause: 'preload' | 'enter' | 'stay' context: { userId: string } search: {} + matches: Array }>() }, }) @@ -210,6 +215,7 @@ test('when creating the root route with context, routeContext, beforeLoad and a cause: 'preload' | 'enter' | 'stay' context: { userId: string } search: {} + matches: Array }>() return { @@ -227,6 +233,7 @@ test('when creating the root route with context, routeContext, beforeLoad and a cause: 'preload' | 'enter' | 'stay' context: { userId: string; env: 'env1' } search: {} + matches: Array }>() return { permission: 'view' as const } }, @@ -319,6 +326,7 @@ test('when creating a child route with routeContext from the root route with con cause: 'preload' | 'enter' | 'stay' context: { userId: string } search: {} + matches: Array }>() return { @@ -345,6 +353,7 @@ test('when creating a child route with beforeLoad from the root route with conte cause: 'preload' | 'enter' | 'stay' context: { userId: string } search: {} + matches: Array }>() }, }) @@ -614,6 +623,7 @@ test('when creating a child route with params, search with routeContext from the cause: 'preload' | 'enter' | 'stay' context: { userId: string } search: { page: number } + matches: Array }>() }, }) @@ -637,6 +647,7 @@ test('when creating a child route with params, search with beforeLoad from the r cause: 'preload' | 'enter' | 'stay' context: { userId: string } search: { page: number } + matches: Array }>() }, }) @@ -660,6 +671,7 @@ test('when creating a child route with params, search with routeContext, beforeL cause: 'preload' | 'enter' | 'stay' context: { userId: string } search: { page: number } + matches: Array }>() return { env: 'env1', @@ -676,6 +688,7 @@ test('when creating a child route with params, search with routeContext, beforeL cause: 'preload' | 'enter' | 'stay' context: { userId: string; env: string } search: { page: number } + matches: Array }>() return { permission: 'view' } as const }, @@ -774,6 +787,7 @@ test('when creating a child route with routeContext from a parent with routeCont cause: 'preload' | 'enter' | 'stay' context: { userId: string } search: {} + matches: Array }>() return { invoiceId: 'invoiceId1' } @@ -794,6 +808,7 @@ test('when creating a child route with routeContext from a parent with routeCont cause: 'preload' | 'enter' | 'stay' context: { userId: string; invoiceId: string } search: {} + matches: Array }>() return { detailId: 'detailId1' } @@ -837,6 +852,7 @@ test('when creating a child route with beforeLoad from a parent with beforeLoad' cause: 'preload' | 'enter' | 'stay' context: { userId: string } search: {} + matches: Array }>() return { invoiceId: 'invoiceId1' } }, @@ -856,6 +872,7 @@ test('when creating a child route with beforeLoad from a parent with beforeLoad' cause: 'preload' | 'enter' | 'stay' context: { userId: string; invoiceId: string } search: {} + matches: Array }>() return { detailId: 'detailId1' } }, @@ -899,6 +916,7 @@ test('when creating a child route with routeContext, beforeLoad, search, params, cause: 'preload' | 'enter' | 'stay' context: { userId: string } search: { page: number } + matches: Array }>() return { env: 'env1' } }, @@ -913,6 +931,7 @@ test('when creating a child route with routeContext, beforeLoad, search, params, cause: 'preload' | 'enter' | 'stay' context: { userId: string; env: string } search: { page: number } + matches: Array }>() return { invoicePermissions: ['view'] as const } }, @@ -942,6 +961,7 @@ test('when creating a child route with routeContext, beforeLoad, search, params, invoicePermissions: readonly ['view'] } search: { page: number; detailPage: number } + matches: Array }>() return { detailEnv: 'detailEnv' } }, @@ -961,6 +981,7 @@ test('when creating a child route with routeContext, beforeLoad, search, params, invoicePermissions: readonly ['view'] } search: { page: number; detailPage: number } + matches: Array }>() return { detailsPermissions: ['view'] as const } }, From 0d75025bb9183a8d9392baf1e89ded369da07ccd Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Wed, 4 Sep 2024 09:46:30 +1200 Subject: [PATCH 044/154] refactor(start): return JSON response when 'content-type' matches (#2259) * refactor(start): returning a JSON server error when content-type matches * refactor(start): reuse the isJson stuff --- packages/start/src/client-runtime/fetcher.tsx | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/packages/start/src/client-runtime/fetcher.tsx b/packages/start/src/client-runtime/fetcher.tsx index 9b5fc36302..1e4ef342bf 100644 --- a/packages/start/src/client-runtime/fetcher.tsx +++ b/packages/start/src/client-runtime/fetcher.tsx @@ -123,20 +123,30 @@ export async function fetcher( async function handleResponseErrors(response: Response) { if (!response.ok) { + const contentType = response.headers.get('content-type') + const isJson = contentType && contentType.includes('application/json') + const body = await (async () => { - const contentType = response.headers.get('content-type') - if (contentType && contentType.includes('application/json')) { + if (isJson) { return await response.json() } return await response.text() })() - throw new Error( - [ - `Request failed with status ${response.status}`, - `${JSON.stringify(body, null, 2)}`, - ].join('\n\n'), - ) + const message = `Request failed with status ${response.status}` + + if (isJson) { + throw new Error( + JSON.stringify({ + message, + body, + }), + ) + } else { + throw new Error( + [message, `${JSON.stringify(body, null, 2)}`].join('\n\n'), + ) + } } return response From 10abfc747c6551d1759760cbb22d1f823b5e2005 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Tue, 3 Sep 2024 21:50:23 +0000 Subject: [PATCH 045/154] release: v1.53.0 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 41 files changed, 90 insertions(+), 90 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 8d1f7cab00..7c1000a07a 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 99fd866632..e9882186ce 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 8769d60d03..cfb34eb69f 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 2fe06ec25a..2848efdda2 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index d7fd5e9176..5d4a3cca82 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 9a4cf57306..c7535a1aa3 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 37b4f070c8..ea9555cbf4 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.5", + "@tanstack/start": "^1.53.0", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index ff88197788..2334536cfd 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.5", + "@tanstack/start": "^1.53.0", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 2d9eddf0e4..e8eca50f2f 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index cf0961f086..2d2f3cb00f 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index ed6079b57c..433018d60d 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 58feb031cd..4095563b80 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 3295b66a79..36abeeff30 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 3ae4d1604d..14b012782c 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 8e214527c7..0833781cc7 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 9dad3ab1af..1161b9ece5 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index d1b6c30cab..cf86060878 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 0bc1e847e7..8334ee01ca 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 6a6fd35a94..58d14f062a 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 40912d8492..a8940028e4 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index d322d9ac0c..83ba6bad46 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 85e7a26f9b..540d8c99c7 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", + "@tanstack/react-router": "^1.53.0", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/router-devtools": "^1.53.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index c7dcf89d90..9e220895bd 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/router-zod-adapter": "^1.52.5", - "@tanstack/router-valibot-adapter": "^1.52.5", - "@tanstack/router-arktype-adapter": "^1.52.5", + "@tanstack/router-zod-adapter": "^1.53.0", + "@tanstack/router-valibot-adapter": "^1.53.0", + "@tanstack/router-arktype-adapter": "^1.53.0", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 57bd90a960..b62fe8dc6c 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.5", + "@tanstack/start": "^1.53.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 2b110ec131..47e4609bbb 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/start": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/start": "^1.53.0", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index c7999fe8f6..46b766f283 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.5", - "@tanstack/react-router-with-query": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/react-router-with-query": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.5", + "@tanstack/start": "^1.53.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 4688e8c5f8..89ad611d1f 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.5", + "@tanstack/start": "^1.53.0", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 41d1a570e2..65b1ea8524 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.5", + "@tanstack/start": "^1.53.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 9343915349..333c8d8353 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.5", + "@tanstack/start": "^1.53.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 21c47331cd..85f3b47a9b 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.5", - "@tanstack/react-router-with-query": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/react-router-with-query": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.5", + "@tanstack/start": "^1.53.0", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 7253c5d7e6..a04fe4a574 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.5", - "@tanstack/react-router-with-query": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/react-router-with-query": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.52.5", + "@tanstack/start": "^1.53.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 176b89fcf0..e0224ea3b5 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 13aca0af10..e61c2477c4 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 65bff05916..52b2fdccc5 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", + "@tanstack/react-router": "^1.53.0", + "@tanstack/router-devtools": "^1.53.0", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 8719d066c7..ba93c64579 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.52.5", + "version": "1.53.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 9388100d63..aef5ad1fc3 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.52.5", + "version": "1.53.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 88ab3f610c..477a1fad94 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.52.5", + "version": "1.53.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 44e26437fb..21713b59d2 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.52.5", + "version": "1.53.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 30c73bdb3e..30e7b3a4a4 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.52.5", + "version": "1.53.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 1c509a192d..569c87baee 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.52.5", + "version": "1.53.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index a2284b960e..9ab5454d94 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.52.5", + "version": "1.53.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From c984aa1e9f7d31ded0514ed2692a87f7c6d5c4a4 Mon Sep 17 00:00:00 2001 From: Binbin Date: Wed, 4 Sep 2024 18:16:43 +0900 Subject: [PATCH 046/154] fix(react-router): do not decode already escaped URL path segments (#2261) Closes #2046 --- packages/react-router/src/path.ts | 2 +- packages/react-router/tests/router.test.tsx | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/react-router/src/path.ts b/packages/react-router/src/path.ts index bc9ed21cf9..c77ea0987d 100644 --- a/packages/react-router/src/path.ts +++ b/packages/react-router/src/path.ts @@ -181,7 +181,7 @@ export function parsePathname(pathname?: string): Array { return { type: 'pathname', - value: decodeURIComponent(part), + value: decodeURI(part), } }), ) diff --git a/packages/react-router/tests/router.test.tsx b/packages/react-router/tests/router.test.tsx index 4c2f375331..29ebd08b77 100644 --- a/packages/react-router/tests/router.test.tsx +++ b/packages/react-router/tests/router.test.tsx @@ -383,11 +383,21 @@ describe('encoding: URL path segment', () => { output: '/path-segment/🚀', type: 'encoded', }, + { + input: '/path-segment/%F0%9F%9A%80to%2Fthe%2Fmoon', + output: '/path-segment/🚀to%2Fthe%2Fmoon', + type: 'encoded', + }, { input: '/path-segment/🚀', output: '/path-segment/🚀', type: 'not encoded', }, + { + input: '/path-segment/🚀to%2Fthe%2Fmoon', + output: '/path-segment/🚀to%2Fthe%2Fmoon', + type: 'not encoded', + }, ])( 'should resolve $input to $output when the path segment is $type', async ({ input, output }) => { From 0250d8972152faef81e26c53374a3c764845f598 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Wed, 4 Sep 2024 09:21:12 +0000 Subject: [PATCH 047/154] release: v1.53.1 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 41 files changed, 90 insertions(+), 90 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 7c1000a07a..2ac617c7f3 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index e9882186ce..8d441e50c9 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index cfb34eb69f..493efd962d 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 2848efdda2..448d829f17 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 5d4a3cca82..b93ad8f3f9 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index c7535a1aa3..9fba3a2724 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index ea9555cbf4..793ebeb3c4 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.0", + "@tanstack/start": "^1.53.1", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 2334536cfd..0eb75c2711 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.0", + "@tanstack/start": "^1.53.1", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index e8eca50f2f..55aff450d5 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 2d2f3cb00f..57061e6bd3 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 433018d60d..db8bb3bc4c 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 4095563b80..583113cee1 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 36abeeff30..cbaebaf12d 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 14b012782c..2cd3df12e3 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 0833781cc7..3624290b02 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 1161b9ece5..0cde132416 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index cf86060878..1cb12e5fad 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 8334ee01ca..a26969c3a3 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 58d14f062a..56fa74255d 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index a8940028e4..ac958d5a73 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 83ba6bad46..47f43afe83 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 540d8c99c7..ee1d86ffcc 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", + "@tanstack/react-router": "^1.53.1", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/router-devtools": "^1.53.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 9e220895bd..1f394fe56e 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/router-zod-adapter": "^1.53.0", - "@tanstack/router-valibot-adapter": "^1.53.0", - "@tanstack/router-arktype-adapter": "^1.53.0", + "@tanstack/router-zod-adapter": "^1.53.1", + "@tanstack/router-valibot-adapter": "^1.53.1", + "@tanstack/router-arktype-adapter": "^1.53.1", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index b62fe8dc6c..217ac4f941 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.0", + "@tanstack/start": "^1.53.1", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 47e4609bbb..5190d2a2d9 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/start": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/start": "^1.53.1", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 46b766f283..3ec4255777 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.0", - "@tanstack/react-router-with-query": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/react-router-with-query": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.0", + "@tanstack/start": "^1.53.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 89ad611d1f..0803638a35 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.0", + "@tanstack/start": "^1.53.1", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 65b1ea8524..6d15126b62 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.0", + "@tanstack/start": "^1.53.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 333c8d8353..ec182ffc08 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.0", + "@tanstack/start": "^1.53.1", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 85f3b47a9b..73a3ee4b8a 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.0", - "@tanstack/react-router-with-query": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/react-router-with-query": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.0", + "@tanstack/start": "^1.53.1", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index a04fe4a574..cbe328e47d 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.0", - "@tanstack/react-router-with-query": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/react-router-with-query": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.0", + "@tanstack/start": "^1.53.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index e0224ea3b5..2ff0d4e8fa 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index e61c2477c4..b19c3e4b21 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 52b2fdccc5..244cb62f34 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.53.0", - "@tanstack/router-devtools": "^1.53.0", + "@tanstack/react-router": "^1.53.1", + "@tanstack/router-devtools": "^1.53.1", "@tanstack/router-plugin": "^1.52.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index ba93c64579..62d9b869fa 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.53.0", + "version": "1.53.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index aef5ad1fc3..4da343f79c 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.53.0", + "version": "1.53.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 477a1fad94..180a80560a 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.53.0", + "version": "1.53.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 21713b59d2..34d842add0 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.53.0", + "version": "1.53.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 30e7b3a4a4..f0bc3c08de 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.53.0", + "version": "1.53.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 569c87baee..c37ccbf6e0 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.53.0", + "version": "1.53.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 9ab5454d94..e14e9ce96a 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.53.0", + "version": "1.53.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From a941696174c19913a7d66cce35877323051c8359 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Wed, 4 Sep 2024 23:37:02 +0200 Subject: [PATCH 048/154] feat(router-generator): custom route tree configuration based on virtual file routes (#2265) --- docs/config.json | 4 + docs/framework/react/comparison.md | 1 + .../react/guide/file-based-routing.md | 42 ++- docs/framework/react/guide/route-trees.md | 1 + .../react/guide/virtual-file-routes.md | 245 +++++++++++++++ .../react/basic-virtual-file-based/.gitignore | 10 + .../react/basic-virtual-file-based/README.md | 6 + .../react/basic-virtual-file-based/index.html | 24 ++ .../basic-virtual-file-based/package.json | 30 ++ .../playwright.config.ts | 29 ++ .../react/basic-virtual-file-based/routes.ts | 22 ++ .../basic-virtual-file-based/src/main.tsx | 25 ++ .../basic-virtual-file-based/src/posts.tsx | 32 ++ .../src/routeTree.gen.ts | 277 +++++++++++++++++ .../basic-virtual-file-based/src/routes/a.tsx | 9 + .../basic-virtual-file-based/src/routes/b.tsx | 9 + .../routes/file-based-subtree/hello/index.tsx | 5 + .../routes/file-based-subtree/hello/route.tsx | 27 ++ .../file-based-subtree/hello/universe.tsx | 5 + .../routes/file-based-subtree/hello/world.tsx | 5 + .../src/routes/home.tsx | 14 + .../src/routes/layout/first-layout.tsx | 16 + .../src/routes/layout/second-layout.tsx | 34 +++ .../src/routes/posts/posts-detail.tsx | 28 ++ .../src/routes/posts/posts-home.tsx | 10 + .../src/routes/posts/posts.tsx | 39 +++ .../src/routes/root.tsx | 70 +++++ .../tests/app.spec.ts | 34 +++ .../tsconfig.dev.json | 10 + .../basic-virtual-file-based/tsconfig.json | 9 + .../basic-virtual-file-based/vite.config.ts | 9 + .../src/routes/foo/bar.tsx | 7 + package.json | 1 + packages/router-generator/package.json | 3 +- packages/router-generator/src/config.ts | 2 + .../src/filesystem/physical/getRouteNodes.ts | 151 ++++++++++ .../src/filesystem/physical/rootPathId.ts | 1 + .../src/filesystem/virtual/config.ts | 45 +++ .../src/filesystem/virtual/getRouteNodes.ts | 141 +++++++++ packages/router-generator/src/generator.ts | 284 +++--------------- packages/router-generator/src/types.ts | 28 ++ packages/router-generator/src/utils.ts | 43 +++ .../router-generator/tests/generator.test.ts | 25 ++ .../generator/virtual/routeTree.snapshot.ts | 238 +++++++++++++++ .../virtual/routes/db/dashboard-index.tsx | 5 + .../virtual/routes/db/dashboard-invoices.tsx | 5 + .../generator/virtual/routes/db/dashboard.tsx | 5 + .../virtual/routes/db/invoice-detail.tsx | 5 + .../virtual/routes/db/invoices-index.tsx | 5 + .../tests/generator/virtual/routes/index.tsx | 5 + .../tests/generator/virtual/routes/layout.tsx | 5 + .../tests/generator/virtual/routes/root.tsx | 5 + .../virtual/routes/subtree/foo/$id.tsx | 5 + .../virtual/routes/subtree/foo/index.tsx | 5 + .../virtual/routes/subtree/index.tsx | 5 + packages/router-plugin/package.json | 1 + packages/virtual-file-routes/eslint.config.js | 5 + packages/virtual-file-routes/package.json | 57 ++++ packages/virtual-file-routes/src/api.ts | 81 +++++ packages/virtual-file-routes/src/index.ts | 9 + packages/virtual-file-routes/src/types.ts | 35 +++ packages/virtual-file-routes/tsconfig.json | 7 + packages/virtual-file-routes/vite.config.ts | 21 ++ pnpm-lock.yaml | 83 ++++- 64 files changed, 2148 insertions(+), 256 deletions(-) create mode 100644 docs/framework/react/guide/virtual-file-routes.md create mode 100644 examples/react/basic-virtual-file-based/.gitignore create mode 100644 examples/react/basic-virtual-file-based/README.md create mode 100644 examples/react/basic-virtual-file-based/index.html create mode 100644 examples/react/basic-virtual-file-based/package.json create mode 100644 examples/react/basic-virtual-file-based/playwright.config.ts create mode 100644 examples/react/basic-virtual-file-based/routes.ts create mode 100644 examples/react/basic-virtual-file-based/src/main.tsx create mode 100644 examples/react/basic-virtual-file-based/src/posts.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routeTree.gen.ts create mode 100644 examples/react/basic-virtual-file-based/src/routes/a.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routes/b.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/index.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/route.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/universe.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/world.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routes/home.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routes/layout/first-layout.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routes/layout/second-layout.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routes/posts/posts-detail.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routes/posts/posts-home.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routes/posts/posts.tsx create mode 100644 examples/react/basic-virtual-file-based/src/routes/root.tsx create mode 100644 examples/react/basic-virtual-file-based/tests/app.spec.ts create mode 100644 examples/react/basic-virtual-file-based/tsconfig.dev.json create mode 100644 examples/react/basic-virtual-file-based/tsconfig.json create mode 100644 examples/react/basic-virtual-file-based/vite.config.ts create mode 100644 examples/react/kitchen-sink-react-query-file-based/src/routes/foo/bar.tsx create mode 100644 packages/router-generator/src/filesystem/physical/getRouteNodes.ts create mode 100644 packages/router-generator/src/filesystem/physical/rootPathId.ts create mode 100644 packages/router-generator/src/filesystem/virtual/config.ts create mode 100644 packages/router-generator/src/filesystem/virtual/getRouteNodes.ts create mode 100644 packages/router-generator/src/types.ts create mode 100644 packages/router-generator/tests/generator/virtual/routeTree.snapshot.ts create mode 100644 packages/router-generator/tests/generator/virtual/routes/db/dashboard-index.tsx create mode 100644 packages/router-generator/tests/generator/virtual/routes/db/dashboard-invoices.tsx create mode 100644 packages/router-generator/tests/generator/virtual/routes/db/dashboard.tsx create mode 100644 packages/router-generator/tests/generator/virtual/routes/db/invoice-detail.tsx create mode 100644 packages/router-generator/tests/generator/virtual/routes/db/invoices-index.tsx create mode 100644 packages/router-generator/tests/generator/virtual/routes/index.tsx create mode 100644 packages/router-generator/tests/generator/virtual/routes/layout.tsx create mode 100644 packages/router-generator/tests/generator/virtual/routes/root.tsx create mode 100644 packages/router-generator/tests/generator/virtual/routes/subtree/foo/$id.tsx create mode 100644 packages/router-generator/tests/generator/virtual/routes/subtree/foo/index.tsx create mode 100644 packages/router-generator/tests/generator/virtual/routes/subtree/index.tsx create mode 100644 packages/virtual-file-routes/eslint.config.js create mode 100644 packages/virtual-file-routes/package.json create mode 100644 packages/virtual-file-routes/src/api.ts create mode 100644 packages/virtual-file-routes/src/index.ts create mode 100644 packages/virtual-file-routes/src/types.ts create mode 100644 packages/virtual-file-routes/tsconfig.json create mode 100644 packages/virtual-file-routes/vite.config.ts diff --git a/docs/config.json b/docs/config.json index 93e3e287b7..622eed2b7e 100644 --- a/docs/config.json +++ b/docs/config.json @@ -72,6 +72,10 @@ "label": "File-Based Routing", "to": "framework/react/guide/file-based-routing" }, + { + "label": "Virtual File Routes", + "to": "framework/react/guide/virtual-file-routes" + }, { "label": "Code Based Routing", "to": "framework/react/guide/code-based-routing" diff --git a/docs/framework/react/comparison.md b/docs/framework/react/comparison.md index e7cce153b3..56ba0e41cc 100644 --- a/docs/framework/react/comparison.md +++ b/docs/framework/react/comparison.md @@ -25,6 +25,7 @@ Feature/Capability Key: | Typesafe Routes | ✅ | 🛑 | 🟡 | | Code-based Routes | ✅ | ✅ | 🛑 | | File-based Routes | ✅ | ✅ | ✅ | +| Virtual/Programmatic File-based Routes | ✅ | ✅ | 🛑 | | Router Loaders | ✅ | ✅ | ✅ | | SWR Loader Caching | ✅ | 🛑 | ✅ | | Route Prefetching | ✅ | ✅ | ✅ | diff --git a/docs/framework/react/guide/file-based-routing.md b/docs/framework/react/guide/file-based-routing.md index ac93d9ec5a..f1986a9752 100644 --- a/docs/framework/react/guide/file-based-routing.md +++ b/docs/framework/react/guide/file-based-routing.md @@ -87,6 +87,44 @@ It's extremely likely that a 100% directory or flat route structure won't be the Both flat and directory routes can be mixed together to create a route tree that uses the best of both worlds where it makes sense. +## Virtual File Routes + +> We'd like to thank the Remix team for [pioneering the concept of virtual file routes](https://www.youtube.com/watch?v=fjTX8hQTlEc&t=730s). We've taken inspiration from their work and adapted it to work with TanStack Router's existing file-based route-tree generation. + +Virtual file routes are a powerful concept that allows you to build a route tree programmatically using code that references real files in your project. This can be useful if: + +- You have an existing route organization that you want to keep. +- You want to customize the location of your route files. +- You want to completely override TanStack Router's file-based route generation and build your own convention. + +Here's a quick example of using virtual file routes to map a route tree to a set of real files in your project: + +```tsx +import { + rootRoute, + route, + index, + layout, + physical, +} from '@tanstack/virtual-file-routes' + +const virtualRouteConfig = rootRoute('root.tsx', [ + index('index.tsx'), + layout('layout.tsx', [ + route('/dashboard', 'app/dashboard.tsx', [ + index('app/dashboard-index.tsx'), + route('/invoices', 'app/dashboard-invoices.tsx', [ + index('app/invoices-index.tsx'), + route('$id', 'app/invoice-detail.tsx'), + ]), + ]), + physical('/posts', 'posts'), + ]), +]) +``` + +For more information on how to configure virtual file routes, see the [Virtual File Routes](./virtual-file-routes) guide. + ## Dynamic Path Params Dynamic path params can be used in both flat and directory routes to create routes that can match a dynamic segment of the URL path. Dynamic path params are denoted by the `$` character in the filename: @@ -132,10 +170,10 @@ File-based routing requires that you follow a few simple file naming conventions - **`(folder)` folder name pattern**: - A folder that matches this pattern is treated as a **route group** which prevents this folder to be included in the route's URL path. - **`index` Token** - - Routes segments ending with the `index` token (but before any file types) will be used to match the parent route when the URL pathname matches the parent route exactly. + - Routes segments ending with the `index` token (but before any file types) will be used to match the parent route when the URL pathname matches the parent route exactly. This can be configured via the `indexToken` configuration option, see [options](#options). - **`.route.tsx` File Type** - - When using directories to organize your routes, the `route` suffix can be used to create a route file at the directory's path. For example, `blog.post.route.tsx` or `blog/post/route.tsx` can be used at the route file for the `/blog/post` route. + - When using directories to organize your routes, the `route` suffix can be used to create a route file at the directory's path. For example, `blog.post.route.tsx` or `blog/post/route.tsx` can be used at the route file for the `/blog/post` route. This can be configured via the `routeToken` configuration option, see [options](#options). - **`.lazy.tsx` File Type** - The `lazy` suffix can be used to code-split components for a route. For example, `blog.post.lazy.tsx` will be used as the component for the `blog.post` route. diff --git a/docs/framework/react/guide/route-trees.md b/docs/framework/react/guide/route-trees.md index b9ed2231f0..eb29a7e93c 100644 --- a/docs/framework/react/guide/route-trees.md +++ b/docs/framework/react/guide/route-trees.md @@ -64,6 +64,7 @@ Route trees can be configured using a few different ways: - [Flat Routes](./file-based-routing.md#flat-routes) - [Directories](./file-based-routing.md#directory-routes) - [Mixed Flat Routes and Directories](./file-based-routing.md#mixed-flat-and-directory-routes) +- [Virtual File Routes](./file-based-routing.md#virtual-file-routes) - [Code-Based Routes](./code-based-routing.md) Please be sure to check out the full documentation links above for each type of route tree, or just proceed to the next section to get started with file-based routing. diff --git a/docs/framework/react/guide/virtual-file-routes.md b/docs/framework/react/guide/virtual-file-routes.md new file mode 100644 index 0000000000..f9f153999e --- /dev/null +++ b/docs/framework/react/guide/virtual-file-routes.md @@ -0,0 +1,245 @@ +--- +id: virtual-file-routes +title: Virtual File Routes +--- + +> We'd like to thank the Remix team for [pioneering the concept of virtual file routes](https://www.youtube.com/watch?v=fjTX8hQTlEc&t=730s). We've taken inspiration from their work and adapted it to work with TanStack Router's existing file-based route-tree generation. + +Virtual file routes are a powerful concept that allows you to build a route tree programmatically using code that references real files in your project. This can be useful if: + +- You have an existing route organization that you want to keep. +- You want to customize the location of your route files. +- You want to completely override TanStack Router's file-based route generation and build your own convention. + +Here's a quick example of using virtual file routes to map a route tree to a set of real files in your project: + +```tsx +import { + rootRoute, + route, + index, + layout, + physical, +} from '@tanstack/virtual-file-routes' + +const virtualRouteConfig = rootRoute('root.tsx', [ + index('index.tsx'), + layout('layout.tsx', [ + route('/dashboard', 'app/dashboard.tsx', [ + index('app/dashboard-index.tsx'), + route('/invoices', 'app/dashboard-invoices.tsx', [ + index('app/invoices-index.tsx'), + route('$id', 'app/invoice-detail.tsx'), + ]), + ]), + physical('/posts', 'posts'), + ]), +]) +``` + +## Configuration + +Virtual file routes can be configured either via: + +- The `TanStackRouter` plugin for Vite/Rspack/Webpack +- The `tsr.config.json` file for the TanStack Router CLI + +## Configuration via the TanStackRouter Plugin + +If you're using the `TanStackRouter` plugin for Vite/Rspack/Webpack, you can configure virtual file routes by passing a `virtualRoutesConfig` option to the plugin: + +```tsx +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import { TanStackRouterVite } from '@tanstack/router-plugin/vite' +import { rootRoute } from '@tanstack/virtual-file-routes' + +const routes = rootRoute('root.tsx', [ + // ... the rest of your virtual route tree +]) + +export default defineConfig({ + plugins: [TanStackRouterVite({ virtualRouteConfig: routes }), react()], +}) +``` + +## Creating Virtual File Routes + +To create virtual file routes, you'll need to import the `@tanstack/virtual-file-routes` package. This package provides a set of functions that allow you to create virtual routes that reference real files in your project. A few utility functions are exported from the package: + +- `rootRoute` - Creates a virtual root route. +- `route` - Creates a virtual route. +- `index` - Creates a virtual index route. +- `layout` - Creates a virtual layout route. +- `physical` - Creates a physical virtual route (more on this later). + +## Virtual Root Route + +The `rootRoute` function is used to create a virtual root route. It takes a file name and an array of children routes. Here's an example of a virtual root route: + +```tsx +import { rootRoute } from '@tanstack/virtual-file-routes' + +const virtualRouteConfig = rootRoute('root.tsx', [ + // ... children routes +]) +``` + +## Virtual Route + +The `route` function is used to create a virtual route. It takes a path, a file name, and an array of children routes. Here's an example of a virtual route: + +```tsx +import { route } from '@tanstack/virtual-file-routes' + +const virtualRouteConfig = rootRoute('root.tsx', [ + route('/about', 'about.tsx', [ + // ... children routes + ]), +]) +``` + +## Virtual Index Route + +The `index` function is used to create a virtual index route. It takes a file name. Here's an example of a virtual index route: + +```tsx +import { index } from '@tanstack/virtual-file-routes' + +const virtualRouteConfig = rootRoute('root.tsx', [index('index.tsx')]) +``` + +## Virtual Layout Route + +The `layout` function is used to create a virtual layout route. It takes a file name, an array of children routes, and an optional layout ID. Here's an example of a virtual layout route: + +```tsx +import { layout } from '@tanstack/virtual-file-routes' + +const virtualRouteConfig = rootRoute('root.tsx', [ + layout('layout.tsx', [ + // ... children routes + ]), +]) +``` + +You can also specify a layout ID to give the layout a unique identifier that is different from the filename: + +```tsx +import { layout } from '@tanstack/virtual-file-routes' + +const virtualRouteConfig = rootRoute('root.tsx', [ + layout('my-layout-id', 'layout.tsx', [ + // ... children routes + ]), +]) +``` + +## Physical Virtual Routes + +Physical virtual routes are a way to "mount" a directory of good ol' TanStack Router File Based routing convention under a specific URL path. This can be useful if you are using virtual routes to customize a small portion of your route tree high up in the hierarchy, but want to use the standard file-based routing convention for sub-routes and directories. + +Consider the following file structure: + +``` +/routes +├── root.tsx +├── index.tsx +├── layout.tsx +├── app +│ ├── dashboard.tsx +│ ├── dashboard-index.tsx +│ ├── dashboard-invoices.tsx +│ ├── invoices-index.tsx +│ ├── invoice-detail.tsx +└── posts + ├── index.tsx + ├── $postId.tsx + ├── $postId.edit.tsx + ├── comments/ + │ ├── index.tsx + │ ├── $commentId.tsx + └── likes/ + ├── index.tsx + ├── $likeId.tsx +``` + +Let's use virtual routes to customize our route tree for everything but `posts`, then use physical virtual routes to mount the `posts` directory under the `/posts` path: + +```tsx +const virtualRouteConfig = rootRoute('root.tsx', [ + // Set up your virtual routes as normal + index('index.tsx'), + layout('layout.tsx', [ + route('/dashboard', 'app/dashboard.tsx', [ + index('app/dashboard-index.tsx'), + route('/invoices', 'app/dashboard-invoices.tsx', [ + index('app/invoices-index.tsx'), + route('$id', 'app/invoice-detail.tsx'), + ]), + ]), + // Mount the `posts` directory under the `/posts` path + physical('/posts', 'posts'), + ]), +]) +``` + +## Configuration via the TanStack Router CLI + +While much less common, you can also configure virtual file routes via the TanStack Router CLI by adding a `virtualRouteConfig` object to your `tsr.config.json` file and defining your virtual routes and passing the resulting JSON that is generated by calling the actual `rootRoute`/`route`/`index`/etc functions from the `@tanstack/virtual-file-routes` package: + +```json +// tsr.config.json +{ + "virtualRouteConfig": { + "type": "root", + "file": "root.tsx", + "children": [ + { + "type": "index", + "file": "home.tsx" + }, + { + "type": "route", + "file": "posts/posts.tsx", + "path": "/posts", + "children": [ + { + "type": "index", + "file": "posts/posts-home.tsx" + }, + { + "type": "route", + "file": "posts/posts-detail.tsx", + "path": "$postId" + } + ] + }, + { + "type": "layout", + "id": "first", + "file": "layout/first-layout.tsx", + "children": [ + { + "type": "layout", + "id": "second", + "file": "layout/second-layout.tsx", + "children": [ + { + "type": "route", + "file": "a.tsx", + "path": "/layout-a" + }, + { + "type": "route", + "file": "b.tsx", + "path": "/layout-b" + } + ] + } + ] + } + ] + } +} +``` diff --git a/examples/react/basic-virtual-file-based/.gitignore b/examples/react/basic-virtual-file-based/.gitignore new file mode 100644 index 0000000000..a6ea47e508 --- /dev/null +++ b/examples/react/basic-virtual-file-based/.gitignore @@ -0,0 +1,10 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local + +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/examples/react/basic-virtual-file-based/README.md b/examples/react/basic-virtual-file-based/README.md new file mode 100644 index 0000000000..115199d292 --- /dev/null +++ b/examples/react/basic-virtual-file-based/README.md @@ -0,0 +1,6 @@ +# Example + +To run this example: + +- `npm install` or `yarn` +- `npm start` or `yarn start` diff --git a/examples/react/basic-virtual-file-based/index.html b/examples/react/basic-virtual-file-based/index.html new file mode 100644 index 0000000000..a4b3349437 --- /dev/null +++ b/examples/react/basic-virtual-file-based/index.html @@ -0,0 +1,24 @@ + + + + + + Vite App + + + + +
+ + + diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json new file mode 100644 index 0000000000..6205f9540d --- /dev/null +++ b/examples/react/basic-virtual-file-based/package.json @@ -0,0 +1,30 @@ +{ + "name": "tanstack-router-react-example-basic-virtual-file-based", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --port=3001", + "build": "vite build", + "serve": "vite preview", + "start": "vite", + "test:e2e": "playwright test --project=chromium" + }, + "dependencies": { + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", + "@tanstack/router-plugin": "^1.52.0", + "@tanstack/virtual-file-routes": "^1.52.5", + "immer": "^10.1.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "redaxios": "^0.5.1", + "zod": "^3.23.8" + }, + "devDependencies": { + "@playwright/test": "^1.46.1", + "@types/react": "^18.2.47", + "@types/react-dom": "^18.2.18", + "@vitejs/plugin-react": "^4.3.1", + "vite": "^5.3.5" + } +} diff --git a/examples/react/basic-virtual-file-based/playwright.config.ts b/examples/react/basic-virtual-file-based/playwright.config.ts new file mode 100644 index 0000000000..f83eacf129 --- /dev/null +++ b/examples/react/basic-virtual-file-based/playwright.config.ts @@ -0,0 +1,29 @@ +import { defineConfig, devices } from '@playwright/test' + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './tests', + + reporter: [['line']], + + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL: 'http://localhost:3001/', + }, + + webServer: { + command: 'pnpm run dev', + url: 'http://localhost:3001', + reuseExistingServer: !process.env.CI, + stdout: 'pipe', + }, + + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + ], +}) diff --git a/examples/react/basic-virtual-file-based/routes.ts b/examples/react/basic-virtual-file-based/routes.ts new file mode 100644 index 0000000000..6c2c144ec5 --- /dev/null +++ b/examples/react/basic-virtual-file-based/routes.ts @@ -0,0 +1,22 @@ +import { + index, + layout, + physical, + rootRoute, + route, +} from '@tanstack/virtual-file-routes' + +export const routes = rootRoute('root.tsx', [ + index('home.tsx'), + route('/posts', 'posts/posts.tsx', [ + index('posts/posts-home.tsx'), + route('$postId', 'posts/posts-detail.tsx'), + ]), + layout('first', 'layout/first-layout.tsx', [ + layout('second', 'layout/second-layout.tsx', [ + route('/layout-a', 'a.tsx'), + route('/layout-b', 'b.tsx'), + ]), + ]), + physical('/classic', 'file-based-subtree'), +]) diff --git a/examples/react/basic-virtual-file-based/src/main.tsx b/examples/react/basic-virtual-file-based/src/main.tsx new file mode 100644 index 0000000000..18b1b603f8 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/main.tsx @@ -0,0 +1,25 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import { RouterProvider, createRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' + +// Set up a Router instance +const router = createRouter({ + routeTree, + defaultPreload: 'intent', + defaultStaleTime: 5000, +}) + +// Register things for typesafety +declare module '@tanstack/react-router' { + interface Register { + router: typeof router + } +} + +const rootElement = document.getElementById('app')! + +if (!rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement) + root.render() +} diff --git a/examples/react/basic-virtual-file-based/src/posts.tsx b/examples/react/basic-virtual-file-based/src/posts.tsx new file mode 100644 index 0000000000..3ccf1ff421 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/posts.tsx @@ -0,0 +1,32 @@ +import { notFound } from '@tanstack/react-router' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPost = async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + await new Promise((r) => setTimeout(r, 500)) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + if (err.status === 404) { + throw notFound() + } + throw err + }) + + return post +} + +export const fetchPosts = async () => { + console.info('Fetching posts...') + await new Promise((r) => setTimeout(r, 500)) + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +} diff --git a/examples/react/basic-virtual-file-based/src/routeTree.gen.ts b/examples/react/basic-virtual-file-based/src/routeTree.gen.ts new file mode 100644 index 0000000000..0b6af24d47 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routeTree.gen.ts @@ -0,0 +1,277 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/root' +import { Route as postsPostsImport } from './routes/posts/posts' +import { Route as layoutFirstLayoutImport } from './routes/layout/first-layout' +import { Route as homeImport } from './routes/home' +import { Route as postsPostsDetailImport } from './routes/posts/posts-detail' +import { Route as layoutSecondLayoutImport } from './routes/layout/second-layout' +import { Route as postsPostsHomeImport } from './routes/posts/posts-home' +import { Route as ClassicHelloRouteImport } from './routes/file-based-subtree/hello/route' +import { Route as ClassicHelloIndexImport } from './routes/file-based-subtree/hello/index' +import { Route as ClassicHelloWorldImport } from './routes/file-based-subtree/hello/world' +import { Route as ClassicHelloUniverseImport } from './routes/file-based-subtree/hello/universe' +import { Route as bImport } from './routes/b' +import { Route as aImport } from './routes/a' + +// Create/Update Routes + +const postsPostsRoute = postsPostsImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const layoutFirstLayoutRoute = layoutFirstLayoutImport.update({ + id: '/_first', + getParentRoute: () => rootRoute, +} as any) + +const homeRoute = homeImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const postsPostsDetailRoute = postsPostsDetailImport.update({ + path: '/$postId', + getParentRoute: () => postsPostsRoute, +} as any) + +const layoutSecondLayoutRoute = layoutSecondLayoutImport.update({ + id: '/_second', + getParentRoute: () => layoutFirstLayoutRoute, +} as any) + +const postsPostsHomeRoute = postsPostsHomeImport.update({ + path: '/', + getParentRoute: () => postsPostsRoute, +} as any) + +const ClassicHelloRouteRoute = ClassicHelloRouteImport.update({ + path: '/classic/hello', + getParentRoute: () => rootRoute, +} as any) + +const ClassicHelloIndexRoute = ClassicHelloIndexImport.update({ + path: '/', + getParentRoute: () => ClassicHelloRouteRoute, +} as any) + +const ClassicHelloWorldRoute = ClassicHelloWorldImport.update({ + path: '/world', + getParentRoute: () => ClassicHelloRouteRoute, +} as any) + +const ClassicHelloUniverseRoute = ClassicHelloUniverseImport.update({ + path: '/universe', + getParentRoute: () => ClassicHelloRouteRoute, +} as any) + +const bRoute = bImport.update({ + path: '/layout-b', + getParentRoute: () => layoutSecondLayoutRoute, +} as any) + +const aRoute = aImport.update({ + path: '/layout-a', + getParentRoute: () => layoutSecondLayoutRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof homeImport + parentRoute: typeof rootRoute + } + '/_first': { + id: '/_first' + path: '' + fullPath: '' + preLoaderRoute: typeof layoutFirstLayoutImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof postsPostsImport + parentRoute: typeof rootRoute + } + '/classic/hello': { + id: '/classic/hello' + path: '/classic/hello' + fullPath: '/classic/hello' + preLoaderRoute: typeof ClassicHelloRouteImport + parentRoute: typeof rootRoute + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof postsPostsHomeImport + parentRoute: typeof postsPostsImport + } + '/_first/_second': { + id: '/_first/_second' + path: '' + fullPath: '' + preLoaderRoute: typeof layoutSecondLayoutImport + parentRoute: typeof layoutFirstLayoutImport + } + '/posts/$postId': { + id: '/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof postsPostsDetailImport + parentRoute: typeof postsPostsImport + } + '/_first/_second/layout-a': { + id: '/_first/_second/layout-a' + path: '/layout-a' + fullPath: '/layout-a' + preLoaderRoute: typeof aImport + parentRoute: typeof layoutSecondLayoutImport + } + '/_first/_second/layout-b': { + id: '/_first/_second/layout-b' + path: '/layout-b' + fullPath: '/layout-b' + preLoaderRoute: typeof bImport + parentRoute: typeof layoutSecondLayoutImport + } + '/classic/hello/universe': { + id: '/classic/hello/universe' + path: '/universe' + fullPath: '/classic/hello/universe' + preLoaderRoute: typeof ClassicHelloUniverseImport + parentRoute: typeof ClassicHelloRouteImport + } + '/classic/hello/world': { + id: '/classic/hello/world' + path: '/world' + fullPath: '/classic/hello/world' + preLoaderRoute: typeof ClassicHelloWorldImport + parentRoute: typeof ClassicHelloRouteImport + } + '/classic/hello/': { + id: '/classic/hello/' + path: '/' + fullPath: '/classic/hello/' + preLoaderRoute: typeof ClassicHelloIndexImport + parentRoute: typeof ClassicHelloRouteImport + } + } +} + +// Create and export the route tree + +export const routeTree = rootRoute.addChildren({ + homeRoute, + layoutFirstLayoutRoute: layoutFirstLayoutRoute.addChildren({ + layoutSecondLayoutRoute: layoutSecondLayoutRoute.addChildren({ + aRoute, + bRoute, + }), + }), + postsPostsRoute: postsPostsRoute.addChildren({ + postsPostsHomeRoute, + postsPostsDetailRoute, + }), + ClassicHelloRouteRoute: ClassicHelloRouteRoute.addChildren({ + ClassicHelloUniverseRoute, + ClassicHelloWorldRoute, + ClassicHelloIndexRoute, + }), +}) + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "root.tsx", + "children": [ + "/", + "/_first", + "/posts", + "/classic/hello" + ] + }, + "/": { + "filePath": "home.tsx" + }, + "/_first": { + "filePath": "layout/first-layout.tsx", + "children": [ + "/_first/_second" + ] + }, + "/posts": { + "filePath": "posts/posts.tsx", + "children": [ + "/posts/", + "/posts/$postId" + ] + }, + "/classic/hello": { + "filePath": "file-based-subtree/hello/route.tsx", + "children": [ + "/classic/hello/universe", + "/classic/hello/world", + "/classic/hello/" + ] + }, + "/posts/": { + "filePath": "posts/posts-home.tsx", + "parent": "/posts" + }, + "/_first/_second": { + "filePath": "layout/second-layout.tsx", + "parent": "/_first", + "children": [ + "/_first/_second/layout-a", + "/_first/_second/layout-b" + ] + }, + "/posts/$postId": { + "filePath": "posts/posts-detail.tsx", + "parent": "/posts" + }, + "/_first/_second/layout-a": { + "filePath": "a.tsx", + "parent": "/_first/_second" + }, + "/_first/_second/layout-b": { + "filePath": "b.tsx", + "parent": "/_first/_second" + }, + "/classic/hello/universe": { + "filePath": "file-based-subtree/hello/universe.tsx", + "parent": "/classic/hello" + }, + "/classic/hello/world": { + "filePath": "file-based-subtree/hello/world.tsx", + "parent": "/classic/hello" + }, + "/classic/hello/": { + "filePath": "file-based-subtree/hello/index.tsx", + "parent": "/classic/hello" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/examples/react/basic-virtual-file-based/src/routes/a.tsx b/examples/react/basic-virtual-file-based/src/routes/a.tsx new file mode 100644 index 0000000000..6cccd02950 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/a.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_first/_second/layout-a')({ + component: LayoutAComponent, +}) + +function LayoutAComponent() { + return
I'm layout A!
+} diff --git a/examples/react/basic-virtual-file-based/src/routes/b.tsx b/examples/react/basic-virtual-file-based/src/routes/b.tsx new file mode 100644 index 0000000000..98bb842612 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/b.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_first/_second/layout-b')({ + component: LayoutBComponent, +}) + +function LayoutBComponent() { + return
I'm layout B!
+} diff --git a/examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/index.tsx b/examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/index.tsx new file mode 100644 index 0000000000..7a6d5e3bd3 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/index.tsx @@ -0,0 +1,5 @@ +import { Link, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/classic/hello/')({ + component: () =>
This is the index
, +}) diff --git a/examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/route.tsx b/examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/route.tsx new file mode 100644 index 0000000000..566efc8777 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/route.tsx @@ -0,0 +1,27 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/classic/hello')({ + component: () => ( +
+ Hello! +
{' '} + + say hello to the universe + {' '} + + say hello to the world + + +
+ ), +}) diff --git a/examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/universe.tsx b/examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/universe.tsx new file mode 100644 index 0000000000..e00c47d74b --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/universe.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/classic/hello/universe')({ + component: () =>
Hello /classic/hello/universe!
, +}) diff --git a/examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/world.tsx b/examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/world.tsx new file mode 100644 index 0000000000..9783557342 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/file-based-subtree/hello/world.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/classic/hello/world')({ + component: () =>
Hello /classic/hello/world!
, +}) diff --git a/examples/react/basic-virtual-file-based/src/routes/home.tsx b/examples/react/basic-virtual-file-based/src/routes/home.tsx new file mode 100644 index 0000000000..eac82a9174 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/home.tsx @@ -0,0 +1,14 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!

+
+ ) +} diff --git a/examples/react/basic-virtual-file-based/src/routes/layout/first-layout.tsx b/examples/react/basic-virtual-file-based/src/routes/layout/first-layout.tsx new file mode 100644 index 0000000000..d39e206f2d --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/layout/first-layout.tsx @@ -0,0 +1,16 @@ +import { Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_first')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a layout
+
+ +
+
+ ) +} diff --git a/examples/react/basic-virtual-file-based/src/routes/layout/second-layout.tsx b/examples/react/basic-virtual-file-based/src/routes/layout/second-layout.tsx new file mode 100644 index 0000000000..ef178a6e16 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/layout/second-layout.tsx @@ -0,0 +1,34 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_first/_second')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a nested layout
+
+ + Layout A + + + Layout B + +
+
+ +
+
+ ) +} diff --git a/examples/react/basic-virtual-file-based/src/routes/posts/posts-detail.tsx b/examples/react/basic-virtual-file-based/src/routes/posts/posts-detail.tsx new file mode 100644 index 0000000000..948d52d6d6 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/posts/posts-detail.tsx @@ -0,0 +1,28 @@ +import * as React from 'react' +import { ErrorComponent, createFileRoute } from '@tanstack/react-router' +import { fetchPost } from '../../posts' +import type { ErrorComponentProps } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/$postId')({ + loader: async ({ params: { postId } }) => fetchPost(postId), + errorComponent: PostErrorComponent as any, + notFoundComponent: () => { + return

Post not found

+ }, + component: PostComponent, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const post = Route.useLoaderData() + + return ( +
+

{post.title}

+
{post.body}
+
+ ) +} diff --git a/examples/react/basic-virtual-file-based/src/routes/posts/posts-home.tsx b/examples/react/basic-virtual-file-based/src/routes/posts/posts-home.tsx new file mode 100644 index 0000000000..056433ca0a --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/posts/posts-home.tsx @@ -0,0 +1,10 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/examples/react/basic-virtual-file-based/src/routes/posts/posts.tsx b/examples/react/basic-virtual-file-based/src/routes/posts/posts.tsx new file mode 100644 index 0000000000..a2ab1ee388 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/posts/posts.tsx @@ -0,0 +1,39 @@ +import * as React from 'react' +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { fetchPosts } from '../../posts' + +export const Route = createFileRoute('/posts')({ + loader: fetchPosts, + component: PostsComponent, +}) + +function PostsComponent() { + const posts = Route.useLoaderData() + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+
+ +
+ ) +} diff --git a/examples/react/basic-virtual-file-based/src/routes/root.tsx b/examples/react/basic-virtual-file-based/src/routes/root.tsx new file mode 100644 index 0000000000..bd82cdf6a5 --- /dev/null +++ b/examples/react/basic-virtual-file-based/src/routes/root.tsx @@ -0,0 +1,70 @@ +import * as React from 'react' +import { Link, Outlet, createRootRoute } from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' + +export const Route = createRootRoute({ + component: RootComponent, + notFoundComponent: () => { + return ( +
+

This is the notFoundComponent configured on root route

+ Start Over +
+ ) + }, +}) + +function RootComponent() { + return ( + <> +
+ + Home + {' '} + + Posts + {' '} + + Layout + {' '} + + Subtree + {' '} + + This Route Does Not Exist + +
+
+ + {/* Start rendering router matches */} + + + ) +} diff --git a/examples/react/basic-virtual-file-based/tests/app.spec.ts b/examples/react/basic-virtual-file-based/tests/app.spec.ts new file mode 100644 index 0000000000..f19a88b569 --- /dev/null +++ b/examples/react/basic-virtual-file-based/tests/app.spec.ts @@ -0,0 +1,34 @@ +import { expect, test } from '@playwright/test' + +test.beforeEach(async ({ page }) => { + await page.goto('/') +}) + +test('Navigating to a post page', async ({ page }) => { + await page.getByRole('link', { name: 'Posts' }).click() + await page.getByRole('link', { name: 'sunt aut facere repe' }).click() + await expect(page.getByRole('heading')).toContainText('sunt aut facere') +}) + +test('Navigating nested layouts', async ({ page }) => { + await page.goto('/') + await page.getByRole('link', { name: 'Layout', exact: true }).click() + + await expect(page.locator('#app')).toContainText("I'm a layout") + await expect(page.locator('#app')).toContainText("I'm a nested layout") + + await page.getByRole('link', { name: 'Layout A' }).click() + await expect(page.locator('#app')).toContainText("I'm layout A!") + + await page.getByRole('link', { name: 'Layout B' }).click() + await expect(page.locator('#app')).toContainText("I'm layout B!") +}) + +test('Navigating to a not-found route', async ({ page }) => { + await page.getByRole('link', { name: 'This Route Does Not Exist' }).click() + await expect(page.getByRole('paragraph')).toContainText( + 'This is the notFoundComponent configured on root route', + ) + await page.getByRole('link', { name: 'Start Over' }).click() + await expect(page.getByRole('heading')).toContainText('Welcome Home!') +}) diff --git a/examples/react/basic-virtual-file-based/tsconfig.dev.json b/examples/react/basic-virtual-file-based/tsconfig.dev.json new file mode 100644 index 0000000000..285a09b0dc --- /dev/null +++ b/examples/react/basic-virtual-file-based/tsconfig.dev.json @@ -0,0 +1,10 @@ +{ + "composite": true, + "extends": "../../../tsconfig.base.json", + + "files": ["src/main.tsx"], + "include": [ + "src" + // "__tests__/**/*.test.*" + ] +} diff --git a/examples/react/basic-virtual-file-based/tsconfig.json b/examples/react/basic-virtual-file-based/tsconfig.json new file mode 100644 index 0000000000..e2241c355e --- /dev/null +++ b/examples/react/basic-virtual-file-based/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "Preserve", + "moduleResolution": "Bundler" + } +} diff --git a/examples/react/basic-virtual-file-based/vite.config.ts b/examples/react/basic-virtual-file-based/vite.config.ts new file mode 100644 index 0000000000..c1b8574783 --- /dev/null +++ b/examples/react/basic-virtual-file-based/vite.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import { TanStackRouterVite } from '@tanstack/router-plugin/vite' +import { routes } from './routes' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [TanStackRouterVite({ virtualRouteConfig: routes }), react()], +}) diff --git a/examples/react/kitchen-sink-react-query-file-based/src/routes/foo/bar.tsx b/examples/react/kitchen-sink-react-query-file-based/src/routes/foo/bar.tsx new file mode 100644 index 0000000000..aa5920563e --- /dev/null +++ b/examples/react/kitchen-sink-react-query-file-based/src/routes/foo/bar.tsx @@ -0,0 +1,7 @@ +import { createFileRoute } from '@tanstack/react-router' +import { z } from 'zod' + +export const Route = createFileRoute('/foo/bar')({ + component: () =>
{JSON.stringify(Route.useSearch())}
, + validateSearch: z.object({ asdf: z.string() }), +}) diff --git a/package.json b/package.json index 44b3571145..9365571e39 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ "@tanstack/router-cli": "workspace:*", "@tanstack/router-devtools": "workspace:*", "@tanstack/router-generator": "workspace:*", + "@tanstack/virtual-file-routes": "workspace:*", "@tanstack/router-plugin": "workspace:*", "@tanstack/router-vite-plugin": "workspace:*", "@tanstack/react-router-with-query": "workspace:*", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index bb07408d5f..74c58cd950 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -64,6 +64,7 @@ }, "dependencies": { "prettier": "^3.3.3", - "zod": "^3.23.8" + "zod": "^3.23.8", + "@tanstack/virtual-file-routes": "workspace:^" } } diff --git a/packages/router-generator/src/config.ts b/packages/router-generator/src/config.ts index 0f36cf3cbc..b39fc63896 100644 --- a/packages/router-generator/src/config.ts +++ b/packages/router-generator/src/config.ts @@ -1,8 +1,10 @@ import path from 'node:path' import { existsSync, readFileSync } from 'node:fs' import { z } from 'zod' +import { virtualRootRouteSchema } from './filesystem/virtual/config' export const configSchema = z.object({ + virtualRouteConfig: virtualRootRouteSchema.optional(), routeFilePrefix: z.string().optional(), routeFileIgnorePrefix: z.string().optional().default('-'), routeFileIgnorePattern: z.string().optional(), diff --git a/packages/router-generator/src/filesystem/physical/getRouteNodes.ts b/packages/router-generator/src/filesystem/physical/getRouteNodes.ts new file mode 100644 index 0000000000..a2d3e26f23 --- /dev/null +++ b/packages/router-generator/src/filesystem/physical/getRouteNodes.ts @@ -0,0 +1,151 @@ +import path from 'node:path' +import * as fsp from 'node:fs/promises' +import { + determineInitialRoutePath, + logging, + removeExt, + removeTrailingSlash, + replaceBackslash, + routePathToVariable, +} from '../../utils' +import { rootPathId } from './rootPathId' +import type { GetRouteNodesResult, RouteNode } from '../../types' +import type { Config } from '../../config' + +const disallowedRouteGroupConfiguration = /\(([^)]+)\).(ts|js|tsx|jsx)/ + +export async function getRouteNodes( + config: Config, +): Promise { + const { routeFilePrefix, routeFileIgnorePrefix, routeFileIgnorePattern } = + config + const logger = logging({ disabled: config.disableLogging }) + const routeFileIgnoreRegExp = new RegExp(routeFileIgnorePattern ?? '', 'g') + + const routeNodes: Array = [] + + async function recurse(dir: string) { + const fullDir = path.resolve(config.routesDirectory, dir) + let dirList = await fsp.readdir(fullDir, { withFileTypes: true }) + + dirList = dirList.filter((d) => { + if ( + d.name.startsWith('.') || + (routeFileIgnorePrefix && d.name.startsWith(routeFileIgnorePrefix)) + ) { + return false + } + + if (routeFilePrefix) { + return d.name.startsWith(routeFilePrefix) + } + + if (routeFileIgnorePattern) { + return !d.name.match(routeFileIgnoreRegExp) + } + + return true + }) + + await Promise.all( + dirList.map(async (dirent) => { + const fullPath = path.join(fullDir, dirent.name) + const relativePath = path.join(dir, dirent.name) + + if (dirent.isDirectory()) { + await recurse(relativePath) + } else if (fullPath.match(/\.(tsx|ts|jsx|js)$/)) { + const filePath = replaceBackslash(path.join(dir, dirent.name)) + const filePathNoExt = removeExt(filePath) + let routePath = determineInitialRoutePath(filePathNoExt) + + if (routeFilePrefix) { + routePath = routePath.replaceAll(routeFilePrefix, '') + } + + if (disallowedRouteGroupConfiguration.test(dirent.name)) { + const errorMessage = `A route configuration for a route group was found at \`${filePath}\`. This is not supported. Did you mean to use a layout/pathless route instead?` + logger.error(`ERROR: ${errorMessage}`) + throw new Error(errorMessage) + } + + const variableName = routePathToVariable(routePath) + + const isLazy = routePath.endsWith('/lazy') + + if (isLazy) { + routePath = routePath.replace(/\/lazy$/, '') + } + + const isRoute = routePath.endsWith(`/${config.routeToken}`) + const isComponent = routePath.endsWith('/component') + const isErrorComponent = routePath.endsWith('/errorComponent') + const isPendingComponent = routePath.endsWith('/pendingComponent') + const isLoader = routePath.endsWith('/loader') + const isAPIRoute = routePath.startsWith( + `${removeTrailingSlash(config.apiBase)}/`, + ) + + const segments = routePath.split('/') + const lastRouteSegment = segments[segments.length - 1] + const isLayout = + (lastRouteSegment !== config.indexToken && + lastRouteSegment !== config.routeToken && + lastRouteSegment?.startsWith('_')) || + false + + ;( + [ + [isComponent, 'component'], + [isErrorComponent, 'errorComponent'], + [isPendingComponent, 'pendingComponent'], + [isLoader, 'loader'], + ] as const + ).forEach(([isType, type]) => { + if (isType) { + logger.warn( + `WARNING: The \`.${type}.tsx\` suffix used for the ${filePath} file is deprecated. Use the new \`.lazy.tsx\` suffix instead.`, + ) + } + }) + + routePath = routePath.replace( + new RegExp( + `/(component|errorComponent|pendingComponent|loader|${config.routeToken}|lazy)$`, + ), + '', + ) + + if (routePath === config.indexToken) { + routePath = '/' + } + + routePath = + routePath.replace(new RegExp(`/${config.indexToken}$`), '/') || '/' + + routeNodes.push({ + filePath, + fullPath, + routePath, + variableName, + isRoute, + isComponent, + isErrorComponent, + isPendingComponent, + isLoader, + isLazy, + isLayout, + isAPIRoute, + }) + } + }), + ) + + return routeNodes + } + + await recurse('./') + + const rootRouteNode = routeNodes.find((d) => d.routePath === `/${rootPathId}`) + return { rootRouteNode, routeNodes } +} diff --git a/packages/router-generator/src/filesystem/physical/rootPathId.ts b/packages/router-generator/src/filesystem/physical/rootPathId.ts new file mode 100644 index 0000000000..bb97d05ce6 --- /dev/null +++ b/packages/router-generator/src/filesystem/physical/rootPathId.ts @@ -0,0 +1 @@ +export const rootPathId = '__root' diff --git a/packages/router-generator/src/filesystem/virtual/config.ts b/packages/router-generator/src/filesystem/virtual/config.ts new file mode 100644 index 0000000000..db54aa6611 --- /dev/null +++ b/packages/router-generator/src/filesystem/virtual/config.ts @@ -0,0 +1,45 @@ +import { z } from 'zod' +import type { + LayoutRoute, + PhysicalSubtree, + Route, + VirtualRootRoute, +} from '@tanstack/virtual-file-routes' + +const indexRouteSchema = z.object({ + type: z.literal('index'), + file: z.string(), +}) + +const layoutRouteSchema: z.ZodType = z.object({ + type: z.literal('layout'), + id: z.string(), + file: z.string(), + children: z.array(z.lazy(() => virtualRouteNodeSchema)).optional(), +}) + +const routeSchema: z.ZodType = z.object({ + type: z.literal('route'), + file: z.string(), + path: z.string(), + children: z.array(z.lazy(() => virtualRouteNodeSchema)).optional(), +}) + +const physicalSubTreeSchema: z.ZodType = z.object({ + type: z.literal('physical'), + directory: z.string(), + pathPrefix: z.string(), +}) + +const virtualRouteNodeSchema = z.union([ + indexRouteSchema, + layoutRouteSchema, + routeSchema, + physicalSubTreeSchema, +]) + +export const virtualRootRouteSchema: z.ZodType = z.object({ + type: z.literal('root'), + file: z.string(), + children: z.array(virtualRouteNodeSchema).optional(), +}) diff --git a/packages/router-generator/src/filesystem/virtual/getRouteNodes.ts b/packages/router-generator/src/filesystem/virtual/getRouteNodes.ts new file mode 100644 index 0000000000..acb5687cce --- /dev/null +++ b/packages/router-generator/src/filesystem/virtual/getRouteNodes.ts @@ -0,0 +1,141 @@ +import { join, resolve } from 'node:path' +import { + removeExt, + removeLeadingSlash, + removeTrailingSlash, + routePathToVariable, +} from '../../utils' +import { getRouteNodes as getRouteNodesPhysical } from '../physical/getRouteNodes' +import type { VirtualRouteNode } from '@tanstack/virtual-file-routes' +import type { GetRouteNodesResult, RouteNode } from '../../types' +import type { Config } from '../../config' + +function ensureLeadingUnderScore(id: string) { + if (id.startsWith('_')) { + return id + } + return `_${id}` +} + +function flattenTree(node: RouteNode): Array { + const result = [node] + + if (node.children) { + for (const child of node.children) { + result.push(...flattenTree(child)) + } + } + delete node.children + + return result +} + +export async function getRouteNodes( + tsrConfig: Config, +): Promise { + const fullDir = resolve(tsrConfig.routesDirectory) + if (tsrConfig.virtualRouteConfig === undefined) { + throw new Error(`virtualRouteConfig is undefined`) + } + const children = await getRouteNodesRecursive( + tsrConfig, + fullDir, + tsrConfig.virtualRouteConfig.children, + ) + const allNodes = flattenTree({ + children, + filePath: tsrConfig.virtualRouteConfig.file, + fullPath: join(fullDir, tsrConfig.virtualRouteConfig.file), + variableName: 'rootRoute', + routePath: '/', + isRoot: true, + }) + + const rootRouteNode = allNodes[0] + const routeNodes = allNodes.slice(1) + + return { rootRouteNode, routeNodes } +} + +export async function getRouteNodesRecursive( + tsrConfig: Config, + fullDir: string, + nodes?: Array, + parent?: RouteNode, +): Promise> { + if (nodes === undefined) { + return [] + } + const children = await Promise.all( + nodes.map(async (node) => { + if (node.type === 'physical') { + const { routeNodes } = await getRouteNodesPhysical({ + ...tsrConfig, + routesDirectory: resolve(fullDir, node.directory), + }) + routeNodes.forEach((subtreeNode) => { + subtreeNode.variableName = routePathToVariable( + `${node.pathPrefix}/${removeExt(subtreeNode.filePath)}`, + ) + subtreeNode.routePath = `${parent?.routePath ?? ''}${node.pathPrefix}${subtreeNode.routePath}` + subtreeNode.filePath = `${node.directory}/${subtreeNode.filePath}` + }) + return routeNodes + } + + const filePath = node.file + const variableName = routePathToVariable(removeExt(filePath)) + const fullPath = join(fullDir, filePath) + const parentRoutePath = removeTrailingSlash(parent?.routePath ?? '/') + const isLayout = node.type === 'layout' + switch (node.type) { + case 'index': { + const routePath = `${parentRoutePath}/` + return { + filePath, + fullPath, + variableName, + routePath, + isLayout, + } satisfies RouteNode + } + + case 'route': + case 'layout': { + let lastSegment: string + if (node.type === 'layout') { + if (node.id !== undefined) { + node.id = ensureLeadingUnderScore(node.id) + } else { + node.id = '_layout' + } + lastSegment = node.id + } else { + lastSegment = node.path + } + const routePath = `${parentRoutePath}/${removeLeadingSlash(lastSegment)}` + + const routeNode: RouteNode = { + fullPath, + isLayout, + filePath, + variableName, + routePath, + } + + if (node.children !== undefined) { + const children = await getRouteNodesRecursive( + tsrConfig, + fullDir, + node.children, + routeNode, + ) + routeNode.children = children + } + return routeNode + } + } + }), + ) + return children.flat() +} diff --git a/packages/router-generator/src/generator.ts b/packages/router-generator/src/generator.ts index 02ed118930..d91e561a13 100644 --- a/packages/router-generator/src/generator.ts +++ b/packages/router-generator/src/generator.ts @@ -2,175 +2,25 @@ import path from 'node:path' import * as fs from 'node:fs' import * as fsp from 'node:fs/promises' import * as prettier from 'prettier' -import { cleanPath, logging, trimPathLeft } from './utils' +import { + determineInitialRoutePath, + logging, + removeExt, + removeTrailingSlash, + removeUnderscores, + replaceBackslash, + routePathToVariable, + trimPathLeft, +} from './utils' +import { getRouteNodes as physicalGetRouteNodes } from './filesystem/physical/getRouteNodes' +import { getRouteNodes as virtualGetRouteNodes } from './filesystem/virtual/getRouteNodes' +import { rootPathId } from './filesystem/physical/rootPathId' +import type { GetRouteNodesResult, RouteNode } from './types' import type { Config } from './config' let latestTask = 0 -export const rootPathId = '__root' const routeGroupPatternRegex = /\(.+\)/g const possiblyNestedRouteGroupPatternRegex = /\([^/]+\)\/?/g -const disallowedRouteGroupConfiguration = /\(([^)]+)\).(ts|js|tsx|jsx)/ - -export type RouteNode = { - filePath: string - fullPath: string - variableName: string - routePath?: string - cleanedPath?: string - path?: string - isNonPath?: boolean - isNonLayout?: boolean - isLayout?: boolean - isVirtualParentRequired?: boolean - isVirtualParentRoute?: boolean - isRoute?: boolean - isAPIRoute?: boolean - isLoader?: boolean - isComponent?: boolean - isErrorComponent?: boolean - isPendingComponent?: boolean - isVirtual?: boolean - isLazy?: boolean - isRoot?: boolean - children?: Array - parent?: RouteNode -} - -async function getRouteNodes(config: Config) { - const { routeFilePrefix, routeFileIgnorePrefix, routeFileIgnorePattern } = - config - const logger = logging({ disabled: config.disableLogging }) - const routeFileIgnoreRegExp = new RegExp(routeFileIgnorePattern ?? '', 'g') - - const routeNodes: Array = [] - - async function recurse(dir: string) { - const fullDir = path.resolve(config.routesDirectory, dir) - let dirList = await fsp.readdir(fullDir, { withFileTypes: true }) - - dirList = dirList.filter((d) => { - if ( - d.name.startsWith('.') || - (routeFileIgnorePrefix && d.name.startsWith(routeFileIgnorePrefix)) - ) { - return false - } - - if (routeFilePrefix) { - return d.name.startsWith(routeFilePrefix) - } - - if (routeFileIgnorePattern) { - return !d.name.match(routeFileIgnoreRegExp) - } - - return true - }) - - await Promise.all( - dirList.map(async (dirent) => { - const fullPath = path.join(fullDir, dirent.name) - const relativePath = path.join(dir, dirent.name) - - if (dirent.isDirectory()) { - await recurse(relativePath) - } else if (fullPath.match(/\.(tsx|ts|jsx|js)$/)) { - const filePath = replaceBackslash(path.join(dir, dirent.name)) - const filePathNoExt = removeExt(filePath) - let routePath = determineInitialRoutePath(filePathNoExt) - - if (routeFilePrefix) { - routePath = routePath.replaceAll(routeFilePrefix, '') - } - - if (disallowedRouteGroupConfiguration.test(dirent.name)) { - const errorMessage = `A route configuration for a route group was found at \`${filePath}\`. This is not supported. Did you mean to use a layout/pathless route instead?` - logger.error(`ERROR: ${errorMessage}`) - throw new Error(errorMessage) - } - - const variableName = routePathToVariable(routePath) - - // Remove the index from the route path and - // if the route path is empty, use `/' - - const isLazy = routePath.endsWith('/lazy') - - if (isLazy) { - routePath = routePath.replace(/\/lazy$/, '') - } - - const isRoute = routePath.endsWith(`/${config.routeToken}`) - const isComponent = routePath.endsWith('/component') - const isErrorComponent = routePath.endsWith('/errorComponent') - const isPendingComponent = routePath.endsWith('/pendingComponent') - const isLoader = routePath.endsWith('/loader') - const isAPIRoute = routePath.startsWith( - `${removeTrailingSlash(config.apiBase)}/`, - ) - - const segments = routePath.split('/') - const lastRouteSegment = segments[segments.length - 1] - const isLayout = - (lastRouteSegment !== config.indexToken && - lastRouteSegment !== config.routeToken && - lastRouteSegment?.startsWith('_')) || - false - - ;( - [ - [isComponent, 'component'], - [isErrorComponent, 'errorComponent'], - [isPendingComponent, 'pendingComponent'], - [isLoader, 'loader'], - ] as const - ).forEach(([isType, type]) => { - if (isType) { - logger.warn( - `WARNING: The \`.${type}.tsx\` suffix used for the ${filePath} file is deprecated. Use the new \`.lazy.tsx\` suffix instead.`, - ) - } - }) - - routePath = routePath.replace( - new RegExp( - `/(component|errorComponent|pendingComponent|loader|${config.routeToken}|lazy)$`, - ), - '', - ) - - if (routePath === config.indexToken) { - routePath = '/' - } - - routePath = - routePath.replace(new RegExp(`/${config.indexToken}$`), '/') || '/' - - routeNodes.push({ - filePath, - fullPath, - routePath, - variableName, - isRoute, - isComponent, - isErrorComponent, - isPendingComponent, - isLoader, - isLazy, - isLayout, - isAPIRoute, - }) - } - }), - ) - - return routeNodes - } - - await recurse('./') - - return routeNodes -} let isFirst = false let skipMessage = false @@ -216,12 +66,18 @@ export async function generator(config: Config) { parser: 'typescript', } - const routePathIdPrefix = config.routeFilePrefix ?? '' - const beforeRouteNodes = await getRouteNodes(config) - const rootRouteNode = beforeRouteNodes.find( - (d) => d.routePath === `/${rootPathId}`, - ) + let getRouteNodesResult: GetRouteNodesResult + + if (config.virtualRouteConfig) { + getRouteNodesResult = await virtualGetRouteNodes(config) + } else { + getRouteNodesResult = await physicalGetRouteNodes(config) + } + const { rootRouteNode, routeNodes: beforeRouteNodes } = getRouteNodesResult + if (rootRouteNode === undefined) { + throw new Error(`rootRouteNode must not be undefined`) + } const preRouteNodes = multiSortBy(beforeRouteNodes, [ (d) => (d.routePath === '/' ? -1 : 1), (d) => d.routePath?.split('/').length, @@ -307,13 +163,11 @@ export const Route = createRootRoute({ const trimmedPath = trimPathLeft(node.path ?? '') const split = trimmedPath.split('/') - const first = split[0] ?? trimmedPath const lastRouteSegment = split[split.length - 1] ?? trimmedPath node.isNonPath = lastRouteSegment.startsWith('_') || routeGroupPatternRegex.test(lastRouteSegment) - node.isNonLayout = first.endsWith('_') node.cleanedPath = removeGroups( removeUnderscores(removeLayoutSegments(node.path)) ?? '', @@ -571,11 +425,18 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ .map((d) => d[0]) const virtualRouteNodes = sortedRouteNodes.filter((d) => d.isVirtual) - const rootPathIdExtension = - config.addExtensions && rootRouteNode - ? path.extname(rootRouteNode.filePath) - : '' + function getImportPath(node: RouteNode) { + return replaceBackslash( + removeExt( + path.relative( + path.dirname(config.generatedRouteTree), + path.resolve(config.routesDirectory, node.filePath), + ), + config.addExtensions, + ), + ) + } const routeImports = [ ...config.routeTreeFileHeader, '// This file is auto-generated by TanStack Router', @@ -584,29 +445,13 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ : '', '// Import Routes', [ - `import { Route as rootRoute } from './${replaceBackslash( - path.relative( - path.dirname(config.generatedRouteTree), - path.resolve( - config.routesDirectory, - `${routePathIdPrefix}${rootPathId}${rootPathIdExtension}`, - ), - ), - )}'`, + `import { Route as rootRoute } from './${getImportPath(rootRouteNode)}'`, ...sortedRouteNodes .filter((d) => !d.isVirtual) .map((node) => { return `import { Route as ${ node.variableName - }Import } from './${replaceBackslash( - removeExt( - path.relative( - path.dirname(config.generatedRouteTree), - path.resolve(config.routesDirectory, node.filePath), - ), - config.addExtensions, - ), - )}'` + }Import } from './${getImportPath(node)}'` }), ].join('\n'), virtualRouteNodes.length ? '// Create Virtual Routes' : '', @@ -704,7 +549,7 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ ${routeNodes .map((routeNode) => { const [filePathId, routeId] = getFilePathIdAndRouteIdFromPath( - routeNode.routePath!, + routeNode.routePath, ) return `'${filePathId}': { @@ -735,14 +580,14 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ const createRouteManifest = () => { const routesManifest = { __root__: { - filePath: rootRouteNode?.filePath, + filePath: rootRouteNode.filePath, children: routeTree.map( - (d) => getFilePathIdAndRouteIdFromPath(d.routePath!)[1], + (d) => getFilePathIdAndRouteIdFromPath(d.routePath)[1], ), }, ...Object.fromEntries( routeNodes.map((d) => { - const [_, routeId] = getFilePathIdAndRouteIdFromPath(d.routePath!) + const [_, routeId] = getFilePathIdAndRouteIdFromPath(d.routePath) return [ routeId, @@ -753,7 +598,7 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ : undefined, children: d.children?.map( (childRoute) => - getFilePathIdAndRouteIdFromPath(childRoute.routePath!)[1], + getFilePathIdAndRouteIdFromPath(childRoute.routePath)[1], ), }, ] @@ -820,24 +665,6 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ ) } -function routePathToVariable(routePath: string): string { - return ( - removeUnderscores(routePath) - ?.replace(/\/\$\//g, '/splat/') - .replace(/\$$/g, 'splat') - .replace(/\$/g, '') - .split(/[/-]/g) - .map((d, i) => (i > 0 ? capitalize(d) : d)) - .join('') - .replace(/([^a-zA-Z0-9]|[.])/gm, '') - .replace(/^(\d)/g, 'R$1') ?? '' - ) -} - -export function removeExt(d: string, keepExtension: boolean = false) { - return keepExtension ? d : d.substring(0, d.lastIndexOf('.')) || d -} - function spaces(d: number): string { return Array.from({ length: d }) .map(() => ' ') @@ -874,35 +701,14 @@ export function multiSortBy( .map(([d]) => d) } -function capitalize(s: string) { - if (typeof s !== 'string') return '' - return s.charAt(0).toUpperCase() + s.slice(1) -} - -function removeUnderscores(s?: string) { - return s?.replaceAll(/(^_|_$)/gi, '').replaceAll(/(\/_|_\/)/gi, '/') -} - function removeTrailingUnderscores(s?: string) { return s?.replaceAll(/(_$)/gi, '').replaceAll(/(_\/)/gi, '/') } -function replaceBackslash(s: string) { - return s.replaceAll(/\\/gi, '/') -} - function removeGroups(s: string) { return s.replace(possiblyNestedRouteGroupPatternRegex, '') } -function removeTrailingSlash(s: string) { - return s.replace(/\/$/, '') -} - -function determineInitialRoutePath(routePath: string) { - return cleanPath(`/${routePath.split('.').join('/')}`) || '' -} - /** * The `node.path` is used as the `id` in the route definition. * This function checks if the given node has a parent and if so, it determines the correct path for the given node. @@ -911,7 +717,7 @@ function determineInitialRoutePath(routePath: string) { */ function determineNodePath(node: RouteNode) { return (node.path = node.parent - ? node.routePath?.replace(node.parent.routePath!, '') || '/' + ? node.routePath?.replace(node.parent.routePath ?? '', '') || '/' : node.routePath) } @@ -995,7 +801,7 @@ export const inferPath = (routeNode: RouteNode): string => { : (routeNode.cleanedPath?.replace(/\/$/, '') ?? '') } -function getFilePathIdAndRouteIdFromPath(pathname: string) { +function getFilePathIdAndRouteIdFromPath(pathname?: string) { const filePathId = removeTrailingUnderscores(pathname) const id = removeGroups(filePathId ?? '') diff --git a/packages/router-generator/src/types.ts b/packages/router-generator/src/types.ts new file mode 100644 index 0000000000..cf1b7ee9e2 --- /dev/null +++ b/packages/router-generator/src/types.ts @@ -0,0 +1,28 @@ +export type RouteNode = { + filePath: string + fullPath: string + variableName: string + routePath?: string + cleanedPath?: string + path?: string + isNonPath?: boolean + isLayout?: boolean + isVirtualParentRequired?: boolean + isVirtualParentRoute?: boolean + isRoute?: boolean + isAPIRoute?: boolean + isLoader?: boolean + isComponent?: boolean + isErrorComponent?: boolean + isPendingComponent?: boolean + isVirtual?: boolean + isLazy?: boolean + isRoot?: boolean + children?: Array + parent?: RouteNode +} + +export interface GetRouteNodesResult { + rootRouteNode?: RouteNode + routeNodes: Array +} diff --git a/packages/router-generator/src/utils.ts b/packages/router-generator/src/utils.ts index 5a57168353..ffcac863fa 100644 --- a/packages/router-generator/src/utils.ts +++ b/packages/router-generator/src/utils.ts @@ -26,3 +26,46 @@ export function logging(config: { disabled: boolean }) { }, } } + +export function removeLeadingSlash(path: string): string { + return path.replace(/^\//, '') +} + +export function removeTrailingSlash(s: string) { + return s.replace(/\/$/, '') +} + +export function determineInitialRoutePath(routePath: string) { + return cleanPath(`/${routePath.split('.').join('/')}`) || '' +} + +export function replaceBackslash(s: string) { + return s.replaceAll(/\\/gi, '/') +} + +export function routePathToVariable(routePath: string): string { + return ( + removeUnderscores(routePath) + ?.replace(/\/\$\//g, '/splat/') + .replace(/\$$/g, 'splat') + .replace(/\$/g, '') + .split(/[/-]/g) + .map((d, i) => (i > 0 ? capitalize(d) : d)) + .join('') + .replace(/([^a-zA-Z0-9]|[.])/gm, '') + .replace(/^(\d)/g, 'R$1') ?? '' + ) +} + +export function removeUnderscores(s?: string) { + return s?.replaceAll(/(^_|_$)/gi, '').replaceAll(/(\/_|_\/)/gi, '/') +} + +export function capitalize(s: string) { + if (typeof s !== 'string') return '' + return s.charAt(0).toUpperCase() + s.slice(1) +} + +export function removeExt(d: string, keepExtension: boolean = false) { + return keepExtension ? d : d.substring(0, d.lastIndexOf('.')) || d +} diff --git a/packages/router-generator/tests/generator.test.ts b/packages/router-generator/tests/generator.test.ts index a0cc942745..b16745e174 100644 --- a/packages/router-generator/tests/generator.test.ts +++ b/packages/router-generator/tests/generator.test.ts @@ -2,6 +2,13 @@ import fs from 'node:fs/promises' import { join } from 'node:path' import { describe, expect, it } from 'vitest' +import { + index, + layout, + physical, + rootRoute, + route, +} from '@tanstack/virtual-file-routes' import { generator, getConfig } from '../src' import type { Config } from '../src' @@ -51,6 +58,24 @@ function rewriteConfigByFolderName(folderName: string, config: Config) { config.indexToken = '_1nd3x' config.routeToken = '_r0ut3_' break + case 'virtual': + { + const virtualRouteConfig = rootRoute('root.tsx', [ + index('index.tsx'), + layout('layout.tsx', [ + route('/dashboard', 'db/dashboard.tsx', [ + index('db/dashboard-index.tsx'), + route('/invoices', 'db/dashboard-invoices.tsx', [ + index('db/invoices-index.tsx'), + route('$id', 'db/invoice-detail.tsx'), + ]), + ]), + physical('/hello', 'subtree'), + ]), + ]) + config.virtualRouteConfig = virtualRouteConfig + } + break default: break } diff --git a/packages/router-generator/tests/generator/virtual/routeTree.snapshot.ts b/packages/router-generator/tests/generator/virtual/routeTree.snapshot.ts new file mode 100644 index 0000000000..cbc5660e20 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routeTree.snapshot.ts @@ -0,0 +1,238 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/root' +import { Route as layoutImport } from './routes/layout' +import { Route as indexImport } from './routes/index' +import { Route as dbDashboardImport } from './routes/db/dashboard' +import { Route as HelloIndexImport } from './routes/subtree/index' +import { Route as dbDashboardInvoicesImport } from './routes/db/dashboard-invoices' +import { Route as dbDashboardIndexImport } from './routes/db/dashboard-index' +import { Route as HelloFooIndexImport } from './routes/subtree/foo/index' +import { Route as HelloFooIdImport } from './routes/subtree/foo/$id' +import { Route as dbInvoiceDetailImport } from './routes/db/invoice-detail' +import { Route as dbInvoicesIndexImport } from './routes/db/invoices-index' + +// Create/Update Routes + +const layoutRoute = layoutImport.update({ + id: '/_layout', + getParentRoute: () => rootRoute, +} as any) + +const indexRoute = indexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const dbDashboardRoute = dbDashboardImport.update({ + path: '/dashboard', + getParentRoute: () => layoutRoute, +} as any) + +const HelloIndexRoute = HelloIndexImport.update({ + path: '/hello/', + getParentRoute: () => layoutRoute, +} as any) + +const dbDashboardInvoicesRoute = dbDashboardInvoicesImport.update({ + path: '/invoices', + getParentRoute: () => dbDashboardRoute, +} as any) + +const dbDashboardIndexRoute = dbDashboardIndexImport.update({ + path: '/', + getParentRoute: () => dbDashboardRoute, +} as any) + +const HelloFooIndexRoute = HelloFooIndexImport.update({ + path: '/hello/foo/', + getParentRoute: () => layoutRoute, +} as any) + +const HelloFooIdRoute = HelloFooIdImport.update({ + path: '/hello/foo/$id', + getParentRoute: () => layoutRoute, +} as any) + +const dbInvoiceDetailRoute = dbInvoiceDetailImport.update({ + path: '/$id', + getParentRoute: () => dbDashboardInvoicesRoute, +} as any) + +const dbInvoicesIndexRoute = dbInvoicesIndexImport.update({ + path: '/', + getParentRoute: () => dbDashboardInvoicesRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof indexImport + parentRoute: typeof rootRoute + } + '/_layout': { + id: '/_layout' + path: '' + fullPath: '' + preLoaderRoute: typeof layoutImport + parentRoute: typeof rootRoute + } + '/_layout/dashboard': { + id: '/_layout/dashboard' + path: '/dashboard' + fullPath: '/dashboard' + preLoaderRoute: typeof dbDashboardImport + parentRoute: typeof layoutImport + } + '/_layout/dashboard/': { + id: '/_layout/dashboard/' + path: '/' + fullPath: '/dashboard/' + preLoaderRoute: typeof dbDashboardIndexImport + parentRoute: typeof dbDashboardImport + } + '/_layout/dashboard/invoices': { + id: '/_layout/dashboard/invoices' + path: '/invoices' + fullPath: '/dashboard/invoices' + preLoaderRoute: typeof dbDashboardInvoicesImport + parentRoute: typeof dbDashboardImport + } + '/_layout/hello/': { + id: '/_layout/hello/' + path: '/hello' + fullPath: '/hello' + preLoaderRoute: typeof HelloIndexImport + parentRoute: typeof layoutImport + } + '/_layout/dashboard/invoices/': { + id: '/_layout/dashboard/invoices/' + path: '/' + fullPath: '/dashboard/invoices/' + preLoaderRoute: typeof dbInvoicesIndexImport + parentRoute: typeof dbDashboardInvoicesImport + } + '/_layout/dashboard/invoices/$id': { + id: '/_layout/dashboard/invoices/$id' + path: '/$id' + fullPath: '/dashboard/invoices/$id' + preLoaderRoute: typeof dbInvoiceDetailImport + parentRoute: typeof dbDashboardInvoicesImport + } + '/_layout/hello/foo/$id': { + id: '/_layout/hello/foo/$id' + path: '/hello/foo/$id' + fullPath: '/hello/foo/$id' + preLoaderRoute: typeof HelloFooIdImport + parentRoute: typeof layoutImport + } + '/_layout/hello/foo/': { + id: '/_layout/hello/foo/' + path: '/hello/foo' + fullPath: '/hello/foo' + preLoaderRoute: typeof HelloFooIndexImport + parentRoute: typeof layoutImport + } + } +} + +// Create and export the route tree + +export const routeTree = rootRoute.addChildren({ + indexRoute, + layoutRoute: layoutRoute.addChildren({ + dbDashboardRoute: dbDashboardRoute.addChildren({ + dbDashboardIndexRoute, + dbDashboardInvoicesRoute: dbDashboardInvoicesRoute.addChildren({ + dbInvoicesIndexRoute, + dbInvoiceDetailRoute, + }), + }), + HelloIndexRoute, + HelloFooIdRoute, + HelloFooIndexRoute, + }), +}) + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "root.tsx", + "children": [ + "/", + "/_layout" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_layout": { + "filePath": "layout.tsx", + "children": [ + "/_layout/dashboard", + "/_layout/hello/", + "/_layout/hello/foo/$id", + "/_layout/hello/foo/" + ] + }, + "/_layout/dashboard": { + "filePath": "db/dashboard.tsx", + "parent": "/_layout", + "children": [ + "/_layout/dashboard/", + "/_layout/dashboard/invoices" + ] + }, + "/_layout/dashboard/": { + "filePath": "db/dashboard-index.tsx", + "parent": "/_layout/dashboard" + }, + "/_layout/dashboard/invoices": { + "filePath": "db/dashboard-invoices.tsx", + "parent": "/_layout/dashboard", + "children": [ + "/_layout/dashboard/invoices/", + "/_layout/dashboard/invoices/$id" + ] + }, + "/_layout/hello/": { + "filePath": "subtree/index.tsx", + "parent": "/_layout" + }, + "/_layout/dashboard/invoices/": { + "filePath": "db/invoices-index.tsx", + "parent": "/_layout/dashboard/invoices" + }, + "/_layout/dashboard/invoices/$id": { + "filePath": "db/invoice-detail.tsx", + "parent": "/_layout/dashboard/invoices" + }, + "/_layout/hello/foo/$id": { + "filePath": "subtree/foo/$id.tsx", + "parent": "/_layout" + }, + "/_layout/hello/foo/": { + "filePath": "subtree/foo/index.tsx", + "parent": "/_layout" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/virtual/routes/db/dashboard-index.tsx b/packages/router-generator/tests/generator/virtual/routes/db/dashboard-index.tsx new file mode 100644 index 0000000000..a92fc772c3 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routes/db/dashboard-index.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/dashboard/')({ + component: () =>
Hello !
, +}) diff --git a/packages/router-generator/tests/generator/virtual/routes/db/dashboard-invoices.tsx b/packages/router-generator/tests/generator/virtual/routes/db/dashboard-invoices.tsx new file mode 100644 index 0000000000..bf7e5a02b2 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routes/db/dashboard-invoices.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/dashboard/invoices')({ + component: () =>
Hello !
, +}) diff --git a/packages/router-generator/tests/generator/virtual/routes/db/dashboard.tsx b/packages/router-generator/tests/generator/virtual/routes/db/dashboard.tsx new file mode 100644 index 0000000000..d5b4f49706 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routes/db/dashboard.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/dashboard')({ + component: () =>
Hello !
, +}) diff --git a/packages/router-generator/tests/generator/virtual/routes/db/invoice-detail.tsx b/packages/router-generator/tests/generator/virtual/routes/db/invoice-detail.tsx new file mode 100644 index 0000000000..e7be6c1910 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routes/db/invoice-detail.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/dashboard/invoices/$id')({ + component: () =>
Hello /_layout/dashboard/invoices/$id!
, +}) diff --git a/packages/router-generator/tests/generator/virtual/routes/db/invoices-index.tsx b/packages/router-generator/tests/generator/virtual/routes/db/invoices-index.tsx new file mode 100644 index 0000000000..f2e56721b6 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routes/db/invoices-index.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/dashboard/invoices/')({ + component: () =>
Hello /_layout/dashboard/invoices/!
, +}) diff --git a/packages/router-generator/tests/generator/virtual/routes/index.tsx b/packages/router-generator/tests/generator/virtual/routes/index.tsx new file mode 100644 index 0000000000..a294139860 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routes/index.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: () =>
Hello !
, +}) diff --git a/packages/router-generator/tests/generator/virtual/routes/layout.tsx b/packages/router-generator/tests/generator/virtual/routes/layout.tsx new file mode 100644 index 0000000000..2e48e48410 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routes/layout.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout')({ + component: () =>
Hello !
, +}) diff --git a/packages/router-generator/tests/generator/virtual/routes/root.tsx b/packages/router-generator/tests/generator/virtual/routes/root.tsx new file mode 100644 index 0000000000..3ae2044956 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routes/root.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/root')({ + component: () =>
Hello !
, +}) diff --git a/packages/router-generator/tests/generator/virtual/routes/subtree/foo/$id.tsx b/packages/router-generator/tests/generator/virtual/routes/subtree/foo/$id.tsx new file mode 100644 index 0000000000..d8cbd795a7 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routes/subtree/foo/$id.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/hello/foo/$id')({ + component: () =>
Hello /foo/$id!
, +}) diff --git a/packages/router-generator/tests/generator/virtual/routes/subtree/foo/index.tsx b/packages/router-generator/tests/generator/virtual/routes/subtree/foo/index.tsx new file mode 100644 index 0000000000..10233de496 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routes/subtree/foo/index.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/hello/foo/')({ + component: () =>
Hello /foo/!
, +}) diff --git a/packages/router-generator/tests/generator/virtual/routes/subtree/index.tsx b/packages/router-generator/tests/generator/virtual/routes/subtree/index.tsx new file mode 100644 index 0000000000..3367799b96 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routes/subtree/index.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/hello/')({ + component: () =>
Hello /!
, +}) diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 776a2c63fd..c0dfb38486 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -101,6 +101,7 @@ "@babel/traverse": "^7.25.3", "@babel/types": "^7.25.2", "@tanstack/router-generator": "workspace:^", + "@tanstack/virtual-file-routes": "workspace:^", "@types/babel__core": "^7.20.5", "@types/babel__generator": "^7.6.8", "@types/babel__template": "^7.4.4", diff --git a/packages/virtual-file-routes/eslint.config.js b/packages/virtual-file-routes/eslint.config.js new file mode 100644 index 0000000000..8ce6ad05fc --- /dev/null +++ b/packages/virtual-file-routes/eslint.config.js @@ -0,0 +1,5 @@ +// @ts-check + +import rootConfig from '../../eslint.config.js' + +export default [...rootConfig] diff --git a/packages/virtual-file-routes/package.json b/packages/virtual-file-routes/package.json new file mode 100644 index 0000000000..8c98be8ddd --- /dev/null +++ b/packages/virtual-file-routes/package.json @@ -0,0 +1,57 @@ +{ + "name": "@tanstack/virtual-file-routes", + "version": "1.52.5", + "description": "Modern and scalable routing for React applications", + "author": "Tanner Linsley", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/router.git", + "directory": "packages/virtual-file-routes" + }, + "homepage": "https://tanstack.com/router", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "keywords": [ + "react", + "location", + "router", + "routing", + "async", + "async router", + "typescript" + ], + "scripts": { + "clean": "rimraf ./dist && rimraf ./coverage", + "test:eslint": "eslint ./src", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", + "build": "vite build" + }, + "type": "module", + "types": "dist/esm/index.d.ts", + "main": "dist/cjs/index.cjs", + "module": "dist/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "files": [ + "dist", + "src" + ], + "engines": { + "node": ">=12" + } +} diff --git a/packages/virtual-file-routes/src/api.ts b/packages/virtual-file-routes/src/api.ts new file mode 100644 index 0000000000..d52f01c9ca --- /dev/null +++ b/packages/virtual-file-routes/src/api.ts @@ -0,0 +1,81 @@ +import type { + IndexRoute, + LayoutRoute, + PhysicalSubtree, + Route, + VirtualRootRoute, + VirtualRouteNode, +} from './types' + +export function rootRoute( + file: string, + children?: Array, +): VirtualRootRoute { + return { + type: 'root', + file, + children, + } +} + +export function index(file: string): IndexRoute { + return { + type: 'index', + file, + } +} + +export function layout( + file: string, + children: Array, +): LayoutRoute +export function layout( + id: string, + file: string, + children: Array, +): LayoutRoute + +export function layout( + idOrFile: string, + fileOrChildren: string | Array, + children?: Array, +): LayoutRoute { + if (Array.isArray(fileOrChildren)) { + return { + type: 'layout', + file: idOrFile, + children: fileOrChildren, + } + } else { + return { + type: 'layout', + id: idOrFile, + file: fileOrChildren, + children, + } + } +} + +export function route( + path: string, + file: string, + children?: Array, +): Route { + return { + type: 'route', + file, + path, + children, + } +} + +export function physical( + pathPrefix: string, + directory: string, +): PhysicalSubtree { + return { + type: 'physical', + directory, + pathPrefix, + } +} diff --git a/packages/virtual-file-routes/src/index.ts b/packages/virtual-file-routes/src/index.ts new file mode 100644 index 0000000000..45e3c6b4c0 --- /dev/null +++ b/packages/virtual-file-routes/src/index.ts @@ -0,0 +1,9 @@ +export { rootRoute, index, route, layout, physical } from './api' +export type { + LayoutRoute, + Route, + IndexRoute, + PhysicalSubtree, + VirtualRootRoute, + VirtualRouteNode, +} from './types' diff --git a/packages/virtual-file-routes/src/types.ts b/packages/virtual-file-routes/src/types.ts new file mode 100644 index 0000000000..7797e936e6 --- /dev/null +++ b/packages/virtual-file-routes/src/types.ts @@ -0,0 +1,35 @@ +export type IndexRoute = { + type: 'index' + file: string +} + +export type LayoutRoute = { + type: 'layout' + id?: string + file: string + children?: Array +} + +export type PhysicalSubtree = { + type: 'physical' + directory: string + pathPrefix: string +} + +export type Route = { + type: 'route' + file: string + path: string + children?: Array +} +export type VirtualRouteNode = + | IndexRoute + | LayoutRoute + | Route + | PhysicalSubtree + +export type VirtualRootRoute = { + type: 'root' + file: string + children?: Array +} diff --git a/packages/virtual-file-routes/tsconfig.json b/packages/virtual-file-routes/tsconfig.json new file mode 100644 index 0000000000..041d9fe354 --- /dev/null +++ b/packages/virtual-file-routes/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "jsx": "react-jsx" + }, + "include": ["src", "tests", "vite.config.ts"] +} diff --git a/packages/virtual-file-routes/vite.config.ts b/packages/virtual-file-routes/vite.config.ts new file mode 100644 index 0000000000..5edc0264cb --- /dev/null +++ b/packages/virtual-file-routes/vite.config.ts @@ -0,0 +1,21 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { tanstackViteConfig } from '@tanstack/config/vite' +import packageJson from './package.json' + +const config = defineConfig({ + test: { + name: packageJson.name, + dir: './tests', + watch: false, + environment: 'jsdom', + typecheck: { enabled: true }, + }, +}) + +export default mergeConfig( + config, + tanstackViteConfig({ + entry: './src/index.ts', + srcDir: './src', + }), +) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9923c81506..9d0c0a5030 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,6 +13,7 @@ overrides: '@tanstack/router-cli': workspace:* '@tanstack/router-devtools': workspace:* '@tanstack/router-generator': workspace:* + '@tanstack/virtual-file-routes': workspace:* '@tanstack/router-plugin': workspace:* '@tanstack/router-vite-plugin': workspace:* '@tanstack/react-router-with-query': workspace:* @@ -63,7 +64,7 @@ importers: version: 25.0.0 nx: specifier: ^19.5.6 - version: 19.5.6(@swc/core@1.7.6) + version: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -521,6 +522,52 @@ importers: specifier: ^1.2.0 version: 1.2.0(@babel/core@7.25.2)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + examples/react/basic-virtual-file-based: + dependencies: + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../../../packages/router-plugin + '@tanstack/virtual-file-routes': + specifier: workspace:* + version: link:../../../packages/virtual-file-routes + immer: + specifier: ^10.1.1 + version: 10.1.1 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + zod: + specifier: ^3.23.8 + version: 3.23.8 + devDependencies: + '@playwright/test': + specifier: ^1.46.1 + version: 1.46.1 + '@types/react': + specifier: ^18.2.47 + version: 18.3.3 + '@types/react-dom': + specifier: ^18.2.18 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + vite: + specifier: ^5.3.5 + version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + examples/react/deferred-data: dependencies: '@tanstack/react-router': @@ -1927,6 +1974,9 @@ importers: packages/router-generator: dependencies: + '@tanstack/virtual-file-routes': + specifier: workspace:* + version: link:../virtual-file-routes prettier: specifier: ^3.3.3 version: 3.3.3 @@ -1966,6 +2016,9 @@ importers: '@tanstack/router-generator': specifier: workspace:* version: link:../router-generator + '@tanstack/virtual-file-routes': + specifier: workspace:* + version: link:../virtual-file-routes '@types/babel__core': specifier: ^7.20.5 version: 7.20.5 @@ -1992,7 +2045,7 @@ importers: version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.93.0(@swc/core@1.7.6)(esbuild@0.21.5) + version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2146,6 +2199,8 @@ importers: specifier: ^7.20.6 version: 7.20.6 + packages/virtual-file-routes: {} + packages: '@aashutoshrathi/word-wrap@1.2.6': @@ -9721,9 +9776,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.5.6(@swc/core@1.7.6)': + '@nrwl/tao@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12))': dependencies: - nx: 19.5.6(@swc/core@1.7.6) + nx: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) tslib: 2.7.0 transitivePeerDependencies: - '@swc-node/register' @@ -13920,10 +13975,10 @@ snapshots: nwsapi@2.2.12: {} - nx@19.5.6(@swc/core@1.7.6): + nx@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.5.6(@swc/core@1.7.6) + '@nrwl/tao': 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -15081,14 +15136,14 @@ snapshots: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.21.5 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6)(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.21.5)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6)(esbuild@0.21.5) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5) optionalDependencies: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.21.5 @@ -15707,7 +15762,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -15730,17 +15785,15 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)) watchpack: 2.4.1 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.21.5): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -15763,9 +15816,11 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6)(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.21.5)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild From b15d310fa7ba6a0f3e430d1579482cd38419b16e Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Wed, 4 Sep 2024 21:38:14 +0000 Subject: [PATCH 049/154] release: v1.54.0 --- examples/react/authenticated-routes/package.json | 2 +- examples/react/basic-file-based-codesplitting/package.json | 2 +- examples/react/basic-file-based/package.json | 2 +- examples/react/basic-react-query-file-based/package.json | 2 +- examples/react/basic-ssr-file-based/package.json | 4 ++-- examples/react/basic-ssr-streaming-file-based/package.json | 4 ++-- examples/react/basic-virtual-file-based/package.json | 2 +- examples/react/kitchen-sink-file-based/package.json | 2 +- .../react/kitchen-sink-react-query-file-based/package.json | 2 +- examples/react/large-file-based/package.json | 2 +- examples/react/quickstart-file-based/package.json | 2 +- examples/react/quickstart-rspack-file-based/package.json | 2 +- examples/react/quickstart-webpack-file-based/package.json | 2 +- examples/react/search-validator-adapters/package.json | 2 +- examples/react/start-basic-auth/package.json | 4 ++-- examples/react/start-basic-counter/package.json | 2 +- examples/react/start-basic-react-query/package.json | 4 ++-- examples/react/start-basic-rsc/package.json | 4 ++-- examples/react/start-basic/package.json | 4 ++-- examples/react/start-clerk-basic/package.json | 4 ++-- examples/react/start-convex-trellaux/package.json | 4 ++-- examples/react/start-trellaux/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 2 +- examples/react/with-trpc/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/start/package.json | 2 +- 29 files changed, 38 insertions(+), 38 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 2ac617c7f3..8bfac7bbbc 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 493efd962d..8ef5dabc26 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 448d829f17..e5dfb85898 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -12,7 +12,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index b93ad8f3f9..7ad875a26d 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 793ebeb3c4..258645fc29 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.1", + "@tanstack/router-plugin": "^1.54.0", + "@tanstack/start": "^1.54.0", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 0eb75c2711..706a6930a8 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.1", + "@tanstack/router-plugin": "^1.54.0", + "@tanstack/start": "^1.54.0", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 6205f9540d..b51fe8e0f3 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -12,7 +12,7 @@ "dependencies": { "@tanstack/react-router": "^1.52.5", "@tanstack/router-devtools": "^1.52.5", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "@tanstack/virtual-file-routes": "^1.52.5", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index db8bb3bc4c..962220cb59 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 583113cee1..956fdc709c 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -13,7 +13,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 3624290b02..c0ee3dfda6 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query": "^5.51.21", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index a26969c3a3..5299603b02 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 56fa74255d..7e8686325b 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.5.3" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index ac958d5a73..beb03a2a69 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 1f394fe56e..778de2be72 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "@tanstack/router-zod-adapter": "^1.53.1", "@tanstack/router-valibot-adapter": "^1.53.1", "@tanstack/router-arktype-adapter": "^1.53.1", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 217ac4f941..82503cff2d 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -16,8 +16,8 @@ "@prisma/client": "5.17.0", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.1", + "@tanstack/router-plugin": "^1.54.0", + "@tanstack/start": "^1.54.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 5190d2a2d9..e8d9d2bc97 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@tanstack/react-router": "^1.53.1", - "@tanstack/start": "^1.53.1", + "@tanstack/start": "^1.54.0", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 3ec4255777..427483f33e 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -17,8 +17,8 @@ "@tanstack/react-router": "^1.53.1", "@tanstack/react-router-with-query": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.1", + "@tanstack/router-plugin": "^1.54.0", + "@tanstack/start": "^1.54.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 0803638a35..55977f4b7b 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -14,8 +14,8 @@ "@babel/plugin-syntax-typescript": "^7.24.7", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.1", + "@tanstack/router-plugin": "^1.54.0", + "@tanstack/start": "^1.54.0", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 6d15126b62..9535b8fbcd 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -14,8 +14,8 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.1", + "@tanstack/router-plugin": "^1.54.0", + "@tanstack/start": "^1.54.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index ec182ffc08..6dcd9c1149 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -15,8 +15,8 @@ "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.1", + "@tanstack/router-plugin": "^1.54.0", + "@tanstack/start": "^1.54.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 73a3ee4b8a..0a3eba22f2 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -18,8 +18,8 @@ "@tanstack/react-router": "^1.53.1", "@tanstack/react-router-with-query": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.1", + "@tanstack/router-plugin": "^1.54.0", + "@tanstack/start": "^1.54.0", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index cbe328e47d..d8239fc8c2 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -16,8 +16,8 @@ "@tanstack/react-router": "^1.53.1", "@tanstack/react-router-with-query": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", - "@tanstack/start": "^1.53.1", + "@tanstack/router-plugin": "^1.54.0", + "@tanstack/start": "^1.54.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index b19c3e4b21..f76d3159de 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -12,7 +12,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 244cb62f34..27b203f0aa 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -10,7 +10,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.52.0", + "@tanstack/router-plugin": "^1.54.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index b7a47fb7bf..06c6843f38 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.52.0", + "version": "1.54.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 74c58cd950..019d130f72 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.52.0", + "version": "1.54.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index c0dfb38486..d6b394a92e 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.52.0", + "version": "1.54.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 5f77eb72d2..1c42a3ae19 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.52.0", + "version": "1.54.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index e14e9ce96a..5abe58fc81 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.53.1", + "version": "1.54.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 72b1eac97969d53f9b072ea412b032f8a784553d Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Wed, 4 Sep 2024 23:41:26 +0200 Subject: [PATCH 050/154] feat: publish virtual-file-routes (#2266) --- scripts/publish.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/publish.js b/scripts/publish.js index 64dbe71ca4..8a6cf779d7 100644 --- a/scripts/publish.js +++ b/scripts/publish.js @@ -40,6 +40,10 @@ await publish({ name: '@tanstack/router-generator', packageDir: 'packages/router-generator', }, + { + name: '@tanstack/virtual-file-routes', + packageDir: 'packages/virtual-file-routes', + }, { name: '@tanstack/router-cli', packageDir: 'packages/router-cli', From 5f791faae8d4a60130dcdb49d4030b716c015804 Mon Sep 17 00:00:00 2001 From: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Thu, 5 Sep 2024 10:03:07 +1200 Subject: [PATCH 051/154] docs: linking to the virtual files routes page --- docs/framework/react/guide/file-based-routing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework/react/guide/file-based-routing.md b/docs/framework/react/guide/file-based-routing.md index f1986a9752..52a8518274 100644 --- a/docs/framework/react/guide/file-based-routing.md +++ b/docs/framework/react/guide/file-based-routing.md @@ -123,7 +123,7 @@ const virtualRouteConfig = rootRoute('root.tsx', [ ]) ``` -For more information on how to configure virtual file routes, see the [Virtual File Routes](./virtual-file-routes) guide. +For more information on how to configure virtual file routes, see the [Virtual File Routes](./virtual-file-routes.md) guide. ## Dynamic Path Params From 93fb3dfb1382b0b168bc1bae0bb8cff15c73c847 Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Thu, 5 Sep 2024 23:22:12 +1200 Subject: [PATCH 052/154] test(router-generator): add tests to the utils (#2270) --- packages/router-generator/src/generator.ts | 31 +---- packages/router-generator/src/utils.ts | 30 +++++ packages/router-generator/tests/utils.test.ts | 125 ++++++++++++++++++ 3 files changed, 156 insertions(+), 30 deletions(-) create mode 100644 packages/router-generator/tests/utils.test.ts diff --git a/packages/router-generator/src/generator.ts b/packages/router-generator/src/generator.ts index d91e561a13..f282381db6 100644 --- a/packages/router-generator/src/generator.ts +++ b/packages/router-generator/src/generator.ts @@ -5,6 +5,7 @@ import * as prettier from 'prettier' import { determineInitialRoutePath, logging, + multiSortBy, removeExt, removeTrailingSlash, removeUnderscores, @@ -671,36 +672,6 @@ function spaces(d: number): string { .join('') } -export function multiSortBy( - arr: Array, - accessors: Array<(item: T) => any> = [(d) => d], -): Array { - return arr - .map((d, i) => [d, i] as const) - .sort(([a, ai], [b, bi]) => { - for (const accessor of accessors) { - const ao = accessor(a) - const bo = accessor(b) - - if (typeof ao === 'undefined') { - if (typeof bo === 'undefined') { - continue - } - return 1 - } - - if (ao === bo) { - continue - } - - return ao > bo ? 1 : -1 - } - - return ai - bi - }) - .map(([d]) => d) -} - function removeTrailingUnderscores(s?: string) { return s?.replaceAll(/(_$)/gi, '').replaceAll(/(_\/)/gi, '/') } diff --git a/packages/router-generator/src/utils.ts b/packages/router-generator/src/utils.ts index ffcac863fa..201341f773 100644 --- a/packages/router-generator/src/utils.ts +++ b/packages/router-generator/src/utils.ts @@ -1,3 +1,33 @@ +export function multiSortBy( + arr: Array, + accessors: Array<(item: T) => any> = [(d) => d], +): Array { + return arr + .map((d, i) => [d, i] as const) + .sort(([a, ai], [b, bi]) => { + for (const accessor of accessors) { + const ao = accessor(a) + const bo = accessor(b) + + if (typeof ao === 'undefined') { + if (typeof bo === 'undefined') { + continue + } + return 1 + } + + if (ao === bo) { + continue + } + + return ao > bo ? 1 : -1 + } + + return ai - bi + }) + .map(([d]) => d) +} + export function cleanPath(path: string) { // remove double slashes return path.replace(/\/{2,}/g, '/') diff --git a/packages/router-generator/tests/utils.test.ts b/packages/router-generator/tests/utils.test.ts new file mode 100644 index 0000000000..22cb05f204 --- /dev/null +++ b/packages/router-generator/tests/utils.test.ts @@ -0,0 +1,125 @@ +import { describe, expect, it } from 'vitest' +import { + cleanPath, + determineInitialRoutePath, + multiSortBy, + removeExt, + removeUnderscores, + routePathToVariable, +} from '../src/utils' + +describe('cleanPath', () => { + it('keeps path with leading slash and trailing slash', () => { + expect(cleanPath('/test/')).toBe('/test/') + }) +}) + +describe('determineInitialRoutePath', () => { + it('removes dots and adds slashes', () => { + expect(determineInitialRoutePath('test.test')).toBe('/test/test') + }) + + it('keeps leading slash', () => { + expect(determineInitialRoutePath('/test.test')).toBe('/test/test') + }) + + it('keeps trailing slash', () => { + expect(determineInitialRoutePath('test.test/')).toBe('/test/test/') + }) + + it('removes dots and adds slashes with leading and trailing slashes', () => { + expect(determineInitialRoutePath('/test.test/')).toBe('/test/test/') + }) + + it("returns '/' if path is empty", () => { + expect(determineInitialRoutePath('')).toBe('/') + }) + + it("returns '/' if path is '.'", () => { + expect(determineInitialRoutePath('.')).toBe('/') + }) + + it("returns '/' if path is './'", () => { + expect(determineInitialRoutePath('./')).toBe('/') + }) +}) + +describe('multiSortBy', () => { + it('sorts by multiple criteria', () => { + const data = [ + { routePath: '/test/1/2/index', f: 'b' }, + { routePath: '/test/1', f: 'b' }, + { routePath: '/test/1/2/3/4/index', f: 'b' }, + { routePath: '/test/1/2/3', f: 'b' }, + { routePath: '/test/1/2/3/index', f: 'b' }, + { routePath: '/test/1/2', f: 'b' }, + { routePath: '/test/1/2/3/4', f: 'b' }, + ] + + const sorted = multiSortBy(data, [ + (d) => (d.routePath.includes('1') ? -1 : 1), + (d) => d.routePath.split('/').length, + (d) => (d.routePath.endsWith('index') ? -1 : 1), + (d) => d, + ]) + + expect(sorted).toEqual([ + { routePath: '/test/1', f: 'b' }, + { routePath: '/test/1/2', f: 'b' }, + { routePath: '/test/1/2/index', f: 'b' }, + { routePath: '/test/1/2/3', f: 'b' }, + { routePath: '/test/1/2/3/index', f: 'b' }, + { routePath: '/test/1/2/3/4', f: 'b' }, + { routePath: '/test/1/2/3/4/index', f: 'b' }, + ]) + }) +}) + +describe('removeExt', () => { + it('removes extension', () => { + expect(removeExt('test.ts')).toBe('test') + }) + + it('does not remove extension if no extension', () => { + expect(removeExt('test')).toBe('test') + }) + + it('removes extension with multiple dots', () => { + expect(removeExt('test.test.ts')).toBe('test.test') + }) + + it('removes extension with leading dot', () => { + expect(removeExt('.test.ts')).toBe('.test') + }) + + it('removes extension when in a route path', () => { + expect(removeExt('/test/test.ts')).toBe('/test/test') + }) +}) + +describe('removeUnderscores', () => { + it('removes leading underscore', () => { + expect(removeUnderscores('_test')).toBe('test') + }) + + it('removes trailing underscore', () => { + expect(removeUnderscores('test_')).toBe('test') + }) + + it('removes leading and trailing underscores', () => { + expect(removeUnderscores('_test_')).toBe('test') + }) +}) + +describe('routePathToVariable', () => { + it.each([ + ['/test/$/index', 'TestSplatIndex'], + ['/test/$', 'TestSplat'], + ['/test/$/', 'TestSplat'], + ['/test/index', 'TestIndex'], + ['/test', 'Test'], + ['/test/', 'Test'], + ])(`converts "%s" to "%s"`, (routePath, expected) => { + expect(routePathToVariable(routePath)).toBe(expected) + }) +}) From 1f92ff086d4d96656116abc55dd369da65e28419 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 5 Sep 2024 11:24:03 +0000 Subject: [PATCH 053/154] release: v1.55.0 --- examples/react/authenticated-routes/package.json | 2 +- examples/react/basic-file-based-codesplitting/package.json | 2 +- examples/react/basic-file-based/package.json | 2 +- examples/react/basic-react-query-file-based/package.json | 2 +- examples/react/basic-ssr-file-based/package.json | 4 ++-- examples/react/basic-ssr-streaming-file-based/package.json | 4 ++-- examples/react/basic-virtual-file-based/package.json | 2 +- examples/react/kitchen-sink-file-based/package.json | 2 +- .../react/kitchen-sink-react-query-file-based/package.json | 2 +- examples/react/large-file-based/package.json | 2 +- examples/react/quickstart-file-based/package.json | 2 +- examples/react/quickstart-rspack-file-based/package.json | 2 +- examples/react/quickstart-webpack-file-based/package.json | 2 +- examples/react/search-validator-adapters/package.json | 2 +- examples/react/start-basic-auth/package.json | 4 ++-- examples/react/start-basic-counter/package.json | 2 +- examples/react/start-basic-react-query/package.json | 4 ++-- examples/react/start-basic-rsc/package.json | 4 ++-- examples/react/start-basic/package.json | 4 ++-- examples/react/start-clerk-basic/package.json | 4 ++-- examples/react/start-convex-trellaux/package.json | 4 ++-- examples/react/start-trellaux/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 2 +- examples/react/with-trpc/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/start/package.json | 2 +- 29 files changed, 38 insertions(+), 38 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 8bfac7bbbc..8e9632571e 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 8ef5dabc26..bfde4a0650 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index e5dfb85898..13ce3a700b 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -12,7 +12,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 7ad875a26d..1b7634cd56 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 258645fc29..5f35d21b3e 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", - "@tanstack/start": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", + "@tanstack/start": "^1.55.0", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 706a6930a8..285cf16015 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", - "@tanstack/start": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", + "@tanstack/start": "^1.55.0", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index b51fe8e0f3..971f8ec8b7 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -12,7 +12,7 @@ "dependencies": { "@tanstack/react-router": "^1.52.5", "@tanstack/router-devtools": "^1.52.5", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "@tanstack/virtual-file-routes": "^1.52.5", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 962220cb59..6b3259f541 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 956fdc709c..2f63e43d85 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -13,7 +13,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index c0ee3dfda6..913581b109 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query": "^5.51.21", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 5299603b02..f8cd564ada 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 7e8686325b..ed04832833 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.5.3" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index beb03a2a69..ee2dc11560 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 778de2be72..d4c5974e1e 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "@tanstack/router-zod-adapter": "^1.53.1", "@tanstack/router-valibot-adapter": "^1.53.1", "@tanstack/router-arktype-adapter": "^1.53.1", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 82503cff2d..dc38e12329 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -16,8 +16,8 @@ "@prisma/client": "5.17.0", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", - "@tanstack/start": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", + "@tanstack/start": "^1.55.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index e8d9d2bc97..d0ff148bec 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@tanstack/react-router": "^1.53.1", - "@tanstack/start": "^1.54.0", + "@tanstack/start": "^1.55.0", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 427483f33e..68a5ba120e 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -17,8 +17,8 @@ "@tanstack/react-router": "^1.53.1", "@tanstack/react-router-with-query": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", - "@tanstack/start": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", + "@tanstack/start": "^1.55.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 55977f4b7b..774c6b8a14 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -14,8 +14,8 @@ "@babel/plugin-syntax-typescript": "^7.24.7", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", - "@tanstack/start": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", + "@tanstack/start": "^1.55.0", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 9535b8fbcd..314336f9b4 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -14,8 +14,8 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", - "@tanstack/start": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", + "@tanstack/start": "^1.55.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 6dcd9c1149..c3e09fbe5c 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -15,8 +15,8 @@ "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", - "@tanstack/start": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", + "@tanstack/start": "^1.55.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 0a3eba22f2..1d1e4d36c5 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -18,8 +18,8 @@ "@tanstack/react-router": "^1.53.1", "@tanstack/react-router-with-query": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", - "@tanstack/start": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", + "@tanstack/start": "^1.55.0", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index d8239fc8c2..a78d1de034 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -16,8 +16,8 @@ "@tanstack/react-router": "^1.53.1", "@tanstack/react-router-with-query": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", - "@tanstack/start": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", + "@tanstack/start": "^1.55.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index f76d3159de..ab142de533 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -12,7 +12,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 27b203f0aa..f98377b057 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -10,7 +10,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.54.0", + "@tanstack/router-plugin": "^1.55.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 06c6843f38..6bff22784d 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.54.0", + "version": "1.55.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 019d130f72..49ea0bf49b 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.54.0", + "version": "1.55.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index d6b394a92e..8f9dcd4ae6 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.54.0", + "version": "1.55.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 1c42a3ae19..03f3156b80 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.54.0", + "version": "1.55.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 5abe58fc81..0a3a81339b 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.54.0", + "version": "1.55.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 423728f412cd40efa528983aded4d11d12ba44fe Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 5 Sep 2024 09:57:40 -0600 Subject: [PATCH 054/154] Update already released virtual-file-routes to 1.54.0 --- packages/virtual-file-routes/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/virtual-file-routes/package.json b/packages/virtual-file-routes/package.json index 8c98be8ddd..b14dfd8e65 100644 --- a/packages/virtual-file-routes/package.json +++ b/packages/virtual-file-routes/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/virtual-file-routes", - "version": "1.52.5", + "version": "1.54.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From f64587fe83eb1f85c7ca28c5dadd27478213de42 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Thu, 5 Sep 2024 23:22:06 +0200 Subject: [PATCH 055/154] feat(router-generator): allow virtual subtree in file based routing (#2271) --- .../react/guide/virtual-file-routes.md | 65 +++ .../.gitignore | 10 + .../basic-virtual-inside-file-based/README.md | 6 + .../index.html | 24 ++ .../package.json | 29 ++ .../src/main.tsx | 25 ++ .../src/posts.tsx | 32 ++ .../src/routeTree.gen.ts | 237 +++++++++++ .../src/routes/__root.tsx | 62 +++ .../src/routes/_layout.tsx | 16 + .../src/routes/_layout/_layout-2.tsx | 34 ++ .../src/routes/_layout/_layout-2/layout-a.tsx | 9 + .../src/routes/_layout/_layout-2/layout-b.tsx | 9 + .../src/routes/index.tsx | 14 + .../src/routes/posts.tsx | 39 ++ .../src/routes/posts/__virtual.ts | 13 + .../src/routes/posts/details.tsx | 28 ++ .../src/routes/posts/home.tsx | 10 + .../routes/posts/lets-go/deeper/__virtual.ts | 6 + .../src/routes/posts/lets-go/deeper/home.tsx | 5 + .../src/routes/posts/lets-go/index.tsx | 5 + .../tsconfig.dev.json | 10 + .../tsconfig.json | 9 + .../vite.config.ts | 8 + packages/router-generator/package.json | 5 +- .../src/filesystem/physical/getRouteNodes.ts | 46 +++ .../src/filesystem/virtual/loadConfigFile.ts | 6 + .../routeTree.snapshot.ts | 115 ++++++ .../virtual-inside-nested/routes/__root.tsx | 11 + .../virtual-inside-nested/routes/foo/bar.tsx | 5 + .../routes/foo/bar/__virtual.ts | 10 + .../routes/foo/bar/details.tsx | 5 + .../routes/foo/bar/home.tsx | 5 + .../routes/foo/bar/route.ts | 0 .../virtual-inside-nested/routes/index.tsx | 5 + .../virtual-file-routes/src/defineConfig.ts | 38 ++ packages/virtual-file-routes/src/index.ts | 9 + pnpm-lock.yaml | 383 ++++++++++++++++-- 38 files changed, 1309 insertions(+), 39 deletions(-) create mode 100644 examples/react/basic-virtual-inside-file-based/.gitignore create mode 100644 examples/react/basic-virtual-inside-file-based/README.md create mode 100644 examples/react/basic-virtual-inside-file-based/index.html create mode 100644 examples/react/basic-virtual-inside-file-based/package.json create mode 100644 examples/react/basic-virtual-inside-file-based/src/main.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/src/posts.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/src/routeTree.gen.ts create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/__root.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/_layout.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/_layout/_layout-2.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/_layout/_layout-2/layout-a.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/_layout/_layout-2/layout-b.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/index.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/posts.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/posts/__virtual.ts create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/posts/details.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/posts/home.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/posts/lets-go/deeper/__virtual.ts create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/posts/lets-go/deeper/home.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/src/routes/posts/lets-go/index.tsx create mode 100644 examples/react/basic-virtual-inside-file-based/tsconfig.dev.json create mode 100644 examples/react/basic-virtual-inside-file-based/tsconfig.json create mode 100644 examples/react/basic-virtual-inside-file-based/vite.config.ts create mode 100644 packages/router-generator/src/filesystem/virtual/loadConfigFile.ts create mode 100644 packages/router-generator/tests/generator/virtual-inside-nested/routeTree.snapshot.ts create mode 100644 packages/router-generator/tests/generator/virtual-inside-nested/routes/__root.tsx create mode 100644 packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar.tsx create mode 100644 packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/__virtual.ts create mode 100644 packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/details.tsx create mode 100644 packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/home.tsx create mode 100644 packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/route.ts create mode 100644 packages/router-generator/tests/generator/virtual-inside-nested/routes/index.tsx create mode 100644 packages/virtual-file-routes/src/defineConfig.ts diff --git a/docs/framework/react/guide/virtual-file-routes.md b/docs/framework/react/guide/virtual-file-routes.md index f9f153999e..d8abcdffe8 100644 --- a/docs/framework/react/guide/virtual-file-routes.md +++ b/docs/framework/react/guide/virtual-file-routes.md @@ -184,6 +184,71 @@ const virtualRouteConfig = rootRoute('root.tsx', [ ]) ``` +## Virtual Routes inside of TanStack Router File Based routing + +The previous section showed you how you can use TanStack Router's File Based routing convention inside of a virtual route configuration. +However, the opposite is possible as well. +You can configure the main part of your app's route tree using TanStack Router's File Based routing convention and opt into virtual route configuration for specific subtrees. + +Consider the following file structure: + +``` +/routes +├── __root.tsx +├── foo +│ ├── bar +│ │ ├── __virtual.ts +│ │ ├── details.tsx +│ │ ├── home.tsx +│ │ └── route.ts +│ └── bar.tsx +└── index.tsx +``` + +Let's look at the `bar` directory which contains a special file named `__virtual.ts`. This file instructs the generator to switch over to virtual file route configuration for this directory (and its child directories). + +`__virtual.ts` configures the virtual routes for that particular subtree of the route tree. It uses the same API as explained above, with the only difference being that no `rootRoute` is defined for that subtree: + +```tsx +import { + defineVirtualSubtreeConfig, + index, + route, +} from '@tanstack/virtual-file-routes' + +export default defineVirtualSubtreeConfig([ + index('home.tsx'), + route('$id', 'details.tsx'), +]) +``` + +The helper function `defineVirtualSubtreeConfig` is closely modeled after vite's `defineConfig` and allows you to define a subtree configuration via a default export. The default export can either be + +- a subtree config object +- a function returning a subtree config object +- an async function returning a subtree config object + +## Inception + +You can mix and match TanStack Router's File Based routing convention and virtual route configuration however you like. +Let's go deeper! +Check out the following example that starts off using File Based routing convention, switches over to virtual route configuration for `/posts`, switches back to File Based routing convention for `/posts/lets-go` only to switch over to virtual route configuration again for `/posts/lets-go/deeper`. + +``` +├── __root.tsx +├── index.tsx +├── posts +│ ├── __virtual.ts +│ ├── details.tsx +│ ├── home.tsx +│ └── lets-go +│ ├── deeper +│ │ ├── __virtual.ts +│ │ └── home.tsx +│ └── index.tsx +└── posts.tsx +``` + ## Configuration via the TanStack Router CLI While much less common, you can also configure virtual file routes via the TanStack Router CLI by adding a `virtualRouteConfig` object to your `tsr.config.json` file and defining your virtual routes and passing the resulting JSON that is generated by calling the actual `rootRoute`/`route`/`index`/etc functions from the `@tanstack/virtual-file-routes` package: diff --git a/examples/react/basic-virtual-inside-file-based/.gitignore b/examples/react/basic-virtual-inside-file-based/.gitignore new file mode 100644 index 0000000000..a6ea47e508 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/.gitignore @@ -0,0 +1,10 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local + +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/examples/react/basic-virtual-inside-file-based/README.md b/examples/react/basic-virtual-inside-file-based/README.md new file mode 100644 index 0000000000..115199d292 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/README.md @@ -0,0 +1,6 @@ +# Example + +To run this example: + +- `npm install` or `yarn` +- `npm start` or `yarn start` diff --git a/examples/react/basic-virtual-inside-file-based/index.html b/examples/react/basic-virtual-inside-file-based/index.html new file mode 100644 index 0000000000..a4b3349437 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/index.html @@ -0,0 +1,24 @@ + + + + + + Vite App + + + + +
+ + + diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json new file mode 100644 index 0000000000..e17cf99fd0 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -0,0 +1,29 @@ +{ + "name": "tanstack-router-react-example-basic-virtual-inside-file-based", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --port=3001", + "build": "vite build", + "serve": "vite preview", + "start": "vite" + }, + "dependencies": { + "@tanstack/react-router": "^1.52.5", + "@tanstack/router-devtools": "^1.52.5", + "@tanstack/router-plugin": "^1.55.0", + "@tanstack/virtual-file-routes": "^1.52.5", + "immer": "^10.1.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "redaxios": "^0.5.1", + "zod": "^3.23.8" + }, + "devDependencies": { + "@playwright/test": "^1.46.1", + "@types/react": "^18.2.47", + "@types/react-dom": "^18.2.18", + "@vitejs/plugin-react": "^4.3.1", + "vite": "^5.3.5" + } +} diff --git a/examples/react/basic-virtual-inside-file-based/src/main.tsx b/examples/react/basic-virtual-inside-file-based/src/main.tsx new file mode 100644 index 0000000000..18b1b603f8 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/main.tsx @@ -0,0 +1,25 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import { RouterProvider, createRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' + +// Set up a Router instance +const router = createRouter({ + routeTree, + defaultPreload: 'intent', + defaultStaleTime: 5000, +}) + +// Register things for typesafety +declare module '@tanstack/react-router' { + interface Register { + router: typeof router + } +} + +const rootElement = document.getElementById('app')! + +if (!rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement) + root.render() +} diff --git a/examples/react/basic-virtual-inside-file-based/src/posts.tsx b/examples/react/basic-virtual-inside-file-based/src/posts.tsx new file mode 100644 index 0000000000..3ccf1ff421 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/posts.tsx @@ -0,0 +1,32 @@ +import { notFound } from '@tanstack/react-router' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPost = async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + await new Promise((r) => setTimeout(r, 500)) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + if (err.status === 404) { + throw notFound() + } + throw err + }) + + return post +} + +export const fetchPosts = async () => { + console.info('Fetching posts...') + await new Promise((r) => setTimeout(r, 500)) + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +} diff --git a/examples/react/basic-virtual-inside-file-based/src/routeTree.gen.ts b/examples/react/basic-virtual-inside-file-based/src/routeTree.gen.ts new file mode 100644 index 0000000000..9f23d1480d --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routeTree.gen.ts @@ -0,0 +1,237 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as PostsImport } from './routes/posts' +import { Route as LayoutImport } from './routes/_layout' +import { Route as IndexImport } from './routes/index' +import { Route as postsDetailsImport } from './routes/posts/details' +import { Route as LayoutLayout2Import } from './routes/_layout/_layout-2' +import { Route as postsHomeImport } from './routes/posts/home' +import { Route as postsLetsGoIndexImport } from './routes/posts/lets-go/index' +import { Route as LayoutLayout2LayoutBImport } from './routes/_layout/_layout-2/layout-b' +import { Route as LayoutLayout2LayoutAImport } from './routes/_layout/_layout-2/layout-a' +import { Route as postsLetsGoDeeperHomeImport } from './routes/posts/lets-go/deeper/home' + +// Create/Update Routes + +const PostsRoute = PostsImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const LayoutRoute = LayoutImport.update({ + id: '/_layout', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const postsDetailsRoute = postsDetailsImport.update({ + path: '/$postId', + getParentRoute: () => PostsRoute, +} as any) + +const LayoutLayout2Route = LayoutLayout2Import.update({ + id: '/_layout-2', + getParentRoute: () => LayoutRoute, +} as any) + +const postsHomeRoute = postsHomeImport.update({ + path: '/', + getParentRoute: () => PostsRoute, +} as any) + +const postsLetsGoIndexRoute = postsLetsGoIndexImport.update({ + path: '/inception/', + getParentRoute: () => PostsRoute, +} as any) + +const LayoutLayout2LayoutBRoute = LayoutLayout2LayoutBImport.update({ + path: '/layout-b', + getParentRoute: () => LayoutLayout2Route, +} as any) + +const LayoutLayout2LayoutARoute = LayoutLayout2LayoutAImport.update({ + path: '/layout-a', + getParentRoute: () => LayoutLayout2Route, +} as any) + +const postsLetsGoDeeperHomeRoute = postsLetsGoDeeperHomeImport.update({ + path: '/inception/deeper/', + getParentRoute: () => PostsRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/_layout': { + id: '/_layout' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsImport + parentRoute: typeof rootRoute + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof postsHomeImport + parentRoute: typeof PostsImport + } + '/_layout/_layout-2': { + id: '/_layout/_layout-2' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutLayout2Import + parentRoute: typeof LayoutImport + } + '/posts/$postId': { + id: '/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof postsDetailsImport + parentRoute: typeof PostsImport + } + '/_layout/_layout-2/layout-a': { + id: '/_layout/_layout-2/layout-a' + path: '/layout-a' + fullPath: '/layout-a' + preLoaderRoute: typeof LayoutLayout2LayoutAImport + parentRoute: typeof LayoutLayout2Import + } + '/_layout/_layout-2/layout-b': { + id: '/_layout/_layout-2/layout-b' + path: '/layout-b' + fullPath: '/layout-b' + preLoaderRoute: typeof LayoutLayout2LayoutBImport + parentRoute: typeof LayoutLayout2Import + } + '/posts/inception/': { + id: '/posts/inception/' + path: '/inception' + fullPath: '/posts/inception' + preLoaderRoute: typeof postsLetsGoIndexImport + parentRoute: typeof PostsImport + } + '/posts/inception/deeper/': { + id: '/posts/inception/deeper/' + path: '/inception/deeper' + fullPath: '/posts/inception/deeper' + preLoaderRoute: typeof postsLetsGoDeeperHomeImport + parentRoute: typeof PostsImport + } + } +} + +// Create and export the route tree + +export const routeTree = rootRoute.addChildren({ + IndexRoute, + LayoutRoute: LayoutRoute.addChildren({ + LayoutLayout2Route: LayoutLayout2Route.addChildren({ + LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute, + }), + }), + PostsRoute: PostsRoute.addChildren({ + postsHomeRoute, + postsDetailsRoute, + postsLetsGoIndexRoute, + postsLetsGoDeeperHomeRoute, + }), +}) + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/_layout", + "/posts" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_layout": { + "filePath": "_layout.tsx", + "children": [ + "/_layout/_layout-2" + ] + }, + "/posts": { + "filePath": "posts.tsx", + "children": [ + "/posts/", + "/posts/$postId", + "/posts/inception/", + "/posts/inception/deeper/" + ] + }, + "/posts/": { + "filePath": "posts/home.tsx", + "parent": "/posts" + }, + "/_layout/_layout-2": { + "filePath": "_layout/_layout-2.tsx", + "parent": "/_layout", + "children": [ + "/_layout/_layout-2/layout-a", + "/_layout/_layout-2/layout-b" + ] + }, + "/posts/$postId": { + "filePath": "posts/details.tsx", + "parent": "/posts" + }, + "/_layout/_layout-2/layout-a": { + "filePath": "_layout/_layout-2/layout-a.tsx", + "parent": "/_layout/_layout-2" + }, + "/_layout/_layout-2/layout-b": { + "filePath": "_layout/_layout-2/layout-b.tsx", + "parent": "/_layout/_layout-2" + }, + "/posts/inception/": { + "filePath": "posts/lets-go/index.tsx", + "parent": "/posts" + }, + "/posts/inception/deeper/": { + "filePath": "posts/lets-go/deeper/home.tsx", + "parent": "/posts" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/__root.tsx b/examples/react/basic-virtual-inside-file-based/src/routes/__root.tsx new file mode 100644 index 0000000000..52c5059f55 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/__root.tsx @@ -0,0 +1,62 @@ +import * as React from 'react' +import { Link, Outlet, createRootRoute } from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' + +export const Route = createRootRoute({ + component: RootComponent, + notFoundComponent: () => { + return ( +
+

This is the notFoundComponent configured on root route

+ Start Over +
+ ) + }, +}) + +function RootComponent() { + return ( + <> +
+ + Home + {' '} + + Posts + {' '} + + Layout + {' '} + + This Route Does Not Exist + +
+
+ + {/* Start rendering router matches */} + + + ) +} diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/_layout.tsx b/examples/react/basic-virtual-inside-file-based/src/routes/_layout.tsx new file mode 100644 index 0000000000..02ddbb1cd9 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/_layout.tsx @@ -0,0 +1,16 @@ +import { Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a layout
+
+ +
+
+ ) +} diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/_layout/_layout-2.tsx b/examples/react/basic-virtual-inside-file-based/src/routes/_layout/_layout-2.tsx new file mode 100644 index 0000000000..3b7dbf2903 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/_layout/_layout-2.tsx @@ -0,0 +1,34 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a nested layout
+
+ + Layout A + + + Layout B + +
+
+ +
+
+ ) +} diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/_layout/_layout-2/layout-a.tsx b/examples/react/basic-virtual-inside-file-based/src/routes/_layout/_layout-2/layout-a.tsx new file mode 100644 index 0000000000..61e19b4d9f --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/_layout/_layout-2/layout-a.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-a')({ + component: LayoutAComponent, +}) + +function LayoutAComponent() { + return
I'm layout A!
+} diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/_layout/_layout-2/layout-b.tsx b/examples/react/basic-virtual-inside-file-based/src/routes/_layout/_layout-2/layout-b.tsx new file mode 100644 index 0000000000..cceed1fb9a --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/_layout/_layout-2/layout-b.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-b')({ + component: LayoutBComponent, +}) + +function LayoutBComponent() { + return
I'm layout B!
+} diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/index.tsx b/examples/react/basic-virtual-inside-file-based/src/routes/index.tsx new file mode 100644 index 0000000000..eac82a9174 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/index.tsx @@ -0,0 +1,14 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!

+
+ ) +} diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/posts.tsx b/examples/react/basic-virtual-inside-file-based/src/routes/posts.tsx new file mode 100644 index 0000000000..c7a09ed7f8 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/posts.tsx @@ -0,0 +1,39 @@ +import * as React from 'react' +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { fetchPosts } from '../posts' + +export const Route = createFileRoute('/posts')({ + loader: fetchPosts, + component: PostsComponent, +}) + +function PostsComponent() { + const posts = Route.useLoaderData() + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+
+ +
+ ) +} diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/posts/__virtual.ts b/examples/react/basic-virtual-inside-file-based/src/routes/posts/__virtual.ts new file mode 100644 index 0000000000..afecfb2f97 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/posts/__virtual.ts @@ -0,0 +1,13 @@ +import { + defineVirtualSubtreeConfig, + index, + physical, + route, +} from '@tanstack/virtual-file-routes' + +// this just shows that you can use an async function to define your virtual routes +export default defineVirtualSubtreeConfig(async () => [ + index('home.tsx'), + route('$postId', 'details.tsx'), + physical('/inception', 'lets-go'), +]) diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/posts/details.tsx b/examples/react/basic-virtual-inside-file-based/src/routes/posts/details.tsx new file mode 100644 index 0000000000..948d52d6d6 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/posts/details.tsx @@ -0,0 +1,28 @@ +import * as React from 'react' +import { ErrorComponent, createFileRoute } from '@tanstack/react-router' +import { fetchPost } from '../../posts' +import type { ErrorComponentProps } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/$postId')({ + loader: async ({ params: { postId } }) => fetchPost(postId), + errorComponent: PostErrorComponent as any, + notFoundComponent: () => { + return

Post not found

+ }, + component: PostComponent, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const post = Route.useLoaderData() + + return ( +
+

{post.title}

+
{post.body}
+
+ ) +} diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/posts/home.tsx b/examples/react/basic-virtual-inside-file-based/src/routes/posts/home.tsx new file mode 100644 index 0000000000..056433ca0a --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/posts/home.tsx @@ -0,0 +1,10 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/posts/lets-go/deeper/__virtual.ts b/examples/react/basic-virtual-inside-file-based/src/routes/posts/lets-go/deeper/__virtual.ts new file mode 100644 index 0000000000..1c82ce7a2c --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/posts/lets-go/deeper/__virtual.ts @@ -0,0 +1,6 @@ +import { + defineVirtualSubtreeConfig, + index, +} from '@tanstack/virtual-file-routes' + +export default defineVirtualSubtreeConfig([index('home.tsx')]) diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/posts/lets-go/deeper/home.tsx b/examples/react/basic-virtual-inside-file-based/src/routes/posts/lets-go/deeper/home.tsx new file mode 100644 index 0000000000..11f7fa95ca --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/posts/lets-go/deeper/home.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/inception/deeper/')({ + component: () =>
Hello /posts/inception/deeper/!
, +}) diff --git a/examples/react/basic-virtual-inside-file-based/src/routes/posts/lets-go/index.tsx b/examples/react/basic-virtual-inside-file-based/src/routes/posts/lets-go/index.tsx new file mode 100644 index 0000000000..964ab3c900 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/src/routes/posts/lets-go/index.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/inception/')({ + component: () =>
Hello /posts/inception/!
, +}) diff --git a/examples/react/basic-virtual-inside-file-based/tsconfig.dev.json b/examples/react/basic-virtual-inside-file-based/tsconfig.dev.json new file mode 100644 index 0000000000..285a09b0dc --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/tsconfig.dev.json @@ -0,0 +1,10 @@ +{ + "composite": true, + "extends": "../../../tsconfig.base.json", + + "files": ["src/main.tsx"], + "include": [ + "src" + // "__tests__/**/*.test.*" + ] +} diff --git a/examples/react/basic-virtual-inside-file-based/tsconfig.json b/examples/react/basic-virtual-inside-file-based/tsconfig.json new file mode 100644 index 0000000000..e2241c355e --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "Preserve", + "moduleResolution": "Bundler" + } +} diff --git a/examples/react/basic-virtual-inside-file-based/vite.config.ts b/examples/react/basic-virtual-inside-file-based/vite.config.ts new file mode 100644 index 0000000000..9cb8cad864 --- /dev/null +++ b/examples/react/basic-virtual-inside-file-based/vite.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import { TanStackRouterVite } from '@tanstack/router-plugin/vite' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [TanStackRouterVite(), react()], +}) diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 49ea0bf49b..7530dce359 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -63,8 +63,9 @@ "node": ">=12" }, "dependencies": { + "@tanstack/virtual-file-routes": "workspace:^", + "tsx": "^4.19.0", "prettier": "^3.3.3", - "zod": "^3.23.8", - "@tanstack/virtual-file-routes": "workspace:^" + "zod": "^3.23.8" } } diff --git a/packages/router-generator/src/filesystem/physical/getRouteNodes.ts b/packages/router-generator/src/filesystem/physical/getRouteNodes.ts index a2d3e26f23..560a38b6ad 100644 --- a/packages/router-generator/src/filesystem/physical/getRouteNodes.ts +++ b/packages/router-generator/src/filesystem/physical/getRouteNodes.ts @@ -8,7 +8,13 @@ import { replaceBackslash, routePathToVariable, } from '../../utils' +import { getRouteNodes as getRouteNodesVirtual } from '../virtual/getRouteNodes' +import { loadConfigFile } from '../virtual/loadConfigFile' import { rootPathId } from './rootPathId' +import type { + VirtualRootRoute, + VirtualRouteSubtreeConfig, +} from '@tanstack/virtual-file-routes' import type { GetRouteNodesResult, RouteNode } from '../../types' import type { Config } from '../../config' @@ -47,6 +53,46 @@ export async function getRouteNodes( return true }) + const virtualConfigFile = dirList.find((dirent) => { + return dirent.isFile() && dirent.name.match(/__virtual\.[mc]?[jt]s$/) + }) + + if (virtualConfigFile !== undefined) { + const virtualRouteConfigExport = await loadConfigFile( + path.resolve(fullDir, virtualConfigFile.name), + ) + let virtualRouteSubtreeConfig: VirtualRouteSubtreeConfig + if (typeof virtualRouteConfigExport.default === 'function') { + virtualRouteSubtreeConfig = await virtualRouteConfigExport.default() + } else { + virtualRouteSubtreeConfig = virtualRouteConfigExport.default + } + const dummyRoot: VirtualRootRoute = { + type: 'root', + file: '', + children: virtualRouteSubtreeConfig, + } + const { routeNodes: virtualRouteNodes } = await getRouteNodesVirtual({ + ...config, + routesDirectory: fullDir, + virtualRouteConfig: dummyRoot, + }) + virtualRouteNodes.forEach((node) => { + const filePath = replaceBackslash(path.join(dir, node.filePath)) + const routePath = `/${dir}${node.routePath}` + + node.variableName = routePathToVariable( + `${dir}/${removeExt(node.filePath)}`, + ) + node.routePath = routePath + node.filePath = filePath + }) + + routeNodes.push(...virtualRouteNodes) + + return + } + await Promise.all( dirList.map(async (dirent) => { const fullPath = path.join(fullDir, dirent.name) diff --git a/packages/router-generator/src/filesystem/virtual/loadConfigFile.ts b/packages/router-generator/src/filesystem/virtual/loadConfigFile.ts new file mode 100644 index 0000000000..92c63356b2 --- /dev/null +++ b/packages/router-generator/src/filesystem/virtual/loadConfigFile.ts @@ -0,0 +1,6 @@ +import { tsImport } from 'tsx/esm/api' + +export async function loadConfigFile(filePath: string) { + const loaded = await tsImport(filePath, import.meta.url) + return loaded +} diff --git a/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.snapshot.ts b/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.snapshot.ts new file mode 100644 index 0000000000..0d0aaa0dce --- /dev/null +++ b/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.snapshot.ts @@ -0,0 +1,115 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as IndexImport } from './routes/index' +import { Route as FooBarImport } from './routes/foo/bar' +import { Route as fooBarDetailsImport } from './routes/foo/bar/details' +import { Route as fooBarHomeImport } from './routes/foo/bar/home' + +// Create/Update Routes + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const FooBarRoute = FooBarImport.update({ + path: '/foo/bar', + getParentRoute: () => rootRoute, +} as any) + +const fooBarDetailsRoute = fooBarDetailsImport.update({ + path: '/$id', + getParentRoute: () => FooBarRoute, +} as any) + +const fooBarHomeRoute = fooBarHomeImport.update({ + path: '/', + getParentRoute: () => FooBarRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/foo/bar': { + id: '/foo/bar' + path: '/foo/bar' + fullPath: '/foo/bar' + preLoaderRoute: typeof FooBarImport + parentRoute: typeof rootRoute + } + '/foo/bar/': { + id: '/foo/bar/' + path: '/' + fullPath: '/foo/bar/' + preLoaderRoute: typeof fooBarHomeImport + parentRoute: typeof FooBarImport + } + '/foo/bar/$id': { + id: '/foo/bar/$id' + path: '/$id' + fullPath: '/foo/bar/$id' + preLoaderRoute: typeof fooBarDetailsImport + parentRoute: typeof FooBarImport + } + } +} + +// Create and export the route tree + +export const routeTree = rootRoute.addChildren({ + IndexRoute, + FooBarRoute: FooBarRoute.addChildren({ fooBarHomeRoute, fooBarDetailsRoute }), +}) + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/foo/bar" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/foo/bar": { + "filePath": "foo/bar.tsx", + "children": [ + "/foo/bar/", + "/foo/bar/$id" + ] + }, + "/foo/bar/": { + "filePath": "foo/bar/home.tsx", + "parent": "/foo/bar" + }, + "/foo/bar/$id": { + "filePath": "foo/bar/details.tsx", + "parent": "/foo/bar" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/virtual-inside-nested/routes/__root.tsx b/packages/router-generator/tests/generator/virtual-inside-nested/routes/__root.tsx new file mode 100644 index 0000000000..f89644e82d --- /dev/null +++ b/packages/router-generator/tests/generator/virtual-inside-nested/routes/__root.tsx @@ -0,0 +1,11 @@ +import * as React from 'react' +import { Outlet, createRootRoute } from '@tanstack/react-router' + +export const Route = createRootRoute({ + component: () => ( + +
Hello "__root"!
+ +
+ ), +}) diff --git a/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar.tsx b/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar.tsx new file mode 100644 index 0000000000..6ef5a1ca27 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/foo/bar')({ + component: () =>
Hello /foo/bar!
, +}) diff --git a/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/__virtual.ts b/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/__virtual.ts new file mode 100644 index 0000000000..a732c66101 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/__virtual.ts @@ -0,0 +1,10 @@ +import { + defineVirtualSubtreeConfig, + index, + route, +} from '@tanstack/virtual-file-routes' + +export default defineVirtualSubtreeConfig([ + index('home.tsx'), + route('$id', 'details.tsx'), +]) diff --git a/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/details.tsx b/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/details.tsx new file mode 100644 index 0000000000..59c29910fe --- /dev/null +++ b/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/details.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/foo/bar/$id')({ + component: () =>
Hello /foo/bar/$id!
, +}) diff --git a/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/home.tsx b/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/home.tsx new file mode 100644 index 0000000000..b7a0742abf --- /dev/null +++ b/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/home.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/foo/bar/')({ + component: () =>
Hello /foo/bar/!
, +}) diff --git a/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/route.ts b/packages/router-generator/tests/generator/virtual-inside-nested/routes/foo/bar/route.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/router-generator/tests/generator/virtual-inside-nested/routes/index.tsx b/packages/router-generator/tests/generator/virtual-inside-nested/routes/index.tsx new file mode 100644 index 0000000000..a680913ded --- /dev/null +++ b/packages/router-generator/tests/generator/virtual-inside-nested/routes/index.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: () =>
Hello /!
, +}) diff --git a/packages/virtual-file-routes/src/defineConfig.ts b/packages/virtual-file-routes/src/defineConfig.ts new file mode 100644 index 0000000000..726d068b80 --- /dev/null +++ b/packages/virtual-file-routes/src/defineConfig.ts @@ -0,0 +1,38 @@ +import type { VirtualRouteNode } from './types' + +// this is adapted from vite/src/node/config.ts + +export type ConfigFnObject = () => TConfig +export type ConfigFnPromise = () => Promise +export type ConfigFn = () => TConfig | Promise + +export type ConfigExport = + | TConfig + | Promise + | ConfigFnObject + | ConfigFnPromise + | ConfigFn + +export type VirtualRouteSubtreeConfig = Array + +/** + * Type helper to make it easier to use __virtual.ts + * accepts a direct {@link VirtualRouteSubtreeConfig} object, or a function that returns it. + */ +export function defineVirtualSubtreeConfig( + config: VirtualRouteSubtreeConfig, +): VirtualRouteSubtreeConfig +export function defineVirtualSubtreeConfig( + config: Promise, +): Promise +export function defineVirtualSubtreeConfig( + config: ConfigFnObject, +): ConfigFnObject +export function defineVirtualSubtreeConfig( + config: ConfigExport, +): ConfigExport +export function defineVirtualSubtreeConfig( + config: ConfigExport, +): ConfigExport { + return config +} diff --git a/packages/virtual-file-routes/src/index.ts b/packages/virtual-file-routes/src/index.ts index 45e3c6b4c0..f52991a13c 100644 --- a/packages/virtual-file-routes/src/index.ts +++ b/packages/virtual-file-routes/src/index.ts @@ -7,3 +7,12 @@ export type { VirtualRootRoute, VirtualRouteNode, } from './types' + +export { defineVirtualSubtreeConfig } from './defineConfig' +export type { + ConfigExport, + ConfigFn, + ConfigFnObject, + ConfigFnPromise, + VirtualRouteSubtreeConfig, +} from './defineConfig' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d0c0a5030..65cb3faa02 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -40,7 +40,7 @@ importers: version: 1.46.1 '@tanstack/config': specifier: ^0.13.1 - version: 0.13.1(@types/node@20.14.9)(esbuild@0.21.5)(eslint@9.9.1(jiti@1.21.0))(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 0.13.1(@types/node@20.14.9)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.0))(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) '@types/node': specifier: ^20.14.7 version: 20.14.9 @@ -568,6 +568,52 @@ importers: specifier: ^5.3.5 version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + examples/react/basic-virtual-inside-file-based: + dependencies: + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../../../packages/router-plugin + '@tanstack/virtual-file-routes': + specifier: workspace:* + version: link:../../../packages/virtual-file-routes + immer: + specifier: ^10.1.1 + version: 10.1.1 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + zod: + specifier: ^3.23.8 + version: 3.23.8 + devDependencies: + '@playwright/test': + specifier: ^1.46.1 + version: 1.46.1 + '@types/react': + specifier: ^18.2.47 + version: 18.3.3 + '@types/react-dom': + specifier: ^18.2.18 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + vite: + specifier: ^5.3.5 + version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + examples/react/deferred-data: dependencies: '@tanstack/react-router': @@ -1016,16 +1062,16 @@ importers: version: 18.3.0 html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(@rspack/core@1.0.0(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) + version: 5.6.0(@rspack/core@1.0.0(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) swc-loader: specifier: ^0.2.6 - version: 0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) + version: 0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) typescript: specifier: ^5.5.3 version: 5.5.3 webpack: specifier: ^5.93.0 - version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) @@ -1980,6 +2026,9 @@ importers: prettier: specifier: ^3.3.3 version: 3.3.3 + tsx: + specifier: ^4.19.0 + version: 4.19.0 zod: specifier: ^3.23.8 version: 3.23.8 @@ -2045,7 +2094,7 @@ importers: version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5) + version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2450,6 +2499,12 @@ packages: cpu: [ppc64] os: [aix] + '@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.17.19': resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} @@ -2468,6 +2523,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.17.19': resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} @@ -2486,6 +2547,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.17.19': resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} engines: {node: '>=12'} @@ -2504,6 +2571,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.17.19': resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} @@ -2522,6 +2595,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.17.19': resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} engines: {node: '>=12'} @@ -2540,6 +2619,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.17.19': resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} @@ -2558,6 +2643,12 @@ packages: cpu: [arm64] os: [freebsd] + '@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.17.19': resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} engines: {node: '>=12'} @@ -2576,6 +2667,12 @@ packages: cpu: [x64] os: [freebsd] + '@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.17.19': resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} @@ -2594,6 +2691,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.17.19': resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} @@ -2612,6 +2715,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.17.19': resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} @@ -2630,6 +2739,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.17.19': resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} @@ -2648,6 +2763,12 @@ packages: cpu: [loong64] os: [linux] + '@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.17.19': resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} engines: {node: '>=12'} @@ -2666,6 +2787,12 @@ packages: cpu: [mips64el] os: [linux] + '@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.17.19': resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} @@ -2684,6 +2811,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.17.19': resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} engines: {node: '>=12'} @@ -2702,6 +2835,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.17.19': resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} @@ -2720,6 +2859,12 @@ packages: cpu: [s390x] os: [linux] + '@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.17.19': resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} engines: {node: '>=12'} @@ -2738,6 +2883,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.17.19': resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} engines: {node: '>=12'} @@ -2756,6 +2907,18 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@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.17.19': resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} @@ -2774,6 +2937,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.17.19': resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} engines: {node: '>=12'} @@ -2792,6 +2961,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.17.19': resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} @@ -2810,6 +2985,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.17.19': resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} engines: {node: '>=12'} @@ -2828,6 +3009,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.17.19': resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} engines: {node: '>=12'} @@ -2846,6 +3033,12 @@ packages: cpu: [x64] os: [win32] + '@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} @@ -5532,6 +5725,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -8241,6 +8439,11 @@ packages: tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tsx@4.19.0: + resolution: {integrity: sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==} + engines: {node: '>=18.0.0'} + hasBin: true + turbo-stream@2.2.0: resolution: {integrity: sha512-FKFg7A0To1VU4CH9YmSMON5QphK0BXjSoiC7D9yMh+mEEbXLUP9qJ4hEt1qcjKtzncs1OpcnjZO8NgrlVbZH+g==} @@ -9182,6 +9385,9 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true + '@esbuild/aix-ppc64@0.23.1': + optional: true + '@esbuild/android-arm64@0.17.19': optional: true @@ -9191,6 +9397,9 @@ snapshots: '@esbuild/android-arm64@0.21.5': optional: true + '@esbuild/android-arm64@0.23.1': + optional: true + '@esbuild/android-arm@0.17.19': optional: true @@ -9200,6 +9409,9 @@ snapshots: '@esbuild/android-arm@0.21.5': optional: true + '@esbuild/android-arm@0.23.1': + optional: true + '@esbuild/android-x64@0.17.19': optional: true @@ -9209,6 +9421,9 @@ snapshots: '@esbuild/android-x64@0.21.5': optional: true + '@esbuild/android-x64@0.23.1': + optional: true + '@esbuild/darwin-arm64@0.17.19': optional: true @@ -9218,6 +9433,9 @@ snapshots: '@esbuild/darwin-arm64@0.21.5': optional: true + '@esbuild/darwin-arm64@0.23.1': + optional: true + '@esbuild/darwin-x64@0.17.19': optional: true @@ -9227,6 +9445,9 @@ snapshots: '@esbuild/darwin-x64@0.21.5': optional: true + '@esbuild/darwin-x64@0.23.1': + optional: true + '@esbuild/freebsd-arm64@0.17.19': optional: true @@ -9236,6 +9457,9 @@ snapshots: '@esbuild/freebsd-arm64@0.21.5': optional: true + '@esbuild/freebsd-arm64@0.23.1': + optional: true + '@esbuild/freebsd-x64@0.17.19': optional: true @@ -9245,6 +9469,9 @@ snapshots: '@esbuild/freebsd-x64@0.21.5': optional: true + '@esbuild/freebsd-x64@0.23.1': + optional: true + '@esbuild/linux-arm64@0.17.19': optional: true @@ -9254,6 +9481,9 @@ snapshots: '@esbuild/linux-arm64@0.21.5': optional: true + '@esbuild/linux-arm64@0.23.1': + optional: true + '@esbuild/linux-arm@0.17.19': optional: true @@ -9263,6 +9493,9 @@ snapshots: '@esbuild/linux-arm@0.21.5': optional: true + '@esbuild/linux-arm@0.23.1': + optional: true + '@esbuild/linux-ia32@0.17.19': optional: true @@ -9272,6 +9505,9 @@ snapshots: '@esbuild/linux-ia32@0.21.5': optional: true + '@esbuild/linux-ia32@0.23.1': + optional: true + '@esbuild/linux-loong64@0.17.19': optional: true @@ -9281,6 +9517,9 @@ snapshots: '@esbuild/linux-loong64@0.21.5': optional: true + '@esbuild/linux-loong64@0.23.1': + optional: true + '@esbuild/linux-mips64el@0.17.19': optional: true @@ -9290,6 +9529,9 @@ snapshots: '@esbuild/linux-mips64el@0.21.5': optional: true + '@esbuild/linux-mips64el@0.23.1': + optional: true + '@esbuild/linux-ppc64@0.17.19': optional: true @@ -9299,6 +9541,9 @@ snapshots: '@esbuild/linux-ppc64@0.21.5': optional: true + '@esbuild/linux-ppc64@0.23.1': + optional: true + '@esbuild/linux-riscv64@0.17.19': optional: true @@ -9308,6 +9553,9 @@ snapshots: '@esbuild/linux-riscv64@0.21.5': optional: true + '@esbuild/linux-riscv64@0.23.1': + optional: true + '@esbuild/linux-s390x@0.17.19': optional: true @@ -9317,6 +9565,9 @@ snapshots: '@esbuild/linux-s390x@0.21.5': optional: true + '@esbuild/linux-s390x@0.23.1': + optional: true + '@esbuild/linux-x64@0.17.19': optional: true @@ -9326,6 +9577,9 @@ snapshots: '@esbuild/linux-x64@0.21.5': optional: true + '@esbuild/linux-x64@0.23.1': + optional: true + '@esbuild/netbsd-x64@0.17.19': optional: true @@ -9335,6 +9589,12 @@ snapshots: '@esbuild/netbsd-x64@0.21.5': optional: true + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + '@esbuild/openbsd-x64@0.17.19': optional: true @@ -9344,6 +9604,9 @@ snapshots: '@esbuild/openbsd-x64@0.21.5': optional: true + '@esbuild/openbsd-x64@0.23.1': + optional: true + '@esbuild/sunos-x64@0.17.19': optional: true @@ -9353,6 +9616,9 @@ snapshots: '@esbuild/sunos-x64@0.21.5': optional: true + '@esbuild/sunos-x64@0.23.1': + optional: true + '@esbuild/win32-arm64@0.17.19': optional: true @@ -9362,6 +9628,9 @@ snapshots: '@esbuild/win32-arm64@0.21.5': optional: true + '@esbuild/win32-arm64@0.23.1': + optional: true + '@esbuild/win32-ia32@0.17.19': optional: true @@ -9371,6 +9640,9 @@ snapshots: '@esbuild/win32-ia32@0.21.5': optional: true + '@esbuild/win32-ia32@0.23.1': + optional: true + '@esbuild/win32-x64@0.17.19': optional: true @@ -9380,6 +9652,9 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true + '@esbuild/win32-x64@0.23.1': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.21.0))': dependencies: eslint: 9.9.1(jiti@1.21.0) @@ -10609,14 +10884,14 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tanstack/config@0.13.1(@types/node@20.14.9)(esbuild@0.21.5)(eslint@9.9.1(jiti@1.21.0))(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': + '@tanstack/config@0.13.1(@types/node@20.14.9)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.0))(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': dependencies: '@commitlint/parse': 19.0.3 '@eslint/js': 9.9.1 '@stylistic/eslint-plugin-js': 2.7.1(eslint@9.9.1(jiti@1.21.0)) commander: 12.1.0 current-git-branch: 1.1.0 - esbuild-register: 3.6.0(esbuild@0.21.5) + esbuild-register: 3.6.0(esbuild@0.23.1) eslint-plugin-import-x: 4.1.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) eslint-plugin-n: 17.10.2(eslint@9.9.1(jiti@1.21.0)) globals: 15.9.0 @@ -11225,19 +11500,19 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4))': dependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4))': dependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4))': dependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) optionalDependencies: webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) @@ -12186,10 +12461,10 @@ snapshots: es-module-lexer@1.5.4: {} - esbuild-register@3.6.0(esbuild@0.21.5): + esbuild-register@3.6.0(esbuild@0.23.1): dependencies: debug: 4.3.6 - esbuild: 0.21.5 + esbuild: 0.23.1 transitivePeerDependencies: - supports-color @@ -12270,6 +12545,33 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.23.1: + optionalDependencies: + '@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 + escalade@3.1.2: {} escape-html@1.0.3: {} @@ -13022,7 +13324,7 @@ snapshots: lodash: 4.17.21 tapable: 2.2.1 - html-webpack-plugin@5.6.0(@rspack/core@1.0.0(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.0(@rspack/core@1.0.0(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -13031,7 +13333,7 @@ snapshots: tapable: 2.2.1 optionalDependencies: '@rspack/core': 1.0.0(@swc/helpers@0.5.12) - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) htmlparser2@6.1.0: dependencies: @@ -15049,11 +15351,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - swc-loader@0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)): + swc-loader@0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: '@swc/core': 1.7.6(@swc/helpers@0.5.12) '@swc/counter': 0.1.3 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) swr@2.2.5(react@18.3.1): dependencies: @@ -15124,29 +15426,29 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) optionalDependencies: '@swc/core': 1.7.6(@swc/helpers@0.5.12) - esbuild: 0.21.5 + esbuild: 0.23.1 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1) optionalDependencies: '@swc/core': 1.7.6(@swc/helpers@0.5.12) - esbuild: 0.21.5 + esbuild: 0.23.1 terser@5.31.1: dependencies: @@ -15247,6 +15549,13 @@ snapshots: tslib@2.7.0: {} + tsx@4.19.0: + dependencies: + esbuild: 0.23.1 + get-tsconfig: 4.7.5 + optionalDependencies: + fsevents: 2.3.3 + turbo-stream@2.2.0: {} turbo-stream@2.3.0: {} @@ -15684,9 +15993,9 @@ snapshots: webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -15695,12 +16004,12 @@ snapshots: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) - webpack-dev-middleware@7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)): + webpack-dev-middleware@7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: colorette: 2.0.20 memfs: 4.9.3 @@ -15709,7 +16018,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0): dependencies: @@ -15741,10 +16050,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) + webpack-dev-middleware: 7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) ws: 8.18.0 optionalDependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - bufferutil @@ -15762,7 +16071,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -15785,7 +16094,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -15793,7 +16102,7 @@ snapshots: - esbuild - uglify-js - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -15816,7 +16125,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.21.5)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 optionalDependencies: From 3ecffa39b9699e3625acfa3ee41d01aa21b98c6b Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 5 Sep 2024 21:23:14 +0000 Subject: [PATCH 056/154] release: v1.56.0 --- examples/react/authenticated-routes/package.json | 2 +- examples/react/basic-file-based-codesplitting/package.json | 2 +- examples/react/basic-file-based/package.json | 2 +- examples/react/basic-react-query-file-based/package.json | 2 +- examples/react/basic-ssr-file-based/package.json | 4 ++-- examples/react/basic-ssr-streaming-file-based/package.json | 4 ++-- examples/react/basic-virtual-file-based/package.json | 4 ++-- examples/react/basic-virtual-inside-file-based/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 2 +- .../react/kitchen-sink-react-query-file-based/package.json | 2 +- examples/react/large-file-based/package.json | 2 +- examples/react/quickstart-file-based/package.json | 2 +- examples/react/quickstart-rspack-file-based/package.json | 2 +- examples/react/quickstart-webpack-file-based/package.json | 2 +- examples/react/search-validator-adapters/package.json | 2 +- examples/react/start-basic-auth/package.json | 4 ++-- examples/react/start-basic-counter/package.json | 2 +- examples/react/start-basic-react-query/package.json | 4 ++-- examples/react/start-basic-rsc/package.json | 4 ++-- examples/react/start-basic/package.json | 4 ++-- examples/react/start-clerk-basic/package.json | 4 ++-- examples/react/start-convex-trellaux/package.json | 4 ++-- examples/react/start-trellaux/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 2 +- examples/react/with-trpc/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/start/package.json | 2 +- packages/virtual-file-routes/package.json | 2 +- 31 files changed, 42 insertions(+), 42 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 8e9632571e..2da91739dd 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index bfde4a0650..de299ca889 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 13ce3a700b..7e9845f3a6 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -12,7 +12,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 1b7634cd56..b58357c656 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 5f35d21b3e..afda40e072 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", - "@tanstack/start": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", + "@tanstack/start": "^1.56.0", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 285cf16015..7b6e75452b 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", - "@tanstack/start": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", + "@tanstack/start": "^1.56.0", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 971f8ec8b7..b1495475a2 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-router": "^1.52.5", "@tanstack/router-devtools": "^1.52.5", - "@tanstack/router-plugin": "^1.55.0", - "@tanstack/virtual-file-routes": "^1.52.5", + "@tanstack/router-plugin": "^1.56.0", + "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index e17cf99fd0..176b9c5811 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-router": "^1.52.5", "@tanstack/router-devtools": "^1.52.5", - "@tanstack/router-plugin": "^1.55.0", - "@tanstack/virtual-file-routes": "^1.52.5", + "@tanstack/router-plugin": "^1.56.0", + "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 6b3259f541..c8cfca9e0b 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 2f63e43d85..7a33baf629 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -13,7 +13,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 913581b109..9669e0131c 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query": "^5.51.21", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index f8cd564ada..b59d99373f 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index ed04832833..724364a9e7 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.5.3" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index ee2dc11560..9873d5c289 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index d4c5974e1e..d0da00f6c4 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "@tanstack/router-zod-adapter": "^1.53.1", "@tanstack/router-valibot-adapter": "^1.53.1", "@tanstack/router-arktype-adapter": "^1.53.1", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index dc38e12329..2b26d7fc69 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -16,8 +16,8 @@ "@prisma/client": "5.17.0", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", - "@tanstack/start": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", + "@tanstack/start": "^1.56.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index d0ff148bec..0ce7c43421 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@tanstack/react-router": "^1.53.1", - "@tanstack/start": "^1.55.0", + "@tanstack/start": "^1.56.0", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 68a5ba120e..7d505a24de 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -17,8 +17,8 @@ "@tanstack/react-router": "^1.53.1", "@tanstack/react-router-with-query": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", - "@tanstack/start": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", + "@tanstack/start": "^1.56.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 774c6b8a14..cf99d3c7fa 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -14,8 +14,8 @@ "@babel/plugin-syntax-typescript": "^7.24.7", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", - "@tanstack/start": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", + "@tanstack/start": "^1.56.0", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 314336f9b4..08b42bc37d 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -14,8 +14,8 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", - "@tanstack/start": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", + "@tanstack/start": "^1.56.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index c3e09fbe5c..6b31378646 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -15,8 +15,8 @@ "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", - "@tanstack/start": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", + "@tanstack/start": "^1.56.0", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 1d1e4d36c5..74245a03bf 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -18,8 +18,8 @@ "@tanstack/react-router": "^1.53.1", "@tanstack/react-router-with-query": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", - "@tanstack/start": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", + "@tanstack/start": "^1.56.0", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index a78d1de034..c89e68819f 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -16,8 +16,8 @@ "@tanstack/react-router": "^1.53.1", "@tanstack/react-router-with-query": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", - "@tanstack/start": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", + "@tanstack/start": "^1.56.0", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index ab142de533..3adc65d66d 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -12,7 +12,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index f98377b057..63cd95463a 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -10,7 +10,7 @@ "dependencies": { "@tanstack/react-router": "^1.53.1", "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.55.0", + "@tanstack/router-plugin": "^1.56.0", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 6bff22784d..8fc500382b 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.55.0", + "version": "1.56.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 7530dce359..513080a9f7 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.55.0", + "version": "1.56.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 8f9dcd4ae6..13252e21c1 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.55.0", + "version": "1.56.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 03f3156b80..42aec0ab11 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.55.0", + "version": "1.56.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 0a3a81339b..4d46a40ea3 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.55.0", + "version": "1.56.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/virtual-file-routes/package.json b/packages/virtual-file-routes/package.json index b14dfd8e65..ed77b28bb6 100644 --- a/packages/virtual-file-routes/package.json +++ b/packages/virtual-file-routes/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/virtual-file-routes", - "version": "1.54.0", + "version": "1.56.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 0482da561a342292409254cbd4b9fdab75015db5 Mon Sep 17 00:00:00 2001 From: Christopher Horobin Date: Fri, 6 Sep 2024 01:33:37 +0200 Subject: [PATCH 057/154] perf(react-router): constant editor performance regardless how large a file based route tree is (#2243) --- .gitignore | 3 - .../large-file-based/src/routeTree.gen.ts | 123 ++- packages/react-router/src/Matches.tsx | 37 +- packages/react-router/src/RouterProvider.tsx | 8 +- packages/react-router/src/fileRoute.ts | 26 +- packages/react-router/src/index.tsx | 11 +- packages/react-router/src/link.tsx | 157 ++-- packages/react-router/src/redirects.ts | 16 +- packages/react-router/src/route.ts | 107 ++- packages/react-router/src/routeInfo.ts | 154 +++- packages/react-router/src/router.ts | 14 +- packages/react-router/src/useLoaderData.tsx | 6 +- packages/react-router/src/useLoaderDeps.tsx | 6 +- packages/react-router/src/useMatch.tsx | 12 +- packages/react-router/src/useNavigate.tsx | 10 +- packages/react-router/src/useParams.tsx | 13 +- packages/react-router/src/useRouteContext.ts | 11 +- packages/react-router/src/useSearch.tsx | 15 +- .../react-router/tests/Matches.test-d.tsx | 1 - packages/react-router/tests/link.test-d.tsx | 17 +- packages/react-router/tests/navigate.test.tsx | 22 +- .../react-router/tests/redirects.test-d.tsx | 2 +- packages/react-router/tests/route.test-d.tsx | 25 +- packages/react-router/tests/router.test-d.tsx | 68 ++ .../react-router/tests/useNavigate.test-d.tsx | 2 +- packages/router-generator/package.json | 3 + packages/router-generator/src/generator.ts | 133 ++- .../append-and-prepend/routeTree.gen.ts | 86 ++ .../append-and-prepend/routeTree.snapshot.ts | 33 +- .../append-and-prepend/routes/__root.tsx | 4 +- .../append-and-prepend/routes/index.tsx | 18 +- .../generator/custom-tokens/routeTree.gen.ts | 291 +++++++ .../custom-tokens/routeTree.snapshot.ts | 116 ++- .../generator/custom-tokens/routes/_1nd3x.tsx | 6 +- .../generator/custom-tokens/routes/__root.tsx | 12 +- .../custom-tokens/routes/blog/$slug.tsx | 6 +- .../custom-tokens/routes/blog/_1nd3x.tsx | 6 +- .../custom-tokens/routes/blog/_r0ut3_.tsx | 6 +- .../routes/posts/$postId/_1nd3x.tsx | 6 +- .../routes/posts/$postId/deep.tsx | 6 +- .../custom-tokens/routes/posts/_1nd3x.tsx | 6 +- .../custom-tokens/routes/posts/_r0ut3_.tsx | 6 +- .../file-modification/post.$postId.tsx | 45 + .../file-modification/routeTree.gen.ts | 165 ++++ .../file-modification/routeTree.snapshot.ts | 53 +- .../file-modification/routes/__root.tsx | 12 +- .../file-modification/snapshot/bar.lazy.tsx | 9 +- .../file-modification/snapshot/empty.lazy.tsx | 9 +- .../file-modification/snapshot/empty.tsx | 9 +- .../file-modification/snapshot/foo.tsx | 9 +- .../snapshot/initiallyEmpty.lazy.tsx | 9 +- .../snapshot/initiallyEmpty.tsx | 9 +- .../snapshot/initiallyLazy.tsx | 9 +- .../file-modification/template.lazy.tsx | 2 + .../generator/file-modification/template.tsx | 9 +- .../tests/generator/flat/routeTree.gen.ts | 316 +++++++ .../generator/flat/routeTree.snapshot.ts | 128 ++- .../generator/nested-layouts/routeTree.gen.ts | 816 ++++++++++++++++++ .../nested-layouts/routeTree.snapshot.ts | 340 +++++++- .../tests/generator/nested/routeTree.gen.ts | 316 +++++++ .../generator/nested/routeTree.snapshot.ts | 125 ++- .../tests/generator/nested/routes/__root.tsx | 12 +- .../generator/nested/routes/blog/$slug.tsx | 6 +- .../generator/nested/routes/blog/index.tsx | 6 +- .../generator/nested/routes/blog/route.tsx | 6 +- .../generator/nested/routes/blog_/stats.tsx | 6 +- .../tests/generator/nested/routes/index.tsx | 6 +- .../nested/routes/posts/$postId/deep.tsx | 9 +- .../nested/routes/posts/$postId/index.tsx | 9 +- .../generator/nested/routes/posts/index.tsx | 6 +- .../generator/nested/routes/posts/route.tsx | 6 +- .../tests/generator/nested/tests.test-d.ts | 534 ++++++++++++ .../generator/no-manifest/routeTree.gen.ts | 72 ++ .../no-manifest/routeTree.snapshot.ts | 33 +- .../generator/route-groups/routeTree.gen.ts | 88 ++ .../route-groups/routeTree.snapshot.ts | 33 +- .../generator/single-level/routeTree.gen.ts | 110 +++ .../single-level/routeTree.snapshot.ts | 38 +- .../virtual-inside-nested/routeTree.gen.ts | 166 ++++ .../routeTree.snapshot.ts | 59 +- .../tests/generator/virtual/routeTree.gen.ts | 354 ++++++++ .../generator/virtual/routeTree.snapshot.ts | 146 +++- .../tests/generator/virtual/routes/root.tsx | 2 +- packages/router-generator/tsconfig.json | 7 +- pnpm-lock.yaml | 4 + 85 files changed, 5345 insertions(+), 373 deletions(-) create mode 100644 packages/router-generator/tests/generator/append-and-prepend/routeTree.gen.ts create mode 100644 packages/router-generator/tests/generator/custom-tokens/routeTree.gen.ts create mode 100644 packages/router-generator/tests/generator/file-modification/post.$postId.tsx create mode 100644 packages/router-generator/tests/generator/file-modification/routeTree.gen.ts create mode 100644 packages/router-generator/tests/generator/flat/routeTree.gen.ts create mode 100644 packages/router-generator/tests/generator/nested-layouts/routeTree.gen.ts create mode 100644 packages/router-generator/tests/generator/nested/routeTree.gen.ts create mode 100644 packages/router-generator/tests/generator/nested/tests.test-d.ts create mode 100644 packages/router-generator/tests/generator/no-manifest/routeTree.gen.ts create mode 100644 packages/router-generator/tests/generator/route-groups/routeTree.gen.ts create mode 100644 packages/router-generator/tests/generator/single-level/routeTree.gen.ts create mode 100644 packages/router-generator/tests/generator/virtual-inside-nested/routeTree.gen.ts create mode 100644 packages/router-generator/tests/generator/virtual/routeTree.gen.ts diff --git a/.gitignore b/.gitignore index ce8d7b7cd9..aa0f287284 100644 --- a/.gitignore +++ b/.gitignore @@ -20,9 +20,6 @@ coverage *.tgz .wrangler -# tests -packages/router-generator/tests/**/*.gen.ts - # misc .DS_Store .env diff --git a/examples/react/large-file-based/src/routeTree.gen.ts b/examples/react/large-file-based/src/routeTree.gen.ts index 2205993a25..f60b8d145f 100644 --- a/examples/react/large-file-based/src/routeTree.gen.ts +++ b/examples/react/large-file-based/src/routeTree.gen.ts @@ -127,18 +127,117 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - ParamsRouteRoute: ParamsRouteRoute.addChildren({ - ParamsParamsPlaceholderRoute, - }), - SearchRouteRoute: SearchRouteRoute.addChildren({ - SearchSearchPlaceholderRoute, - }), - AbsoluteRoute, - LinkPropsRoute, - RelativeRoute, -}) +interface ParamsRouteRouteChildren { + ParamsParamsPlaceholderRoute: typeof ParamsParamsPlaceholderRoute +} + +const ParamsRouteRouteChildren: ParamsRouteRouteChildren = { + ParamsParamsPlaceholderRoute: ParamsParamsPlaceholderRoute, +} + +const ParamsRouteRouteWithChildren = ParamsRouteRoute._addFileChildren( + ParamsRouteRouteChildren, +) + +interface SearchRouteRouteChildren { + SearchSearchPlaceholderRoute: typeof SearchSearchPlaceholderRoute +} + +const SearchRouteRouteChildren: SearchRouteRouteChildren = { + SearchSearchPlaceholderRoute: SearchSearchPlaceholderRoute, +} + +const SearchRouteRouteWithChildren = SearchRouteRoute._addFileChildren( + SearchRouteRouteChildren, +) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/params': typeof ParamsRouteRouteWithChildren + '/search': typeof SearchRouteRouteWithChildren + '/absolute': typeof AbsoluteRoute + '/linkProps': typeof LinkPropsRoute + '/relative': typeof RelativeRoute + '/params/$paramsPlaceholder': typeof ParamsParamsPlaceholderRoute + '/search/searchPlaceholder': typeof SearchSearchPlaceholderRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/params': typeof ParamsRouteRouteWithChildren + '/search': typeof SearchRouteRouteWithChildren + '/absolute': typeof AbsoluteRoute + '/linkProps': typeof LinkPropsRoute + '/relative': typeof RelativeRoute + '/params/$paramsPlaceholder': typeof ParamsParamsPlaceholderRoute + '/search/searchPlaceholder': typeof SearchSearchPlaceholderRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/params': typeof ParamsRouteRouteWithChildren + '/search': typeof SearchRouteRouteWithChildren + '/absolute': typeof AbsoluteRoute + '/linkProps': typeof LinkPropsRoute + '/relative': typeof RelativeRoute + '/params/$paramsPlaceholder': typeof ParamsParamsPlaceholderRoute + '/search/searchPlaceholder': typeof SearchSearchPlaceholderRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/params' + | '/search' + | '/absolute' + | '/linkProps' + | '/relative' + | '/params/$paramsPlaceholder' + | '/search/searchPlaceholder' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '/params' + | '/search' + | '/absolute' + | '/linkProps' + | '/relative' + | '/params/$paramsPlaceholder' + | '/search/searchPlaceholder' + id: + | '/' + | '/params' + | '/search' + | '/absolute' + | '/linkProps' + | '/relative' + | '/params/$paramsPlaceholder' + | '/search/searchPlaceholder' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + ParamsRouteRoute: typeof ParamsRouteRouteWithChildren + SearchRouteRoute: typeof SearchRouteRouteWithChildren + AbsoluteRoute: typeof AbsoluteRoute + LinkPropsRoute: typeof LinkPropsRoute + RelativeRoute: typeof RelativeRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + ParamsRouteRoute: ParamsRouteRouteWithChildren, + SearchRouteRoute: SearchRouteRouteWithChildren, + AbsoluteRoute: AbsoluteRoute, + LinkPropsRoute: LinkPropsRoute, + RelativeRoute: RelativeRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/packages/react-router/src/Matches.tsx b/packages/react-router/src/Matches.tsx index fd58cab151..0b5f12ba36 100644 --- a/packages/react-router/src/Matches.tsx +++ b/packages/react-router/src/Matches.tsx @@ -169,31 +169,24 @@ export interface RouteMatch< export type MakeRouteMatch< TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], - TRouteId = ParseRoute['id'], + TRouteId = RouteIds, TStrict extends boolean = true, - TTypes extends AnyRoute['types'] = RouteById['types'], - TFullPath = TTypes['fullPath'], - TAllParams = TStrict extends false +> = RouteMatch< + TRouteId, + RouteById['types']['fullPath'], + TStrict extends false ? AllParams - : TTypes['allParams'], - TFullSearchSchema = TStrict extends false + : RouteById['types']['allParams'], + TStrict extends false ? FullSearchSchema - : TTypes['fullSearchSchema'], - TLoaderData = TStrict extends false + : RouteById['types']['fullSearchSchema'], + TStrict extends false ? AllLoaderData - : TTypes['loaderData'], - TAllContext = TStrict extends false + : RouteById['types']['loaderData'], + TStrict extends false ? AllContext - : TTypes['allContext'], - TLoaderDeps = TTypes['loaderDeps'], -> = RouteMatch< - TRouteId, - TFullPath, - TAllParams, - TFullSearchSchema, - TLoaderData, - TAllContext, - TLoaderDeps + : RouteById['types']['allContext'], + RouteById['types']['loaderDeps'] > export type AnyRouteMatch = RouteMatch @@ -264,11 +257,11 @@ export interface MatchRouteOptions { export type UseMatchRouteOptions< TRouter extends AnyRouter = RegisteredRouter, - TFrom extends RoutePaths = RoutePaths< + TFrom extends RoutePaths | string = RoutePaths< TRouter['routeTree'] >, TTo extends string = '', - TMaskFrom extends RoutePaths = TFrom, + TMaskFrom extends RoutePaths | string = TFrom, TMaskTo extends string = '', TOptions extends ToOptions< TRouter, diff --git a/packages/react-router/src/RouterProvider.tsx b/packages/react-router/src/RouterProvider.tsx index 6f17cbdac8..d9188a4559 100644 --- a/packages/react-router/src/RouterProvider.tsx +++ b/packages/react-router/src/RouterProvider.tsx @@ -30,8 +30,8 @@ export interface MatchLocation { } export type NavigateFn = < - TTo extends string, - TRouter extends AnyRouter = RegisteredRouter, + TRouter extends RegisteredRouter, + TTo extends string | undefined, TFrom extends RoutePaths | string = string, TMaskFrom extends RoutePaths | string = TFrom, TMaskTo extends string = '', @@ -42,8 +42,8 @@ export type NavigateFn = < ) => Promise export type BuildLocationFn = < - TTo extends string, - TRouter extends AnyRouter = RegisteredRouter, + TRouter extends RegisteredRouter, + TTo extends string | undefined, TFrom extends RoutePaths | string = string, TMaskFrom extends RoutePaths | string = TFrom, TMaskTo extends string = '', diff --git a/packages/react-router/src/fileRoute.ts b/packages/react-router/src/fileRoute.ts index 9f3a347d73..3cedea12c0 100644 --- a/packages/react-router/src/fileRoute.ts +++ b/packages/react-router/src/fileRoute.ts @@ -14,13 +14,14 @@ import type { AnySearchValidator, FileBaseRouteOptions, ResolveParams, + RootRoute, Route, RouteConstraints, RouteLoaderFn, UpdatableRouteOptions, } from './route' import type { MakeRouteMatch } from './Matches' -import type { RegisteredRouter } from './router' +import type { AnyRouter, RegisteredRouter } from './router' import type { RouteById, RouteIds } from './routeInfo' export interface FileRoutesByPath { @@ -29,6 +30,29 @@ export interface FileRoutesByPath { // } } +export interface FileRouteTypes { + fileRoutesByFullPath: any + fullPaths: any + to: any + fileRoutesByTo: any + id: any + fileRoutesById: any +} + +export type InferFileRouteTypes = + TRouteTree extends RootRoute< + any, + any, + any, + any, + any, + any, + any, + infer TFileRouteTypes extends FileRouteTypes + > + ? TFileRouteTypes + : never + export function createFileRoute< TFilePath extends keyof FileRoutesByPath, TParentRoute extends AnyRoute = FileRoutesByPath[TFilePath]['parentRoute'], diff --git a/packages/react-router/src/index.tsx b/packages/react-router/src/index.tsx index 59bbe43f38..913713db47 100644 --- a/packages/react-router/src/index.tsx +++ b/packages/react-router/src/index.tsx @@ -32,7 +32,11 @@ export { createLazyRoute, createLazyFileRoute, } from './fileRoute' -export type { FileRoutesByPath, LazyRouteOptions } from './fileRoute' +export type { + FileRoutesByPath, + FileRouteTypes, + LazyRouteOptions, +} from './fileRoute' export * from './history' @@ -88,6 +92,8 @@ export type { MatchRouteOptions, UseMatchRouteOptions, MakeMatchRouteOptions, + MakeRouteMatch, + MakeRouteMatchUnion, } from './Matches' export { matchContext } from './matchContext' @@ -230,6 +236,9 @@ export type { RoutePaths, FullSearchSchema, AllParams, + AllLoaderData, + FullSearchSchemaInput, + AllContext, } from './routeInfo' export { diff --git a/packages/react-router/src/link.tsx b/packages/react-router/src/link.tsx index 9c1ac28141..2513d2b6d2 100644 --- a/packages/react-router/src/link.tsx +++ b/packages/react-router/src/link.tsx @@ -97,6 +97,8 @@ export type Last> = T extends [...infer _, infer L] ? L : never +export type AddTrailingSlash = T extends `${string}/` ? T : `${T & string}/` + export type RemoveTrailingSlashes = T extends `${infer R}/` ? R : T export type RemoveLeadingSlashes = T extends `/${infer R}` ? R : T @@ -116,15 +118,14 @@ export type SearchPaths< TRouter extends AnyRouter, TSearchPath extends string, TPaths = ResolvePaths, -> = TPaths extends `${RemoveTrailingSlashes}${infer TRest}` - ? TRest - : never + TPrefix extends string = `${RemoveTrailingSlashes}/`, +> = TPaths extends `${TPrefix}${infer TRest}` ? TRest : never export type SearchRelativePathAutoComplete< TRouter extends AnyRouter, TTo extends string, TSearchPath extends string, -> = `${TTo}${SearchPaths}` +> = `${TTo}/${SearchPaths}` export type RelativeToParentPathAutoComplete< TRouter extends AnyRouter, @@ -144,7 +145,9 @@ export type RelativeToCurrentPathAutoComplete< TFrom extends string, TTo extends string, TResolvedPath extends string = ResolveRelativePath, -> = SearchRelativePathAutoComplete +> = + | SearchRelativePathAutoComplete + | CurrentPath> export type AbsolutePathAutoComplete< TRouter extends AnyRouter, @@ -173,22 +176,28 @@ export type RelativeToPathAutoComplete< TRouter extends AnyRouter, TFrom extends string, TTo extends string, -> = TTo extends `..${string}` - ? RelativeToParentPathAutoComplete> - : TTo extends `.${string}` - ? RelativeToCurrentPathAutoComplete< +> = string extends TFrom + ? AbsolutePathAutoComplete + : TTo extends `..${string}` + ? RelativeToParentPathAutoComplete< TRouter, TFrom, RemoveTrailingSlashes > - : AbsolutePathAutoComplete + : TTo extends `.${string}` + ? RelativeToCurrentPathAutoComplete< + TRouter, + TFrom, + RemoveTrailingSlashes + > + : AbsolutePathAutoComplete export type NavigateOptions< TRouter extends AnyRouter = RegisteredRouter, - TFrom extends RoutePaths | string = string, - TTo extends string = '', - TMaskFrom extends RoutePaths | string = TFrom, - TMaskTo extends string = '', + TFrom extends string = string, + TTo extends string | undefined = '.', + TMaskFrom extends string = TFrom, + TMaskTo extends string = '.', > = ToOptions & NavigateOptionProps export interface NavigateOptionProps { @@ -204,15 +213,15 @@ export interface NavigateOptionProps { export type ToOptions< TRouter extends AnyRouter = RegisteredRouter, - TFrom extends RoutePaths | string = string, - TTo extends string = '', - TMaskFrom extends RoutePaths | string = TFrom, - TMaskTo extends string = '', + TFrom extends string = string, + TTo extends string | undefined = '.', + TMaskFrom extends string = TFrom, + TMaskTo extends string = '.', > = ToSubOptions & MaskOptions export interface MaskOptions< in out TRouter extends AnyRouter, - in out TMaskFrom extends RoutePaths | string, + in out TMaskFrom extends string, in out TMaskTo extends string, > { _fromLocation?: ParsedLocation @@ -221,16 +230,16 @@ export interface MaskOptions< export type ToMaskOptions< TRouteTree extends AnyRouter = RegisteredRouter, - TMaskFrom extends RoutePaths | string = string, - TMaskTo extends string = '', + TMaskFrom extends string = string, + TMaskTo extends string = '.', > = ToSubOptions & { unmaskOnReload?: boolean } export type ToSubOptions< TRouter extends AnyRouter = RegisteredRouter, - TFrom extends RoutePaths | string = string, - TTo extends string = '', + TFrom extends string = string, + TTo extends string | undefined = '.', > = ToSubOptionsProps & SearchParamOptions & PathParamOptions @@ -238,7 +247,7 @@ export type ToSubOptions< export interface ToSubOptionsProps< in out TRouter extends AnyRouter = RegisteredRouter, in out TFrom extends RoutePaths | string = string, - in out TTo extends string = '', + in out TTo extends string | undefined = '.', > { to?: ToPathOption & {} hash?: true | Updater @@ -316,15 +325,17 @@ export type ResolveToParams< TTo, > = ResolveRelativePath extends infer TPath - ? string extends TPath - ? ResolveAllToParams - : TPath extends CatchAllPaths> + ? undefined extends TPath + ? never + : string extends TPath ? ResolveAllToParams - : ResolveRoute< - TRouter, - TFrom, - TTo - >['types'][ResolveToParamType] + : TPath extends CatchAllPaths> + ? ResolveAllToParams + : ResolveRoute< + TRouter, + TFrom, + TTo + >['types'][ResolveToParamType] : never type ResolveRelativeToParams< @@ -410,20 +421,12 @@ export type IsRequired< > : never -export type SearchParamOptions< - TRouter extends AnyRouter, - TFrom, - TTo extends string, -> = +export type SearchParamOptions = IsRequired extends never ? MakeOptionalSearchParams : MakeRequiredSearchParams -export type PathParamOptions< - TRouter extends AnyRouter, - TFrom, - TTo extends string, -> = +export type PathParamOptions = IsRequired extends never ? MakeOptionalPathParams : MakeRequiredPathParams @@ -431,7 +434,7 @@ export type PathParamOptions< export type ToPathOption< TRouter extends AnyRouter = AnyRouter, TFrom extends string = string, - TTo extends string = string, + TTo extends string | undefined = string, > = | CheckPath | RelativeToPathAutoComplete< @@ -469,9 +472,9 @@ export interface ActiveOptions { export type LinkOptions< TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, - TTo extends string = '', + TTo extends string | undefined = '.', TMaskFrom extends string = TFrom, - TMaskTo extends string = '', + TMaskTo extends string = '.', > = NavigateOptions & LinkOptionsProps export interface LinkOptionsProps { @@ -519,29 +522,31 @@ export type ResolveRelativePath = string extends TFrom ? TTo : string extends TTo ? TFrom - : TFrom extends string - ? TTo extends string - ? TTo extends '.' - ? TFrom - : TTo extends `./` - ? Join<[TFrom, '/']> - : TTo extends `./${infer TRest}` - ? ResolveRelativePath - : TTo extends `/${infer TRest}` - ? TTo - : Split extends ['..', ...infer ToRest] - ? Split extends [...infer FromRest, infer FromTail] - ? ToRest extends ['/'] - ? Join<['/', ...FromRest, '/']> - : ResolveRelativePath, Join> - : never - : Split extends ['.', ...infer ToRest] - ? ToRest extends ['/'] - ? Join<[TFrom, '/']> - : ResolveRelativePath> - : CleanPath, ...Split]>> + : undefined extends TTo + ? TFrom + : TFrom extends string + ? TTo extends string + ? TTo extends '.' + ? TFrom + : TTo extends `./` + ? Join<[TFrom, '/']> + : TTo extends `./${infer TRest}` + ? ResolveRelativePath + : TTo extends `/${infer TRest}` + ? TTo + : Split extends ['..', ...infer ToRest] + ? Split extends [...infer FromRest, infer FromTail] + ? ToRest extends ['/'] + ? Join<['/', ...FromRest, '/']> + : ResolveRelativePath, Join> + : never + : Split extends ['.', ...infer ToRest] + ? ToRest extends ['/'] + ? Join<[TFrom, '/']> + : ResolveRelativePath> + : CleanPath, ...Split]>> + : never : never - : never // type Test1 = ResolveRelativePath<'/', '/posts'> // // ^? @@ -844,18 +849,18 @@ export function useLinkProps< export type UseLinkPropsOptions< TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths | string = string, - TTo extends string = '', + TTo extends string | undefined = '.', TMaskFrom extends RoutePaths | string = TFrom, - TMaskTo extends string = '', + TMaskTo extends string = '.', > = ActiveLinkOptions & React.AnchorHTMLAttributes export type ActiveLinkOptions< TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, - TTo extends string = '', + TTo extends string | undefined = '.', TMaskFrom extends string = TFrom, - TMaskTo extends string = '', + TMaskTo extends string = '.', > = LinkOptions & ActiveLinkOptionProps type ActiveLinkAnchorProps = Omit< @@ -881,9 +886,9 @@ export interface ActiveLinkOptionProps { export type LinkProps< TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, - TTo extends string = '', + TTo extends string | undefined = '.', TMaskFrom extends string = TFrom, - TMaskTo extends string = '', + TMaskTo extends string = '.', > = ActiveLinkOptions & LinkPropsChildren @@ -918,16 +923,16 @@ export type LinkComponentProps< TComp, TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, - TTo extends string = '', + TTo extends string | undefined = '.', TMaskFrom extends string = TFrom, - TMaskTo extends string = '', + TMaskTo extends string = '.', > = LinkComponentReactProps & LinkProps export type LinkComponent = < TRouter extends RegisteredRouter = RegisteredRouter, TFrom extends string = string, - TTo extends string = '', + TTo extends string | undefined = undefined, TMaskFrom extends string = TFrom, TMaskTo extends string = '', >( diff --git a/packages/react-router/src/redirects.ts b/packages/react-router/src/redirects.ts index 7c3188e714..b1a29a6893 100644 --- a/packages/react-router/src/redirects.ts +++ b/packages/react-router/src/redirects.ts @@ -7,10 +7,10 @@ export type AnyRedirect = Redirect export type Redirect< TRouter extends AnyRouter = RegisteredRouter, - TFrom extends RoutePaths = '/', - TTo extends string = '', - TMaskFrom extends RoutePaths = TFrom, - TMaskTo extends string = '', + TFrom extends RoutePaths | string = '/', + TTo extends string | undefined = '.', + TMaskFrom extends RoutePaths | string = TFrom, + TMaskTo extends string = '.', > = { /** * @deprecated Use `statusCode` instead @@ -36,10 +36,10 @@ export type ResolvedRedirect< } export function redirect< - TRouter extends AnyRouter = RegisteredRouter, - TFrom extends RoutePaths | string = string, - TTo extends string = '', - TMaskFrom extends RoutePaths | string = TFrom, + TRouter extends RegisteredRouter, + TTo extends string | undefined, + TFrom extends string = string, + TMaskFrom extends string = TFrom, TMaskTo extends string = '', >( opts: Redirect, diff --git a/packages/react-router/src/route.ts b/packages/react-router/src/route.ts index 6256d83d42..9bd0f6ac77 100644 --- a/packages/react-router/src/route.ts +++ b/packages/react-router/src/route.ts @@ -1078,10 +1078,49 @@ export class Route< TLoaderFn, TNewChildren > { - this.children = ( - Array.isArray(children) ? children : Object.values(children) - ) as any - return this as any + return this._addFileChildren(children) + } + + _addFileChildren( + children: TNewChildren, + ): Route< + TParentRoute, + TPath, + TFullPath, + TCustomId, + TId, + TSearchValidator, + TParams, + TRouterContext, + TRouteContextFn, + TBeforeLoadFn, + TLoaderDeps, + TLoaderFn, + TNewChildren + > { + if (Array.isArray(children)) { + this.children = children as TChildren + } + + if (typeof children === 'object' && children !== null) { + this.children = Object.values(children) as TChildren + } + + return this as unknown as Route< + TParentRoute, + TPath, + TFullPath, + TCustomId, + TId, + TSearchValidator, + TParams, + TRouterContext, + TRouteContextFn, + TBeforeLoadFn, + TLoaderDeps, + TLoaderFn, + TNewChildren + > } updateLoader = (options: { @@ -1336,9 +1375,10 @@ export class RootRoute< in out TRouterContext = {}, in out TRouteContextFn = AnyContext, in out TBeforeLoadFn = AnyContext, - TLoaderDeps extends Record = {}, + in out TLoaderDeps extends Record = {}, in out TLoaderFn = undefined, - TChildren = unknown, + in out TChildren = unknown, + in out TFileRouteTypes = unknown, > extends Route< any, // TParentRoute '/', // TPath @@ -1383,9 +1423,58 @@ export class RootRoute< TBeforeLoadFn, TLoaderDeps, TLoaderFn, - TNewChildren + TNewChildren, + TFileRouteTypes + > { + super.addChildren(children) + return this as unknown as RootRoute< + TSearchValidator, + TRouterContext, + TRouteContextFn, + TBeforeLoadFn, + TLoaderDeps, + TLoaderFn, + TNewChildren, + TFileRouteTypes + > + } + + _addFileChildren( + children: TNewChildren, + ): RootRoute< + TSearchValidator, + TRouterContext, + TRouteContextFn, + TBeforeLoadFn, + TLoaderDeps, + TLoaderFn, + TNewChildren, + TFileRouteTypes > { - return super.addChildren(children) + super._addFileChildren(children) + return this as unknown as RootRoute< + TSearchValidator, + TRouterContext, + TRouteContextFn, + TBeforeLoadFn, + TLoaderDeps, + TLoaderFn, + TNewChildren, + TFileRouteTypes + > + } + + _addFileTypes(): RootRoute< + TSearchValidator, + TRouterContext, + TRouteContextFn, + TBeforeLoadFn, + TLoaderDeps, + TLoaderFn, + TChildren, + TFileRouteTypes + > { + return this as any } } @@ -1466,7 +1555,7 @@ export type RouteMask = { export function createRouteMask< TRouteTree extends AnyRoute, - TFrom extends RoutePaths, + TFrom extends RoutePaths | string, TTo extends string, >( opts: { diff --git a/packages/react-router/src/routeInfo.ts b/packages/react-router/src/routeInfo.ts index c19d6bc055..56d8df919f 100644 --- a/packages/react-router/src/routeInfo.ts +++ b/packages/react-router/src/routeInfo.ts @@ -1,3 +1,5 @@ +import type { InferFileRouteTypes } from './fileRoute' +import type { AddTrailingSlash, RemoveTrailingSlashes } from './link' import type { AnyRoute } from './route' import type { AnyRouter, TrailingSlashOption } from './router' import type { MergeUnion } from './utils' @@ -30,16 +32,32 @@ export type ParseRouteWithoutBranches = : never : never -export type RoutesById = { - [K in ParseRoute as K['id']]: K -} +export type CodeRoutesById = + ParseRoute extends infer TRoutes extends AnyRoute + ? { + [K in TRoutes as K['id']]: K + } + : never + +export type RoutesById = + InferFileRouteTypes extends never + ? CodeRoutesById + : InferFileRouteTypes['fileRoutesById'] export type RouteById = Extract< - RoutesById[TId], + RoutesById[TId & keyof RoutesById], AnyRoute > -export type RouteIds = ParseRoute['id'] +export type CodeRouteIds = + ParseRoute extends infer TRoutes extends AnyRoute + ? TRoutes['id'] + : never + +export type RouteIds = + InferFileRouteTypes extends never + ? CodeRouteIds + : InferFileRouteTypes['id'] export type ParentPath = 'always' extends TOption ? '../' @@ -53,22 +71,34 @@ export type CurrentPath = 'always' extends TOption ? '.' : './' | '.' -export type CatchAllPaths = - | CurrentPath - | ParentPath - | '' +export type CatchAllPaths = CurrentPath | ParentPath -export type RoutesByPath = { - [K in ParseRoute as K['fullPath']]: K -} +export type CodeRoutesByPath = + ParseRoute extends infer TRoutes extends AnyRoute + ? { + [K in TRoutes as K['fullPath']]: K + } + : never + +export type RoutesByPath = + InferFileRouteTypes extends never + ? CodeRoutesByPath + : InferFileRouteTypes['fileRoutesByFullPath'] export type RouteByPath = Extract< - RoutesByPath[TPath], + RoutesByPath[TPath & keyof RoutesByPath], AnyRoute > +export type CodeRoutePaths = + ParseRoute extends infer TRoutes extends AnyRoute + ? TRoutes['fullPath'] + : never + export type RoutePaths = - | ParseRoute['fullPath'] + | (InferFileRouteTypes extends never + ? CodeRoutePaths + : InferFileRouteTypes['fullPaths']) | '/' export type RouteToPathAlwaysTrailingSlash = @@ -107,7 +137,7 @@ export type RouteToByRouter< TRoute extends AnyRoute, > = RouteToPathByTrailingSlashOption[TrailingSlashOptionByRouter] -export type RouteToPath< +export type CodeRouteToPath< TRouter extends AnyRouter, TRouteTree extends AnyRoute, > = @@ -117,34 +147,82 @@ export type RouteToPath< : never : never -export type RoutesByToPath = { - [TRoute in ParseRouteWithoutBranches as RouteToByRouter< - TRouter, - TRoute - >]: TRoute -} +export type FileRouteToPath< + TRouter extends AnyRouter, + TTo = InferFileRouteTypes['to'], + TTrailingSlashOption = TrailingSlashOptionByRouter, +> = 'never' extends TTrailingSlashOption + ? TTo + : 'always' extends TTrailingSlashOption + ? AddTrailingSlash + : TTo | AddTrailingSlash -export type RouteByToPath = Extract< - RoutesByToPath[TTo], +export type RouteToPath< + TRouter extends AnyRouter, + TRouteTree extends AnyRoute, +> = + InferFileRouteTypes extends never + ? CodeRouteToPath + : FileRouteToPath + +export type CodeRoutesByToPath = + ParseRouteWithoutBranches extends infer TRoutes extends + AnyRoute + ? { + [TRoute in TRoutes as RouteToByRouter]: TRoute + } + : never + +export type RoutesByToPath = + InferFileRouteTypes extends never + ? CodeRoutesByToPath + : InferFileRouteTypes['fileRoutesByTo'] + +export type CodeRouteByToPath = Extract< + RoutesByToPath[TTo & keyof RoutesByToPath], AnyRoute > -export type FullSearchSchema = MergeUnion< - ParseRoute['types']['fullSearchSchema'] -> +export type FileRouteByToPath = + 'never' extends TrailingSlashOptionByRouter + ? CodeRouteByToPath + : 'always' extends TrailingSlashOptionByRouter + ? TTo extends '/' + ? CodeRouteByToPath + : TTo extends `${infer TPath}/` + ? CodeRouteByToPath + : never + : CodeRouteByToPath< + TRouter, + TTo extends '/' ? TTo : RemoveTrailingSlashes + > -export type FullSearchSchemaInput = MergeUnion< - ParseRoute['types']['fullSearchSchemaInput'] -> +export type RouteByToPath = + InferFileRouteTypes extends never + ? CodeRouteByToPath + : FileRouteByToPath -export type AllParams = MergeUnion< - ParseRoute['types']['allParams'] -> +export type FullSearchSchema = + ParseRoute extends infer TRoutes extends AnyRoute + ? MergeUnion + : never -export type AllContext = MergeUnion< - ParseRoute['types']['allContext'] -> +export type FullSearchSchemaInput = + ParseRoute extends infer TRoutes extends AnyRoute + ? MergeUnion + : never -export type AllLoaderData = MergeUnion< - ParseRoute['types']['loaderData'] -> +export type AllParams = + ParseRoute extends infer TRoutes extends AnyRoute + ? MergeUnion + : never + +export type AllContext = + ParseRoute extends infer TRoutes extends AnyRoute + ? MergeUnion + : never + +export type AllLoaderData = + ParseRoute extends infer TRoutes extends AnyRoute + ? MergeUnion + : never diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index 60821a02b2..db3a8ac5b3 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -1336,7 +1336,8 @@ export class Router< const fromRouteByFromPathRouteId = this.routesById[ - stayingMatches?.find((d) => d.pathname === fromPath)?.routeId + stayingMatches?.find((d) => d.pathname === fromPath) + ?.routeId as keyof this['routesById'] ] let pathname = dest.to @@ -1634,7 +1635,7 @@ export class Router< return this.buildAndCommitLocation({ ...rest, - to, + to: to as string, // to: toString, }) } @@ -2447,7 +2448,7 @@ export class Router< preloadRoute = async < TFrom extends RoutePaths | string = string, - TTo extends string = '', + TTo extends string | undefined = undefined, TMaskFrom extends RoutePaths | string = TFrom, TMaskTo extends string = '', >( @@ -2521,7 +2522,7 @@ export class Router< matchRoute = < TFrom extends RoutePaths = '/', - TTo extends string = '', + TTo extends string | undefined = undefined, TResolved = ResolveRelativePath>, >( location: ToOptions< @@ -2534,7 +2535,10 @@ export class Router< const matchLocation = { ...location, to: location.to - ? this.resolvePathWithBase((location.from || '') as string, location.to) + ? this.resolvePathWithBase( + (location.from || '') as string, + location.to as string, + ) : undefined, params: location.params || {}, leaveParams: true, diff --git a/packages/react-router/src/useLoaderData.tsx b/packages/react-router/src/useLoaderData.tsx index 43c38b4e76..bf12d61fb6 100644 --- a/packages/react-router/src/useLoaderData.tsx +++ b/packages/react-router/src/useLoaderData.tsx @@ -3,7 +3,7 @@ import type { RegisteredRouter } from './router' import type { AnyRoute } from './route' import type { MakeRouteMatch } from './Matches' import type { RouteIds } from './routeInfo' -import type { StrictOrFrom } from './utils' +import type { Constrain, StrictOrFrom } from './utils' export type UseLoaderDataOptions< TRouteTree extends AnyRoute, @@ -11,13 +11,13 @@ export type UseLoaderDataOptions< TStrict extends boolean, TRouteMatch extends MakeRouteMatch, TSelected, -> = StrictOrFrom & { +> = StrictOrFrom>, TStrict> & { select?: (match: Required['loaderData']) => TSelected } export function useLoaderData< TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], - TFrom extends RouteIds = RouteIds, + TFrom extends string | undefined = undefined, TStrict extends boolean = true, TRouteMatch extends MakeRouteMatch< TRouteTree, diff --git a/packages/react-router/src/useLoaderDeps.tsx b/packages/react-router/src/useLoaderDeps.tsx index add7f10de3..3a61502807 100644 --- a/packages/react-router/src/useLoaderDeps.tsx +++ b/packages/react-router/src/useLoaderDeps.tsx @@ -3,18 +3,18 @@ import type { RegisteredRouter } from './router' import type { AnyRoute } from './route' import type { MakeRouteMatch } from './Matches' import type { RouteIds } from './routeInfo' -import type { StrictOrFrom } from './utils' +import type { Constrain, StrictOrFrom } from './utils' export function useLoaderDeps< TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], - TFrom extends RouteIds = RouteIds, + TFrom extends string | undefined = undefined, TRouteMatch extends MakeRouteMatch = MakeRouteMatch< TRouteTree, TFrom >, TSelected = Required['loaderDeps'], >( - opts: StrictOrFrom & { + opts: StrictOrFrom>> & { select?: (match: TRouteMatch) => TSelected }, ): TSelected { diff --git a/packages/react-router/src/useMatch.tsx b/packages/react-router/src/useMatch.tsx index ac21808462..c912a993ae 100644 --- a/packages/react-router/src/useMatch.tsx +++ b/packages/react-router/src/useMatch.tsx @@ -6,7 +6,7 @@ import type { RegisteredRouter } from './router' import type { AnyRoute } from './route' import type { MakeRouteMatch } from './Matches' import type { RouteIds } from './routeInfo' -import type { StrictOrFrom } from './utils' +import type { Constrain, StrictOrFrom } from './utils' export type UseMatchOptions< TFrom, @@ -21,13 +21,19 @@ export type UseMatchOptions< export function useMatch< TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], - TFrom extends RouteIds = RouteIds, + TFrom extends string | undefined = undefined, TStrict extends boolean = true, TRouteMatch = MakeRouteMatch, TSelected = TRouteMatch, TThrow extends boolean = true, >( - opts: UseMatchOptions, + opts: UseMatchOptions< + Constrain>, + TStrict, + TRouteMatch, + TSelected, + TThrow + >, ): TThrow extends true ? TSelected : TSelected | undefined { const nearestMatchId = React.useContext(matchContext) diff --git a/packages/react-router/src/useNavigate.tsx b/packages/react-router/src/useNavigate.tsx index becc1b3699..6427e88f98 100644 --- a/packages/react-router/src/useNavigate.tsx +++ b/packages/react-router/src/useNavigate.tsx @@ -5,10 +5,10 @@ import type { RoutePaths } from './routeInfo' import type { AnyRouter, RegisteredRouter } from './router' export type UseNavigateResult = < - TTo extends string, - TRouter extends AnyRouter = RegisteredRouter, - TFrom extends RoutePaths | string = TDefaultFrom, - TMaskFrom extends RoutePaths | string = TFrom, + TRouter extends RegisteredRouter, + TTo extends string | undefined, + TFrom extends string = TDefaultFrom, + TMaskFrom extends string = TFrom, TMaskTo extends string = '', >({ from, @@ -51,7 +51,7 @@ export function useNavigate< export function Navigate< TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths | string = string, - TTo extends string = '', + TTo extends string | undefined = undefined, TMaskFrom extends RoutePaths | string = TFrom, TMaskTo extends string = '', >(props: NavigateOptions): null { diff --git a/packages/react-router/src/useParams.tsx b/packages/react-router/src/useParams.tsx index 3c29133778..1790c73211 100644 --- a/packages/react-router/src/useParams.tsx +++ b/packages/react-router/src/useParams.tsx @@ -2,7 +2,7 @@ import { useMatch } from './useMatch' import type { AnyRoute } from './route' import type { AllParams, RouteById, RouteIds } from './routeInfo' import type { RegisteredRouter } from './router' -import type { StrictOrFrom } from './utils' +import type { Constrain, StrictOrFrom } from './utils' export type UseParamsOptions< TFrom, @@ -15,13 +15,20 @@ export type UseParamsOptions< export function useParams< TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], - TFrom extends RouteIds = RouteIds, + TFrom extends string | undefined = undefined, TStrict extends boolean = true, TParams = TStrict extends false ? AllParams : RouteById['types']['allParams'], TSelected = TParams, ->(opts: UseParamsOptions): TSelected { +>( + opts: UseParamsOptions< + Constrain>, + TStrict, + TParams, + TSelected + >, +): TSelected { return useMatch({ ...opts, select: (match) => { diff --git a/packages/react-router/src/useRouteContext.ts b/packages/react-router/src/useRouteContext.ts index 772f1513e7..cbbcb7dc08 100644 --- a/packages/react-router/src/useRouteContext.ts +++ b/packages/react-router/src/useRouteContext.ts @@ -3,7 +3,7 @@ import type { MakeRouteMatch } from './Matches' import type { AnyRoute } from './route' import type { AllContext, RouteById, RouteIds } from './routeInfo' import type { RegisteredRouter } from './router' -import type { Expand, StrictOrFrom } from './utils' +import type { Constrain, Expand, StrictOrFrom } from './utils' export type UseRouteContextOptions< TFrom, @@ -16,14 +16,19 @@ export type UseRouteContextOptions< export function useRouteContext< TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], - TFrom extends RouteIds = RouteIds, + TFrom extends string | undefined = undefined, TStrict extends boolean = true, TRouteContext = TStrict extends false ? AllContext : Expand['types']['allContext']>, TSelected = TRouteContext, >( - opts: UseRouteContextOptions, + opts: UseRouteContextOptions< + Constrain>, + TStrict, + TRouteContext, + TSelected + >, ): TSelected { return useMatch({ ...(opts as any), diff --git a/packages/react-router/src/useSearch.tsx b/packages/react-router/src/useSearch.tsx index d4dbcebcb4..5b2b2017eb 100644 --- a/packages/react-router/src/useSearch.tsx +++ b/packages/react-router/src/useSearch.tsx @@ -3,7 +3,7 @@ import type { AnyRoute } from './route' import type { FullSearchSchema, RouteById, RouteIds } from './routeInfo' import type { RegisteredRouter } from './router' import type { MakeRouteMatch } from './Matches' -import type { Expand, StrictOrFrom } from './utils' +import type { Constrain, Expand, StrictOrFrom } from './utils' export type UseSearchOptions< TFrom, @@ -16,16 +16,23 @@ export type UseSearchOptions< export function useSearch< TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], - TFrom extends RouteIds = RouteIds, + TFrom extends string | undefined = undefined, TStrict extends boolean = true, TSearch = TStrict extends false ? FullSearchSchema : Expand['types']['fullSearchSchema']>, TSelected = TSearch, ->(opts: UseSearchOptions): TSelected { +>( + opts: UseSearchOptions< + Constrain>, + TStrict, + TSearch, + TSelected + >, +): TSelected { return useMatch({ ...opts, - select: (match: MakeRouteMatch) => { + select: (match) => { return opts.select ? opts.select(match.search) : match.search }, }) diff --git a/packages/react-router/tests/Matches.test-d.tsx b/packages/react-router/tests/Matches.test-d.tsx index 82e26e8aef..044dc051d9 100644 --- a/packages/react-router/tests/Matches.test-d.tsx +++ b/packages/react-router/tests/Matches.test-d.tsx @@ -10,7 +10,6 @@ import { useMatchRoute, useMatches, } from '../src' -import { FindValueByKey } from '../src/Matches' const rootRoute = createRootRoute() diff --git a/packages/react-router/tests/link.test-d.tsx b/packages/react-router/tests/link.test-d.tsx index 3e2ba47fea..6751180657 100644 --- a/packages/react-router/tests/link.test-d.tsx +++ b/packages/react-router/tests/link.test-d.tsx @@ -393,7 +393,6 @@ test('when navigating from a route with no params and no search to the root', () | '..' | '.' | '/' - | '' | '/invoices' | '/invoices/$invoiceId' | '/invoices/$invoiceId/edit' @@ -413,7 +412,6 @@ test('when navigating from a route with no params and no search to the root', () | '..' | '.' | '/' - | '' | '/invoices' | '/invoices/$invoiceId' | '/invoices/$invoiceId/edit' @@ -446,14 +444,13 @@ test('when navigating from a route with no params and no search to the root', () | undefined >() - expectTypeOf(Link) + expectTypeOf(Link) .parameter(0) .toHaveProperty('to') .toEqualTypeOf< | '..' | '.' | '/' - | '' | '/invoices' | '/invoices/$invoiceId' | '/invoices/$invoiceId/edit' @@ -610,25 +607,25 @@ test('when navigating from a route with no params and no search to the root', () }) test('when navigating from a route with no params and no search to the current route', () => { - expectTypeOf(Link) + expectTypeOf(Link) .parameter(0) .toHaveProperty('to') - .toEqualTypeOf<'./$postId' | undefined | './' | '.'>() + .toEqualTypeOf<'./$postId' | undefined | '.'>() - expectTypeOf(Link) + expectTypeOf(Link) .parameter(0) .toHaveProperty('to') - .toEqualTypeOf<'./$postId' | undefined | './' | '.'>() + .toEqualTypeOf<'./$postId' | undefined | '.'>() expectTypeOf(Link) .parameter(0) .toHaveProperty('to') .toEqualTypeOf<'./$postId/' | undefined | './'>() - expectTypeOf(Link) + expectTypeOf(Link) .parameter(0) .toHaveProperty('to') - .toEqualTypeOf<'./$postId' | undefined | './' | '.'>() + .toEqualTypeOf<'./$postId' | undefined | '.'>() expectTypeOf(Link) .parameter(0) diff --git a/packages/react-router/tests/navigate.test.tsx b/packages/react-router/tests/navigate.test.tsx index cf91b66122..27886f2a22 100644 --- a/packages/react-router/tests/navigate.test.tsx +++ b/packages/react-router/tests/navigate.test.tsx @@ -139,7 +139,7 @@ describe('router.navigate navigation using a single path param - object syntax f await router.navigate({ params: { slug: 'tkdodo' }, - }) + } as any) await router.invalidate() expect(router.state.location.pathname).toBe('/posts/tkdodo') @@ -176,7 +176,7 @@ describe('router.navigate navigation using a single path param - function syntax await router.navigate({ params: (p: any) => ({ ...p, slug: 'tkdodo' }), - }) + } as any) await router.invalidate() expect(router.state.location.pathname).toBe('/posts/tkdodo') @@ -213,7 +213,7 @@ describe('router.navigate navigation using multiple path params - object syntax await router.navigate({ params: { projectId: 'query' }, - }) + } as any) await router.invalidate() expect(router.state.location.pathname).toBe('/p/query/v1/react') @@ -248,7 +248,7 @@ describe('router.navigate navigation using multiple path params - object syntax await router.navigate({ params: { version: 'v3' }, - }) + } as any) await router.invalidate() expect(router.state.location.pathname).toBe('/p/router/v3/react') @@ -283,7 +283,7 @@ describe('router.navigate navigation using multiple path params - object syntax await router.navigate({ params: { framework: 'vue' }, - }) + } as any) await router.invalidate() expect(router.state.location.pathname).toBe('/p/router/v1/vue') @@ -320,7 +320,7 @@ describe('router.navigate navigation using multiple path params - function synta await router.navigate({ params: (p: any) => ({ ...p, projectId: 'query' }), - }) + } as any) await router.invalidate() expect(router.state.location.pathname).toBe('/p/query/v1/react') @@ -355,7 +355,7 @@ describe('router.navigate navigation using multiple path params - function synta await router.navigate({ params: (p: any) => ({ ...p, version: 'v3' }), - }) + } as any) await router.invalidate() expect(router.state.location.pathname).toBe('/p/router/v3/react') @@ -390,7 +390,7 @@ describe('router.navigate navigation using multiple path params - function synta await router.navigate({ params: (p: any) => ({ ...p, framework: 'vue' }), - }) + } as any) await router.invalidate() expect(router.state.location.pathname).toBe('/p/router/v1/vue') @@ -428,7 +428,7 @@ describe('router.navigate navigation using layout routes resolves correctly', as await router.navigate({ params: { username: 'tkdodo' }, - }) + } as any) await router.invalidate() expect(router.state.location.pathname).toBe('/u/tkdodo') @@ -464,7 +464,7 @@ describe('router.navigate navigation using layout routes resolves correctly', as await router.navigate({ params: { username: 'tkdodo' }, - }) + } as any) await router.invalidate() expect(router.state.location.pathname).toBe('/g/tkdodo') @@ -482,7 +482,7 @@ describe('router.navigate navigation using layout routes resolves correctly', as await router.navigate({ search: { 'foo=bar': 3 }, - }) + } as any) await router.invalidate() expect(router.state.location.search).toStrictEqual({ 'foo=bar': 3 }) diff --git a/packages/react-router/tests/redirects.test-d.tsx b/packages/react-router/tests/redirects.test-d.tsx index faee64f146..2516f14ec0 100644 --- a/packages/react-router/tests/redirects.test-d.tsx +++ b/packages/react-router/tests/redirects.test-d.tsx @@ -36,7 +36,7 @@ const defaultRouter = createRouter({ type DefaultRouter = typeof defaultRouter test('can redirect to valid route', () => { - expectTypeOf(redirect) + expectTypeOf(redirect) .parameter(0) .toHaveProperty('to') .toEqualTypeOf< diff --git a/packages/react-router/tests/route.test-d.tsx b/packages/react-router/tests/route.test-d.tsx index 3fdfb5d2b8..9f42bd5bb1 100644 --- a/packages/react-router/tests/route.test-d.tsx +++ b/packages/react-router/tests/route.test-d.tsx @@ -1051,17 +1051,16 @@ test('when creating a child route with context, search, params and beforeLoad', invoicePermissions: readonly ['view'] } }>() - expectTypeOf(opts.buildLocation<'/', Router>) + expectTypeOf(opts.buildLocation) .parameter(0) .toHaveProperty('to') .toEqualTypeOf< - | '/' - | '/invoices' - | '/invoices/$invoiceId' - | '/invoices/$invoiceId/details' - | '/invoices/$invoiceId/details/$detailId' | '.' - | '..' + | './' + | './invoices' + | './invoices/$invoiceId' + | './invoices/$invoiceId/details' + | './invoices/$invoiceId/details/$detailId' | undefined >() }, @@ -1459,18 +1458,18 @@ test('when creating a child route with no explicit search input', () => { const navigate = indexRoute.useNavigate() - expectTypeOf(navigate<'/', typeof router, '/'>) + expectTypeOf(navigate) .parameter(0) .toHaveProperty('search') .exclude() .toEqualTypeOf<{ page: number }>() - expectTypeOf(navigate<'/', typeof router, '/'>) + expectTypeOf(navigate) .parameter(0) .toHaveProperty('search') .returns.toEqualTypeOf<{ page: number }>() - expectTypeOf(navigate<'/', typeof router, '/'>) + expectTypeOf(navigate) .parameter(0) .toHaveProperty('search') .parameter(0) @@ -1518,18 +1517,18 @@ test('when creating a child route with an explicit search input', () => { const navigate = indexRoute.useNavigate() - expectTypeOf(navigate<'/', typeof router, '/'>) + expectTypeOf(navigate) .parameter(0) .toHaveProperty('search') .exclude() .toEqualTypeOf<{ input: string }>() - expectTypeOf(navigate<'/', typeof router, '/'>) + expectTypeOf(navigate) .parameter(0) .toHaveProperty('search') .returns.toEqualTypeOf<{ input: string }>() - expectTypeOf(navigate<'/', typeof router, '/'>) + expectTypeOf(navigate) .parameter(0) .toHaveProperty('search') .parameter(0) diff --git a/packages/react-router/tests/router.test-d.tsx b/packages/react-router/tests/router.test-d.tsx index 9ec12d7223..8d565b805b 100644 --- a/packages/react-router/tests/router.test-d.tsx +++ b/packages/react-router/tests/router.test-d.tsx @@ -28,6 +28,74 @@ test('when creating a router without context', () => { }>() }) +test('when navigating using router', () => { + const rootRoute = createRootRoute() + + const indexRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/', + }) + + const postsRoute = createRoute({ + getParentRoute: () => rootRoute, + path: 'posts', + validateSearch: () => ({ + page: 0, + }), + }) + + const routeTree = rootRoute.addChildren([indexRoute, postsRoute]) + + const router = createRouter({ + routeTree, + }) + + expectTypeOf(router.navigate) + .parameter(0) + .toHaveProperty('to') + .toEqualTypeOf<'/posts' | '/' | '.' | '..' | undefined>() + + expectTypeOf(router.navigate) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: Array) => any>() + .toEqualTypeOf<{ page: number }>() +}) + +test('when building location using router', () => { + const rootRoute = createRootRoute() + + const indexRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/', + }) + + const postsRoute = createRoute({ + getParentRoute: () => rootRoute, + path: 'posts', + validateSearch: () => ({ + page: 0, + }), + }) + + const routeTree = rootRoute.addChildren([indexRoute, postsRoute]) + + const router = createRouter({ + routeTree, + }) + + expectTypeOf(router.buildLocation) + .parameter(0) + .toHaveProperty('to') + .toEqualTypeOf<'/posts' | '/' | '.' | '..' | undefined>() + + expectTypeOf(router.buildLocation) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: Array) => any>() + .toEqualTypeOf<{ page: number }>() +}) + test('when creating a router with context', () => { const rootRoute = createRootRouteWithContext<{ userId: string }>()() diff --git a/packages/react-router/tests/useNavigate.test-d.tsx b/packages/react-router/tests/useNavigate.test-d.tsx index 9e79bc7a9f..7c19c09887 100644 --- a/packages/react-router/tests/useNavigate.test-d.tsx +++ b/packages/react-router/tests/useNavigate.test-d.tsx @@ -38,7 +38,7 @@ type DefaultRouter = typeof defaultRouter test('when navigating to a route', () => { const navigate = useNavigate() - expectTypeOf(navigate<'/invoices', DefaultRouter>) + expectTypeOf(navigate) .parameter(0) .toHaveProperty('to') .toEqualTypeOf< diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 513080a9f7..b4c8ea85ed 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -67,5 +67,8 @@ "tsx": "^4.19.0", "prettier": "^3.3.3", "zod": "^3.23.8" + }, + "devDependencies": { + "@tanstack/react-router": "^1.53.1" } } diff --git a/packages/router-generator/src/generator.ts b/packages/router-generator/src/generator.ts index f282381db6..c91ac903fc 100644 --- a/packages/router-generator/src/generator.ts +++ b/packages/router-generator/src/generator.ts @@ -392,13 +392,29 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ if (node.children?.length) { const childConfigs = buildRouteTreeConfig(node.children, depth + 1) - return `${route}: ${route}.addChildren({${spaces(depth * 4)}${childConfigs}})` + + const childrenDeclaration = `interface ${route}Children { + ${node.children.map((child) => `${child.variableName}Route: typeof ${getResolvedRouteNodeVariableName(child)}`).join(',')} + }` + + const children = `const ${route}Children: ${route}Children = { + ${node.children.map((child) => `${child.variableName}Route: ${getResolvedRouteNodeVariableName(child)}`).join(',')} + }` + + const routeWithChildren = `const ${route}WithChildren = ${route}._addFileChildren(${route}Children)` + + return [ + childConfigs, + childrenDeclaration, + children, + routeWithChildren, + ].join('\n\n') } - return route + return undefined }) - return children.filter(Boolean).join(`,`) + return children.filter(Boolean).join('\n\n') } const routeConfigChildrenText = buildRouteTreeConfig(routeTree) @@ -572,7 +588,43 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ }`, ]), '// Create and export the route tree', - `export const routeTree = rootRoute.addChildren({${routeConfigChildrenText}})`, + routeConfigChildrenText, + `interface FileRoutesByFullPath { + ${[...createRouteNodesByFullPath(routeNodes).entries()].map( + ([fullPath, routeNode]) => { + return `'${fullPath}': typeof ${getResolvedRouteNodeVariableName(routeNode)}` + }, + )} + }`, + `interface FileRoutesByTo { + ${[...createRouteNodesByTo(routeNodes).entries()].map( + ([to, routeNode]) => { + return `'${to}': typeof ${getResolvedRouteNodeVariableName(routeNode)}` + }, + )} + }`, + `interface FileRoutesById { + ${[...createRouteNodesById(routeNodes).entries()].map( + ([id, routeNode]) => { + return `'${id}': typeof ${getResolvedRouteNodeVariableName(routeNode)}` + }, + )} + }`, + `interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: ${[...createRouteNodesByFullPath(routeNodes).keys()].map((fullPath) => `'${fullPath}'`).join('|')} + fileRoutesByTo: FileRoutesByTo + to: ${[...createRouteNodesByTo(routeNodes).keys()].map((to) => `'${to}'`).join('|')} + id: ${[...createRouteNodesById(routeNodes).keys()].map((id) => `'${id}'`).join('|')} + fileRoutesById: FileRoutesById + }`, + `interface RootRouteChildren { + ${routeTree.map((child) => `${child.variableName}Route: typeof ${getResolvedRouteNodeVariableName(child)}`).join(',')} + }`, + `const rootRouteChildren: RootRouteChildren = { + ${routeTree.map((child) => `${child.variableName}Route: ${getResolvedRouteNodeVariableName(child)}`).join(',')} + }`, + `export const routeTree = rootRoute._addFileChildren(rootRouteChildren)._addFileTypes()`, ...config.routeTreeFileFooter, ] .filter(Boolean) @@ -752,6 +804,56 @@ export function hasParentRoute( return hasParentRoute(routes, node, parentRoutePath) } +/** + * Gets the final variable name for a route + */ +export const getResolvedRouteNodeVariableName = ( + routeNode: RouteNode, +): string => { + return routeNode.children?.length + ? `${routeNode.variableName}RouteWithChildren` + : `${routeNode.variableName}Route` +} + +/** + * Creates a map from fullPath to routeNode + */ +export const createRouteNodesByFullPath = ( + routeNodes: Array, +): Map => { + return new Map( + routeNodes.map((routeNode) => [inferFullPath(routeNode), routeNode]), + ) +} + +/** + * Create a map from 'to' to a routeNode + */ +export const createRouteNodesByTo = ( + routeNodes: Array, +): Map => { + return new Map( + dedupeBranchesAndIndexRoutes(routeNodes).map((routeNode) => [ + inferTo(routeNode), + routeNode, + ]), + ) +} + +/** + * Create a map from 'id' to a routeNode + */ +export const createRouteNodesById = ( + routeNodes: Array, +): Map => { + return new Map( + routeNodes.map((routeNode) => { + const [_, id] = getFilePathIdAndRouteIdFromPath(routeNode.routePath) + return [id, routeNode] + }), + ) +} + /** * Infers the full path for use by TS */ @@ -772,6 +874,29 @@ export const inferPath = (routeNode: RouteNode): string => { : (routeNode.cleanedPath?.replace(/\/$/, '') ?? '') } +/** + * Infers to path + */ +export const inferTo = (routeNode: RouteNode): string => { + const fullPath = inferFullPath(routeNode) + + if (fullPath === '/') return fullPath + + return fullPath.replace(/\/$/, '') +} + +/** + * Dedupes branches and index routes + */ +export const dedupeBranchesAndIndexRoutes = ( + routes: Array, +): Array => { + return routes.filter((route) => { + if (route.children?.find((child) => child.cleanedPath === '/')) return false + return true + }) +} + function getFilePathIdAndRouteIdFromPath(pathname?: string) { const filePathId = removeTrailingUnderscores(pathname) const id = removeGroups(filePathId ?? '') diff --git a/packages/router-generator/tests/generator/append-and-prepend/routeTree.gen.ts b/packages/router-generator/tests/generator/append-and-prepend/routeTree.gen.ts new file mode 100644 index 0000000000..82604e5a9e --- /dev/null +++ b/packages/router-generator/tests/generator/append-and-prepend/routeTree.gen.ts @@ -0,0 +1,86 @@ +// prepend1 + +// prepend2 + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as IndexImport } from './routes/index' + +// Create/Update Routes + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + } +} + +// Create and export the route tree + +interface FileRoutesByFullPath { + '/': typeof IndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' + fileRoutesByTo: FileRoutesByTo + to: '/' + id: '/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +// append1 + +// append2 + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/" + ] + }, + "/": { + "filePath": "index.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/append-and-prepend/routeTree.snapshot.ts b/packages/router-generator/tests/generator/append-and-prepend/routeTree.snapshot.ts index 9ce8734674..82604e5a9e 100644 --- a/packages/router-generator/tests/generator/append-and-prepend/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/append-and-prepend/routeTree.snapshot.ts @@ -32,7 +32,38 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ IndexRoute }) +interface FileRoutesByFullPath { + '/': typeof IndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' + fileRoutesByTo: FileRoutesByTo + to: '/' + id: '/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() // append1 diff --git a/packages/router-generator/tests/generator/append-and-prepend/routes/__root.tsx b/packages/router-generator/tests/generator/append-and-prepend/routes/__root.tsx index ab504e42e9..83a28ec7da 100644 --- a/packages/router-generator/tests/generator/append-and-prepend/routes/__root.tsx +++ b/packages/router-generator/tests/generator/append-and-prepend/routes/__root.tsx @@ -1 +1,3 @@ -/** */ +import { createRootRoute } from '@tanstack/react-router' + +export const Route = createRootRoute({}) diff --git a/packages/router-generator/tests/generator/append-and-prepend/routes/index.tsx b/packages/router-generator/tests/generator/append-and-prepend/routes/index.tsx index ab504e42e9..a525ebff0c 100644 --- a/packages/router-generator/tests/generator/append-and-prepend/routes/index.tsx +++ b/packages/router-generator/tests/generator/append-and-prepend/routes/index.tsx @@ -1 +1,17 @@ -/** */ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, + validateSearch: () => ({ + indexSearch: 'indexSearch', + }), +}) + +function Home() { + return ( +
+

Welcome Home!

+
+ ) +} diff --git a/packages/router-generator/tests/generator/custom-tokens/routeTree.gen.ts b/packages/router-generator/tests/generator/custom-tokens/routeTree.gen.ts new file mode 100644 index 0000000000..5ce44150e4 --- /dev/null +++ b/packages/router-generator/tests/generator/custom-tokens/routeTree.gen.ts @@ -0,0 +1,291 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as PostsR0ut3Import } from './routes/posts/_r0ut3_' +import { Route as BlogR0ut3Import } from './routes/blog/_r0ut3_' +import { Route as R1nd3xImport } from './routes/_1nd3x' +import { Route as Posts1nd3xImport } from './routes/posts/_1nd3x' +import { Route as Blog1nd3xImport } from './routes/blog/_1nd3x' +import { Route as BlogSlugImport } from './routes/blog/$slug' +import { Route as PostsPostId1nd3xImport } from './routes/posts/$postId/_1nd3x' +import { Route as PostsPostIdDeepImport } from './routes/posts/$postId/deep' + +// Create/Update Routes + +const PostsR0ut3Route = PostsR0ut3Import.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const BlogR0ut3Route = BlogR0ut3Import.update({ + path: '/blog', + getParentRoute: () => rootRoute, +} as any) + +const R1nd3xRoute = R1nd3xImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const Posts1nd3xRoute = Posts1nd3xImport.update({ + path: '/', + getParentRoute: () => PostsR0ut3Route, +} as any) + +const Blog1nd3xRoute = Blog1nd3xImport.update({ + path: '/', + getParentRoute: () => BlogR0ut3Route, +} as any) + +const BlogSlugRoute = BlogSlugImport.update({ + path: '/$slug', + getParentRoute: () => BlogR0ut3Route, +} as any) + +const PostsPostId1nd3xRoute = PostsPostId1nd3xImport.update({ + path: '/$postId/', + getParentRoute: () => PostsR0ut3Route, +} as any) + +const PostsPostIdDeepRoute = PostsPostIdDeepImport.update({ + path: '/$postId/deep', + getParentRoute: () => PostsR0ut3Route, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof R1nd3xImport + parentRoute: typeof rootRoute + } + '/blog': { + id: '/blog' + path: '/blog' + fullPath: '/blog' + preLoaderRoute: typeof BlogR0ut3Import + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsR0ut3Import + parentRoute: typeof rootRoute + } + '/blog/$slug': { + id: '/blog/$slug' + path: '/$slug' + fullPath: '/blog/$slug' + preLoaderRoute: typeof BlogSlugImport + parentRoute: typeof BlogR0ut3Import + } + '/blog/': { + id: '/blog/' + path: '/' + fullPath: '/blog/' + preLoaderRoute: typeof Blog1nd3xImport + parentRoute: typeof BlogR0ut3Import + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof Posts1nd3xImport + parentRoute: typeof PostsR0ut3Import + } + '/posts/$postId/deep': { + id: '/posts/$postId/deep' + path: '/$postId/deep' + fullPath: '/posts/$postId/deep' + preLoaderRoute: typeof PostsPostIdDeepImport + parentRoute: typeof PostsR0ut3Import + } + '/posts/$postId/': { + id: '/posts/$postId/' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof PostsPostId1nd3xImport + parentRoute: typeof PostsR0ut3Import + } + } +} + +// Create and export the route tree + +interface BlogR0ut3RouteChildren { + BlogSlugRoute: typeof BlogSlugRoute + Blog1nd3xRoute: typeof Blog1nd3xRoute +} + +const BlogR0ut3RouteChildren: BlogR0ut3RouteChildren = { + BlogSlugRoute: BlogSlugRoute, + Blog1nd3xRoute: Blog1nd3xRoute, +} + +const BlogR0ut3RouteWithChildren = BlogR0ut3Route._addFileChildren( + BlogR0ut3RouteChildren, +) + +interface PostsR0ut3RouteChildren { + Posts1nd3xRoute: typeof Posts1nd3xRoute + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute + PostsPostId1nd3xRoute: typeof PostsPostId1nd3xRoute +} + +const PostsR0ut3RouteChildren: PostsR0ut3RouteChildren = { + Posts1nd3xRoute: Posts1nd3xRoute, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, + PostsPostId1nd3xRoute: PostsPostId1nd3xRoute, +} + +const PostsR0ut3RouteWithChildren = PostsR0ut3Route._addFileChildren( + PostsR0ut3RouteChildren, +) + +interface FileRoutesByFullPath { + '/': typeof R1nd3xRoute + '/blog': typeof BlogR0ut3RouteWithChildren + '/posts': typeof PostsR0ut3RouteWithChildren + '/blog/$slug': typeof BlogSlugRoute + '/blog/': typeof Blog1nd3xRoute + '/posts/': typeof Posts1nd3xRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/posts/$postId': typeof PostsPostId1nd3xRoute +} + +interface FileRoutesByTo { + '/': typeof R1nd3xRoute + '/blog/$slug': typeof BlogSlugRoute + '/blog': typeof Blog1nd3xRoute + '/posts': typeof Posts1nd3xRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/posts/$postId': typeof PostsPostId1nd3xRoute +} + +interface FileRoutesById { + '/': typeof R1nd3xRoute + '/blog': typeof BlogR0ut3RouteWithChildren + '/posts': typeof PostsR0ut3RouteWithChildren + '/blog/$slug': typeof BlogSlugRoute + '/blog/': typeof Blog1nd3xRoute + '/posts/': typeof Posts1nd3xRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/posts/$postId/': typeof PostsPostId1nd3xRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '/blog/$slug' + | '/blog' + | '/posts' + | '/posts/$postId/deep' + | '/posts/$postId' + id: + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + R1nd3xRoute: typeof R1nd3xRoute + BlogR0ut3Route: typeof BlogR0ut3RouteWithChildren + PostsR0ut3Route: typeof PostsR0ut3RouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + R1nd3xRoute: R1nd3xRoute, + BlogR0ut3Route: BlogR0ut3RouteWithChildren, + PostsR0ut3Route: PostsR0ut3RouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/blog", + "/posts" + ] + }, + "/": { + "filePath": "_1nd3x.tsx" + }, + "/blog": { + "filePath": "blog/_r0ut3_.tsx", + "children": [ + "/blog/$slug", + "/blog/" + ] + }, + "/posts": { + "filePath": "posts/_r0ut3_.tsx", + "children": [ + "/posts/", + "/posts/$postId/deep", + "/posts/$postId/" + ] + }, + "/blog/$slug": { + "filePath": "blog/$slug.tsx", + "parent": "/blog" + }, + "/blog/": { + "filePath": "blog/_1nd3x.tsx", + "parent": "/blog" + }, + "/posts/": { + "filePath": "posts/_1nd3x.tsx", + "parent": "/posts" + }, + "/posts/$postId/deep": { + "filePath": "posts/$postId/deep.tsx", + "parent": "/posts" + }, + "/posts/$postId/": { + "filePath": "posts/$postId/_1nd3x.tsx", + "parent": "/posts" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/custom-tokens/routeTree.snapshot.ts b/packages/router-generator/tests/generator/custom-tokens/routeTree.snapshot.ts index 3fa9ec1f8c..5ce44150e4 100644 --- a/packages/router-generator/tests/generator/custom-tokens/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/custom-tokens/routeTree.snapshot.ts @@ -127,15 +127,113 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - R1nd3xRoute, - BlogR0ut3Route: BlogR0ut3Route.addChildren({ BlogSlugRoute, Blog1nd3xRoute }), - PostsR0ut3Route: PostsR0ut3Route.addChildren({ - Posts1nd3xRoute, - PostsPostIdDeepRoute, - PostsPostId1nd3xRoute, - }), -}) +interface BlogR0ut3RouteChildren { + BlogSlugRoute: typeof BlogSlugRoute + Blog1nd3xRoute: typeof Blog1nd3xRoute +} + +const BlogR0ut3RouteChildren: BlogR0ut3RouteChildren = { + BlogSlugRoute: BlogSlugRoute, + Blog1nd3xRoute: Blog1nd3xRoute, +} + +const BlogR0ut3RouteWithChildren = BlogR0ut3Route._addFileChildren( + BlogR0ut3RouteChildren, +) + +interface PostsR0ut3RouteChildren { + Posts1nd3xRoute: typeof Posts1nd3xRoute + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute + PostsPostId1nd3xRoute: typeof PostsPostId1nd3xRoute +} + +const PostsR0ut3RouteChildren: PostsR0ut3RouteChildren = { + Posts1nd3xRoute: Posts1nd3xRoute, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, + PostsPostId1nd3xRoute: PostsPostId1nd3xRoute, +} + +const PostsR0ut3RouteWithChildren = PostsR0ut3Route._addFileChildren( + PostsR0ut3RouteChildren, +) + +interface FileRoutesByFullPath { + '/': typeof R1nd3xRoute + '/blog': typeof BlogR0ut3RouteWithChildren + '/posts': typeof PostsR0ut3RouteWithChildren + '/blog/$slug': typeof BlogSlugRoute + '/blog/': typeof Blog1nd3xRoute + '/posts/': typeof Posts1nd3xRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/posts/$postId': typeof PostsPostId1nd3xRoute +} + +interface FileRoutesByTo { + '/': typeof R1nd3xRoute + '/blog/$slug': typeof BlogSlugRoute + '/blog': typeof Blog1nd3xRoute + '/posts': typeof Posts1nd3xRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/posts/$postId': typeof PostsPostId1nd3xRoute +} + +interface FileRoutesById { + '/': typeof R1nd3xRoute + '/blog': typeof BlogR0ut3RouteWithChildren + '/posts': typeof PostsR0ut3RouteWithChildren + '/blog/$slug': typeof BlogSlugRoute + '/blog/': typeof Blog1nd3xRoute + '/posts/': typeof Posts1nd3xRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/posts/$postId/': typeof PostsPostId1nd3xRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '/blog/$slug' + | '/blog' + | '/posts' + | '/posts/$postId/deep' + | '/posts/$postId' + id: + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + R1nd3xRoute: typeof R1nd3xRoute + BlogR0ut3Route: typeof BlogR0ut3RouteWithChildren + PostsR0ut3Route: typeof PostsR0ut3RouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + R1nd3xRoute: R1nd3xRoute, + BlogR0ut3Route: BlogR0ut3RouteWithChildren, + PostsR0ut3Route: PostsR0ut3RouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/_1nd3x.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/_1nd3x.tsx index ab504e42e9..a680913ded 100644 --- a/packages/router-generator/tests/generator/custom-tokens/routes/_1nd3x.tsx +++ b/packages/router-generator/tests/generator/custom-tokens/routes/_1nd3x.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: () =>
Hello /!
, +}) diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/__root.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/__root.tsx index ab504e42e9..f89644e82d 100644 --- a/packages/router-generator/tests/generator/custom-tokens/routes/__root.tsx +++ b/packages/router-generator/tests/generator/custom-tokens/routes/__root.tsx @@ -1 +1,11 @@ -/** */ +import * as React from 'react' +import { Outlet, createRootRoute } from '@tanstack/react-router' + +export const Route = createRootRoute({ + component: () => ( + +
Hello "__root"!
+ +
+ ), +}) diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/blog/$slug.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/blog/$slug.tsx index ab504e42e9..0389370c39 100644 --- a/packages/router-generator/tests/generator/custom-tokens/routes/blog/$slug.tsx +++ b/packages/router-generator/tests/generator/custom-tokens/routes/blog/$slug.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/blog/$slug')({ + component: () =>
Hello /blog/$slug!
, +}) diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/blog/_1nd3x.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/blog/_1nd3x.tsx index ab504e42e9..6fab51efb1 100644 --- a/packages/router-generator/tests/generator/custom-tokens/routes/blog/_1nd3x.tsx +++ b/packages/router-generator/tests/generator/custom-tokens/routes/blog/_1nd3x.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/blog/')({ + component: () =>
Hello /blog/!
, +}) diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/blog/_r0ut3_.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/blog/_r0ut3_.tsx index ab504e42e9..2833fcc588 100644 --- a/packages/router-generator/tests/generator/custom-tokens/routes/blog/_r0ut3_.tsx +++ b/packages/router-generator/tests/generator/custom-tokens/routes/blog/_r0ut3_.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/blog')({ + component: () =>
Hello /blog!
, +}) diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/_1nd3x.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/_1nd3x.tsx index 79a9626b55..3b2884f8aa 100644 --- a/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/_1nd3x.tsx +++ b/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/_1nd3x.tsx @@ -1 +1,5 @@ -/* */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/$postId/')({ + component: () =>
Hello /posts/$postId/!
, +}) diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/deep.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/deep.tsx index ab504e42e9..0e0463301d 100644 --- a/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/deep.tsx +++ b/packages/router-generator/tests/generator/custom-tokens/routes/posts/$postId/deep.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/$postId/deep')({ + component: () =>
Hello /posts/$postId/deep!
, +}) diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/posts/_1nd3x.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/posts/_1nd3x.tsx index ab504e42e9..f3c995416c 100644 --- a/packages/router-generator/tests/generator/custom-tokens/routes/posts/_1nd3x.tsx +++ b/packages/router-generator/tests/generator/custom-tokens/routes/posts/_1nd3x.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/')({ + component: () =>
Hello /posts/!
, +}) diff --git a/packages/router-generator/tests/generator/custom-tokens/routes/posts/_r0ut3_.tsx b/packages/router-generator/tests/generator/custom-tokens/routes/posts/_r0ut3_.tsx index ab504e42e9..c298ab4675 100644 --- a/packages/router-generator/tests/generator/custom-tokens/routes/posts/_r0ut3_.tsx +++ b/packages/router-generator/tests/generator/custom-tokens/routes/posts/_r0ut3_.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts')({ + component: () =>
Hello /posts!
, +}) diff --git a/packages/router-generator/tests/generator/file-modification/post.$postId.tsx b/packages/router-generator/tests/generator/file-modification/post.$postId.tsx new file mode 100644 index 0000000000..b51b2f5ad4 --- /dev/null +++ b/packages/router-generator/tests/generator/file-modification/post.$postId.tsx @@ -0,0 +1,45 @@ +import * as React from 'react' +import { + ErrorComponent, + ErrorComponentProps, + Link, + createFileRoute, +} from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/$postId/')({ + loader: async ({ params: { postId } }) => ({ + id: postId, + title: 'title', + body: 'body', + }), + errorComponent: PostErrorComponent as any, + notFoundComponent: () => { + return

Post not found

+ }, + component: PostComponent, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const post = Route.useLoaderData() + + return ( +
+

{post.title}

+
{post.body}
+ + Deep View + +
+ ) +} diff --git a/packages/router-generator/tests/generator/file-modification/routeTree.gen.ts b/packages/router-generator/tests/generator/file-modification/routeTree.gen.ts new file mode 100644 index 0000000000..3d0510d0ae --- /dev/null +++ b/packages/router-generator/tests/generator/file-modification/routeTree.gen.ts @@ -0,0 +1,165 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +import { createFileRoute } from '@tanstack/react-router' + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as testInitiallyLazyImport } from './routes/(test)/initiallyLazy' +import { Route as testInitiallyEmptyImport } from './routes/(test)/initiallyEmpty' +import { Route as testFooImport } from './routes/(test)/foo' + +// Create Virtual Routes + +const testBarLazyImport = createFileRoute('/(test)/bar')() + +// Create/Update Routes + +const testBarLazyRoute = testBarLazyImport + .update({ + path: '/bar', + getParentRoute: () => rootRoute, + } as any) + .lazy(() => import('./routes/(test)/bar.lazy').then((d) => d.Route)) + +const testInitiallyLazyRoute = testInitiallyLazyImport.update({ + path: '/initiallyLazy', + getParentRoute: () => rootRoute, +} as any) + +const testInitiallyEmptyRoute = testInitiallyEmptyImport + .update({ + path: '/initiallyEmpty', + getParentRoute: () => rootRoute, + } as any) + .lazy(() => + import('./routes/(test)/initiallyEmpty.lazy').then((d) => d.Route), + ) + +const testFooRoute = testFooImport.update({ + path: '/foo', + getParentRoute: () => rootRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/(test)/foo': { + id: '/foo' + path: '/foo' + fullPath: '/foo' + preLoaderRoute: typeof testFooImport + parentRoute: typeof rootRoute + } + '/(test)/initiallyEmpty': { + id: '/initiallyEmpty' + path: '/initiallyEmpty' + fullPath: '/initiallyEmpty' + preLoaderRoute: typeof testInitiallyEmptyImport + parentRoute: typeof rootRoute + } + '/(test)/initiallyLazy': { + id: '/initiallyLazy' + path: '/initiallyLazy' + fullPath: '/initiallyLazy' + preLoaderRoute: typeof testInitiallyLazyImport + parentRoute: typeof rootRoute + } + '/(test)/bar': { + id: '/bar' + path: '/bar' + fullPath: '/bar' + preLoaderRoute: typeof testBarLazyImport + parentRoute: typeof rootRoute + } + } +} + +// Create and export the route tree + +interface FileRoutesByFullPath { + '/foo': typeof testFooRoute + '/initiallyEmpty': typeof testInitiallyEmptyRoute + '/initiallyLazy': typeof testInitiallyLazyRoute + '/bar': typeof testBarLazyRoute +} + +interface FileRoutesByTo { + '/foo': typeof testFooRoute + '/initiallyEmpty': typeof testInitiallyEmptyRoute + '/initiallyLazy': typeof testInitiallyLazyRoute + '/bar': typeof testBarLazyRoute +} + +interface FileRoutesById { + '/foo': typeof testFooRoute + '/initiallyEmpty': typeof testInitiallyEmptyRoute + '/initiallyLazy': typeof testInitiallyLazyRoute + '/bar': typeof testBarLazyRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' + fileRoutesByTo: FileRoutesByTo + to: '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' + id: '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + testFooRoute: typeof testFooRoute + testInitiallyEmptyRoute: typeof testInitiallyEmptyRoute + testInitiallyLazyRoute: typeof testInitiallyLazyRoute + testBarLazyRoute: typeof testBarLazyRoute +} + +const rootRouteChildren: RootRouteChildren = { + testFooRoute: testFooRoute, + testInitiallyEmptyRoute: testInitiallyEmptyRoute, + testInitiallyLazyRoute: testInitiallyLazyRoute, + testBarLazyRoute: testBarLazyRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/foo", + "/initiallyEmpty", + "/initiallyLazy", + "/bar" + ] + }, + "/foo": { + "filePath": "(test)/foo.tsx" + }, + "/initiallyEmpty": { + "filePath": "(test)/initiallyEmpty.tsx" + }, + "/initiallyLazy": { + "filePath": "(test)/initiallyLazy.tsx" + }, + "/bar": { + "filePath": "(test)/bar.lazy.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/file-modification/routeTree.snapshot.ts b/packages/router-generator/tests/generator/file-modification/routeTree.snapshot.ts index 4f06f53a23..3d0510d0ae 100644 --- a/packages/router-generator/tests/generator/file-modification/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/file-modification/routeTree.snapshot.ts @@ -86,12 +86,53 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - testFooRoute, - testInitiallyEmptyRoute, - testInitiallyLazyRoute, - testBarLazyRoute, -}) +interface FileRoutesByFullPath { + '/foo': typeof testFooRoute + '/initiallyEmpty': typeof testInitiallyEmptyRoute + '/initiallyLazy': typeof testInitiallyLazyRoute + '/bar': typeof testBarLazyRoute +} + +interface FileRoutesByTo { + '/foo': typeof testFooRoute + '/initiallyEmpty': typeof testInitiallyEmptyRoute + '/initiallyLazy': typeof testInitiallyLazyRoute + '/bar': typeof testBarLazyRoute +} + +interface FileRoutesById { + '/foo': typeof testFooRoute + '/initiallyEmpty': typeof testInitiallyEmptyRoute + '/initiallyLazy': typeof testInitiallyLazyRoute + '/bar': typeof testBarLazyRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' + fileRoutesByTo: FileRoutesByTo + to: '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' + id: '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + testFooRoute: typeof testFooRoute + testInitiallyEmptyRoute: typeof testInitiallyEmptyRoute + testInitiallyLazyRoute: typeof testInitiallyLazyRoute + testBarLazyRoute: typeof testBarLazyRoute +} + +const rootRouteChildren: RootRouteChildren = { + testFooRoute: testFooRoute, + testInitiallyEmptyRoute: testInitiallyEmptyRoute, + testInitiallyLazyRoute: testInitiallyLazyRoute, + testBarLazyRoute: testBarLazyRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/packages/router-generator/tests/generator/file-modification/routes/__root.tsx b/packages/router-generator/tests/generator/file-modification/routes/__root.tsx index ab504e42e9..f89644e82d 100644 --- a/packages/router-generator/tests/generator/file-modification/routes/__root.tsx +++ b/packages/router-generator/tests/generator/file-modification/routes/__root.tsx @@ -1 +1,11 @@ -/** */ +import * as React from 'react' +import { Outlet, createRootRoute } from '@tanstack/react-router' + +export const Route = createRootRoute({ + component: () => ( + +
Hello "__root"!
+ +
+ ), +}) diff --git a/packages/router-generator/tests/generator/file-modification/snapshot/bar.lazy.tsx b/packages/router-generator/tests/generator/file-modification/snapshot/bar.lazy.tsx index fe317a8ef6..d8a6feca9b 100644 --- a/packages/router-generator/tests/generator/file-modification/snapshot/bar.lazy.tsx +++ b/packages/router-generator/tests/generator/file-modification/snapshot/bar.lazy.tsx @@ -1,3 +1,5 @@ +// @ts-nocheck + import * as React from 'react' import { ErrorComponent, @@ -7,7 +9,12 @@ import { } from '@tanstack/react-router' export const Route = createFileRoute('/(test)/foo')({ - loader: async ({ params: { postId } }) => ({ postId }), + loader: async ({ params: { postId } }) => ({ + postId, + title: 'title', + body: 'body', + id: 'id', + }), errorComponent: PostErrorComponent as any, notFoundComponent: () => { return

Post not found

diff --git a/packages/router-generator/tests/generator/file-modification/snapshot/empty.lazy.tsx b/packages/router-generator/tests/generator/file-modification/snapshot/empty.lazy.tsx index fe317a8ef6..d8a6feca9b 100644 --- a/packages/router-generator/tests/generator/file-modification/snapshot/empty.lazy.tsx +++ b/packages/router-generator/tests/generator/file-modification/snapshot/empty.lazy.tsx @@ -1,3 +1,5 @@ +// @ts-nocheck + import * as React from 'react' import { ErrorComponent, @@ -7,7 +9,12 @@ import { } from '@tanstack/react-router' export const Route = createFileRoute('/(test)/foo')({ - loader: async ({ params: { postId } }) => ({ postId }), + loader: async ({ params: { postId } }) => ({ + postId, + title: 'title', + body: 'body', + id: 'id', + }), errorComponent: PostErrorComponent as any, notFoundComponent: () => { return

Post not found

diff --git a/packages/router-generator/tests/generator/file-modification/snapshot/empty.tsx b/packages/router-generator/tests/generator/file-modification/snapshot/empty.tsx index fe317a8ef6..d8a6feca9b 100644 --- a/packages/router-generator/tests/generator/file-modification/snapshot/empty.tsx +++ b/packages/router-generator/tests/generator/file-modification/snapshot/empty.tsx @@ -1,3 +1,5 @@ +// @ts-nocheck + import * as React from 'react' import { ErrorComponent, @@ -7,7 +9,12 @@ import { } from '@tanstack/react-router' export const Route = createFileRoute('/(test)/foo')({ - loader: async ({ params: { postId } }) => ({ postId }), + loader: async ({ params: { postId } }) => ({ + postId, + title: 'title', + body: 'body', + id: 'id', + }), errorComponent: PostErrorComponent as any, notFoundComponent: () => { return

Post not found

diff --git a/packages/router-generator/tests/generator/file-modification/snapshot/foo.tsx b/packages/router-generator/tests/generator/file-modification/snapshot/foo.tsx index fe317a8ef6..d8a6feca9b 100644 --- a/packages/router-generator/tests/generator/file-modification/snapshot/foo.tsx +++ b/packages/router-generator/tests/generator/file-modification/snapshot/foo.tsx @@ -1,3 +1,5 @@ +// @ts-nocheck + import * as React from 'react' import { ErrorComponent, @@ -7,7 +9,12 @@ import { } from '@tanstack/react-router' export const Route = createFileRoute('/(test)/foo')({ - loader: async ({ params: { postId } }) => ({ postId }), + loader: async ({ params: { postId } }) => ({ + postId, + title: 'title', + body: 'body', + id: 'id', + }), errorComponent: PostErrorComponent as any, notFoundComponent: () => { return

Post not found

diff --git a/packages/router-generator/tests/generator/file-modification/snapshot/initiallyEmpty.lazy.tsx b/packages/router-generator/tests/generator/file-modification/snapshot/initiallyEmpty.lazy.tsx index fe317a8ef6..d8a6feca9b 100644 --- a/packages/router-generator/tests/generator/file-modification/snapshot/initiallyEmpty.lazy.tsx +++ b/packages/router-generator/tests/generator/file-modification/snapshot/initiallyEmpty.lazy.tsx @@ -1,3 +1,5 @@ +// @ts-nocheck + import * as React from 'react' import { ErrorComponent, @@ -7,7 +9,12 @@ import { } from '@tanstack/react-router' export const Route = createFileRoute('/(test)/foo')({ - loader: async ({ params: { postId } }) => ({ postId }), + loader: async ({ params: { postId } }) => ({ + postId, + title: 'title', + body: 'body', + id: 'id', + }), errorComponent: PostErrorComponent as any, notFoundComponent: () => { return

Post not found

diff --git a/packages/router-generator/tests/generator/file-modification/snapshot/initiallyEmpty.tsx b/packages/router-generator/tests/generator/file-modification/snapshot/initiallyEmpty.tsx index fe317a8ef6..d8a6feca9b 100644 --- a/packages/router-generator/tests/generator/file-modification/snapshot/initiallyEmpty.tsx +++ b/packages/router-generator/tests/generator/file-modification/snapshot/initiallyEmpty.tsx @@ -1,3 +1,5 @@ +// @ts-nocheck + import * as React from 'react' import { ErrorComponent, @@ -7,7 +9,12 @@ import { } from '@tanstack/react-router' export const Route = createFileRoute('/(test)/foo')({ - loader: async ({ params: { postId } }) => ({ postId }), + loader: async ({ params: { postId } }) => ({ + postId, + title: 'title', + body: 'body', + id: 'id', + }), errorComponent: PostErrorComponent as any, notFoundComponent: () => { return

Post not found

diff --git a/packages/router-generator/tests/generator/file-modification/snapshot/initiallyLazy.tsx b/packages/router-generator/tests/generator/file-modification/snapshot/initiallyLazy.tsx index fe317a8ef6..d8a6feca9b 100644 --- a/packages/router-generator/tests/generator/file-modification/snapshot/initiallyLazy.tsx +++ b/packages/router-generator/tests/generator/file-modification/snapshot/initiallyLazy.tsx @@ -1,3 +1,5 @@ +// @ts-nocheck + import * as React from 'react' import { ErrorComponent, @@ -7,7 +9,12 @@ import { } from '@tanstack/react-router' export const Route = createFileRoute('/(test)/foo')({ - loader: async ({ params: { postId } }) => ({ postId }), + loader: async ({ params: { postId } }) => ({ + postId, + title: 'title', + body: 'body', + id: 'id', + }), errorComponent: PostErrorComponent as any, notFoundComponent: () => { return

Post not found

diff --git a/packages/router-generator/tests/generator/file-modification/template.lazy.tsx b/packages/router-generator/tests/generator/file-modification/template.lazy.tsx index 7e5e1d0f36..76dc2c74c3 100644 --- a/packages/router-generator/tests/generator/file-modification/template.lazy.tsx +++ b/packages/router-generator/tests/generator/file-modification/template.lazy.tsx @@ -1,3 +1,5 @@ +// @ts-nocheck + import { createLazyFileRoute, Link } from '@tanstack/react-router' export const Route = createLazyFileRoute('/(test)/lazy')({ diff --git a/packages/router-generator/tests/generator/file-modification/template.tsx b/packages/router-generator/tests/generator/file-modification/template.tsx index cd204621ed..918119d3f0 100644 --- a/packages/router-generator/tests/generator/file-modification/template.tsx +++ b/packages/router-generator/tests/generator/file-modification/template.tsx @@ -1,3 +1,5 @@ +// @ts-nocheck + import * as React from 'react' import { ErrorComponent, @@ -7,7 +9,12 @@ import { } from '@tanstack/react-router' export const Route = createFileRoute('/posts/$postId')({ - loader: async ({ params: { postId } }) => ({ postId }), + loader: async ({ params: { postId } }) => ({ + postId, + title: 'title', + body: 'body', + id: 'id', + }), errorComponent: PostErrorComponent as any, notFoundComponent: () => { return

Post not found

diff --git a/packages/router-generator/tests/generator/flat/routeTree.gen.ts b/packages/router-generator/tests/generator/flat/routeTree.gen.ts new file mode 100644 index 0000000000..2bb540ea85 --- /dev/null +++ b/packages/router-generator/tests/generator/flat/routeTree.gen.ts @@ -0,0 +1,316 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as PostsRouteImport } from './routes/posts.route' +import { Route as BlogRouteImport } from './routes/blog.route' +import { Route as IndexImport } from './routes/index' +import { Route as PostsIndexImport } from './routes/posts.index' +import { Route as BlogIndexImport } from './routes/blog.index' +import { Route as BlogStatsImport } from './routes/blog_.stats' +import { Route as PostsPostIdIndexImport } from './routes/posts.$postId.index' +import { Route as BlogSlugIndexImport } from './routes/blog.$slug.index' +import { Route as PostsPostIdDeepImport } from './routes/posts.$postId.deep' + +// Create/Update Routes + +const PostsRouteRoute = PostsRouteImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const BlogRouteRoute = BlogRouteImport.update({ + path: '/blog', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const PostsIndexRoute = PostsIndexImport.update({ + path: '/', + getParentRoute: () => PostsRouteRoute, +} as any) + +const BlogIndexRoute = BlogIndexImport.update({ + path: '/', + getParentRoute: () => BlogRouteRoute, +} as any) + +const BlogStatsRoute = BlogStatsImport.update({ + path: '/blog/stats', + getParentRoute: () => rootRoute, +} as any) + +const PostsPostIdIndexRoute = PostsPostIdIndexImport.update({ + path: '/$postId/', + getParentRoute: () => PostsRouteRoute, +} as any) + +const BlogSlugIndexRoute = BlogSlugIndexImport.update({ + path: '/$slug/', + getParentRoute: () => BlogRouteRoute, +} as any) + +const PostsPostIdDeepRoute = PostsPostIdDeepImport.update({ + path: '/$postId/deep', + getParentRoute: () => PostsRouteRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/blog': { + id: '/blog' + path: '/blog' + fullPath: '/blog' + preLoaderRoute: typeof BlogRouteImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsRouteImport + parentRoute: typeof rootRoute + } + '/blog/stats': { + id: '/blog/stats' + path: '/blog/stats' + fullPath: '/blog/stats' + preLoaderRoute: typeof BlogStatsImport + parentRoute: typeof rootRoute + } + '/blog/': { + id: '/blog/' + path: '/' + fullPath: '/blog/' + preLoaderRoute: typeof BlogIndexImport + parentRoute: typeof BlogRouteImport + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof PostsIndexImport + parentRoute: typeof PostsRouteImport + } + '/posts/$postId/deep': { + id: '/posts/$postId/deep' + path: '/$postId/deep' + fullPath: '/posts/$postId/deep' + preLoaderRoute: typeof PostsPostIdDeepImport + parentRoute: typeof PostsRouteImport + } + '/blog/$slug/': { + id: '/blog/$slug/' + path: '/$slug' + fullPath: '/blog/$slug' + preLoaderRoute: typeof BlogSlugIndexImport + parentRoute: typeof BlogRouteImport + } + '/posts/$postId/': { + id: '/posts/$postId/' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof PostsPostIdIndexImport + parentRoute: typeof PostsRouteImport + } + } +} + +// Create and export the route tree + +interface BlogRouteRouteChildren { + BlogIndexRoute: typeof BlogIndexRoute + BlogSlugIndexRoute: typeof BlogSlugIndexRoute +} + +const BlogRouteRouteChildren: BlogRouteRouteChildren = { + BlogIndexRoute: BlogIndexRoute, + BlogSlugIndexRoute: BlogSlugIndexRoute, +} + +const BlogRouteRouteWithChildren = BlogRouteRoute._addFileChildren( + BlogRouteRouteChildren, +) + +interface PostsRouteRouteChildren { + PostsIndexRoute: typeof PostsIndexRoute + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute + PostsPostIdIndexRoute: typeof PostsPostIdIndexRoute +} + +const PostsRouteRouteChildren: PostsRouteRouteChildren = { + PostsIndexRoute: PostsIndexRoute, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, + PostsPostIdIndexRoute: PostsPostIdIndexRoute, +} + +const PostsRouteRouteWithChildren = PostsRouteRoute._addFileChildren( + PostsRouteRouteChildren, +) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/blog': typeof BlogRouteRouteWithChildren + '/posts': typeof PostsRouteRouteWithChildren + '/blog/stats': typeof BlogStatsRoute + '/blog/': typeof BlogIndexRoute + '/posts/': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/blog/$slug': typeof BlogSlugIndexRoute + '/posts/$postId': typeof PostsPostIdIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/blog/stats': typeof BlogStatsRoute + '/blog': typeof BlogIndexRoute + '/posts': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/blog/$slug': typeof BlogSlugIndexRoute + '/posts/$postId': typeof PostsPostIdIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/blog': typeof BlogRouteRouteWithChildren + '/posts': typeof PostsRouteRouteWithChildren + '/blog/stats': typeof BlogStatsRoute + '/blog/': typeof BlogIndexRoute + '/posts/': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/blog/$slug/': typeof BlogSlugIndexRoute + '/posts/$postId/': typeof PostsPostIdIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/blog' + | '/posts' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/blog/$slug' + | '/posts/$postId' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '/blog/stats' + | '/blog' + | '/posts' + | '/posts/$postId/deep' + | '/blog/$slug' + | '/posts/$postId' + id: + | '/' + | '/blog' + | '/posts' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/blog/$slug/' + | '/posts/$postId/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + BlogRouteRoute: typeof BlogRouteRouteWithChildren + PostsRouteRoute: typeof PostsRouteRouteWithChildren + BlogStatsRoute: typeof BlogStatsRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + BlogRouteRoute: BlogRouteRouteWithChildren, + PostsRouteRoute: PostsRouteRouteWithChildren, + BlogStatsRoute: BlogStatsRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/blog", + "/posts", + "/blog/stats" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/blog": { + "filePath": "blog.route.tsx", + "children": [ + "/blog/", + "/blog/$slug/" + ] + }, + "/posts": { + "filePath": "posts.route.tsx", + "children": [ + "/posts/", + "/posts/$postId/deep", + "/posts/$postId/" + ] + }, + "/blog/stats": { + "filePath": "blog_.stats.tsx" + }, + "/blog/": { + "filePath": "blog.index.tsx", + "parent": "/blog" + }, + "/posts/": { + "filePath": "posts.index.tsx", + "parent": "/posts" + }, + "/posts/$postId/deep": { + "filePath": "posts.$postId.deep.tsx", + "parent": "/posts" + }, + "/blog/$slug/": { + "filePath": "blog.$slug.index.tsx", + "parent": "/blog" + }, + "/posts/$postId/": { + "filePath": "posts.$postId.index.tsx", + "parent": "/posts" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/flat/routeTree.snapshot.ts b/packages/router-generator/tests/generator/flat/routeTree.snapshot.ts index f2347a1c82..2bb540ea85 100644 --- a/packages/router-generator/tests/generator/flat/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/flat/routeTree.snapshot.ts @@ -140,19 +140,121 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - BlogRouteRoute: BlogRouteRoute.addChildren({ - BlogIndexRoute, - BlogSlugIndexRoute, - }), - PostsRouteRoute: PostsRouteRoute.addChildren({ - PostsIndexRoute, - PostsPostIdDeepRoute, - PostsPostIdIndexRoute, - }), - BlogStatsRoute, -}) +interface BlogRouteRouteChildren { + BlogIndexRoute: typeof BlogIndexRoute + BlogSlugIndexRoute: typeof BlogSlugIndexRoute +} + +const BlogRouteRouteChildren: BlogRouteRouteChildren = { + BlogIndexRoute: BlogIndexRoute, + BlogSlugIndexRoute: BlogSlugIndexRoute, +} + +const BlogRouteRouteWithChildren = BlogRouteRoute._addFileChildren( + BlogRouteRouteChildren, +) + +interface PostsRouteRouteChildren { + PostsIndexRoute: typeof PostsIndexRoute + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute + PostsPostIdIndexRoute: typeof PostsPostIdIndexRoute +} + +const PostsRouteRouteChildren: PostsRouteRouteChildren = { + PostsIndexRoute: PostsIndexRoute, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, + PostsPostIdIndexRoute: PostsPostIdIndexRoute, +} + +const PostsRouteRouteWithChildren = PostsRouteRoute._addFileChildren( + PostsRouteRouteChildren, +) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/blog': typeof BlogRouteRouteWithChildren + '/posts': typeof PostsRouteRouteWithChildren + '/blog/stats': typeof BlogStatsRoute + '/blog/': typeof BlogIndexRoute + '/posts/': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/blog/$slug': typeof BlogSlugIndexRoute + '/posts/$postId': typeof PostsPostIdIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/blog/stats': typeof BlogStatsRoute + '/blog': typeof BlogIndexRoute + '/posts': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/blog/$slug': typeof BlogSlugIndexRoute + '/posts/$postId': typeof PostsPostIdIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/blog': typeof BlogRouteRouteWithChildren + '/posts': typeof PostsRouteRouteWithChildren + '/blog/stats': typeof BlogStatsRoute + '/blog/': typeof BlogIndexRoute + '/posts/': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/blog/$slug/': typeof BlogSlugIndexRoute + '/posts/$postId/': typeof PostsPostIdIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/blog' + | '/posts' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/blog/$slug' + | '/posts/$postId' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '/blog/stats' + | '/blog' + | '/posts' + | '/posts/$postId/deep' + | '/blog/$slug' + | '/posts/$postId' + id: + | '/' + | '/blog' + | '/posts' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/blog/$slug/' + | '/posts/$postId/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + BlogRouteRoute: typeof BlogRouteRouteWithChildren + PostsRouteRoute: typeof PostsRouteRouteWithChildren + BlogStatsRoute: typeof BlogStatsRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + BlogRouteRoute: BlogRouteRouteWithChildren, + PostsRouteRoute: PostsRouteRouteWithChildren, + BlogStatsRoute: BlogStatsRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/packages/router-generator/tests/generator/nested-layouts/routeTree.gen.ts b/packages/router-generator/tests/generator/nested-layouts/routeTree.gen.ts new file mode 100644 index 0000000000..4425bd094f --- /dev/null +++ b/packages/router-generator/tests/generator/nested-layouts/routeTree.gen.ts @@ -0,0 +1,816 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +import { createFileRoute } from '@tanstack/react-router' + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as LayoutA2Import } from './routes/_layout-a2' +import { Route as LayoutA1Import } from './routes/_layout-a1' +import { Route as JestedRouteImport } from './routes/jested/route' +import { Route as IndexImport } from './routes/index' +import { Route as NestedLayoutB2Import } from './routes/nested/_layout-b2' +import { Route as NestedLayoutB1Import } from './routes/nested/_layout-b1' +import { Route as JestedLayoutB4Import } from './routes/jested/_layout-b4' +import { Route as JestedLayoutB3Import } from './routes/jested/_layout-b3' +import { Route as FooBarImport } from './routes/foo/bar' +import { Route as LayoutA2BarImport } from './routes/_layout-a2/bar' +import { Route as LayoutA1FooImport } from './routes/_layout-a1/foo' +import { Route as folderInFolderImport } from './routes/(folder)/in-folder' +import { Route as FooLayoutB5RouteImport } from './routes/foo/_layout-b5/route' +import { Route as NestedLayoutB1IndexImport } from './routes/nested/_layout-b1/index' +import { Route as JestedLayoutB3IndexImport } from './routes/jested/_layout-b3/index' +import { Route as FooLayoutB5IndexImport } from './routes/foo/_layout-b5/index' +import { Route as NestedLayoutB2FooImport } from './routes/nested/_layout-b2/foo' +import { Route as NestedLayoutB1LayoutC1Import } from './routes/nested/_layout-b1/_layout-c1' +import { Route as JestedLayoutB4FooImport } from './routes/jested/_layout-b4/foo' +import { Route as JestedLayoutB3LayoutC2Import } from './routes/jested/_layout-b3/_layout-c2' +import { Route as FooLayoutB5IdImport } from './routes/foo/_layout-b5/$id' +import { Route as NestedLayoutB1LayoutC1BarImport } from './routes/nested/_layout-b1/_layout-c1/bar' +import { Route as JestedLayoutB3LayoutC2BarImport } from './routes/jested/_layout-b3/_layout-c2/bar' + +// Create Virtual Routes + +const NestedImport = createFileRoute('/nested')() +const FooImport = createFileRoute('/foo')() + +// Create/Update Routes + +const NestedRoute = NestedImport.update({ + path: '/nested', + getParentRoute: () => rootRoute, +} as any) + +const FooRoute = FooImport.update({ + path: '/foo', + getParentRoute: () => rootRoute, +} as any) + +const LayoutA2Route = LayoutA2Import.update({ + id: '/_layout-a2', + getParentRoute: () => rootRoute, +} as any) + +const LayoutA1Route = LayoutA1Import.update({ + id: '/_layout-a1', + getParentRoute: () => rootRoute, +} as any) + +const JestedRouteRoute = JestedRouteImport.update({ + path: '/jested', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const NestedLayoutB2Route = NestedLayoutB2Import.update({ + id: '/_layout-b2', + getParentRoute: () => NestedRoute, +} as any) + +const NestedLayoutB1Route = NestedLayoutB1Import.update({ + id: '/_layout-b1', + getParentRoute: () => NestedRoute, +} as any) + +const JestedLayoutB4Route = JestedLayoutB4Import.update({ + id: '/_layout-b4', + getParentRoute: () => JestedRouteRoute, +} as any) + +const JestedLayoutB3Route = JestedLayoutB3Import.update({ + id: '/_layout-b3', + getParentRoute: () => JestedRouteRoute, +} as any) + +const FooBarRoute = FooBarImport.update({ + path: '/bar', + getParentRoute: () => FooRoute, +} as any) + +const LayoutA2BarRoute = LayoutA2BarImport.update({ + path: '/bar', + getParentRoute: () => LayoutA2Route, +} as any) + +const LayoutA1FooRoute = LayoutA1FooImport.update({ + path: '/foo', + getParentRoute: () => LayoutA1Route, +} as any) + +const folderInFolderRoute = folderInFolderImport.update({ + path: '/in-folder', + getParentRoute: () => rootRoute, +} as any) + +const FooLayoutB5RouteRoute = FooLayoutB5RouteImport.update({ + id: '/foo/_layout-b5', + getParentRoute: () => FooRoute, +} as any) + +const NestedLayoutB1IndexRoute = NestedLayoutB1IndexImport.update({ + path: '/', + getParentRoute: () => NestedLayoutB1Route, +} as any) + +const JestedLayoutB3IndexRoute = JestedLayoutB3IndexImport.update({ + path: '/', + getParentRoute: () => JestedLayoutB3Route, +} as any) + +const FooLayoutB5IndexRoute = FooLayoutB5IndexImport.update({ + path: '/', + getParentRoute: () => FooLayoutB5RouteRoute, +} as any) + +const NestedLayoutB2FooRoute = NestedLayoutB2FooImport.update({ + path: '/foo', + getParentRoute: () => NestedLayoutB2Route, +} as any) + +const NestedLayoutB1LayoutC1Route = NestedLayoutB1LayoutC1Import.update({ + id: '/_layout-c1', + getParentRoute: () => NestedLayoutB1Route, +} as any) + +const JestedLayoutB4FooRoute = JestedLayoutB4FooImport.update({ + path: '/foo', + getParentRoute: () => JestedLayoutB4Route, +} as any) + +const JestedLayoutB3LayoutC2Route = JestedLayoutB3LayoutC2Import.update({ + id: '/_layout-c2', + getParentRoute: () => JestedLayoutB3Route, +} as any) + +const FooLayoutB5IdRoute = FooLayoutB5IdImport.update({ + path: '/$id', + getParentRoute: () => FooLayoutB5RouteRoute, +} as any) + +const NestedLayoutB1LayoutC1BarRoute = NestedLayoutB1LayoutC1BarImport.update({ + path: '/bar', + getParentRoute: () => NestedLayoutB1LayoutC1Route, +} as any) + +const JestedLayoutB3LayoutC2BarRoute = JestedLayoutB3LayoutC2BarImport.update({ + path: '/bar', + getParentRoute: () => JestedLayoutB3LayoutC2Route, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/jested': { + id: '/jested' + path: '/jested' + fullPath: '/jested' + preLoaderRoute: typeof JestedRouteImport + parentRoute: typeof rootRoute + } + '/_layout-a1': { + id: '/_layout-a1' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutA1Import + parentRoute: typeof rootRoute + } + '/_layout-a2': { + id: '/_layout-a2' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutA2Import + parentRoute: typeof rootRoute + } + '/foo': { + id: '/foo' + path: '/foo' + fullPath: '/foo' + preLoaderRoute: typeof FooImport + parentRoute: typeof rootRoute + } + '/foo/_layout-b5': { + id: '/foo/_layout-b5' + path: '/foo' + fullPath: '/foo' + preLoaderRoute: typeof FooLayoutB5RouteImport + parentRoute: typeof FooRoute + } + '/(folder)/in-folder': { + id: '/in-folder' + path: '/in-folder' + fullPath: '/in-folder' + preLoaderRoute: typeof folderInFolderImport + parentRoute: typeof rootRoute + } + '/_layout-a1/foo': { + id: '/_layout-a1/foo' + path: '/foo' + fullPath: '/foo' + preLoaderRoute: typeof LayoutA1FooImport + parentRoute: typeof LayoutA1Import + } + '/_layout-a2/bar': { + id: '/_layout-a2/bar' + path: '/bar' + fullPath: '/bar' + preLoaderRoute: typeof LayoutA2BarImport + parentRoute: typeof LayoutA2Import + } + '/foo/bar': { + id: '/foo/bar' + path: '/bar' + fullPath: '/foo/bar' + preLoaderRoute: typeof FooBarImport + parentRoute: typeof FooImport + } + '/jested/_layout-b3': { + id: '/jested/_layout-b3' + path: '' + fullPath: '/jested' + preLoaderRoute: typeof JestedLayoutB3Import + parentRoute: typeof JestedRouteImport + } + '/jested/_layout-b4': { + id: '/jested/_layout-b4' + path: '' + fullPath: '/jested' + preLoaderRoute: typeof JestedLayoutB4Import + parentRoute: typeof JestedRouteImport + } + '/nested': { + id: '/nested' + path: '/nested' + fullPath: '/nested' + preLoaderRoute: typeof NestedImport + parentRoute: typeof rootRoute + } + '/nested/_layout-b1': { + id: '/nested/_layout-b1' + path: '/nested' + fullPath: '/nested' + preLoaderRoute: typeof NestedLayoutB1Import + parentRoute: typeof NestedRoute + } + '/nested/_layout-b2': { + id: '/nested/_layout-b2' + path: '' + fullPath: '/nested' + preLoaderRoute: typeof NestedLayoutB2Import + parentRoute: typeof NestedImport + } + '/foo/_layout-b5/$id': { + id: '/foo/_layout-b5/$id' + path: '/$id' + fullPath: '/foo/$id' + preLoaderRoute: typeof FooLayoutB5IdImport + parentRoute: typeof FooLayoutB5RouteImport + } + '/jested/_layout-b3/_layout-c2': { + id: '/jested/_layout-b3/_layout-c2' + path: '' + fullPath: '/jested' + preLoaderRoute: typeof JestedLayoutB3LayoutC2Import + parentRoute: typeof JestedLayoutB3Import + } + '/jested/_layout-b4/foo': { + id: '/jested/_layout-b4/foo' + path: '/foo' + fullPath: '/jested/foo' + preLoaderRoute: typeof JestedLayoutB4FooImport + parentRoute: typeof JestedLayoutB4Import + } + '/nested/_layout-b1/_layout-c1': { + id: '/nested/_layout-b1/_layout-c1' + path: '' + fullPath: '/nested' + preLoaderRoute: typeof NestedLayoutB1LayoutC1Import + parentRoute: typeof NestedLayoutB1Import + } + '/nested/_layout-b2/foo': { + id: '/nested/_layout-b2/foo' + path: '/foo' + fullPath: '/nested/foo' + preLoaderRoute: typeof NestedLayoutB2FooImport + parentRoute: typeof NestedLayoutB2Import + } + '/foo/_layout-b5/': { + id: '/foo/_layout-b5/' + path: '/' + fullPath: '/foo/' + preLoaderRoute: typeof FooLayoutB5IndexImport + parentRoute: typeof FooLayoutB5RouteImport + } + '/jested/_layout-b3/': { + id: '/jested/_layout-b3/' + path: '/' + fullPath: '/jested/' + preLoaderRoute: typeof JestedLayoutB3IndexImport + parentRoute: typeof JestedLayoutB3Import + } + '/nested/_layout-b1/': { + id: '/nested/_layout-b1/' + path: '/' + fullPath: '/nested/' + preLoaderRoute: typeof NestedLayoutB1IndexImport + parentRoute: typeof NestedLayoutB1Import + } + '/jested/_layout-b3/_layout-c2/bar': { + id: '/jested/_layout-b3/_layout-c2/bar' + path: '/bar' + fullPath: '/jested/bar' + preLoaderRoute: typeof JestedLayoutB3LayoutC2BarImport + parentRoute: typeof JestedLayoutB3LayoutC2Import + } + '/nested/_layout-b1/_layout-c1/bar': { + id: '/nested/_layout-b1/_layout-c1/bar' + path: '/bar' + fullPath: '/nested/bar' + preLoaderRoute: typeof NestedLayoutB1LayoutC1BarImport + parentRoute: typeof NestedLayoutB1LayoutC1Import + } + } +} + +// Create and export the route tree + +interface JestedLayoutB3LayoutC2RouteChildren { + JestedLayoutB3LayoutC2BarRoute: typeof JestedLayoutB3LayoutC2BarRoute +} + +const JestedLayoutB3LayoutC2RouteChildren: JestedLayoutB3LayoutC2RouteChildren = + { + JestedLayoutB3LayoutC2BarRoute: JestedLayoutB3LayoutC2BarRoute, + } + +const JestedLayoutB3LayoutC2RouteWithChildren = + JestedLayoutB3LayoutC2Route._addFileChildren( + JestedLayoutB3LayoutC2RouteChildren, + ) + +interface JestedLayoutB3RouteChildren { + JestedLayoutB3LayoutC2Route: typeof JestedLayoutB3LayoutC2RouteWithChildren + JestedLayoutB3IndexRoute: typeof JestedLayoutB3IndexRoute +} + +const JestedLayoutB3RouteChildren: JestedLayoutB3RouteChildren = { + JestedLayoutB3LayoutC2Route: JestedLayoutB3LayoutC2RouteWithChildren, + JestedLayoutB3IndexRoute: JestedLayoutB3IndexRoute, +} + +const JestedLayoutB3RouteWithChildren = JestedLayoutB3Route._addFileChildren( + JestedLayoutB3RouteChildren, +) + +interface JestedLayoutB4RouteChildren { + JestedLayoutB4FooRoute: typeof JestedLayoutB4FooRoute +} + +const JestedLayoutB4RouteChildren: JestedLayoutB4RouteChildren = { + JestedLayoutB4FooRoute: JestedLayoutB4FooRoute, +} + +const JestedLayoutB4RouteWithChildren = JestedLayoutB4Route._addFileChildren( + JestedLayoutB4RouteChildren, +) + +interface JestedRouteRouteChildren { + JestedLayoutB3Route: typeof JestedLayoutB3RouteWithChildren + JestedLayoutB4Route: typeof JestedLayoutB4RouteWithChildren +} + +const JestedRouteRouteChildren: JestedRouteRouteChildren = { + JestedLayoutB3Route: JestedLayoutB3RouteWithChildren, + JestedLayoutB4Route: JestedLayoutB4RouteWithChildren, +} + +const JestedRouteRouteWithChildren = JestedRouteRoute._addFileChildren( + JestedRouteRouteChildren, +) + +interface LayoutA1RouteChildren { + LayoutA1FooRoute: typeof LayoutA1FooRoute +} + +const LayoutA1RouteChildren: LayoutA1RouteChildren = { + LayoutA1FooRoute: LayoutA1FooRoute, +} + +const LayoutA1RouteWithChildren = LayoutA1Route._addFileChildren( + LayoutA1RouteChildren, +) + +interface LayoutA2RouteChildren { + LayoutA2BarRoute: typeof LayoutA2BarRoute +} + +const LayoutA2RouteChildren: LayoutA2RouteChildren = { + LayoutA2BarRoute: LayoutA2BarRoute, +} + +const LayoutA2RouteWithChildren = LayoutA2Route._addFileChildren( + LayoutA2RouteChildren, +) + +interface FooLayoutB5RouteRouteChildren { + FooLayoutB5IdRoute: typeof FooLayoutB5IdRoute + FooLayoutB5IndexRoute: typeof FooLayoutB5IndexRoute +} + +const FooLayoutB5RouteRouteChildren: FooLayoutB5RouteRouteChildren = { + FooLayoutB5IdRoute: FooLayoutB5IdRoute, + FooLayoutB5IndexRoute: FooLayoutB5IndexRoute, +} + +const FooLayoutB5RouteRouteWithChildren = + FooLayoutB5RouteRoute._addFileChildren(FooLayoutB5RouteRouteChildren) + +interface FooRouteChildren { + FooLayoutB5RouteRoute: typeof FooLayoutB5RouteRouteWithChildren + FooBarRoute: typeof FooBarRoute +} + +const FooRouteChildren: FooRouteChildren = { + FooLayoutB5RouteRoute: FooLayoutB5RouteRouteWithChildren, + FooBarRoute: FooBarRoute, +} + +const FooRouteWithChildren = FooRoute._addFileChildren(FooRouteChildren) + +interface NestedLayoutB1LayoutC1RouteChildren { + NestedLayoutB1LayoutC1BarRoute: typeof NestedLayoutB1LayoutC1BarRoute +} + +const NestedLayoutB1LayoutC1RouteChildren: NestedLayoutB1LayoutC1RouteChildren = + { + NestedLayoutB1LayoutC1BarRoute: NestedLayoutB1LayoutC1BarRoute, + } + +const NestedLayoutB1LayoutC1RouteWithChildren = + NestedLayoutB1LayoutC1Route._addFileChildren( + NestedLayoutB1LayoutC1RouteChildren, + ) + +interface NestedLayoutB1RouteChildren { + NestedLayoutB1LayoutC1Route: typeof NestedLayoutB1LayoutC1RouteWithChildren + NestedLayoutB1IndexRoute: typeof NestedLayoutB1IndexRoute +} + +const NestedLayoutB1RouteChildren: NestedLayoutB1RouteChildren = { + NestedLayoutB1LayoutC1Route: NestedLayoutB1LayoutC1RouteWithChildren, + NestedLayoutB1IndexRoute: NestedLayoutB1IndexRoute, +} + +const NestedLayoutB1RouteWithChildren = NestedLayoutB1Route._addFileChildren( + NestedLayoutB1RouteChildren, +) + +interface NestedLayoutB2RouteChildren { + NestedLayoutB2FooRoute: typeof NestedLayoutB2FooRoute +} + +const NestedLayoutB2RouteChildren: NestedLayoutB2RouteChildren = { + NestedLayoutB2FooRoute: NestedLayoutB2FooRoute, +} + +const NestedLayoutB2RouteWithChildren = NestedLayoutB2Route._addFileChildren( + NestedLayoutB2RouteChildren, +) + +interface NestedRouteChildren { + NestedLayoutB1Route: typeof NestedLayoutB1RouteWithChildren + NestedLayoutB2Route: typeof NestedLayoutB2RouteWithChildren +} + +const NestedRouteChildren: NestedRouteChildren = { + NestedLayoutB1Route: NestedLayoutB1RouteWithChildren, + NestedLayoutB2Route: NestedLayoutB2RouteWithChildren, +} + +const NestedRouteWithChildren = + NestedRoute._addFileChildren(NestedRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/jested': typeof JestedLayoutB3LayoutC2RouteWithChildren + '': typeof LayoutA2RouteWithChildren + '/foo': typeof LayoutA1FooRoute + '/in-folder': typeof folderInFolderRoute + '/bar': typeof LayoutA2BarRoute + '/foo/bar': typeof FooBarRoute + '/nested': typeof NestedLayoutB1LayoutC1RouteWithChildren + '/foo/$id': typeof FooLayoutB5IdRoute + '/jested/foo': typeof JestedLayoutB4FooRoute + '/nested/foo': typeof NestedLayoutB2FooRoute + '/foo/': typeof FooLayoutB5IndexRoute + '/jested/': typeof JestedLayoutB3IndexRoute + '/nested/': typeof NestedLayoutB1IndexRoute + '/jested/bar': typeof JestedLayoutB3LayoutC2BarRoute + '/nested/bar': typeof NestedLayoutB1LayoutC1BarRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/jested': typeof JestedLayoutB3IndexRoute + '': typeof LayoutA2RouteWithChildren + '/foo': typeof FooLayoutB5IndexRoute + '/in-folder': typeof folderInFolderRoute + '/bar': typeof LayoutA2BarRoute + '/foo/bar': typeof FooBarRoute + '/nested': typeof NestedLayoutB1IndexRoute + '/foo/$id': typeof FooLayoutB5IdRoute + '/jested/foo': typeof JestedLayoutB4FooRoute + '/nested/foo': typeof NestedLayoutB2FooRoute + '/jested/bar': typeof JestedLayoutB3LayoutC2BarRoute + '/nested/bar': typeof NestedLayoutB1LayoutC1BarRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/jested': typeof JestedRouteRouteWithChildren + '/_layout-a1': typeof LayoutA1RouteWithChildren + '/_layout-a2': typeof LayoutA2RouteWithChildren + '/foo': typeof FooRouteWithChildren + '/foo/_layout-b5': typeof FooLayoutB5RouteRouteWithChildren + '/in-folder': typeof folderInFolderRoute + '/_layout-a1/foo': typeof LayoutA1FooRoute + '/_layout-a2/bar': typeof LayoutA2BarRoute + '/foo/bar': typeof FooBarRoute + '/jested/_layout-b3': typeof JestedLayoutB3RouteWithChildren + '/jested/_layout-b4': typeof JestedLayoutB4RouteWithChildren + '/nested': typeof NestedRouteWithChildren + '/nested/_layout-b1': typeof NestedLayoutB1RouteWithChildren + '/nested/_layout-b2': typeof NestedLayoutB2RouteWithChildren + '/foo/_layout-b5/$id': typeof FooLayoutB5IdRoute + '/jested/_layout-b3/_layout-c2': typeof JestedLayoutB3LayoutC2RouteWithChildren + '/jested/_layout-b4/foo': typeof JestedLayoutB4FooRoute + '/nested/_layout-b1/_layout-c1': typeof NestedLayoutB1LayoutC1RouteWithChildren + '/nested/_layout-b2/foo': typeof NestedLayoutB2FooRoute + '/foo/_layout-b5/': typeof FooLayoutB5IndexRoute + '/jested/_layout-b3/': typeof JestedLayoutB3IndexRoute + '/nested/_layout-b1/': typeof NestedLayoutB1IndexRoute + '/jested/_layout-b3/_layout-c2/bar': typeof JestedLayoutB3LayoutC2BarRoute + '/nested/_layout-b1/_layout-c1/bar': typeof NestedLayoutB1LayoutC1BarRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/jested' + | '' + | '/foo' + | '/in-folder' + | '/bar' + | '/foo/bar' + | '/nested' + | '/foo/$id' + | '/jested/foo' + | '/nested/foo' + | '/foo/' + | '/jested/' + | '/nested/' + | '/jested/bar' + | '/nested/bar' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '/jested' + | '' + | '/foo' + | '/in-folder' + | '/bar' + | '/foo/bar' + | '/nested' + | '/foo/$id' + | '/jested/foo' + | '/nested/foo' + | '/jested/bar' + | '/nested/bar' + id: + | '/' + | '/jested' + | '/_layout-a1' + | '/_layout-a2' + | '/foo' + | '/foo/_layout-b5' + | '/in-folder' + | '/_layout-a1/foo' + | '/_layout-a2/bar' + | '/foo/bar' + | '/jested/_layout-b3' + | '/jested/_layout-b4' + | '/nested' + | '/nested/_layout-b1' + | '/nested/_layout-b2' + | '/foo/_layout-b5/$id' + | '/jested/_layout-b3/_layout-c2' + | '/jested/_layout-b4/foo' + | '/nested/_layout-b1/_layout-c1' + | '/nested/_layout-b2/foo' + | '/foo/_layout-b5/' + | '/jested/_layout-b3/' + | '/nested/_layout-b1/' + | '/jested/_layout-b3/_layout-c2/bar' + | '/nested/_layout-b1/_layout-c1/bar' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + JestedRouteRoute: typeof JestedRouteRouteWithChildren + LayoutA1Route: typeof LayoutA1RouteWithChildren + LayoutA2Route: typeof LayoutA2RouteWithChildren + FooRoute: typeof FooRouteWithChildren + folderInFolderRoute: typeof folderInFolderRoute + NestedRoute: typeof NestedRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + JestedRouteRoute: JestedRouteRouteWithChildren, + LayoutA1Route: LayoutA1RouteWithChildren, + LayoutA2Route: LayoutA2RouteWithChildren, + FooRoute: FooRouteWithChildren, + folderInFolderRoute: folderInFolderRoute, + NestedRoute: NestedRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/jested", + "/_layout-a1", + "/_layout-a2", + "/foo", + "/in-folder", + "/nested" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/jested": { + "filePath": "jested/route.tsx", + "children": [ + "/jested/_layout-b3", + "/jested/_layout-b4" + ] + }, + "/_layout-a1": { + "filePath": "_layout-a1.tsx", + "children": [ + "/_layout-a1/foo" + ] + }, + "/_layout-a2": { + "filePath": "_layout-a2.tsx", + "children": [ + "/_layout-a2/bar" + ] + }, + "/foo": { + "filePath": "foo/_layout-b5", + "children": [ + "/foo/_layout-b5", + "/foo/bar" + ] + }, + "/foo/_layout-b5": { + "filePath": "foo/_layout-b5/route.tsx", + "parent": "/foo", + "children": [ + "/foo/_layout-b5/$id", + "/foo/_layout-b5/" + ] + }, + "/in-folder": { + "filePath": "(folder)/in-folder.tsx" + }, + "/_layout-a1/foo": { + "filePath": "_layout-a1/foo.tsx", + "parent": "/_layout-a1" + }, + "/_layout-a2/bar": { + "filePath": "_layout-a2/bar.tsx", + "parent": "/_layout-a2" + }, + "/foo/bar": { + "filePath": "foo/bar.tsx", + "parent": "/foo" + }, + "/jested/_layout-b3": { + "filePath": "jested/_layout-b3.tsx", + "parent": "/jested", + "children": [ + "/jested/_layout-b3/_layout-c2", + "/jested/_layout-b3/" + ] + }, + "/jested/_layout-b4": { + "filePath": "jested/_layout-b4.tsx", + "parent": "/jested", + "children": [ + "/jested/_layout-b4/foo" + ] + }, + "/nested": { + "filePath": "nested", + "children": [ + "/nested/_layout-b1", + "/nested/_layout-b2" + ] + }, + "/nested/_layout-b1": { + "filePath": "nested/_layout-b1.tsx", + "parent": "/nested", + "children": [ + "/nested/_layout-b1/_layout-c1", + "/nested/_layout-b1/" + ] + }, + "/nested/_layout-b2": { + "filePath": "nested/_layout-b2.tsx", + "parent": "/nested", + "children": [ + "/nested/_layout-b2/foo" + ] + }, + "/foo/_layout-b5/$id": { + "filePath": "foo/_layout-b5/$id.tsx", + "parent": "/foo/_layout-b5" + }, + "/jested/_layout-b3/_layout-c2": { + "filePath": "jested/_layout-b3/_layout-c2.tsx", + "parent": "/jested/_layout-b3", + "children": [ + "/jested/_layout-b3/_layout-c2/bar" + ] + }, + "/jested/_layout-b4/foo": { + "filePath": "jested/_layout-b4/foo.tsx", + "parent": "/jested/_layout-b4" + }, + "/nested/_layout-b1/_layout-c1": { + "filePath": "nested/_layout-b1/_layout-c1.tsx", + "parent": "/nested/_layout-b1", + "children": [ + "/nested/_layout-b1/_layout-c1/bar" + ] + }, + "/nested/_layout-b2/foo": { + "filePath": "nested/_layout-b2/foo.tsx", + "parent": "/nested/_layout-b2" + }, + "/foo/_layout-b5/": { + "filePath": "foo/_layout-b5/index.tsx", + "parent": "/foo/_layout-b5" + }, + "/jested/_layout-b3/": { + "filePath": "jested/_layout-b3/index.tsx", + "parent": "/jested/_layout-b3" + }, + "/nested/_layout-b1/": { + "filePath": "nested/_layout-b1/index.tsx", + "parent": "/nested/_layout-b1" + }, + "/jested/_layout-b3/_layout-c2/bar": { + "filePath": "jested/_layout-b3/_layout-c2/bar.tsx", + "parent": "/jested/_layout-b3/_layout-c2" + }, + "/nested/_layout-b1/_layout-c1/bar": { + "filePath": "nested/_layout-b1/_layout-c1/bar.tsx", + "parent": "/nested/_layout-b1/_layout-c1" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/nested-layouts/routeTree.snapshot.ts b/packages/router-generator/tests/generator/nested-layouts/routeTree.snapshot.ts index 5b4badb977..4425bd094f 100644 --- a/packages/router-generator/tests/generator/nested-layouts/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/nested-layouts/routeTree.snapshot.ts @@ -353,41 +353,311 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - JestedRouteRoute: JestedRouteRoute.addChildren({ - JestedLayoutB3Route: JestedLayoutB3Route.addChildren({ - JestedLayoutB3LayoutC2Route: JestedLayoutB3LayoutC2Route.addChildren({ - JestedLayoutB3LayoutC2BarRoute, - }), - JestedLayoutB3IndexRoute, - }), - JestedLayoutB4Route: JestedLayoutB4Route.addChildren({ - JestedLayoutB4FooRoute, - }), - }), - LayoutA1Route: LayoutA1Route.addChildren({ LayoutA1FooRoute }), - LayoutA2Route: LayoutA2Route.addChildren({ LayoutA2BarRoute }), - FooRoute: FooRoute.addChildren({ - FooLayoutB5RouteRoute: FooLayoutB5RouteRoute.addChildren({ - FooLayoutB5IdRoute, - FooLayoutB5IndexRoute, - }), - FooBarRoute, - }), - folderInFolderRoute, - NestedRoute: NestedRoute.addChildren({ - NestedLayoutB1Route: NestedLayoutB1Route.addChildren({ - NestedLayoutB1LayoutC1Route: NestedLayoutB1LayoutC1Route.addChildren({ - NestedLayoutB1LayoutC1BarRoute, - }), - NestedLayoutB1IndexRoute, - }), - NestedLayoutB2Route: NestedLayoutB2Route.addChildren({ - NestedLayoutB2FooRoute, - }), - }), -}) +interface JestedLayoutB3LayoutC2RouteChildren { + JestedLayoutB3LayoutC2BarRoute: typeof JestedLayoutB3LayoutC2BarRoute +} + +const JestedLayoutB3LayoutC2RouteChildren: JestedLayoutB3LayoutC2RouteChildren = + { + JestedLayoutB3LayoutC2BarRoute: JestedLayoutB3LayoutC2BarRoute, + } + +const JestedLayoutB3LayoutC2RouteWithChildren = + JestedLayoutB3LayoutC2Route._addFileChildren( + JestedLayoutB3LayoutC2RouteChildren, + ) + +interface JestedLayoutB3RouteChildren { + JestedLayoutB3LayoutC2Route: typeof JestedLayoutB3LayoutC2RouteWithChildren + JestedLayoutB3IndexRoute: typeof JestedLayoutB3IndexRoute +} + +const JestedLayoutB3RouteChildren: JestedLayoutB3RouteChildren = { + JestedLayoutB3LayoutC2Route: JestedLayoutB3LayoutC2RouteWithChildren, + JestedLayoutB3IndexRoute: JestedLayoutB3IndexRoute, +} + +const JestedLayoutB3RouteWithChildren = JestedLayoutB3Route._addFileChildren( + JestedLayoutB3RouteChildren, +) + +interface JestedLayoutB4RouteChildren { + JestedLayoutB4FooRoute: typeof JestedLayoutB4FooRoute +} + +const JestedLayoutB4RouteChildren: JestedLayoutB4RouteChildren = { + JestedLayoutB4FooRoute: JestedLayoutB4FooRoute, +} + +const JestedLayoutB4RouteWithChildren = JestedLayoutB4Route._addFileChildren( + JestedLayoutB4RouteChildren, +) + +interface JestedRouteRouteChildren { + JestedLayoutB3Route: typeof JestedLayoutB3RouteWithChildren + JestedLayoutB4Route: typeof JestedLayoutB4RouteWithChildren +} + +const JestedRouteRouteChildren: JestedRouteRouteChildren = { + JestedLayoutB3Route: JestedLayoutB3RouteWithChildren, + JestedLayoutB4Route: JestedLayoutB4RouteWithChildren, +} + +const JestedRouteRouteWithChildren = JestedRouteRoute._addFileChildren( + JestedRouteRouteChildren, +) + +interface LayoutA1RouteChildren { + LayoutA1FooRoute: typeof LayoutA1FooRoute +} + +const LayoutA1RouteChildren: LayoutA1RouteChildren = { + LayoutA1FooRoute: LayoutA1FooRoute, +} + +const LayoutA1RouteWithChildren = LayoutA1Route._addFileChildren( + LayoutA1RouteChildren, +) + +interface LayoutA2RouteChildren { + LayoutA2BarRoute: typeof LayoutA2BarRoute +} + +const LayoutA2RouteChildren: LayoutA2RouteChildren = { + LayoutA2BarRoute: LayoutA2BarRoute, +} + +const LayoutA2RouteWithChildren = LayoutA2Route._addFileChildren( + LayoutA2RouteChildren, +) + +interface FooLayoutB5RouteRouteChildren { + FooLayoutB5IdRoute: typeof FooLayoutB5IdRoute + FooLayoutB5IndexRoute: typeof FooLayoutB5IndexRoute +} + +const FooLayoutB5RouteRouteChildren: FooLayoutB5RouteRouteChildren = { + FooLayoutB5IdRoute: FooLayoutB5IdRoute, + FooLayoutB5IndexRoute: FooLayoutB5IndexRoute, +} + +const FooLayoutB5RouteRouteWithChildren = + FooLayoutB5RouteRoute._addFileChildren(FooLayoutB5RouteRouteChildren) + +interface FooRouteChildren { + FooLayoutB5RouteRoute: typeof FooLayoutB5RouteRouteWithChildren + FooBarRoute: typeof FooBarRoute +} + +const FooRouteChildren: FooRouteChildren = { + FooLayoutB5RouteRoute: FooLayoutB5RouteRouteWithChildren, + FooBarRoute: FooBarRoute, +} + +const FooRouteWithChildren = FooRoute._addFileChildren(FooRouteChildren) + +interface NestedLayoutB1LayoutC1RouteChildren { + NestedLayoutB1LayoutC1BarRoute: typeof NestedLayoutB1LayoutC1BarRoute +} + +const NestedLayoutB1LayoutC1RouteChildren: NestedLayoutB1LayoutC1RouteChildren = + { + NestedLayoutB1LayoutC1BarRoute: NestedLayoutB1LayoutC1BarRoute, + } + +const NestedLayoutB1LayoutC1RouteWithChildren = + NestedLayoutB1LayoutC1Route._addFileChildren( + NestedLayoutB1LayoutC1RouteChildren, + ) + +interface NestedLayoutB1RouteChildren { + NestedLayoutB1LayoutC1Route: typeof NestedLayoutB1LayoutC1RouteWithChildren + NestedLayoutB1IndexRoute: typeof NestedLayoutB1IndexRoute +} + +const NestedLayoutB1RouteChildren: NestedLayoutB1RouteChildren = { + NestedLayoutB1LayoutC1Route: NestedLayoutB1LayoutC1RouteWithChildren, + NestedLayoutB1IndexRoute: NestedLayoutB1IndexRoute, +} + +const NestedLayoutB1RouteWithChildren = NestedLayoutB1Route._addFileChildren( + NestedLayoutB1RouteChildren, +) + +interface NestedLayoutB2RouteChildren { + NestedLayoutB2FooRoute: typeof NestedLayoutB2FooRoute +} + +const NestedLayoutB2RouteChildren: NestedLayoutB2RouteChildren = { + NestedLayoutB2FooRoute: NestedLayoutB2FooRoute, +} + +const NestedLayoutB2RouteWithChildren = NestedLayoutB2Route._addFileChildren( + NestedLayoutB2RouteChildren, +) + +interface NestedRouteChildren { + NestedLayoutB1Route: typeof NestedLayoutB1RouteWithChildren + NestedLayoutB2Route: typeof NestedLayoutB2RouteWithChildren +} + +const NestedRouteChildren: NestedRouteChildren = { + NestedLayoutB1Route: NestedLayoutB1RouteWithChildren, + NestedLayoutB2Route: NestedLayoutB2RouteWithChildren, +} + +const NestedRouteWithChildren = + NestedRoute._addFileChildren(NestedRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/jested': typeof JestedLayoutB3LayoutC2RouteWithChildren + '': typeof LayoutA2RouteWithChildren + '/foo': typeof LayoutA1FooRoute + '/in-folder': typeof folderInFolderRoute + '/bar': typeof LayoutA2BarRoute + '/foo/bar': typeof FooBarRoute + '/nested': typeof NestedLayoutB1LayoutC1RouteWithChildren + '/foo/$id': typeof FooLayoutB5IdRoute + '/jested/foo': typeof JestedLayoutB4FooRoute + '/nested/foo': typeof NestedLayoutB2FooRoute + '/foo/': typeof FooLayoutB5IndexRoute + '/jested/': typeof JestedLayoutB3IndexRoute + '/nested/': typeof NestedLayoutB1IndexRoute + '/jested/bar': typeof JestedLayoutB3LayoutC2BarRoute + '/nested/bar': typeof NestedLayoutB1LayoutC1BarRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/jested': typeof JestedLayoutB3IndexRoute + '': typeof LayoutA2RouteWithChildren + '/foo': typeof FooLayoutB5IndexRoute + '/in-folder': typeof folderInFolderRoute + '/bar': typeof LayoutA2BarRoute + '/foo/bar': typeof FooBarRoute + '/nested': typeof NestedLayoutB1IndexRoute + '/foo/$id': typeof FooLayoutB5IdRoute + '/jested/foo': typeof JestedLayoutB4FooRoute + '/nested/foo': typeof NestedLayoutB2FooRoute + '/jested/bar': typeof JestedLayoutB3LayoutC2BarRoute + '/nested/bar': typeof NestedLayoutB1LayoutC1BarRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/jested': typeof JestedRouteRouteWithChildren + '/_layout-a1': typeof LayoutA1RouteWithChildren + '/_layout-a2': typeof LayoutA2RouteWithChildren + '/foo': typeof FooRouteWithChildren + '/foo/_layout-b5': typeof FooLayoutB5RouteRouteWithChildren + '/in-folder': typeof folderInFolderRoute + '/_layout-a1/foo': typeof LayoutA1FooRoute + '/_layout-a2/bar': typeof LayoutA2BarRoute + '/foo/bar': typeof FooBarRoute + '/jested/_layout-b3': typeof JestedLayoutB3RouteWithChildren + '/jested/_layout-b4': typeof JestedLayoutB4RouteWithChildren + '/nested': typeof NestedRouteWithChildren + '/nested/_layout-b1': typeof NestedLayoutB1RouteWithChildren + '/nested/_layout-b2': typeof NestedLayoutB2RouteWithChildren + '/foo/_layout-b5/$id': typeof FooLayoutB5IdRoute + '/jested/_layout-b3/_layout-c2': typeof JestedLayoutB3LayoutC2RouteWithChildren + '/jested/_layout-b4/foo': typeof JestedLayoutB4FooRoute + '/nested/_layout-b1/_layout-c1': typeof NestedLayoutB1LayoutC1RouteWithChildren + '/nested/_layout-b2/foo': typeof NestedLayoutB2FooRoute + '/foo/_layout-b5/': typeof FooLayoutB5IndexRoute + '/jested/_layout-b3/': typeof JestedLayoutB3IndexRoute + '/nested/_layout-b1/': typeof NestedLayoutB1IndexRoute + '/jested/_layout-b3/_layout-c2/bar': typeof JestedLayoutB3LayoutC2BarRoute + '/nested/_layout-b1/_layout-c1/bar': typeof NestedLayoutB1LayoutC1BarRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/jested' + | '' + | '/foo' + | '/in-folder' + | '/bar' + | '/foo/bar' + | '/nested' + | '/foo/$id' + | '/jested/foo' + | '/nested/foo' + | '/foo/' + | '/jested/' + | '/nested/' + | '/jested/bar' + | '/nested/bar' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '/jested' + | '' + | '/foo' + | '/in-folder' + | '/bar' + | '/foo/bar' + | '/nested' + | '/foo/$id' + | '/jested/foo' + | '/nested/foo' + | '/jested/bar' + | '/nested/bar' + id: + | '/' + | '/jested' + | '/_layout-a1' + | '/_layout-a2' + | '/foo' + | '/foo/_layout-b5' + | '/in-folder' + | '/_layout-a1/foo' + | '/_layout-a2/bar' + | '/foo/bar' + | '/jested/_layout-b3' + | '/jested/_layout-b4' + | '/nested' + | '/nested/_layout-b1' + | '/nested/_layout-b2' + | '/foo/_layout-b5/$id' + | '/jested/_layout-b3/_layout-c2' + | '/jested/_layout-b4/foo' + | '/nested/_layout-b1/_layout-c1' + | '/nested/_layout-b2/foo' + | '/foo/_layout-b5/' + | '/jested/_layout-b3/' + | '/nested/_layout-b1/' + | '/jested/_layout-b3/_layout-c2/bar' + | '/nested/_layout-b1/_layout-c1/bar' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + JestedRouteRoute: typeof JestedRouteRouteWithChildren + LayoutA1Route: typeof LayoutA1RouteWithChildren + LayoutA2Route: typeof LayoutA2RouteWithChildren + FooRoute: typeof FooRouteWithChildren + folderInFolderRoute: typeof folderInFolderRoute + NestedRoute: typeof NestedRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + JestedRouteRoute: JestedRouteRouteWithChildren, + LayoutA1Route: LayoutA1RouteWithChildren, + LayoutA2Route: LayoutA2RouteWithChildren, + FooRoute: FooRouteWithChildren, + folderInFolderRoute: folderInFolderRoute, + NestedRoute: NestedRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/packages/router-generator/tests/generator/nested/routeTree.gen.ts b/packages/router-generator/tests/generator/nested/routeTree.gen.ts new file mode 100644 index 0000000000..f0caed3910 --- /dev/null +++ b/packages/router-generator/tests/generator/nested/routeTree.gen.ts @@ -0,0 +1,316 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as PostsRouteImport } from './routes/posts/route' +import { Route as BlogRouteImport } from './routes/blog/route' +import { Route as IndexImport } from './routes/index' +import { Route as PostsIndexImport } from './routes/posts/index' +import { Route as BlogIndexImport } from './routes/blog/index' +import { Route as BlogStatsImport } from './routes/blog_/stats' +import { Route as BlogSlugImport } from './routes/blog/$slug' +import { Route as PostsPostIdIndexImport } from './routes/posts/$postId/index' +import { Route as PostsPostIdDeepImport } from './routes/posts/$postId/deep' + +// Create/Update Routes + +const PostsRouteRoute = PostsRouteImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const BlogRouteRoute = BlogRouteImport.update({ + path: '/blog', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const PostsIndexRoute = PostsIndexImport.update({ + path: '/', + getParentRoute: () => PostsRouteRoute, +} as any) + +const BlogIndexRoute = BlogIndexImport.update({ + path: '/', + getParentRoute: () => BlogRouteRoute, +} as any) + +const BlogStatsRoute = BlogStatsImport.update({ + path: '/blog/stats', + getParentRoute: () => rootRoute, +} as any) + +const BlogSlugRoute = BlogSlugImport.update({ + path: '/$slug', + getParentRoute: () => BlogRouteRoute, +} as any) + +const PostsPostIdIndexRoute = PostsPostIdIndexImport.update({ + path: '/$postId/', + getParentRoute: () => PostsRouteRoute, +} as any) + +const PostsPostIdDeepRoute = PostsPostIdDeepImport.update({ + path: '/$postId/deep', + getParentRoute: () => PostsRouteRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/blog': { + id: '/blog' + path: '/blog' + fullPath: '/blog' + preLoaderRoute: typeof BlogRouteImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsRouteImport + parentRoute: typeof rootRoute + } + '/blog/$slug': { + id: '/blog/$slug' + path: '/$slug' + fullPath: '/blog/$slug' + preLoaderRoute: typeof BlogSlugImport + parentRoute: typeof BlogRouteImport + } + '/blog/stats': { + id: '/blog/stats' + path: '/blog/stats' + fullPath: '/blog/stats' + preLoaderRoute: typeof BlogStatsImport + parentRoute: typeof rootRoute + } + '/blog/': { + id: '/blog/' + path: '/' + fullPath: '/blog/' + preLoaderRoute: typeof BlogIndexImport + parentRoute: typeof BlogRouteImport + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof PostsIndexImport + parentRoute: typeof PostsRouteImport + } + '/posts/$postId/deep': { + id: '/posts/$postId/deep' + path: '/$postId/deep' + fullPath: '/posts/$postId/deep' + preLoaderRoute: typeof PostsPostIdDeepImport + parentRoute: typeof PostsRouteImport + } + '/posts/$postId/': { + id: '/posts/$postId/' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof PostsPostIdIndexImport + parentRoute: typeof PostsRouteImport + } + } +} + +// Create and export the route tree + +interface BlogRouteRouteChildren { + BlogSlugRoute: typeof BlogSlugRoute + BlogIndexRoute: typeof BlogIndexRoute +} + +const BlogRouteRouteChildren: BlogRouteRouteChildren = { + BlogSlugRoute: BlogSlugRoute, + BlogIndexRoute: BlogIndexRoute, +} + +const BlogRouteRouteWithChildren = BlogRouteRoute._addFileChildren( + BlogRouteRouteChildren, +) + +interface PostsRouteRouteChildren { + PostsIndexRoute: typeof PostsIndexRoute + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute + PostsPostIdIndexRoute: typeof PostsPostIdIndexRoute +} + +const PostsRouteRouteChildren: PostsRouteRouteChildren = { + PostsIndexRoute: PostsIndexRoute, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, + PostsPostIdIndexRoute: PostsPostIdIndexRoute, +} + +const PostsRouteRouteWithChildren = PostsRouteRoute._addFileChildren( + PostsRouteRouteChildren, +) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/blog': typeof BlogRouteRouteWithChildren + '/posts': typeof PostsRouteRouteWithChildren + '/blog/$slug': typeof BlogSlugRoute + '/blog/stats': typeof BlogStatsRoute + '/blog/': typeof BlogIndexRoute + '/posts/': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/posts/$postId': typeof PostsPostIdIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/blog/$slug': typeof BlogSlugRoute + '/blog/stats': typeof BlogStatsRoute + '/blog': typeof BlogIndexRoute + '/posts': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/posts/$postId': typeof PostsPostIdIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/blog': typeof BlogRouteRouteWithChildren + '/posts': typeof PostsRouteRouteWithChildren + '/blog/$slug': typeof BlogSlugRoute + '/blog/stats': typeof BlogStatsRoute + '/blog/': typeof BlogIndexRoute + '/posts/': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/posts/$postId/': typeof PostsPostIdIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '/blog/$slug' + | '/blog/stats' + | '/blog' + | '/posts' + | '/posts/$postId/deep' + | '/posts/$postId' + id: + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + BlogRouteRoute: typeof BlogRouteRouteWithChildren + PostsRouteRoute: typeof PostsRouteRouteWithChildren + BlogStatsRoute: typeof BlogStatsRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + BlogRouteRoute: BlogRouteRouteWithChildren, + PostsRouteRoute: PostsRouteRouteWithChildren, + BlogStatsRoute: BlogStatsRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/blog", + "/posts", + "/blog/stats" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/blog": { + "filePath": "blog/route.tsx", + "children": [ + "/blog/$slug", + "/blog/" + ] + }, + "/posts": { + "filePath": "posts/route.tsx", + "children": [ + "/posts/", + "/posts/$postId/deep", + "/posts/$postId/" + ] + }, + "/blog/$slug": { + "filePath": "blog/$slug.tsx", + "parent": "/blog" + }, + "/blog/stats": { + "filePath": "blog_/stats.tsx" + }, + "/blog/": { + "filePath": "blog/index.tsx", + "parent": "/blog" + }, + "/posts/": { + "filePath": "posts/index.tsx", + "parent": "/posts" + }, + "/posts/$postId/deep": { + "filePath": "posts/$postId/deep.tsx", + "parent": "/posts" + }, + "/posts/$postId/": { + "filePath": "posts/$postId/index.tsx", + "parent": "/posts" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/nested/routeTree.snapshot.ts b/packages/router-generator/tests/generator/nested/routeTree.snapshot.ts index 3c86bcf804..f0caed3910 100644 --- a/packages/router-generator/tests/generator/nested/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/nested/routeTree.snapshot.ts @@ -140,16 +140,121 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - BlogRouteRoute: BlogRouteRoute.addChildren({ BlogSlugRoute, BlogIndexRoute }), - PostsRouteRoute: PostsRouteRoute.addChildren({ - PostsIndexRoute, - PostsPostIdDeepRoute, - PostsPostIdIndexRoute, - }), - BlogStatsRoute, -}) +interface BlogRouteRouteChildren { + BlogSlugRoute: typeof BlogSlugRoute + BlogIndexRoute: typeof BlogIndexRoute +} + +const BlogRouteRouteChildren: BlogRouteRouteChildren = { + BlogSlugRoute: BlogSlugRoute, + BlogIndexRoute: BlogIndexRoute, +} + +const BlogRouteRouteWithChildren = BlogRouteRoute._addFileChildren( + BlogRouteRouteChildren, +) + +interface PostsRouteRouteChildren { + PostsIndexRoute: typeof PostsIndexRoute + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute + PostsPostIdIndexRoute: typeof PostsPostIdIndexRoute +} + +const PostsRouteRouteChildren: PostsRouteRouteChildren = { + PostsIndexRoute: PostsIndexRoute, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, + PostsPostIdIndexRoute: PostsPostIdIndexRoute, +} + +const PostsRouteRouteWithChildren = PostsRouteRoute._addFileChildren( + PostsRouteRouteChildren, +) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/blog': typeof BlogRouteRouteWithChildren + '/posts': typeof PostsRouteRouteWithChildren + '/blog/$slug': typeof BlogSlugRoute + '/blog/stats': typeof BlogStatsRoute + '/blog/': typeof BlogIndexRoute + '/posts/': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/posts/$postId': typeof PostsPostIdIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/blog/$slug': typeof BlogSlugRoute + '/blog/stats': typeof BlogStatsRoute + '/blog': typeof BlogIndexRoute + '/posts': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/posts/$postId': typeof PostsPostIdIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/blog': typeof BlogRouteRouteWithChildren + '/posts': typeof PostsRouteRouteWithChildren + '/blog/$slug': typeof BlogSlugRoute + '/blog/stats': typeof BlogStatsRoute + '/blog/': typeof BlogIndexRoute + '/posts/': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/posts/$postId/': typeof PostsPostIdIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '/blog/$slug' + | '/blog/stats' + | '/blog' + | '/posts' + | '/posts/$postId/deep' + | '/posts/$postId' + id: + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + BlogRouteRoute: typeof BlogRouteRouteWithChildren + PostsRouteRoute: typeof PostsRouteRouteWithChildren + BlogStatsRoute: typeof BlogStatsRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + BlogRouteRoute: BlogRouteRouteWithChildren, + PostsRouteRoute: PostsRouteRouteWithChildren, + BlogStatsRoute: BlogStatsRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/packages/router-generator/tests/generator/nested/routes/__root.tsx b/packages/router-generator/tests/generator/nested/routes/__root.tsx index ab504e42e9..f89644e82d 100644 --- a/packages/router-generator/tests/generator/nested/routes/__root.tsx +++ b/packages/router-generator/tests/generator/nested/routes/__root.tsx @@ -1 +1,11 @@ -/** */ +import * as React from 'react' +import { Outlet, createRootRoute } from '@tanstack/react-router' + +export const Route = createRootRoute({ + component: () => ( + +
Hello "__root"!
+ +
+ ), +}) diff --git a/packages/router-generator/tests/generator/nested/routes/blog/$slug.tsx b/packages/router-generator/tests/generator/nested/routes/blog/$slug.tsx index ab504e42e9..0389370c39 100644 --- a/packages/router-generator/tests/generator/nested/routes/blog/$slug.tsx +++ b/packages/router-generator/tests/generator/nested/routes/blog/$slug.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/blog/$slug')({ + component: () =>
Hello /blog/$slug!
, +}) diff --git a/packages/router-generator/tests/generator/nested/routes/blog/index.tsx b/packages/router-generator/tests/generator/nested/routes/blog/index.tsx index ab504e42e9..6fab51efb1 100644 --- a/packages/router-generator/tests/generator/nested/routes/blog/index.tsx +++ b/packages/router-generator/tests/generator/nested/routes/blog/index.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/blog/')({ + component: () =>
Hello /blog/!
, +}) diff --git a/packages/router-generator/tests/generator/nested/routes/blog/route.tsx b/packages/router-generator/tests/generator/nested/routes/blog/route.tsx index ab504e42e9..2833fcc588 100644 --- a/packages/router-generator/tests/generator/nested/routes/blog/route.tsx +++ b/packages/router-generator/tests/generator/nested/routes/blog/route.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/blog')({ + component: () =>
Hello /blog!
, +}) diff --git a/packages/router-generator/tests/generator/nested/routes/blog_/stats.tsx b/packages/router-generator/tests/generator/nested/routes/blog_/stats.tsx index ab504e42e9..ee8a8181ef 100644 --- a/packages/router-generator/tests/generator/nested/routes/blog_/stats.tsx +++ b/packages/router-generator/tests/generator/nested/routes/blog_/stats.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/blog/stats')({ + component: () =>
Hello /blog/stats!
, +}) diff --git a/packages/router-generator/tests/generator/nested/routes/index.tsx b/packages/router-generator/tests/generator/nested/routes/index.tsx index ab504e42e9..a680913ded 100644 --- a/packages/router-generator/tests/generator/nested/routes/index.tsx +++ b/packages/router-generator/tests/generator/nested/routes/index.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: () =>
Hello /!
, +}) diff --git a/packages/router-generator/tests/generator/nested/routes/posts/$postId/deep.tsx b/packages/router-generator/tests/generator/nested/routes/posts/$postId/deep.tsx index ab504e42e9..eec00feafc 100644 --- a/packages/router-generator/tests/generator/nested/routes/posts/$postId/deep.tsx +++ b/packages/router-generator/tests/generator/nested/routes/posts/$postId/deep.tsx @@ -1 +1,8 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/$postId/deep')({ + context: () => ({ someContext: 'context' }), + loaderDeps: () => ({ dep: 1 }), + loader: () => ({ data: 'data' }), + component: () =>
Hello /posts/$postId/deep!
, +}) diff --git a/packages/router-generator/tests/generator/nested/routes/posts/$postId/index.tsx b/packages/router-generator/tests/generator/nested/routes/posts/$postId/index.tsx index ab504e42e9..1f0f31b0b2 100644 --- a/packages/router-generator/tests/generator/nested/routes/posts/$postId/index.tsx +++ b/packages/router-generator/tests/generator/nested/routes/posts/$postId/index.tsx @@ -1 +1,8 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/$postId/')({ + validateSearch: () => ({ + indexSearch: 'search', + }), + component: () =>
Hello /posts/$postId/!
, +}) diff --git a/packages/router-generator/tests/generator/nested/routes/posts/index.tsx b/packages/router-generator/tests/generator/nested/routes/posts/index.tsx index ab504e42e9..f3c995416c 100644 --- a/packages/router-generator/tests/generator/nested/routes/posts/index.tsx +++ b/packages/router-generator/tests/generator/nested/routes/posts/index.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/')({ + component: () =>
Hello /posts/!
, +}) diff --git a/packages/router-generator/tests/generator/nested/routes/posts/route.tsx b/packages/router-generator/tests/generator/nested/routes/posts/route.tsx index ab504e42e9..c298ab4675 100644 --- a/packages/router-generator/tests/generator/nested/routes/posts/route.tsx +++ b/packages/router-generator/tests/generator/nested/routes/posts/route.tsx @@ -1 +1,5 @@ -/** */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts')({ + component: () =>
Hello /posts!
, +}) diff --git a/packages/router-generator/tests/generator/nested/tests.test-d.ts b/packages/router-generator/tests/generator/nested/tests.test-d.ts new file mode 100644 index 0000000000..93921b72b3 --- /dev/null +++ b/packages/router-generator/tests/generator/nested/tests.test-d.ts @@ -0,0 +1,534 @@ +import { + createRouter, + Link, + MakeRouteMatch, + redirect, + useLoaderData, + useLoaderDeps, + useMatch, + useNavigate, + useParams, + useRouteContext, + useSearch, +} from '@tanstack/react-router' +import { test, expectTypeOf } from 'vitest' +import { routeTree } from './routeTree.gen' + +const defaultRouter = createRouter({ + routeTree, +}) + +type DefaultRouter = typeof defaultRouter + +const alwaysTrailingSlashRouter = createRouter({ + routeTree, + trailingSlash: 'always', +}) + +const neverTrailingSlashRouter = createRouter({ + routeTree, + trailingSlash: 'never', +}) + +const preserveTrailingSlashRouter = createRouter({ + routeTree, + trailingSlash: 'preserve', +}) + +test('when navigating to the root', () => { + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('to') + .toEqualTypeOf< + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/posts/$postId/deep' + | '/posts/$postId' + | undefined + >() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('to') + .toEqualTypeOf< + | '/' + | '/blog/' + | '/posts/' + | '/blog/$slug/' + | '/blog/stats/' + | '/posts/$postId/deep/' + | '/posts/$postId/' + | undefined + >() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('to') + .toEqualTypeOf< + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/posts/$postId/deep' + | '/posts/$postId' + | undefined + >() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('to') + .toEqualTypeOf< + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/posts/$postId/deep' + | '/posts/$postId' + | '/blog/' + | '/posts/' + | '/blog/$slug/' + | '/blog/stats/' + | '/posts/$postId/deep/' + | '/posts/$postId/' + | undefined + >() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('from') + .toEqualTypeOf< + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId' + | undefined + >() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: any) => any>() + .toEqualTypeOf() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: any) => any>() + .toEqualTypeOf() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: any) => any>() + .toEqualTypeOf() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: any) => any>() + .toEqualTypeOf() +}) + +test('when navigating a index route with search and params', () => { + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('to') + .toEqualTypeOf< + | '.' + | '..' + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/posts/$postId/deep' + | '/posts/$postId' + | undefined + >() + + expectTypeOf( + Link, + ) + .parameter(0) + .toHaveProperty('to') + .toEqualTypeOf< + | './' + | '../' + | '/' + | '/blog/' + | '/posts/' + | '/blog/$slug/' + | '/blog/stats/' + | '/posts/$postId/deep/' + | '/posts/$postId/' + | undefined + >() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('to') + .toEqualTypeOf< + | '/' + | '/posts/$postId' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/posts/$postId/deep' + | '/posts/$postId' + | '.' + | '..' + | undefined + >() + + expectTypeOf( + Link, + ) + .parameter(0) + .toHaveProperty('to') + .toEqualTypeOf< + | '..' + | '../' + | '.' + | './' + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/posts/$postId/deep' + | '/posts/$postId' + | '/blog/' + | '/posts/' + | '/blog/$slug/' + | '/blog/stats/' + | '/posts/$postId/deep/' + | '/posts/$postId/' + | undefined + >() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('from') + .toEqualTypeOf< + | '/' + | '/posts/$postId' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | undefined + >() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: any) => any>() + .toEqualTypeOf<{ indexSearch: string }>() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: any) => any>() + .toEqualTypeOf() + + expectTypeOf( + Link, + ) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: any) => any>() + .toEqualTypeOf<{ indexSearch: string }>() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: any) => any>() + .toEqualTypeOf() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: any) => any>() + .toEqualTypeOf<{ indexSearch: string }>() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: any) => any>() + .toEqualTypeOf<{ indexSearch: string }>() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('search') + .exclude<(...args: any) => any>() + .toEqualTypeOf<{ indexSearch: string }>() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('params') + .exclude<(...args: any) => any>() + .toEqualTypeOf<{ postId: string }>() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('params') + .exclude<(...args: any) => any>() + .toEqualTypeOf() + + expectTypeOf( + Link, + ) + .parameter(0) + .toHaveProperty('params') + .exclude<(...args: any) => any>() + .toEqualTypeOf<{ postId: string }>() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('params') + .exclude<(...args: any) => any>() + .toEqualTypeOf() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('params') + .exclude<(...args: any) => any>() + .toEqualTypeOf<{ postId: string }>() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('params') + .exclude<(...args: any) => any>() + .toEqualTypeOf<{ postId: string }>() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('params') + .exclude<(...args: any) => any>() + .toEqualTypeOf<{ postId: string }>() +}) + +test('when navigating from a index route with search and params', () => { + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('from') + .toEqualTypeOf< + | '/' + | '/posts/$postId' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | undefined + >() + + expectTypeOf(Link) + .parameter(0) + .toHaveProperty('search') + .parameter(0) + .toEqualTypeOf<{ indexSearch: string }>() +}) + +test('when using useNavigate', () => { + const navigate = useNavigate() + + expectTypeOf(navigate) + .parameter(0) + .toHaveProperty('to') + .toEqualTypeOf< + | '/' + | '.' + | '..' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/posts/$postId/deep' + | '/posts/$postId' + | undefined + >() +}) + +test('when using redirect', () => { + expectTypeOf(redirect) + .parameter(0) + .toHaveProperty('to') + .toEqualTypeOf< + | '/' + | '/posts/$postId' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/posts/$postId/deep' + | undefined + >() +}) + +test('when using useSearch from a route with no search', () => { + expectTypeOf(useSearch) + .parameter(0) + .toHaveProperty('from') + .toEqualTypeOf< + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId/' + >() + + expectTypeOf( + useSearch, + ).returns.toEqualTypeOf<{}>() +}) + +test('when using useSearch from a route with search', () => { + expectTypeOf(useSearch) + .parameter(0) + .toHaveProperty('from') + .toEqualTypeOf< + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId/' + >() + + expectTypeOf( + useSearch, + ).returns.toEqualTypeOf<{ indexSearch: string }>() +}) + +test('when using useLoaderData from a route with loaderData', () => { + expectTypeOf(useLoaderData) + .parameter(0) + .toHaveProperty('from') + .toEqualTypeOf< + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId/' + >() + + expectTypeOf( + useLoaderData, + ).returns.toEqualTypeOf<{ data: string }>() +}) + +test('when using useLoaderDeps from a route with loaderDeps', () => { + expectTypeOf(useLoaderDeps) + .parameter(0) + .toHaveProperty('from') + .toEqualTypeOf< + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId/' + >() + + expectTypeOf( + useLoaderDeps, + ).returns.toEqualTypeOf<{ dep: number }>() +}) + +test('when using useMatch from a route', () => { + expectTypeOf(useMatch) + .parameter(0) + .toHaveProperty('from') + .toEqualTypeOf< + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId/' + >() + + expectTypeOf( + useMatch, + ).returns.toEqualTypeOf< + MakeRouteMatch + >() +}) + +test('when using useParams from a route', () => { + expectTypeOf(useParams) + .parameter(0) + .toHaveProperty('from') + .toEqualTypeOf< + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId/' + >() + + expectTypeOf( + useParams, + ).returns.toEqualTypeOf<{ postId: string }>() +}) + +test('when using useRouteContext from a route', () => { + expectTypeOf( + useRouteContext, + ) + .parameter(0) + .toHaveProperty('from') + .toEqualTypeOf< + | '/' + | '/blog' + | '/posts' + | '/blog/$slug' + | '/blog/stats' + | '/blog/' + | '/posts/' + | '/posts/$postId/deep' + | '/posts/$postId/' + >() + + expectTypeOf( + useRouteContext, + ).returns.toEqualTypeOf<{ someContext: string }>() +}) diff --git a/packages/router-generator/tests/generator/no-manifest/routeTree.gen.ts b/packages/router-generator/tests/generator/no-manifest/routeTree.gen.ts new file mode 100644 index 0000000000..60d1f48694 --- /dev/null +++ b/packages/router-generator/tests/generator/no-manifest/routeTree.gen.ts @@ -0,0 +1,72 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as IndexImport } from './routes/index' + +// Create/Update Routes + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + } +} + +// Create and export the route tree + +interface FileRoutesByFullPath { + '/': typeof IndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' + fileRoutesByTo: FileRoutesByTo + to: '/' + id: '/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ diff --git a/packages/router-generator/tests/generator/no-manifest/routeTree.snapshot.ts b/packages/router-generator/tests/generator/no-manifest/routeTree.snapshot.ts index 042241cd82..60d1f48694 100644 --- a/packages/router-generator/tests/generator/no-manifest/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/no-manifest/routeTree.snapshot.ts @@ -36,6 +36,37 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ IndexRoute }) +interface FileRoutesByFullPath { + '/': typeof IndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' + fileRoutesByTo: FileRoutesByTo + to: '/' + id: '/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/packages/router-generator/tests/generator/route-groups/routeTree.gen.ts b/packages/router-generator/tests/generator/route-groups/routeTree.gen.ts new file mode 100644 index 0000000000..5234ee5feb --- /dev/null +++ b/packages/router-generator/tests/generator/route-groups/routeTree.gen.ts @@ -0,0 +1,88 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as fooAsdfbarIdImport } from './routes/(foo)/asdf/(bar)/$id' + +// Create/Update Routes + +const fooAsdfbarIdRoute = fooAsdfbarIdImport.update({ + path: '/asdf/$id', + getParentRoute: () => rootRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/(foo)/asdf/(bar)/$id': { + id: '/asdf/$id' + path: '/asdf/$id' + fullPath: '/asdf/$id' + preLoaderRoute: typeof fooAsdfbarIdImport + parentRoute: typeof rootRoute + } + } +} + +// Create and export the route tree + +interface FileRoutesByFullPath { + '/asdf/$id': typeof fooAsdfbarIdRoute +} + +interface FileRoutesByTo { + '/asdf/$id': typeof fooAsdfbarIdRoute +} + +interface FileRoutesById { + '/asdf/$id': typeof fooAsdfbarIdRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/asdf/$id' + fileRoutesByTo: FileRoutesByTo + to: '/asdf/$id' + id: '/asdf/$id' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + fooAsdfbarIdRoute: typeof fooAsdfbarIdRoute +} + +const rootRouteChildren: RootRouteChildren = { + fooAsdfbarIdRoute: fooAsdfbarIdRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/asdf/$id" + ] + }, + "/asdf/$id": { + "filePath": "(foo)/asdf/(bar)/$id.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/route-groups/routeTree.snapshot.ts b/packages/router-generator/tests/generator/route-groups/routeTree.snapshot.ts index b859aa928a..5234ee5feb 100644 --- a/packages/router-generator/tests/generator/route-groups/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/route-groups/routeTree.snapshot.ts @@ -36,7 +36,38 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ fooAsdfbarIdRoute }) +interface FileRoutesByFullPath { + '/asdf/$id': typeof fooAsdfbarIdRoute +} + +interface FileRoutesByTo { + '/asdf/$id': typeof fooAsdfbarIdRoute +} + +interface FileRoutesById { + '/asdf/$id': typeof fooAsdfbarIdRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/asdf/$id' + fileRoutesByTo: FileRoutesByTo + to: '/asdf/$id' + id: '/asdf/$id' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + fooAsdfbarIdRoute: typeof fooAsdfbarIdRoute +} + +const rootRouteChildren: RootRouteChildren = { + fooAsdfbarIdRoute: fooAsdfbarIdRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/packages/router-generator/tests/generator/single-level/routeTree.gen.ts b/packages/router-generator/tests/generator/single-level/routeTree.gen.ts new file mode 100644 index 0000000000..75ec72d071 --- /dev/null +++ b/packages/router-generator/tests/generator/single-level/routeTree.gen.ts @@ -0,0 +1,110 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as PostsImport } from './routes/posts' +import { Route as IndexImport } from './routes/index' + +// Create/Update Routes + +const PostsRoute = PostsImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsImport + parentRoute: typeof rootRoute + } + } +} + +// Create and export the route tree + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/posts': typeof PostsRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/posts': typeof PostsRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/posts': typeof PostsRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/posts' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/posts' + id: '/' | '/posts' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + PostsRoute: typeof PostsRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + PostsRoute: PostsRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/posts" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/posts": { + "filePath": "posts.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/single-level/routeTree.snapshot.ts b/packages/router-generator/tests/generator/single-level/routeTree.snapshot.ts index 67e435a985..75ec72d071 100644 --- a/packages/router-generator/tests/generator/single-level/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/single-level/routeTree.snapshot.ts @@ -49,7 +49,43 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ IndexRoute, PostsRoute }) +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/posts': typeof PostsRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/posts': typeof PostsRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/posts': typeof PostsRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/posts' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/posts' + id: '/' | '/posts' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + PostsRoute: typeof PostsRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + PostsRoute: PostsRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.gen.ts b/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.gen.ts new file mode 100644 index 0000000000..749d5a95c4 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.gen.ts @@ -0,0 +1,166 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as IndexImport } from './routes/index' +import { Route as FooBarImport } from './routes/foo/bar' +import { Route as fooBarDetailsImport } from './routes/foo/bar/details' +import { Route as fooBarHomeImport } from './routes/foo/bar/home' + +// Create/Update Routes + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const FooBarRoute = FooBarImport.update({ + path: '/foo/bar', + getParentRoute: () => rootRoute, +} as any) + +const fooBarDetailsRoute = fooBarDetailsImport.update({ + path: '/$id', + getParentRoute: () => FooBarRoute, +} as any) + +const fooBarHomeRoute = fooBarHomeImport.update({ + path: '/', + getParentRoute: () => FooBarRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/foo/bar': { + id: '/foo/bar' + path: '/foo/bar' + fullPath: '/foo/bar' + preLoaderRoute: typeof FooBarImport + parentRoute: typeof rootRoute + } + '/foo/bar/': { + id: '/foo/bar/' + path: '/' + fullPath: '/foo/bar/' + preLoaderRoute: typeof fooBarHomeImport + parentRoute: typeof FooBarImport + } + '/foo/bar/$id': { + id: '/foo/bar/$id' + path: '/$id' + fullPath: '/foo/bar/$id' + preLoaderRoute: typeof fooBarDetailsImport + parentRoute: typeof FooBarImport + } + } +} + +// Create and export the route tree + +interface FooBarRouteChildren { + fooBarHomeRoute: typeof fooBarHomeRoute + fooBarDetailsRoute: typeof fooBarDetailsRoute +} + +const FooBarRouteChildren: FooBarRouteChildren = { + fooBarHomeRoute: fooBarHomeRoute, + fooBarDetailsRoute: fooBarDetailsRoute, +} + +const FooBarRouteWithChildren = + FooBarRoute._addFileChildren(FooBarRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/foo/bar': typeof FooBarRouteWithChildren + '/foo/bar/': typeof fooBarHomeRoute + '/foo/bar/$id': typeof fooBarDetailsRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/foo/bar': typeof fooBarHomeRoute + '/foo/bar/$id': typeof fooBarDetailsRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/foo/bar': typeof FooBarRouteWithChildren + '/foo/bar/': typeof fooBarHomeRoute + '/foo/bar/$id': typeof fooBarDetailsRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/foo/bar' | '/foo/bar/' | '/foo/bar/$id' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/foo/bar' | '/foo/bar/$id' + id: '/' | '/foo/bar' | '/foo/bar/' | '/foo/bar/$id' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + FooBarRoute: typeof FooBarRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + FooBarRoute: FooBarRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/foo/bar" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/foo/bar": { + "filePath": "foo/bar.tsx", + "children": [ + "/foo/bar/", + "/foo/bar/$id" + ] + }, + "/foo/bar/": { + "filePath": "foo/bar/home.tsx", + "parent": "/foo/bar" + }, + "/foo/bar/$id": { + "filePath": "foo/bar/details.tsx", + "parent": "/foo/bar" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.snapshot.ts b/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.snapshot.ts index 0d0aaa0dce..749d5a95c4 100644 --- a/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.snapshot.ts @@ -75,10 +75,61 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - FooBarRoute: FooBarRoute.addChildren({ fooBarHomeRoute, fooBarDetailsRoute }), -}) +interface FooBarRouteChildren { + fooBarHomeRoute: typeof fooBarHomeRoute + fooBarDetailsRoute: typeof fooBarDetailsRoute +} + +const FooBarRouteChildren: FooBarRouteChildren = { + fooBarHomeRoute: fooBarHomeRoute, + fooBarDetailsRoute: fooBarDetailsRoute, +} + +const FooBarRouteWithChildren = + FooBarRoute._addFileChildren(FooBarRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/foo/bar': typeof FooBarRouteWithChildren + '/foo/bar/': typeof fooBarHomeRoute + '/foo/bar/$id': typeof fooBarDetailsRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/foo/bar': typeof fooBarHomeRoute + '/foo/bar/$id': typeof fooBarDetailsRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/foo/bar': typeof FooBarRouteWithChildren + '/foo/bar/': typeof fooBarHomeRoute + '/foo/bar/$id': typeof fooBarDetailsRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/foo/bar' | '/foo/bar/' | '/foo/bar/$id' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/foo/bar' | '/foo/bar/$id' + id: '/' | '/foo/bar' | '/foo/bar/' | '/foo/bar/$id' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + FooBarRoute: typeof FooBarRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + FooBarRoute: FooBarRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/packages/router-generator/tests/generator/virtual/routeTree.gen.ts b/packages/router-generator/tests/generator/virtual/routeTree.gen.ts new file mode 100644 index 0000000000..57ec5c5ea2 --- /dev/null +++ b/packages/router-generator/tests/generator/virtual/routeTree.gen.ts @@ -0,0 +1,354 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/root' +import { Route as layoutImport } from './routes/layout' +import { Route as indexImport } from './routes/index' +import { Route as dbDashboardImport } from './routes/db/dashboard' +import { Route as HelloIndexImport } from './routes/subtree/index' +import { Route as dbDashboardInvoicesImport } from './routes/db/dashboard-invoices' +import { Route as dbDashboardIndexImport } from './routes/db/dashboard-index' +import { Route as HelloFooIndexImport } from './routes/subtree/foo/index' +import { Route as HelloFooIdImport } from './routes/subtree/foo/$id' +import { Route as dbInvoiceDetailImport } from './routes/db/invoice-detail' +import { Route as dbInvoicesIndexImport } from './routes/db/invoices-index' + +// Create/Update Routes + +const layoutRoute = layoutImport.update({ + id: '/_layout', + getParentRoute: () => rootRoute, +} as any) + +const indexRoute = indexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const dbDashboardRoute = dbDashboardImport.update({ + path: '/dashboard', + getParentRoute: () => layoutRoute, +} as any) + +const HelloIndexRoute = HelloIndexImport.update({ + path: '/hello/', + getParentRoute: () => layoutRoute, +} as any) + +const dbDashboardInvoicesRoute = dbDashboardInvoicesImport.update({ + path: '/invoices', + getParentRoute: () => dbDashboardRoute, +} as any) + +const dbDashboardIndexRoute = dbDashboardIndexImport.update({ + path: '/', + getParentRoute: () => dbDashboardRoute, +} as any) + +const HelloFooIndexRoute = HelloFooIndexImport.update({ + path: '/hello/foo/', + getParentRoute: () => layoutRoute, +} as any) + +const HelloFooIdRoute = HelloFooIdImport.update({ + path: '/hello/foo/$id', + getParentRoute: () => layoutRoute, +} as any) + +const dbInvoiceDetailRoute = dbInvoiceDetailImport.update({ + path: '/$id', + getParentRoute: () => dbDashboardInvoicesRoute, +} as any) + +const dbInvoicesIndexRoute = dbInvoicesIndexImport.update({ + path: '/', + getParentRoute: () => dbDashboardInvoicesRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof indexImport + parentRoute: typeof rootRoute + } + '/_layout': { + id: '/_layout' + path: '' + fullPath: '' + preLoaderRoute: typeof layoutImport + parentRoute: typeof rootRoute + } + '/_layout/dashboard': { + id: '/_layout/dashboard' + path: '/dashboard' + fullPath: '/dashboard' + preLoaderRoute: typeof dbDashboardImport + parentRoute: typeof layoutImport + } + '/_layout/dashboard/': { + id: '/_layout/dashboard/' + path: '/' + fullPath: '/dashboard/' + preLoaderRoute: typeof dbDashboardIndexImport + parentRoute: typeof dbDashboardImport + } + '/_layout/dashboard/invoices': { + id: '/_layout/dashboard/invoices' + path: '/invoices' + fullPath: '/dashboard/invoices' + preLoaderRoute: typeof dbDashboardInvoicesImport + parentRoute: typeof dbDashboardImport + } + '/_layout/hello/': { + id: '/_layout/hello/' + path: '/hello' + fullPath: '/hello' + preLoaderRoute: typeof HelloIndexImport + parentRoute: typeof layoutImport + } + '/_layout/dashboard/invoices/': { + id: '/_layout/dashboard/invoices/' + path: '/' + fullPath: '/dashboard/invoices/' + preLoaderRoute: typeof dbInvoicesIndexImport + parentRoute: typeof dbDashboardInvoicesImport + } + '/_layout/dashboard/invoices/$id': { + id: '/_layout/dashboard/invoices/$id' + path: '/$id' + fullPath: '/dashboard/invoices/$id' + preLoaderRoute: typeof dbInvoiceDetailImport + parentRoute: typeof dbDashboardInvoicesImport + } + '/_layout/hello/foo/$id': { + id: '/_layout/hello/foo/$id' + path: '/hello/foo/$id' + fullPath: '/hello/foo/$id' + preLoaderRoute: typeof HelloFooIdImport + parentRoute: typeof layoutImport + } + '/_layout/hello/foo/': { + id: '/_layout/hello/foo/' + path: '/hello/foo' + fullPath: '/hello/foo' + preLoaderRoute: typeof HelloFooIndexImport + parentRoute: typeof layoutImport + } + } +} + +// Create and export the route tree + +interface dbDashboardInvoicesRouteChildren { + dbInvoicesIndexRoute: typeof dbInvoicesIndexRoute + dbInvoiceDetailRoute: typeof dbInvoiceDetailRoute +} + +const dbDashboardInvoicesRouteChildren: dbDashboardInvoicesRouteChildren = { + dbInvoicesIndexRoute: dbInvoicesIndexRoute, + dbInvoiceDetailRoute: dbInvoiceDetailRoute, +} + +const dbDashboardInvoicesRouteWithChildren = + dbDashboardInvoicesRoute._addFileChildren(dbDashboardInvoicesRouteChildren) + +interface dbDashboardRouteChildren { + dbDashboardIndexRoute: typeof dbDashboardIndexRoute + dbDashboardInvoicesRoute: typeof dbDashboardInvoicesRouteWithChildren +} + +const dbDashboardRouteChildren: dbDashboardRouteChildren = { + dbDashboardIndexRoute: dbDashboardIndexRoute, + dbDashboardInvoicesRoute: dbDashboardInvoicesRouteWithChildren, +} + +const dbDashboardRouteWithChildren = dbDashboardRoute._addFileChildren( + dbDashboardRouteChildren, +) + +interface layoutRouteChildren { + dbDashboardRoute: typeof dbDashboardRouteWithChildren + HelloIndexRoute: typeof HelloIndexRoute + HelloFooIdRoute: typeof HelloFooIdRoute + HelloFooIndexRoute: typeof HelloFooIndexRoute +} + +const layoutRouteChildren: layoutRouteChildren = { + dbDashboardRoute: dbDashboardRouteWithChildren, + HelloIndexRoute: HelloIndexRoute, + HelloFooIdRoute: HelloFooIdRoute, + HelloFooIndexRoute: HelloFooIndexRoute, +} + +const layoutRouteWithChildren = + layoutRoute._addFileChildren(layoutRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof indexRoute + '': typeof layoutRouteWithChildren + '/dashboard': typeof dbDashboardRouteWithChildren + '/dashboard/': typeof dbDashboardIndexRoute + '/dashboard/invoices': typeof dbDashboardInvoicesRouteWithChildren + '/hello': typeof HelloIndexRoute + '/dashboard/invoices/': typeof dbInvoicesIndexRoute + '/dashboard/invoices/$id': typeof dbInvoiceDetailRoute + '/hello/foo/$id': typeof HelloFooIdRoute + '/hello/foo': typeof HelloFooIndexRoute +} + +interface FileRoutesByTo { + '/': typeof indexRoute + '': typeof layoutRouteWithChildren + '/dashboard': typeof dbDashboardIndexRoute + '/hello': typeof HelloIndexRoute + '/dashboard/invoices': typeof dbInvoicesIndexRoute + '/dashboard/invoices/$id': typeof dbInvoiceDetailRoute + '/hello/foo/$id': typeof HelloFooIdRoute + '/hello/foo': typeof HelloFooIndexRoute +} + +interface FileRoutesById { + '/': typeof indexRoute + '/_layout': typeof layoutRouteWithChildren + '/_layout/dashboard': typeof dbDashboardRouteWithChildren + '/_layout/dashboard/': typeof dbDashboardIndexRoute + '/_layout/dashboard/invoices': typeof dbDashboardInvoicesRouteWithChildren + '/_layout/hello/': typeof HelloIndexRoute + '/_layout/dashboard/invoices/': typeof dbInvoicesIndexRoute + '/_layout/dashboard/invoices/$id': typeof dbInvoiceDetailRoute + '/_layout/hello/foo/$id': typeof HelloFooIdRoute + '/_layout/hello/foo/': typeof HelloFooIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/dashboard' + | '/dashboard/' + | '/dashboard/invoices' + | '/hello' + | '/dashboard/invoices/' + | '/dashboard/invoices/$id' + | '/hello/foo/$id' + | '/hello/foo' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/dashboard' + | '/hello' + | '/dashboard/invoices' + | '/dashboard/invoices/$id' + | '/hello/foo/$id' + | '/hello/foo' + id: + | '/' + | '/_layout' + | '/_layout/dashboard' + | '/_layout/dashboard/' + | '/_layout/dashboard/invoices' + | '/_layout/hello/' + | '/_layout/dashboard/invoices/' + | '/_layout/dashboard/invoices/$id' + | '/_layout/hello/foo/$id' + | '/_layout/hello/foo/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + indexRoute: typeof indexRoute + layoutRoute: typeof layoutRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + indexRoute: indexRoute, + layoutRoute: layoutRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "root.tsx", + "children": [ + "/", + "/_layout" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_layout": { + "filePath": "layout.tsx", + "children": [ + "/_layout/dashboard", + "/_layout/hello/", + "/_layout/hello/foo/$id", + "/_layout/hello/foo/" + ] + }, + "/_layout/dashboard": { + "filePath": "db/dashboard.tsx", + "parent": "/_layout", + "children": [ + "/_layout/dashboard/", + "/_layout/dashboard/invoices" + ] + }, + "/_layout/dashboard/": { + "filePath": "db/dashboard-index.tsx", + "parent": "/_layout/dashboard" + }, + "/_layout/dashboard/invoices": { + "filePath": "db/dashboard-invoices.tsx", + "parent": "/_layout/dashboard", + "children": [ + "/_layout/dashboard/invoices/", + "/_layout/dashboard/invoices/$id" + ] + }, + "/_layout/hello/": { + "filePath": "subtree/index.tsx", + "parent": "/_layout" + }, + "/_layout/dashboard/invoices/": { + "filePath": "db/invoices-index.tsx", + "parent": "/_layout/dashboard/invoices" + }, + "/_layout/dashboard/invoices/$id": { + "filePath": "db/invoice-detail.tsx", + "parent": "/_layout/dashboard/invoices" + }, + "/_layout/hello/foo/$id": { + "filePath": "subtree/foo/$id.tsx", + "parent": "/_layout" + }, + "/_layout/hello/foo/": { + "filePath": "subtree/foo/index.tsx", + "parent": "/_layout" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/virtual/routeTree.snapshot.ts b/packages/router-generator/tests/generator/virtual/routeTree.snapshot.ts index cbc5660e20..57ec5c5ea2 100644 --- a/packages/router-generator/tests/generator/virtual/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/virtual/routeTree.snapshot.ts @@ -153,21 +153,137 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - indexRoute, - layoutRoute: layoutRoute.addChildren({ - dbDashboardRoute: dbDashboardRoute.addChildren({ - dbDashboardIndexRoute, - dbDashboardInvoicesRoute: dbDashboardInvoicesRoute.addChildren({ - dbInvoicesIndexRoute, - dbInvoiceDetailRoute, - }), - }), - HelloIndexRoute, - HelloFooIdRoute, - HelloFooIndexRoute, - }), -}) +interface dbDashboardInvoicesRouteChildren { + dbInvoicesIndexRoute: typeof dbInvoicesIndexRoute + dbInvoiceDetailRoute: typeof dbInvoiceDetailRoute +} + +const dbDashboardInvoicesRouteChildren: dbDashboardInvoicesRouteChildren = { + dbInvoicesIndexRoute: dbInvoicesIndexRoute, + dbInvoiceDetailRoute: dbInvoiceDetailRoute, +} + +const dbDashboardInvoicesRouteWithChildren = + dbDashboardInvoicesRoute._addFileChildren(dbDashboardInvoicesRouteChildren) + +interface dbDashboardRouteChildren { + dbDashboardIndexRoute: typeof dbDashboardIndexRoute + dbDashboardInvoicesRoute: typeof dbDashboardInvoicesRouteWithChildren +} + +const dbDashboardRouteChildren: dbDashboardRouteChildren = { + dbDashboardIndexRoute: dbDashboardIndexRoute, + dbDashboardInvoicesRoute: dbDashboardInvoicesRouteWithChildren, +} + +const dbDashboardRouteWithChildren = dbDashboardRoute._addFileChildren( + dbDashboardRouteChildren, +) + +interface layoutRouteChildren { + dbDashboardRoute: typeof dbDashboardRouteWithChildren + HelloIndexRoute: typeof HelloIndexRoute + HelloFooIdRoute: typeof HelloFooIdRoute + HelloFooIndexRoute: typeof HelloFooIndexRoute +} + +const layoutRouteChildren: layoutRouteChildren = { + dbDashboardRoute: dbDashboardRouteWithChildren, + HelloIndexRoute: HelloIndexRoute, + HelloFooIdRoute: HelloFooIdRoute, + HelloFooIndexRoute: HelloFooIndexRoute, +} + +const layoutRouteWithChildren = + layoutRoute._addFileChildren(layoutRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof indexRoute + '': typeof layoutRouteWithChildren + '/dashboard': typeof dbDashboardRouteWithChildren + '/dashboard/': typeof dbDashboardIndexRoute + '/dashboard/invoices': typeof dbDashboardInvoicesRouteWithChildren + '/hello': typeof HelloIndexRoute + '/dashboard/invoices/': typeof dbInvoicesIndexRoute + '/dashboard/invoices/$id': typeof dbInvoiceDetailRoute + '/hello/foo/$id': typeof HelloFooIdRoute + '/hello/foo': typeof HelloFooIndexRoute +} + +interface FileRoutesByTo { + '/': typeof indexRoute + '': typeof layoutRouteWithChildren + '/dashboard': typeof dbDashboardIndexRoute + '/hello': typeof HelloIndexRoute + '/dashboard/invoices': typeof dbInvoicesIndexRoute + '/dashboard/invoices/$id': typeof dbInvoiceDetailRoute + '/hello/foo/$id': typeof HelloFooIdRoute + '/hello/foo': typeof HelloFooIndexRoute +} + +interface FileRoutesById { + '/': typeof indexRoute + '/_layout': typeof layoutRouteWithChildren + '/_layout/dashboard': typeof dbDashboardRouteWithChildren + '/_layout/dashboard/': typeof dbDashboardIndexRoute + '/_layout/dashboard/invoices': typeof dbDashboardInvoicesRouteWithChildren + '/_layout/hello/': typeof HelloIndexRoute + '/_layout/dashboard/invoices/': typeof dbInvoicesIndexRoute + '/_layout/dashboard/invoices/$id': typeof dbInvoiceDetailRoute + '/_layout/hello/foo/$id': typeof HelloFooIdRoute + '/_layout/hello/foo/': typeof HelloFooIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/dashboard' + | '/dashboard/' + | '/dashboard/invoices' + | '/hello' + | '/dashboard/invoices/' + | '/dashboard/invoices/$id' + | '/hello/foo/$id' + | '/hello/foo' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/dashboard' + | '/hello' + | '/dashboard/invoices' + | '/dashboard/invoices/$id' + | '/hello/foo/$id' + | '/hello/foo' + id: + | '/' + | '/_layout' + | '/_layout/dashboard' + | '/_layout/dashboard/' + | '/_layout/dashboard/invoices' + | '/_layout/hello/' + | '/_layout/dashboard/invoices/' + | '/_layout/dashboard/invoices/$id' + | '/_layout/hello/foo/$id' + | '/_layout/hello/foo/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + indexRoute: typeof indexRoute + layoutRoute: typeof layoutRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + indexRoute: indexRoute, + layoutRoute: layoutRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/packages/router-generator/tests/generator/virtual/routes/root.tsx b/packages/router-generator/tests/generator/virtual/routes/root.tsx index 3ae2044956..a294139860 100644 --- a/packages/router-generator/tests/generator/virtual/routes/root.tsx +++ b/packages/router-generator/tests/generator/virtual/routes/root.tsx @@ -1,5 +1,5 @@ import { createFileRoute } from '@tanstack/react-router' -export const Route = createFileRoute('/root')({ +export const Route = createFileRoute('/')({ component: () =>
Hello !
, }) diff --git a/packages/router-generator/tsconfig.json b/packages/router-generator/tsconfig.json index 604fde5556..4c0c7257cb 100644 --- a/packages/router-generator/tsconfig.json +++ b/packages/router-generator/tsconfig.json @@ -1,5 +1,8 @@ { "extends": "../../tsconfig.json", - "include": ["src", "vite.config.ts", "tests"], - "exclude": ["tests/generator/**/**"] + "compilerOptions": { + "jsx": "react-jsx", + "module": "ESNext" + }, + "include": ["src", "vite.config.ts", "tests"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 65cb3faa02..a3cac5aa2a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2032,6 +2032,10 @@ importers: zod: specifier: ^3.23.8 version: 3.23.8 + devDependencies: + '@tanstack/react-router': + specifier: workspace:* + version: link:../react-router packages/router-plugin: dependencies: From 05dc8bdaafb918f463c4ff5e31619268635068a2 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 5 Sep 2024 23:34:49 +0000 Subject: [PATCH 058/154] release: v1.56.1 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic-virtual-file-based/package.json | 6 +++--- .../basic-virtual-inside-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 47 files changed, 122 insertions(+), 122 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 2da91739dd..7fbf14653a 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 8d441e50c9..9cb6d48f7a 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index de299ca889..873f7d7cc2 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 7e9845f3a6..1c9f660076 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index b58357c656..2dace1a107 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,9 +12,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 9fba3a2724..d3e8fd48b5 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index afda40e072..92d5b13040 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", - "@tanstack/start": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", + "@tanstack/start": "^1.56.1", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 7b6e75452b..509bee15ee 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", - "@tanstack/start": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", + "@tanstack/start": "^1.56.1", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index b1495475a2..64b82746ad 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 176b9c5811..eb71231523 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.52.5", - "@tanstack/router-devtools": "^1.52.5", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 55aff450d5..1223ac6740 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 57061e6bd3..e857e61c90 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index c8cfca9e0b..c63fbecfe4 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 7a33baf629..f1a181e5ac 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index cbaebaf12d..b751207d0d 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 2cd3df12e3..7ff80503e7 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 9669e0131c..442b325d89 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 0cde132416..ad9509494f 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 1cb12e5fad..c5c92e4527 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index b59d99373f..2ab1a22977 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 724364a9e7..7fef2d0c73 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/router-plugin": "^1.56.1", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.5.3" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 9873d5c289..d2a0a1dacf 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/router-plugin": "^1.56.1", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 47f43afe83..537426a62b 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index ee1d86ffcc..4b46413b65 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", + "@tanstack/react-router": "^1.56.1", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/router-devtools": "^1.56.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index d0da00f6c4..1ab157c125 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", - "@tanstack/router-zod-adapter": "^1.53.1", - "@tanstack/router-valibot-adapter": "^1.53.1", - "@tanstack/router-arktype-adapter": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", + "@tanstack/router-zod-adapter": "^1.56.1", + "@tanstack/router-valibot-adapter": "^1.56.1", + "@tanstack/router-arktype-adapter": "^1.56.1", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 2b26d7fc69..ad6f44a7a2 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", - "@tanstack/start": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", + "@tanstack/start": "^1.56.1", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 0ce7c43421..e0ed1453fc 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/start": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/start": "^1.56.1", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 7d505a24de..adbd1afbcb 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.1", - "@tanstack/react-router-with-query": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", - "@tanstack/start": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/react-router-with-query": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", + "@tanstack/start": "^1.56.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index cf99d3c7fa..5662b607e0 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", - "@tanstack/start": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", + "@tanstack/start": "^1.56.1", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 08b42bc37d..c1ed4e5bf1 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", - "@tanstack/start": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", + "@tanstack/start": "^1.56.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 6b31378646..e5007662d7 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", - "@tanstack/start": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", + "@tanstack/start": "^1.56.1", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 74245a03bf..e35b1b2582 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.1", - "@tanstack/react-router-with-query": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", - "@tanstack/start": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/react-router-with-query": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", + "@tanstack/start": "^1.56.1", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index c89e68819f..2f463cc2d4 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.1", - "@tanstack/react-router-with-query": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", - "@tanstack/start": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/react-router-with-query": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", + "@tanstack/start": "^1.56.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 2ff0d4e8fa..d76245b295 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 3adc65d66d..c3c673c106 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 63cd95463a..3f4615e798 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.53.1", - "@tanstack/router-devtools": "^1.53.1", - "@tanstack/router-plugin": "^1.56.0", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 62d9b869fa..92bc922ba4 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.53.1", + "version": "1.56.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 4da343f79c..6dae407753 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.53.1", + "version": "1.56.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 180a80560a..b8dfc9f4ef 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.53.1", + "version": "1.56.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 8fc500382b..7be16d477b 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.56.0", + "version": "1.56.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 34d842add0..0a482e5024 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.53.1", + "version": "1.56.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index b4c8ea85ed..98ee3bda68 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.56.0", + "version": "1.56.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 13252e21c1..3459a91c72 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.56.0", + "version": "1.56.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index f0bc3c08de..342813dc81 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.53.1", + "version": "1.56.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 42aec0ab11..03340c6522 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.56.0", + "version": "1.56.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index c37ccbf6e0..4cd82bb2f6 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.53.1", + "version": "1.56.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 4d46a40ea3..e1762604e9 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.56.0", + "version": "1.56.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 5fa21ad90ef07bdc4db8b8cb1b3ff99cbf72bb82 Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Fri, 6 Sep 2024 13:59:33 +1200 Subject: [PATCH 059/154] chore(examples): regenerate route-tree files (#2272) --- .../authenticated-routes/src/routeTree.gen.ts | 104 +++++++- .../src/routeTree.gen.ts | 138 ++++++++-- .../basic-file-based/src/routeTree.gen.ts | 116 ++++++++- .../src/routeTree.gen.ts | 116 ++++++++- .../basic-ssr-file-based/src/routeTree.gen.ts | 64 ++++- .../src/routeTree.gen.ts | 64 ++++- .../src/routeTree.gen.ts | 170 +++++++++++-- .../src/routeTree.gen.ts | 143 +++++++++-- .../src/routeTree.gen.ts | 222 ++++++++++++++-- .../src/routeTree.gen.ts | 237 ++++++++++++++++-- .../src/routeTree.gen.ts | 38 ++- .../src/routeTree.gen.ts | 38 ++- .../src/routeTree.gen.ts | 38 ++- .../src/routeTree.gen.ts | 53 +++- .../start-basic-auth/app/routeTree.gen.ts | 113 ++++++++- .../start-basic-counter/app/routeTree.gen.ts | 33 ++- .../app/routeTree.gen.ts | 180 +++++++++++-- .../start-basic-rsc/app/routeTree.gen.ts | 131 +++++++++- .../react/start-basic/app/routeTree.gen.ts | 180 +++++++++++-- .../start-clerk-basic/app/routeTree.gen.ts | 91 ++++++- .../app/routeTree.gen.ts | 41 ++- .../react/start-trellaux/app/routeTree.gen.ts | 41 ++- .../app/routeTree.gen.ts | 97 ++++++- examples/react/with-trpc/app/routeTree.gen.ts | 97 ++++++- 24 files changed, 2315 insertions(+), 230 deletions(-) diff --git a/examples/react/authenticated-routes/src/routeTree.gen.ts b/examples/react/authenticated-routes/src/routeTree.gen.ts index 4201d90da2..f876489d26 100644 --- a/examples/react/authenticated-routes/src/routeTree.gen.ts +++ b/examples/react/authenticated-routes/src/routeTree.gen.ts @@ -114,17 +114,99 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - AuthRoute: AuthRoute.addChildren({ - AuthDashboardRoute, - AuthInvoicesRoute: AuthInvoicesRoute.addChildren({ - AuthInvoicesInvoiceIdRoute, - AuthInvoicesIndexRoute, - }), - }), - LoginRoute, -}) +interface AuthInvoicesRouteChildren { + AuthInvoicesInvoiceIdRoute: typeof AuthInvoicesInvoiceIdRoute + AuthInvoicesIndexRoute: typeof AuthInvoicesIndexRoute +} + +const AuthInvoicesRouteChildren: AuthInvoicesRouteChildren = { + AuthInvoicesInvoiceIdRoute: AuthInvoicesInvoiceIdRoute, + AuthInvoicesIndexRoute: AuthInvoicesIndexRoute, +} + +const AuthInvoicesRouteWithChildren = AuthInvoicesRoute._addFileChildren( + AuthInvoicesRouteChildren, +) + +interface AuthRouteChildren { + AuthDashboardRoute: typeof AuthDashboardRoute + AuthInvoicesRoute: typeof AuthInvoicesRouteWithChildren +} + +const AuthRouteChildren: AuthRouteChildren = { + AuthDashboardRoute: AuthDashboardRoute, + AuthInvoicesRoute: AuthInvoicesRouteWithChildren, +} + +const AuthRouteWithChildren = AuthRoute._addFileChildren(AuthRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof AuthRouteWithChildren + '/login': typeof LoginRoute + '/dashboard': typeof AuthDashboardRoute + '/invoices': typeof AuthInvoicesRouteWithChildren + '/invoices/$invoiceId': typeof AuthInvoicesInvoiceIdRoute + '/invoices/': typeof AuthInvoicesIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof AuthRouteWithChildren + '/login': typeof LoginRoute + '/dashboard': typeof AuthDashboardRoute + '/invoices/$invoiceId': typeof AuthInvoicesInvoiceIdRoute + '/invoices': typeof AuthInvoicesIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/_auth': typeof AuthRouteWithChildren + '/login': typeof LoginRoute + '/_auth/dashboard': typeof AuthDashboardRoute + '/_auth/invoices': typeof AuthInvoicesRouteWithChildren + '/_auth/invoices/$invoiceId': typeof AuthInvoicesInvoiceIdRoute + '/_auth/invoices/': typeof AuthInvoicesIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/login' + | '/dashboard' + | '/invoices' + | '/invoices/$invoiceId' + | '/invoices/' + fileRoutesByTo: FileRoutesByTo + to: '/' | '' | '/login' | '/dashboard' | '/invoices/$invoiceId' | '/invoices' + id: + | '/' + | '/_auth' + | '/login' + | '/_auth/dashboard' + | '/_auth/invoices' + | '/_auth/invoices/$invoiceId' + | '/_auth/invoices/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AuthRoute: typeof AuthRouteWithChildren + LoginRoute: typeof LoginRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AuthRoute: AuthRouteWithChildren, + LoginRoute: LoginRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/basic-file-based-codesplitting/src/routeTree.gen.ts b/examples/react/basic-file-based-codesplitting/src/routeTree.gen.ts index 4b128f0d34..5d2c72de03 100644 --- a/examples/react/basic-file-based-codesplitting/src/routeTree.gen.ts +++ b/examples/react/basic-file-based-codesplitting/src/routeTree.gen.ts @@ -151,20 +151,130 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexLazyRoute, - PostsRoute: PostsRoute.addChildren({ - PostsPostIdRouteRoute, - PostsIndexRoute, - }), - LayoutTestLazyRoute: LayoutTestLazyRoute.addChildren({ - LayoutTestLayoutARoute, - LayoutTestLayoutBRoute: LayoutTestLayoutBRoute.addChildren({ - LayoutTestLayoutBTestLazyRoute, - }), - }), - PostsPostIdDeepRoute, -}) +interface PostsRouteChildren { + PostsPostIdRouteRoute: typeof PostsPostIdRouteRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRouteRoute: PostsPostIdRouteRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +interface LayoutTestLayoutBRouteChildren { + LayoutTestLayoutBTestLazyRoute: typeof LayoutTestLayoutBTestLazyRoute +} + +const LayoutTestLayoutBRouteChildren: LayoutTestLayoutBRouteChildren = { + LayoutTestLayoutBTestLazyRoute: LayoutTestLayoutBTestLazyRoute, +} + +const LayoutTestLayoutBRouteWithChildren = + LayoutTestLayoutBRoute._addFileChildren(LayoutTestLayoutBRouteChildren) + +interface LayoutTestLazyRouteChildren { + LayoutTestLayoutARoute: typeof LayoutTestLayoutARoute + LayoutTestLayoutBRoute: typeof LayoutTestLayoutBRouteWithChildren +} + +const LayoutTestLazyRouteChildren: LayoutTestLazyRouteChildren = { + LayoutTestLayoutARoute: LayoutTestLayoutARoute, + LayoutTestLayoutBRoute: LayoutTestLayoutBRouteWithChildren, +} + +const LayoutTestLazyRouteWithChildren = LayoutTestLazyRoute._addFileChildren( + LayoutTestLazyRouteChildren, +) + +interface FileRoutesByFullPath { + '/': typeof IndexLazyRoute + '/posts': typeof PostsRouteWithChildren + '': typeof LayoutTestLazyRouteWithChildren + '/posts/$postId': typeof PostsPostIdRouteRoute + '/layout-a': typeof LayoutTestLayoutARoute + '/layout-b': typeof LayoutTestLayoutBRouteWithChildren + '/posts/': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/layout-b/test': typeof LayoutTestLayoutBTestLazyRoute +} + +interface FileRoutesByTo { + '/': typeof IndexLazyRoute + '': typeof LayoutTestLazyRouteWithChildren + '/posts/$postId': typeof PostsPostIdRouteRoute + '/layout-a': typeof LayoutTestLayoutARoute + '/layout-b': typeof LayoutTestLayoutBRouteWithChildren + '/posts': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/layout-b/test': typeof LayoutTestLayoutBTestLazyRoute +} + +interface FileRoutesById { + '/': typeof IndexLazyRoute + '/posts': typeof PostsRouteWithChildren + '/_layout-test': typeof LayoutTestLazyRouteWithChildren + '/posts/$postId': typeof PostsPostIdRouteRoute + '/_layout-test/layout-a': typeof LayoutTestLayoutARoute + '/_layout-test/layout-b': typeof LayoutTestLayoutBRouteWithChildren + '/posts/': typeof PostsIndexRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute + '/_layout-test/layout-b/test': typeof LayoutTestLayoutBTestLazyRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/posts' + | '' + | '/posts/$postId' + | '/layout-a' + | '/layout-b' + | '/posts/' + | '/posts/$postId/deep' + | '/layout-b/test' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/posts/$postId' + | '/layout-a' + | '/layout-b' + | '/posts' + | '/posts/$postId/deep' + | '/layout-b/test' + id: + | '/' + | '/posts' + | '/_layout-test' + | '/posts/$postId' + | '/_layout-test/layout-a' + | '/_layout-test/layout-b' + | '/posts/' + | '/posts/$postId/deep' + | '/_layout-test/layout-b/test' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexLazyRoute: typeof IndexLazyRoute + PostsRoute: typeof PostsRouteWithChildren + LayoutTestLazyRoute: typeof LayoutTestLazyRouteWithChildren + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexLazyRoute: IndexLazyRoute, + PostsRoute: PostsRouteWithChildren, + LayoutTestLazyRoute: LayoutTestLazyRouteWithChildren, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/basic-file-based/src/routeTree.gen.ts b/examples/react/basic-file-based/src/routeTree.gen.ts index ccfd4abf71..3a1e550804 100644 --- a/examples/react/basic-file-based/src/routeTree.gen.ts +++ b/examples/react/basic-file-based/src/routeTree.gen.ts @@ -127,16 +127,112 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - LayoutRoute: LayoutRoute.addChildren({ - LayoutLayout2Route: LayoutLayout2Route.addChildren({ - LayoutLayout2LayoutARoute, - LayoutLayout2LayoutBRoute, - }), - }), - PostsRoute: PostsRoute.addChildren({ PostsPostIdRoute, PostsIndexRoute }), -}) +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/posts' + | '/posts/$postId' + | '/posts/' + | '/layout-a' + | '/layout-b' + fileRoutesByTo: FileRoutesByTo + to: '/' | '' | '/posts/$postId' | '/posts' | '/layout-a' | '/layout-b' + id: + | '/' + | '/_layout' + | '/posts' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/posts/' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + PostsRoute: typeof PostsRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + PostsRoute: PostsRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/basic-react-query-file-based/src/routeTree.gen.ts b/examples/react/basic-react-query-file-based/src/routeTree.gen.ts index ccfd4abf71..3a1e550804 100644 --- a/examples/react/basic-react-query-file-based/src/routeTree.gen.ts +++ b/examples/react/basic-react-query-file-based/src/routeTree.gen.ts @@ -127,16 +127,112 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - LayoutRoute: LayoutRoute.addChildren({ - LayoutLayout2Route: LayoutLayout2Route.addChildren({ - LayoutLayout2LayoutARoute, - LayoutLayout2LayoutBRoute, - }), - }), - PostsRoute: PostsRoute.addChildren({ PostsPostIdRoute, PostsIndexRoute }), -}) +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/posts' + | '/posts/$postId' + | '/posts/' + | '/layout-a' + | '/layout-b' + fileRoutesByTo: FileRoutesByTo + to: '/' | '' | '/posts/$postId' | '/posts' | '/layout-a' | '/layout-b' + id: + | '/' + | '/_layout' + | '/posts' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/posts/' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + PostsRoute: typeof PostsRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + PostsRoute: PostsRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/basic-ssr-file-based/src/routeTree.gen.ts b/examples/react/basic-ssr-file-based/src/routeTree.gen.ts index 5eac4ed42c..b03a565b9a 100644 --- a/examples/react/basic-ssr-file-based/src/routeTree.gen.ts +++ b/examples/react/basic-ssr-file-based/src/routeTree.gen.ts @@ -88,11 +88,65 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - ErrorRoute, - PostsRoute: PostsRoute.addChildren({ PostsPostIdRoute, PostsIndexRoute }), -}) +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/error': typeof ErrorRoute + '/posts': typeof PostsRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/error': typeof ErrorRoute + '/posts/$postId': typeof PostsPostIdRoute + '/posts': typeof PostsIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/error': typeof ErrorRoute + '/posts': typeof PostsRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/error' | '/posts' | '/posts/$postId' | '/posts/' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/error' | '/posts/$postId' | '/posts' + id: '/' | '/error' | '/posts' | '/posts/$postId' | '/posts/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + ErrorRoute: typeof ErrorRoute + PostsRoute: typeof PostsRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + ErrorRoute: ErrorRoute, + PostsRoute: PostsRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/basic-ssr-streaming-file-based/src/routeTree.gen.ts b/examples/react/basic-ssr-streaming-file-based/src/routeTree.gen.ts index 5eac4ed42c..b03a565b9a 100644 --- a/examples/react/basic-ssr-streaming-file-based/src/routeTree.gen.ts +++ b/examples/react/basic-ssr-streaming-file-based/src/routeTree.gen.ts @@ -88,11 +88,65 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - ErrorRoute, - PostsRoute: PostsRoute.addChildren({ PostsPostIdRoute, PostsIndexRoute }), -}) +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/error': typeof ErrorRoute + '/posts': typeof PostsRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/error': typeof ErrorRoute + '/posts/$postId': typeof PostsPostIdRoute + '/posts': typeof PostsIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/error': typeof ErrorRoute + '/posts': typeof PostsRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/error' | '/posts' | '/posts/$postId' | '/posts/' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/error' | '/posts/$postId' | '/posts' + id: '/' | '/error' | '/posts' | '/posts/$postId' | '/posts/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + ErrorRoute: typeof ErrorRoute + PostsRoute: typeof PostsRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + ErrorRoute: ErrorRoute, + PostsRoute: PostsRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/basic-virtual-file-based/src/routeTree.gen.ts b/examples/react/basic-virtual-file-based/src/routeTree.gen.ts index 0b6af24d47..98172f8933 100644 --- a/examples/react/basic-virtual-file-based/src/routeTree.gen.ts +++ b/examples/react/basic-virtual-file-based/src/routeTree.gen.ts @@ -179,24 +179,158 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - homeRoute, - layoutFirstLayoutRoute: layoutFirstLayoutRoute.addChildren({ - layoutSecondLayoutRoute: layoutSecondLayoutRoute.addChildren({ - aRoute, - bRoute, - }), - }), - postsPostsRoute: postsPostsRoute.addChildren({ - postsPostsHomeRoute, - postsPostsDetailRoute, - }), - ClassicHelloRouteRoute: ClassicHelloRouteRoute.addChildren({ - ClassicHelloUniverseRoute, - ClassicHelloWorldRoute, - ClassicHelloIndexRoute, - }), -}) +interface layoutSecondLayoutRouteChildren { + aRoute: typeof aRoute + bRoute: typeof bRoute +} + +const layoutSecondLayoutRouteChildren: layoutSecondLayoutRouteChildren = { + aRoute: aRoute, + bRoute: bRoute, +} + +const layoutSecondLayoutRouteWithChildren = + layoutSecondLayoutRoute._addFileChildren(layoutSecondLayoutRouteChildren) + +interface layoutFirstLayoutRouteChildren { + layoutSecondLayoutRoute: typeof layoutSecondLayoutRouteWithChildren +} + +const layoutFirstLayoutRouteChildren: layoutFirstLayoutRouteChildren = { + layoutSecondLayoutRoute: layoutSecondLayoutRouteWithChildren, +} + +const layoutFirstLayoutRouteWithChildren = + layoutFirstLayoutRoute._addFileChildren(layoutFirstLayoutRouteChildren) + +interface postsPostsRouteChildren { + postsPostsHomeRoute: typeof postsPostsHomeRoute + postsPostsDetailRoute: typeof postsPostsDetailRoute +} + +const postsPostsRouteChildren: postsPostsRouteChildren = { + postsPostsHomeRoute: postsPostsHomeRoute, + postsPostsDetailRoute: postsPostsDetailRoute, +} + +const postsPostsRouteWithChildren = postsPostsRoute._addFileChildren( + postsPostsRouteChildren, +) + +interface ClassicHelloRouteRouteChildren { + ClassicHelloUniverseRoute: typeof ClassicHelloUniverseRoute + ClassicHelloWorldRoute: typeof ClassicHelloWorldRoute + ClassicHelloIndexRoute: typeof ClassicHelloIndexRoute +} + +const ClassicHelloRouteRouteChildren: ClassicHelloRouteRouteChildren = { + ClassicHelloUniverseRoute: ClassicHelloUniverseRoute, + ClassicHelloWorldRoute: ClassicHelloWorldRoute, + ClassicHelloIndexRoute: ClassicHelloIndexRoute, +} + +const ClassicHelloRouteRouteWithChildren = + ClassicHelloRouteRoute._addFileChildren(ClassicHelloRouteRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof homeRoute + '': typeof layoutSecondLayoutRouteWithChildren + '/posts': typeof postsPostsRouteWithChildren + '/classic/hello': typeof ClassicHelloRouteRouteWithChildren + '/posts/': typeof postsPostsHomeRoute + '/posts/$postId': typeof postsPostsDetailRoute + '/layout-a': typeof aRoute + '/layout-b': typeof bRoute + '/classic/hello/universe': typeof ClassicHelloUniverseRoute + '/classic/hello/world': typeof ClassicHelloWorldRoute + '/classic/hello/': typeof ClassicHelloIndexRoute +} + +interface FileRoutesByTo { + '/': typeof homeRoute + '': typeof layoutSecondLayoutRouteWithChildren + '/posts': typeof postsPostsHomeRoute + '/posts/$postId': typeof postsPostsDetailRoute + '/layout-a': typeof aRoute + '/layout-b': typeof bRoute + '/classic/hello/universe': typeof ClassicHelloUniverseRoute + '/classic/hello/world': typeof ClassicHelloWorldRoute + '/classic/hello': typeof ClassicHelloIndexRoute +} + +interface FileRoutesById { + '/': typeof homeRoute + '/_first': typeof layoutFirstLayoutRouteWithChildren + '/posts': typeof postsPostsRouteWithChildren + '/classic/hello': typeof ClassicHelloRouteRouteWithChildren + '/posts/': typeof postsPostsHomeRoute + '/_first/_second': typeof layoutSecondLayoutRouteWithChildren + '/posts/$postId': typeof postsPostsDetailRoute + '/_first/_second/layout-a': typeof aRoute + '/_first/_second/layout-b': typeof bRoute + '/classic/hello/universe': typeof ClassicHelloUniverseRoute + '/classic/hello/world': typeof ClassicHelloWorldRoute + '/classic/hello/': typeof ClassicHelloIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/posts' + | '/classic/hello' + | '/posts/' + | '/posts/$postId' + | '/layout-a' + | '/layout-b' + | '/classic/hello/universe' + | '/classic/hello/world' + | '/classic/hello/' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/posts' + | '/posts/$postId' + | '/layout-a' + | '/layout-b' + | '/classic/hello/universe' + | '/classic/hello/world' + | '/classic/hello' + id: + | '/' + | '/_first' + | '/posts' + | '/classic/hello' + | '/posts/' + | '/_first/_second' + | '/posts/$postId' + | '/_first/_second/layout-a' + | '/_first/_second/layout-b' + | '/classic/hello/universe' + | '/classic/hello/world' + | '/classic/hello/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + homeRoute: typeof homeRoute + layoutFirstLayoutRoute: typeof layoutFirstLayoutRouteWithChildren + postsPostsRoute: typeof postsPostsRouteWithChildren + ClassicHelloRouteRoute: typeof ClassicHelloRouteRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + homeRoute: homeRoute, + layoutFirstLayoutRoute: layoutFirstLayoutRouteWithChildren, + postsPostsRoute: postsPostsRouteWithChildren, + ClassicHelloRouteRoute: ClassicHelloRouteRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/basic-virtual-inside-file-based/src/routeTree.gen.ts b/examples/react/basic-virtual-inside-file-based/src/routeTree.gen.ts index 9f23d1480d..a00fc42a57 100644 --- a/examples/react/basic-virtual-inside-file-based/src/routeTree.gen.ts +++ b/examples/react/basic-virtual-inside-file-based/src/routeTree.gen.ts @@ -153,21 +153,134 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - LayoutRoute: LayoutRoute.addChildren({ - LayoutLayout2Route: LayoutLayout2Route.addChildren({ - LayoutLayout2LayoutARoute, - LayoutLayout2LayoutBRoute, - }), - }), - PostsRoute: PostsRoute.addChildren({ - postsHomeRoute, - postsDetailsRoute, - postsLetsGoIndexRoute, - postsLetsGoDeeperHomeRoute, - }), -}) +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + postsHomeRoute: typeof postsHomeRoute + postsDetailsRoute: typeof postsDetailsRoute + postsLetsGoIndexRoute: typeof postsLetsGoIndexRoute + postsLetsGoDeeperHomeRoute: typeof postsLetsGoDeeperHomeRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + postsHomeRoute: postsHomeRoute, + postsDetailsRoute: postsDetailsRoute, + postsLetsGoIndexRoute: postsLetsGoIndexRoute, + postsLetsGoDeeperHomeRoute: postsLetsGoDeeperHomeRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/posts/': typeof postsHomeRoute + '/posts/$postId': typeof postsDetailsRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/inception': typeof postsLetsGoIndexRoute + '/posts/inception/deeper': typeof postsLetsGoDeeperHomeRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts': typeof postsHomeRoute + '/posts/$postId': typeof postsDetailsRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/inception': typeof postsLetsGoIndexRoute + '/posts/inception/deeper': typeof postsLetsGoDeeperHomeRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/posts/': typeof postsHomeRoute + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof postsDetailsRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/inception/': typeof postsLetsGoIndexRoute + '/posts/inception/deeper/': typeof postsLetsGoDeeperHomeRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/posts' + | '/posts/' + | '/posts/$postId' + | '/layout-a' + | '/layout-b' + | '/posts/inception' + | '/posts/inception/deeper' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/posts' + | '/posts/$postId' + | '/layout-a' + | '/layout-b' + | '/posts/inception' + | '/posts/inception/deeper' + id: + | '/' + | '/_layout' + | '/posts' + | '/posts/' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + | '/posts/inception/' + | '/posts/inception/deeper/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + PostsRoute: typeof PostsRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + PostsRoute: PostsRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/kitchen-sink-file-based/src/routeTree.gen.ts b/examples/react/kitchen-sink-file-based/src/routeTree.gen.ts index 311a20c29f..dd342e9d9b 100644 --- a/examples/react/kitchen-sink-file-based/src/routeTree.gen.ts +++ b/examples/react/kitchen-sink-file-based/src/routeTree.gen.ts @@ -254,28 +254,206 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - AuthRoute: AuthRoute.addChildren({ AuthProfileRoute }), - LayoutRoute: LayoutRoute.addChildren({ - LayoutLayoutARoute, - LayoutLayoutBRoute, - }), - DashboardRoute: DashboardRoute.addChildren({ - DashboardInvoicesRoute: DashboardInvoicesRoute.addChildren({ - DashboardInvoicesInvoiceIdRoute, - DashboardInvoicesIndexRoute, - }), - DashboardUsersRoute: DashboardUsersRoute.addChildren({ - DashboardUsersUserRoute, - DashboardUsersIndexRoute, - }), - DashboardIndexRoute, - }), - LoginRoute, - thisFolderIsNotInTheUrlRouteGroupRoute, - ExpensiveIndexLazyRoute, -}) +interface AuthRouteChildren { + AuthProfileRoute: typeof AuthProfileRoute +} + +const AuthRouteChildren: AuthRouteChildren = { + AuthProfileRoute: AuthProfileRoute, +} + +const AuthRouteWithChildren = AuthRoute._addFileChildren(AuthRouteChildren) + +interface LayoutRouteChildren { + LayoutLayoutARoute: typeof LayoutLayoutARoute + LayoutLayoutBRoute: typeof LayoutLayoutBRoute +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayoutARoute: LayoutLayoutARoute, + LayoutLayoutBRoute: LayoutLayoutBRoute, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface DashboardInvoicesRouteChildren { + DashboardInvoicesInvoiceIdRoute: typeof DashboardInvoicesInvoiceIdRoute + DashboardInvoicesIndexRoute: typeof DashboardInvoicesIndexRoute +} + +const DashboardInvoicesRouteChildren: DashboardInvoicesRouteChildren = { + DashboardInvoicesInvoiceIdRoute: DashboardInvoicesInvoiceIdRoute, + DashboardInvoicesIndexRoute: DashboardInvoicesIndexRoute, +} + +const DashboardInvoicesRouteWithChildren = + DashboardInvoicesRoute._addFileChildren(DashboardInvoicesRouteChildren) + +interface DashboardUsersRouteChildren { + DashboardUsersUserRoute: typeof DashboardUsersUserRoute + DashboardUsersIndexRoute: typeof DashboardUsersIndexRoute +} + +const DashboardUsersRouteChildren: DashboardUsersRouteChildren = { + DashboardUsersUserRoute: DashboardUsersUserRoute, + DashboardUsersIndexRoute: DashboardUsersIndexRoute, +} + +const DashboardUsersRouteWithChildren = DashboardUsersRoute._addFileChildren( + DashboardUsersRouteChildren, +) + +interface DashboardRouteChildren { + DashboardInvoicesRoute: typeof DashboardInvoicesRouteWithChildren + DashboardUsersRoute: typeof DashboardUsersRouteWithChildren + DashboardIndexRoute: typeof DashboardIndexRoute +} + +const DashboardRouteChildren: DashboardRouteChildren = { + DashboardInvoicesRoute: DashboardInvoicesRouteWithChildren, + DashboardUsersRoute: DashboardUsersRouteWithChildren, + DashboardIndexRoute: DashboardIndexRoute, +} + +const DashboardRouteWithChildren = DashboardRoute._addFileChildren( + DashboardRouteChildren, +) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutRouteWithChildren + '/dashboard': typeof DashboardRouteWithChildren + '/login': typeof LoginRoute + '/route-group': typeof thisFolderIsNotInTheUrlRouteGroupRoute + '/profile': typeof AuthProfileRoute + '/layout-a': typeof LayoutLayoutARoute + '/layout-b': typeof LayoutLayoutBRoute + '/dashboard/invoices': typeof DashboardInvoicesRouteWithChildren + '/dashboard/users': typeof DashboardUsersRouteWithChildren + '/dashboard/': typeof DashboardIndexRoute + '/expensive': typeof ExpensiveIndexLazyRoute + '/dashboard/invoices/$invoiceId': typeof DashboardInvoicesInvoiceIdRoute + '/dashboard/users/user': typeof DashboardUsersUserRoute + '/dashboard/invoices/': typeof DashboardInvoicesIndexRoute + '/dashboard/users/': typeof DashboardUsersIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutRouteWithChildren + '/login': typeof LoginRoute + '/route-group': typeof thisFolderIsNotInTheUrlRouteGroupRoute + '/profile': typeof AuthProfileRoute + '/layout-a': typeof LayoutLayoutARoute + '/layout-b': typeof LayoutLayoutBRoute + '/dashboard': typeof DashboardIndexRoute + '/expensive': typeof ExpensiveIndexLazyRoute + '/dashboard/invoices/$invoiceId': typeof DashboardInvoicesInvoiceIdRoute + '/dashboard/users/user': typeof DashboardUsersUserRoute + '/dashboard/invoices': typeof DashboardInvoicesIndexRoute + '/dashboard/users': typeof DashboardUsersIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/_auth': typeof AuthRouteWithChildren + '/_layout': typeof LayoutRouteWithChildren + '/dashboard': typeof DashboardRouteWithChildren + '/login': typeof LoginRoute + '/route-group': typeof thisFolderIsNotInTheUrlRouteGroupRoute + '/_auth/profile': typeof AuthProfileRoute + '/_layout/layout-a': typeof LayoutLayoutARoute + '/_layout/layout-b': typeof LayoutLayoutBRoute + '/dashboard/invoices': typeof DashboardInvoicesRouteWithChildren + '/dashboard/users': typeof DashboardUsersRouteWithChildren + '/dashboard/': typeof DashboardIndexRoute + '/expensive/': typeof ExpensiveIndexLazyRoute + '/dashboard/invoices/$invoiceId': typeof DashboardInvoicesInvoiceIdRoute + '/dashboard/users/user': typeof DashboardUsersUserRoute + '/dashboard/invoices/': typeof DashboardInvoicesIndexRoute + '/dashboard/users/': typeof DashboardUsersIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/dashboard' + | '/login' + | '/route-group' + | '/profile' + | '/layout-a' + | '/layout-b' + | '/dashboard/invoices' + | '/dashboard/users' + | '/dashboard/' + | '/expensive' + | '/dashboard/invoices/$invoiceId' + | '/dashboard/users/user' + | '/dashboard/invoices/' + | '/dashboard/users/' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/login' + | '/route-group' + | '/profile' + | '/layout-a' + | '/layout-b' + | '/dashboard' + | '/expensive' + | '/dashboard/invoices/$invoiceId' + | '/dashboard/users/user' + | '/dashboard/invoices' + | '/dashboard/users' + id: + | '/' + | '/_auth' + | '/_layout' + | '/dashboard' + | '/login' + | '/route-group' + | '/_auth/profile' + | '/_layout/layout-a' + | '/_layout/layout-b' + | '/dashboard/invoices' + | '/dashboard/users' + | '/dashboard/' + | '/expensive/' + | '/dashboard/invoices/$invoiceId' + | '/dashboard/users/user' + | '/dashboard/invoices/' + | '/dashboard/users/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AuthRoute: typeof AuthRouteWithChildren + LayoutRoute: typeof LayoutRouteWithChildren + DashboardRoute: typeof DashboardRouteWithChildren + LoginRoute: typeof LoginRoute + thisFolderIsNotInTheUrlRouteGroupRoute: typeof thisFolderIsNotInTheUrlRouteGroupRoute + ExpensiveIndexLazyRoute: typeof ExpensiveIndexLazyRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AuthRoute: AuthRouteWithChildren, + LayoutRoute: LayoutRouteWithChildren, + DashboardRoute: DashboardRouteWithChildren, + LoginRoute: LoginRoute, + thisFolderIsNotInTheUrlRouteGroupRoute: + thisFolderIsNotInTheUrlRouteGroupRoute, + ExpensiveIndexLazyRoute: ExpensiveIndexLazyRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/kitchen-sink-react-query-file-based/src/routeTree.gen.ts b/examples/react/kitchen-sink-react-query-file-based/src/routeTree.gen.ts index 2e8620e3f0..6501333207 100644 --- a/examples/react/kitchen-sink-react-query-file-based/src/routeTree.gen.ts +++ b/examples/react/kitchen-sink-react-query-file-based/src/routeTree.gen.ts @@ -19,6 +19,7 @@ import { Route as LayoutImport } from './routes/_layout' import { Route as AuthImport } from './routes/_auth' import { Route as IndexImport } from './routes/index' import { Route as DashboardIndexImport } from './routes/dashboard.index' +import { Route as FooBarImport } from './routes/foo/bar' import { Route as DashboardUsersImport } from './routes/dashboard.users' import { Route as DashboardInvoicesImport } from './routes/dashboard.invoices' import { Route as LayoutLayoutBImport } from './routes/_layout.layout-b' @@ -72,6 +73,11 @@ const DashboardIndexRoute = DashboardIndexImport.update({ getParentRoute: () => DashboardRoute, } as any) +const FooBarRoute = FooBarImport.update({ + path: '/foo/bar', + getParentRoute: () => rootRoute, +} as any) + const DashboardUsersRoute = DashboardUsersImport.update({ path: '/users', getParentRoute: () => DashboardRoute, @@ -193,6 +199,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof DashboardUsersImport parentRoute: typeof DashboardImport } + '/foo/bar': { + id: '/foo/bar' + path: '/foo/bar' + fullPath: '/foo/bar' + preLoaderRoute: typeof FooBarImport + parentRoute: typeof rootRoute + } '/dashboard/': { id: '/dashboard/' path: '/' @@ -240,27 +253,205 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - AuthRoute: AuthRoute.addChildren({ AuthProfileRoute }), - LayoutRoute: LayoutRoute.addChildren({ - LayoutLayoutARoute, - LayoutLayoutBRoute, - }), - DashboardRoute: DashboardRoute.addChildren({ - DashboardInvoicesRoute: DashboardInvoicesRoute.addChildren({ - DashboardInvoicesInvoiceIdRoute, - DashboardInvoicesIndexRoute, - }), - DashboardUsersRoute: DashboardUsersRoute.addChildren({ - DashboardUsersUserRoute, - DashboardUsersIndexRoute, - }), - DashboardIndexRoute, - }), - LoginRoute, - ExpensiveIndexLazyRoute, -}) +interface AuthRouteChildren { + AuthProfileRoute: typeof AuthProfileRoute +} + +const AuthRouteChildren: AuthRouteChildren = { + AuthProfileRoute: AuthProfileRoute, +} + +const AuthRouteWithChildren = AuthRoute._addFileChildren(AuthRouteChildren) + +interface LayoutRouteChildren { + LayoutLayoutARoute: typeof LayoutLayoutARoute + LayoutLayoutBRoute: typeof LayoutLayoutBRoute +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayoutARoute: LayoutLayoutARoute, + LayoutLayoutBRoute: LayoutLayoutBRoute, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface DashboardInvoicesRouteChildren { + DashboardInvoicesInvoiceIdRoute: typeof DashboardInvoicesInvoiceIdRoute + DashboardInvoicesIndexRoute: typeof DashboardInvoicesIndexRoute +} + +const DashboardInvoicesRouteChildren: DashboardInvoicesRouteChildren = { + DashboardInvoicesInvoiceIdRoute: DashboardInvoicesInvoiceIdRoute, + DashboardInvoicesIndexRoute: DashboardInvoicesIndexRoute, +} + +const DashboardInvoicesRouteWithChildren = + DashboardInvoicesRoute._addFileChildren(DashboardInvoicesRouteChildren) + +interface DashboardUsersRouteChildren { + DashboardUsersUserRoute: typeof DashboardUsersUserRoute + DashboardUsersIndexRoute: typeof DashboardUsersIndexRoute +} + +const DashboardUsersRouteChildren: DashboardUsersRouteChildren = { + DashboardUsersUserRoute: DashboardUsersUserRoute, + DashboardUsersIndexRoute: DashboardUsersIndexRoute, +} + +const DashboardUsersRouteWithChildren = DashboardUsersRoute._addFileChildren( + DashboardUsersRouteChildren, +) + +interface DashboardRouteChildren { + DashboardInvoicesRoute: typeof DashboardInvoicesRouteWithChildren + DashboardUsersRoute: typeof DashboardUsersRouteWithChildren + DashboardIndexRoute: typeof DashboardIndexRoute +} + +const DashboardRouteChildren: DashboardRouteChildren = { + DashboardInvoicesRoute: DashboardInvoicesRouteWithChildren, + DashboardUsersRoute: DashboardUsersRouteWithChildren, + DashboardIndexRoute: DashboardIndexRoute, +} + +const DashboardRouteWithChildren = DashboardRoute._addFileChildren( + DashboardRouteChildren, +) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutRouteWithChildren + '/dashboard': typeof DashboardRouteWithChildren + '/login': typeof LoginRoute + '/profile': typeof AuthProfileRoute + '/layout-a': typeof LayoutLayoutARoute + '/layout-b': typeof LayoutLayoutBRoute + '/dashboard/invoices': typeof DashboardInvoicesRouteWithChildren + '/dashboard/users': typeof DashboardUsersRouteWithChildren + '/foo/bar': typeof FooBarRoute + '/dashboard/': typeof DashboardIndexRoute + '/expensive': typeof ExpensiveIndexLazyRoute + '/dashboard/invoices/$invoiceId': typeof DashboardInvoicesInvoiceIdRoute + '/dashboard/users/user': typeof DashboardUsersUserRoute + '/dashboard/invoices/': typeof DashboardInvoicesIndexRoute + '/dashboard/users/': typeof DashboardUsersIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutRouteWithChildren + '/login': typeof LoginRoute + '/profile': typeof AuthProfileRoute + '/layout-a': typeof LayoutLayoutARoute + '/layout-b': typeof LayoutLayoutBRoute + '/foo/bar': typeof FooBarRoute + '/dashboard': typeof DashboardIndexRoute + '/expensive': typeof ExpensiveIndexLazyRoute + '/dashboard/invoices/$invoiceId': typeof DashboardInvoicesInvoiceIdRoute + '/dashboard/users/user': typeof DashboardUsersUserRoute + '/dashboard/invoices': typeof DashboardInvoicesIndexRoute + '/dashboard/users': typeof DashboardUsersIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/_auth': typeof AuthRouteWithChildren + '/_layout': typeof LayoutRouteWithChildren + '/dashboard': typeof DashboardRouteWithChildren + '/login': typeof LoginRoute + '/_auth/profile': typeof AuthProfileRoute + '/_layout/layout-a': typeof LayoutLayoutARoute + '/_layout/layout-b': typeof LayoutLayoutBRoute + '/dashboard/invoices': typeof DashboardInvoicesRouteWithChildren + '/dashboard/users': typeof DashboardUsersRouteWithChildren + '/foo/bar': typeof FooBarRoute + '/dashboard/': typeof DashboardIndexRoute + '/expensive/': typeof ExpensiveIndexLazyRoute + '/dashboard/invoices/$invoiceId': typeof DashboardInvoicesInvoiceIdRoute + '/dashboard/users/user': typeof DashboardUsersUserRoute + '/dashboard/invoices/': typeof DashboardInvoicesIndexRoute + '/dashboard/users/': typeof DashboardUsersIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/dashboard' + | '/login' + | '/profile' + | '/layout-a' + | '/layout-b' + | '/dashboard/invoices' + | '/dashboard/users' + | '/foo/bar' + | '/dashboard/' + | '/expensive' + | '/dashboard/invoices/$invoiceId' + | '/dashboard/users/user' + | '/dashboard/invoices/' + | '/dashboard/users/' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/login' + | '/profile' + | '/layout-a' + | '/layout-b' + | '/foo/bar' + | '/dashboard' + | '/expensive' + | '/dashboard/invoices/$invoiceId' + | '/dashboard/users/user' + | '/dashboard/invoices' + | '/dashboard/users' + id: + | '/' + | '/_auth' + | '/_layout' + | '/dashboard' + | '/login' + | '/_auth/profile' + | '/_layout/layout-a' + | '/_layout/layout-b' + | '/dashboard/invoices' + | '/dashboard/users' + | '/foo/bar' + | '/dashboard/' + | '/expensive/' + | '/dashboard/invoices/$invoiceId' + | '/dashboard/users/user' + | '/dashboard/invoices/' + | '/dashboard/users/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AuthRoute: typeof AuthRouteWithChildren + LayoutRoute: typeof LayoutRouteWithChildren + DashboardRoute: typeof DashboardRouteWithChildren + LoginRoute: typeof LoginRoute + FooBarRoute: typeof FooBarRoute + ExpensiveIndexLazyRoute: typeof ExpensiveIndexLazyRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AuthRoute: AuthRouteWithChildren, + LayoutRoute: LayoutRouteWithChildren, + DashboardRoute: DashboardRouteWithChildren, + LoginRoute: LoginRoute, + FooBarRoute: FooBarRoute, + ExpensiveIndexLazyRoute: ExpensiveIndexLazyRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ @@ -275,6 +466,7 @@ export const routeTree = rootRoute.addChildren({ "/_layout", "/dashboard", "/login", + "/foo/bar", "/expensive/" ] }, @@ -333,6 +525,9 @@ export const routeTree = rootRoute.addChildren({ "/dashboard/users/" ] }, + "/foo/bar": { + "filePath": "foo/bar.tsx" + }, "/dashboard/": { "filePath": "dashboard.index.tsx", "parent": "/dashboard" diff --git a/examples/react/quickstart-file-based/src/routeTree.gen.ts b/examples/react/quickstart-file-based/src/routeTree.gen.ts index 7ae8f3c410..2f4ec21e49 100644 --- a/examples/react/quickstart-file-based/src/routeTree.gen.ts +++ b/examples/react/quickstart-file-based/src/routeTree.gen.ts @@ -49,7 +49,43 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ IndexRoute, AboutRoute }) +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/about' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/about' + id: '/' | '/about' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AboutRoute: typeof AboutRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AboutRoute: AboutRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/quickstart-rspack-file-based/src/routeTree.gen.ts b/examples/react/quickstart-rspack-file-based/src/routeTree.gen.ts index 7ae8f3c410..2f4ec21e49 100644 --- a/examples/react/quickstart-rspack-file-based/src/routeTree.gen.ts +++ b/examples/react/quickstart-rspack-file-based/src/routeTree.gen.ts @@ -49,7 +49,43 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ IndexRoute, AboutRoute }) +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/about' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/about' + id: '/' | '/about' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AboutRoute: typeof AboutRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AboutRoute: AboutRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/quickstart-webpack-file-based/src/routeTree.gen.ts b/examples/react/quickstart-webpack-file-based/src/routeTree.gen.ts index 7ae8f3c410..2f4ec21e49 100644 --- a/examples/react/quickstart-webpack-file-based/src/routeTree.gen.ts +++ b/examples/react/quickstart-webpack-file-based/src/routeTree.gen.ts @@ -49,7 +49,43 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ IndexRoute, AboutRoute }) +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/about' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/about' + id: '/' | '/about' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AboutRoute: typeof AboutRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AboutRoute: AboutRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/search-validator-adapters/src/routeTree.gen.ts b/examples/react/search-validator-adapters/src/routeTree.gen.ts index 1e35a2af10..a3ced0c805 100644 --- a/examples/react/search-validator-adapters/src/routeTree.gen.ts +++ b/examples/react/search-validator-adapters/src/routeTree.gen.ts @@ -75,12 +75,53 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - UsersArktypeIndexRoute, - UsersValibotIndexRoute, - UsersZodIndexRoute, -}) +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/users/arktype': typeof UsersArktypeIndexRoute + '/users/valibot': typeof UsersValibotIndexRoute + '/users/zod': typeof UsersZodIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/users/arktype': typeof UsersArktypeIndexRoute + '/users/valibot': typeof UsersValibotIndexRoute + '/users/zod': typeof UsersZodIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/users/arktype/': typeof UsersArktypeIndexRoute + '/users/valibot/': typeof UsersValibotIndexRoute + '/users/zod/': typeof UsersZodIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/users/arktype' | '/users/valibot' | '/users/zod' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/users/arktype' | '/users/valibot' | '/users/zod' + id: '/' | '/users/arktype/' | '/users/valibot/' | '/users/zod/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + UsersArktypeIndexRoute: typeof UsersArktypeIndexRoute + UsersValibotIndexRoute: typeof UsersValibotIndexRoute + UsersZodIndexRoute: typeof UsersZodIndexRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + UsersArktypeIndexRoute: UsersArktypeIndexRoute, + UsersValibotIndexRoute: UsersValibotIndexRoute, + UsersZodIndexRoute: UsersZodIndexRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/start-basic-auth/app/routeTree.gen.ts b/examples/react/start-basic-auth/app/routeTree.gen.ts index d63d8d3e4d..1010a1feb3 100644 --- a/examples/react/start-basic-auth/app/routeTree.gen.ts +++ b/examples/react/start-basic-auth/app/routeTree.gen.ts @@ -127,18 +127,107 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - AuthedRoute: AuthedRoute.addChildren({ - AuthedPostsRoute: AuthedPostsRoute.addChildren({ - AuthedPostsPostIdRoute, - AuthedPostsIndexRoute, - }), - }), - LoginRoute, - LogoutRoute, - SignupRoute, -}) +interface AuthedPostsRouteChildren { + AuthedPostsPostIdRoute: typeof AuthedPostsPostIdRoute + AuthedPostsIndexRoute: typeof AuthedPostsIndexRoute +} + +const AuthedPostsRouteChildren: AuthedPostsRouteChildren = { + AuthedPostsPostIdRoute: AuthedPostsPostIdRoute, + AuthedPostsIndexRoute: AuthedPostsIndexRoute, +} + +const AuthedPostsRouteWithChildren = AuthedPostsRoute._addFileChildren( + AuthedPostsRouteChildren, +) + +interface AuthedRouteChildren { + AuthedPostsRoute: typeof AuthedPostsRouteWithChildren +} + +const AuthedRouteChildren: AuthedRouteChildren = { + AuthedPostsRoute: AuthedPostsRouteWithChildren, +} + +const AuthedRouteWithChildren = + AuthedRoute._addFileChildren(AuthedRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof AuthedRouteWithChildren + '/login': typeof LoginRoute + '/logout': typeof LogoutRoute + '/signup': typeof SignupRoute + '/posts': typeof AuthedPostsRouteWithChildren + '/posts/$postId': typeof AuthedPostsPostIdRoute + '/posts/': typeof AuthedPostsIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof AuthedRouteWithChildren + '/login': typeof LoginRoute + '/logout': typeof LogoutRoute + '/signup': typeof SignupRoute + '/posts/$postId': typeof AuthedPostsPostIdRoute + '/posts': typeof AuthedPostsIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/_authed': typeof AuthedRouteWithChildren + '/login': typeof LoginRoute + '/logout': typeof LogoutRoute + '/signup': typeof SignupRoute + '/_authed/posts': typeof AuthedPostsRouteWithChildren + '/_authed/posts/$postId': typeof AuthedPostsPostIdRoute + '/_authed/posts/': typeof AuthedPostsIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/login' + | '/logout' + | '/signup' + | '/posts' + | '/posts/$postId' + | '/posts/' + fileRoutesByTo: FileRoutesByTo + to: '/' | '' | '/login' | '/logout' | '/signup' | '/posts/$postId' | '/posts' + id: + | '/' + | '/_authed' + | '/login' + | '/logout' + | '/signup' + | '/_authed/posts' + | '/_authed/posts/$postId' + | '/_authed/posts/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AuthedRoute: typeof AuthedRouteWithChildren + LoginRoute: typeof LoginRoute + LogoutRoute: typeof LogoutRoute + SignupRoute: typeof SignupRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AuthedRoute: AuthedRouteWithChildren, + LoginRoute: LoginRoute, + LogoutRoute: LogoutRoute, + SignupRoute: SignupRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/start-basic-counter/app/routeTree.gen.ts b/examples/react/start-basic-counter/app/routeTree.gen.ts index 5ecc21f200..186d8a3b43 100644 --- a/examples/react/start-basic-counter/app/routeTree.gen.ts +++ b/examples/react/start-basic-counter/app/routeTree.gen.ts @@ -36,7 +36,38 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ IndexRoute }) +interface FileRoutesByFullPath { + '/': typeof IndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' + fileRoutesByTo: FileRoutesByTo + to: '/' + id: '/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/start-basic-react-query/app/routeTree.gen.ts b/examples/react/start-basic-react-query/app/routeTree.gen.ts index 0dc634cff7..a26e213a00 100644 --- a/examples/react/start-basic-react-query/app/routeTree.gen.ts +++ b/examples/react/start-basic-react-query/app/routeTree.gen.ts @@ -205,20 +205,172 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - LayoutRoute: LayoutRoute.addChildren({ - LayoutLayout2Route: LayoutLayout2Route.addChildren({ - LayoutLayout2LayoutARoute, - LayoutLayout2LayoutBRoute, - }), - }), - DeferredRoute, - PostsRoute: PostsRoute.addChildren({ PostsPostIdRoute, PostsIndexRoute }), - RedirectRoute, - UsersRoute: UsersRoute.addChildren({ UsersUserIdRoute, UsersIndexRoute }), - PostsPostIdDeepRoute, -}) +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +interface UsersRouteChildren { + UsersUserIdRoute: typeof UsersUserIdRoute + UsersIndexRoute: typeof UsersIndexRoute +} + +const UsersRouteChildren: UsersRouteChildren = { + UsersUserIdRoute: UsersUserIdRoute, + UsersIndexRoute: UsersIndexRoute, +} + +const UsersRouteWithChildren = UsersRoute._addFileChildren(UsersRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/deferred': typeof DeferredRoute + '/posts': typeof PostsRouteWithChildren + '/redirect': typeof RedirectRoute + '/users': typeof UsersRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts/': typeof PostsIndexRoute + '/users/': typeof UsersIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/deferred': typeof DeferredRoute + '/redirect': typeof RedirectRoute + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts': typeof PostsIndexRoute + '/users': typeof UsersIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/deferred': typeof DeferredRoute + '/posts': typeof PostsRouteWithChildren + '/redirect': typeof RedirectRoute + '/users': typeof UsersRouteWithChildren + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts/': typeof PostsIndexRoute + '/users/': typeof UsersIndexRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/deferred' + | '/posts' + | '/redirect' + | '/users' + | '/posts/$postId' + | '/users/$userId' + | '/posts/' + | '/users/' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/deferred' + | '/redirect' + | '/posts/$postId' + | '/users/$userId' + | '/posts' + | '/users' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + id: + | '/' + | '/_layout' + | '/deferred' + | '/posts' + | '/redirect' + | '/users' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/users/$userId' + | '/posts/' + | '/users/' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + | '/posts/$postId/deep' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + DeferredRoute: typeof DeferredRoute + PostsRoute: typeof PostsRouteWithChildren + RedirectRoute: typeof RedirectRoute + UsersRoute: typeof UsersRouteWithChildren + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + DeferredRoute: DeferredRoute, + PostsRoute: PostsRouteWithChildren, + RedirectRoute: RedirectRoute, + UsersRoute: UsersRouteWithChildren, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/start-basic-rsc/app/routeTree.gen.ts b/examples/react/start-basic-rsc/app/routeTree.gen.ts index 1ca7aa861a..2b81099216 100644 --- a/examples/react/start-basic-rsc/app/routeTree.gen.ts +++ b/examples/react/start-basic-rsc/app/routeTree.gen.ts @@ -140,17 +140,126 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - LayoutRoute: LayoutRoute.addChildren({ - LayoutLayout2Route: LayoutLayout2Route.addChildren({ - LayoutLayout2LayoutARoute, - LayoutLayout2LayoutBRoute, - }), - }), - PostsRoute: PostsRoute.addChildren({ PostsPostIdRoute, PostsIndexRoute }), - PostsPostIdDeepRoute, -}) +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/posts' + | '/posts/$postId' + | '/posts/' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/posts/$postId' + | '/posts' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + id: + | '/' + | '/_layout' + | '/posts' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/posts/' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + | '/posts/$postId/deep' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + PostsRoute: typeof PostsRouteWithChildren + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + PostsRoute: PostsRouteWithChildren, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/start-basic/app/routeTree.gen.ts b/examples/react/start-basic/app/routeTree.gen.ts index 0dc634cff7..a26e213a00 100644 --- a/examples/react/start-basic/app/routeTree.gen.ts +++ b/examples/react/start-basic/app/routeTree.gen.ts @@ -205,20 +205,172 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - LayoutRoute: LayoutRoute.addChildren({ - LayoutLayout2Route: LayoutLayout2Route.addChildren({ - LayoutLayout2LayoutARoute, - LayoutLayout2LayoutBRoute, - }), - }), - DeferredRoute, - PostsRoute: PostsRoute.addChildren({ PostsPostIdRoute, PostsIndexRoute }), - RedirectRoute, - UsersRoute: UsersRoute.addChildren({ UsersUserIdRoute, UsersIndexRoute }), - PostsPostIdDeepRoute, -}) +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +interface UsersRouteChildren { + UsersUserIdRoute: typeof UsersUserIdRoute + UsersIndexRoute: typeof UsersIndexRoute +} + +const UsersRouteChildren: UsersRouteChildren = { + UsersUserIdRoute: UsersUserIdRoute, + UsersIndexRoute: UsersIndexRoute, +} + +const UsersRouteWithChildren = UsersRoute._addFileChildren(UsersRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/deferred': typeof DeferredRoute + '/posts': typeof PostsRouteWithChildren + '/redirect': typeof RedirectRoute + '/users': typeof UsersRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts/': typeof PostsIndexRoute + '/users/': typeof UsersIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/deferred': typeof DeferredRoute + '/redirect': typeof RedirectRoute + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts': typeof PostsIndexRoute + '/users': typeof UsersIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/deferred': typeof DeferredRoute + '/posts': typeof PostsRouteWithChildren + '/redirect': typeof RedirectRoute + '/users': typeof UsersRouteWithChildren + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts/': typeof PostsIndexRoute + '/users/': typeof UsersIndexRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/deferred' + | '/posts' + | '/redirect' + | '/users' + | '/posts/$postId' + | '/users/$userId' + | '/posts/' + | '/users/' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/deferred' + | '/redirect' + | '/posts/$postId' + | '/users/$userId' + | '/posts' + | '/users' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + id: + | '/' + | '/_layout' + | '/deferred' + | '/posts' + | '/redirect' + | '/users' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/users/$userId' + | '/posts/' + | '/users/' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + | '/posts/$postId/deep' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + DeferredRoute: typeof DeferredRoute + PostsRoute: typeof PostsRouteWithChildren + RedirectRoute: typeof RedirectRoute + UsersRoute: typeof UsersRouteWithChildren + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + DeferredRoute: DeferredRoute, + PostsRoute: PostsRouteWithChildren, + RedirectRoute: RedirectRoute, + UsersRoute: UsersRouteWithChildren, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/start-clerk-basic/app/routeTree.gen.ts b/examples/react/start-clerk-basic/app/routeTree.gen.ts index 7c12dcd2ca..41f840f84a 100644 --- a/examples/react/start-clerk-basic/app/routeTree.gen.ts +++ b/examples/react/start-clerk-basic/app/routeTree.gen.ts @@ -101,16 +101,87 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - AuthedRoute: AuthedRoute.addChildren({ - AuthedPostsRoute: AuthedPostsRoute.addChildren({ - AuthedPostsPostIdRoute, - AuthedPostsIndexRoute, - }), - AuthedProfileSplatRoute, - }), -}) +interface AuthedPostsRouteChildren { + AuthedPostsPostIdRoute: typeof AuthedPostsPostIdRoute + AuthedPostsIndexRoute: typeof AuthedPostsIndexRoute +} + +const AuthedPostsRouteChildren: AuthedPostsRouteChildren = { + AuthedPostsPostIdRoute: AuthedPostsPostIdRoute, + AuthedPostsIndexRoute: AuthedPostsIndexRoute, +} + +const AuthedPostsRouteWithChildren = AuthedPostsRoute._addFileChildren( + AuthedPostsRouteChildren, +) + +interface AuthedRouteChildren { + AuthedPostsRoute: typeof AuthedPostsRouteWithChildren + AuthedProfileSplatRoute: typeof AuthedProfileSplatRoute +} + +const AuthedRouteChildren: AuthedRouteChildren = { + AuthedPostsRoute: AuthedPostsRouteWithChildren, + AuthedProfileSplatRoute: AuthedProfileSplatRoute, +} + +const AuthedRouteWithChildren = + AuthedRoute._addFileChildren(AuthedRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof AuthedRouteWithChildren + '/posts': typeof AuthedPostsRouteWithChildren + '/posts/$postId': typeof AuthedPostsPostIdRoute + '/profile/$': typeof AuthedProfileSplatRoute + '/posts/': typeof AuthedPostsIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof AuthedRouteWithChildren + '/posts/$postId': typeof AuthedPostsPostIdRoute + '/profile/$': typeof AuthedProfileSplatRoute + '/posts': typeof AuthedPostsIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/_authed': typeof AuthedRouteWithChildren + '/_authed/posts': typeof AuthedPostsRouteWithChildren + '/_authed/posts/$postId': typeof AuthedPostsPostIdRoute + '/_authed/profile/$': typeof AuthedProfileSplatRoute + '/_authed/posts/': typeof AuthedPostsIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '' | '/posts' | '/posts/$postId' | '/profile/$' | '/posts/' + fileRoutesByTo: FileRoutesByTo + to: '/' | '' | '/posts/$postId' | '/profile/$' | '/posts' + id: + | '/' + | '/_authed' + | '/_authed/posts' + | '/_authed/posts/$postId' + | '/_authed/profile/$' + | '/_authed/posts/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AuthedRoute: typeof AuthedRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AuthedRoute: AuthedRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/start-convex-trellaux/app/routeTree.gen.ts b/examples/react/start-convex-trellaux/app/routeTree.gen.ts index 53cf865266..d41046c22b 100644 --- a/examples/react/start-convex-trellaux/app/routeTree.gen.ts +++ b/examples/react/start-convex-trellaux/app/routeTree.gen.ts @@ -49,10 +49,43 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - BoardsBoardIdRoute, -}) +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/boards/$boardId': typeof BoardsBoardIdRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/boards/$boardId': typeof BoardsBoardIdRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/boards/$boardId': typeof BoardsBoardIdRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/boards/$boardId' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/boards/$boardId' + id: '/' | '/boards/$boardId' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + BoardsBoardIdRoute: typeof BoardsBoardIdRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + BoardsBoardIdRoute: BoardsBoardIdRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/start-trellaux/app/routeTree.gen.ts b/examples/react/start-trellaux/app/routeTree.gen.ts index 53cf865266..d41046c22b 100644 --- a/examples/react/start-trellaux/app/routeTree.gen.ts +++ b/examples/react/start-trellaux/app/routeTree.gen.ts @@ -49,10 +49,43 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - BoardsBoardIdRoute, -}) +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/boards/$boardId': typeof BoardsBoardIdRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/boards/$boardId': typeof BoardsBoardIdRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/boards/$boardId': typeof BoardsBoardIdRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/boards/$boardId' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/boards/$boardId' + id: '/' | '/boards/$boardId' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + BoardsBoardIdRoute: typeof BoardsBoardIdRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + BoardsBoardIdRoute: BoardsBoardIdRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/with-trpc-react-query/app/routeTree.gen.ts b/examples/react/with-trpc-react-query/app/routeTree.gen.ts index e146506980..dde4790fde 100644 --- a/examples/react/with-trpc-react-query/app/routeTree.gen.ts +++ b/examples/react/with-trpc-react-query/app/routeTree.gen.ts @@ -101,16 +101,93 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - DashboardRoute: DashboardRoute.addChildren({ - DashboardPostsRoute: DashboardPostsRoute.addChildren({ - DashboardPostsPostIdRoute, - DashboardPostsIndexRoute, - }), - DashboardIndexRoute, - }), -}) +interface DashboardPostsRouteChildren { + DashboardPostsPostIdRoute: typeof DashboardPostsPostIdRoute + DashboardPostsIndexRoute: typeof DashboardPostsIndexRoute +} + +const DashboardPostsRouteChildren: DashboardPostsRouteChildren = { + DashboardPostsPostIdRoute: DashboardPostsPostIdRoute, + DashboardPostsIndexRoute: DashboardPostsIndexRoute, +} + +const DashboardPostsRouteWithChildren = DashboardPostsRoute._addFileChildren( + DashboardPostsRouteChildren, +) + +interface DashboardRouteChildren { + DashboardPostsRoute: typeof DashboardPostsRouteWithChildren + DashboardIndexRoute: typeof DashboardIndexRoute +} + +const DashboardRouteChildren: DashboardRouteChildren = { + DashboardPostsRoute: DashboardPostsRouteWithChildren, + DashboardIndexRoute: DashboardIndexRoute, +} + +const DashboardRouteWithChildren = DashboardRoute._addFileChildren( + DashboardRouteChildren, +) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/dashboard': typeof DashboardRouteWithChildren + '/dashboard/posts': typeof DashboardPostsRouteWithChildren + '/dashboard/': typeof DashboardIndexRoute + '/dashboard/posts/$postId': typeof DashboardPostsPostIdRoute + '/dashboard/posts/': typeof DashboardPostsIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/dashboard': typeof DashboardIndexRoute + '/dashboard/posts/$postId': typeof DashboardPostsPostIdRoute + '/dashboard/posts': typeof DashboardPostsIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/dashboard': typeof DashboardRouteWithChildren + '/dashboard/posts': typeof DashboardPostsRouteWithChildren + '/dashboard/': typeof DashboardIndexRoute + '/dashboard/posts/$postId': typeof DashboardPostsPostIdRoute + '/dashboard/posts/': typeof DashboardPostsIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/dashboard' + | '/dashboard/posts' + | '/dashboard/' + | '/dashboard/posts/$postId' + | '/dashboard/posts/' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/dashboard' | '/dashboard/posts/$postId' | '/dashboard/posts' + id: + | '/' + | '/dashboard' + | '/dashboard/posts' + | '/dashboard/' + | '/dashboard/posts/$postId' + | '/dashboard/posts/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + DashboardRoute: typeof DashboardRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + DashboardRoute: DashboardRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ diff --git a/examples/react/with-trpc/app/routeTree.gen.ts b/examples/react/with-trpc/app/routeTree.gen.ts index e146506980..dde4790fde 100644 --- a/examples/react/with-trpc/app/routeTree.gen.ts +++ b/examples/react/with-trpc/app/routeTree.gen.ts @@ -101,16 +101,93 @@ declare module '@tanstack/react-router' { // Create and export the route tree -export const routeTree = rootRoute.addChildren({ - IndexRoute, - DashboardRoute: DashboardRoute.addChildren({ - DashboardPostsRoute: DashboardPostsRoute.addChildren({ - DashboardPostsPostIdRoute, - DashboardPostsIndexRoute, - }), - DashboardIndexRoute, - }), -}) +interface DashboardPostsRouteChildren { + DashboardPostsPostIdRoute: typeof DashboardPostsPostIdRoute + DashboardPostsIndexRoute: typeof DashboardPostsIndexRoute +} + +const DashboardPostsRouteChildren: DashboardPostsRouteChildren = { + DashboardPostsPostIdRoute: DashboardPostsPostIdRoute, + DashboardPostsIndexRoute: DashboardPostsIndexRoute, +} + +const DashboardPostsRouteWithChildren = DashboardPostsRoute._addFileChildren( + DashboardPostsRouteChildren, +) + +interface DashboardRouteChildren { + DashboardPostsRoute: typeof DashboardPostsRouteWithChildren + DashboardIndexRoute: typeof DashboardIndexRoute +} + +const DashboardRouteChildren: DashboardRouteChildren = { + DashboardPostsRoute: DashboardPostsRouteWithChildren, + DashboardIndexRoute: DashboardIndexRoute, +} + +const DashboardRouteWithChildren = DashboardRoute._addFileChildren( + DashboardRouteChildren, +) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/dashboard': typeof DashboardRouteWithChildren + '/dashboard/posts': typeof DashboardPostsRouteWithChildren + '/dashboard/': typeof DashboardIndexRoute + '/dashboard/posts/$postId': typeof DashboardPostsPostIdRoute + '/dashboard/posts/': typeof DashboardPostsIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '/dashboard': typeof DashboardIndexRoute + '/dashboard/posts/$postId': typeof DashboardPostsPostIdRoute + '/dashboard/posts': typeof DashboardPostsIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/dashboard': typeof DashboardRouteWithChildren + '/dashboard/posts': typeof DashboardPostsRouteWithChildren + '/dashboard/': typeof DashboardIndexRoute + '/dashboard/posts/$postId': typeof DashboardPostsPostIdRoute + '/dashboard/posts/': typeof DashboardPostsIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/dashboard' + | '/dashboard/posts' + | '/dashboard/' + | '/dashboard/posts/$postId' + | '/dashboard/posts/' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/dashboard' | '/dashboard/posts/$postId' | '/dashboard/posts' + id: + | '/' + | '/dashboard' + | '/dashboard/posts' + | '/dashboard/' + | '/dashboard/posts/$postId' + | '/dashboard/posts/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + DashboardRoute: typeof DashboardRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + DashboardRoute: DashboardRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() /* prettier-ignore-end */ From ef95a0564fe90b391fce8f9d877bb611857222cf Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Fri, 6 Sep 2024 19:24:02 +0200 Subject: [PATCH 060/154] fix: make router-generator a peer dep of react-router (#2278) type tests of generated code must be implemented in a separate package to break up this circular dependency --- .gitignore | 3 + packages/react-router/package.json | 8 +- packages/router-generator/package.json | 3 - .../append-and-prepend/routeTree.gen.ts | 86 -- .../generator/custom-tokens/routeTree.gen.ts | 291 ------- .../file-modification/routeTree.gen.ts | 165 ---- .../tests/generator/flat/routeTree.gen.ts | 316 ------- .../generator/nested-layouts/routeTree.gen.ts | 816 ------------------ .../tests/generator/nested/routeTree.gen.ts | 316 ------- .../generator/no-manifest/routeTree.gen.ts | 72 -- .../generator/route-groups/routeTree.gen.ts | 88 -- .../generator/single-level/routeTree.gen.ts | 110 --- .../virtual-inside-nested/routeTree.gen.ts | 166 ---- .../tests/generator/virtual/routeTree.gen.ts | 354 -------- packages/router-generator/tsconfig.json | 7 +- pnpm-lock.yaml | 7 +- 16 files changed, 15 insertions(+), 2793 deletions(-) delete mode 100644 packages/router-generator/tests/generator/append-and-prepend/routeTree.gen.ts delete mode 100644 packages/router-generator/tests/generator/custom-tokens/routeTree.gen.ts delete mode 100644 packages/router-generator/tests/generator/file-modification/routeTree.gen.ts delete mode 100644 packages/router-generator/tests/generator/flat/routeTree.gen.ts delete mode 100644 packages/router-generator/tests/generator/nested-layouts/routeTree.gen.ts delete mode 100644 packages/router-generator/tests/generator/nested/routeTree.gen.ts delete mode 100644 packages/router-generator/tests/generator/no-manifest/routeTree.gen.ts delete mode 100644 packages/router-generator/tests/generator/route-groups/routeTree.gen.ts delete mode 100644 packages/router-generator/tests/generator/single-level/routeTree.gen.ts delete mode 100644 packages/router-generator/tests/generator/virtual-inside-nested/routeTree.gen.ts delete mode 100644 packages/router-generator/tests/generator/virtual/routeTree.gen.ts diff --git a/.gitignore b/.gitignore index aa0f287284..ce8d7b7cd9 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,9 @@ coverage *.tgz .wrangler +# tests +packages/router-generator/tests/**/*.gen.ts + # misc .DS_Store .env diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 6dae407753..443bc40dfd 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -80,6 +80,12 @@ }, "peerDependencies": { "react": ">=18", - "react-dom": ">=18" + "react-dom": ">=18", + "@tanstack/router-generator": "workspace:*" + }, + "peerDependenciesMeta": { + "@tanstack/react-router": { + "optional": true + } } } diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 98ee3bda68..bdf6a9aaca 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -67,8 +67,5 @@ "tsx": "^4.19.0", "prettier": "^3.3.3", "zod": "^3.23.8" - }, - "devDependencies": { - "@tanstack/react-router": "^1.53.1" } } diff --git a/packages/router-generator/tests/generator/append-and-prepend/routeTree.gen.ts b/packages/router-generator/tests/generator/append-and-prepend/routeTree.gen.ts deleted file mode 100644 index 82604e5a9e..0000000000 --- a/packages/router-generator/tests/generator/append-and-prepend/routeTree.gen.ts +++ /dev/null @@ -1,86 +0,0 @@ -// prepend1 - -// prepend2 - -// This file is auto-generated by TanStack Router - -// Import Routes - -import { Route as rootRoute } from './routes/__root' -import { Route as IndexImport } from './routes/index' - -// Create/Update Routes - -const IndexRoute = IndexImport.update({ - path: '/', - getParentRoute: () => rootRoute, -} as any) - -// Populate the FileRoutesByPath interface - -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/': { - id: '/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof IndexImport - parentRoute: typeof rootRoute - } - } -} - -// Create and export the route tree - -interface FileRoutesByFullPath { - '/': typeof IndexRoute -} - -interface FileRoutesByTo { - '/': typeof IndexRoute -} - -interface FileRoutesById { - '/': typeof IndexRoute -} - -interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: '/' - fileRoutesByTo: FileRoutesByTo - to: '/' - id: '/' - fileRoutesById: FileRoutesById -} - -interface RootRouteChildren { - IndexRoute: typeof IndexRoute -} - -const rootRouteChildren: RootRouteChildren = { - IndexRoute: IndexRoute, -} - -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() - -// append1 - -// append2 - -/* ROUTE_MANIFEST_START -{ - "routes": { - "__root__": { - "filePath": "__root.tsx", - "children": [ - "/" - ] - }, - "/": { - "filePath": "index.tsx" - } - } -} -ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/custom-tokens/routeTree.gen.ts b/packages/router-generator/tests/generator/custom-tokens/routeTree.gen.ts deleted file mode 100644 index 5ce44150e4..0000000000 --- a/packages/router-generator/tests/generator/custom-tokens/routeTree.gen.ts +++ /dev/null @@ -1,291 +0,0 @@ -/* prettier-ignore-start */ - -/* eslint-disable */ - -// @ts-nocheck - -// noinspection JSUnusedGlobalSymbols - -// This file is auto-generated by TanStack Router - -// Import Routes - -import { Route as rootRoute } from './routes/__root' -import { Route as PostsR0ut3Import } from './routes/posts/_r0ut3_' -import { Route as BlogR0ut3Import } from './routes/blog/_r0ut3_' -import { Route as R1nd3xImport } from './routes/_1nd3x' -import { Route as Posts1nd3xImport } from './routes/posts/_1nd3x' -import { Route as Blog1nd3xImport } from './routes/blog/_1nd3x' -import { Route as BlogSlugImport } from './routes/blog/$slug' -import { Route as PostsPostId1nd3xImport } from './routes/posts/$postId/_1nd3x' -import { Route as PostsPostIdDeepImport } from './routes/posts/$postId/deep' - -// Create/Update Routes - -const PostsR0ut3Route = PostsR0ut3Import.update({ - path: '/posts', - getParentRoute: () => rootRoute, -} as any) - -const BlogR0ut3Route = BlogR0ut3Import.update({ - path: '/blog', - getParentRoute: () => rootRoute, -} as any) - -const R1nd3xRoute = R1nd3xImport.update({ - path: '/', - getParentRoute: () => rootRoute, -} as any) - -const Posts1nd3xRoute = Posts1nd3xImport.update({ - path: '/', - getParentRoute: () => PostsR0ut3Route, -} as any) - -const Blog1nd3xRoute = Blog1nd3xImport.update({ - path: '/', - getParentRoute: () => BlogR0ut3Route, -} as any) - -const BlogSlugRoute = BlogSlugImport.update({ - path: '/$slug', - getParentRoute: () => BlogR0ut3Route, -} as any) - -const PostsPostId1nd3xRoute = PostsPostId1nd3xImport.update({ - path: '/$postId/', - getParentRoute: () => PostsR0ut3Route, -} as any) - -const PostsPostIdDeepRoute = PostsPostIdDeepImport.update({ - path: '/$postId/deep', - getParentRoute: () => PostsR0ut3Route, -} as any) - -// Populate the FileRoutesByPath interface - -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/': { - id: '/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof R1nd3xImport - parentRoute: typeof rootRoute - } - '/blog': { - id: '/blog' - path: '/blog' - fullPath: '/blog' - preLoaderRoute: typeof BlogR0ut3Import - parentRoute: typeof rootRoute - } - '/posts': { - id: '/posts' - path: '/posts' - fullPath: '/posts' - preLoaderRoute: typeof PostsR0ut3Import - parentRoute: typeof rootRoute - } - '/blog/$slug': { - id: '/blog/$slug' - path: '/$slug' - fullPath: '/blog/$slug' - preLoaderRoute: typeof BlogSlugImport - parentRoute: typeof BlogR0ut3Import - } - '/blog/': { - id: '/blog/' - path: '/' - fullPath: '/blog/' - preLoaderRoute: typeof Blog1nd3xImport - parentRoute: typeof BlogR0ut3Import - } - '/posts/': { - id: '/posts/' - path: '/' - fullPath: '/posts/' - preLoaderRoute: typeof Posts1nd3xImport - parentRoute: typeof PostsR0ut3Import - } - '/posts/$postId/deep': { - id: '/posts/$postId/deep' - path: '/$postId/deep' - fullPath: '/posts/$postId/deep' - preLoaderRoute: typeof PostsPostIdDeepImport - parentRoute: typeof PostsR0ut3Import - } - '/posts/$postId/': { - id: '/posts/$postId/' - path: '/$postId' - fullPath: '/posts/$postId' - preLoaderRoute: typeof PostsPostId1nd3xImport - parentRoute: typeof PostsR0ut3Import - } - } -} - -// Create and export the route tree - -interface BlogR0ut3RouteChildren { - BlogSlugRoute: typeof BlogSlugRoute - Blog1nd3xRoute: typeof Blog1nd3xRoute -} - -const BlogR0ut3RouteChildren: BlogR0ut3RouteChildren = { - BlogSlugRoute: BlogSlugRoute, - Blog1nd3xRoute: Blog1nd3xRoute, -} - -const BlogR0ut3RouteWithChildren = BlogR0ut3Route._addFileChildren( - BlogR0ut3RouteChildren, -) - -interface PostsR0ut3RouteChildren { - Posts1nd3xRoute: typeof Posts1nd3xRoute - PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute - PostsPostId1nd3xRoute: typeof PostsPostId1nd3xRoute -} - -const PostsR0ut3RouteChildren: PostsR0ut3RouteChildren = { - Posts1nd3xRoute: Posts1nd3xRoute, - PostsPostIdDeepRoute: PostsPostIdDeepRoute, - PostsPostId1nd3xRoute: PostsPostId1nd3xRoute, -} - -const PostsR0ut3RouteWithChildren = PostsR0ut3Route._addFileChildren( - PostsR0ut3RouteChildren, -) - -interface FileRoutesByFullPath { - '/': typeof R1nd3xRoute - '/blog': typeof BlogR0ut3RouteWithChildren - '/posts': typeof PostsR0ut3RouteWithChildren - '/blog/$slug': typeof BlogSlugRoute - '/blog/': typeof Blog1nd3xRoute - '/posts/': typeof Posts1nd3xRoute - '/posts/$postId/deep': typeof PostsPostIdDeepRoute - '/posts/$postId': typeof PostsPostId1nd3xRoute -} - -interface FileRoutesByTo { - '/': typeof R1nd3xRoute - '/blog/$slug': typeof BlogSlugRoute - '/blog': typeof Blog1nd3xRoute - '/posts': typeof Posts1nd3xRoute - '/posts/$postId/deep': typeof PostsPostIdDeepRoute - '/posts/$postId': typeof PostsPostId1nd3xRoute -} - -interface FileRoutesById { - '/': typeof R1nd3xRoute - '/blog': typeof BlogR0ut3RouteWithChildren - '/posts': typeof PostsR0ut3RouteWithChildren - '/blog/$slug': typeof BlogSlugRoute - '/blog/': typeof Blog1nd3xRoute - '/posts/': typeof Posts1nd3xRoute - '/posts/$postId/deep': typeof PostsPostIdDeepRoute - '/posts/$postId/': typeof PostsPostId1nd3xRoute -} - -interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: - | '/' - | '/blog' - | '/posts' - | '/blog/$slug' - | '/blog/' - | '/posts/' - | '/posts/$postId/deep' - | '/posts/$postId' - fileRoutesByTo: FileRoutesByTo - to: - | '/' - | '/blog/$slug' - | '/blog' - | '/posts' - | '/posts/$postId/deep' - | '/posts/$postId' - id: - | '/' - | '/blog' - | '/posts' - | '/blog/$slug' - | '/blog/' - | '/posts/' - | '/posts/$postId/deep' - | '/posts/$postId/' - fileRoutesById: FileRoutesById -} - -interface RootRouteChildren { - R1nd3xRoute: typeof R1nd3xRoute - BlogR0ut3Route: typeof BlogR0ut3RouteWithChildren - PostsR0ut3Route: typeof PostsR0ut3RouteWithChildren -} - -const rootRouteChildren: RootRouteChildren = { - R1nd3xRoute: R1nd3xRoute, - BlogR0ut3Route: BlogR0ut3RouteWithChildren, - PostsR0ut3Route: PostsR0ut3RouteWithChildren, -} - -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() - -/* prettier-ignore-end */ - -/* ROUTE_MANIFEST_START -{ - "routes": { - "__root__": { - "filePath": "__root.tsx", - "children": [ - "/", - "/blog", - "/posts" - ] - }, - "/": { - "filePath": "_1nd3x.tsx" - }, - "/blog": { - "filePath": "blog/_r0ut3_.tsx", - "children": [ - "/blog/$slug", - "/blog/" - ] - }, - "/posts": { - "filePath": "posts/_r0ut3_.tsx", - "children": [ - "/posts/", - "/posts/$postId/deep", - "/posts/$postId/" - ] - }, - "/blog/$slug": { - "filePath": "blog/$slug.tsx", - "parent": "/blog" - }, - "/blog/": { - "filePath": "blog/_1nd3x.tsx", - "parent": "/blog" - }, - "/posts/": { - "filePath": "posts/_1nd3x.tsx", - "parent": "/posts" - }, - "/posts/$postId/deep": { - "filePath": "posts/$postId/deep.tsx", - "parent": "/posts" - }, - "/posts/$postId/": { - "filePath": "posts/$postId/_1nd3x.tsx", - "parent": "/posts" - } - } -} -ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/file-modification/routeTree.gen.ts b/packages/router-generator/tests/generator/file-modification/routeTree.gen.ts deleted file mode 100644 index 3d0510d0ae..0000000000 --- a/packages/router-generator/tests/generator/file-modification/routeTree.gen.ts +++ /dev/null @@ -1,165 +0,0 @@ -/* prettier-ignore-start */ - -/* eslint-disable */ - -// @ts-nocheck - -// noinspection JSUnusedGlobalSymbols - -// This file is auto-generated by TanStack Router - -import { createFileRoute } from '@tanstack/react-router' - -// Import Routes - -import { Route as rootRoute } from './routes/__root' -import { Route as testInitiallyLazyImport } from './routes/(test)/initiallyLazy' -import { Route as testInitiallyEmptyImport } from './routes/(test)/initiallyEmpty' -import { Route as testFooImport } from './routes/(test)/foo' - -// Create Virtual Routes - -const testBarLazyImport = createFileRoute('/(test)/bar')() - -// Create/Update Routes - -const testBarLazyRoute = testBarLazyImport - .update({ - path: '/bar', - getParentRoute: () => rootRoute, - } as any) - .lazy(() => import('./routes/(test)/bar.lazy').then((d) => d.Route)) - -const testInitiallyLazyRoute = testInitiallyLazyImport.update({ - path: '/initiallyLazy', - getParentRoute: () => rootRoute, -} as any) - -const testInitiallyEmptyRoute = testInitiallyEmptyImport - .update({ - path: '/initiallyEmpty', - getParentRoute: () => rootRoute, - } as any) - .lazy(() => - import('./routes/(test)/initiallyEmpty.lazy').then((d) => d.Route), - ) - -const testFooRoute = testFooImport.update({ - path: '/foo', - getParentRoute: () => rootRoute, -} as any) - -// Populate the FileRoutesByPath interface - -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/(test)/foo': { - id: '/foo' - path: '/foo' - fullPath: '/foo' - preLoaderRoute: typeof testFooImport - parentRoute: typeof rootRoute - } - '/(test)/initiallyEmpty': { - id: '/initiallyEmpty' - path: '/initiallyEmpty' - fullPath: '/initiallyEmpty' - preLoaderRoute: typeof testInitiallyEmptyImport - parentRoute: typeof rootRoute - } - '/(test)/initiallyLazy': { - id: '/initiallyLazy' - path: '/initiallyLazy' - fullPath: '/initiallyLazy' - preLoaderRoute: typeof testInitiallyLazyImport - parentRoute: typeof rootRoute - } - '/(test)/bar': { - id: '/bar' - path: '/bar' - fullPath: '/bar' - preLoaderRoute: typeof testBarLazyImport - parentRoute: typeof rootRoute - } - } -} - -// Create and export the route tree - -interface FileRoutesByFullPath { - '/foo': typeof testFooRoute - '/initiallyEmpty': typeof testInitiallyEmptyRoute - '/initiallyLazy': typeof testInitiallyLazyRoute - '/bar': typeof testBarLazyRoute -} - -interface FileRoutesByTo { - '/foo': typeof testFooRoute - '/initiallyEmpty': typeof testInitiallyEmptyRoute - '/initiallyLazy': typeof testInitiallyLazyRoute - '/bar': typeof testBarLazyRoute -} - -interface FileRoutesById { - '/foo': typeof testFooRoute - '/initiallyEmpty': typeof testInitiallyEmptyRoute - '/initiallyLazy': typeof testInitiallyLazyRoute - '/bar': typeof testBarLazyRoute -} - -interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' - fileRoutesByTo: FileRoutesByTo - to: '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' - id: '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' - fileRoutesById: FileRoutesById -} - -interface RootRouteChildren { - testFooRoute: typeof testFooRoute - testInitiallyEmptyRoute: typeof testInitiallyEmptyRoute - testInitiallyLazyRoute: typeof testInitiallyLazyRoute - testBarLazyRoute: typeof testBarLazyRoute -} - -const rootRouteChildren: RootRouteChildren = { - testFooRoute: testFooRoute, - testInitiallyEmptyRoute: testInitiallyEmptyRoute, - testInitiallyLazyRoute: testInitiallyLazyRoute, - testBarLazyRoute: testBarLazyRoute, -} - -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() - -/* prettier-ignore-end */ - -/* ROUTE_MANIFEST_START -{ - "routes": { - "__root__": { - "filePath": "__root.tsx", - "children": [ - "/foo", - "/initiallyEmpty", - "/initiallyLazy", - "/bar" - ] - }, - "/foo": { - "filePath": "(test)/foo.tsx" - }, - "/initiallyEmpty": { - "filePath": "(test)/initiallyEmpty.tsx" - }, - "/initiallyLazy": { - "filePath": "(test)/initiallyLazy.tsx" - }, - "/bar": { - "filePath": "(test)/bar.lazy.tsx" - } - } -} -ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/flat/routeTree.gen.ts b/packages/router-generator/tests/generator/flat/routeTree.gen.ts deleted file mode 100644 index 2bb540ea85..0000000000 --- a/packages/router-generator/tests/generator/flat/routeTree.gen.ts +++ /dev/null @@ -1,316 +0,0 @@ -/* prettier-ignore-start */ - -/* eslint-disable */ - -// @ts-nocheck - -// noinspection JSUnusedGlobalSymbols - -// This file is auto-generated by TanStack Router - -// Import Routes - -import { Route as rootRoute } from './routes/__root' -import { Route as PostsRouteImport } from './routes/posts.route' -import { Route as BlogRouteImport } from './routes/blog.route' -import { Route as IndexImport } from './routes/index' -import { Route as PostsIndexImport } from './routes/posts.index' -import { Route as BlogIndexImport } from './routes/blog.index' -import { Route as BlogStatsImport } from './routes/blog_.stats' -import { Route as PostsPostIdIndexImport } from './routes/posts.$postId.index' -import { Route as BlogSlugIndexImport } from './routes/blog.$slug.index' -import { Route as PostsPostIdDeepImport } from './routes/posts.$postId.deep' - -// Create/Update Routes - -const PostsRouteRoute = PostsRouteImport.update({ - path: '/posts', - getParentRoute: () => rootRoute, -} as any) - -const BlogRouteRoute = BlogRouteImport.update({ - path: '/blog', - getParentRoute: () => rootRoute, -} as any) - -const IndexRoute = IndexImport.update({ - path: '/', - getParentRoute: () => rootRoute, -} as any) - -const PostsIndexRoute = PostsIndexImport.update({ - path: '/', - getParentRoute: () => PostsRouteRoute, -} as any) - -const BlogIndexRoute = BlogIndexImport.update({ - path: '/', - getParentRoute: () => BlogRouteRoute, -} as any) - -const BlogStatsRoute = BlogStatsImport.update({ - path: '/blog/stats', - getParentRoute: () => rootRoute, -} as any) - -const PostsPostIdIndexRoute = PostsPostIdIndexImport.update({ - path: '/$postId/', - getParentRoute: () => PostsRouteRoute, -} as any) - -const BlogSlugIndexRoute = BlogSlugIndexImport.update({ - path: '/$slug/', - getParentRoute: () => BlogRouteRoute, -} as any) - -const PostsPostIdDeepRoute = PostsPostIdDeepImport.update({ - path: '/$postId/deep', - getParentRoute: () => PostsRouteRoute, -} as any) - -// Populate the FileRoutesByPath interface - -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/': { - id: '/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof IndexImport - parentRoute: typeof rootRoute - } - '/blog': { - id: '/blog' - path: '/blog' - fullPath: '/blog' - preLoaderRoute: typeof BlogRouteImport - parentRoute: typeof rootRoute - } - '/posts': { - id: '/posts' - path: '/posts' - fullPath: '/posts' - preLoaderRoute: typeof PostsRouteImport - parentRoute: typeof rootRoute - } - '/blog/stats': { - id: '/blog/stats' - path: '/blog/stats' - fullPath: '/blog/stats' - preLoaderRoute: typeof BlogStatsImport - parentRoute: typeof rootRoute - } - '/blog/': { - id: '/blog/' - path: '/' - fullPath: '/blog/' - preLoaderRoute: typeof BlogIndexImport - parentRoute: typeof BlogRouteImport - } - '/posts/': { - id: '/posts/' - path: '/' - fullPath: '/posts/' - preLoaderRoute: typeof PostsIndexImport - parentRoute: typeof PostsRouteImport - } - '/posts/$postId/deep': { - id: '/posts/$postId/deep' - path: '/$postId/deep' - fullPath: '/posts/$postId/deep' - preLoaderRoute: typeof PostsPostIdDeepImport - parentRoute: typeof PostsRouteImport - } - '/blog/$slug/': { - id: '/blog/$slug/' - path: '/$slug' - fullPath: '/blog/$slug' - preLoaderRoute: typeof BlogSlugIndexImport - parentRoute: typeof BlogRouteImport - } - '/posts/$postId/': { - id: '/posts/$postId/' - path: '/$postId' - fullPath: '/posts/$postId' - preLoaderRoute: typeof PostsPostIdIndexImport - parentRoute: typeof PostsRouteImport - } - } -} - -// Create and export the route tree - -interface BlogRouteRouteChildren { - BlogIndexRoute: typeof BlogIndexRoute - BlogSlugIndexRoute: typeof BlogSlugIndexRoute -} - -const BlogRouteRouteChildren: BlogRouteRouteChildren = { - BlogIndexRoute: BlogIndexRoute, - BlogSlugIndexRoute: BlogSlugIndexRoute, -} - -const BlogRouteRouteWithChildren = BlogRouteRoute._addFileChildren( - BlogRouteRouteChildren, -) - -interface PostsRouteRouteChildren { - PostsIndexRoute: typeof PostsIndexRoute - PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute - PostsPostIdIndexRoute: typeof PostsPostIdIndexRoute -} - -const PostsRouteRouteChildren: PostsRouteRouteChildren = { - PostsIndexRoute: PostsIndexRoute, - PostsPostIdDeepRoute: PostsPostIdDeepRoute, - PostsPostIdIndexRoute: PostsPostIdIndexRoute, -} - -const PostsRouteRouteWithChildren = PostsRouteRoute._addFileChildren( - PostsRouteRouteChildren, -) - -interface FileRoutesByFullPath { - '/': typeof IndexRoute - '/blog': typeof BlogRouteRouteWithChildren - '/posts': typeof PostsRouteRouteWithChildren - '/blog/stats': typeof BlogStatsRoute - '/blog/': typeof BlogIndexRoute - '/posts/': typeof PostsIndexRoute - '/posts/$postId/deep': typeof PostsPostIdDeepRoute - '/blog/$slug': typeof BlogSlugIndexRoute - '/posts/$postId': typeof PostsPostIdIndexRoute -} - -interface FileRoutesByTo { - '/': typeof IndexRoute - '/blog/stats': typeof BlogStatsRoute - '/blog': typeof BlogIndexRoute - '/posts': typeof PostsIndexRoute - '/posts/$postId/deep': typeof PostsPostIdDeepRoute - '/blog/$slug': typeof BlogSlugIndexRoute - '/posts/$postId': typeof PostsPostIdIndexRoute -} - -interface FileRoutesById { - '/': typeof IndexRoute - '/blog': typeof BlogRouteRouteWithChildren - '/posts': typeof PostsRouteRouteWithChildren - '/blog/stats': typeof BlogStatsRoute - '/blog/': typeof BlogIndexRoute - '/posts/': typeof PostsIndexRoute - '/posts/$postId/deep': typeof PostsPostIdDeepRoute - '/blog/$slug/': typeof BlogSlugIndexRoute - '/posts/$postId/': typeof PostsPostIdIndexRoute -} - -interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: - | '/' - | '/blog' - | '/posts' - | '/blog/stats' - | '/blog/' - | '/posts/' - | '/posts/$postId/deep' - | '/blog/$slug' - | '/posts/$postId' - fileRoutesByTo: FileRoutesByTo - to: - | '/' - | '/blog/stats' - | '/blog' - | '/posts' - | '/posts/$postId/deep' - | '/blog/$slug' - | '/posts/$postId' - id: - | '/' - | '/blog' - | '/posts' - | '/blog/stats' - | '/blog/' - | '/posts/' - | '/posts/$postId/deep' - | '/blog/$slug/' - | '/posts/$postId/' - fileRoutesById: FileRoutesById -} - -interface RootRouteChildren { - IndexRoute: typeof IndexRoute - BlogRouteRoute: typeof BlogRouteRouteWithChildren - PostsRouteRoute: typeof PostsRouteRouteWithChildren - BlogStatsRoute: typeof BlogStatsRoute -} - -const rootRouteChildren: RootRouteChildren = { - IndexRoute: IndexRoute, - BlogRouteRoute: BlogRouteRouteWithChildren, - PostsRouteRoute: PostsRouteRouteWithChildren, - BlogStatsRoute: BlogStatsRoute, -} - -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() - -/* prettier-ignore-end */ - -/* ROUTE_MANIFEST_START -{ - "routes": { - "__root__": { - "filePath": "__root.tsx", - "children": [ - "/", - "/blog", - "/posts", - "/blog/stats" - ] - }, - "/": { - "filePath": "index.tsx" - }, - "/blog": { - "filePath": "blog.route.tsx", - "children": [ - "/blog/", - "/blog/$slug/" - ] - }, - "/posts": { - "filePath": "posts.route.tsx", - "children": [ - "/posts/", - "/posts/$postId/deep", - "/posts/$postId/" - ] - }, - "/blog/stats": { - "filePath": "blog_.stats.tsx" - }, - "/blog/": { - "filePath": "blog.index.tsx", - "parent": "/blog" - }, - "/posts/": { - "filePath": "posts.index.tsx", - "parent": "/posts" - }, - "/posts/$postId/deep": { - "filePath": "posts.$postId.deep.tsx", - "parent": "/posts" - }, - "/blog/$slug/": { - "filePath": "blog.$slug.index.tsx", - "parent": "/blog" - }, - "/posts/$postId/": { - "filePath": "posts.$postId.index.tsx", - "parent": "/posts" - } - } -} -ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/nested-layouts/routeTree.gen.ts b/packages/router-generator/tests/generator/nested-layouts/routeTree.gen.ts deleted file mode 100644 index 4425bd094f..0000000000 --- a/packages/router-generator/tests/generator/nested-layouts/routeTree.gen.ts +++ /dev/null @@ -1,816 +0,0 @@ -/* prettier-ignore-start */ - -/* eslint-disable */ - -// @ts-nocheck - -// noinspection JSUnusedGlobalSymbols - -// This file is auto-generated by TanStack Router - -import { createFileRoute } from '@tanstack/react-router' - -// Import Routes - -import { Route as rootRoute } from './routes/__root' -import { Route as LayoutA2Import } from './routes/_layout-a2' -import { Route as LayoutA1Import } from './routes/_layout-a1' -import { Route as JestedRouteImport } from './routes/jested/route' -import { Route as IndexImport } from './routes/index' -import { Route as NestedLayoutB2Import } from './routes/nested/_layout-b2' -import { Route as NestedLayoutB1Import } from './routes/nested/_layout-b1' -import { Route as JestedLayoutB4Import } from './routes/jested/_layout-b4' -import { Route as JestedLayoutB3Import } from './routes/jested/_layout-b3' -import { Route as FooBarImport } from './routes/foo/bar' -import { Route as LayoutA2BarImport } from './routes/_layout-a2/bar' -import { Route as LayoutA1FooImport } from './routes/_layout-a1/foo' -import { Route as folderInFolderImport } from './routes/(folder)/in-folder' -import { Route as FooLayoutB5RouteImport } from './routes/foo/_layout-b5/route' -import { Route as NestedLayoutB1IndexImport } from './routes/nested/_layout-b1/index' -import { Route as JestedLayoutB3IndexImport } from './routes/jested/_layout-b3/index' -import { Route as FooLayoutB5IndexImport } from './routes/foo/_layout-b5/index' -import { Route as NestedLayoutB2FooImport } from './routes/nested/_layout-b2/foo' -import { Route as NestedLayoutB1LayoutC1Import } from './routes/nested/_layout-b1/_layout-c1' -import { Route as JestedLayoutB4FooImport } from './routes/jested/_layout-b4/foo' -import { Route as JestedLayoutB3LayoutC2Import } from './routes/jested/_layout-b3/_layout-c2' -import { Route as FooLayoutB5IdImport } from './routes/foo/_layout-b5/$id' -import { Route as NestedLayoutB1LayoutC1BarImport } from './routes/nested/_layout-b1/_layout-c1/bar' -import { Route as JestedLayoutB3LayoutC2BarImport } from './routes/jested/_layout-b3/_layout-c2/bar' - -// Create Virtual Routes - -const NestedImport = createFileRoute('/nested')() -const FooImport = createFileRoute('/foo')() - -// Create/Update Routes - -const NestedRoute = NestedImport.update({ - path: '/nested', - getParentRoute: () => rootRoute, -} as any) - -const FooRoute = FooImport.update({ - path: '/foo', - getParentRoute: () => rootRoute, -} as any) - -const LayoutA2Route = LayoutA2Import.update({ - id: '/_layout-a2', - getParentRoute: () => rootRoute, -} as any) - -const LayoutA1Route = LayoutA1Import.update({ - id: '/_layout-a1', - getParentRoute: () => rootRoute, -} as any) - -const JestedRouteRoute = JestedRouteImport.update({ - path: '/jested', - getParentRoute: () => rootRoute, -} as any) - -const IndexRoute = IndexImport.update({ - path: '/', - getParentRoute: () => rootRoute, -} as any) - -const NestedLayoutB2Route = NestedLayoutB2Import.update({ - id: '/_layout-b2', - getParentRoute: () => NestedRoute, -} as any) - -const NestedLayoutB1Route = NestedLayoutB1Import.update({ - id: '/_layout-b1', - getParentRoute: () => NestedRoute, -} as any) - -const JestedLayoutB4Route = JestedLayoutB4Import.update({ - id: '/_layout-b4', - getParentRoute: () => JestedRouteRoute, -} as any) - -const JestedLayoutB3Route = JestedLayoutB3Import.update({ - id: '/_layout-b3', - getParentRoute: () => JestedRouteRoute, -} as any) - -const FooBarRoute = FooBarImport.update({ - path: '/bar', - getParentRoute: () => FooRoute, -} as any) - -const LayoutA2BarRoute = LayoutA2BarImport.update({ - path: '/bar', - getParentRoute: () => LayoutA2Route, -} as any) - -const LayoutA1FooRoute = LayoutA1FooImport.update({ - path: '/foo', - getParentRoute: () => LayoutA1Route, -} as any) - -const folderInFolderRoute = folderInFolderImport.update({ - path: '/in-folder', - getParentRoute: () => rootRoute, -} as any) - -const FooLayoutB5RouteRoute = FooLayoutB5RouteImport.update({ - id: '/foo/_layout-b5', - getParentRoute: () => FooRoute, -} as any) - -const NestedLayoutB1IndexRoute = NestedLayoutB1IndexImport.update({ - path: '/', - getParentRoute: () => NestedLayoutB1Route, -} as any) - -const JestedLayoutB3IndexRoute = JestedLayoutB3IndexImport.update({ - path: '/', - getParentRoute: () => JestedLayoutB3Route, -} as any) - -const FooLayoutB5IndexRoute = FooLayoutB5IndexImport.update({ - path: '/', - getParentRoute: () => FooLayoutB5RouteRoute, -} as any) - -const NestedLayoutB2FooRoute = NestedLayoutB2FooImport.update({ - path: '/foo', - getParentRoute: () => NestedLayoutB2Route, -} as any) - -const NestedLayoutB1LayoutC1Route = NestedLayoutB1LayoutC1Import.update({ - id: '/_layout-c1', - getParentRoute: () => NestedLayoutB1Route, -} as any) - -const JestedLayoutB4FooRoute = JestedLayoutB4FooImport.update({ - path: '/foo', - getParentRoute: () => JestedLayoutB4Route, -} as any) - -const JestedLayoutB3LayoutC2Route = JestedLayoutB3LayoutC2Import.update({ - id: '/_layout-c2', - getParentRoute: () => JestedLayoutB3Route, -} as any) - -const FooLayoutB5IdRoute = FooLayoutB5IdImport.update({ - path: '/$id', - getParentRoute: () => FooLayoutB5RouteRoute, -} as any) - -const NestedLayoutB1LayoutC1BarRoute = NestedLayoutB1LayoutC1BarImport.update({ - path: '/bar', - getParentRoute: () => NestedLayoutB1LayoutC1Route, -} as any) - -const JestedLayoutB3LayoutC2BarRoute = JestedLayoutB3LayoutC2BarImport.update({ - path: '/bar', - getParentRoute: () => JestedLayoutB3LayoutC2Route, -} as any) - -// Populate the FileRoutesByPath interface - -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/': { - id: '/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof IndexImport - parentRoute: typeof rootRoute - } - '/jested': { - id: '/jested' - path: '/jested' - fullPath: '/jested' - preLoaderRoute: typeof JestedRouteImport - parentRoute: typeof rootRoute - } - '/_layout-a1': { - id: '/_layout-a1' - path: '' - fullPath: '' - preLoaderRoute: typeof LayoutA1Import - parentRoute: typeof rootRoute - } - '/_layout-a2': { - id: '/_layout-a2' - path: '' - fullPath: '' - preLoaderRoute: typeof LayoutA2Import - parentRoute: typeof rootRoute - } - '/foo': { - id: '/foo' - path: '/foo' - fullPath: '/foo' - preLoaderRoute: typeof FooImport - parentRoute: typeof rootRoute - } - '/foo/_layout-b5': { - id: '/foo/_layout-b5' - path: '/foo' - fullPath: '/foo' - preLoaderRoute: typeof FooLayoutB5RouteImport - parentRoute: typeof FooRoute - } - '/(folder)/in-folder': { - id: '/in-folder' - path: '/in-folder' - fullPath: '/in-folder' - preLoaderRoute: typeof folderInFolderImport - parentRoute: typeof rootRoute - } - '/_layout-a1/foo': { - id: '/_layout-a1/foo' - path: '/foo' - fullPath: '/foo' - preLoaderRoute: typeof LayoutA1FooImport - parentRoute: typeof LayoutA1Import - } - '/_layout-a2/bar': { - id: '/_layout-a2/bar' - path: '/bar' - fullPath: '/bar' - preLoaderRoute: typeof LayoutA2BarImport - parentRoute: typeof LayoutA2Import - } - '/foo/bar': { - id: '/foo/bar' - path: '/bar' - fullPath: '/foo/bar' - preLoaderRoute: typeof FooBarImport - parentRoute: typeof FooImport - } - '/jested/_layout-b3': { - id: '/jested/_layout-b3' - path: '' - fullPath: '/jested' - preLoaderRoute: typeof JestedLayoutB3Import - parentRoute: typeof JestedRouteImport - } - '/jested/_layout-b4': { - id: '/jested/_layout-b4' - path: '' - fullPath: '/jested' - preLoaderRoute: typeof JestedLayoutB4Import - parentRoute: typeof JestedRouteImport - } - '/nested': { - id: '/nested' - path: '/nested' - fullPath: '/nested' - preLoaderRoute: typeof NestedImport - parentRoute: typeof rootRoute - } - '/nested/_layout-b1': { - id: '/nested/_layout-b1' - path: '/nested' - fullPath: '/nested' - preLoaderRoute: typeof NestedLayoutB1Import - parentRoute: typeof NestedRoute - } - '/nested/_layout-b2': { - id: '/nested/_layout-b2' - path: '' - fullPath: '/nested' - preLoaderRoute: typeof NestedLayoutB2Import - parentRoute: typeof NestedImport - } - '/foo/_layout-b5/$id': { - id: '/foo/_layout-b5/$id' - path: '/$id' - fullPath: '/foo/$id' - preLoaderRoute: typeof FooLayoutB5IdImport - parentRoute: typeof FooLayoutB5RouteImport - } - '/jested/_layout-b3/_layout-c2': { - id: '/jested/_layout-b3/_layout-c2' - path: '' - fullPath: '/jested' - preLoaderRoute: typeof JestedLayoutB3LayoutC2Import - parentRoute: typeof JestedLayoutB3Import - } - '/jested/_layout-b4/foo': { - id: '/jested/_layout-b4/foo' - path: '/foo' - fullPath: '/jested/foo' - preLoaderRoute: typeof JestedLayoutB4FooImport - parentRoute: typeof JestedLayoutB4Import - } - '/nested/_layout-b1/_layout-c1': { - id: '/nested/_layout-b1/_layout-c1' - path: '' - fullPath: '/nested' - preLoaderRoute: typeof NestedLayoutB1LayoutC1Import - parentRoute: typeof NestedLayoutB1Import - } - '/nested/_layout-b2/foo': { - id: '/nested/_layout-b2/foo' - path: '/foo' - fullPath: '/nested/foo' - preLoaderRoute: typeof NestedLayoutB2FooImport - parentRoute: typeof NestedLayoutB2Import - } - '/foo/_layout-b5/': { - id: '/foo/_layout-b5/' - path: '/' - fullPath: '/foo/' - preLoaderRoute: typeof FooLayoutB5IndexImport - parentRoute: typeof FooLayoutB5RouteImport - } - '/jested/_layout-b3/': { - id: '/jested/_layout-b3/' - path: '/' - fullPath: '/jested/' - preLoaderRoute: typeof JestedLayoutB3IndexImport - parentRoute: typeof JestedLayoutB3Import - } - '/nested/_layout-b1/': { - id: '/nested/_layout-b1/' - path: '/' - fullPath: '/nested/' - preLoaderRoute: typeof NestedLayoutB1IndexImport - parentRoute: typeof NestedLayoutB1Import - } - '/jested/_layout-b3/_layout-c2/bar': { - id: '/jested/_layout-b3/_layout-c2/bar' - path: '/bar' - fullPath: '/jested/bar' - preLoaderRoute: typeof JestedLayoutB3LayoutC2BarImport - parentRoute: typeof JestedLayoutB3LayoutC2Import - } - '/nested/_layout-b1/_layout-c1/bar': { - id: '/nested/_layout-b1/_layout-c1/bar' - path: '/bar' - fullPath: '/nested/bar' - preLoaderRoute: typeof NestedLayoutB1LayoutC1BarImport - parentRoute: typeof NestedLayoutB1LayoutC1Import - } - } -} - -// Create and export the route tree - -interface JestedLayoutB3LayoutC2RouteChildren { - JestedLayoutB3LayoutC2BarRoute: typeof JestedLayoutB3LayoutC2BarRoute -} - -const JestedLayoutB3LayoutC2RouteChildren: JestedLayoutB3LayoutC2RouteChildren = - { - JestedLayoutB3LayoutC2BarRoute: JestedLayoutB3LayoutC2BarRoute, - } - -const JestedLayoutB3LayoutC2RouteWithChildren = - JestedLayoutB3LayoutC2Route._addFileChildren( - JestedLayoutB3LayoutC2RouteChildren, - ) - -interface JestedLayoutB3RouteChildren { - JestedLayoutB3LayoutC2Route: typeof JestedLayoutB3LayoutC2RouteWithChildren - JestedLayoutB3IndexRoute: typeof JestedLayoutB3IndexRoute -} - -const JestedLayoutB3RouteChildren: JestedLayoutB3RouteChildren = { - JestedLayoutB3LayoutC2Route: JestedLayoutB3LayoutC2RouteWithChildren, - JestedLayoutB3IndexRoute: JestedLayoutB3IndexRoute, -} - -const JestedLayoutB3RouteWithChildren = JestedLayoutB3Route._addFileChildren( - JestedLayoutB3RouteChildren, -) - -interface JestedLayoutB4RouteChildren { - JestedLayoutB4FooRoute: typeof JestedLayoutB4FooRoute -} - -const JestedLayoutB4RouteChildren: JestedLayoutB4RouteChildren = { - JestedLayoutB4FooRoute: JestedLayoutB4FooRoute, -} - -const JestedLayoutB4RouteWithChildren = JestedLayoutB4Route._addFileChildren( - JestedLayoutB4RouteChildren, -) - -interface JestedRouteRouteChildren { - JestedLayoutB3Route: typeof JestedLayoutB3RouteWithChildren - JestedLayoutB4Route: typeof JestedLayoutB4RouteWithChildren -} - -const JestedRouteRouteChildren: JestedRouteRouteChildren = { - JestedLayoutB3Route: JestedLayoutB3RouteWithChildren, - JestedLayoutB4Route: JestedLayoutB4RouteWithChildren, -} - -const JestedRouteRouteWithChildren = JestedRouteRoute._addFileChildren( - JestedRouteRouteChildren, -) - -interface LayoutA1RouteChildren { - LayoutA1FooRoute: typeof LayoutA1FooRoute -} - -const LayoutA1RouteChildren: LayoutA1RouteChildren = { - LayoutA1FooRoute: LayoutA1FooRoute, -} - -const LayoutA1RouteWithChildren = LayoutA1Route._addFileChildren( - LayoutA1RouteChildren, -) - -interface LayoutA2RouteChildren { - LayoutA2BarRoute: typeof LayoutA2BarRoute -} - -const LayoutA2RouteChildren: LayoutA2RouteChildren = { - LayoutA2BarRoute: LayoutA2BarRoute, -} - -const LayoutA2RouteWithChildren = LayoutA2Route._addFileChildren( - LayoutA2RouteChildren, -) - -interface FooLayoutB5RouteRouteChildren { - FooLayoutB5IdRoute: typeof FooLayoutB5IdRoute - FooLayoutB5IndexRoute: typeof FooLayoutB5IndexRoute -} - -const FooLayoutB5RouteRouteChildren: FooLayoutB5RouteRouteChildren = { - FooLayoutB5IdRoute: FooLayoutB5IdRoute, - FooLayoutB5IndexRoute: FooLayoutB5IndexRoute, -} - -const FooLayoutB5RouteRouteWithChildren = - FooLayoutB5RouteRoute._addFileChildren(FooLayoutB5RouteRouteChildren) - -interface FooRouteChildren { - FooLayoutB5RouteRoute: typeof FooLayoutB5RouteRouteWithChildren - FooBarRoute: typeof FooBarRoute -} - -const FooRouteChildren: FooRouteChildren = { - FooLayoutB5RouteRoute: FooLayoutB5RouteRouteWithChildren, - FooBarRoute: FooBarRoute, -} - -const FooRouteWithChildren = FooRoute._addFileChildren(FooRouteChildren) - -interface NestedLayoutB1LayoutC1RouteChildren { - NestedLayoutB1LayoutC1BarRoute: typeof NestedLayoutB1LayoutC1BarRoute -} - -const NestedLayoutB1LayoutC1RouteChildren: NestedLayoutB1LayoutC1RouteChildren = - { - NestedLayoutB1LayoutC1BarRoute: NestedLayoutB1LayoutC1BarRoute, - } - -const NestedLayoutB1LayoutC1RouteWithChildren = - NestedLayoutB1LayoutC1Route._addFileChildren( - NestedLayoutB1LayoutC1RouteChildren, - ) - -interface NestedLayoutB1RouteChildren { - NestedLayoutB1LayoutC1Route: typeof NestedLayoutB1LayoutC1RouteWithChildren - NestedLayoutB1IndexRoute: typeof NestedLayoutB1IndexRoute -} - -const NestedLayoutB1RouteChildren: NestedLayoutB1RouteChildren = { - NestedLayoutB1LayoutC1Route: NestedLayoutB1LayoutC1RouteWithChildren, - NestedLayoutB1IndexRoute: NestedLayoutB1IndexRoute, -} - -const NestedLayoutB1RouteWithChildren = NestedLayoutB1Route._addFileChildren( - NestedLayoutB1RouteChildren, -) - -interface NestedLayoutB2RouteChildren { - NestedLayoutB2FooRoute: typeof NestedLayoutB2FooRoute -} - -const NestedLayoutB2RouteChildren: NestedLayoutB2RouteChildren = { - NestedLayoutB2FooRoute: NestedLayoutB2FooRoute, -} - -const NestedLayoutB2RouteWithChildren = NestedLayoutB2Route._addFileChildren( - NestedLayoutB2RouteChildren, -) - -interface NestedRouteChildren { - NestedLayoutB1Route: typeof NestedLayoutB1RouteWithChildren - NestedLayoutB2Route: typeof NestedLayoutB2RouteWithChildren -} - -const NestedRouteChildren: NestedRouteChildren = { - NestedLayoutB1Route: NestedLayoutB1RouteWithChildren, - NestedLayoutB2Route: NestedLayoutB2RouteWithChildren, -} - -const NestedRouteWithChildren = - NestedRoute._addFileChildren(NestedRouteChildren) - -interface FileRoutesByFullPath { - '/': typeof IndexRoute - '/jested': typeof JestedLayoutB3LayoutC2RouteWithChildren - '': typeof LayoutA2RouteWithChildren - '/foo': typeof LayoutA1FooRoute - '/in-folder': typeof folderInFolderRoute - '/bar': typeof LayoutA2BarRoute - '/foo/bar': typeof FooBarRoute - '/nested': typeof NestedLayoutB1LayoutC1RouteWithChildren - '/foo/$id': typeof FooLayoutB5IdRoute - '/jested/foo': typeof JestedLayoutB4FooRoute - '/nested/foo': typeof NestedLayoutB2FooRoute - '/foo/': typeof FooLayoutB5IndexRoute - '/jested/': typeof JestedLayoutB3IndexRoute - '/nested/': typeof NestedLayoutB1IndexRoute - '/jested/bar': typeof JestedLayoutB3LayoutC2BarRoute - '/nested/bar': typeof NestedLayoutB1LayoutC1BarRoute -} - -interface FileRoutesByTo { - '/': typeof IndexRoute - '/jested': typeof JestedLayoutB3IndexRoute - '': typeof LayoutA2RouteWithChildren - '/foo': typeof FooLayoutB5IndexRoute - '/in-folder': typeof folderInFolderRoute - '/bar': typeof LayoutA2BarRoute - '/foo/bar': typeof FooBarRoute - '/nested': typeof NestedLayoutB1IndexRoute - '/foo/$id': typeof FooLayoutB5IdRoute - '/jested/foo': typeof JestedLayoutB4FooRoute - '/nested/foo': typeof NestedLayoutB2FooRoute - '/jested/bar': typeof JestedLayoutB3LayoutC2BarRoute - '/nested/bar': typeof NestedLayoutB1LayoutC1BarRoute -} - -interface FileRoutesById { - '/': typeof IndexRoute - '/jested': typeof JestedRouteRouteWithChildren - '/_layout-a1': typeof LayoutA1RouteWithChildren - '/_layout-a2': typeof LayoutA2RouteWithChildren - '/foo': typeof FooRouteWithChildren - '/foo/_layout-b5': typeof FooLayoutB5RouteRouteWithChildren - '/in-folder': typeof folderInFolderRoute - '/_layout-a1/foo': typeof LayoutA1FooRoute - '/_layout-a2/bar': typeof LayoutA2BarRoute - '/foo/bar': typeof FooBarRoute - '/jested/_layout-b3': typeof JestedLayoutB3RouteWithChildren - '/jested/_layout-b4': typeof JestedLayoutB4RouteWithChildren - '/nested': typeof NestedRouteWithChildren - '/nested/_layout-b1': typeof NestedLayoutB1RouteWithChildren - '/nested/_layout-b2': typeof NestedLayoutB2RouteWithChildren - '/foo/_layout-b5/$id': typeof FooLayoutB5IdRoute - '/jested/_layout-b3/_layout-c2': typeof JestedLayoutB3LayoutC2RouteWithChildren - '/jested/_layout-b4/foo': typeof JestedLayoutB4FooRoute - '/nested/_layout-b1/_layout-c1': typeof NestedLayoutB1LayoutC1RouteWithChildren - '/nested/_layout-b2/foo': typeof NestedLayoutB2FooRoute - '/foo/_layout-b5/': typeof FooLayoutB5IndexRoute - '/jested/_layout-b3/': typeof JestedLayoutB3IndexRoute - '/nested/_layout-b1/': typeof NestedLayoutB1IndexRoute - '/jested/_layout-b3/_layout-c2/bar': typeof JestedLayoutB3LayoutC2BarRoute - '/nested/_layout-b1/_layout-c1/bar': typeof NestedLayoutB1LayoutC1BarRoute -} - -interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: - | '/' - | '/jested' - | '' - | '/foo' - | '/in-folder' - | '/bar' - | '/foo/bar' - | '/nested' - | '/foo/$id' - | '/jested/foo' - | '/nested/foo' - | '/foo/' - | '/jested/' - | '/nested/' - | '/jested/bar' - | '/nested/bar' - fileRoutesByTo: FileRoutesByTo - to: - | '/' - | '/jested' - | '' - | '/foo' - | '/in-folder' - | '/bar' - | '/foo/bar' - | '/nested' - | '/foo/$id' - | '/jested/foo' - | '/nested/foo' - | '/jested/bar' - | '/nested/bar' - id: - | '/' - | '/jested' - | '/_layout-a1' - | '/_layout-a2' - | '/foo' - | '/foo/_layout-b5' - | '/in-folder' - | '/_layout-a1/foo' - | '/_layout-a2/bar' - | '/foo/bar' - | '/jested/_layout-b3' - | '/jested/_layout-b4' - | '/nested' - | '/nested/_layout-b1' - | '/nested/_layout-b2' - | '/foo/_layout-b5/$id' - | '/jested/_layout-b3/_layout-c2' - | '/jested/_layout-b4/foo' - | '/nested/_layout-b1/_layout-c1' - | '/nested/_layout-b2/foo' - | '/foo/_layout-b5/' - | '/jested/_layout-b3/' - | '/nested/_layout-b1/' - | '/jested/_layout-b3/_layout-c2/bar' - | '/nested/_layout-b1/_layout-c1/bar' - fileRoutesById: FileRoutesById -} - -interface RootRouteChildren { - IndexRoute: typeof IndexRoute - JestedRouteRoute: typeof JestedRouteRouteWithChildren - LayoutA1Route: typeof LayoutA1RouteWithChildren - LayoutA2Route: typeof LayoutA2RouteWithChildren - FooRoute: typeof FooRouteWithChildren - folderInFolderRoute: typeof folderInFolderRoute - NestedRoute: typeof NestedRouteWithChildren -} - -const rootRouteChildren: RootRouteChildren = { - IndexRoute: IndexRoute, - JestedRouteRoute: JestedRouteRouteWithChildren, - LayoutA1Route: LayoutA1RouteWithChildren, - LayoutA2Route: LayoutA2RouteWithChildren, - FooRoute: FooRouteWithChildren, - folderInFolderRoute: folderInFolderRoute, - NestedRoute: NestedRouteWithChildren, -} - -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() - -/* prettier-ignore-end */ - -/* ROUTE_MANIFEST_START -{ - "routes": { - "__root__": { - "filePath": "__root.tsx", - "children": [ - "/", - "/jested", - "/_layout-a1", - "/_layout-a2", - "/foo", - "/in-folder", - "/nested" - ] - }, - "/": { - "filePath": "index.tsx" - }, - "/jested": { - "filePath": "jested/route.tsx", - "children": [ - "/jested/_layout-b3", - "/jested/_layout-b4" - ] - }, - "/_layout-a1": { - "filePath": "_layout-a1.tsx", - "children": [ - "/_layout-a1/foo" - ] - }, - "/_layout-a2": { - "filePath": "_layout-a2.tsx", - "children": [ - "/_layout-a2/bar" - ] - }, - "/foo": { - "filePath": "foo/_layout-b5", - "children": [ - "/foo/_layout-b5", - "/foo/bar" - ] - }, - "/foo/_layout-b5": { - "filePath": "foo/_layout-b5/route.tsx", - "parent": "/foo", - "children": [ - "/foo/_layout-b5/$id", - "/foo/_layout-b5/" - ] - }, - "/in-folder": { - "filePath": "(folder)/in-folder.tsx" - }, - "/_layout-a1/foo": { - "filePath": "_layout-a1/foo.tsx", - "parent": "/_layout-a1" - }, - "/_layout-a2/bar": { - "filePath": "_layout-a2/bar.tsx", - "parent": "/_layout-a2" - }, - "/foo/bar": { - "filePath": "foo/bar.tsx", - "parent": "/foo" - }, - "/jested/_layout-b3": { - "filePath": "jested/_layout-b3.tsx", - "parent": "/jested", - "children": [ - "/jested/_layout-b3/_layout-c2", - "/jested/_layout-b3/" - ] - }, - "/jested/_layout-b4": { - "filePath": "jested/_layout-b4.tsx", - "parent": "/jested", - "children": [ - "/jested/_layout-b4/foo" - ] - }, - "/nested": { - "filePath": "nested", - "children": [ - "/nested/_layout-b1", - "/nested/_layout-b2" - ] - }, - "/nested/_layout-b1": { - "filePath": "nested/_layout-b1.tsx", - "parent": "/nested", - "children": [ - "/nested/_layout-b1/_layout-c1", - "/nested/_layout-b1/" - ] - }, - "/nested/_layout-b2": { - "filePath": "nested/_layout-b2.tsx", - "parent": "/nested", - "children": [ - "/nested/_layout-b2/foo" - ] - }, - "/foo/_layout-b5/$id": { - "filePath": "foo/_layout-b5/$id.tsx", - "parent": "/foo/_layout-b5" - }, - "/jested/_layout-b3/_layout-c2": { - "filePath": "jested/_layout-b3/_layout-c2.tsx", - "parent": "/jested/_layout-b3", - "children": [ - "/jested/_layout-b3/_layout-c2/bar" - ] - }, - "/jested/_layout-b4/foo": { - "filePath": "jested/_layout-b4/foo.tsx", - "parent": "/jested/_layout-b4" - }, - "/nested/_layout-b1/_layout-c1": { - "filePath": "nested/_layout-b1/_layout-c1.tsx", - "parent": "/nested/_layout-b1", - "children": [ - "/nested/_layout-b1/_layout-c1/bar" - ] - }, - "/nested/_layout-b2/foo": { - "filePath": "nested/_layout-b2/foo.tsx", - "parent": "/nested/_layout-b2" - }, - "/foo/_layout-b5/": { - "filePath": "foo/_layout-b5/index.tsx", - "parent": "/foo/_layout-b5" - }, - "/jested/_layout-b3/": { - "filePath": "jested/_layout-b3/index.tsx", - "parent": "/jested/_layout-b3" - }, - "/nested/_layout-b1/": { - "filePath": "nested/_layout-b1/index.tsx", - "parent": "/nested/_layout-b1" - }, - "/jested/_layout-b3/_layout-c2/bar": { - "filePath": "jested/_layout-b3/_layout-c2/bar.tsx", - "parent": "/jested/_layout-b3/_layout-c2" - }, - "/nested/_layout-b1/_layout-c1/bar": { - "filePath": "nested/_layout-b1/_layout-c1/bar.tsx", - "parent": "/nested/_layout-b1/_layout-c1" - } - } -} -ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/nested/routeTree.gen.ts b/packages/router-generator/tests/generator/nested/routeTree.gen.ts deleted file mode 100644 index f0caed3910..0000000000 --- a/packages/router-generator/tests/generator/nested/routeTree.gen.ts +++ /dev/null @@ -1,316 +0,0 @@ -/* prettier-ignore-start */ - -/* eslint-disable */ - -// @ts-nocheck - -// noinspection JSUnusedGlobalSymbols - -// This file is auto-generated by TanStack Router - -// Import Routes - -import { Route as rootRoute } from './routes/__root' -import { Route as PostsRouteImport } from './routes/posts/route' -import { Route as BlogRouteImport } from './routes/blog/route' -import { Route as IndexImport } from './routes/index' -import { Route as PostsIndexImport } from './routes/posts/index' -import { Route as BlogIndexImport } from './routes/blog/index' -import { Route as BlogStatsImport } from './routes/blog_/stats' -import { Route as BlogSlugImport } from './routes/blog/$slug' -import { Route as PostsPostIdIndexImport } from './routes/posts/$postId/index' -import { Route as PostsPostIdDeepImport } from './routes/posts/$postId/deep' - -// Create/Update Routes - -const PostsRouteRoute = PostsRouteImport.update({ - path: '/posts', - getParentRoute: () => rootRoute, -} as any) - -const BlogRouteRoute = BlogRouteImport.update({ - path: '/blog', - getParentRoute: () => rootRoute, -} as any) - -const IndexRoute = IndexImport.update({ - path: '/', - getParentRoute: () => rootRoute, -} as any) - -const PostsIndexRoute = PostsIndexImport.update({ - path: '/', - getParentRoute: () => PostsRouteRoute, -} as any) - -const BlogIndexRoute = BlogIndexImport.update({ - path: '/', - getParentRoute: () => BlogRouteRoute, -} as any) - -const BlogStatsRoute = BlogStatsImport.update({ - path: '/blog/stats', - getParentRoute: () => rootRoute, -} as any) - -const BlogSlugRoute = BlogSlugImport.update({ - path: '/$slug', - getParentRoute: () => BlogRouteRoute, -} as any) - -const PostsPostIdIndexRoute = PostsPostIdIndexImport.update({ - path: '/$postId/', - getParentRoute: () => PostsRouteRoute, -} as any) - -const PostsPostIdDeepRoute = PostsPostIdDeepImport.update({ - path: '/$postId/deep', - getParentRoute: () => PostsRouteRoute, -} as any) - -// Populate the FileRoutesByPath interface - -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/': { - id: '/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof IndexImport - parentRoute: typeof rootRoute - } - '/blog': { - id: '/blog' - path: '/blog' - fullPath: '/blog' - preLoaderRoute: typeof BlogRouteImport - parentRoute: typeof rootRoute - } - '/posts': { - id: '/posts' - path: '/posts' - fullPath: '/posts' - preLoaderRoute: typeof PostsRouteImport - parentRoute: typeof rootRoute - } - '/blog/$slug': { - id: '/blog/$slug' - path: '/$slug' - fullPath: '/blog/$slug' - preLoaderRoute: typeof BlogSlugImport - parentRoute: typeof BlogRouteImport - } - '/blog/stats': { - id: '/blog/stats' - path: '/blog/stats' - fullPath: '/blog/stats' - preLoaderRoute: typeof BlogStatsImport - parentRoute: typeof rootRoute - } - '/blog/': { - id: '/blog/' - path: '/' - fullPath: '/blog/' - preLoaderRoute: typeof BlogIndexImport - parentRoute: typeof BlogRouteImport - } - '/posts/': { - id: '/posts/' - path: '/' - fullPath: '/posts/' - preLoaderRoute: typeof PostsIndexImport - parentRoute: typeof PostsRouteImport - } - '/posts/$postId/deep': { - id: '/posts/$postId/deep' - path: '/$postId/deep' - fullPath: '/posts/$postId/deep' - preLoaderRoute: typeof PostsPostIdDeepImport - parentRoute: typeof PostsRouteImport - } - '/posts/$postId/': { - id: '/posts/$postId/' - path: '/$postId' - fullPath: '/posts/$postId' - preLoaderRoute: typeof PostsPostIdIndexImport - parentRoute: typeof PostsRouteImport - } - } -} - -// Create and export the route tree - -interface BlogRouteRouteChildren { - BlogSlugRoute: typeof BlogSlugRoute - BlogIndexRoute: typeof BlogIndexRoute -} - -const BlogRouteRouteChildren: BlogRouteRouteChildren = { - BlogSlugRoute: BlogSlugRoute, - BlogIndexRoute: BlogIndexRoute, -} - -const BlogRouteRouteWithChildren = BlogRouteRoute._addFileChildren( - BlogRouteRouteChildren, -) - -interface PostsRouteRouteChildren { - PostsIndexRoute: typeof PostsIndexRoute - PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute - PostsPostIdIndexRoute: typeof PostsPostIdIndexRoute -} - -const PostsRouteRouteChildren: PostsRouteRouteChildren = { - PostsIndexRoute: PostsIndexRoute, - PostsPostIdDeepRoute: PostsPostIdDeepRoute, - PostsPostIdIndexRoute: PostsPostIdIndexRoute, -} - -const PostsRouteRouteWithChildren = PostsRouteRoute._addFileChildren( - PostsRouteRouteChildren, -) - -interface FileRoutesByFullPath { - '/': typeof IndexRoute - '/blog': typeof BlogRouteRouteWithChildren - '/posts': typeof PostsRouteRouteWithChildren - '/blog/$slug': typeof BlogSlugRoute - '/blog/stats': typeof BlogStatsRoute - '/blog/': typeof BlogIndexRoute - '/posts/': typeof PostsIndexRoute - '/posts/$postId/deep': typeof PostsPostIdDeepRoute - '/posts/$postId': typeof PostsPostIdIndexRoute -} - -interface FileRoutesByTo { - '/': typeof IndexRoute - '/blog/$slug': typeof BlogSlugRoute - '/blog/stats': typeof BlogStatsRoute - '/blog': typeof BlogIndexRoute - '/posts': typeof PostsIndexRoute - '/posts/$postId/deep': typeof PostsPostIdDeepRoute - '/posts/$postId': typeof PostsPostIdIndexRoute -} - -interface FileRoutesById { - '/': typeof IndexRoute - '/blog': typeof BlogRouteRouteWithChildren - '/posts': typeof PostsRouteRouteWithChildren - '/blog/$slug': typeof BlogSlugRoute - '/blog/stats': typeof BlogStatsRoute - '/blog/': typeof BlogIndexRoute - '/posts/': typeof PostsIndexRoute - '/posts/$postId/deep': typeof PostsPostIdDeepRoute - '/posts/$postId/': typeof PostsPostIdIndexRoute -} - -interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: - | '/' - | '/blog' - | '/posts' - | '/blog/$slug' - | '/blog/stats' - | '/blog/' - | '/posts/' - | '/posts/$postId/deep' - | '/posts/$postId' - fileRoutesByTo: FileRoutesByTo - to: - | '/' - | '/blog/$slug' - | '/blog/stats' - | '/blog' - | '/posts' - | '/posts/$postId/deep' - | '/posts/$postId' - id: - | '/' - | '/blog' - | '/posts' - | '/blog/$slug' - | '/blog/stats' - | '/blog/' - | '/posts/' - | '/posts/$postId/deep' - | '/posts/$postId/' - fileRoutesById: FileRoutesById -} - -interface RootRouteChildren { - IndexRoute: typeof IndexRoute - BlogRouteRoute: typeof BlogRouteRouteWithChildren - PostsRouteRoute: typeof PostsRouteRouteWithChildren - BlogStatsRoute: typeof BlogStatsRoute -} - -const rootRouteChildren: RootRouteChildren = { - IndexRoute: IndexRoute, - BlogRouteRoute: BlogRouteRouteWithChildren, - PostsRouteRoute: PostsRouteRouteWithChildren, - BlogStatsRoute: BlogStatsRoute, -} - -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() - -/* prettier-ignore-end */ - -/* ROUTE_MANIFEST_START -{ - "routes": { - "__root__": { - "filePath": "__root.tsx", - "children": [ - "/", - "/blog", - "/posts", - "/blog/stats" - ] - }, - "/": { - "filePath": "index.tsx" - }, - "/blog": { - "filePath": "blog/route.tsx", - "children": [ - "/blog/$slug", - "/blog/" - ] - }, - "/posts": { - "filePath": "posts/route.tsx", - "children": [ - "/posts/", - "/posts/$postId/deep", - "/posts/$postId/" - ] - }, - "/blog/$slug": { - "filePath": "blog/$slug.tsx", - "parent": "/blog" - }, - "/blog/stats": { - "filePath": "blog_/stats.tsx" - }, - "/blog/": { - "filePath": "blog/index.tsx", - "parent": "/blog" - }, - "/posts/": { - "filePath": "posts/index.tsx", - "parent": "/posts" - }, - "/posts/$postId/deep": { - "filePath": "posts/$postId/deep.tsx", - "parent": "/posts" - }, - "/posts/$postId/": { - "filePath": "posts/$postId/index.tsx", - "parent": "/posts" - } - } -} -ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/no-manifest/routeTree.gen.ts b/packages/router-generator/tests/generator/no-manifest/routeTree.gen.ts deleted file mode 100644 index 60d1f48694..0000000000 --- a/packages/router-generator/tests/generator/no-manifest/routeTree.gen.ts +++ /dev/null @@ -1,72 +0,0 @@ -/* prettier-ignore-start */ - -/* eslint-disable */ - -// @ts-nocheck - -// noinspection JSUnusedGlobalSymbols - -// This file is auto-generated by TanStack Router - -// Import Routes - -import { Route as rootRoute } from './routes/__root' -import { Route as IndexImport } from './routes/index' - -// Create/Update Routes - -const IndexRoute = IndexImport.update({ - path: '/', - getParentRoute: () => rootRoute, -} as any) - -// Populate the FileRoutesByPath interface - -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/': { - id: '/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof IndexImport - parentRoute: typeof rootRoute - } - } -} - -// Create and export the route tree - -interface FileRoutesByFullPath { - '/': typeof IndexRoute -} - -interface FileRoutesByTo { - '/': typeof IndexRoute -} - -interface FileRoutesById { - '/': typeof IndexRoute -} - -interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: '/' - fileRoutesByTo: FileRoutesByTo - to: '/' - id: '/' - fileRoutesById: FileRoutesById -} - -interface RootRouteChildren { - IndexRoute: typeof IndexRoute -} - -const rootRouteChildren: RootRouteChildren = { - IndexRoute: IndexRoute, -} - -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() - -/* prettier-ignore-end */ diff --git a/packages/router-generator/tests/generator/route-groups/routeTree.gen.ts b/packages/router-generator/tests/generator/route-groups/routeTree.gen.ts deleted file mode 100644 index 5234ee5feb..0000000000 --- a/packages/router-generator/tests/generator/route-groups/routeTree.gen.ts +++ /dev/null @@ -1,88 +0,0 @@ -/* prettier-ignore-start */ - -/* eslint-disable */ - -// @ts-nocheck - -// noinspection JSUnusedGlobalSymbols - -// This file is auto-generated by TanStack Router - -// Import Routes - -import { Route as rootRoute } from './routes/__root' -import { Route as fooAsdfbarIdImport } from './routes/(foo)/asdf/(bar)/$id' - -// Create/Update Routes - -const fooAsdfbarIdRoute = fooAsdfbarIdImport.update({ - path: '/asdf/$id', - getParentRoute: () => rootRoute, -} as any) - -// Populate the FileRoutesByPath interface - -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/(foo)/asdf/(bar)/$id': { - id: '/asdf/$id' - path: '/asdf/$id' - fullPath: '/asdf/$id' - preLoaderRoute: typeof fooAsdfbarIdImport - parentRoute: typeof rootRoute - } - } -} - -// Create and export the route tree - -interface FileRoutesByFullPath { - '/asdf/$id': typeof fooAsdfbarIdRoute -} - -interface FileRoutesByTo { - '/asdf/$id': typeof fooAsdfbarIdRoute -} - -interface FileRoutesById { - '/asdf/$id': typeof fooAsdfbarIdRoute -} - -interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: '/asdf/$id' - fileRoutesByTo: FileRoutesByTo - to: '/asdf/$id' - id: '/asdf/$id' - fileRoutesById: FileRoutesById -} - -interface RootRouteChildren { - fooAsdfbarIdRoute: typeof fooAsdfbarIdRoute -} - -const rootRouteChildren: RootRouteChildren = { - fooAsdfbarIdRoute: fooAsdfbarIdRoute, -} - -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() - -/* prettier-ignore-end */ - -/* ROUTE_MANIFEST_START -{ - "routes": { - "__root__": { - "filePath": "__root.tsx", - "children": [ - "/asdf/$id" - ] - }, - "/asdf/$id": { - "filePath": "(foo)/asdf/(bar)/$id.tsx" - } - } -} -ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/single-level/routeTree.gen.ts b/packages/router-generator/tests/generator/single-level/routeTree.gen.ts deleted file mode 100644 index 75ec72d071..0000000000 --- a/packages/router-generator/tests/generator/single-level/routeTree.gen.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* prettier-ignore-start */ - -/* eslint-disable */ - -// @ts-nocheck - -// noinspection JSUnusedGlobalSymbols - -// This file is auto-generated by TanStack Router - -// Import Routes - -import { Route as rootRoute } from './routes/__root' -import { Route as PostsImport } from './routes/posts' -import { Route as IndexImport } from './routes/index' - -// Create/Update Routes - -const PostsRoute = PostsImport.update({ - path: '/posts', - getParentRoute: () => rootRoute, -} as any) - -const IndexRoute = IndexImport.update({ - path: '/', - getParentRoute: () => rootRoute, -} as any) - -// Populate the FileRoutesByPath interface - -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/': { - id: '/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof IndexImport - parentRoute: typeof rootRoute - } - '/posts': { - id: '/posts' - path: '/posts' - fullPath: '/posts' - preLoaderRoute: typeof PostsImport - parentRoute: typeof rootRoute - } - } -} - -// Create and export the route tree - -interface FileRoutesByFullPath { - '/': typeof IndexRoute - '/posts': typeof PostsRoute -} - -interface FileRoutesByTo { - '/': typeof IndexRoute - '/posts': typeof PostsRoute -} - -interface FileRoutesById { - '/': typeof IndexRoute - '/posts': typeof PostsRoute -} - -interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: '/' | '/posts' - fileRoutesByTo: FileRoutesByTo - to: '/' | '/posts' - id: '/' | '/posts' - fileRoutesById: FileRoutesById -} - -interface RootRouteChildren { - IndexRoute: typeof IndexRoute - PostsRoute: typeof PostsRoute -} - -const rootRouteChildren: RootRouteChildren = { - IndexRoute: IndexRoute, - PostsRoute: PostsRoute, -} - -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() - -/* prettier-ignore-end */ - -/* ROUTE_MANIFEST_START -{ - "routes": { - "__root__": { - "filePath": "__root.tsx", - "children": [ - "/", - "/posts" - ] - }, - "/": { - "filePath": "index.tsx" - }, - "/posts": { - "filePath": "posts.tsx" - } - } -} -ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.gen.ts b/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.gen.ts deleted file mode 100644 index 749d5a95c4..0000000000 --- a/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.gen.ts +++ /dev/null @@ -1,166 +0,0 @@ -/* prettier-ignore-start */ - -/* eslint-disable */ - -// @ts-nocheck - -// noinspection JSUnusedGlobalSymbols - -// This file is auto-generated by TanStack Router - -// Import Routes - -import { Route as rootRoute } from './routes/__root' -import { Route as IndexImport } from './routes/index' -import { Route as FooBarImport } from './routes/foo/bar' -import { Route as fooBarDetailsImport } from './routes/foo/bar/details' -import { Route as fooBarHomeImport } from './routes/foo/bar/home' - -// Create/Update Routes - -const IndexRoute = IndexImport.update({ - path: '/', - getParentRoute: () => rootRoute, -} as any) - -const FooBarRoute = FooBarImport.update({ - path: '/foo/bar', - getParentRoute: () => rootRoute, -} as any) - -const fooBarDetailsRoute = fooBarDetailsImport.update({ - path: '/$id', - getParentRoute: () => FooBarRoute, -} as any) - -const fooBarHomeRoute = fooBarHomeImport.update({ - path: '/', - getParentRoute: () => FooBarRoute, -} as any) - -// Populate the FileRoutesByPath interface - -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/': { - id: '/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof IndexImport - parentRoute: typeof rootRoute - } - '/foo/bar': { - id: '/foo/bar' - path: '/foo/bar' - fullPath: '/foo/bar' - preLoaderRoute: typeof FooBarImport - parentRoute: typeof rootRoute - } - '/foo/bar/': { - id: '/foo/bar/' - path: '/' - fullPath: '/foo/bar/' - preLoaderRoute: typeof fooBarHomeImport - parentRoute: typeof FooBarImport - } - '/foo/bar/$id': { - id: '/foo/bar/$id' - path: '/$id' - fullPath: '/foo/bar/$id' - preLoaderRoute: typeof fooBarDetailsImport - parentRoute: typeof FooBarImport - } - } -} - -// Create and export the route tree - -interface FooBarRouteChildren { - fooBarHomeRoute: typeof fooBarHomeRoute - fooBarDetailsRoute: typeof fooBarDetailsRoute -} - -const FooBarRouteChildren: FooBarRouteChildren = { - fooBarHomeRoute: fooBarHomeRoute, - fooBarDetailsRoute: fooBarDetailsRoute, -} - -const FooBarRouteWithChildren = - FooBarRoute._addFileChildren(FooBarRouteChildren) - -interface FileRoutesByFullPath { - '/': typeof IndexRoute - '/foo/bar': typeof FooBarRouteWithChildren - '/foo/bar/': typeof fooBarHomeRoute - '/foo/bar/$id': typeof fooBarDetailsRoute -} - -interface FileRoutesByTo { - '/': typeof IndexRoute - '/foo/bar': typeof fooBarHomeRoute - '/foo/bar/$id': typeof fooBarDetailsRoute -} - -interface FileRoutesById { - '/': typeof IndexRoute - '/foo/bar': typeof FooBarRouteWithChildren - '/foo/bar/': typeof fooBarHomeRoute - '/foo/bar/$id': typeof fooBarDetailsRoute -} - -interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: '/' | '/foo/bar' | '/foo/bar/' | '/foo/bar/$id' - fileRoutesByTo: FileRoutesByTo - to: '/' | '/foo/bar' | '/foo/bar/$id' - id: '/' | '/foo/bar' | '/foo/bar/' | '/foo/bar/$id' - fileRoutesById: FileRoutesById -} - -interface RootRouteChildren { - IndexRoute: typeof IndexRoute - FooBarRoute: typeof FooBarRouteWithChildren -} - -const rootRouteChildren: RootRouteChildren = { - IndexRoute: IndexRoute, - FooBarRoute: FooBarRouteWithChildren, -} - -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() - -/* prettier-ignore-end */ - -/* ROUTE_MANIFEST_START -{ - "routes": { - "__root__": { - "filePath": "__root.tsx", - "children": [ - "/", - "/foo/bar" - ] - }, - "/": { - "filePath": "index.tsx" - }, - "/foo/bar": { - "filePath": "foo/bar.tsx", - "children": [ - "/foo/bar/", - "/foo/bar/$id" - ] - }, - "/foo/bar/": { - "filePath": "foo/bar/home.tsx", - "parent": "/foo/bar" - }, - "/foo/bar/$id": { - "filePath": "foo/bar/details.tsx", - "parent": "/foo/bar" - } - } -} -ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/virtual/routeTree.gen.ts b/packages/router-generator/tests/generator/virtual/routeTree.gen.ts deleted file mode 100644 index 57ec5c5ea2..0000000000 --- a/packages/router-generator/tests/generator/virtual/routeTree.gen.ts +++ /dev/null @@ -1,354 +0,0 @@ -/* prettier-ignore-start */ - -/* eslint-disable */ - -// @ts-nocheck - -// noinspection JSUnusedGlobalSymbols - -// This file is auto-generated by TanStack Router - -// Import Routes - -import { Route as rootRoute } from './routes/root' -import { Route as layoutImport } from './routes/layout' -import { Route as indexImport } from './routes/index' -import { Route as dbDashboardImport } from './routes/db/dashboard' -import { Route as HelloIndexImport } from './routes/subtree/index' -import { Route as dbDashboardInvoicesImport } from './routes/db/dashboard-invoices' -import { Route as dbDashboardIndexImport } from './routes/db/dashboard-index' -import { Route as HelloFooIndexImport } from './routes/subtree/foo/index' -import { Route as HelloFooIdImport } from './routes/subtree/foo/$id' -import { Route as dbInvoiceDetailImport } from './routes/db/invoice-detail' -import { Route as dbInvoicesIndexImport } from './routes/db/invoices-index' - -// Create/Update Routes - -const layoutRoute = layoutImport.update({ - id: '/_layout', - getParentRoute: () => rootRoute, -} as any) - -const indexRoute = indexImport.update({ - path: '/', - getParentRoute: () => rootRoute, -} as any) - -const dbDashboardRoute = dbDashboardImport.update({ - path: '/dashboard', - getParentRoute: () => layoutRoute, -} as any) - -const HelloIndexRoute = HelloIndexImport.update({ - path: '/hello/', - getParentRoute: () => layoutRoute, -} as any) - -const dbDashboardInvoicesRoute = dbDashboardInvoicesImport.update({ - path: '/invoices', - getParentRoute: () => dbDashboardRoute, -} as any) - -const dbDashboardIndexRoute = dbDashboardIndexImport.update({ - path: '/', - getParentRoute: () => dbDashboardRoute, -} as any) - -const HelloFooIndexRoute = HelloFooIndexImport.update({ - path: '/hello/foo/', - getParentRoute: () => layoutRoute, -} as any) - -const HelloFooIdRoute = HelloFooIdImport.update({ - path: '/hello/foo/$id', - getParentRoute: () => layoutRoute, -} as any) - -const dbInvoiceDetailRoute = dbInvoiceDetailImport.update({ - path: '/$id', - getParentRoute: () => dbDashboardInvoicesRoute, -} as any) - -const dbInvoicesIndexRoute = dbInvoicesIndexImport.update({ - path: '/', - getParentRoute: () => dbDashboardInvoicesRoute, -} as any) - -// Populate the FileRoutesByPath interface - -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/': { - id: '/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof indexImport - parentRoute: typeof rootRoute - } - '/_layout': { - id: '/_layout' - path: '' - fullPath: '' - preLoaderRoute: typeof layoutImport - parentRoute: typeof rootRoute - } - '/_layout/dashboard': { - id: '/_layout/dashboard' - path: '/dashboard' - fullPath: '/dashboard' - preLoaderRoute: typeof dbDashboardImport - parentRoute: typeof layoutImport - } - '/_layout/dashboard/': { - id: '/_layout/dashboard/' - path: '/' - fullPath: '/dashboard/' - preLoaderRoute: typeof dbDashboardIndexImport - parentRoute: typeof dbDashboardImport - } - '/_layout/dashboard/invoices': { - id: '/_layout/dashboard/invoices' - path: '/invoices' - fullPath: '/dashboard/invoices' - preLoaderRoute: typeof dbDashboardInvoicesImport - parentRoute: typeof dbDashboardImport - } - '/_layout/hello/': { - id: '/_layout/hello/' - path: '/hello' - fullPath: '/hello' - preLoaderRoute: typeof HelloIndexImport - parentRoute: typeof layoutImport - } - '/_layout/dashboard/invoices/': { - id: '/_layout/dashboard/invoices/' - path: '/' - fullPath: '/dashboard/invoices/' - preLoaderRoute: typeof dbInvoicesIndexImport - parentRoute: typeof dbDashboardInvoicesImport - } - '/_layout/dashboard/invoices/$id': { - id: '/_layout/dashboard/invoices/$id' - path: '/$id' - fullPath: '/dashboard/invoices/$id' - preLoaderRoute: typeof dbInvoiceDetailImport - parentRoute: typeof dbDashboardInvoicesImport - } - '/_layout/hello/foo/$id': { - id: '/_layout/hello/foo/$id' - path: '/hello/foo/$id' - fullPath: '/hello/foo/$id' - preLoaderRoute: typeof HelloFooIdImport - parentRoute: typeof layoutImport - } - '/_layout/hello/foo/': { - id: '/_layout/hello/foo/' - path: '/hello/foo' - fullPath: '/hello/foo' - preLoaderRoute: typeof HelloFooIndexImport - parentRoute: typeof layoutImport - } - } -} - -// Create and export the route tree - -interface dbDashboardInvoicesRouteChildren { - dbInvoicesIndexRoute: typeof dbInvoicesIndexRoute - dbInvoiceDetailRoute: typeof dbInvoiceDetailRoute -} - -const dbDashboardInvoicesRouteChildren: dbDashboardInvoicesRouteChildren = { - dbInvoicesIndexRoute: dbInvoicesIndexRoute, - dbInvoiceDetailRoute: dbInvoiceDetailRoute, -} - -const dbDashboardInvoicesRouteWithChildren = - dbDashboardInvoicesRoute._addFileChildren(dbDashboardInvoicesRouteChildren) - -interface dbDashboardRouteChildren { - dbDashboardIndexRoute: typeof dbDashboardIndexRoute - dbDashboardInvoicesRoute: typeof dbDashboardInvoicesRouteWithChildren -} - -const dbDashboardRouteChildren: dbDashboardRouteChildren = { - dbDashboardIndexRoute: dbDashboardIndexRoute, - dbDashboardInvoicesRoute: dbDashboardInvoicesRouteWithChildren, -} - -const dbDashboardRouteWithChildren = dbDashboardRoute._addFileChildren( - dbDashboardRouteChildren, -) - -interface layoutRouteChildren { - dbDashboardRoute: typeof dbDashboardRouteWithChildren - HelloIndexRoute: typeof HelloIndexRoute - HelloFooIdRoute: typeof HelloFooIdRoute - HelloFooIndexRoute: typeof HelloFooIndexRoute -} - -const layoutRouteChildren: layoutRouteChildren = { - dbDashboardRoute: dbDashboardRouteWithChildren, - HelloIndexRoute: HelloIndexRoute, - HelloFooIdRoute: HelloFooIdRoute, - HelloFooIndexRoute: HelloFooIndexRoute, -} - -const layoutRouteWithChildren = - layoutRoute._addFileChildren(layoutRouteChildren) - -interface FileRoutesByFullPath { - '/': typeof indexRoute - '': typeof layoutRouteWithChildren - '/dashboard': typeof dbDashboardRouteWithChildren - '/dashboard/': typeof dbDashboardIndexRoute - '/dashboard/invoices': typeof dbDashboardInvoicesRouteWithChildren - '/hello': typeof HelloIndexRoute - '/dashboard/invoices/': typeof dbInvoicesIndexRoute - '/dashboard/invoices/$id': typeof dbInvoiceDetailRoute - '/hello/foo/$id': typeof HelloFooIdRoute - '/hello/foo': typeof HelloFooIndexRoute -} - -interface FileRoutesByTo { - '/': typeof indexRoute - '': typeof layoutRouteWithChildren - '/dashboard': typeof dbDashboardIndexRoute - '/hello': typeof HelloIndexRoute - '/dashboard/invoices': typeof dbInvoicesIndexRoute - '/dashboard/invoices/$id': typeof dbInvoiceDetailRoute - '/hello/foo/$id': typeof HelloFooIdRoute - '/hello/foo': typeof HelloFooIndexRoute -} - -interface FileRoutesById { - '/': typeof indexRoute - '/_layout': typeof layoutRouteWithChildren - '/_layout/dashboard': typeof dbDashboardRouteWithChildren - '/_layout/dashboard/': typeof dbDashboardIndexRoute - '/_layout/dashboard/invoices': typeof dbDashboardInvoicesRouteWithChildren - '/_layout/hello/': typeof HelloIndexRoute - '/_layout/dashboard/invoices/': typeof dbInvoicesIndexRoute - '/_layout/dashboard/invoices/$id': typeof dbInvoiceDetailRoute - '/_layout/hello/foo/$id': typeof HelloFooIdRoute - '/_layout/hello/foo/': typeof HelloFooIndexRoute -} - -interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: - | '/' - | '' - | '/dashboard' - | '/dashboard/' - | '/dashboard/invoices' - | '/hello' - | '/dashboard/invoices/' - | '/dashboard/invoices/$id' - | '/hello/foo/$id' - | '/hello/foo' - fileRoutesByTo: FileRoutesByTo - to: - | '/' - | '' - | '/dashboard' - | '/hello' - | '/dashboard/invoices' - | '/dashboard/invoices/$id' - | '/hello/foo/$id' - | '/hello/foo' - id: - | '/' - | '/_layout' - | '/_layout/dashboard' - | '/_layout/dashboard/' - | '/_layout/dashboard/invoices' - | '/_layout/hello/' - | '/_layout/dashboard/invoices/' - | '/_layout/dashboard/invoices/$id' - | '/_layout/hello/foo/$id' - | '/_layout/hello/foo/' - fileRoutesById: FileRoutesById -} - -interface RootRouteChildren { - indexRoute: typeof indexRoute - layoutRoute: typeof layoutRouteWithChildren -} - -const rootRouteChildren: RootRouteChildren = { - indexRoute: indexRoute, - layoutRoute: layoutRouteWithChildren, -} - -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() - -/* prettier-ignore-end */ - -/* ROUTE_MANIFEST_START -{ - "routes": { - "__root__": { - "filePath": "root.tsx", - "children": [ - "/", - "/_layout" - ] - }, - "/": { - "filePath": "index.tsx" - }, - "/_layout": { - "filePath": "layout.tsx", - "children": [ - "/_layout/dashboard", - "/_layout/hello/", - "/_layout/hello/foo/$id", - "/_layout/hello/foo/" - ] - }, - "/_layout/dashboard": { - "filePath": "db/dashboard.tsx", - "parent": "/_layout", - "children": [ - "/_layout/dashboard/", - "/_layout/dashboard/invoices" - ] - }, - "/_layout/dashboard/": { - "filePath": "db/dashboard-index.tsx", - "parent": "/_layout/dashboard" - }, - "/_layout/dashboard/invoices": { - "filePath": "db/dashboard-invoices.tsx", - "parent": "/_layout/dashboard", - "children": [ - "/_layout/dashboard/invoices/", - "/_layout/dashboard/invoices/$id" - ] - }, - "/_layout/hello/": { - "filePath": "subtree/index.tsx", - "parent": "/_layout" - }, - "/_layout/dashboard/invoices/": { - "filePath": "db/invoices-index.tsx", - "parent": "/_layout/dashboard/invoices" - }, - "/_layout/dashboard/invoices/$id": { - "filePath": "db/invoice-detail.tsx", - "parent": "/_layout/dashboard/invoices" - }, - "/_layout/hello/foo/$id": { - "filePath": "subtree/foo/$id.tsx", - "parent": "/_layout" - }, - "/_layout/hello/foo/": { - "filePath": "subtree/foo/index.tsx", - "parent": "/_layout" - } - } -} -ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tsconfig.json b/packages/router-generator/tsconfig.json index 4c0c7257cb..604fde5556 100644 --- a/packages/router-generator/tsconfig.json +++ b/packages/router-generator/tsconfig.json @@ -1,8 +1,5 @@ { "extends": "../../tsconfig.json", - "compilerOptions": { - "jsx": "react-jsx", - "module": "ESNext" - }, - "include": ["src", "vite.config.ts", "tests"] + "include": ["src", "vite.config.ts", "tests"], + "exclude": ["tests/generator/**/**"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3cac5aa2a..7a809778c7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1915,6 +1915,9 @@ importers: '@tanstack/react-store': specifier: ^0.5.5 version: 0.5.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/router-generator': + specifier: workspace:* + version: link:../router-generator tiny-invariant: specifier: ^1.3.3 version: 1.3.3 @@ -2032,10 +2035,6 @@ importers: zod: specifier: ^3.23.8 version: 3.23.8 - devDependencies: - '@tanstack/react-router': - specifier: workspace:* - version: link:../react-router packages/router-plugin: dependencies: From 0c04462f30173784bc5d4be4a2a00098b8842bc4 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Fri, 6 Sep 2024 17:26:03 +0000 Subject: [PATCH 061/154] release: v1.56.2 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic-virtual-file-based/package.json | 6 +++--- .../basic-virtual-inside-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 47 files changed, 122 insertions(+), 122 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 7fbf14653a..145c5d7129 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 9cb6d48f7a..13c191b0c0 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 873f7d7cc2..0ffc1ea98a 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 1c9f660076..4b9220d0ab 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 2dace1a107..89b32c79e7 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,9 +12,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index d3e8fd48b5..c443d383b6 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 92d5b13040..90aa324991 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", - "@tanstack/start": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", + "@tanstack/start": "^1.56.2", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 509bee15ee..6ae9ff991a 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", - "@tanstack/start": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", + "@tanstack/start": "^1.56.2", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 64b82746ad..e78216155d 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index eb71231523..30346abdcf 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 1223ac6740..3ef106e90b 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index e857e61c90..d49f55491e 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index c63fbecfe4..f47e38ada1 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index f1a181e5ac..85fbd1fb53 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index b751207d0d..7a0e108af8 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 7ff80503e7..38d4cb328f 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 442b325d89..8dbd69efd3 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index ad9509494f..80317fc756 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index c5c92e4527..4a03581df4 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 2ab1a22977..9479156c51 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 7fef2d0c73..db2f30d0c7 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/router-plugin": "^1.56.2", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.5.3" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index d2a0a1dacf..ae4768087f 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/router-plugin": "^1.56.2", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 537426a62b..77a45412aa 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 4b46413b65..0c08960a27 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", + "@tanstack/react-router": "^1.56.2", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/router-devtools": "^1.56.2", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 1ab157c125..8d66804f71 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", - "@tanstack/router-zod-adapter": "^1.56.1", - "@tanstack/router-valibot-adapter": "^1.56.1", - "@tanstack/router-arktype-adapter": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", + "@tanstack/router-zod-adapter": "^1.56.2", + "@tanstack/router-valibot-adapter": "^1.56.2", + "@tanstack/router-arktype-adapter": "^1.56.2", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index ad6f44a7a2..512092058a 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", - "@tanstack/start": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", + "@tanstack/start": "^1.56.2", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index e0ed1453fc..f55594bf3e 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/start": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/start": "^1.56.2", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index adbd1afbcb..8ec2f7fb57 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.1", - "@tanstack/react-router-with-query": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", - "@tanstack/start": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/react-router-with-query": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", + "@tanstack/start": "^1.56.2", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 5662b607e0..ccd606327d 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", - "@tanstack/start": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", + "@tanstack/start": "^1.56.2", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index c1ed4e5bf1..3c4e8f0ed8 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", - "@tanstack/start": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", + "@tanstack/start": "^1.56.2", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index e5007662d7..7a222d0b8a 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", - "@tanstack/start": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", + "@tanstack/start": "^1.56.2", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index e35b1b2582..b45e2e22dd 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.1", - "@tanstack/react-router-with-query": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", - "@tanstack/start": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/react-router-with-query": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", + "@tanstack/start": "^1.56.2", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 2f463cc2d4..ba873bf443 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.1", - "@tanstack/react-router-with-query": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", - "@tanstack/start": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/react-router-with-query": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", + "@tanstack/start": "^1.56.2", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index d76245b295..0dbfde8e78 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index c3c673c106..6480446006 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 3f4615e798..25e7e8d15a 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/router-plugin": "^1.56.1", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 92bc922ba4..5ff1f31c91 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.56.1", + "version": "1.56.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 443bc40dfd..bc2e0b580b 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.56.1", + "version": "1.56.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index b8dfc9f4ef..f86b25552f 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.56.1", + "version": "1.56.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 7be16d477b..310ca34936 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.56.1", + "version": "1.56.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 0a482e5024..ad8a023e34 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.56.1", + "version": "1.56.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index bdf6a9aaca..1814979c47 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.56.1", + "version": "1.56.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 3459a91c72..d05acf597d 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.56.1", + "version": "1.56.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 342813dc81..6d92d8b411 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.56.1", + "version": "1.56.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 03340c6522..f6281acca2 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.56.1", + "version": "1.56.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 4cd82bb2f6..a031176975 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.56.1", + "version": "1.56.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index e1762604e9..e1e278794c 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.56.1", + "version": "1.56.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From da78bd9fa799bdd879d24a8e932ffdf08ed05d2a Mon Sep 17 00:00:00 2001 From: Zach <86675944+zwgnr@users.noreply.github.com> Date: Fri, 6 Sep 2024 20:51:43 -0400 Subject: [PATCH 062/154] chore(examples): update @clerk/tanstack-start to 0.3.5 (#2274) * update clerk auth version * ci: apply automated fixes * style: eslint fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> --- .../app/components/DefaultCatchBoundary.tsx | 2 +- .../start-clerk-basic/app/routes/__root.tsx | 3 +- .../start-clerk-basic/app/routes/_authed.tsx | 2 +- examples/react/start-clerk-basic/app/ssr.tsx | 2 +- examples/react/start-clerk-basic/package.json | 2 +- pnpm-lock.yaml | 91 ++++++++++--------- 6 files changed, 52 insertions(+), 50 deletions(-) diff --git a/examples/react/start-clerk-basic/app/components/DefaultCatchBoundary.tsx b/examples/react/start-clerk-basic/app/components/DefaultCatchBoundary.tsx index f0ce51dc57..15f316681c 100644 --- a/examples/react/start-clerk-basic/app/components/DefaultCatchBoundary.tsx +++ b/examples/react/start-clerk-basic/app/components/DefaultCatchBoundary.tsx @@ -1,11 +1,11 @@ import { ErrorComponent, - ErrorComponentProps, Link, rootRouteId, useMatch, useRouter, } from '@tanstack/react-router' +import type { ErrorComponentProps } from '@tanstack/react-router' export function DefaultCatchBoundary({ error }: ErrorComponentProps) { const router = useRouter() diff --git a/examples/react/start-clerk-basic/app/routes/__root.tsx b/examples/react/start-clerk-basic/app/routes/__root.tsx index 2c4e4d9ef2..73bed272ca 100644 --- a/examples/react/start-clerk-basic/app/routes/__root.tsx +++ b/examples/react/start-clerk-basic/app/routes/__root.tsx @@ -1,3 +1,4 @@ +/// import { Link, Outlet, @@ -27,7 +28,7 @@ import { NotFound } from '~/components/NotFound.js' import appCss from '~/styles/app.css?url' const fetchClerkAuth = createServerFn('GET', async (_, ctx) => { - const user = await getAuth(ctx) + const user = await getAuth(ctx.request) return { user, diff --git a/examples/react/start-clerk-basic/app/routes/_authed.tsx b/examples/react/start-clerk-basic/app/routes/_authed.tsx index 0ab5eb05c8..9f133c47a0 100644 --- a/examples/react/start-clerk-basic/app/routes/_authed.tsx +++ b/examples/react/start-clerk-basic/app/routes/_authed.tsx @@ -11,7 +11,7 @@ export const Route = createFileRoute('/_authed')({ if (error.message === 'Not authenticated') { return (
- +
) } diff --git a/examples/react/start-clerk-basic/app/ssr.tsx b/examples/react/start-clerk-basic/app/ssr.tsx index 12446ca2c7..73d185feed 100644 --- a/examples/react/start-clerk-basic/app/ssr.tsx +++ b/examples/react/start-clerk-basic/app/ssr.tsx @@ -3,8 +3,8 @@ import { defaultStreamHandler, } from '@tanstack/start/server' import { getRouterManifest } from '@tanstack/start/router-manifest' -import { createRouter } from './router' import { createClerkHandler } from '@clerk/tanstack-start/server' +import { createRouter } from './router' const handler = createStartHandler({ createRouter, diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 7a222d0b8a..900f20ab4a 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -12,7 +12,7 @@ "test:e2e": "exit 0; playwright test --project=chromium" }, "dependencies": { - "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997", + "@clerk/tanstack-start": "0.3.5", "@tanstack/react-router": "^1.56.2", "@tanstack/router-devtools": "^1.56.2", "@tanstack/router-plugin": "^1.56.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a809778c7..45719a1c6e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,7 +64,7 @@ importers: version: 25.0.0 nx: specifier: ^19.5.6 - version: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + version: 19.5.6(@swc/core@1.7.6) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -1494,8 +1494,8 @@ importers: examples/react/start-clerk-basic: dependencies: '@clerk/tanstack-start': - specifier: 0.3.0-snapshot.vdf04997 - version: 0.3.0-snapshot.vdf04997(@tanstack/react-router@packages+react-router)(@tanstack/start@packages+start)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 0.3.5 + version: 0.3.5(@tanstack/react-router@packages+react-router)(@tanstack/start@packages+start)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1577,7 +1577,7 @@ importers: dependencies: '@convex-dev/react-query': specifier: 0.0.0-alpha.5 - version: 0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.15.0(@clerk/clerk-react@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@tanstack/react-query': specifier: ^5.51.21 version: 5.51.21(react@18.3.1) @@ -1607,7 +1607,7 @@ importers: version: 8.2.2 convex: specifier: ^1.15.0 - version: 1.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.15.0(@clerk/clerk-react@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) isbot: specifier: ^5.1.14 version: 5.1.14 @@ -2097,7 +2097,7 @@ importers: version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1) + version: 5.93.0(@swc/core@1.7.6)(esbuild@0.23.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2400,19 +2400,19 @@ packages: '@bundled-es-modules/tough-cookie@0.1.6': resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} - '@clerk/backend@1.7.0-snapshot.vdf04997': - resolution: {integrity: sha512-yVKKF4H4pPXlH4xGuWhqQl8L8UfACQRyi6Bo0/n4SPI8xhfAUbI+xXgl+0ewa76ExdmAYqOpQ8Nokwf0LnYoaw==} + '@clerk/backend@1.9.2': + resolution: {integrity: sha512-8vCYux8Xbu5TQ2iq9tYuDnNhv3K/XhZ+34QJG+n4ZX4w4FfTTuzwb5OylcmP69vPvYybhoQfjpK57kBOW22deg==} engines: {node: '>=18.17.0'} - '@clerk/clerk-react@5.4.2-snapshot.vdf04997': - resolution: {integrity: sha512-QiWbY5uvwI/90IdhKviotiPOSaezWSivoEotzh3gawlRtR+InLur1JTfRHqAonqq5WGejAet3R+3DKQrC0lw6Q==} + '@clerk/clerk-react@5.7.0': + resolution: {integrity: sha512-VCYj/Qhm4P5u0A3X1M+yycod8cz8flFwtpnI8+ajGUDmMdel9iuR5ix01cgsHfyPuamfiuP1a4xNg7F0d+2P7Q==} engines: {node: '>=18.17.0'} peerDependencies: react: '>=18 || >=19.0.0-beta' react-dom: '>=18 || >=19.0.0-beta' - '@clerk/shared@2.5.2-snapshot.vdf04997': - resolution: {integrity: sha512-JokAhs1CcZ4UDQwJJCoSWPSqy/gUV7N8aRrgp4XkUiAiF7jeUrxvD4C9FNXjAlfn01utjmk3HuCQ1FyRMaB9Rg==} + '@clerk/shared@2.6.2': + resolution: {integrity: sha512-RkrNknIr98GPu3srXLhjJViC1Mom1gUsRMNnf1deibX2yvRnndloZGnFb0qxf+pFL/NCkKd3nSHtK3eCJQrVYQ==} engines: {node: '>=18.17.0'} peerDependencies: react: '>=18 || >=19.0.0-beta' @@ -2423,8 +2423,8 @@ packages: react-dom: optional: true - '@clerk/tanstack-start@0.3.0-snapshot.vdf04997': - resolution: {integrity: sha512-MR6uTPn2gUcQXd4iwVQnTz1C5IAPXbT96bRqjFyxqWWklmMCL55Z+AwqdkYWslRxrNjqWaS26VPZrZ3upOsMcg==} + '@clerk/tanstack-start@0.3.5': + resolution: {integrity: sha512-Rctqajkvy1MC6bjvS6+6wvA0ah1mk0CJq92QXK2ib4uoBH4p0BAlH5JhlinAKD1ab3udlHkFitshEDgKjUP3KA==} engines: {node: '>=18.17.0'} peerDependencies: '@tanstack/react-router': workspace:* @@ -2432,8 +2432,8 @@ packages: react: '>=18 || >=19.0.0-beta' react-dom: '>=18 || >=19.0.0-beta' - '@clerk/types@4.14.0-snapshot.vdf04997': - resolution: {integrity: sha512-X5OKm/AqWkdjPbTgP+0orYUB3Fa7Cky65LPhMN1Es5ATgQKxHgIfA5tetBdazqeK7kUL3eejSPQH/c03tksiaw==} + '@clerk/types@4.19.0': + resolution: {integrity: sha512-bDN/nRUD5PFCehQ+Kjdcft0I3b9CIyCcY3OBNDSc1L6RQhlXH+J48EtaP/cbRdslb83LJiBPQ2i/gV4VgblzwA==} engines: {node: '>=18.17.0'} '@cloudflare/kv-asset-handler@0.3.2': @@ -9275,10 +9275,10 @@ snapshots: '@types/tough-cookie': 4.0.5 tough-cookie: 4.1.4 - '@clerk/backend@1.7.0-snapshot.vdf04997(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/backend@1.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@clerk/shared': 2.5.2-snapshot.vdf04997(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/types': 4.14.0-snapshot.vdf04997 + '@clerk/shared': 2.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/types': 4.19.0 cookie: 0.5.0 snakecase-keys: 5.4.4 tslib: 2.4.1 @@ -9286,17 +9286,17 @@ snapshots: - react - react-dom - '@clerk/clerk-react@5.4.2-snapshot.vdf04997(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/clerk-react@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@clerk/shared': 2.5.2-snapshot.vdf04997(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/types': 4.14.0-snapshot.vdf04997 + '@clerk/shared': 2.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/types': 4.19.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.4.1 - '@clerk/shared@2.5.2-snapshot.vdf04997(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/shared@2.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@clerk/types': 4.14.0-snapshot.vdf04997 + '@clerk/types': 4.19.0 glob-to-regexp: 0.4.1 js-cookie: 3.0.5 std-env: 3.7.0 @@ -9305,19 +9305,19 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@clerk/tanstack-start@0.3.0-snapshot.vdf04997(@tanstack/react-router@packages+react-router)(@tanstack/start@packages+start)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/tanstack-start@0.3.5(@tanstack/react-router@packages+react-router)(@tanstack/start@packages+start)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@clerk/backend': 1.7.0-snapshot.vdf04997(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/clerk-react': 5.4.2-snapshot.vdf04997(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/shared': 2.5.2-snapshot.vdf04997(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/types': 4.14.0-snapshot.vdf04997 + '@clerk/backend': 1.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/clerk-react': 5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/shared': 2.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/types': 4.19.0 '@tanstack/react-router': link:packages/react-router '@tanstack/start': link:packages/start react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.4.1 - '@clerk/types@4.14.0-snapshot.vdf04997': + '@clerk/types@4.19.0': dependencies: csstype: 3.1.1 @@ -9341,10 +9341,10 @@ snapshots: '@types/conventional-commits-parser': 5.0.0 chalk: 5.3.0 - '@convex-dev/react-query@0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@convex-dev/react-query@0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.15.0(@clerk/clerk-react@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@tanstack/react-query': 5.51.21(react@18.3.1) - convex: 1.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + convex: 1.15.0(@clerk/clerk-react@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dabh/diagnostics@2.0.3': dependencies: @@ -10054,9 +10054,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12))': + '@nrwl/tao@19.5.6(@swc/core@1.7.6)': dependencies: - nx: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + nx: 19.5.6(@swc/core@1.7.6) tslib: 2.7.0 transitivePeerDependencies: - '@swc-node/register' @@ -12170,12 +12170,13 @@ snapshots: convert-source-map@2.0.0: {} - convex@1.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + convex@1.15.0(@clerk/clerk-react@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: esbuild: 0.17.19 jwt-decode: 3.1.2 prettier: 3.2.5 optionalDependencies: + '@clerk/clerk-react': 5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -14280,10 +14281,10 @@ snapshots: nwsapi@2.2.12: {} - nx@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)): + nx@19.5.6(@swc/core@1.7.6): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + '@nrwl/tao': 19.5.6(@swc/core@1.7.6) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -15441,14 +15442,14 @@ snapshots: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.23.1 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.6)(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.23.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1) + webpack: 5.93.0(@swc/core@1.7.6)(esbuild@0.23.1) optionalDependencies: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.23.1 @@ -16074,7 +16075,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -16097,15 +16098,17 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4): + webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.23.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -16128,11 +16131,9 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6)(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.23.1)) watchpack: 2.4.1 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild From 89f920941be9b5834c1dbb18c82b197caa358d5c Mon Sep 17 00:00:00 2001 From: ridwansameer <122685783+ridwansameer@users.noreply.github.com> Date: Sat, 7 Sep 2024 11:13:00 +0800 Subject: [PATCH 063/154] chore(start): add Start example with supabase for auth (#2277) * Example: Add Supabase Auth example * Docs: Add Supabase auth to docs config * Fix: Remove extra files and rename supabase * Fix: remove comment * ci: apply automated fixes * Refactor: Rename supabase client to not violate react hook rules --------- Co-authored-by: Ridwan Sameer Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> --- docs/config.json | 4 + examples/react/start-supabase-basic/.env | 2 + .../react/start-supabase-basic/.gitignore | 3 + .../react/start-supabase-basic/app.config.ts | 3 + .../react/start-supabase-basic/app/client.tsx | 8 + .../app/components/Auth.tsx | 57 ++++ .../app/components/DefaultCatchBoundary.tsx | 55 ++++ .../app/components/Login.tsx | 68 +++++ .../app/components/NotFound.tsx | 25 ++ .../app/hooks/useMutation.ts | 44 +++ .../start-supabase-basic/app/routeTree.gen.ts | 283 ++++++++++++++++++ .../react/start-supabase-basic/app/router.tsx | 17 ++ .../app/routes/__root.tsx | 143 +++++++++ .../app/routes/_authed.tsx | 42 +++ .../app/routes/_authed/posts.$postId.tsx | 28 ++ .../app/routes/_authed/posts.index.tsx | 9 + .../app/routes/_authed/posts.tsx | 38 +++ .../start-supabase-basic/app/routes/index.tsx | 13 + .../start-supabase-basic/app/routes/login.tsx | 10 + .../app/routes/logout.tsx | 24 ++ .../app/routes/signup.tsx | 63 ++++ .../react/start-supabase-basic/app/ssr.tsx | 13 + .../start-supabase-basic/app/styles/app.css | 14 + .../start-supabase-basic/app/utils/posts.ts | 33 ++ .../start-supabase-basic/app/utils/seo.ts | 33 ++ .../app/utils/supabase.ts | 25 ++ .../react/start-supabase-basic/package.json | 35 +++ .../start-supabase-basic/postcss.config.js | 7 + .../start-supabase-basic/tailwind.config.js | 8 + .../start-supabase-basic/tailwind.config.ts | 9 + .../react/start-supabase-basic/tsconfig.json | 22 ++ pnpm-lock.yaml | 229 +++++++++++++- 32 files changed, 1360 insertions(+), 7 deletions(-) create mode 100644 examples/react/start-supabase-basic/.env create mode 100644 examples/react/start-supabase-basic/.gitignore create mode 100644 examples/react/start-supabase-basic/app.config.ts create mode 100644 examples/react/start-supabase-basic/app/client.tsx create mode 100644 examples/react/start-supabase-basic/app/components/Auth.tsx create mode 100644 examples/react/start-supabase-basic/app/components/DefaultCatchBoundary.tsx create mode 100644 examples/react/start-supabase-basic/app/components/Login.tsx create mode 100644 examples/react/start-supabase-basic/app/components/NotFound.tsx create mode 100644 examples/react/start-supabase-basic/app/hooks/useMutation.ts create mode 100644 examples/react/start-supabase-basic/app/routeTree.gen.ts create mode 100644 examples/react/start-supabase-basic/app/router.tsx create mode 100644 examples/react/start-supabase-basic/app/routes/__root.tsx create mode 100644 examples/react/start-supabase-basic/app/routes/_authed.tsx create mode 100644 examples/react/start-supabase-basic/app/routes/_authed/posts.$postId.tsx create mode 100644 examples/react/start-supabase-basic/app/routes/_authed/posts.index.tsx create mode 100644 examples/react/start-supabase-basic/app/routes/_authed/posts.tsx create mode 100644 examples/react/start-supabase-basic/app/routes/index.tsx create mode 100644 examples/react/start-supabase-basic/app/routes/login.tsx create mode 100644 examples/react/start-supabase-basic/app/routes/logout.tsx create mode 100644 examples/react/start-supabase-basic/app/routes/signup.tsx create mode 100644 examples/react/start-supabase-basic/app/ssr.tsx create mode 100644 examples/react/start-supabase-basic/app/styles/app.css create mode 100644 examples/react/start-supabase-basic/app/utils/posts.ts create mode 100644 examples/react/start-supabase-basic/app/utils/seo.ts create mode 100644 examples/react/start-supabase-basic/app/utils/supabase.ts create mode 100644 examples/react/start-supabase-basic/package.json create mode 100644 examples/react/start-supabase-basic/postcss.config.js create mode 100644 examples/react/start-supabase-basic/tailwind.config.js create mode 100644 examples/react/start-supabase-basic/tailwind.config.ts create mode 100644 examples/react/start-supabase-basic/tsconfig.json diff --git a/docs/config.json b/docs/config.json index 622eed2b7e..2ba8d8f0f1 100644 --- a/docs/config.json +++ b/docs/config.json @@ -348,6 +348,10 @@ "label": "Basic + DIY Auth", "to": "framework/react/examples/start-basic-auth" }, + { + "label": "Basic + Supabase Auth", + "to": "framework/react/examples/start-supabase-basic" + }, { "label": "Trellaux + Convex", "to": "framework/react/examples/start-convex-trellaux" diff --git a/examples/react/start-supabase-basic/.env b/examples/react/start-supabase-basic/.env new file mode 100644 index 0000000000..a7cff24af4 --- /dev/null +++ b/examples/react/start-supabase-basic/.env @@ -0,0 +1,2 @@ +SUPABASE_URL=PleaseChangeMe +SUPABASE_ANON_KEY=PleaseChangeMe \ No newline at end of file diff --git a/examples/react/start-supabase-basic/.gitignore b/examples/react/start-supabase-basic/.gitignore new file mode 100644 index 0000000000..7387b2d256 --- /dev/null +++ b/examples/react/start-supabase-basic/.gitignore @@ -0,0 +1,3 @@ +node_modules +# Keep environment variables out of version control +!.env \ No newline at end of file diff --git a/examples/react/start-supabase-basic/app.config.ts b/examples/react/start-supabase-basic/app.config.ts new file mode 100644 index 0000000000..a1ee0f2776 --- /dev/null +++ b/examples/react/start-supabase-basic/app.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from '@tanstack/start/config' + +export default defineConfig({}) diff --git a/examples/react/start-supabase-basic/app/client.tsx b/examples/react/start-supabase-basic/app/client.tsx new file mode 100644 index 0000000000..f50c0354d4 --- /dev/null +++ b/examples/react/start-supabase-basic/app/client.tsx @@ -0,0 +1,8 @@ +// app/client.tsx +import { hydrateRoot } from 'react-dom/client' +import { StartClient } from '@tanstack/start' +import { createRouter } from './router' + +const router = createRouter() + +hydrateRoot(document.getElementById('root')!, ) diff --git a/examples/react/start-supabase-basic/app/components/Auth.tsx b/examples/react/start-supabase-basic/app/components/Auth.tsx new file mode 100644 index 0000000000..7504f8649b --- /dev/null +++ b/examples/react/start-supabase-basic/app/components/Auth.tsx @@ -0,0 +1,57 @@ +export function Auth({ + actionText, + onSubmit, + status, + afterSubmit, +}: { + actionText: string + onSubmit: (e: React.FormEvent) => void + status: 'pending' | 'idle' | 'success' | 'error' + afterSubmit?: React.ReactNode +}) { + return ( +
+
+

{actionText}

+
{ + e.preventDefault() + onSubmit(e) + }} + className="space-y-4" + > +
+ + +
+
+ + +
+ + {afterSubmit ? afterSubmit : null} +
+
+
+ ) +} diff --git a/examples/react/start-supabase-basic/app/components/DefaultCatchBoundary.tsx b/examples/react/start-supabase-basic/app/components/DefaultCatchBoundary.tsx new file mode 100644 index 0000000000..e646acbd45 --- /dev/null +++ b/examples/react/start-supabase-basic/app/components/DefaultCatchBoundary.tsx @@ -0,0 +1,55 @@ +import { + ErrorComponent, + Link, + rootRouteId, + // ErrorComponentProps, + useMatch, + useRouter, +} from '@tanstack/react-router' +import * as React from 'react' +import type { ErrorComponentProps } from '@tanstack/react-router' + +export function DefaultCatchBoundary({ error }: ErrorComponentProps) { + const router = useRouter() + const isRoot = useMatch({ + strict: false, + select: (state) => state.id === rootRouteId, + }) + + console.error(error) + + return ( +
+ +
+ + {isRoot ? ( + + Home + + ) : ( + { + e.preventDefault() + window.history.back() + }} + > + Go Back + + )} +
+
+ ) +} diff --git a/examples/react/start-supabase-basic/app/components/Login.tsx b/examples/react/start-supabase-basic/app/components/Login.tsx new file mode 100644 index 0000000000..8c0d0e073b --- /dev/null +++ b/examples/react/start-supabase-basic/app/components/Login.tsx @@ -0,0 +1,68 @@ +import { useRouter } from '@tanstack/react-router' +import { useServerFn } from '@tanstack/start' +import { useMutation } from '../hooks/useMutation' +import { loginFn } from '../routes/_authed' +import { signupFn } from '../routes/signup' +import { Auth } from './Auth' + +export function Login() { + const router = useRouter() + + const loginMutation = useMutation({ + fn: loginFn, + onSuccess: async (ctx) => { + if (!ctx.data?.error) { + await router.invalidate() + router.navigate({ to: '/' }) + return + } + }, + }) + + const signupMutation = useMutation({ + fn: useServerFn(signupFn), + }) + + return ( + { + const formData = new FormData(e.target as HTMLFormElement) + + loginMutation.mutate({ + email: formData.get('email') as string, + password: formData.get('password') as string, + }) + }} + afterSubmit={ + loginMutation.data ? ( + <> +
{loginMutation.data.message}
+ {loginMutation.data.error && + loginMutation.data.message === 'Invalid login credentials' ? ( +
+ +
+ ) : null} + + ) : null + } + /> + ) +} diff --git a/examples/react/start-supabase-basic/app/components/NotFound.tsx b/examples/react/start-supabase-basic/app/components/NotFound.tsx new file mode 100644 index 0000000000..7b54fa5680 --- /dev/null +++ b/examples/react/start-supabase-basic/app/components/NotFound.tsx @@ -0,0 +1,25 @@ +import { Link } from '@tanstack/react-router' + +export function NotFound({ children }: { children?: any }) { + return ( +
+
+ {children ||

The page you are looking for does not exist.

} +
+

+ + + Start Over + +

+
+ ) +} diff --git a/examples/react/start-supabase-basic/app/hooks/useMutation.ts b/examples/react/start-supabase-basic/app/hooks/useMutation.ts new file mode 100644 index 0000000000..1ff7a4653b --- /dev/null +++ b/examples/react/start-supabase-basic/app/hooks/useMutation.ts @@ -0,0 +1,44 @@ +import * as React from 'react' + +export function useMutation(opts: { + fn: (variables: TVariables) => Promise + onSuccess?: (ctx: { data: TData }) => void | Promise +}) { + const [submittedAt, setSubmittedAt] = React.useState() + const [variables, setVariables] = React.useState() + const [error, setError] = React.useState() + const [data, setData] = React.useState() + const [status, setStatus] = React.useState< + 'idle' | 'pending' | 'success' | 'error' + >('idle') + + const mutate = React.useCallback( + async (variables: TVariables): Promise => { + setStatus('pending') + setSubmittedAt(Date.now()) + setVariables(variables) + // + try { + const data = await opts.fn(variables) + await opts.onSuccess?.({ data }) + setStatus('success') + setError(undefined) + setData(data) + return data + } catch (err: any) { + setStatus('error') + setError(err) + } + }, + [opts.fn], + ) + + return { + status, + variables, + submittedAt, + mutate, + error, + data, + } +} diff --git a/examples/react/start-supabase-basic/app/routeTree.gen.ts b/examples/react/start-supabase-basic/app/routeTree.gen.ts new file mode 100644 index 0000000000..1010a1feb3 --- /dev/null +++ b/examples/react/start-supabase-basic/app/routeTree.gen.ts @@ -0,0 +1,283 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as SignupImport } from './routes/signup' +import { Route as LogoutImport } from './routes/logout' +import { Route as LoginImport } from './routes/login' +import { Route as AuthedImport } from './routes/_authed' +import { Route as IndexImport } from './routes/index' +import { Route as AuthedPostsImport } from './routes/_authed/posts' +import { Route as AuthedPostsIndexImport } from './routes/_authed/posts.index' +import { Route as AuthedPostsPostIdImport } from './routes/_authed/posts.$postId' + +// Create/Update Routes + +const SignupRoute = SignupImport.update({ + path: '/signup', + getParentRoute: () => rootRoute, +} as any) + +const LogoutRoute = LogoutImport.update({ + path: '/logout', + getParentRoute: () => rootRoute, +} as any) + +const LoginRoute = LoginImport.update({ + path: '/login', + getParentRoute: () => rootRoute, +} as any) + +const AuthedRoute = AuthedImport.update({ + id: '/_authed', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const AuthedPostsRoute = AuthedPostsImport.update({ + path: '/posts', + getParentRoute: () => AuthedRoute, +} as any) + +const AuthedPostsIndexRoute = AuthedPostsIndexImport.update({ + path: '/', + getParentRoute: () => AuthedPostsRoute, +} as any) + +const AuthedPostsPostIdRoute = AuthedPostsPostIdImport.update({ + path: '/$postId', + getParentRoute: () => AuthedPostsRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/_authed': { + id: '/_authed' + path: '' + fullPath: '' + preLoaderRoute: typeof AuthedImport + parentRoute: typeof rootRoute + } + '/login': { + id: '/login' + path: '/login' + fullPath: '/login' + preLoaderRoute: typeof LoginImport + parentRoute: typeof rootRoute + } + '/logout': { + id: '/logout' + path: '/logout' + fullPath: '/logout' + preLoaderRoute: typeof LogoutImport + parentRoute: typeof rootRoute + } + '/signup': { + id: '/signup' + path: '/signup' + fullPath: '/signup' + preLoaderRoute: typeof SignupImport + parentRoute: typeof rootRoute + } + '/_authed/posts': { + id: '/_authed/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof AuthedPostsImport + parentRoute: typeof AuthedImport + } + '/_authed/posts/$postId': { + id: '/_authed/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof AuthedPostsPostIdImport + parentRoute: typeof AuthedPostsImport + } + '/_authed/posts/': { + id: '/_authed/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof AuthedPostsIndexImport + parentRoute: typeof AuthedPostsImport + } + } +} + +// Create and export the route tree + +interface AuthedPostsRouteChildren { + AuthedPostsPostIdRoute: typeof AuthedPostsPostIdRoute + AuthedPostsIndexRoute: typeof AuthedPostsIndexRoute +} + +const AuthedPostsRouteChildren: AuthedPostsRouteChildren = { + AuthedPostsPostIdRoute: AuthedPostsPostIdRoute, + AuthedPostsIndexRoute: AuthedPostsIndexRoute, +} + +const AuthedPostsRouteWithChildren = AuthedPostsRoute._addFileChildren( + AuthedPostsRouteChildren, +) + +interface AuthedRouteChildren { + AuthedPostsRoute: typeof AuthedPostsRouteWithChildren +} + +const AuthedRouteChildren: AuthedRouteChildren = { + AuthedPostsRoute: AuthedPostsRouteWithChildren, +} + +const AuthedRouteWithChildren = + AuthedRoute._addFileChildren(AuthedRouteChildren) + +interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof AuthedRouteWithChildren + '/login': typeof LoginRoute + '/logout': typeof LogoutRoute + '/signup': typeof SignupRoute + '/posts': typeof AuthedPostsRouteWithChildren + '/posts/$postId': typeof AuthedPostsPostIdRoute + '/posts/': typeof AuthedPostsIndexRoute +} + +interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof AuthedRouteWithChildren + '/login': typeof LoginRoute + '/logout': typeof LogoutRoute + '/signup': typeof SignupRoute + '/posts/$postId': typeof AuthedPostsPostIdRoute + '/posts': typeof AuthedPostsIndexRoute +} + +interface FileRoutesById { + '/': typeof IndexRoute + '/_authed': typeof AuthedRouteWithChildren + '/login': typeof LoginRoute + '/logout': typeof LogoutRoute + '/signup': typeof SignupRoute + '/_authed/posts': typeof AuthedPostsRouteWithChildren + '/_authed/posts/$postId': typeof AuthedPostsPostIdRoute + '/_authed/posts/': typeof AuthedPostsIndexRoute +} + +interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/login' + | '/logout' + | '/signup' + | '/posts' + | '/posts/$postId' + | '/posts/' + fileRoutesByTo: FileRoutesByTo + to: '/' | '' | '/login' | '/logout' | '/signup' | '/posts/$postId' | '/posts' + id: + | '/' + | '/_authed' + | '/login' + | '/logout' + | '/signup' + | '/_authed/posts' + | '/_authed/posts/$postId' + | '/_authed/posts/' + fileRoutesById: FileRoutesById +} + +interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AuthedRoute: typeof AuthedRouteWithChildren + LoginRoute: typeof LoginRoute + LogoutRoute: typeof LogoutRoute + SignupRoute: typeof SignupRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AuthedRoute: AuthedRouteWithChildren, + LoginRoute: LoginRoute, + LogoutRoute: LogoutRoute, + SignupRoute: SignupRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/_authed", + "/login", + "/logout", + "/signup" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_authed": { + "filePath": "_authed.tsx", + "children": [ + "/_authed/posts" + ] + }, + "/login": { + "filePath": "login.tsx" + }, + "/logout": { + "filePath": "logout.tsx" + }, + "/signup": { + "filePath": "signup.tsx" + }, + "/_authed/posts": { + "filePath": "_authed/posts.tsx", + "parent": "/_authed", + "children": [ + "/_authed/posts/$postId", + "/_authed/posts/" + ] + }, + "/_authed/posts/$postId": { + "filePath": "_authed/posts.$postId.tsx", + "parent": "/_authed/posts" + }, + "/_authed/posts/": { + "filePath": "_authed/posts.index.tsx", + "parent": "/_authed/posts" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/examples/react/start-supabase-basic/app/router.tsx b/examples/react/start-supabase-basic/app/router.tsx new file mode 100644 index 0000000000..dc640c5f4c --- /dev/null +++ b/examples/react/start-supabase-basic/app/router.tsx @@ -0,0 +1,17 @@ +// app/router.tsx +import { createRouter as createTanStackRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' + +export function createRouter() { + const router = createTanStackRouter({ + routeTree, + }) + + return router +} + +declare module '@tanstack/react-router' { + interface Register { + router: ReturnType + } +} diff --git a/examples/react/start-supabase-basic/app/routes/__root.tsx b/examples/react/start-supabase-basic/app/routes/__root.tsx new file mode 100644 index 0000000000..6166e90c62 --- /dev/null +++ b/examples/react/start-supabase-basic/app/routes/__root.tsx @@ -0,0 +1,143 @@ +import { + Link, + Outlet, + ScrollRestoration, + createRootRoute, +} from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' +import { + Body, + Head, + Html, + Meta, + Scripts, + createServerFn, +} from '@tanstack/start' +import * as React from 'react' +import { DefaultCatchBoundary } from '../components/DefaultCatchBoundary' +import { NotFound } from '../components/NotFound' +import appCss from '../styles/app.css?url' +import { seo } from '../utils/seo' +import { getSupabaseServerClient } from '../utils/supabase' + +const fetchUser = createServerFn('GET', async () => { + const supabase = await getSupabaseServerClient() + const { data, error } = await supabase.auth.getUser() + + if (!data.user?.email) { + return null + } + + return data.user +}) + +export const Route = createRootRoute({ + meta: () => [ + { + charSet: 'utf-8', + }, + { + name: 'viewport', + content: 'width=device-width, initial-scale=1', + }, + ...seo({ + title: + 'TanStack Start | Type-Safe, Client-First, Full-Stack React Framework', + description: `TanStack Start is a type-safe, client-first, full-stack React framework. `, + }), + ], + links: () => [ + { rel: 'stylesheet', href: appCss }, + { + rel: 'apple-touch-icon', + sizes: '180x180', + href: '/apple-touch-icon.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '32x32', + href: '/favicon-32x32.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '16x16', + href: '/favicon-16x16.png', + }, + { rel: 'manifest', href: '/site.webmanifest', color: '#fffff' }, + { rel: 'icon', href: '/favicon.ico' }, + ], + beforeLoad: async () => { + const user = await fetchUser() + + return { + user, + } + }, + errorComponent: (props) => { + return ( + + + + ) + }, + notFoundComponent: () => , + component: RootComponent, +}) + +function RootComponent() { + return ( + + + + ) +} + +function RootDocument({ children }: { children: React.ReactNode }) { + const { user } = Route.useRouteContext() + + return ( + + + + + +
+ + Home + {' '} + + Posts + +
+ {user ? ( + <> + {user.email} + Logout + + ) : ( + Login + )} +
+
+
+ {children} + + + + + + ) +} diff --git a/examples/react/start-supabase-basic/app/routes/_authed.tsx b/examples/react/start-supabase-basic/app/routes/_authed.tsx new file mode 100644 index 0000000000..355df14255 --- /dev/null +++ b/examples/react/start-supabase-basic/app/routes/_authed.tsx @@ -0,0 +1,42 @@ +import { createFileRoute } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' +import { Login } from '../components/Login' +import { getSupabaseServerClient } from '../utils/supabase' + +export const loginFn = createServerFn( + 'POST', + async ( + payload: { + email: string + password: string + }, + { request }, + ) => { + const supabase = await getSupabaseServerClient() + const { data, error } = await supabase.auth.signInWithPassword({ + email: payload.email, + password: payload.password, + }) + if (error) { + return { + error: true, + message: error.message, + } + } + }, +) + +export const Route = createFileRoute('/_authed')({ + beforeLoad: ({ context }) => { + if (!context.user) { + throw new Error('Not authenticated') + } + }, + errorComponent: ({ error }) => { + if (error.message === 'Not authenticated') { + return + } + + throw error + }, +}) diff --git a/examples/react/start-supabase-basic/app/routes/_authed/posts.$postId.tsx b/examples/react/start-supabase-basic/app/routes/_authed/posts.$postId.tsx new file mode 100644 index 0000000000..e5519c1d0d --- /dev/null +++ b/examples/react/start-supabase-basic/app/routes/_authed/posts.$postId.tsx @@ -0,0 +1,28 @@ +import { ErrorComponent, createFileRoute } from '@tanstack/react-router' +import { NotFound } from '../../components/NotFound' +import { fetchPost } from '../../utils/posts' +import type { ErrorComponentProps } from '@tanstack/react-router' + +export const Route = createFileRoute('/_authed/posts/$postId')({ + loader: ({ params: { postId } }) => fetchPost(postId), + errorComponent: PostErrorComponent as any, + component: PostComponent, + notFoundComponent: () => { + return Post not found + }, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const post = Route.useLoaderData() + + return ( +
+

{post.title}

+
{post.body}
+
+ ) +} diff --git a/examples/react/start-supabase-basic/app/routes/_authed/posts.index.tsx b/examples/react/start-supabase-basic/app/routes/_authed/posts.index.tsx new file mode 100644 index 0000000000..ea9e667e54 --- /dev/null +++ b/examples/react/start-supabase-basic/app/routes/_authed/posts.index.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_authed/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/examples/react/start-supabase-basic/app/routes/_authed/posts.tsx b/examples/react/start-supabase-basic/app/routes/_authed/posts.tsx new file mode 100644 index 0000000000..f7d863b8b9 --- /dev/null +++ b/examples/react/start-supabase-basic/app/routes/_authed/posts.tsx @@ -0,0 +1,38 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { fetchPosts } from '../../utils/posts' + +export const Route = createFileRoute('/_authed/posts')({ + loader: () => fetchPosts(), + component: PostsComponent, +}) + +function PostsComponent() { + const posts = Route.useLoaderData() + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+
+ +
+ ) +} diff --git a/examples/react/start-supabase-basic/app/routes/index.tsx b/examples/react/start-supabase-basic/app/routes/index.tsx new file mode 100644 index 0000000000..09a907cb18 --- /dev/null +++ b/examples/react/start-supabase-basic/app/routes/index.tsx @@ -0,0 +1,13 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!!!

+
+ ) +} diff --git a/examples/react/start-supabase-basic/app/routes/login.tsx b/examples/react/start-supabase-basic/app/routes/login.tsx new file mode 100644 index 0000000000..64b539d819 --- /dev/null +++ b/examples/react/start-supabase-basic/app/routes/login.tsx @@ -0,0 +1,10 @@ +import { createFileRoute } from '@tanstack/react-router' +import { Login } from '../components/Login' + +export const Route = createFileRoute('/login')({ + component: LoginComp, +}) + +function LoginComp() { + return +} diff --git a/examples/react/start-supabase-basic/app/routes/logout.tsx b/examples/react/start-supabase-basic/app/routes/logout.tsx new file mode 100644 index 0000000000..0f38aa4b58 --- /dev/null +++ b/examples/react/start-supabase-basic/app/routes/logout.tsx @@ -0,0 +1,24 @@ +import { createFileRoute, redirect } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' +import { getSupabaseServerClient } from '../utils/supabase' + +const logoutFn = createServerFn('POST', async () => { + const supabase = await getSupabaseServerClient() + const { error } = await supabase.auth.signOut() + + if (error) { + return { + error: true, + message: error.message, + } + } + + throw redirect({ + href: '/', + }) +}) + +export const Route = createFileRoute('/logout')({ + preload: false, + loader: () => logoutFn(), +}) diff --git a/examples/react/start-supabase-basic/app/routes/signup.tsx b/examples/react/start-supabase-basic/app/routes/signup.tsx new file mode 100644 index 0000000000..f52ca14311 --- /dev/null +++ b/examples/react/start-supabase-basic/app/routes/signup.tsx @@ -0,0 +1,63 @@ +import { createFileRoute, redirect } from '@tanstack/react-router' +import { createServerFn, useServerFn } from '@tanstack/start' +import { useMutation } from '../hooks/useMutation' +import { Auth } from '../components/Auth' +import { getSupabaseServerClient } from '../utils/supabase' + +export const signupFn = createServerFn( + 'POST', + async (payload: { + email: string + password: string + redirectUrl?: string + }) => { + const supabase = await getSupabaseServerClient() + const { data, error } = await supabase.auth.signUp({ + email: payload.email, + password: payload.password, + }) + if (error) { + return { + error: true, + message: error.message, + } + } + + // Redirect to the prev page stored in the "redirect" search param + throw redirect({ + href: payload.redirectUrl || '/', + }) + }, +) + +export const Route = createFileRoute('/signup')({ + component: SignupComp, +}) + +function SignupComp() { + const signupMutation = useMutation({ + fn: useServerFn(signupFn), + }) + + return ( + { + const formData = new FormData(e.target as HTMLFormElement) + + signupMutation.mutate({ + email: formData.get('email') as string, + password: formData.get('password') as string, + }) + }} + afterSubmit={ + signupMutation.data?.error ? ( + <> +
{signupMutation.data.message}
+ + ) : null + } + /> + ) +} diff --git a/examples/react/start-supabase-basic/app/ssr.tsx b/examples/react/start-supabase-basic/app/ssr.tsx new file mode 100644 index 0000000000..3e41f64ff9 --- /dev/null +++ b/examples/react/start-supabase-basic/app/ssr.tsx @@ -0,0 +1,13 @@ +// app/ssr.tsx +import { + createStartHandler, + defaultStreamHandler, +} from '@tanstack/start/server' +import { getRouterManifest } from '@tanstack/start/router-manifest' + +import { createRouter } from './router' + +export default createStartHandler({ + createRouter, + getRouterManifest, +})(defaultStreamHandler) diff --git a/examples/react/start-supabase-basic/app/styles/app.css b/examples/react/start-supabase-basic/app/styles/app.css new file mode 100644 index 0000000000..d6426ccb72 --- /dev/null +++ b/examples/react/start-supabase-basic/app/styles/app.css @@ -0,0 +1,14 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + html, + body { + @apply text-gray-900 bg-gray-50 dark:bg-gray-950 dark:text-gray-200; + } + + .using-mouse * { + outline: none !important; + } +} diff --git a/examples/react/start-supabase-basic/app/utils/posts.ts b/examples/react/start-supabase-basic/app/utils/posts.ts new file mode 100644 index 0000000000..00fc9ae143 --- /dev/null +++ b/examples/react/start-supabase-basic/app/utils/posts.ts @@ -0,0 +1,33 @@ +import { notFound } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPost = createServerFn('GET', async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + console.error(err) + if (err.status === 404) { + throw notFound() + } + throw err + }) + + return post +}) + +export const fetchPosts = createServerFn('GET', async () => { + console.info('Fetching posts...') + await new Promise((r) => setTimeout(r, 1000)) + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +}) diff --git a/examples/react/start-supabase-basic/app/utils/seo.ts b/examples/react/start-supabase-basic/app/utils/seo.ts new file mode 100644 index 0000000000..d18ad84b74 --- /dev/null +++ b/examples/react/start-supabase-basic/app/utils/seo.ts @@ -0,0 +1,33 @@ +export const seo = ({ + title, + description, + keywords, + image, +}: { + title: string + description?: string + image?: string + keywords?: string +}) => { + const tags = [ + { title }, + { name: 'description', content: description }, + { name: 'keywords', content: keywords }, + { name: 'twitter:title', content: title }, + { name: 'twitter:description', content: description }, + { name: 'twitter:creator', content: '@tannerlinsley' }, + { name: 'twitter:site', content: '@tannerlinsley' }, + { name: 'og:type', content: 'website' }, + { name: 'og:title', content: title }, + { name: 'og:description', content: description }, + ...(image + ? [ + { name: 'twitter:image', content: image }, + { name: 'twitter:card', content: 'summary_large_image' }, + { name: 'og:image', content: image }, + ] + : []), + ] + + return tags +} diff --git a/examples/react/start-supabase-basic/app/utils/supabase.ts b/examples/react/start-supabase-basic/app/utils/supabase.ts new file mode 100644 index 0000000000..b7d33639d4 --- /dev/null +++ b/examples/react/start-supabase-basic/app/utils/supabase.ts @@ -0,0 +1,25 @@ +import { parseCookies, setCookie } from 'vinxi/http' +import { createServerClient } from '@supabase/ssr' + +export function getSupabaseServerClient() { + return createServerClient( + process.env.SUPABASE_URL!, + process.env.SUPABASE_ANON_KEY!, + { + cookies: { + // @ts-ignore Wait till Supabase overload works + getAll() { + return Object.entries(parseCookies()).map(([name, value]) => ({ + name, + value, + })) + }, + setAll(cookies) { + cookies.forEach((cookie) => { + setCookie(cookie.name, cookie.value) + }) + }, + }, + }, + ) +} diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json new file mode 100644 index 0000000000..2a07718fc2 --- /dev/null +++ b/examples/react/start-supabase-basic/package.json @@ -0,0 +1,35 @@ +{ + "name": "tanstack-router-example-react-start-supabase-basic", + "version": "1.0.0", + "description": "", + "main": "index.js", + "type": "module", + "scripts": { + "dev": "vinxi dev", + "build": "vinxi build", + "start": "vinxi start" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@supabase/ssr": "^0.5.1", + "@supabase/supabase-js": "^2.45.3", + "@tanstack/react-router": "^1.56.1", + "@tanstack/router-plugin": "^1.56.1", + "@tanstack/router-devtools": "^1.56.1", + "@tanstack/start": "^1.56.1", + "@vitejs/plugin-react": "^4.3.1", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "vinxi": "0.4.2" + }, + "devDependencies": { + "@types/react": "^18.3.5", + "@types/react-dom": "^18.3.0", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.45", + "tailwindcss": "^3.4.10", + "typescript": "^5.5.3" + } +} diff --git a/examples/react/start-supabase-basic/postcss.config.js b/examples/react/start-supabase-basic/postcss.config.js new file mode 100644 index 0000000000..f8316554c6 --- /dev/null +++ b/examples/react/start-supabase-basic/postcss.config.js @@ -0,0 +1,7 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + 'tailwindcss/nesting': {}, + }, +} diff --git a/examples/react/start-supabase-basic/tailwind.config.js b/examples/react/start-supabase-basic/tailwind.config.js new file mode 100644 index 0000000000..bb1025f91c --- /dev/null +++ b/examples/react/start-supabase-basic/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./app/**/*.{js,ts,jsx,tsx}'], + theme: { + extend: {}, + }, + plugins: [], +} diff --git a/examples/react/start-supabase-basic/tailwind.config.ts b/examples/react/start-supabase-basic/tailwind.config.ts new file mode 100644 index 0000000000..d0253e59a8 --- /dev/null +++ b/examples/react/start-supabase-basic/tailwind.config.ts @@ -0,0 +1,9 @@ +import type { Config } from 'tailwindcss' + +export default { + content: [], + theme: { + extend: {}, + }, + plugins: [], +} satisfies Config diff --git a/examples/react/start-supabase-basic/tsconfig.json b/examples/react/start-supabase-basic/tsconfig.json new file mode 100644 index 0000000000..d1b5b77660 --- /dev/null +++ b/examples/react/start-supabase-basic/tsconfig.json @@ -0,0 +1,22 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "target": "ES2022", + "allowJs": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "paths": { + "~/*": ["./app/*"] + }, + "noEmit": true + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45719a1c6e..f5a608a5d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1670,6 +1670,58 @@ importers: specifier: ^5.0.1 version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + examples/react/start-supabase-basic: + dependencies: + '@supabase/ssr': + specifier: ^0.5.1 + version: 0.5.1(@supabase/supabase-js@2.45.3) + '@supabase/supabase-js': + specifier: ^2.45.3 + version: 2.45.3 + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../../../packages/router-plugin + '@tanstack/start': + specifier: workspace:* + version: link:../../../packages/start + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + vinxi: + specifier: 0.4.2 + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + devDependencies: + '@types/react': + specifier: ^18.3.5 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.0 + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.45) + postcss: + specifier: ^8.4.45 + version: 8.4.45 + tailwindcss: + specifier: ^3.4.10 + version: 3.4.10 + typescript: + specifier: ^5.5.3 + version: 5.5.3 + examples/react/start-trellaux: dependencies: '@tanstack/react-query': @@ -1930,7 +1982,7 @@ importers: version: 6.4.8 '@testing-library/react': specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vitejs/plugin-react': specifier: ^4.3.1 version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) @@ -1975,7 +2027,7 @@ importers: version: 6.4.8 '@testing-library/react': specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) arktype: specifier: ^2.0.0-beta.2 version: 2.0.0-beta.5 @@ -2112,7 +2164,7 @@ importers: version: 6.4.8 '@testing-library/react': specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) valibot: specifier: ^0.36.0 version: 0.36.0 @@ -2137,7 +2189,7 @@ importers: version: 6.4.8 '@testing-library/react': specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2198,7 +2250,7 @@ importers: devDependencies: '@testing-library/react': specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vitejs/plugin-react': specifier: ^4.3.1 version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) @@ -4179,6 +4231,33 @@ packages: peerDependencies: eslint: ^9.9.1 + '@supabase/auth-js@2.65.0': + resolution: {integrity: sha512-+wboHfZufAE2Y612OsKeVP4rVOeGZzzMLD/Ac3HrTQkkY4qXNjI6Af9gtmxwccE5nFvTiF114FEbIQ1hRq5uUw==} + + '@supabase/functions-js@2.4.1': + resolution: {integrity: sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA==} + + '@supabase/node-fetch@2.6.15': + resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} + engines: {node: 4.x || >=6.0.0} + + '@supabase/postgrest-js@1.15.8': + resolution: {integrity: sha512-YunjXpoQjQ0a0/7vGAvGZA2dlMABXFdVI/8TuVKtlePxyT71sl6ERl6ay1fmIeZcqxiuFQuZw/LXUuStUG9bbg==} + + '@supabase/realtime-js@2.10.2': + resolution: {integrity: sha512-qyCQaNg90HmJstsvr2aJNxK2zgoKh9ZZA8oqb7UT2LCh3mj9zpa3Iwu167AuyNxsxrUE8eEJ2yH6wLCij4EApA==} + + '@supabase/ssr@0.5.1': + resolution: {integrity: sha512-+G94H/GZG0nErZ3FQV9yJmsC5Rj7dmcfCAwOt37hxeR1La+QTl8cE9whzYwPUrTJjMLGNXoO+1BMvVxwBAbz4g==} + peerDependencies: + '@supabase/supabase-js': ^2.43.4 + + '@supabase/storage-js@2.7.0': + resolution: {integrity: sha512-iZenEdO6Mx9iTR6T7wC7sk6KKsoDPLq8rdu5VRy7+JiT1i8fnqfcOr6mfF2Eaqky9VQzhP8zZKQYjzozB65Rig==} + + '@supabase/supabase-js@2.45.3': + resolution: {integrity: sha512-4wAux6cuVMrdH/qUjKn6p3p3L9AtAO3Une6ojIrtpCj1RaXKVoyIATiacSRAI+pKff6XZBVCGC29v+z4Jo/uSw==} + '@swc/core-darwin-arm64@1.7.6': resolution: {integrity: sha512-6lYHey84ZzsdtC7UuPheM4Rm0Inzxm6Sb8U6dmKc4eCx8JL0LfWG4LC5RsdsrTxnjTsbriWlnhZBffh8ijUHIQ==} engines: {node: '>=10'} @@ -4433,6 +4512,9 @@ packages: '@types/node@20.14.9': resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} + '@types/phoenix@1.6.5': + resolution: {integrity: sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==} + '@types/prop-types@15.7.12': resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} @@ -4448,6 +4530,9 @@ packages: '@types/react@18.3.3': resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + '@types/react@18.3.5': + resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==} + '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -7570,6 +7655,10 @@ packages: resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} engines: {node: ^10 || ^12 || >=14} + postcss@8.4.45: + resolution: {integrity: sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -8270,6 +8359,11 @@ packages: tailwind-merge@2.5.2: resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} + tailwindcss@3.4.10: + resolution: {integrity: sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==} + engines: {node: '>=14.0.0'} + hasBin: true + tailwindcss@3.4.7: resolution: {integrity: sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==} engines: {node: '>=14.0.0'} @@ -10826,6 +10920,53 @@ snapshots: eslint-visitor-keys: 4.0.0 espree: 10.1.0 + '@supabase/auth-js@2.65.0': + dependencies: + '@supabase/node-fetch': 2.6.15 + + '@supabase/functions-js@2.4.1': + dependencies: + '@supabase/node-fetch': 2.6.15 + + '@supabase/node-fetch@2.6.15': + dependencies: + whatwg-url: 5.0.0 + + '@supabase/postgrest-js@1.15.8': + dependencies: + '@supabase/node-fetch': 2.6.15 + + '@supabase/realtime-js@2.10.2': + dependencies: + '@supabase/node-fetch': 2.6.15 + '@types/phoenix': 1.6.5 + '@types/ws': 8.5.10 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@supabase/ssr@0.5.1(@supabase/supabase-js@2.45.3)': + dependencies: + '@supabase/supabase-js': 2.45.3 + cookie: 0.6.0 + + '@supabase/storage-js@2.7.0': + dependencies: + '@supabase/node-fetch': 2.6.15 + + '@supabase/supabase-js@2.45.3': + dependencies: + '@supabase/auth-js': 2.65.0 + '@supabase/functions-js': 2.4.1 + '@supabase/node-fetch': 2.6.15 + '@supabase/postgrest-js': 1.15.8 + '@supabase/realtime-js': 2.10.2 + '@supabase/storage-js': 2.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@swc/core-darwin-arm64@1.7.6': optional: true @@ -10976,14 +11117,14 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/react@16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@testing-library/react@16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.23.5 '@testing-library/dom': 10.0.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 '@types/react-dom': 18.3.0 '@trpc/client@11.0.0-rc.477(@trpc/server@11.0.0-rc.477)': @@ -11117,6 +11258,8 @@ snapshots: dependencies: undici-types: 5.26.5 + '@types/phoenix@1.6.5': {} + '@types/prop-types@15.7.12': {} '@types/qs@6.9.7': {} @@ -11132,6 +11275,11 @@ snapshots: '@types/prop-types': 15.7.12 csstype: 3.1.3 + '@types/react@18.3.5': + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + '@types/resolve@1.20.2': {} '@types/retry@0.12.2': {} @@ -11759,6 +11907,16 @@ snapshots: postcss: 8.4.40 postcss-value-parser: 4.2.0 + autoprefixer@10.4.20(postcss@8.4.45): + dependencies: + browserslist: 4.23.3 + caniuse-lite: 1.0.30001653 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 @@ -14593,11 +14751,23 @@ snapshots: read-cache: 1.0.0 resolve: 1.22.8 + postcss-import@15.1.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + postcss-js@4.0.1(postcss@8.4.40): dependencies: camelcase-css: 2.0.1 postcss: 8.4.40 + postcss-js@4.0.1(postcss@8.4.45): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.45 + postcss-load-config@4.0.2(postcss@8.4.40): dependencies: lilconfig: 3.1.1 @@ -14605,11 +14775,23 @@ snapshots: optionalDependencies: postcss: 8.4.40 + postcss-load-config@4.0.2(postcss@8.4.45): + dependencies: + lilconfig: 3.1.1 + yaml: 2.4.5 + optionalDependencies: + postcss: 8.4.45 + postcss-nested@6.0.1(postcss@8.4.40): dependencies: postcss: 8.4.40 postcss-selector-parser: 6.0.16 + postcss-nested@6.0.1(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-selector-parser: 6.0.16 + postcss-selector-parser@6.0.16: dependencies: cssesc: 3.0.0 @@ -14629,6 +14811,12 @@ snapshots: picocolors: 1.0.1 source-map-js: 1.2.0 + postcss@8.4.45: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + prelude-ls@1.2.1: {} prettier@3.2.5: {} @@ -15373,6 +15561,33 @@ snapshots: tailwind-merge@2.5.2: {} + tailwindcss@3.4.10: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.7 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.45 + postcss-import: 15.1.0(postcss@8.4.45) + postcss-js: 4.0.1(postcss@8.4.45) + postcss-load-config: 4.0.2(postcss@8.4.45) + postcss-nested: 6.0.1(postcss@8.4.45) + postcss-selector-parser: 6.0.16 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + tailwindcss@3.4.7: dependencies: '@alloc/quick-lru': 5.2.0 From c0c3569c266ba9819e1497091e865bea22a7c2a3 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sat, 7 Sep 2024 07:14:04 +0200 Subject: [PATCH 064/154] fix(react-router): allow to narrow by id and fullPath in `useParentMatches` and `useChildMatches` (#2281) --- packages/react-router/src/Matches.tsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/react-router/src/Matches.tsx b/packages/react-router/src/Matches.tsx index 0b5f12ba36..8736c02447 100644 --- a/packages/react-router/src/Matches.tsx +++ b/packages/react-router/src/Matches.tsx @@ -376,9 +376,8 @@ export function useMatches< } export function useParentMatches< - TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], - TRouteId extends RouteIds = ParseRoute['id'], - TRouteMatch = MakeRouteMatch, + TRouter extends AnyRouter = RegisteredRouter, + TRouteMatch = MakeRouteMatchUnion, T = Array, >(opts?: { select?: (matches: Array) => T }): T { const contextMatchId = React.useContext(matchContext) @@ -397,9 +396,8 @@ export function useParentMatches< } export function useChildMatches< - TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], - TRouteId extends RouteIds = ParseRoute['id'], - TRouteMatch = MakeRouteMatch, + TRouter extends AnyRouter = RegisteredRouter, + TRouteMatch = MakeRouteMatchUnion, T = Array, >(opts?: { select?: (matches: Array) => T }): T { const contextMatchId = React.useContext(matchContext) From db346b8761d8d8570269ca449eb5ef9d65cdcd3a Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sat, 7 Sep 2024 05:15:15 +0000 Subject: [PATCH 065/154] release: v1.56.3 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic-virtual-file-based/package.json | 4 ++-- .../react/basic-virtual-inside-file-based/package.json | 4 ++-- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-supabase-basic/package.json | 6 +++--- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 44 files changed, 97 insertions(+), 97 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 145c5d7129..520c5e8fd2 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 13c191b0c0..9d35ea8870 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 0ffc1ea98a..f3f34b7bc8 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 4b9220d0ab..9862c0d903 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 89b32c79e7..e0fec5851d 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index c443d383b6..d6ceb0b01b 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 90aa324991..c007cc9194 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.2", + "@tanstack/start": "^1.56.3", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 6ae9ff991a..2f8deb1f09 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.2", + "@tanstack/start": "^1.56.3", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index e78216155d..3d90765e61 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 30346abdcf..548882c84f 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 3ef106e90b..3ca94a5c43 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index d49f55491e..9f8a6b951b 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index f47e38ada1..34327ed32f 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 85fbd1fb53..b445e16996 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 7a0e108af8..7d6a9a98cc 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 38d4cb328f..6686fd71a8 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 8dbd69efd3..cfb66ba1ef 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 80317fc756..9b00d1312e 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 4a03581df4..3b82e71ee0 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 9479156c51..7971ab435b 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index db2f30d0c7..a6e8a51603 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index ae4768087f..b7f858aaa5 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 77a45412aa..72341c1988 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 0c08960a27..c116bf3af3 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", + "@tanstack/react-router": "^1.56.3", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-devtools": "^1.56.3", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 8d66804f71..9e764a608e 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", - "@tanstack/router-zod-adapter": "^1.56.2", - "@tanstack/router-valibot-adapter": "^1.56.2", - "@tanstack/router-arktype-adapter": "^1.56.2", + "@tanstack/router-zod-adapter": "^1.56.3", + "@tanstack/router-valibot-adapter": "^1.56.3", + "@tanstack/router-arktype-adapter": "^1.56.3", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 512092058a..f85e028a05 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.2", + "@tanstack/start": "^1.56.3", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index f55594bf3e..b31dce249d 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/start": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/start": "^1.56.3", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 8ec2f7fb57..fa6992d86e 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.2", - "@tanstack/react-router-with-query": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/react-router-with-query": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.2", + "@tanstack/start": "^1.56.3", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index ccd606327d..a8f5d71a03 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.2", + "@tanstack/start": "^1.56.3", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 3c4e8f0ed8..940880087b 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.2", + "@tanstack/start": "^1.56.3", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 900f20ab4a..1eee6b20d8 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.5", - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.2", + "@tanstack/start": "^1.56.3", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index b45e2e22dd..3ab0257a5b 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.2", - "@tanstack/react-router-with-query": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/react-router-with-query": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.2", + "@tanstack/start": "^1.56.3", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 2a07718fc2..12b2999417 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.3", - "@tanstack/react-router": "^1.56.1", + "@tanstack/react-router": "^1.56.3", "@tanstack/router-plugin": "^1.56.1", - "@tanstack/router-devtools": "^1.56.1", - "@tanstack/start": "^1.56.1", + "@tanstack/router-devtools": "^1.56.3", + "@tanstack/start": "^1.56.3", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index ba873bf443..ca749c8e98 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.2", - "@tanstack/react-router-with-query": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/react-router-with-query": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.2", + "@tanstack/start": "^1.56.3", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 0dbfde8e78..aa3a3f6b46 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 6480446006..ea535fe4e5 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 25e7e8d15a..6a8d05f78e 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", + "@tanstack/react-router": "^1.56.3", + "@tanstack/router-devtools": "^1.56.3", "@tanstack/router-plugin": "^1.56.2", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 5ff1f31c91..338359e190 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.56.2", + "version": "1.56.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index bc2e0b580b..b8ccb67183 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.56.2", + "version": "1.56.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index f86b25552f..3fc30a710e 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.56.2", + "version": "1.56.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index ad8a023e34..ee86d31f5c 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.56.2", + "version": "1.56.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 6d92d8b411..f9e67d1b1e 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.56.2", + "version": "1.56.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index a031176975..c84148ac3d 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.56.2", + "version": "1.56.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index e1e278794c..934b7c053c 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.56.2", + "version": "1.56.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From aeb35938f2499bdff6936d7ee11aba701364953a Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sat, 7 Sep 2024 09:09:44 +0200 Subject: [PATCH 066/154] fix(router-generator): export generated interfaces (#2282) --- .../authenticated-routes/src/routeTree.gen.ts | 12 +- .../src/routeTree.gen.ts | 12 +- .../basic-file-based/src/routeTree.gen.ts | 12 +- .../src/routeTree.gen.ts | 12 +- .../basic-ssr-file-based/src/routeTree.gen.ts | 13 +- .../src/routeTree.gen.ts | 13 +- .../src/routeTree.gen.ts | 12 +- .../src/routeTree.gen.ts | 12 +- .../src/routeTree.gen.ts | 12 +- .../src/routeTree.gen.ts | 12 +- .../large-file-based/src/routeTree.gen.ts | 10664 +++++++++++++++- .../src/routeTree.gen.ts | 13 +- .../src/routeTree.gen.ts | 13 +- .../src/routeTree.gen.ts | 13 +- .../src/routeTree.gen.ts | 13 +- .../start-basic-auth/app/routeTree.gen.ts | 12 +- .../start-basic-counter/app/routeTree.gen.ts | 13 +- .../app/routeTree.gen.ts | 12 +- .../start-basic-rsc/app/routeTree.gen.ts | 12 +- .../react/start-basic/app/routeTree.gen.ts | 12 +- .../start-clerk-basic/app/routeTree.gen.ts | 12 +- .../app/routeTree.gen.ts | 13 +- .../react/start-supabase-basic/.gitignore | 23 +- .../start-supabase-basic/app/routeTree.gen.ts | 12 +- .../react/start-trellaux/app/routeTree.gen.ts | 13 +- .../app/routeTree.gen.ts | 12 +- examples/react/with-trpc/app/routeTree.gen.ts | 12 +- packages/router-generator/src/generator.ts | 13 +- .../append-and-prepend/routeTree.snapshot.ts | 13 +- .../custom-tokens/routeTree.snapshot.ts | 12 +- .../file-modification/routeTree.snapshot.ts | 13 +- .../generator/flat/routeTree.snapshot.ts | 12 +- .../nested-layouts/routeTree.snapshot.ts | 12 +- .../generator/nested/routeTree.snapshot.ts | 12 +- .../no-manifest/routeTree.snapshot.ts | 13 +- .../route-groups/routeTree.snapshot.ts | 13 +- .../single-level/routeTree.snapshot.ts | 13 +- .../routeTree.snapshot.ts | 13 +- .../generator/virtual/routeTree.snapshot.ts | 12 +- 39 files changed, 10739 insertions(+), 408 deletions(-) diff --git a/examples/react/authenticated-routes/src/routeTree.gen.ts b/examples/react/authenticated-routes/src/routeTree.gen.ts index f876489d26..2dd5bd56a6 100644 --- a/examples/react/authenticated-routes/src/routeTree.gen.ts +++ b/examples/react/authenticated-routes/src/routeTree.gen.ts @@ -140,7 +140,7 @@ const AuthRouteChildren: AuthRouteChildren = { const AuthRouteWithChildren = AuthRoute._addFileChildren(AuthRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '': typeof AuthRouteWithChildren '/login': typeof LoginRoute @@ -150,7 +150,7 @@ interface FileRoutesByFullPath { '/invoices/': typeof AuthInvoicesIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '': typeof AuthRouteWithChildren '/login': typeof LoginRoute @@ -159,7 +159,8 @@ interface FileRoutesByTo { '/invoices': typeof AuthInvoicesIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/_auth': typeof AuthRouteWithChildren '/login': typeof LoginRoute @@ -169,7 +170,7 @@ interface FileRoutesById { '/_auth/invoices/': typeof AuthInvoicesIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -182,6 +183,7 @@ interface FileRouteTypes { fileRoutesByTo: FileRoutesByTo to: '/' | '' | '/login' | '/dashboard' | '/invoices/$invoiceId' | '/invoices' id: + | '__root__' | '/' | '/_auth' | '/login' @@ -192,7 +194,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute AuthRoute: typeof AuthRouteWithChildren LoginRoute: typeof LoginRoute diff --git a/examples/react/basic-file-based-codesplitting/src/routeTree.gen.ts b/examples/react/basic-file-based-codesplitting/src/routeTree.gen.ts index 5d2c72de03..05b1ca3fd1 100644 --- a/examples/react/basic-file-based-codesplitting/src/routeTree.gen.ts +++ b/examples/react/basic-file-based-codesplitting/src/routeTree.gen.ts @@ -188,7 +188,7 @@ const LayoutTestLazyRouteWithChildren = LayoutTestLazyRoute._addFileChildren( LayoutTestLazyRouteChildren, ) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexLazyRoute '/posts': typeof PostsRouteWithChildren '': typeof LayoutTestLazyRouteWithChildren @@ -200,7 +200,7 @@ interface FileRoutesByFullPath { '/layout-b/test': typeof LayoutTestLayoutBTestLazyRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexLazyRoute '': typeof LayoutTestLazyRouteWithChildren '/posts/$postId': typeof PostsPostIdRouteRoute @@ -211,7 +211,8 @@ interface FileRoutesByTo { '/layout-b/test': typeof LayoutTestLayoutBTestLazyRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexLazyRoute '/posts': typeof PostsRouteWithChildren '/_layout-test': typeof LayoutTestLazyRouteWithChildren @@ -223,7 +224,7 @@ interface FileRoutesById { '/_layout-test/layout-b/test': typeof LayoutTestLayoutBTestLazyRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -246,6 +247,7 @@ interface FileRouteTypes { | '/posts/$postId/deep' | '/layout-b/test' id: + | '__root__' | '/' | '/posts' | '/_layout-test' @@ -258,7 +260,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexLazyRoute: typeof IndexLazyRoute PostsRoute: typeof PostsRouteWithChildren LayoutTestLazyRoute: typeof LayoutTestLazyRouteWithChildren diff --git a/examples/react/basic-file-based/src/routeTree.gen.ts b/examples/react/basic-file-based/src/routeTree.gen.ts index 3a1e550804..149df203a2 100644 --- a/examples/react/basic-file-based/src/routeTree.gen.ts +++ b/examples/react/basic-file-based/src/routeTree.gen.ts @@ -164,7 +164,7 @@ const PostsRouteChildren: PostsRouteChildren = { const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '': typeof LayoutLayout2RouteWithChildren '/posts': typeof PostsRouteWithChildren @@ -174,7 +174,7 @@ interface FileRoutesByFullPath { '/layout-b': typeof LayoutLayout2LayoutBRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '': typeof LayoutLayout2RouteWithChildren '/posts/$postId': typeof PostsPostIdRoute @@ -183,7 +183,8 @@ interface FileRoutesByTo { '/layout-b': typeof LayoutLayout2LayoutBRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/_layout': typeof LayoutRouteWithChildren '/posts': typeof PostsRouteWithChildren @@ -194,7 +195,7 @@ interface FileRoutesById { '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -207,6 +208,7 @@ interface FileRouteTypes { fileRoutesByTo: FileRoutesByTo to: '/' | '' | '/posts/$postId' | '/posts' | '/layout-a' | '/layout-b' id: + | '__root__' | '/' | '/_layout' | '/posts' @@ -218,7 +220,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute LayoutRoute: typeof LayoutRouteWithChildren PostsRoute: typeof PostsRouteWithChildren diff --git a/examples/react/basic-react-query-file-based/src/routeTree.gen.ts b/examples/react/basic-react-query-file-based/src/routeTree.gen.ts index 3a1e550804..149df203a2 100644 --- a/examples/react/basic-react-query-file-based/src/routeTree.gen.ts +++ b/examples/react/basic-react-query-file-based/src/routeTree.gen.ts @@ -164,7 +164,7 @@ const PostsRouteChildren: PostsRouteChildren = { const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '': typeof LayoutLayout2RouteWithChildren '/posts': typeof PostsRouteWithChildren @@ -174,7 +174,7 @@ interface FileRoutesByFullPath { '/layout-b': typeof LayoutLayout2LayoutBRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '': typeof LayoutLayout2RouteWithChildren '/posts/$postId': typeof PostsPostIdRoute @@ -183,7 +183,8 @@ interface FileRoutesByTo { '/layout-b': typeof LayoutLayout2LayoutBRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/_layout': typeof LayoutRouteWithChildren '/posts': typeof PostsRouteWithChildren @@ -194,7 +195,7 @@ interface FileRoutesById { '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -207,6 +208,7 @@ interface FileRouteTypes { fileRoutesByTo: FileRoutesByTo to: '/' | '' | '/posts/$postId' | '/posts' | '/layout-a' | '/layout-b' id: + | '__root__' | '/' | '/_layout' | '/posts' @@ -218,7 +220,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute LayoutRoute: typeof LayoutRouteWithChildren PostsRoute: typeof PostsRouteWithChildren diff --git a/examples/react/basic-ssr-file-based/src/routeTree.gen.ts b/examples/react/basic-ssr-file-based/src/routeTree.gen.ts index b03a565b9a..b1fe712511 100644 --- a/examples/react/basic-ssr-file-based/src/routeTree.gen.ts +++ b/examples/react/basic-ssr-file-based/src/routeTree.gen.ts @@ -100,7 +100,7 @@ const PostsRouteChildren: PostsRouteChildren = { const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/error': typeof ErrorRoute '/posts': typeof PostsRouteWithChildren @@ -108,14 +108,15 @@ interface FileRoutesByFullPath { '/posts/': typeof PostsIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/error': typeof ErrorRoute '/posts/$postId': typeof PostsPostIdRoute '/posts': typeof PostsIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/error': typeof ErrorRoute '/posts': typeof PostsRouteWithChildren @@ -123,16 +124,16 @@ interface FileRoutesById { '/posts/': typeof PostsIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' | '/error' | '/posts' | '/posts/$postId' | '/posts/' fileRoutesByTo: FileRoutesByTo to: '/' | '/error' | '/posts/$postId' | '/posts' - id: '/' | '/error' | '/posts' | '/posts/$postId' | '/posts/' + id: '__root__' | '/' | '/error' | '/posts' | '/posts/$postId' | '/posts/' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute ErrorRoute: typeof ErrorRoute PostsRoute: typeof PostsRouteWithChildren diff --git a/examples/react/basic-ssr-streaming-file-based/src/routeTree.gen.ts b/examples/react/basic-ssr-streaming-file-based/src/routeTree.gen.ts index b03a565b9a..b1fe712511 100644 --- a/examples/react/basic-ssr-streaming-file-based/src/routeTree.gen.ts +++ b/examples/react/basic-ssr-streaming-file-based/src/routeTree.gen.ts @@ -100,7 +100,7 @@ const PostsRouteChildren: PostsRouteChildren = { const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/error': typeof ErrorRoute '/posts': typeof PostsRouteWithChildren @@ -108,14 +108,15 @@ interface FileRoutesByFullPath { '/posts/': typeof PostsIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/error': typeof ErrorRoute '/posts/$postId': typeof PostsPostIdRoute '/posts': typeof PostsIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/error': typeof ErrorRoute '/posts': typeof PostsRouteWithChildren @@ -123,16 +124,16 @@ interface FileRoutesById { '/posts/': typeof PostsIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' | '/error' | '/posts' | '/posts/$postId' | '/posts/' fileRoutesByTo: FileRoutesByTo to: '/' | '/error' | '/posts/$postId' | '/posts' - id: '/' | '/error' | '/posts' | '/posts/$postId' | '/posts/' + id: '__root__' | '/' | '/error' | '/posts' | '/posts/$postId' | '/posts/' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute ErrorRoute: typeof ErrorRoute PostsRoute: typeof PostsRouteWithChildren diff --git a/examples/react/basic-virtual-file-based/src/routeTree.gen.ts b/examples/react/basic-virtual-file-based/src/routeTree.gen.ts index 98172f8933..da6e49f4dc 100644 --- a/examples/react/basic-virtual-file-based/src/routeTree.gen.ts +++ b/examples/react/basic-virtual-file-based/src/routeTree.gen.ts @@ -232,7 +232,7 @@ const ClassicHelloRouteRouteChildren: ClassicHelloRouteRouteChildren = { const ClassicHelloRouteRouteWithChildren = ClassicHelloRouteRoute._addFileChildren(ClassicHelloRouteRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof homeRoute '': typeof layoutSecondLayoutRouteWithChildren '/posts': typeof postsPostsRouteWithChildren @@ -246,7 +246,7 @@ interface FileRoutesByFullPath { '/classic/hello/': typeof ClassicHelloIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof homeRoute '': typeof layoutSecondLayoutRouteWithChildren '/posts': typeof postsPostsHomeRoute @@ -258,7 +258,8 @@ interface FileRoutesByTo { '/classic/hello': typeof ClassicHelloIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof homeRoute '/_first': typeof layoutFirstLayoutRouteWithChildren '/posts': typeof postsPostsRouteWithChildren @@ -273,7 +274,7 @@ interface FileRoutesById { '/classic/hello/': typeof ClassicHelloIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -299,6 +300,7 @@ interface FileRouteTypes { | '/classic/hello/world' | '/classic/hello' id: + | '__root__' | '/' | '/_first' | '/posts' @@ -314,7 +316,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { homeRoute: typeof homeRoute layoutFirstLayoutRoute: typeof layoutFirstLayoutRouteWithChildren postsPostsRoute: typeof postsPostsRouteWithChildren diff --git a/examples/react/basic-virtual-inside-file-based/src/routeTree.gen.ts b/examples/react/basic-virtual-inside-file-based/src/routeTree.gen.ts index a00fc42a57..d54a36a3be 100644 --- a/examples/react/basic-virtual-inside-file-based/src/routeTree.gen.ts +++ b/examples/react/basic-virtual-inside-file-based/src/routeTree.gen.ts @@ -194,7 +194,7 @@ const PostsRouteChildren: PostsRouteChildren = { const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '': typeof LayoutLayout2RouteWithChildren '/posts': typeof PostsRouteWithChildren @@ -206,7 +206,7 @@ interface FileRoutesByFullPath { '/posts/inception/deeper': typeof postsLetsGoDeeperHomeRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '': typeof LayoutLayout2RouteWithChildren '/posts': typeof postsHomeRoute @@ -217,7 +217,8 @@ interface FileRoutesByTo { '/posts/inception/deeper': typeof postsLetsGoDeeperHomeRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/_layout': typeof LayoutRouteWithChildren '/posts': typeof PostsRouteWithChildren @@ -230,7 +231,7 @@ interface FileRoutesById { '/posts/inception/deeper/': typeof postsLetsGoDeeperHomeRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -253,6 +254,7 @@ interface FileRouteTypes { | '/posts/inception' | '/posts/inception/deeper' id: + | '__root__' | '/' | '/_layout' | '/posts' @@ -266,7 +268,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute LayoutRoute: typeof LayoutRouteWithChildren PostsRoute: typeof PostsRouteWithChildren diff --git a/examples/react/kitchen-sink-file-based/src/routeTree.gen.ts b/examples/react/kitchen-sink-file-based/src/routeTree.gen.ts index dd342e9d9b..a0c9538c42 100644 --- a/examples/react/kitchen-sink-file-based/src/routeTree.gen.ts +++ b/examples/react/kitchen-sink-file-based/src/routeTree.gen.ts @@ -320,7 +320,7 @@ const DashboardRouteWithChildren = DashboardRoute._addFileChildren( DashboardRouteChildren, ) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '': typeof LayoutRouteWithChildren '/dashboard': typeof DashboardRouteWithChildren @@ -339,7 +339,7 @@ interface FileRoutesByFullPath { '/dashboard/users/': typeof DashboardUsersIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '': typeof LayoutRouteWithChildren '/login': typeof LoginRoute @@ -355,7 +355,8 @@ interface FileRoutesByTo { '/dashboard/users': typeof DashboardUsersIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/_auth': typeof AuthRouteWithChildren '/_layout': typeof LayoutRouteWithChildren @@ -375,7 +376,7 @@ interface FileRoutesById { '/dashboard/users/': typeof DashboardUsersIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -410,6 +411,7 @@ interface FileRouteTypes { | '/dashboard/invoices' | '/dashboard/users' id: + | '__root__' | '/' | '/_auth' | '/_layout' @@ -430,7 +432,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute AuthRoute: typeof AuthRouteWithChildren LayoutRoute: typeof LayoutRouteWithChildren diff --git a/examples/react/kitchen-sink-react-query-file-based/src/routeTree.gen.ts b/examples/react/kitchen-sink-react-query-file-based/src/routeTree.gen.ts index 6501333207..e7c0895a6c 100644 --- a/examples/react/kitchen-sink-react-query-file-based/src/routeTree.gen.ts +++ b/examples/react/kitchen-sink-react-query-file-based/src/routeTree.gen.ts @@ -319,7 +319,7 @@ const DashboardRouteWithChildren = DashboardRoute._addFileChildren( DashboardRouteChildren, ) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '': typeof LayoutRouteWithChildren '/dashboard': typeof DashboardRouteWithChildren @@ -338,7 +338,7 @@ interface FileRoutesByFullPath { '/dashboard/users/': typeof DashboardUsersIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '': typeof LayoutRouteWithChildren '/login': typeof LoginRoute @@ -354,7 +354,8 @@ interface FileRoutesByTo { '/dashboard/users': typeof DashboardUsersIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/_auth': typeof AuthRouteWithChildren '/_layout': typeof LayoutRouteWithChildren @@ -374,7 +375,7 @@ interface FileRoutesById { '/dashboard/users/': typeof DashboardUsersIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -409,6 +410,7 @@ interface FileRouteTypes { | '/dashboard/invoices' | '/dashboard/users' id: + | '__root__' | '/' | '/_auth' | '/_layout' @@ -429,7 +431,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute AuthRoute: typeof AuthRouteWithChildren LayoutRoute: typeof LayoutRouteWithChildren diff --git a/examples/react/large-file-based/src/routeTree.gen.ts b/examples/react/large-file-based/src/routeTree.gen.ts index f60b8d145f..77c0460a15 100644 --- a/examples/react/large-file-based/src/routeTree.gen.ts +++ b/examples/react/large-file-based/src/routeTree.gen.ts @@ -19,6 +19,408 @@ import { Route as ParamsRouteImport } from './routes/params/route' import { Route as IndexImport } from './routes/index' import { Route as SearchSearchPlaceholderImport } from './routes/search/searchPlaceholder' import { Route as ParamsParamsPlaceholderImport } from './routes/params/$paramsPlaceholder' +import { Route as genRelative99Import } from './routes/(gen)/relative99' +import { Route as genRelative98Import } from './routes/(gen)/relative98' +import { Route as genRelative97Import } from './routes/(gen)/relative97' +import { Route as genRelative96Import } from './routes/(gen)/relative96' +import { Route as genRelative95Import } from './routes/(gen)/relative95' +import { Route as genRelative94Import } from './routes/(gen)/relative94' +import { Route as genRelative93Import } from './routes/(gen)/relative93' +import { Route as genRelative92Import } from './routes/(gen)/relative92' +import { Route as genRelative91Import } from './routes/(gen)/relative91' +import { Route as genRelative90Import } from './routes/(gen)/relative90' +import { Route as genRelative9Import } from './routes/(gen)/relative9' +import { Route as genRelative89Import } from './routes/(gen)/relative89' +import { Route as genRelative88Import } from './routes/(gen)/relative88' +import { Route as genRelative87Import } from './routes/(gen)/relative87' +import { Route as genRelative86Import } from './routes/(gen)/relative86' +import { Route as genRelative85Import } from './routes/(gen)/relative85' +import { Route as genRelative84Import } from './routes/(gen)/relative84' +import { Route as genRelative83Import } from './routes/(gen)/relative83' +import { Route as genRelative82Import } from './routes/(gen)/relative82' +import { Route as genRelative81Import } from './routes/(gen)/relative81' +import { Route as genRelative80Import } from './routes/(gen)/relative80' +import { Route as genRelative8Import } from './routes/(gen)/relative8' +import { Route as genRelative79Import } from './routes/(gen)/relative79' +import { Route as genRelative78Import } from './routes/(gen)/relative78' +import { Route as genRelative77Import } from './routes/(gen)/relative77' +import { Route as genRelative76Import } from './routes/(gen)/relative76' +import { Route as genRelative75Import } from './routes/(gen)/relative75' +import { Route as genRelative74Import } from './routes/(gen)/relative74' +import { Route as genRelative73Import } from './routes/(gen)/relative73' +import { Route as genRelative72Import } from './routes/(gen)/relative72' +import { Route as genRelative71Import } from './routes/(gen)/relative71' +import { Route as genRelative70Import } from './routes/(gen)/relative70' +import { Route as genRelative7Import } from './routes/(gen)/relative7' +import { Route as genRelative69Import } from './routes/(gen)/relative69' +import { Route as genRelative68Import } from './routes/(gen)/relative68' +import { Route as genRelative67Import } from './routes/(gen)/relative67' +import { Route as genRelative66Import } from './routes/(gen)/relative66' +import { Route as genRelative65Import } from './routes/(gen)/relative65' +import { Route as genRelative64Import } from './routes/(gen)/relative64' +import { Route as genRelative63Import } from './routes/(gen)/relative63' +import { Route as genRelative62Import } from './routes/(gen)/relative62' +import { Route as genRelative61Import } from './routes/(gen)/relative61' +import { Route as genRelative60Import } from './routes/(gen)/relative60' +import { Route as genRelative6Import } from './routes/(gen)/relative6' +import { Route as genRelative59Import } from './routes/(gen)/relative59' +import { Route as genRelative58Import } from './routes/(gen)/relative58' +import { Route as genRelative57Import } from './routes/(gen)/relative57' +import { Route as genRelative56Import } from './routes/(gen)/relative56' +import { Route as genRelative55Import } from './routes/(gen)/relative55' +import { Route as genRelative54Import } from './routes/(gen)/relative54' +import { Route as genRelative53Import } from './routes/(gen)/relative53' +import { Route as genRelative52Import } from './routes/(gen)/relative52' +import { Route as genRelative51Import } from './routes/(gen)/relative51' +import { Route as genRelative50Import } from './routes/(gen)/relative50' +import { Route as genRelative5Import } from './routes/(gen)/relative5' +import { Route as genRelative49Import } from './routes/(gen)/relative49' +import { Route as genRelative48Import } from './routes/(gen)/relative48' +import { Route as genRelative47Import } from './routes/(gen)/relative47' +import { Route as genRelative46Import } from './routes/(gen)/relative46' +import { Route as genRelative45Import } from './routes/(gen)/relative45' +import { Route as genRelative44Import } from './routes/(gen)/relative44' +import { Route as genRelative43Import } from './routes/(gen)/relative43' +import { Route as genRelative42Import } from './routes/(gen)/relative42' +import { Route as genRelative41Import } from './routes/(gen)/relative41' +import { Route as genRelative40Import } from './routes/(gen)/relative40' +import { Route as genRelative4Import } from './routes/(gen)/relative4' +import { Route as genRelative39Import } from './routes/(gen)/relative39' +import { Route as genRelative38Import } from './routes/(gen)/relative38' +import { Route as genRelative37Import } from './routes/(gen)/relative37' +import { Route as genRelative36Import } from './routes/(gen)/relative36' +import { Route as genRelative35Import } from './routes/(gen)/relative35' +import { Route as genRelative34Import } from './routes/(gen)/relative34' +import { Route as genRelative33Import } from './routes/(gen)/relative33' +import { Route as genRelative32Import } from './routes/(gen)/relative32' +import { Route as genRelative31Import } from './routes/(gen)/relative31' +import { Route as genRelative30Import } from './routes/(gen)/relative30' +import { Route as genRelative3Import } from './routes/(gen)/relative3' +import { Route as genRelative29Import } from './routes/(gen)/relative29' +import { Route as genRelative28Import } from './routes/(gen)/relative28' +import { Route as genRelative27Import } from './routes/(gen)/relative27' +import { Route as genRelative26Import } from './routes/(gen)/relative26' +import { Route as genRelative25Import } from './routes/(gen)/relative25' +import { Route as genRelative24Import } from './routes/(gen)/relative24' +import { Route as genRelative23Import } from './routes/(gen)/relative23' +import { Route as genRelative22Import } from './routes/(gen)/relative22' +import { Route as genRelative21Import } from './routes/(gen)/relative21' +import { Route as genRelative20Import } from './routes/(gen)/relative20' +import { Route as genRelative2Import } from './routes/(gen)/relative2' +import { Route as genRelative19Import } from './routes/(gen)/relative19' +import { Route as genRelative18Import } from './routes/(gen)/relative18' +import { Route as genRelative17Import } from './routes/(gen)/relative17' +import { Route as genRelative16Import } from './routes/(gen)/relative16' +import { Route as genRelative15Import } from './routes/(gen)/relative15' +import { Route as genRelative14Import } from './routes/(gen)/relative14' +import { Route as genRelative13Import } from './routes/(gen)/relative13' +import { Route as genRelative12Import } from './routes/(gen)/relative12' +import { Route as genRelative11Import } from './routes/(gen)/relative11' +import { Route as genRelative10Import } from './routes/(gen)/relative10' +import { Route as genRelative1Import } from './routes/(gen)/relative1' +import { Route as genRelative0Import } from './routes/(gen)/relative0' +import { Route as genAbsolute99Import } from './routes/(gen)/absolute99' +import { Route as genAbsolute98Import } from './routes/(gen)/absolute98' +import { Route as genAbsolute97Import } from './routes/(gen)/absolute97' +import { Route as genAbsolute96Import } from './routes/(gen)/absolute96' +import { Route as genAbsolute95Import } from './routes/(gen)/absolute95' +import { Route as genAbsolute94Import } from './routes/(gen)/absolute94' +import { Route as genAbsolute93Import } from './routes/(gen)/absolute93' +import { Route as genAbsolute92Import } from './routes/(gen)/absolute92' +import { Route as genAbsolute91Import } from './routes/(gen)/absolute91' +import { Route as genAbsolute90Import } from './routes/(gen)/absolute90' +import { Route as genAbsolute9Import } from './routes/(gen)/absolute9' +import { Route as genAbsolute89Import } from './routes/(gen)/absolute89' +import { Route as genAbsolute88Import } from './routes/(gen)/absolute88' +import { Route as genAbsolute87Import } from './routes/(gen)/absolute87' +import { Route as genAbsolute86Import } from './routes/(gen)/absolute86' +import { Route as genAbsolute85Import } from './routes/(gen)/absolute85' +import { Route as genAbsolute84Import } from './routes/(gen)/absolute84' +import { Route as genAbsolute83Import } from './routes/(gen)/absolute83' +import { Route as genAbsolute82Import } from './routes/(gen)/absolute82' +import { Route as genAbsolute81Import } from './routes/(gen)/absolute81' +import { Route as genAbsolute80Import } from './routes/(gen)/absolute80' +import { Route as genAbsolute8Import } from './routes/(gen)/absolute8' +import { Route as genAbsolute79Import } from './routes/(gen)/absolute79' +import { Route as genAbsolute78Import } from './routes/(gen)/absolute78' +import { Route as genAbsolute77Import } from './routes/(gen)/absolute77' +import { Route as genAbsolute76Import } from './routes/(gen)/absolute76' +import { Route as genAbsolute75Import } from './routes/(gen)/absolute75' +import { Route as genAbsolute74Import } from './routes/(gen)/absolute74' +import { Route as genAbsolute73Import } from './routes/(gen)/absolute73' +import { Route as genAbsolute72Import } from './routes/(gen)/absolute72' +import { Route as genAbsolute71Import } from './routes/(gen)/absolute71' +import { Route as genAbsolute70Import } from './routes/(gen)/absolute70' +import { Route as genAbsolute7Import } from './routes/(gen)/absolute7' +import { Route as genAbsolute69Import } from './routes/(gen)/absolute69' +import { Route as genAbsolute68Import } from './routes/(gen)/absolute68' +import { Route as genAbsolute67Import } from './routes/(gen)/absolute67' +import { Route as genAbsolute66Import } from './routes/(gen)/absolute66' +import { Route as genAbsolute65Import } from './routes/(gen)/absolute65' +import { Route as genAbsolute64Import } from './routes/(gen)/absolute64' +import { Route as genAbsolute63Import } from './routes/(gen)/absolute63' +import { Route as genAbsolute62Import } from './routes/(gen)/absolute62' +import { Route as genAbsolute61Import } from './routes/(gen)/absolute61' +import { Route as genAbsolute60Import } from './routes/(gen)/absolute60' +import { Route as genAbsolute6Import } from './routes/(gen)/absolute6' +import { Route as genAbsolute59Import } from './routes/(gen)/absolute59' +import { Route as genAbsolute58Import } from './routes/(gen)/absolute58' +import { Route as genAbsolute57Import } from './routes/(gen)/absolute57' +import { Route as genAbsolute56Import } from './routes/(gen)/absolute56' +import { Route as genAbsolute55Import } from './routes/(gen)/absolute55' +import { Route as genAbsolute54Import } from './routes/(gen)/absolute54' +import { Route as genAbsolute53Import } from './routes/(gen)/absolute53' +import { Route as genAbsolute52Import } from './routes/(gen)/absolute52' +import { Route as genAbsolute51Import } from './routes/(gen)/absolute51' +import { Route as genAbsolute50Import } from './routes/(gen)/absolute50' +import { Route as genAbsolute5Import } from './routes/(gen)/absolute5' +import { Route as genAbsolute49Import } from './routes/(gen)/absolute49' +import { Route as genAbsolute48Import } from './routes/(gen)/absolute48' +import { Route as genAbsolute47Import } from './routes/(gen)/absolute47' +import { Route as genAbsolute46Import } from './routes/(gen)/absolute46' +import { Route as genAbsolute45Import } from './routes/(gen)/absolute45' +import { Route as genAbsolute44Import } from './routes/(gen)/absolute44' +import { Route as genAbsolute43Import } from './routes/(gen)/absolute43' +import { Route as genAbsolute42Import } from './routes/(gen)/absolute42' +import { Route as genAbsolute41Import } from './routes/(gen)/absolute41' +import { Route as genAbsolute40Import } from './routes/(gen)/absolute40' +import { Route as genAbsolute4Import } from './routes/(gen)/absolute4' +import { Route as genAbsolute39Import } from './routes/(gen)/absolute39' +import { Route as genAbsolute38Import } from './routes/(gen)/absolute38' +import { Route as genAbsolute37Import } from './routes/(gen)/absolute37' +import { Route as genAbsolute36Import } from './routes/(gen)/absolute36' +import { Route as genAbsolute35Import } from './routes/(gen)/absolute35' +import { Route as genAbsolute34Import } from './routes/(gen)/absolute34' +import { Route as genAbsolute33Import } from './routes/(gen)/absolute33' +import { Route as genAbsolute32Import } from './routes/(gen)/absolute32' +import { Route as genAbsolute31Import } from './routes/(gen)/absolute31' +import { Route as genAbsolute30Import } from './routes/(gen)/absolute30' +import { Route as genAbsolute3Import } from './routes/(gen)/absolute3' +import { Route as genAbsolute29Import } from './routes/(gen)/absolute29' +import { Route as genAbsolute28Import } from './routes/(gen)/absolute28' +import { Route as genAbsolute27Import } from './routes/(gen)/absolute27' +import { Route as genAbsolute26Import } from './routes/(gen)/absolute26' +import { Route as genAbsolute25Import } from './routes/(gen)/absolute25' +import { Route as genAbsolute24Import } from './routes/(gen)/absolute24' +import { Route as genAbsolute23Import } from './routes/(gen)/absolute23' +import { Route as genAbsolute22Import } from './routes/(gen)/absolute22' +import { Route as genAbsolute21Import } from './routes/(gen)/absolute21' +import { Route as genAbsolute20Import } from './routes/(gen)/absolute20' +import { Route as genAbsolute2Import } from './routes/(gen)/absolute2' +import { Route as genAbsolute19Import } from './routes/(gen)/absolute19' +import { Route as genAbsolute18Import } from './routes/(gen)/absolute18' +import { Route as genAbsolute17Import } from './routes/(gen)/absolute17' +import { Route as genAbsolute16Import } from './routes/(gen)/absolute16' +import { Route as genAbsolute15Import } from './routes/(gen)/absolute15' +import { Route as genAbsolute14Import } from './routes/(gen)/absolute14' +import { Route as genAbsolute13Import } from './routes/(gen)/absolute13' +import { Route as genAbsolute12Import } from './routes/(gen)/absolute12' +import { Route as genAbsolute11Import } from './routes/(gen)/absolute11' +import { Route as genAbsolute10Import } from './routes/(gen)/absolute10' +import { Route as genAbsolute1Import } from './routes/(gen)/absolute1' +import { Route as genAbsolute0Import } from './routes/(gen)/absolute0' +import { Route as genSearchRouteImport } from './routes/(gen)/search/route' +import { Route as genParamsRouteImport } from './routes/(gen)/params/route' +import { Route as genSearchSearch99Import } from './routes/(gen)/search/search99' +import { Route as genSearchSearch98Import } from './routes/(gen)/search/search98' +import { Route as genSearchSearch97Import } from './routes/(gen)/search/search97' +import { Route as genSearchSearch96Import } from './routes/(gen)/search/search96' +import { Route as genSearchSearch95Import } from './routes/(gen)/search/search95' +import { Route as genSearchSearch94Import } from './routes/(gen)/search/search94' +import { Route as genSearchSearch93Import } from './routes/(gen)/search/search93' +import { Route as genSearchSearch92Import } from './routes/(gen)/search/search92' +import { Route as genSearchSearch91Import } from './routes/(gen)/search/search91' +import { Route as genSearchSearch90Import } from './routes/(gen)/search/search90' +import { Route as genSearchSearch9Import } from './routes/(gen)/search/search9' +import { Route as genSearchSearch89Import } from './routes/(gen)/search/search89' +import { Route as genSearchSearch88Import } from './routes/(gen)/search/search88' +import { Route as genSearchSearch87Import } from './routes/(gen)/search/search87' +import { Route as genSearchSearch86Import } from './routes/(gen)/search/search86' +import { Route as genSearchSearch85Import } from './routes/(gen)/search/search85' +import { Route as genSearchSearch84Import } from './routes/(gen)/search/search84' +import { Route as genSearchSearch83Import } from './routes/(gen)/search/search83' +import { Route as genSearchSearch82Import } from './routes/(gen)/search/search82' +import { Route as genSearchSearch81Import } from './routes/(gen)/search/search81' +import { Route as genSearchSearch80Import } from './routes/(gen)/search/search80' +import { Route as genSearchSearch8Import } from './routes/(gen)/search/search8' +import { Route as genSearchSearch79Import } from './routes/(gen)/search/search79' +import { Route as genSearchSearch78Import } from './routes/(gen)/search/search78' +import { Route as genSearchSearch77Import } from './routes/(gen)/search/search77' +import { Route as genSearchSearch76Import } from './routes/(gen)/search/search76' +import { Route as genSearchSearch75Import } from './routes/(gen)/search/search75' +import { Route as genSearchSearch74Import } from './routes/(gen)/search/search74' +import { Route as genSearchSearch73Import } from './routes/(gen)/search/search73' +import { Route as genSearchSearch72Import } from './routes/(gen)/search/search72' +import { Route as genSearchSearch71Import } from './routes/(gen)/search/search71' +import { Route as genSearchSearch70Import } from './routes/(gen)/search/search70' +import { Route as genSearchSearch7Import } from './routes/(gen)/search/search7' +import { Route as genSearchSearch69Import } from './routes/(gen)/search/search69' +import { Route as genSearchSearch68Import } from './routes/(gen)/search/search68' +import { Route as genSearchSearch67Import } from './routes/(gen)/search/search67' +import { Route as genSearchSearch66Import } from './routes/(gen)/search/search66' +import { Route as genSearchSearch65Import } from './routes/(gen)/search/search65' +import { Route as genSearchSearch64Import } from './routes/(gen)/search/search64' +import { Route as genSearchSearch63Import } from './routes/(gen)/search/search63' +import { Route as genSearchSearch62Import } from './routes/(gen)/search/search62' +import { Route as genSearchSearch61Import } from './routes/(gen)/search/search61' +import { Route as genSearchSearch60Import } from './routes/(gen)/search/search60' +import { Route as genSearchSearch6Import } from './routes/(gen)/search/search6' +import { Route as genSearchSearch59Import } from './routes/(gen)/search/search59' +import { Route as genSearchSearch58Import } from './routes/(gen)/search/search58' +import { Route as genSearchSearch57Import } from './routes/(gen)/search/search57' +import { Route as genSearchSearch56Import } from './routes/(gen)/search/search56' +import { Route as genSearchSearch55Import } from './routes/(gen)/search/search55' +import { Route as genSearchSearch54Import } from './routes/(gen)/search/search54' +import { Route as genSearchSearch53Import } from './routes/(gen)/search/search53' +import { Route as genSearchSearch52Import } from './routes/(gen)/search/search52' +import { Route as genSearchSearch51Import } from './routes/(gen)/search/search51' +import { Route as genSearchSearch50Import } from './routes/(gen)/search/search50' +import { Route as genSearchSearch5Import } from './routes/(gen)/search/search5' +import { Route as genSearchSearch49Import } from './routes/(gen)/search/search49' +import { Route as genSearchSearch48Import } from './routes/(gen)/search/search48' +import { Route as genSearchSearch47Import } from './routes/(gen)/search/search47' +import { Route as genSearchSearch46Import } from './routes/(gen)/search/search46' +import { Route as genSearchSearch45Import } from './routes/(gen)/search/search45' +import { Route as genSearchSearch44Import } from './routes/(gen)/search/search44' +import { Route as genSearchSearch43Import } from './routes/(gen)/search/search43' +import { Route as genSearchSearch42Import } from './routes/(gen)/search/search42' +import { Route as genSearchSearch41Import } from './routes/(gen)/search/search41' +import { Route as genSearchSearch40Import } from './routes/(gen)/search/search40' +import { Route as genSearchSearch4Import } from './routes/(gen)/search/search4' +import { Route as genSearchSearch39Import } from './routes/(gen)/search/search39' +import { Route as genSearchSearch38Import } from './routes/(gen)/search/search38' +import { Route as genSearchSearch37Import } from './routes/(gen)/search/search37' +import { Route as genSearchSearch36Import } from './routes/(gen)/search/search36' +import { Route as genSearchSearch35Import } from './routes/(gen)/search/search35' +import { Route as genSearchSearch34Import } from './routes/(gen)/search/search34' +import { Route as genSearchSearch33Import } from './routes/(gen)/search/search33' +import { Route as genSearchSearch32Import } from './routes/(gen)/search/search32' +import { Route as genSearchSearch31Import } from './routes/(gen)/search/search31' +import { Route as genSearchSearch30Import } from './routes/(gen)/search/search30' +import { Route as genSearchSearch3Import } from './routes/(gen)/search/search3' +import { Route as genSearchSearch29Import } from './routes/(gen)/search/search29' +import { Route as genSearchSearch28Import } from './routes/(gen)/search/search28' +import { Route as genSearchSearch27Import } from './routes/(gen)/search/search27' +import { Route as genSearchSearch26Import } from './routes/(gen)/search/search26' +import { Route as genSearchSearch25Import } from './routes/(gen)/search/search25' +import { Route as genSearchSearch24Import } from './routes/(gen)/search/search24' +import { Route as genSearchSearch23Import } from './routes/(gen)/search/search23' +import { Route as genSearchSearch22Import } from './routes/(gen)/search/search22' +import { Route as genSearchSearch21Import } from './routes/(gen)/search/search21' +import { Route as genSearchSearch20Import } from './routes/(gen)/search/search20' +import { Route as genSearchSearch2Import } from './routes/(gen)/search/search2' +import { Route as genSearchSearch19Import } from './routes/(gen)/search/search19' +import { Route as genSearchSearch18Import } from './routes/(gen)/search/search18' +import { Route as genSearchSearch17Import } from './routes/(gen)/search/search17' +import { Route as genSearchSearch16Import } from './routes/(gen)/search/search16' +import { Route as genSearchSearch15Import } from './routes/(gen)/search/search15' +import { Route as genSearchSearch14Import } from './routes/(gen)/search/search14' +import { Route as genSearchSearch13Import } from './routes/(gen)/search/search13' +import { Route as genSearchSearch12Import } from './routes/(gen)/search/search12' +import { Route as genSearchSearch11Import } from './routes/(gen)/search/search11' +import { Route as genSearchSearch10Import } from './routes/(gen)/search/search10' +import { Route as genSearchSearch1Import } from './routes/(gen)/search/search1' +import { Route as genSearchSearch0Import } from './routes/(gen)/search/search0' +import { Route as genParamsParam99Import } from './routes/(gen)/params/$param99' +import { Route as genParamsParam98Import } from './routes/(gen)/params/$param98' +import { Route as genParamsParam97Import } from './routes/(gen)/params/$param97' +import { Route as genParamsParam96Import } from './routes/(gen)/params/$param96' +import { Route as genParamsParam95Import } from './routes/(gen)/params/$param95' +import { Route as genParamsParam94Import } from './routes/(gen)/params/$param94' +import { Route as genParamsParam93Import } from './routes/(gen)/params/$param93' +import { Route as genParamsParam92Import } from './routes/(gen)/params/$param92' +import { Route as genParamsParam91Import } from './routes/(gen)/params/$param91' +import { Route as genParamsParam90Import } from './routes/(gen)/params/$param90' +import { Route as genParamsParam9Import } from './routes/(gen)/params/$param9' +import { Route as genParamsParam89Import } from './routes/(gen)/params/$param89' +import { Route as genParamsParam88Import } from './routes/(gen)/params/$param88' +import { Route as genParamsParam87Import } from './routes/(gen)/params/$param87' +import { Route as genParamsParam86Import } from './routes/(gen)/params/$param86' +import { Route as genParamsParam85Import } from './routes/(gen)/params/$param85' +import { Route as genParamsParam84Import } from './routes/(gen)/params/$param84' +import { Route as genParamsParam83Import } from './routes/(gen)/params/$param83' +import { Route as genParamsParam82Import } from './routes/(gen)/params/$param82' +import { Route as genParamsParam81Import } from './routes/(gen)/params/$param81' +import { Route as genParamsParam80Import } from './routes/(gen)/params/$param80' +import { Route as genParamsParam8Import } from './routes/(gen)/params/$param8' +import { Route as genParamsParam79Import } from './routes/(gen)/params/$param79' +import { Route as genParamsParam78Import } from './routes/(gen)/params/$param78' +import { Route as genParamsParam77Import } from './routes/(gen)/params/$param77' +import { Route as genParamsParam76Import } from './routes/(gen)/params/$param76' +import { Route as genParamsParam75Import } from './routes/(gen)/params/$param75' +import { Route as genParamsParam74Import } from './routes/(gen)/params/$param74' +import { Route as genParamsParam73Import } from './routes/(gen)/params/$param73' +import { Route as genParamsParam72Import } from './routes/(gen)/params/$param72' +import { Route as genParamsParam71Import } from './routes/(gen)/params/$param71' +import { Route as genParamsParam70Import } from './routes/(gen)/params/$param70' +import { Route as genParamsParam7Import } from './routes/(gen)/params/$param7' +import { Route as genParamsParam69Import } from './routes/(gen)/params/$param69' +import { Route as genParamsParam68Import } from './routes/(gen)/params/$param68' +import { Route as genParamsParam67Import } from './routes/(gen)/params/$param67' +import { Route as genParamsParam66Import } from './routes/(gen)/params/$param66' +import { Route as genParamsParam65Import } from './routes/(gen)/params/$param65' +import { Route as genParamsParam64Import } from './routes/(gen)/params/$param64' +import { Route as genParamsParam63Import } from './routes/(gen)/params/$param63' +import { Route as genParamsParam62Import } from './routes/(gen)/params/$param62' +import { Route as genParamsParam61Import } from './routes/(gen)/params/$param61' +import { Route as genParamsParam60Import } from './routes/(gen)/params/$param60' +import { Route as genParamsParam6Import } from './routes/(gen)/params/$param6' +import { Route as genParamsParam59Import } from './routes/(gen)/params/$param59' +import { Route as genParamsParam58Import } from './routes/(gen)/params/$param58' +import { Route as genParamsParam57Import } from './routes/(gen)/params/$param57' +import { Route as genParamsParam56Import } from './routes/(gen)/params/$param56' +import { Route as genParamsParam55Import } from './routes/(gen)/params/$param55' +import { Route as genParamsParam54Import } from './routes/(gen)/params/$param54' +import { Route as genParamsParam53Import } from './routes/(gen)/params/$param53' +import { Route as genParamsParam52Import } from './routes/(gen)/params/$param52' +import { Route as genParamsParam51Import } from './routes/(gen)/params/$param51' +import { Route as genParamsParam50Import } from './routes/(gen)/params/$param50' +import { Route as genParamsParam5Import } from './routes/(gen)/params/$param5' +import { Route as genParamsParam49Import } from './routes/(gen)/params/$param49' +import { Route as genParamsParam48Import } from './routes/(gen)/params/$param48' +import { Route as genParamsParam47Import } from './routes/(gen)/params/$param47' +import { Route as genParamsParam46Import } from './routes/(gen)/params/$param46' +import { Route as genParamsParam45Import } from './routes/(gen)/params/$param45' +import { Route as genParamsParam44Import } from './routes/(gen)/params/$param44' +import { Route as genParamsParam43Import } from './routes/(gen)/params/$param43' +import { Route as genParamsParam42Import } from './routes/(gen)/params/$param42' +import { Route as genParamsParam41Import } from './routes/(gen)/params/$param41' +import { Route as genParamsParam40Import } from './routes/(gen)/params/$param40' +import { Route as genParamsParam4Import } from './routes/(gen)/params/$param4' +import { Route as genParamsParam39Import } from './routes/(gen)/params/$param39' +import { Route as genParamsParam38Import } from './routes/(gen)/params/$param38' +import { Route as genParamsParam37Import } from './routes/(gen)/params/$param37' +import { Route as genParamsParam36Import } from './routes/(gen)/params/$param36' +import { Route as genParamsParam35Import } from './routes/(gen)/params/$param35' +import { Route as genParamsParam34Import } from './routes/(gen)/params/$param34' +import { Route as genParamsParam33Import } from './routes/(gen)/params/$param33' +import { Route as genParamsParam32Import } from './routes/(gen)/params/$param32' +import { Route as genParamsParam31Import } from './routes/(gen)/params/$param31' +import { Route as genParamsParam30Import } from './routes/(gen)/params/$param30' +import { Route as genParamsParam3Import } from './routes/(gen)/params/$param3' +import { Route as genParamsParam29Import } from './routes/(gen)/params/$param29' +import { Route as genParamsParam28Import } from './routes/(gen)/params/$param28' +import { Route as genParamsParam27Import } from './routes/(gen)/params/$param27' +import { Route as genParamsParam26Import } from './routes/(gen)/params/$param26' +import { Route as genParamsParam25Import } from './routes/(gen)/params/$param25' +import { Route as genParamsParam24Import } from './routes/(gen)/params/$param24' +import { Route as genParamsParam23Import } from './routes/(gen)/params/$param23' +import { Route as genParamsParam22Import } from './routes/(gen)/params/$param22' +import { Route as genParamsParam21Import } from './routes/(gen)/params/$param21' +import { Route as genParamsParam20Import } from './routes/(gen)/params/$param20' +import { Route as genParamsParam2Import } from './routes/(gen)/params/$param2' +import { Route as genParamsParam19Import } from './routes/(gen)/params/$param19' +import { Route as genParamsParam18Import } from './routes/(gen)/params/$param18' +import { Route as genParamsParam17Import } from './routes/(gen)/params/$param17' +import { Route as genParamsParam16Import } from './routes/(gen)/params/$param16' +import { Route as genParamsParam15Import } from './routes/(gen)/params/$param15' +import { Route as genParamsParam14Import } from './routes/(gen)/params/$param14' +import { Route as genParamsParam13Import } from './routes/(gen)/params/$param13' +import { Route as genParamsParam12Import } from './routes/(gen)/params/$param12' +import { Route as genParamsParam11Import } from './routes/(gen)/params/$param11' +import { Route as genParamsParam10Import } from './routes/(gen)/params/$param10' +import { Route as genParamsParam1Import } from './routes/(gen)/params/$param1' +import { Route as genParamsParam0Import } from './routes/(gen)/params/$param0' // Create/Update Routes @@ -62,229 +464,10079 @@ const ParamsParamsPlaceholderRoute = ParamsParamsPlaceholderImport.update({ getParentRoute: () => ParamsRouteRoute, } as any) -// Populate the FileRoutesByPath interface +const genRelative99Route = genRelative99Import.update({ + path: '/relative99', + getParentRoute: () => rootRoute, +} as any) -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/': { - id: '/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof IndexImport - parentRoute: typeof rootRoute - } - '/params': { - id: '/params' - path: '/params' - fullPath: '/params' - preLoaderRoute: typeof ParamsRouteImport - parentRoute: typeof rootRoute - } - '/search': { - id: '/search' - path: '/search' - fullPath: '/search' - preLoaderRoute: typeof SearchRouteImport - parentRoute: typeof rootRoute - } - '/absolute': { - id: '/absolute' - path: '/absolute' - fullPath: '/absolute' - preLoaderRoute: typeof AbsoluteImport - parentRoute: typeof rootRoute - } - '/linkProps': { - id: '/linkProps' - path: '/linkProps' - fullPath: '/linkProps' - preLoaderRoute: typeof LinkPropsImport - parentRoute: typeof rootRoute - } - '/relative': { - id: '/relative' - path: '/relative' - fullPath: '/relative' - preLoaderRoute: typeof RelativeImport - parentRoute: typeof rootRoute - } - '/params/$paramsPlaceholder': { - id: '/params/$paramsPlaceholder' - path: '/$paramsPlaceholder' - fullPath: '/params/$paramsPlaceholder' - preLoaderRoute: typeof ParamsParamsPlaceholderImport - parentRoute: typeof ParamsRouteImport - } - '/search/searchPlaceholder': { - id: '/search/searchPlaceholder' - path: '/searchPlaceholder' - fullPath: '/search/searchPlaceholder' - preLoaderRoute: typeof SearchSearchPlaceholderImport - parentRoute: typeof SearchRouteImport - } - } -} +const genRelative98Route = genRelative98Import.update({ + path: '/relative98', + getParentRoute: () => rootRoute, +} as any) -// Create and export the route tree +const genRelative97Route = genRelative97Import.update({ + path: '/relative97', + getParentRoute: () => rootRoute, +} as any) -interface ParamsRouteRouteChildren { - ParamsParamsPlaceholderRoute: typeof ParamsParamsPlaceholderRoute -} +const genRelative96Route = genRelative96Import.update({ + path: '/relative96', + getParentRoute: () => rootRoute, +} as any) -const ParamsRouteRouteChildren: ParamsRouteRouteChildren = { - ParamsParamsPlaceholderRoute: ParamsParamsPlaceholderRoute, -} +const genRelative95Route = genRelative95Import.update({ + path: '/relative95', + getParentRoute: () => rootRoute, +} as any) -const ParamsRouteRouteWithChildren = ParamsRouteRoute._addFileChildren( - ParamsRouteRouteChildren, -) +const genRelative94Route = genRelative94Import.update({ + path: '/relative94', + getParentRoute: () => rootRoute, +} as any) -interface SearchRouteRouteChildren { - SearchSearchPlaceholderRoute: typeof SearchSearchPlaceholderRoute -} +const genRelative93Route = genRelative93Import.update({ + path: '/relative93', + getParentRoute: () => rootRoute, +} as any) -const SearchRouteRouteChildren: SearchRouteRouteChildren = { - SearchSearchPlaceholderRoute: SearchSearchPlaceholderRoute, -} +const genRelative92Route = genRelative92Import.update({ + path: '/relative92', + getParentRoute: () => rootRoute, +} as any) -const SearchRouteRouteWithChildren = SearchRouteRoute._addFileChildren( - SearchRouteRouteChildren, -) +const genRelative91Route = genRelative91Import.update({ + path: '/relative91', + getParentRoute: () => rootRoute, +} as any) -interface FileRoutesByFullPath { - '/': typeof IndexRoute - '/params': typeof ParamsRouteRouteWithChildren - '/search': typeof SearchRouteRouteWithChildren - '/absolute': typeof AbsoluteRoute - '/linkProps': typeof LinkPropsRoute - '/relative': typeof RelativeRoute - '/params/$paramsPlaceholder': typeof ParamsParamsPlaceholderRoute - '/search/searchPlaceholder': typeof SearchSearchPlaceholderRoute -} +const genRelative90Route = genRelative90Import.update({ + path: '/relative90', + getParentRoute: () => rootRoute, +} as any) -interface FileRoutesByTo { - '/': typeof IndexRoute - '/params': typeof ParamsRouteRouteWithChildren - '/search': typeof SearchRouteRouteWithChildren - '/absolute': typeof AbsoluteRoute - '/linkProps': typeof LinkPropsRoute - '/relative': typeof RelativeRoute - '/params/$paramsPlaceholder': typeof ParamsParamsPlaceholderRoute - '/search/searchPlaceholder': typeof SearchSearchPlaceholderRoute -} +const genRelative9Route = genRelative9Import.update({ + path: '/relative9', + getParentRoute: () => rootRoute, +} as any) -interface FileRoutesById { - '/': typeof IndexRoute - '/params': typeof ParamsRouteRouteWithChildren - '/search': typeof SearchRouteRouteWithChildren - '/absolute': typeof AbsoluteRoute - '/linkProps': typeof LinkPropsRoute - '/relative': typeof RelativeRoute - '/params/$paramsPlaceholder': typeof ParamsParamsPlaceholderRoute - '/search/searchPlaceholder': typeof SearchSearchPlaceholderRoute -} +const genRelative89Route = genRelative89Import.update({ + path: '/relative89', + getParentRoute: () => rootRoute, +} as any) -interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: - | '/' - | '/params' - | '/search' - | '/absolute' - | '/linkProps' - | '/relative' - | '/params/$paramsPlaceholder' - | '/search/searchPlaceholder' - fileRoutesByTo: FileRoutesByTo - to: - | '/' - | '/params' - | '/search' - | '/absolute' - | '/linkProps' - | '/relative' - | '/params/$paramsPlaceholder' - | '/search/searchPlaceholder' - id: - | '/' - | '/params' - | '/search' - | '/absolute' - | '/linkProps' - | '/relative' - | '/params/$paramsPlaceholder' - | '/search/searchPlaceholder' - fileRoutesById: FileRoutesById -} +const genRelative88Route = genRelative88Import.update({ + path: '/relative88', + getParentRoute: () => rootRoute, +} as any) -interface RootRouteChildren { - IndexRoute: typeof IndexRoute - ParamsRouteRoute: typeof ParamsRouteRouteWithChildren - SearchRouteRoute: typeof SearchRouteRouteWithChildren - AbsoluteRoute: typeof AbsoluteRoute - LinkPropsRoute: typeof LinkPropsRoute - RelativeRoute: typeof RelativeRoute -} +const genRelative87Route = genRelative87Import.update({ + path: '/relative87', + getParentRoute: () => rootRoute, +} as any) -const rootRouteChildren: RootRouteChildren = { - IndexRoute: IndexRoute, - ParamsRouteRoute: ParamsRouteRouteWithChildren, - SearchRouteRoute: SearchRouteRouteWithChildren, - AbsoluteRoute: AbsoluteRoute, - LinkPropsRoute: LinkPropsRoute, - RelativeRoute: RelativeRoute, -} +const genRelative86Route = genRelative86Import.update({ + path: '/relative86', + getParentRoute: () => rootRoute, +} as any) -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() +const genRelative85Route = genRelative85Import.update({ + path: '/relative85', + getParentRoute: () => rootRoute, +} as any) -/* prettier-ignore-end */ +const genRelative84Route = genRelative84Import.update({ + path: '/relative84', + getParentRoute: () => rootRoute, +} as any) -/* ROUTE_MANIFEST_START -{ - "routes": { - "__root__": { - "filePath": "__root.tsx", - "children": [ - "/", - "/params", - "/search", - "/absolute", - "/linkProps", - "/relative" - ] - }, - "/": { - "filePath": "index.tsx" - }, - "/params": { - "filePath": "params/route.tsx", - "children": [ - "/params/$paramsPlaceholder" - ] - }, - "/search": { - "filePath": "search/route.tsx", - "children": [ - "/search/searchPlaceholder" - ] - }, - "/absolute": { - "filePath": "absolute.tsx" - }, - "/linkProps": { - "filePath": "linkProps.tsx" - }, - "/relative": { - "filePath": "relative.tsx" - }, - "/params/$paramsPlaceholder": { - "filePath": "params/$paramsPlaceholder.tsx", - "parent": "/params" - }, - "/search/searchPlaceholder": { - "filePath": "search/searchPlaceholder.tsx", +const genRelative83Route = genRelative83Import.update({ + path: '/relative83', + getParentRoute: () => rootRoute, +} as any) + +const genRelative82Route = genRelative82Import.update({ + path: '/relative82', + getParentRoute: () => rootRoute, +} as any) + +const genRelative81Route = genRelative81Import.update({ + path: '/relative81', + getParentRoute: () => rootRoute, +} as any) + +const genRelative80Route = genRelative80Import.update({ + path: '/relative80', + getParentRoute: () => rootRoute, +} as any) + +const genRelative8Route = genRelative8Import.update({ + path: '/relative8', + getParentRoute: () => rootRoute, +} as any) + +const genRelative79Route = genRelative79Import.update({ + path: '/relative79', + getParentRoute: () => rootRoute, +} as any) + +const genRelative78Route = genRelative78Import.update({ + path: '/relative78', + getParentRoute: () => rootRoute, +} as any) + +const genRelative77Route = genRelative77Import.update({ + path: '/relative77', + getParentRoute: () => rootRoute, +} as any) + +const genRelative76Route = genRelative76Import.update({ + path: '/relative76', + getParentRoute: () => rootRoute, +} as any) + +const genRelative75Route = genRelative75Import.update({ + path: '/relative75', + getParentRoute: () => rootRoute, +} as any) + +const genRelative74Route = genRelative74Import.update({ + path: '/relative74', + getParentRoute: () => rootRoute, +} as any) + +const genRelative73Route = genRelative73Import.update({ + path: '/relative73', + getParentRoute: () => rootRoute, +} as any) + +const genRelative72Route = genRelative72Import.update({ + path: '/relative72', + getParentRoute: () => rootRoute, +} as any) + +const genRelative71Route = genRelative71Import.update({ + path: '/relative71', + getParentRoute: () => rootRoute, +} as any) + +const genRelative70Route = genRelative70Import.update({ + path: '/relative70', + getParentRoute: () => rootRoute, +} as any) + +const genRelative7Route = genRelative7Import.update({ + path: '/relative7', + getParentRoute: () => rootRoute, +} as any) + +const genRelative69Route = genRelative69Import.update({ + path: '/relative69', + getParentRoute: () => rootRoute, +} as any) + +const genRelative68Route = genRelative68Import.update({ + path: '/relative68', + getParentRoute: () => rootRoute, +} as any) + +const genRelative67Route = genRelative67Import.update({ + path: '/relative67', + getParentRoute: () => rootRoute, +} as any) + +const genRelative66Route = genRelative66Import.update({ + path: '/relative66', + getParentRoute: () => rootRoute, +} as any) + +const genRelative65Route = genRelative65Import.update({ + path: '/relative65', + getParentRoute: () => rootRoute, +} as any) + +const genRelative64Route = genRelative64Import.update({ + path: '/relative64', + getParentRoute: () => rootRoute, +} as any) + +const genRelative63Route = genRelative63Import.update({ + path: '/relative63', + getParentRoute: () => rootRoute, +} as any) + +const genRelative62Route = genRelative62Import.update({ + path: '/relative62', + getParentRoute: () => rootRoute, +} as any) + +const genRelative61Route = genRelative61Import.update({ + path: '/relative61', + getParentRoute: () => rootRoute, +} as any) + +const genRelative60Route = genRelative60Import.update({ + path: '/relative60', + getParentRoute: () => rootRoute, +} as any) + +const genRelative6Route = genRelative6Import.update({ + path: '/relative6', + getParentRoute: () => rootRoute, +} as any) + +const genRelative59Route = genRelative59Import.update({ + path: '/relative59', + getParentRoute: () => rootRoute, +} as any) + +const genRelative58Route = genRelative58Import.update({ + path: '/relative58', + getParentRoute: () => rootRoute, +} as any) + +const genRelative57Route = genRelative57Import.update({ + path: '/relative57', + getParentRoute: () => rootRoute, +} as any) + +const genRelative56Route = genRelative56Import.update({ + path: '/relative56', + getParentRoute: () => rootRoute, +} as any) + +const genRelative55Route = genRelative55Import.update({ + path: '/relative55', + getParentRoute: () => rootRoute, +} as any) + +const genRelative54Route = genRelative54Import.update({ + path: '/relative54', + getParentRoute: () => rootRoute, +} as any) + +const genRelative53Route = genRelative53Import.update({ + path: '/relative53', + getParentRoute: () => rootRoute, +} as any) + +const genRelative52Route = genRelative52Import.update({ + path: '/relative52', + getParentRoute: () => rootRoute, +} as any) + +const genRelative51Route = genRelative51Import.update({ + path: '/relative51', + getParentRoute: () => rootRoute, +} as any) + +const genRelative50Route = genRelative50Import.update({ + path: '/relative50', + getParentRoute: () => rootRoute, +} as any) + +const genRelative5Route = genRelative5Import.update({ + path: '/relative5', + getParentRoute: () => rootRoute, +} as any) + +const genRelative49Route = genRelative49Import.update({ + path: '/relative49', + getParentRoute: () => rootRoute, +} as any) + +const genRelative48Route = genRelative48Import.update({ + path: '/relative48', + getParentRoute: () => rootRoute, +} as any) + +const genRelative47Route = genRelative47Import.update({ + path: '/relative47', + getParentRoute: () => rootRoute, +} as any) + +const genRelative46Route = genRelative46Import.update({ + path: '/relative46', + getParentRoute: () => rootRoute, +} as any) + +const genRelative45Route = genRelative45Import.update({ + path: '/relative45', + getParentRoute: () => rootRoute, +} as any) + +const genRelative44Route = genRelative44Import.update({ + path: '/relative44', + getParentRoute: () => rootRoute, +} as any) + +const genRelative43Route = genRelative43Import.update({ + path: '/relative43', + getParentRoute: () => rootRoute, +} as any) + +const genRelative42Route = genRelative42Import.update({ + path: '/relative42', + getParentRoute: () => rootRoute, +} as any) + +const genRelative41Route = genRelative41Import.update({ + path: '/relative41', + getParentRoute: () => rootRoute, +} as any) + +const genRelative40Route = genRelative40Import.update({ + path: '/relative40', + getParentRoute: () => rootRoute, +} as any) + +const genRelative4Route = genRelative4Import.update({ + path: '/relative4', + getParentRoute: () => rootRoute, +} as any) + +const genRelative39Route = genRelative39Import.update({ + path: '/relative39', + getParentRoute: () => rootRoute, +} as any) + +const genRelative38Route = genRelative38Import.update({ + path: '/relative38', + getParentRoute: () => rootRoute, +} as any) + +const genRelative37Route = genRelative37Import.update({ + path: '/relative37', + getParentRoute: () => rootRoute, +} as any) + +const genRelative36Route = genRelative36Import.update({ + path: '/relative36', + getParentRoute: () => rootRoute, +} as any) + +const genRelative35Route = genRelative35Import.update({ + path: '/relative35', + getParentRoute: () => rootRoute, +} as any) + +const genRelative34Route = genRelative34Import.update({ + path: '/relative34', + getParentRoute: () => rootRoute, +} as any) + +const genRelative33Route = genRelative33Import.update({ + path: '/relative33', + getParentRoute: () => rootRoute, +} as any) + +const genRelative32Route = genRelative32Import.update({ + path: '/relative32', + getParentRoute: () => rootRoute, +} as any) + +const genRelative31Route = genRelative31Import.update({ + path: '/relative31', + getParentRoute: () => rootRoute, +} as any) + +const genRelative30Route = genRelative30Import.update({ + path: '/relative30', + getParentRoute: () => rootRoute, +} as any) + +const genRelative3Route = genRelative3Import.update({ + path: '/relative3', + getParentRoute: () => rootRoute, +} as any) + +const genRelative29Route = genRelative29Import.update({ + path: '/relative29', + getParentRoute: () => rootRoute, +} as any) + +const genRelative28Route = genRelative28Import.update({ + path: '/relative28', + getParentRoute: () => rootRoute, +} as any) + +const genRelative27Route = genRelative27Import.update({ + path: '/relative27', + getParentRoute: () => rootRoute, +} as any) + +const genRelative26Route = genRelative26Import.update({ + path: '/relative26', + getParentRoute: () => rootRoute, +} as any) + +const genRelative25Route = genRelative25Import.update({ + path: '/relative25', + getParentRoute: () => rootRoute, +} as any) + +const genRelative24Route = genRelative24Import.update({ + path: '/relative24', + getParentRoute: () => rootRoute, +} as any) + +const genRelative23Route = genRelative23Import.update({ + path: '/relative23', + getParentRoute: () => rootRoute, +} as any) + +const genRelative22Route = genRelative22Import.update({ + path: '/relative22', + getParentRoute: () => rootRoute, +} as any) + +const genRelative21Route = genRelative21Import.update({ + path: '/relative21', + getParentRoute: () => rootRoute, +} as any) + +const genRelative20Route = genRelative20Import.update({ + path: '/relative20', + getParentRoute: () => rootRoute, +} as any) + +const genRelative2Route = genRelative2Import.update({ + path: '/relative2', + getParentRoute: () => rootRoute, +} as any) + +const genRelative19Route = genRelative19Import.update({ + path: '/relative19', + getParentRoute: () => rootRoute, +} as any) + +const genRelative18Route = genRelative18Import.update({ + path: '/relative18', + getParentRoute: () => rootRoute, +} as any) + +const genRelative17Route = genRelative17Import.update({ + path: '/relative17', + getParentRoute: () => rootRoute, +} as any) + +const genRelative16Route = genRelative16Import.update({ + path: '/relative16', + getParentRoute: () => rootRoute, +} as any) + +const genRelative15Route = genRelative15Import.update({ + path: '/relative15', + getParentRoute: () => rootRoute, +} as any) + +const genRelative14Route = genRelative14Import.update({ + path: '/relative14', + getParentRoute: () => rootRoute, +} as any) + +const genRelative13Route = genRelative13Import.update({ + path: '/relative13', + getParentRoute: () => rootRoute, +} as any) + +const genRelative12Route = genRelative12Import.update({ + path: '/relative12', + getParentRoute: () => rootRoute, +} as any) + +const genRelative11Route = genRelative11Import.update({ + path: '/relative11', + getParentRoute: () => rootRoute, +} as any) + +const genRelative10Route = genRelative10Import.update({ + path: '/relative10', + getParentRoute: () => rootRoute, +} as any) + +const genRelative1Route = genRelative1Import.update({ + path: '/relative1', + getParentRoute: () => rootRoute, +} as any) + +const genRelative0Route = genRelative0Import.update({ + path: '/relative0', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute99Route = genAbsolute99Import.update({ + path: '/absolute99', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute98Route = genAbsolute98Import.update({ + path: '/absolute98', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute97Route = genAbsolute97Import.update({ + path: '/absolute97', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute96Route = genAbsolute96Import.update({ + path: '/absolute96', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute95Route = genAbsolute95Import.update({ + path: '/absolute95', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute94Route = genAbsolute94Import.update({ + path: '/absolute94', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute93Route = genAbsolute93Import.update({ + path: '/absolute93', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute92Route = genAbsolute92Import.update({ + path: '/absolute92', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute91Route = genAbsolute91Import.update({ + path: '/absolute91', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute90Route = genAbsolute90Import.update({ + path: '/absolute90', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute9Route = genAbsolute9Import.update({ + path: '/absolute9', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute89Route = genAbsolute89Import.update({ + path: '/absolute89', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute88Route = genAbsolute88Import.update({ + path: '/absolute88', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute87Route = genAbsolute87Import.update({ + path: '/absolute87', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute86Route = genAbsolute86Import.update({ + path: '/absolute86', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute85Route = genAbsolute85Import.update({ + path: '/absolute85', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute84Route = genAbsolute84Import.update({ + path: '/absolute84', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute83Route = genAbsolute83Import.update({ + path: '/absolute83', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute82Route = genAbsolute82Import.update({ + path: '/absolute82', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute81Route = genAbsolute81Import.update({ + path: '/absolute81', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute80Route = genAbsolute80Import.update({ + path: '/absolute80', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute8Route = genAbsolute8Import.update({ + path: '/absolute8', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute79Route = genAbsolute79Import.update({ + path: '/absolute79', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute78Route = genAbsolute78Import.update({ + path: '/absolute78', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute77Route = genAbsolute77Import.update({ + path: '/absolute77', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute76Route = genAbsolute76Import.update({ + path: '/absolute76', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute75Route = genAbsolute75Import.update({ + path: '/absolute75', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute74Route = genAbsolute74Import.update({ + path: '/absolute74', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute73Route = genAbsolute73Import.update({ + path: '/absolute73', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute72Route = genAbsolute72Import.update({ + path: '/absolute72', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute71Route = genAbsolute71Import.update({ + path: '/absolute71', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute70Route = genAbsolute70Import.update({ + path: '/absolute70', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute7Route = genAbsolute7Import.update({ + path: '/absolute7', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute69Route = genAbsolute69Import.update({ + path: '/absolute69', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute68Route = genAbsolute68Import.update({ + path: '/absolute68', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute67Route = genAbsolute67Import.update({ + path: '/absolute67', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute66Route = genAbsolute66Import.update({ + path: '/absolute66', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute65Route = genAbsolute65Import.update({ + path: '/absolute65', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute64Route = genAbsolute64Import.update({ + path: '/absolute64', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute63Route = genAbsolute63Import.update({ + path: '/absolute63', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute62Route = genAbsolute62Import.update({ + path: '/absolute62', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute61Route = genAbsolute61Import.update({ + path: '/absolute61', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute60Route = genAbsolute60Import.update({ + path: '/absolute60', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute6Route = genAbsolute6Import.update({ + path: '/absolute6', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute59Route = genAbsolute59Import.update({ + path: '/absolute59', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute58Route = genAbsolute58Import.update({ + path: '/absolute58', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute57Route = genAbsolute57Import.update({ + path: '/absolute57', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute56Route = genAbsolute56Import.update({ + path: '/absolute56', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute55Route = genAbsolute55Import.update({ + path: '/absolute55', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute54Route = genAbsolute54Import.update({ + path: '/absolute54', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute53Route = genAbsolute53Import.update({ + path: '/absolute53', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute52Route = genAbsolute52Import.update({ + path: '/absolute52', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute51Route = genAbsolute51Import.update({ + path: '/absolute51', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute50Route = genAbsolute50Import.update({ + path: '/absolute50', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute5Route = genAbsolute5Import.update({ + path: '/absolute5', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute49Route = genAbsolute49Import.update({ + path: '/absolute49', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute48Route = genAbsolute48Import.update({ + path: '/absolute48', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute47Route = genAbsolute47Import.update({ + path: '/absolute47', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute46Route = genAbsolute46Import.update({ + path: '/absolute46', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute45Route = genAbsolute45Import.update({ + path: '/absolute45', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute44Route = genAbsolute44Import.update({ + path: '/absolute44', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute43Route = genAbsolute43Import.update({ + path: '/absolute43', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute42Route = genAbsolute42Import.update({ + path: '/absolute42', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute41Route = genAbsolute41Import.update({ + path: '/absolute41', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute40Route = genAbsolute40Import.update({ + path: '/absolute40', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute4Route = genAbsolute4Import.update({ + path: '/absolute4', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute39Route = genAbsolute39Import.update({ + path: '/absolute39', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute38Route = genAbsolute38Import.update({ + path: '/absolute38', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute37Route = genAbsolute37Import.update({ + path: '/absolute37', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute36Route = genAbsolute36Import.update({ + path: '/absolute36', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute35Route = genAbsolute35Import.update({ + path: '/absolute35', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute34Route = genAbsolute34Import.update({ + path: '/absolute34', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute33Route = genAbsolute33Import.update({ + path: '/absolute33', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute32Route = genAbsolute32Import.update({ + path: '/absolute32', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute31Route = genAbsolute31Import.update({ + path: '/absolute31', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute30Route = genAbsolute30Import.update({ + path: '/absolute30', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute3Route = genAbsolute3Import.update({ + path: '/absolute3', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute29Route = genAbsolute29Import.update({ + path: '/absolute29', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute28Route = genAbsolute28Import.update({ + path: '/absolute28', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute27Route = genAbsolute27Import.update({ + path: '/absolute27', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute26Route = genAbsolute26Import.update({ + path: '/absolute26', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute25Route = genAbsolute25Import.update({ + path: '/absolute25', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute24Route = genAbsolute24Import.update({ + path: '/absolute24', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute23Route = genAbsolute23Import.update({ + path: '/absolute23', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute22Route = genAbsolute22Import.update({ + path: '/absolute22', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute21Route = genAbsolute21Import.update({ + path: '/absolute21', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute20Route = genAbsolute20Import.update({ + path: '/absolute20', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute2Route = genAbsolute2Import.update({ + path: '/absolute2', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute19Route = genAbsolute19Import.update({ + path: '/absolute19', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute18Route = genAbsolute18Import.update({ + path: '/absolute18', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute17Route = genAbsolute17Import.update({ + path: '/absolute17', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute16Route = genAbsolute16Import.update({ + path: '/absolute16', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute15Route = genAbsolute15Import.update({ + path: '/absolute15', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute14Route = genAbsolute14Import.update({ + path: '/absolute14', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute13Route = genAbsolute13Import.update({ + path: '/absolute13', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute12Route = genAbsolute12Import.update({ + path: '/absolute12', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute11Route = genAbsolute11Import.update({ + path: '/absolute11', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute10Route = genAbsolute10Import.update({ + path: '/absolute10', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute1Route = genAbsolute1Import.update({ + path: '/absolute1', + getParentRoute: () => rootRoute, +} as any) + +const genAbsolute0Route = genAbsolute0Import.update({ + path: '/absolute0', + getParentRoute: () => rootRoute, +} as any) + +const genSearchRouteRoute = genSearchRouteImport.update({ + path: '/search', + getParentRoute: () => rootRoute, +} as any) + +const genParamsRouteRoute = genParamsRouteImport.update({ + path: '/params', + getParentRoute: () => rootRoute, +} as any) + +const genSearchSearch99Route = genSearchSearch99Import.update({ + path: '/search99', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch98Route = genSearchSearch98Import.update({ + path: '/search98', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch97Route = genSearchSearch97Import.update({ + path: '/search97', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch96Route = genSearchSearch96Import.update({ + path: '/search96', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch95Route = genSearchSearch95Import.update({ + path: '/search95', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch94Route = genSearchSearch94Import.update({ + path: '/search94', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch93Route = genSearchSearch93Import.update({ + path: '/search93', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch92Route = genSearchSearch92Import.update({ + path: '/search92', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch91Route = genSearchSearch91Import.update({ + path: '/search91', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch90Route = genSearchSearch90Import.update({ + path: '/search90', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch9Route = genSearchSearch9Import.update({ + path: '/search9', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch89Route = genSearchSearch89Import.update({ + path: '/search89', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch88Route = genSearchSearch88Import.update({ + path: '/search88', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch87Route = genSearchSearch87Import.update({ + path: '/search87', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch86Route = genSearchSearch86Import.update({ + path: '/search86', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch85Route = genSearchSearch85Import.update({ + path: '/search85', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch84Route = genSearchSearch84Import.update({ + path: '/search84', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch83Route = genSearchSearch83Import.update({ + path: '/search83', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch82Route = genSearchSearch82Import.update({ + path: '/search82', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch81Route = genSearchSearch81Import.update({ + path: '/search81', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch80Route = genSearchSearch80Import.update({ + path: '/search80', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch8Route = genSearchSearch8Import.update({ + path: '/search8', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch79Route = genSearchSearch79Import.update({ + path: '/search79', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch78Route = genSearchSearch78Import.update({ + path: '/search78', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch77Route = genSearchSearch77Import.update({ + path: '/search77', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch76Route = genSearchSearch76Import.update({ + path: '/search76', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch75Route = genSearchSearch75Import.update({ + path: '/search75', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch74Route = genSearchSearch74Import.update({ + path: '/search74', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch73Route = genSearchSearch73Import.update({ + path: '/search73', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch72Route = genSearchSearch72Import.update({ + path: '/search72', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch71Route = genSearchSearch71Import.update({ + path: '/search71', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch70Route = genSearchSearch70Import.update({ + path: '/search70', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch7Route = genSearchSearch7Import.update({ + path: '/search7', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch69Route = genSearchSearch69Import.update({ + path: '/search69', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch68Route = genSearchSearch68Import.update({ + path: '/search68', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch67Route = genSearchSearch67Import.update({ + path: '/search67', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch66Route = genSearchSearch66Import.update({ + path: '/search66', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch65Route = genSearchSearch65Import.update({ + path: '/search65', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch64Route = genSearchSearch64Import.update({ + path: '/search64', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch63Route = genSearchSearch63Import.update({ + path: '/search63', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch62Route = genSearchSearch62Import.update({ + path: '/search62', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch61Route = genSearchSearch61Import.update({ + path: '/search61', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch60Route = genSearchSearch60Import.update({ + path: '/search60', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch6Route = genSearchSearch6Import.update({ + path: '/search6', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch59Route = genSearchSearch59Import.update({ + path: '/search59', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch58Route = genSearchSearch58Import.update({ + path: '/search58', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch57Route = genSearchSearch57Import.update({ + path: '/search57', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch56Route = genSearchSearch56Import.update({ + path: '/search56', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch55Route = genSearchSearch55Import.update({ + path: '/search55', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch54Route = genSearchSearch54Import.update({ + path: '/search54', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch53Route = genSearchSearch53Import.update({ + path: '/search53', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch52Route = genSearchSearch52Import.update({ + path: '/search52', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch51Route = genSearchSearch51Import.update({ + path: '/search51', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch50Route = genSearchSearch50Import.update({ + path: '/search50', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch5Route = genSearchSearch5Import.update({ + path: '/search5', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch49Route = genSearchSearch49Import.update({ + path: '/search49', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch48Route = genSearchSearch48Import.update({ + path: '/search48', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch47Route = genSearchSearch47Import.update({ + path: '/search47', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch46Route = genSearchSearch46Import.update({ + path: '/search46', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch45Route = genSearchSearch45Import.update({ + path: '/search45', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch44Route = genSearchSearch44Import.update({ + path: '/search44', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch43Route = genSearchSearch43Import.update({ + path: '/search43', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch42Route = genSearchSearch42Import.update({ + path: '/search42', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch41Route = genSearchSearch41Import.update({ + path: '/search41', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch40Route = genSearchSearch40Import.update({ + path: '/search40', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch4Route = genSearchSearch4Import.update({ + path: '/search4', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch39Route = genSearchSearch39Import.update({ + path: '/search39', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch38Route = genSearchSearch38Import.update({ + path: '/search38', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch37Route = genSearchSearch37Import.update({ + path: '/search37', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch36Route = genSearchSearch36Import.update({ + path: '/search36', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch35Route = genSearchSearch35Import.update({ + path: '/search35', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch34Route = genSearchSearch34Import.update({ + path: '/search34', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch33Route = genSearchSearch33Import.update({ + path: '/search33', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch32Route = genSearchSearch32Import.update({ + path: '/search32', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch31Route = genSearchSearch31Import.update({ + path: '/search31', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch30Route = genSearchSearch30Import.update({ + path: '/search30', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch3Route = genSearchSearch3Import.update({ + path: '/search3', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch29Route = genSearchSearch29Import.update({ + path: '/search29', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch28Route = genSearchSearch28Import.update({ + path: '/search28', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch27Route = genSearchSearch27Import.update({ + path: '/search27', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch26Route = genSearchSearch26Import.update({ + path: '/search26', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch25Route = genSearchSearch25Import.update({ + path: '/search25', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch24Route = genSearchSearch24Import.update({ + path: '/search24', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch23Route = genSearchSearch23Import.update({ + path: '/search23', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch22Route = genSearchSearch22Import.update({ + path: '/search22', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch21Route = genSearchSearch21Import.update({ + path: '/search21', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch20Route = genSearchSearch20Import.update({ + path: '/search20', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch2Route = genSearchSearch2Import.update({ + path: '/search2', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch19Route = genSearchSearch19Import.update({ + path: '/search19', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch18Route = genSearchSearch18Import.update({ + path: '/search18', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch17Route = genSearchSearch17Import.update({ + path: '/search17', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch16Route = genSearchSearch16Import.update({ + path: '/search16', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch15Route = genSearchSearch15Import.update({ + path: '/search15', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch14Route = genSearchSearch14Import.update({ + path: '/search14', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch13Route = genSearchSearch13Import.update({ + path: '/search13', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch12Route = genSearchSearch12Import.update({ + path: '/search12', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch11Route = genSearchSearch11Import.update({ + path: '/search11', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch10Route = genSearchSearch10Import.update({ + path: '/search10', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch1Route = genSearchSearch1Import.update({ + path: '/search1', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genSearchSearch0Route = genSearchSearch0Import.update({ + path: '/search0', + getParentRoute: () => genSearchRouteRoute, +} as any) + +const genParamsParam99Route = genParamsParam99Import.update({ + path: '/$param99', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam98Route = genParamsParam98Import.update({ + path: '/$param98', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam97Route = genParamsParam97Import.update({ + path: '/$param97', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam96Route = genParamsParam96Import.update({ + path: '/$param96', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam95Route = genParamsParam95Import.update({ + path: '/$param95', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam94Route = genParamsParam94Import.update({ + path: '/$param94', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam93Route = genParamsParam93Import.update({ + path: '/$param93', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam92Route = genParamsParam92Import.update({ + path: '/$param92', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam91Route = genParamsParam91Import.update({ + path: '/$param91', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam90Route = genParamsParam90Import.update({ + path: '/$param90', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam9Route = genParamsParam9Import.update({ + path: '/$param9', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam89Route = genParamsParam89Import.update({ + path: '/$param89', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam88Route = genParamsParam88Import.update({ + path: '/$param88', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam87Route = genParamsParam87Import.update({ + path: '/$param87', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam86Route = genParamsParam86Import.update({ + path: '/$param86', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam85Route = genParamsParam85Import.update({ + path: '/$param85', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam84Route = genParamsParam84Import.update({ + path: '/$param84', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam83Route = genParamsParam83Import.update({ + path: '/$param83', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam82Route = genParamsParam82Import.update({ + path: '/$param82', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam81Route = genParamsParam81Import.update({ + path: '/$param81', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam80Route = genParamsParam80Import.update({ + path: '/$param80', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam8Route = genParamsParam8Import.update({ + path: '/$param8', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam79Route = genParamsParam79Import.update({ + path: '/$param79', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam78Route = genParamsParam78Import.update({ + path: '/$param78', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam77Route = genParamsParam77Import.update({ + path: '/$param77', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam76Route = genParamsParam76Import.update({ + path: '/$param76', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam75Route = genParamsParam75Import.update({ + path: '/$param75', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam74Route = genParamsParam74Import.update({ + path: '/$param74', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam73Route = genParamsParam73Import.update({ + path: '/$param73', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam72Route = genParamsParam72Import.update({ + path: '/$param72', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam71Route = genParamsParam71Import.update({ + path: '/$param71', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam70Route = genParamsParam70Import.update({ + path: '/$param70', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam7Route = genParamsParam7Import.update({ + path: '/$param7', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam69Route = genParamsParam69Import.update({ + path: '/$param69', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam68Route = genParamsParam68Import.update({ + path: '/$param68', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam67Route = genParamsParam67Import.update({ + path: '/$param67', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam66Route = genParamsParam66Import.update({ + path: '/$param66', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam65Route = genParamsParam65Import.update({ + path: '/$param65', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam64Route = genParamsParam64Import.update({ + path: '/$param64', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam63Route = genParamsParam63Import.update({ + path: '/$param63', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam62Route = genParamsParam62Import.update({ + path: '/$param62', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam61Route = genParamsParam61Import.update({ + path: '/$param61', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam60Route = genParamsParam60Import.update({ + path: '/$param60', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam6Route = genParamsParam6Import.update({ + path: '/$param6', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam59Route = genParamsParam59Import.update({ + path: '/$param59', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam58Route = genParamsParam58Import.update({ + path: '/$param58', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam57Route = genParamsParam57Import.update({ + path: '/$param57', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam56Route = genParamsParam56Import.update({ + path: '/$param56', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam55Route = genParamsParam55Import.update({ + path: '/$param55', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam54Route = genParamsParam54Import.update({ + path: '/$param54', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam53Route = genParamsParam53Import.update({ + path: '/$param53', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam52Route = genParamsParam52Import.update({ + path: '/$param52', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam51Route = genParamsParam51Import.update({ + path: '/$param51', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam50Route = genParamsParam50Import.update({ + path: '/$param50', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam5Route = genParamsParam5Import.update({ + path: '/$param5', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam49Route = genParamsParam49Import.update({ + path: '/$param49', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam48Route = genParamsParam48Import.update({ + path: '/$param48', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam47Route = genParamsParam47Import.update({ + path: '/$param47', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam46Route = genParamsParam46Import.update({ + path: '/$param46', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam45Route = genParamsParam45Import.update({ + path: '/$param45', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam44Route = genParamsParam44Import.update({ + path: '/$param44', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam43Route = genParamsParam43Import.update({ + path: '/$param43', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam42Route = genParamsParam42Import.update({ + path: '/$param42', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam41Route = genParamsParam41Import.update({ + path: '/$param41', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam40Route = genParamsParam40Import.update({ + path: '/$param40', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam4Route = genParamsParam4Import.update({ + path: '/$param4', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam39Route = genParamsParam39Import.update({ + path: '/$param39', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam38Route = genParamsParam38Import.update({ + path: '/$param38', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam37Route = genParamsParam37Import.update({ + path: '/$param37', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam36Route = genParamsParam36Import.update({ + path: '/$param36', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam35Route = genParamsParam35Import.update({ + path: '/$param35', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam34Route = genParamsParam34Import.update({ + path: '/$param34', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam33Route = genParamsParam33Import.update({ + path: '/$param33', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam32Route = genParamsParam32Import.update({ + path: '/$param32', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam31Route = genParamsParam31Import.update({ + path: '/$param31', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam30Route = genParamsParam30Import.update({ + path: '/$param30', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam3Route = genParamsParam3Import.update({ + path: '/$param3', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam29Route = genParamsParam29Import.update({ + path: '/$param29', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam28Route = genParamsParam28Import.update({ + path: '/$param28', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam27Route = genParamsParam27Import.update({ + path: '/$param27', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam26Route = genParamsParam26Import.update({ + path: '/$param26', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam25Route = genParamsParam25Import.update({ + path: '/$param25', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam24Route = genParamsParam24Import.update({ + path: '/$param24', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam23Route = genParamsParam23Import.update({ + path: '/$param23', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam22Route = genParamsParam22Import.update({ + path: '/$param22', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam21Route = genParamsParam21Import.update({ + path: '/$param21', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam20Route = genParamsParam20Import.update({ + path: '/$param20', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam2Route = genParamsParam2Import.update({ + path: '/$param2', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam19Route = genParamsParam19Import.update({ + path: '/$param19', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam18Route = genParamsParam18Import.update({ + path: '/$param18', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam17Route = genParamsParam17Import.update({ + path: '/$param17', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam16Route = genParamsParam16Import.update({ + path: '/$param16', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam15Route = genParamsParam15Import.update({ + path: '/$param15', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam14Route = genParamsParam14Import.update({ + path: '/$param14', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam13Route = genParamsParam13Import.update({ + path: '/$param13', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam12Route = genParamsParam12Import.update({ + path: '/$param12', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam11Route = genParamsParam11Import.update({ + path: '/$param11', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam10Route = genParamsParam10Import.update({ + path: '/$param10', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam1Route = genParamsParam1Import.update({ + path: '/$param1', + getParentRoute: () => genParamsRouteRoute, +} as any) + +const genParamsParam0Route = genParamsParam0Import.update({ + path: '/$param0', + getParentRoute: () => genParamsRouteRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/params': { + id: '/params' + path: '/params' + fullPath: '/params' + preLoaderRoute: typeof ParamsRouteImport + parentRoute: typeof rootRoute + } + '/search': { + id: '/search' + path: '/search' + fullPath: '/search' + preLoaderRoute: typeof SearchRouteImport + parentRoute: typeof rootRoute + } + '/absolute': { + id: '/absolute' + path: '/absolute' + fullPath: '/absolute' + preLoaderRoute: typeof AbsoluteImport + parentRoute: typeof rootRoute + } + '/linkProps': { + id: '/linkProps' + path: '/linkProps' + fullPath: '/linkProps' + preLoaderRoute: typeof LinkPropsImport + parentRoute: typeof rootRoute + } + '/relative': { + id: '/relative' + path: '/relative' + fullPath: '/relative' + preLoaderRoute: typeof RelativeImport + parentRoute: typeof rootRoute + } + '/(gen)/params': { + id: '/params' + path: '/params' + fullPath: '/params' + preLoaderRoute: typeof genParamsRouteImport + parentRoute: typeof rootRoute + } + '/(gen)/search': { + id: '/search' + path: '/search' + fullPath: '/search' + preLoaderRoute: typeof genSearchRouteImport + parentRoute: typeof rootRoute + } + '/(gen)/absolute0': { + id: '/absolute0' + path: '/absolute0' + fullPath: '/absolute0' + preLoaderRoute: typeof genAbsolute0Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute1': { + id: '/absolute1' + path: '/absolute1' + fullPath: '/absolute1' + preLoaderRoute: typeof genAbsolute1Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute10': { + id: '/absolute10' + path: '/absolute10' + fullPath: '/absolute10' + preLoaderRoute: typeof genAbsolute10Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute11': { + id: '/absolute11' + path: '/absolute11' + fullPath: '/absolute11' + preLoaderRoute: typeof genAbsolute11Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute12': { + id: '/absolute12' + path: '/absolute12' + fullPath: '/absolute12' + preLoaderRoute: typeof genAbsolute12Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute13': { + id: '/absolute13' + path: '/absolute13' + fullPath: '/absolute13' + preLoaderRoute: typeof genAbsolute13Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute14': { + id: '/absolute14' + path: '/absolute14' + fullPath: '/absolute14' + preLoaderRoute: typeof genAbsolute14Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute15': { + id: '/absolute15' + path: '/absolute15' + fullPath: '/absolute15' + preLoaderRoute: typeof genAbsolute15Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute16': { + id: '/absolute16' + path: '/absolute16' + fullPath: '/absolute16' + preLoaderRoute: typeof genAbsolute16Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute17': { + id: '/absolute17' + path: '/absolute17' + fullPath: '/absolute17' + preLoaderRoute: typeof genAbsolute17Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute18': { + id: '/absolute18' + path: '/absolute18' + fullPath: '/absolute18' + preLoaderRoute: typeof genAbsolute18Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute19': { + id: '/absolute19' + path: '/absolute19' + fullPath: '/absolute19' + preLoaderRoute: typeof genAbsolute19Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute2': { + id: '/absolute2' + path: '/absolute2' + fullPath: '/absolute2' + preLoaderRoute: typeof genAbsolute2Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute20': { + id: '/absolute20' + path: '/absolute20' + fullPath: '/absolute20' + preLoaderRoute: typeof genAbsolute20Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute21': { + id: '/absolute21' + path: '/absolute21' + fullPath: '/absolute21' + preLoaderRoute: typeof genAbsolute21Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute22': { + id: '/absolute22' + path: '/absolute22' + fullPath: '/absolute22' + preLoaderRoute: typeof genAbsolute22Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute23': { + id: '/absolute23' + path: '/absolute23' + fullPath: '/absolute23' + preLoaderRoute: typeof genAbsolute23Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute24': { + id: '/absolute24' + path: '/absolute24' + fullPath: '/absolute24' + preLoaderRoute: typeof genAbsolute24Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute25': { + id: '/absolute25' + path: '/absolute25' + fullPath: '/absolute25' + preLoaderRoute: typeof genAbsolute25Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute26': { + id: '/absolute26' + path: '/absolute26' + fullPath: '/absolute26' + preLoaderRoute: typeof genAbsolute26Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute27': { + id: '/absolute27' + path: '/absolute27' + fullPath: '/absolute27' + preLoaderRoute: typeof genAbsolute27Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute28': { + id: '/absolute28' + path: '/absolute28' + fullPath: '/absolute28' + preLoaderRoute: typeof genAbsolute28Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute29': { + id: '/absolute29' + path: '/absolute29' + fullPath: '/absolute29' + preLoaderRoute: typeof genAbsolute29Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute3': { + id: '/absolute3' + path: '/absolute3' + fullPath: '/absolute3' + preLoaderRoute: typeof genAbsolute3Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute30': { + id: '/absolute30' + path: '/absolute30' + fullPath: '/absolute30' + preLoaderRoute: typeof genAbsolute30Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute31': { + id: '/absolute31' + path: '/absolute31' + fullPath: '/absolute31' + preLoaderRoute: typeof genAbsolute31Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute32': { + id: '/absolute32' + path: '/absolute32' + fullPath: '/absolute32' + preLoaderRoute: typeof genAbsolute32Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute33': { + id: '/absolute33' + path: '/absolute33' + fullPath: '/absolute33' + preLoaderRoute: typeof genAbsolute33Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute34': { + id: '/absolute34' + path: '/absolute34' + fullPath: '/absolute34' + preLoaderRoute: typeof genAbsolute34Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute35': { + id: '/absolute35' + path: '/absolute35' + fullPath: '/absolute35' + preLoaderRoute: typeof genAbsolute35Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute36': { + id: '/absolute36' + path: '/absolute36' + fullPath: '/absolute36' + preLoaderRoute: typeof genAbsolute36Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute37': { + id: '/absolute37' + path: '/absolute37' + fullPath: '/absolute37' + preLoaderRoute: typeof genAbsolute37Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute38': { + id: '/absolute38' + path: '/absolute38' + fullPath: '/absolute38' + preLoaderRoute: typeof genAbsolute38Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute39': { + id: '/absolute39' + path: '/absolute39' + fullPath: '/absolute39' + preLoaderRoute: typeof genAbsolute39Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute4': { + id: '/absolute4' + path: '/absolute4' + fullPath: '/absolute4' + preLoaderRoute: typeof genAbsolute4Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute40': { + id: '/absolute40' + path: '/absolute40' + fullPath: '/absolute40' + preLoaderRoute: typeof genAbsolute40Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute41': { + id: '/absolute41' + path: '/absolute41' + fullPath: '/absolute41' + preLoaderRoute: typeof genAbsolute41Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute42': { + id: '/absolute42' + path: '/absolute42' + fullPath: '/absolute42' + preLoaderRoute: typeof genAbsolute42Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute43': { + id: '/absolute43' + path: '/absolute43' + fullPath: '/absolute43' + preLoaderRoute: typeof genAbsolute43Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute44': { + id: '/absolute44' + path: '/absolute44' + fullPath: '/absolute44' + preLoaderRoute: typeof genAbsolute44Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute45': { + id: '/absolute45' + path: '/absolute45' + fullPath: '/absolute45' + preLoaderRoute: typeof genAbsolute45Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute46': { + id: '/absolute46' + path: '/absolute46' + fullPath: '/absolute46' + preLoaderRoute: typeof genAbsolute46Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute47': { + id: '/absolute47' + path: '/absolute47' + fullPath: '/absolute47' + preLoaderRoute: typeof genAbsolute47Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute48': { + id: '/absolute48' + path: '/absolute48' + fullPath: '/absolute48' + preLoaderRoute: typeof genAbsolute48Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute49': { + id: '/absolute49' + path: '/absolute49' + fullPath: '/absolute49' + preLoaderRoute: typeof genAbsolute49Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute5': { + id: '/absolute5' + path: '/absolute5' + fullPath: '/absolute5' + preLoaderRoute: typeof genAbsolute5Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute50': { + id: '/absolute50' + path: '/absolute50' + fullPath: '/absolute50' + preLoaderRoute: typeof genAbsolute50Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute51': { + id: '/absolute51' + path: '/absolute51' + fullPath: '/absolute51' + preLoaderRoute: typeof genAbsolute51Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute52': { + id: '/absolute52' + path: '/absolute52' + fullPath: '/absolute52' + preLoaderRoute: typeof genAbsolute52Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute53': { + id: '/absolute53' + path: '/absolute53' + fullPath: '/absolute53' + preLoaderRoute: typeof genAbsolute53Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute54': { + id: '/absolute54' + path: '/absolute54' + fullPath: '/absolute54' + preLoaderRoute: typeof genAbsolute54Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute55': { + id: '/absolute55' + path: '/absolute55' + fullPath: '/absolute55' + preLoaderRoute: typeof genAbsolute55Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute56': { + id: '/absolute56' + path: '/absolute56' + fullPath: '/absolute56' + preLoaderRoute: typeof genAbsolute56Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute57': { + id: '/absolute57' + path: '/absolute57' + fullPath: '/absolute57' + preLoaderRoute: typeof genAbsolute57Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute58': { + id: '/absolute58' + path: '/absolute58' + fullPath: '/absolute58' + preLoaderRoute: typeof genAbsolute58Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute59': { + id: '/absolute59' + path: '/absolute59' + fullPath: '/absolute59' + preLoaderRoute: typeof genAbsolute59Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute6': { + id: '/absolute6' + path: '/absolute6' + fullPath: '/absolute6' + preLoaderRoute: typeof genAbsolute6Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute60': { + id: '/absolute60' + path: '/absolute60' + fullPath: '/absolute60' + preLoaderRoute: typeof genAbsolute60Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute61': { + id: '/absolute61' + path: '/absolute61' + fullPath: '/absolute61' + preLoaderRoute: typeof genAbsolute61Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute62': { + id: '/absolute62' + path: '/absolute62' + fullPath: '/absolute62' + preLoaderRoute: typeof genAbsolute62Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute63': { + id: '/absolute63' + path: '/absolute63' + fullPath: '/absolute63' + preLoaderRoute: typeof genAbsolute63Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute64': { + id: '/absolute64' + path: '/absolute64' + fullPath: '/absolute64' + preLoaderRoute: typeof genAbsolute64Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute65': { + id: '/absolute65' + path: '/absolute65' + fullPath: '/absolute65' + preLoaderRoute: typeof genAbsolute65Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute66': { + id: '/absolute66' + path: '/absolute66' + fullPath: '/absolute66' + preLoaderRoute: typeof genAbsolute66Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute67': { + id: '/absolute67' + path: '/absolute67' + fullPath: '/absolute67' + preLoaderRoute: typeof genAbsolute67Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute68': { + id: '/absolute68' + path: '/absolute68' + fullPath: '/absolute68' + preLoaderRoute: typeof genAbsolute68Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute69': { + id: '/absolute69' + path: '/absolute69' + fullPath: '/absolute69' + preLoaderRoute: typeof genAbsolute69Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute7': { + id: '/absolute7' + path: '/absolute7' + fullPath: '/absolute7' + preLoaderRoute: typeof genAbsolute7Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute70': { + id: '/absolute70' + path: '/absolute70' + fullPath: '/absolute70' + preLoaderRoute: typeof genAbsolute70Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute71': { + id: '/absolute71' + path: '/absolute71' + fullPath: '/absolute71' + preLoaderRoute: typeof genAbsolute71Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute72': { + id: '/absolute72' + path: '/absolute72' + fullPath: '/absolute72' + preLoaderRoute: typeof genAbsolute72Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute73': { + id: '/absolute73' + path: '/absolute73' + fullPath: '/absolute73' + preLoaderRoute: typeof genAbsolute73Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute74': { + id: '/absolute74' + path: '/absolute74' + fullPath: '/absolute74' + preLoaderRoute: typeof genAbsolute74Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute75': { + id: '/absolute75' + path: '/absolute75' + fullPath: '/absolute75' + preLoaderRoute: typeof genAbsolute75Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute76': { + id: '/absolute76' + path: '/absolute76' + fullPath: '/absolute76' + preLoaderRoute: typeof genAbsolute76Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute77': { + id: '/absolute77' + path: '/absolute77' + fullPath: '/absolute77' + preLoaderRoute: typeof genAbsolute77Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute78': { + id: '/absolute78' + path: '/absolute78' + fullPath: '/absolute78' + preLoaderRoute: typeof genAbsolute78Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute79': { + id: '/absolute79' + path: '/absolute79' + fullPath: '/absolute79' + preLoaderRoute: typeof genAbsolute79Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute8': { + id: '/absolute8' + path: '/absolute8' + fullPath: '/absolute8' + preLoaderRoute: typeof genAbsolute8Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute80': { + id: '/absolute80' + path: '/absolute80' + fullPath: '/absolute80' + preLoaderRoute: typeof genAbsolute80Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute81': { + id: '/absolute81' + path: '/absolute81' + fullPath: '/absolute81' + preLoaderRoute: typeof genAbsolute81Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute82': { + id: '/absolute82' + path: '/absolute82' + fullPath: '/absolute82' + preLoaderRoute: typeof genAbsolute82Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute83': { + id: '/absolute83' + path: '/absolute83' + fullPath: '/absolute83' + preLoaderRoute: typeof genAbsolute83Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute84': { + id: '/absolute84' + path: '/absolute84' + fullPath: '/absolute84' + preLoaderRoute: typeof genAbsolute84Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute85': { + id: '/absolute85' + path: '/absolute85' + fullPath: '/absolute85' + preLoaderRoute: typeof genAbsolute85Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute86': { + id: '/absolute86' + path: '/absolute86' + fullPath: '/absolute86' + preLoaderRoute: typeof genAbsolute86Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute87': { + id: '/absolute87' + path: '/absolute87' + fullPath: '/absolute87' + preLoaderRoute: typeof genAbsolute87Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute88': { + id: '/absolute88' + path: '/absolute88' + fullPath: '/absolute88' + preLoaderRoute: typeof genAbsolute88Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute89': { + id: '/absolute89' + path: '/absolute89' + fullPath: '/absolute89' + preLoaderRoute: typeof genAbsolute89Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute9': { + id: '/absolute9' + path: '/absolute9' + fullPath: '/absolute9' + preLoaderRoute: typeof genAbsolute9Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute90': { + id: '/absolute90' + path: '/absolute90' + fullPath: '/absolute90' + preLoaderRoute: typeof genAbsolute90Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute91': { + id: '/absolute91' + path: '/absolute91' + fullPath: '/absolute91' + preLoaderRoute: typeof genAbsolute91Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute92': { + id: '/absolute92' + path: '/absolute92' + fullPath: '/absolute92' + preLoaderRoute: typeof genAbsolute92Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute93': { + id: '/absolute93' + path: '/absolute93' + fullPath: '/absolute93' + preLoaderRoute: typeof genAbsolute93Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute94': { + id: '/absolute94' + path: '/absolute94' + fullPath: '/absolute94' + preLoaderRoute: typeof genAbsolute94Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute95': { + id: '/absolute95' + path: '/absolute95' + fullPath: '/absolute95' + preLoaderRoute: typeof genAbsolute95Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute96': { + id: '/absolute96' + path: '/absolute96' + fullPath: '/absolute96' + preLoaderRoute: typeof genAbsolute96Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute97': { + id: '/absolute97' + path: '/absolute97' + fullPath: '/absolute97' + preLoaderRoute: typeof genAbsolute97Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute98': { + id: '/absolute98' + path: '/absolute98' + fullPath: '/absolute98' + preLoaderRoute: typeof genAbsolute98Import + parentRoute: typeof rootRoute + } + '/(gen)/absolute99': { + id: '/absolute99' + path: '/absolute99' + fullPath: '/absolute99' + preLoaderRoute: typeof genAbsolute99Import + parentRoute: typeof rootRoute + } + '/(gen)/relative0': { + id: '/relative0' + path: '/relative0' + fullPath: '/relative0' + preLoaderRoute: typeof genRelative0Import + parentRoute: typeof rootRoute + } + '/(gen)/relative1': { + id: '/relative1' + path: '/relative1' + fullPath: '/relative1' + preLoaderRoute: typeof genRelative1Import + parentRoute: typeof rootRoute + } + '/(gen)/relative10': { + id: '/relative10' + path: '/relative10' + fullPath: '/relative10' + preLoaderRoute: typeof genRelative10Import + parentRoute: typeof rootRoute + } + '/(gen)/relative11': { + id: '/relative11' + path: '/relative11' + fullPath: '/relative11' + preLoaderRoute: typeof genRelative11Import + parentRoute: typeof rootRoute + } + '/(gen)/relative12': { + id: '/relative12' + path: '/relative12' + fullPath: '/relative12' + preLoaderRoute: typeof genRelative12Import + parentRoute: typeof rootRoute + } + '/(gen)/relative13': { + id: '/relative13' + path: '/relative13' + fullPath: '/relative13' + preLoaderRoute: typeof genRelative13Import + parentRoute: typeof rootRoute + } + '/(gen)/relative14': { + id: '/relative14' + path: '/relative14' + fullPath: '/relative14' + preLoaderRoute: typeof genRelative14Import + parentRoute: typeof rootRoute + } + '/(gen)/relative15': { + id: '/relative15' + path: '/relative15' + fullPath: '/relative15' + preLoaderRoute: typeof genRelative15Import + parentRoute: typeof rootRoute + } + '/(gen)/relative16': { + id: '/relative16' + path: '/relative16' + fullPath: '/relative16' + preLoaderRoute: typeof genRelative16Import + parentRoute: typeof rootRoute + } + '/(gen)/relative17': { + id: '/relative17' + path: '/relative17' + fullPath: '/relative17' + preLoaderRoute: typeof genRelative17Import + parentRoute: typeof rootRoute + } + '/(gen)/relative18': { + id: '/relative18' + path: '/relative18' + fullPath: '/relative18' + preLoaderRoute: typeof genRelative18Import + parentRoute: typeof rootRoute + } + '/(gen)/relative19': { + id: '/relative19' + path: '/relative19' + fullPath: '/relative19' + preLoaderRoute: typeof genRelative19Import + parentRoute: typeof rootRoute + } + '/(gen)/relative2': { + id: '/relative2' + path: '/relative2' + fullPath: '/relative2' + preLoaderRoute: typeof genRelative2Import + parentRoute: typeof rootRoute + } + '/(gen)/relative20': { + id: '/relative20' + path: '/relative20' + fullPath: '/relative20' + preLoaderRoute: typeof genRelative20Import + parentRoute: typeof rootRoute + } + '/(gen)/relative21': { + id: '/relative21' + path: '/relative21' + fullPath: '/relative21' + preLoaderRoute: typeof genRelative21Import + parentRoute: typeof rootRoute + } + '/(gen)/relative22': { + id: '/relative22' + path: '/relative22' + fullPath: '/relative22' + preLoaderRoute: typeof genRelative22Import + parentRoute: typeof rootRoute + } + '/(gen)/relative23': { + id: '/relative23' + path: '/relative23' + fullPath: '/relative23' + preLoaderRoute: typeof genRelative23Import + parentRoute: typeof rootRoute + } + '/(gen)/relative24': { + id: '/relative24' + path: '/relative24' + fullPath: '/relative24' + preLoaderRoute: typeof genRelative24Import + parentRoute: typeof rootRoute + } + '/(gen)/relative25': { + id: '/relative25' + path: '/relative25' + fullPath: '/relative25' + preLoaderRoute: typeof genRelative25Import + parentRoute: typeof rootRoute + } + '/(gen)/relative26': { + id: '/relative26' + path: '/relative26' + fullPath: '/relative26' + preLoaderRoute: typeof genRelative26Import + parentRoute: typeof rootRoute + } + '/(gen)/relative27': { + id: '/relative27' + path: '/relative27' + fullPath: '/relative27' + preLoaderRoute: typeof genRelative27Import + parentRoute: typeof rootRoute + } + '/(gen)/relative28': { + id: '/relative28' + path: '/relative28' + fullPath: '/relative28' + preLoaderRoute: typeof genRelative28Import + parentRoute: typeof rootRoute + } + '/(gen)/relative29': { + id: '/relative29' + path: '/relative29' + fullPath: '/relative29' + preLoaderRoute: typeof genRelative29Import + parentRoute: typeof rootRoute + } + '/(gen)/relative3': { + id: '/relative3' + path: '/relative3' + fullPath: '/relative3' + preLoaderRoute: typeof genRelative3Import + parentRoute: typeof rootRoute + } + '/(gen)/relative30': { + id: '/relative30' + path: '/relative30' + fullPath: '/relative30' + preLoaderRoute: typeof genRelative30Import + parentRoute: typeof rootRoute + } + '/(gen)/relative31': { + id: '/relative31' + path: '/relative31' + fullPath: '/relative31' + preLoaderRoute: typeof genRelative31Import + parentRoute: typeof rootRoute + } + '/(gen)/relative32': { + id: '/relative32' + path: '/relative32' + fullPath: '/relative32' + preLoaderRoute: typeof genRelative32Import + parentRoute: typeof rootRoute + } + '/(gen)/relative33': { + id: '/relative33' + path: '/relative33' + fullPath: '/relative33' + preLoaderRoute: typeof genRelative33Import + parentRoute: typeof rootRoute + } + '/(gen)/relative34': { + id: '/relative34' + path: '/relative34' + fullPath: '/relative34' + preLoaderRoute: typeof genRelative34Import + parentRoute: typeof rootRoute + } + '/(gen)/relative35': { + id: '/relative35' + path: '/relative35' + fullPath: '/relative35' + preLoaderRoute: typeof genRelative35Import + parentRoute: typeof rootRoute + } + '/(gen)/relative36': { + id: '/relative36' + path: '/relative36' + fullPath: '/relative36' + preLoaderRoute: typeof genRelative36Import + parentRoute: typeof rootRoute + } + '/(gen)/relative37': { + id: '/relative37' + path: '/relative37' + fullPath: '/relative37' + preLoaderRoute: typeof genRelative37Import + parentRoute: typeof rootRoute + } + '/(gen)/relative38': { + id: '/relative38' + path: '/relative38' + fullPath: '/relative38' + preLoaderRoute: typeof genRelative38Import + parentRoute: typeof rootRoute + } + '/(gen)/relative39': { + id: '/relative39' + path: '/relative39' + fullPath: '/relative39' + preLoaderRoute: typeof genRelative39Import + parentRoute: typeof rootRoute + } + '/(gen)/relative4': { + id: '/relative4' + path: '/relative4' + fullPath: '/relative4' + preLoaderRoute: typeof genRelative4Import + parentRoute: typeof rootRoute + } + '/(gen)/relative40': { + id: '/relative40' + path: '/relative40' + fullPath: '/relative40' + preLoaderRoute: typeof genRelative40Import + parentRoute: typeof rootRoute + } + '/(gen)/relative41': { + id: '/relative41' + path: '/relative41' + fullPath: '/relative41' + preLoaderRoute: typeof genRelative41Import + parentRoute: typeof rootRoute + } + '/(gen)/relative42': { + id: '/relative42' + path: '/relative42' + fullPath: '/relative42' + preLoaderRoute: typeof genRelative42Import + parentRoute: typeof rootRoute + } + '/(gen)/relative43': { + id: '/relative43' + path: '/relative43' + fullPath: '/relative43' + preLoaderRoute: typeof genRelative43Import + parentRoute: typeof rootRoute + } + '/(gen)/relative44': { + id: '/relative44' + path: '/relative44' + fullPath: '/relative44' + preLoaderRoute: typeof genRelative44Import + parentRoute: typeof rootRoute + } + '/(gen)/relative45': { + id: '/relative45' + path: '/relative45' + fullPath: '/relative45' + preLoaderRoute: typeof genRelative45Import + parentRoute: typeof rootRoute + } + '/(gen)/relative46': { + id: '/relative46' + path: '/relative46' + fullPath: '/relative46' + preLoaderRoute: typeof genRelative46Import + parentRoute: typeof rootRoute + } + '/(gen)/relative47': { + id: '/relative47' + path: '/relative47' + fullPath: '/relative47' + preLoaderRoute: typeof genRelative47Import + parentRoute: typeof rootRoute + } + '/(gen)/relative48': { + id: '/relative48' + path: '/relative48' + fullPath: '/relative48' + preLoaderRoute: typeof genRelative48Import + parentRoute: typeof rootRoute + } + '/(gen)/relative49': { + id: '/relative49' + path: '/relative49' + fullPath: '/relative49' + preLoaderRoute: typeof genRelative49Import + parentRoute: typeof rootRoute + } + '/(gen)/relative5': { + id: '/relative5' + path: '/relative5' + fullPath: '/relative5' + preLoaderRoute: typeof genRelative5Import + parentRoute: typeof rootRoute + } + '/(gen)/relative50': { + id: '/relative50' + path: '/relative50' + fullPath: '/relative50' + preLoaderRoute: typeof genRelative50Import + parentRoute: typeof rootRoute + } + '/(gen)/relative51': { + id: '/relative51' + path: '/relative51' + fullPath: '/relative51' + preLoaderRoute: typeof genRelative51Import + parentRoute: typeof rootRoute + } + '/(gen)/relative52': { + id: '/relative52' + path: '/relative52' + fullPath: '/relative52' + preLoaderRoute: typeof genRelative52Import + parentRoute: typeof rootRoute + } + '/(gen)/relative53': { + id: '/relative53' + path: '/relative53' + fullPath: '/relative53' + preLoaderRoute: typeof genRelative53Import + parentRoute: typeof rootRoute + } + '/(gen)/relative54': { + id: '/relative54' + path: '/relative54' + fullPath: '/relative54' + preLoaderRoute: typeof genRelative54Import + parentRoute: typeof rootRoute + } + '/(gen)/relative55': { + id: '/relative55' + path: '/relative55' + fullPath: '/relative55' + preLoaderRoute: typeof genRelative55Import + parentRoute: typeof rootRoute + } + '/(gen)/relative56': { + id: '/relative56' + path: '/relative56' + fullPath: '/relative56' + preLoaderRoute: typeof genRelative56Import + parentRoute: typeof rootRoute + } + '/(gen)/relative57': { + id: '/relative57' + path: '/relative57' + fullPath: '/relative57' + preLoaderRoute: typeof genRelative57Import + parentRoute: typeof rootRoute + } + '/(gen)/relative58': { + id: '/relative58' + path: '/relative58' + fullPath: '/relative58' + preLoaderRoute: typeof genRelative58Import + parentRoute: typeof rootRoute + } + '/(gen)/relative59': { + id: '/relative59' + path: '/relative59' + fullPath: '/relative59' + preLoaderRoute: typeof genRelative59Import + parentRoute: typeof rootRoute + } + '/(gen)/relative6': { + id: '/relative6' + path: '/relative6' + fullPath: '/relative6' + preLoaderRoute: typeof genRelative6Import + parentRoute: typeof rootRoute + } + '/(gen)/relative60': { + id: '/relative60' + path: '/relative60' + fullPath: '/relative60' + preLoaderRoute: typeof genRelative60Import + parentRoute: typeof rootRoute + } + '/(gen)/relative61': { + id: '/relative61' + path: '/relative61' + fullPath: '/relative61' + preLoaderRoute: typeof genRelative61Import + parentRoute: typeof rootRoute + } + '/(gen)/relative62': { + id: '/relative62' + path: '/relative62' + fullPath: '/relative62' + preLoaderRoute: typeof genRelative62Import + parentRoute: typeof rootRoute + } + '/(gen)/relative63': { + id: '/relative63' + path: '/relative63' + fullPath: '/relative63' + preLoaderRoute: typeof genRelative63Import + parentRoute: typeof rootRoute + } + '/(gen)/relative64': { + id: '/relative64' + path: '/relative64' + fullPath: '/relative64' + preLoaderRoute: typeof genRelative64Import + parentRoute: typeof rootRoute + } + '/(gen)/relative65': { + id: '/relative65' + path: '/relative65' + fullPath: '/relative65' + preLoaderRoute: typeof genRelative65Import + parentRoute: typeof rootRoute + } + '/(gen)/relative66': { + id: '/relative66' + path: '/relative66' + fullPath: '/relative66' + preLoaderRoute: typeof genRelative66Import + parentRoute: typeof rootRoute + } + '/(gen)/relative67': { + id: '/relative67' + path: '/relative67' + fullPath: '/relative67' + preLoaderRoute: typeof genRelative67Import + parentRoute: typeof rootRoute + } + '/(gen)/relative68': { + id: '/relative68' + path: '/relative68' + fullPath: '/relative68' + preLoaderRoute: typeof genRelative68Import + parentRoute: typeof rootRoute + } + '/(gen)/relative69': { + id: '/relative69' + path: '/relative69' + fullPath: '/relative69' + preLoaderRoute: typeof genRelative69Import + parentRoute: typeof rootRoute + } + '/(gen)/relative7': { + id: '/relative7' + path: '/relative7' + fullPath: '/relative7' + preLoaderRoute: typeof genRelative7Import + parentRoute: typeof rootRoute + } + '/(gen)/relative70': { + id: '/relative70' + path: '/relative70' + fullPath: '/relative70' + preLoaderRoute: typeof genRelative70Import + parentRoute: typeof rootRoute + } + '/(gen)/relative71': { + id: '/relative71' + path: '/relative71' + fullPath: '/relative71' + preLoaderRoute: typeof genRelative71Import + parentRoute: typeof rootRoute + } + '/(gen)/relative72': { + id: '/relative72' + path: '/relative72' + fullPath: '/relative72' + preLoaderRoute: typeof genRelative72Import + parentRoute: typeof rootRoute + } + '/(gen)/relative73': { + id: '/relative73' + path: '/relative73' + fullPath: '/relative73' + preLoaderRoute: typeof genRelative73Import + parentRoute: typeof rootRoute + } + '/(gen)/relative74': { + id: '/relative74' + path: '/relative74' + fullPath: '/relative74' + preLoaderRoute: typeof genRelative74Import + parentRoute: typeof rootRoute + } + '/(gen)/relative75': { + id: '/relative75' + path: '/relative75' + fullPath: '/relative75' + preLoaderRoute: typeof genRelative75Import + parentRoute: typeof rootRoute + } + '/(gen)/relative76': { + id: '/relative76' + path: '/relative76' + fullPath: '/relative76' + preLoaderRoute: typeof genRelative76Import + parentRoute: typeof rootRoute + } + '/(gen)/relative77': { + id: '/relative77' + path: '/relative77' + fullPath: '/relative77' + preLoaderRoute: typeof genRelative77Import + parentRoute: typeof rootRoute + } + '/(gen)/relative78': { + id: '/relative78' + path: '/relative78' + fullPath: '/relative78' + preLoaderRoute: typeof genRelative78Import + parentRoute: typeof rootRoute + } + '/(gen)/relative79': { + id: '/relative79' + path: '/relative79' + fullPath: '/relative79' + preLoaderRoute: typeof genRelative79Import + parentRoute: typeof rootRoute + } + '/(gen)/relative8': { + id: '/relative8' + path: '/relative8' + fullPath: '/relative8' + preLoaderRoute: typeof genRelative8Import + parentRoute: typeof rootRoute + } + '/(gen)/relative80': { + id: '/relative80' + path: '/relative80' + fullPath: '/relative80' + preLoaderRoute: typeof genRelative80Import + parentRoute: typeof rootRoute + } + '/(gen)/relative81': { + id: '/relative81' + path: '/relative81' + fullPath: '/relative81' + preLoaderRoute: typeof genRelative81Import + parentRoute: typeof rootRoute + } + '/(gen)/relative82': { + id: '/relative82' + path: '/relative82' + fullPath: '/relative82' + preLoaderRoute: typeof genRelative82Import + parentRoute: typeof rootRoute + } + '/(gen)/relative83': { + id: '/relative83' + path: '/relative83' + fullPath: '/relative83' + preLoaderRoute: typeof genRelative83Import + parentRoute: typeof rootRoute + } + '/(gen)/relative84': { + id: '/relative84' + path: '/relative84' + fullPath: '/relative84' + preLoaderRoute: typeof genRelative84Import + parentRoute: typeof rootRoute + } + '/(gen)/relative85': { + id: '/relative85' + path: '/relative85' + fullPath: '/relative85' + preLoaderRoute: typeof genRelative85Import + parentRoute: typeof rootRoute + } + '/(gen)/relative86': { + id: '/relative86' + path: '/relative86' + fullPath: '/relative86' + preLoaderRoute: typeof genRelative86Import + parentRoute: typeof rootRoute + } + '/(gen)/relative87': { + id: '/relative87' + path: '/relative87' + fullPath: '/relative87' + preLoaderRoute: typeof genRelative87Import + parentRoute: typeof rootRoute + } + '/(gen)/relative88': { + id: '/relative88' + path: '/relative88' + fullPath: '/relative88' + preLoaderRoute: typeof genRelative88Import + parentRoute: typeof rootRoute + } + '/(gen)/relative89': { + id: '/relative89' + path: '/relative89' + fullPath: '/relative89' + preLoaderRoute: typeof genRelative89Import + parentRoute: typeof rootRoute + } + '/(gen)/relative9': { + id: '/relative9' + path: '/relative9' + fullPath: '/relative9' + preLoaderRoute: typeof genRelative9Import + parentRoute: typeof rootRoute + } + '/(gen)/relative90': { + id: '/relative90' + path: '/relative90' + fullPath: '/relative90' + preLoaderRoute: typeof genRelative90Import + parentRoute: typeof rootRoute + } + '/(gen)/relative91': { + id: '/relative91' + path: '/relative91' + fullPath: '/relative91' + preLoaderRoute: typeof genRelative91Import + parentRoute: typeof rootRoute + } + '/(gen)/relative92': { + id: '/relative92' + path: '/relative92' + fullPath: '/relative92' + preLoaderRoute: typeof genRelative92Import + parentRoute: typeof rootRoute + } + '/(gen)/relative93': { + id: '/relative93' + path: '/relative93' + fullPath: '/relative93' + preLoaderRoute: typeof genRelative93Import + parentRoute: typeof rootRoute + } + '/(gen)/relative94': { + id: '/relative94' + path: '/relative94' + fullPath: '/relative94' + preLoaderRoute: typeof genRelative94Import + parentRoute: typeof rootRoute + } + '/(gen)/relative95': { + id: '/relative95' + path: '/relative95' + fullPath: '/relative95' + preLoaderRoute: typeof genRelative95Import + parentRoute: typeof rootRoute + } + '/(gen)/relative96': { + id: '/relative96' + path: '/relative96' + fullPath: '/relative96' + preLoaderRoute: typeof genRelative96Import + parentRoute: typeof rootRoute + } + '/(gen)/relative97': { + id: '/relative97' + path: '/relative97' + fullPath: '/relative97' + preLoaderRoute: typeof genRelative97Import + parentRoute: typeof rootRoute + } + '/(gen)/relative98': { + id: '/relative98' + path: '/relative98' + fullPath: '/relative98' + preLoaderRoute: typeof genRelative98Import + parentRoute: typeof rootRoute + } + '/(gen)/relative99': { + id: '/relative99' + path: '/relative99' + fullPath: '/relative99' + preLoaderRoute: typeof genRelative99Import + parentRoute: typeof rootRoute + } + '/params/$paramsPlaceholder': { + id: '/params/$paramsPlaceholder' + path: '/$paramsPlaceholder' + fullPath: '/params/$paramsPlaceholder' + preLoaderRoute: typeof ParamsParamsPlaceholderImport + parentRoute: typeof ParamsRouteImport + } + '/search/searchPlaceholder': { + id: '/search/searchPlaceholder' + path: '/searchPlaceholder' + fullPath: '/search/searchPlaceholder' + preLoaderRoute: typeof SearchSearchPlaceholderImport + parentRoute: typeof SearchRouteImport + } + '/(gen)/params/$param0': { + id: '/params/$param0' + path: '/$param0' + fullPath: '/params/$param0' + preLoaderRoute: typeof genParamsParam0Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param1': { + id: '/params/$param1' + path: '/$param1' + fullPath: '/params/$param1' + preLoaderRoute: typeof genParamsParam1Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param10': { + id: '/params/$param10' + path: '/$param10' + fullPath: '/params/$param10' + preLoaderRoute: typeof genParamsParam10Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param11': { + id: '/params/$param11' + path: '/$param11' + fullPath: '/params/$param11' + preLoaderRoute: typeof genParamsParam11Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param12': { + id: '/params/$param12' + path: '/$param12' + fullPath: '/params/$param12' + preLoaderRoute: typeof genParamsParam12Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param13': { + id: '/params/$param13' + path: '/$param13' + fullPath: '/params/$param13' + preLoaderRoute: typeof genParamsParam13Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param14': { + id: '/params/$param14' + path: '/$param14' + fullPath: '/params/$param14' + preLoaderRoute: typeof genParamsParam14Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param15': { + id: '/params/$param15' + path: '/$param15' + fullPath: '/params/$param15' + preLoaderRoute: typeof genParamsParam15Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param16': { + id: '/params/$param16' + path: '/$param16' + fullPath: '/params/$param16' + preLoaderRoute: typeof genParamsParam16Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param17': { + id: '/params/$param17' + path: '/$param17' + fullPath: '/params/$param17' + preLoaderRoute: typeof genParamsParam17Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param18': { + id: '/params/$param18' + path: '/$param18' + fullPath: '/params/$param18' + preLoaderRoute: typeof genParamsParam18Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param19': { + id: '/params/$param19' + path: '/$param19' + fullPath: '/params/$param19' + preLoaderRoute: typeof genParamsParam19Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param2': { + id: '/params/$param2' + path: '/$param2' + fullPath: '/params/$param2' + preLoaderRoute: typeof genParamsParam2Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param20': { + id: '/params/$param20' + path: '/$param20' + fullPath: '/params/$param20' + preLoaderRoute: typeof genParamsParam20Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param21': { + id: '/params/$param21' + path: '/$param21' + fullPath: '/params/$param21' + preLoaderRoute: typeof genParamsParam21Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param22': { + id: '/params/$param22' + path: '/$param22' + fullPath: '/params/$param22' + preLoaderRoute: typeof genParamsParam22Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param23': { + id: '/params/$param23' + path: '/$param23' + fullPath: '/params/$param23' + preLoaderRoute: typeof genParamsParam23Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param24': { + id: '/params/$param24' + path: '/$param24' + fullPath: '/params/$param24' + preLoaderRoute: typeof genParamsParam24Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param25': { + id: '/params/$param25' + path: '/$param25' + fullPath: '/params/$param25' + preLoaderRoute: typeof genParamsParam25Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param26': { + id: '/params/$param26' + path: '/$param26' + fullPath: '/params/$param26' + preLoaderRoute: typeof genParamsParam26Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param27': { + id: '/params/$param27' + path: '/$param27' + fullPath: '/params/$param27' + preLoaderRoute: typeof genParamsParam27Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param28': { + id: '/params/$param28' + path: '/$param28' + fullPath: '/params/$param28' + preLoaderRoute: typeof genParamsParam28Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param29': { + id: '/params/$param29' + path: '/$param29' + fullPath: '/params/$param29' + preLoaderRoute: typeof genParamsParam29Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param3': { + id: '/params/$param3' + path: '/$param3' + fullPath: '/params/$param3' + preLoaderRoute: typeof genParamsParam3Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param30': { + id: '/params/$param30' + path: '/$param30' + fullPath: '/params/$param30' + preLoaderRoute: typeof genParamsParam30Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param31': { + id: '/params/$param31' + path: '/$param31' + fullPath: '/params/$param31' + preLoaderRoute: typeof genParamsParam31Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param32': { + id: '/params/$param32' + path: '/$param32' + fullPath: '/params/$param32' + preLoaderRoute: typeof genParamsParam32Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param33': { + id: '/params/$param33' + path: '/$param33' + fullPath: '/params/$param33' + preLoaderRoute: typeof genParamsParam33Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param34': { + id: '/params/$param34' + path: '/$param34' + fullPath: '/params/$param34' + preLoaderRoute: typeof genParamsParam34Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param35': { + id: '/params/$param35' + path: '/$param35' + fullPath: '/params/$param35' + preLoaderRoute: typeof genParamsParam35Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param36': { + id: '/params/$param36' + path: '/$param36' + fullPath: '/params/$param36' + preLoaderRoute: typeof genParamsParam36Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param37': { + id: '/params/$param37' + path: '/$param37' + fullPath: '/params/$param37' + preLoaderRoute: typeof genParamsParam37Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param38': { + id: '/params/$param38' + path: '/$param38' + fullPath: '/params/$param38' + preLoaderRoute: typeof genParamsParam38Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param39': { + id: '/params/$param39' + path: '/$param39' + fullPath: '/params/$param39' + preLoaderRoute: typeof genParamsParam39Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param4': { + id: '/params/$param4' + path: '/$param4' + fullPath: '/params/$param4' + preLoaderRoute: typeof genParamsParam4Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param40': { + id: '/params/$param40' + path: '/$param40' + fullPath: '/params/$param40' + preLoaderRoute: typeof genParamsParam40Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param41': { + id: '/params/$param41' + path: '/$param41' + fullPath: '/params/$param41' + preLoaderRoute: typeof genParamsParam41Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param42': { + id: '/params/$param42' + path: '/$param42' + fullPath: '/params/$param42' + preLoaderRoute: typeof genParamsParam42Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param43': { + id: '/params/$param43' + path: '/$param43' + fullPath: '/params/$param43' + preLoaderRoute: typeof genParamsParam43Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param44': { + id: '/params/$param44' + path: '/$param44' + fullPath: '/params/$param44' + preLoaderRoute: typeof genParamsParam44Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param45': { + id: '/params/$param45' + path: '/$param45' + fullPath: '/params/$param45' + preLoaderRoute: typeof genParamsParam45Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param46': { + id: '/params/$param46' + path: '/$param46' + fullPath: '/params/$param46' + preLoaderRoute: typeof genParamsParam46Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param47': { + id: '/params/$param47' + path: '/$param47' + fullPath: '/params/$param47' + preLoaderRoute: typeof genParamsParam47Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param48': { + id: '/params/$param48' + path: '/$param48' + fullPath: '/params/$param48' + preLoaderRoute: typeof genParamsParam48Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param49': { + id: '/params/$param49' + path: '/$param49' + fullPath: '/params/$param49' + preLoaderRoute: typeof genParamsParam49Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param5': { + id: '/params/$param5' + path: '/$param5' + fullPath: '/params/$param5' + preLoaderRoute: typeof genParamsParam5Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param50': { + id: '/params/$param50' + path: '/$param50' + fullPath: '/params/$param50' + preLoaderRoute: typeof genParamsParam50Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param51': { + id: '/params/$param51' + path: '/$param51' + fullPath: '/params/$param51' + preLoaderRoute: typeof genParamsParam51Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param52': { + id: '/params/$param52' + path: '/$param52' + fullPath: '/params/$param52' + preLoaderRoute: typeof genParamsParam52Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param53': { + id: '/params/$param53' + path: '/$param53' + fullPath: '/params/$param53' + preLoaderRoute: typeof genParamsParam53Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param54': { + id: '/params/$param54' + path: '/$param54' + fullPath: '/params/$param54' + preLoaderRoute: typeof genParamsParam54Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param55': { + id: '/params/$param55' + path: '/$param55' + fullPath: '/params/$param55' + preLoaderRoute: typeof genParamsParam55Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param56': { + id: '/params/$param56' + path: '/$param56' + fullPath: '/params/$param56' + preLoaderRoute: typeof genParamsParam56Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param57': { + id: '/params/$param57' + path: '/$param57' + fullPath: '/params/$param57' + preLoaderRoute: typeof genParamsParam57Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param58': { + id: '/params/$param58' + path: '/$param58' + fullPath: '/params/$param58' + preLoaderRoute: typeof genParamsParam58Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param59': { + id: '/params/$param59' + path: '/$param59' + fullPath: '/params/$param59' + preLoaderRoute: typeof genParamsParam59Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param6': { + id: '/params/$param6' + path: '/$param6' + fullPath: '/params/$param6' + preLoaderRoute: typeof genParamsParam6Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param60': { + id: '/params/$param60' + path: '/$param60' + fullPath: '/params/$param60' + preLoaderRoute: typeof genParamsParam60Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param61': { + id: '/params/$param61' + path: '/$param61' + fullPath: '/params/$param61' + preLoaderRoute: typeof genParamsParam61Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param62': { + id: '/params/$param62' + path: '/$param62' + fullPath: '/params/$param62' + preLoaderRoute: typeof genParamsParam62Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param63': { + id: '/params/$param63' + path: '/$param63' + fullPath: '/params/$param63' + preLoaderRoute: typeof genParamsParam63Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param64': { + id: '/params/$param64' + path: '/$param64' + fullPath: '/params/$param64' + preLoaderRoute: typeof genParamsParam64Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param65': { + id: '/params/$param65' + path: '/$param65' + fullPath: '/params/$param65' + preLoaderRoute: typeof genParamsParam65Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param66': { + id: '/params/$param66' + path: '/$param66' + fullPath: '/params/$param66' + preLoaderRoute: typeof genParamsParam66Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param67': { + id: '/params/$param67' + path: '/$param67' + fullPath: '/params/$param67' + preLoaderRoute: typeof genParamsParam67Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param68': { + id: '/params/$param68' + path: '/$param68' + fullPath: '/params/$param68' + preLoaderRoute: typeof genParamsParam68Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param69': { + id: '/params/$param69' + path: '/$param69' + fullPath: '/params/$param69' + preLoaderRoute: typeof genParamsParam69Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param7': { + id: '/params/$param7' + path: '/$param7' + fullPath: '/params/$param7' + preLoaderRoute: typeof genParamsParam7Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param70': { + id: '/params/$param70' + path: '/$param70' + fullPath: '/params/$param70' + preLoaderRoute: typeof genParamsParam70Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param71': { + id: '/params/$param71' + path: '/$param71' + fullPath: '/params/$param71' + preLoaderRoute: typeof genParamsParam71Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param72': { + id: '/params/$param72' + path: '/$param72' + fullPath: '/params/$param72' + preLoaderRoute: typeof genParamsParam72Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param73': { + id: '/params/$param73' + path: '/$param73' + fullPath: '/params/$param73' + preLoaderRoute: typeof genParamsParam73Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param74': { + id: '/params/$param74' + path: '/$param74' + fullPath: '/params/$param74' + preLoaderRoute: typeof genParamsParam74Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param75': { + id: '/params/$param75' + path: '/$param75' + fullPath: '/params/$param75' + preLoaderRoute: typeof genParamsParam75Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param76': { + id: '/params/$param76' + path: '/$param76' + fullPath: '/params/$param76' + preLoaderRoute: typeof genParamsParam76Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param77': { + id: '/params/$param77' + path: '/$param77' + fullPath: '/params/$param77' + preLoaderRoute: typeof genParamsParam77Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param78': { + id: '/params/$param78' + path: '/$param78' + fullPath: '/params/$param78' + preLoaderRoute: typeof genParamsParam78Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param79': { + id: '/params/$param79' + path: '/$param79' + fullPath: '/params/$param79' + preLoaderRoute: typeof genParamsParam79Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param8': { + id: '/params/$param8' + path: '/$param8' + fullPath: '/params/$param8' + preLoaderRoute: typeof genParamsParam8Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param80': { + id: '/params/$param80' + path: '/$param80' + fullPath: '/params/$param80' + preLoaderRoute: typeof genParamsParam80Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param81': { + id: '/params/$param81' + path: '/$param81' + fullPath: '/params/$param81' + preLoaderRoute: typeof genParamsParam81Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param82': { + id: '/params/$param82' + path: '/$param82' + fullPath: '/params/$param82' + preLoaderRoute: typeof genParamsParam82Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param83': { + id: '/params/$param83' + path: '/$param83' + fullPath: '/params/$param83' + preLoaderRoute: typeof genParamsParam83Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param84': { + id: '/params/$param84' + path: '/$param84' + fullPath: '/params/$param84' + preLoaderRoute: typeof genParamsParam84Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param85': { + id: '/params/$param85' + path: '/$param85' + fullPath: '/params/$param85' + preLoaderRoute: typeof genParamsParam85Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param86': { + id: '/params/$param86' + path: '/$param86' + fullPath: '/params/$param86' + preLoaderRoute: typeof genParamsParam86Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param87': { + id: '/params/$param87' + path: '/$param87' + fullPath: '/params/$param87' + preLoaderRoute: typeof genParamsParam87Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param88': { + id: '/params/$param88' + path: '/$param88' + fullPath: '/params/$param88' + preLoaderRoute: typeof genParamsParam88Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param89': { + id: '/params/$param89' + path: '/$param89' + fullPath: '/params/$param89' + preLoaderRoute: typeof genParamsParam89Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param9': { + id: '/params/$param9' + path: '/$param9' + fullPath: '/params/$param9' + preLoaderRoute: typeof genParamsParam9Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param90': { + id: '/params/$param90' + path: '/$param90' + fullPath: '/params/$param90' + preLoaderRoute: typeof genParamsParam90Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param91': { + id: '/params/$param91' + path: '/$param91' + fullPath: '/params/$param91' + preLoaderRoute: typeof genParamsParam91Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param92': { + id: '/params/$param92' + path: '/$param92' + fullPath: '/params/$param92' + preLoaderRoute: typeof genParamsParam92Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param93': { + id: '/params/$param93' + path: '/$param93' + fullPath: '/params/$param93' + preLoaderRoute: typeof genParamsParam93Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param94': { + id: '/params/$param94' + path: '/$param94' + fullPath: '/params/$param94' + preLoaderRoute: typeof genParamsParam94Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param95': { + id: '/params/$param95' + path: '/$param95' + fullPath: '/params/$param95' + preLoaderRoute: typeof genParamsParam95Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param96': { + id: '/params/$param96' + path: '/$param96' + fullPath: '/params/$param96' + preLoaderRoute: typeof genParamsParam96Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param97': { + id: '/params/$param97' + path: '/$param97' + fullPath: '/params/$param97' + preLoaderRoute: typeof genParamsParam97Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param98': { + id: '/params/$param98' + path: '/$param98' + fullPath: '/params/$param98' + preLoaderRoute: typeof genParamsParam98Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/params/$param99': { + id: '/params/$param99' + path: '/$param99' + fullPath: '/params/$param99' + preLoaderRoute: typeof genParamsParam99Import + parentRoute: typeof genParamsRouteImport + } + '/(gen)/search/search0': { + id: '/search/search0' + path: '/search0' + fullPath: '/search/search0' + preLoaderRoute: typeof genSearchSearch0Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search1': { + id: '/search/search1' + path: '/search1' + fullPath: '/search/search1' + preLoaderRoute: typeof genSearchSearch1Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search10': { + id: '/search/search10' + path: '/search10' + fullPath: '/search/search10' + preLoaderRoute: typeof genSearchSearch10Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search11': { + id: '/search/search11' + path: '/search11' + fullPath: '/search/search11' + preLoaderRoute: typeof genSearchSearch11Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search12': { + id: '/search/search12' + path: '/search12' + fullPath: '/search/search12' + preLoaderRoute: typeof genSearchSearch12Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search13': { + id: '/search/search13' + path: '/search13' + fullPath: '/search/search13' + preLoaderRoute: typeof genSearchSearch13Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search14': { + id: '/search/search14' + path: '/search14' + fullPath: '/search/search14' + preLoaderRoute: typeof genSearchSearch14Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search15': { + id: '/search/search15' + path: '/search15' + fullPath: '/search/search15' + preLoaderRoute: typeof genSearchSearch15Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search16': { + id: '/search/search16' + path: '/search16' + fullPath: '/search/search16' + preLoaderRoute: typeof genSearchSearch16Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search17': { + id: '/search/search17' + path: '/search17' + fullPath: '/search/search17' + preLoaderRoute: typeof genSearchSearch17Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search18': { + id: '/search/search18' + path: '/search18' + fullPath: '/search/search18' + preLoaderRoute: typeof genSearchSearch18Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search19': { + id: '/search/search19' + path: '/search19' + fullPath: '/search/search19' + preLoaderRoute: typeof genSearchSearch19Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search2': { + id: '/search/search2' + path: '/search2' + fullPath: '/search/search2' + preLoaderRoute: typeof genSearchSearch2Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search20': { + id: '/search/search20' + path: '/search20' + fullPath: '/search/search20' + preLoaderRoute: typeof genSearchSearch20Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search21': { + id: '/search/search21' + path: '/search21' + fullPath: '/search/search21' + preLoaderRoute: typeof genSearchSearch21Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search22': { + id: '/search/search22' + path: '/search22' + fullPath: '/search/search22' + preLoaderRoute: typeof genSearchSearch22Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search23': { + id: '/search/search23' + path: '/search23' + fullPath: '/search/search23' + preLoaderRoute: typeof genSearchSearch23Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search24': { + id: '/search/search24' + path: '/search24' + fullPath: '/search/search24' + preLoaderRoute: typeof genSearchSearch24Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search25': { + id: '/search/search25' + path: '/search25' + fullPath: '/search/search25' + preLoaderRoute: typeof genSearchSearch25Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search26': { + id: '/search/search26' + path: '/search26' + fullPath: '/search/search26' + preLoaderRoute: typeof genSearchSearch26Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search27': { + id: '/search/search27' + path: '/search27' + fullPath: '/search/search27' + preLoaderRoute: typeof genSearchSearch27Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search28': { + id: '/search/search28' + path: '/search28' + fullPath: '/search/search28' + preLoaderRoute: typeof genSearchSearch28Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search29': { + id: '/search/search29' + path: '/search29' + fullPath: '/search/search29' + preLoaderRoute: typeof genSearchSearch29Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search3': { + id: '/search/search3' + path: '/search3' + fullPath: '/search/search3' + preLoaderRoute: typeof genSearchSearch3Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search30': { + id: '/search/search30' + path: '/search30' + fullPath: '/search/search30' + preLoaderRoute: typeof genSearchSearch30Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search31': { + id: '/search/search31' + path: '/search31' + fullPath: '/search/search31' + preLoaderRoute: typeof genSearchSearch31Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search32': { + id: '/search/search32' + path: '/search32' + fullPath: '/search/search32' + preLoaderRoute: typeof genSearchSearch32Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search33': { + id: '/search/search33' + path: '/search33' + fullPath: '/search/search33' + preLoaderRoute: typeof genSearchSearch33Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search34': { + id: '/search/search34' + path: '/search34' + fullPath: '/search/search34' + preLoaderRoute: typeof genSearchSearch34Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search35': { + id: '/search/search35' + path: '/search35' + fullPath: '/search/search35' + preLoaderRoute: typeof genSearchSearch35Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search36': { + id: '/search/search36' + path: '/search36' + fullPath: '/search/search36' + preLoaderRoute: typeof genSearchSearch36Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search37': { + id: '/search/search37' + path: '/search37' + fullPath: '/search/search37' + preLoaderRoute: typeof genSearchSearch37Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search38': { + id: '/search/search38' + path: '/search38' + fullPath: '/search/search38' + preLoaderRoute: typeof genSearchSearch38Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search39': { + id: '/search/search39' + path: '/search39' + fullPath: '/search/search39' + preLoaderRoute: typeof genSearchSearch39Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search4': { + id: '/search/search4' + path: '/search4' + fullPath: '/search/search4' + preLoaderRoute: typeof genSearchSearch4Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search40': { + id: '/search/search40' + path: '/search40' + fullPath: '/search/search40' + preLoaderRoute: typeof genSearchSearch40Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search41': { + id: '/search/search41' + path: '/search41' + fullPath: '/search/search41' + preLoaderRoute: typeof genSearchSearch41Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search42': { + id: '/search/search42' + path: '/search42' + fullPath: '/search/search42' + preLoaderRoute: typeof genSearchSearch42Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search43': { + id: '/search/search43' + path: '/search43' + fullPath: '/search/search43' + preLoaderRoute: typeof genSearchSearch43Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search44': { + id: '/search/search44' + path: '/search44' + fullPath: '/search/search44' + preLoaderRoute: typeof genSearchSearch44Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search45': { + id: '/search/search45' + path: '/search45' + fullPath: '/search/search45' + preLoaderRoute: typeof genSearchSearch45Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search46': { + id: '/search/search46' + path: '/search46' + fullPath: '/search/search46' + preLoaderRoute: typeof genSearchSearch46Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search47': { + id: '/search/search47' + path: '/search47' + fullPath: '/search/search47' + preLoaderRoute: typeof genSearchSearch47Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search48': { + id: '/search/search48' + path: '/search48' + fullPath: '/search/search48' + preLoaderRoute: typeof genSearchSearch48Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search49': { + id: '/search/search49' + path: '/search49' + fullPath: '/search/search49' + preLoaderRoute: typeof genSearchSearch49Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search5': { + id: '/search/search5' + path: '/search5' + fullPath: '/search/search5' + preLoaderRoute: typeof genSearchSearch5Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search50': { + id: '/search/search50' + path: '/search50' + fullPath: '/search/search50' + preLoaderRoute: typeof genSearchSearch50Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search51': { + id: '/search/search51' + path: '/search51' + fullPath: '/search/search51' + preLoaderRoute: typeof genSearchSearch51Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search52': { + id: '/search/search52' + path: '/search52' + fullPath: '/search/search52' + preLoaderRoute: typeof genSearchSearch52Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search53': { + id: '/search/search53' + path: '/search53' + fullPath: '/search/search53' + preLoaderRoute: typeof genSearchSearch53Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search54': { + id: '/search/search54' + path: '/search54' + fullPath: '/search/search54' + preLoaderRoute: typeof genSearchSearch54Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search55': { + id: '/search/search55' + path: '/search55' + fullPath: '/search/search55' + preLoaderRoute: typeof genSearchSearch55Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search56': { + id: '/search/search56' + path: '/search56' + fullPath: '/search/search56' + preLoaderRoute: typeof genSearchSearch56Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search57': { + id: '/search/search57' + path: '/search57' + fullPath: '/search/search57' + preLoaderRoute: typeof genSearchSearch57Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search58': { + id: '/search/search58' + path: '/search58' + fullPath: '/search/search58' + preLoaderRoute: typeof genSearchSearch58Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search59': { + id: '/search/search59' + path: '/search59' + fullPath: '/search/search59' + preLoaderRoute: typeof genSearchSearch59Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search6': { + id: '/search/search6' + path: '/search6' + fullPath: '/search/search6' + preLoaderRoute: typeof genSearchSearch6Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search60': { + id: '/search/search60' + path: '/search60' + fullPath: '/search/search60' + preLoaderRoute: typeof genSearchSearch60Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search61': { + id: '/search/search61' + path: '/search61' + fullPath: '/search/search61' + preLoaderRoute: typeof genSearchSearch61Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search62': { + id: '/search/search62' + path: '/search62' + fullPath: '/search/search62' + preLoaderRoute: typeof genSearchSearch62Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search63': { + id: '/search/search63' + path: '/search63' + fullPath: '/search/search63' + preLoaderRoute: typeof genSearchSearch63Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search64': { + id: '/search/search64' + path: '/search64' + fullPath: '/search/search64' + preLoaderRoute: typeof genSearchSearch64Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search65': { + id: '/search/search65' + path: '/search65' + fullPath: '/search/search65' + preLoaderRoute: typeof genSearchSearch65Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search66': { + id: '/search/search66' + path: '/search66' + fullPath: '/search/search66' + preLoaderRoute: typeof genSearchSearch66Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search67': { + id: '/search/search67' + path: '/search67' + fullPath: '/search/search67' + preLoaderRoute: typeof genSearchSearch67Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search68': { + id: '/search/search68' + path: '/search68' + fullPath: '/search/search68' + preLoaderRoute: typeof genSearchSearch68Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search69': { + id: '/search/search69' + path: '/search69' + fullPath: '/search/search69' + preLoaderRoute: typeof genSearchSearch69Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search7': { + id: '/search/search7' + path: '/search7' + fullPath: '/search/search7' + preLoaderRoute: typeof genSearchSearch7Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search70': { + id: '/search/search70' + path: '/search70' + fullPath: '/search/search70' + preLoaderRoute: typeof genSearchSearch70Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search71': { + id: '/search/search71' + path: '/search71' + fullPath: '/search/search71' + preLoaderRoute: typeof genSearchSearch71Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search72': { + id: '/search/search72' + path: '/search72' + fullPath: '/search/search72' + preLoaderRoute: typeof genSearchSearch72Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search73': { + id: '/search/search73' + path: '/search73' + fullPath: '/search/search73' + preLoaderRoute: typeof genSearchSearch73Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search74': { + id: '/search/search74' + path: '/search74' + fullPath: '/search/search74' + preLoaderRoute: typeof genSearchSearch74Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search75': { + id: '/search/search75' + path: '/search75' + fullPath: '/search/search75' + preLoaderRoute: typeof genSearchSearch75Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search76': { + id: '/search/search76' + path: '/search76' + fullPath: '/search/search76' + preLoaderRoute: typeof genSearchSearch76Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search77': { + id: '/search/search77' + path: '/search77' + fullPath: '/search/search77' + preLoaderRoute: typeof genSearchSearch77Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search78': { + id: '/search/search78' + path: '/search78' + fullPath: '/search/search78' + preLoaderRoute: typeof genSearchSearch78Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search79': { + id: '/search/search79' + path: '/search79' + fullPath: '/search/search79' + preLoaderRoute: typeof genSearchSearch79Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search8': { + id: '/search/search8' + path: '/search8' + fullPath: '/search/search8' + preLoaderRoute: typeof genSearchSearch8Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search80': { + id: '/search/search80' + path: '/search80' + fullPath: '/search/search80' + preLoaderRoute: typeof genSearchSearch80Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search81': { + id: '/search/search81' + path: '/search81' + fullPath: '/search/search81' + preLoaderRoute: typeof genSearchSearch81Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search82': { + id: '/search/search82' + path: '/search82' + fullPath: '/search/search82' + preLoaderRoute: typeof genSearchSearch82Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search83': { + id: '/search/search83' + path: '/search83' + fullPath: '/search/search83' + preLoaderRoute: typeof genSearchSearch83Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search84': { + id: '/search/search84' + path: '/search84' + fullPath: '/search/search84' + preLoaderRoute: typeof genSearchSearch84Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search85': { + id: '/search/search85' + path: '/search85' + fullPath: '/search/search85' + preLoaderRoute: typeof genSearchSearch85Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search86': { + id: '/search/search86' + path: '/search86' + fullPath: '/search/search86' + preLoaderRoute: typeof genSearchSearch86Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search87': { + id: '/search/search87' + path: '/search87' + fullPath: '/search/search87' + preLoaderRoute: typeof genSearchSearch87Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search88': { + id: '/search/search88' + path: '/search88' + fullPath: '/search/search88' + preLoaderRoute: typeof genSearchSearch88Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search89': { + id: '/search/search89' + path: '/search89' + fullPath: '/search/search89' + preLoaderRoute: typeof genSearchSearch89Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search9': { + id: '/search/search9' + path: '/search9' + fullPath: '/search/search9' + preLoaderRoute: typeof genSearchSearch9Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search90': { + id: '/search/search90' + path: '/search90' + fullPath: '/search/search90' + preLoaderRoute: typeof genSearchSearch90Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search91': { + id: '/search/search91' + path: '/search91' + fullPath: '/search/search91' + preLoaderRoute: typeof genSearchSearch91Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search92': { + id: '/search/search92' + path: '/search92' + fullPath: '/search/search92' + preLoaderRoute: typeof genSearchSearch92Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search93': { + id: '/search/search93' + path: '/search93' + fullPath: '/search/search93' + preLoaderRoute: typeof genSearchSearch93Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search94': { + id: '/search/search94' + path: '/search94' + fullPath: '/search/search94' + preLoaderRoute: typeof genSearchSearch94Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search95': { + id: '/search/search95' + path: '/search95' + fullPath: '/search/search95' + preLoaderRoute: typeof genSearchSearch95Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search96': { + id: '/search/search96' + path: '/search96' + fullPath: '/search/search96' + preLoaderRoute: typeof genSearchSearch96Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search97': { + id: '/search/search97' + path: '/search97' + fullPath: '/search/search97' + preLoaderRoute: typeof genSearchSearch97Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search98': { + id: '/search/search98' + path: '/search98' + fullPath: '/search/search98' + preLoaderRoute: typeof genSearchSearch98Import + parentRoute: typeof genSearchRouteImport + } + '/(gen)/search/search99': { + id: '/search/search99' + path: '/search99' + fullPath: '/search/search99' + preLoaderRoute: typeof genSearchSearch99Import + parentRoute: typeof genSearchRouteImport + } + } +} + +// Create and export the route tree + +interface ParamsRouteRouteChildren { + ParamsParamsPlaceholderRoute: typeof ParamsParamsPlaceholderRoute +} + +const ParamsRouteRouteChildren: ParamsRouteRouteChildren = { + ParamsParamsPlaceholderRoute: ParamsParamsPlaceholderRoute, +} + +const ParamsRouteRouteWithChildren = ParamsRouteRoute._addFileChildren( + ParamsRouteRouteChildren, +) + +interface SearchRouteRouteChildren { + SearchSearchPlaceholderRoute: typeof SearchSearchPlaceholderRoute +} + +const SearchRouteRouteChildren: SearchRouteRouteChildren = { + SearchSearchPlaceholderRoute: SearchSearchPlaceholderRoute, +} + +const SearchRouteRouteWithChildren = SearchRouteRoute._addFileChildren( + SearchRouteRouteChildren, +) + +interface genParamsRouteRouteChildren { + genParamsParam0Route: typeof genParamsParam0Route + genParamsParam1Route: typeof genParamsParam1Route + genParamsParam10Route: typeof genParamsParam10Route + genParamsParam11Route: typeof genParamsParam11Route + genParamsParam12Route: typeof genParamsParam12Route + genParamsParam13Route: typeof genParamsParam13Route + genParamsParam14Route: typeof genParamsParam14Route + genParamsParam15Route: typeof genParamsParam15Route + genParamsParam16Route: typeof genParamsParam16Route + genParamsParam17Route: typeof genParamsParam17Route + genParamsParam18Route: typeof genParamsParam18Route + genParamsParam19Route: typeof genParamsParam19Route + genParamsParam2Route: typeof genParamsParam2Route + genParamsParam20Route: typeof genParamsParam20Route + genParamsParam21Route: typeof genParamsParam21Route + genParamsParam22Route: typeof genParamsParam22Route + genParamsParam23Route: typeof genParamsParam23Route + genParamsParam24Route: typeof genParamsParam24Route + genParamsParam25Route: typeof genParamsParam25Route + genParamsParam26Route: typeof genParamsParam26Route + genParamsParam27Route: typeof genParamsParam27Route + genParamsParam28Route: typeof genParamsParam28Route + genParamsParam29Route: typeof genParamsParam29Route + genParamsParam3Route: typeof genParamsParam3Route + genParamsParam30Route: typeof genParamsParam30Route + genParamsParam31Route: typeof genParamsParam31Route + genParamsParam32Route: typeof genParamsParam32Route + genParamsParam33Route: typeof genParamsParam33Route + genParamsParam34Route: typeof genParamsParam34Route + genParamsParam35Route: typeof genParamsParam35Route + genParamsParam36Route: typeof genParamsParam36Route + genParamsParam37Route: typeof genParamsParam37Route + genParamsParam38Route: typeof genParamsParam38Route + genParamsParam39Route: typeof genParamsParam39Route + genParamsParam4Route: typeof genParamsParam4Route + genParamsParam40Route: typeof genParamsParam40Route + genParamsParam41Route: typeof genParamsParam41Route + genParamsParam42Route: typeof genParamsParam42Route + genParamsParam43Route: typeof genParamsParam43Route + genParamsParam44Route: typeof genParamsParam44Route + genParamsParam45Route: typeof genParamsParam45Route + genParamsParam46Route: typeof genParamsParam46Route + genParamsParam47Route: typeof genParamsParam47Route + genParamsParam48Route: typeof genParamsParam48Route + genParamsParam49Route: typeof genParamsParam49Route + genParamsParam5Route: typeof genParamsParam5Route + genParamsParam50Route: typeof genParamsParam50Route + genParamsParam51Route: typeof genParamsParam51Route + genParamsParam52Route: typeof genParamsParam52Route + genParamsParam53Route: typeof genParamsParam53Route + genParamsParam54Route: typeof genParamsParam54Route + genParamsParam55Route: typeof genParamsParam55Route + genParamsParam56Route: typeof genParamsParam56Route + genParamsParam57Route: typeof genParamsParam57Route + genParamsParam58Route: typeof genParamsParam58Route + genParamsParam59Route: typeof genParamsParam59Route + genParamsParam6Route: typeof genParamsParam6Route + genParamsParam60Route: typeof genParamsParam60Route + genParamsParam61Route: typeof genParamsParam61Route + genParamsParam62Route: typeof genParamsParam62Route + genParamsParam63Route: typeof genParamsParam63Route + genParamsParam64Route: typeof genParamsParam64Route + genParamsParam65Route: typeof genParamsParam65Route + genParamsParam66Route: typeof genParamsParam66Route + genParamsParam67Route: typeof genParamsParam67Route + genParamsParam68Route: typeof genParamsParam68Route + genParamsParam69Route: typeof genParamsParam69Route + genParamsParam7Route: typeof genParamsParam7Route + genParamsParam70Route: typeof genParamsParam70Route + genParamsParam71Route: typeof genParamsParam71Route + genParamsParam72Route: typeof genParamsParam72Route + genParamsParam73Route: typeof genParamsParam73Route + genParamsParam74Route: typeof genParamsParam74Route + genParamsParam75Route: typeof genParamsParam75Route + genParamsParam76Route: typeof genParamsParam76Route + genParamsParam77Route: typeof genParamsParam77Route + genParamsParam78Route: typeof genParamsParam78Route + genParamsParam79Route: typeof genParamsParam79Route + genParamsParam8Route: typeof genParamsParam8Route + genParamsParam80Route: typeof genParamsParam80Route + genParamsParam81Route: typeof genParamsParam81Route + genParamsParam82Route: typeof genParamsParam82Route + genParamsParam83Route: typeof genParamsParam83Route + genParamsParam84Route: typeof genParamsParam84Route + genParamsParam85Route: typeof genParamsParam85Route + genParamsParam86Route: typeof genParamsParam86Route + genParamsParam87Route: typeof genParamsParam87Route + genParamsParam88Route: typeof genParamsParam88Route + genParamsParam89Route: typeof genParamsParam89Route + genParamsParam9Route: typeof genParamsParam9Route + genParamsParam90Route: typeof genParamsParam90Route + genParamsParam91Route: typeof genParamsParam91Route + genParamsParam92Route: typeof genParamsParam92Route + genParamsParam93Route: typeof genParamsParam93Route + genParamsParam94Route: typeof genParamsParam94Route + genParamsParam95Route: typeof genParamsParam95Route + genParamsParam96Route: typeof genParamsParam96Route + genParamsParam97Route: typeof genParamsParam97Route + genParamsParam98Route: typeof genParamsParam98Route + genParamsParam99Route: typeof genParamsParam99Route +} + +const genParamsRouteRouteChildren: genParamsRouteRouteChildren = { + genParamsParam0Route: genParamsParam0Route, + genParamsParam1Route: genParamsParam1Route, + genParamsParam10Route: genParamsParam10Route, + genParamsParam11Route: genParamsParam11Route, + genParamsParam12Route: genParamsParam12Route, + genParamsParam13Route: genParamsParam13Route, + genParamsParam14Route: genParamsParam14Route, + genParamsParam15Route: genParamsParam15Route, + genParamsParam16Route: genParamsParam16Route, + genParamsParam17Route: genParamsParam17Route, + genParamsParam18Route: genParamsParam18Route, + genParamsParam19Route: genParamsParam19Route, + genParamsParam2Route: genParamsParam2Route, + genParamsParam20Route: genParamsParam20Route, + genParamsParam21Route: genParamsParam21Route, + genParamsParam22Route: genParamsParam22Route, + genParamsParam23Route: genParamsParam23Route, + genParamsParam24Route: genParamsParam24Route, + genParamsParam25Route: genParamsParam25Route, + genParamsParam26Route: genParamsParam26Route, + genParamsParam27Route: genParamsParam27Route, + genParamsParam28Route: genParamsParam28Route, + genParamsParam29Route: genParamsParam29Route, + genParamsParam3Route: genParamsParam3Route, + genParamsParam30Route: genParamsParam30Route, + genParamsParam31Route: genParamsParam31Route, + genParamsParam32Route: genParamsParam32Route, + genParamsParam33Route: genParamsParam33Route, + genParamsParam34Route: genParamsParam34Route, + genParamsParam35Route: genParamsParam35Route, + genParamsParam36Route: genParamsParam36Route, + genParamsParam37Route: genParamsParam37Route, + genParamsParam38Route: genParamsParam38Route, + genParamsParam39Route: genParamsParam39Route, + genParamsParam4Route: genParamsParam4Route, + genParamsParam40Route: genParamsParam40Route, + genParamsParam41Route: genParamsParam41Route, + genParamsParam42Route: genParamsParam42Route, + genParamsParam43Route: genParamsParam43Route, + genParamsParam44Route: genParamsParam44Route, + genParamsParam45Route: genParamsParam45Route, + genParamsParam46Route: genParamsParam46Route, + genParamsParam47Route: genParamsParam47Route, + genParamsParam48Route: genParamsParam48Route, + genParamsParam49Route: genParamsParam49Route, + genParamsParam5Route: genParamsParam5Route, + genParamsParam50Route: genParamsParam50Route, + genParamsParam51Route: genParamsParam51Route, + genParamsParam52Route: genParamsParam52Route, + genParamsParam53Route: genParamsParam53Route, + genParamsParam54Route: genParamsParam54Route, + genParamsParam55Route: genParamsParam55Route, + genParamsParam56Route: genParamsParam56Route, + genParamsParam57Route: genParamsParam57Route, + genParamsParam58Route: genParamsParam58Route, + genParamsParam59Route: genParamsParam59Route, + genParamsParam6Route: genParamsParam6Route, + genParamsParam60Route: genParamsParam60Route, + genParamsParam61Route: genParamsParam61Route, + genParamsParam62Route: genParamsParam62Route, + genParamsParam63Route: genParamsParam63Route, + genParamsParam64Route: genParamsParam64Route, + genParamsParam65Route: genParamsParam65Route, + genParamsParam66Route: genParamsParam66Route, + genParamsParam67Route: genParamsParam67Route, + genParamsParam68Route: genParamsParam68Route, + genParamsParam69Route: genParamsParam69Route, + genParamsParam7Route: genParamsParam7Route, + genParamsParam70Route: genParamsParam70Route, + genParamsParam71Route: genParamsParam71Route, + genParamsParam72Route: genParamsParam72Route, + genParamsParam73Route: genParamsParam73Route, + genParamsParam74Route: genParamsParam74Route, + genParamsParam75Route: genParamsParam75Route, + genParamsParam76Route: genParamsParam76Route, + genParamsParam77Route: genParamsParam77Route, + genParamsParam78Route: genParamsParam78Route, + genParamsParam79Route: genParamsParam79Route, + genParamsParam8Route: genParamsParam8Route, + genParamsParam80Route: genParamsParam80Route, + genParamsParam81Route: genParamsParam81Route, + genParamsParam82Route: genParamsParam82Route, + genParamsParam83Route: genParamsParam83Route, + genParamsParam84Route: genParamsParam84Route, + genParamsParam85Route: genParamsParam85Route, + genParamsParam86Route: genParamsParam86Route, + genParamsParam87Route: genParamsParam87Route, + genParamsParam88Route: genParamsParam88Route, + genParamsParam89Route: genParamsParam89Route, + genParamsParam9Route: genParamsParam9Route, + genParamsParam90Route: genParamsParam90Route, + genParamsParam91Route: genParamsParam91Route, + genParamsParam92Route: genParamsParam92Route, + genParamsParam93Route: genParamsParam93Route, + genParamsParam94Route: genParamsParam94Route, + genParamsParam95Route: genParamsParam95Route, + genParamsParam96Route: genParamsParam96Route, + genParamsParam97Route: genParamsParam97Route, + genParamsParam98Route: genParamsParam98Route, + genParamsParam99Route: genParamsParam99Route, +} + +const genParamsRouteRouteWithChildren = genParamsRouteRoute._addFileChildren( + genParamsRouteRouteChildren, +) + +interface genSearchRouteRouteChildren { + genSearchSearch0Route: typeof genSearchSearch0Route + genSearchSearch1Route: typeof genSearchSearch1Route + genSearchSearch10Route: typeof genSearchSearch10Route + genSearchSearch11Route: typeof genSearchSearch11Route + genSearchSearch12Route: typeof genSearchSearch12Route + genSearchSearch13Route: typeof genSearchSearch13Route + genSearchSearch14Route: typeof genSearchSearch14Route + genSearchSearch15Route: typeof genSearchSearch15Route + genSearchSearch16Route: typeof genSearchSearch16Route + genSearchSearch17Route: typeof genSearchSearch17Route + genSearchSearch18Route: typeof genSearchSearch18Route + genSearchSearch19Route: typeof genSearchSearch19Route + genSearchSearch2Route: typeof genSearchSearch2Route + genSearchSearch20Route: typeof genSearchSearch20Route + genSearchSearch21Route: typeof genSearchSearch21Route + genSearchSearch22Route: typeof genSearchSearch22Route + genSearchSearch23Route: typeof genSearchSearch23Route + genSearchSearch24Route: typeof genSearchSearch24Route + genSearchSearch25Route: typeof genSearchSearch25Route + genSearchSearch26Route: typeof genSearchSearch26Route + genSearchSearch27Route: typeof genSearchSearch27Route + genSearchSearch28Route: typeof genSearchSearch28Route + genSearchSearch29Route: typeof genSearchSearch29Route + genSearchSearch3Route: typeof genSearchSearch3Route + genSearchSearch30Route: typeof genSearchSearch30Route + genSearchSearch31Route: typeof genSearchSearch31Route + genSearchSearch32Route: typeof genSearchSearch32Route + genSearchSearch33Route: typeof genSearchSearch33Route + genSearchSearch34Route: typeof genSearchSearch34Route + genSearchSearch35Route: typeof genSearchSearch35Route + genSearchSearch36Route: typeof genSearchSearch36Route + genSearchSearch37Route: typeof genSearchSearch37Route + genSearchSearch38Route: typeof genSearchSearch38Route + genSearchSearch39Route: typeof genSearchSearch39Route + genSearchSearch4Route: typeof genSearchSearch4Route + genSearchSearch40Route: typeof genSearchSearch40Route + genSearchSearch41Route: typeof genSearchSearch41Route + genSearchSearch42Route: typeof genSearchSearch42Route + genSearchSearch43Route: typeof genSearchSearch43Route + genSearchSearch44Route: typeof genSearchSearch44Route + genSearchSearch45Route: typeof genSearchSearch45Route + genSearchSearch46Route: typeof genSearchSearch46Route + genSearchSearch47Route: typeof genSearchSearch47Route + genSearchSearch48Route: typeof genSearchSearch48Route + genSearchSearch49Route: typeof genSearchSearch49Route + genSearchSearch5Route: typeof genSearchSearch5Route + genSearchSearch50Route: typeof genSearchSearch50Route + genSearchSearch51Route: typeof genSearchSearch51Route + genSearchSearch52Route: typeof genSearchSearch52Route + genSearchSearch53Route: typeof genSearchSearch53Route + genSearchSearch54Route: typeof genSearchSearch54Route + genSearchSearch55Route: typeof genSearchSearch55Route + genSearchSearch56Route: typeof genSearchSearch56Route + genSearchSearch57Route: typeof genSearchSearch57Route + genSearchSearch58Route: typeof genSearchSearch58Route + genSearchSearch59Route: typeof genSearchSearch59Route + genSearchSearch6Route: typeof genSearchSearch6Route + genSearchSearch60Route: typeof genSearchSearch60Route + genSearchSearch61Route: typeof genSearchSearch61Route + genSearchSearch62Route: typeof genSearchSearch62Route + genSearchSearch63Route: typeof genSearchSearch63Route + genSearchSearch64Route: typeof genSearchSearch64Route + genSearchSearch65Route: typeof genSearchSearch65Route + genSearchSearch66Route: typeof genSearchSearch66Route + genSearchSearch67Route: typeof genSearchSearch67Route + genSearchSearch68Route: typeof genSearchSearch68Route + genSearchSearch69Route: typeof genSearchSearch69Route + genSearchSearch7Route: typeof genSearchSearch7Route + genSearchSearch70Route: typeof genSearchSearch70Route + genSearchSearch71Route: typeof genSearchSearch71Route + genSearchSearch72Route: typeof genSearchSearch72Route + genSearchSearch73Route: typeof genSearchSearch73Route + genSearchSearch74Route: typeof genSearchSearch74Route + genSearchSearch75Route: typeof genSearchSearch75Route + genSearchSearch76Route: typeof genSearchSearch76Route + genSearchSearch77Route: typeof genSearchSearch77Route + genSearchSearch78Route: typeof genSearchSearch78Route + genSearchSearch79Route: typeof genSearchSearch79Route + genSearchSearch8Route: typeof genSearchSearch8Route + genSearchSearch80Route: typeof genSearchSearch80Route + genSearchSearch81Route: typeof genSearchSearch81Route + genSearchSearch82Route: typeof genSearchSearch82Route + genSearchSearch83Route: typeof genSearchSearch83Route + genSearchSearch84Route: typeof genSearchSearch84Route + genSearchSearch85Route: typeof genSearchSearch85Route + genSearchSearch86Route: typeof genSearchSearch86Route + genSearchSearch87Route: typeof genSearchSearch87Route + genSearchSearch88Route: typeof genSearchSearch88Route + genSearchSearch89Route: typeof genSearchSearch89Route + genSearchSearch9Route: typeof genSearchSearch9Route + genSearchSearch90Route: typeof genSearchSearch90Route + genSearchSearch91Route: typeof genSearchSearch91Route + genSearchSearch92Route: typeof genSearchSearch92Route + genSearchSearch93Route: typeof genSearchSearch93Route + genSearchSearch94Route: typeof genSearchSearch94Route + genSearchSearch95Route: typeof genSearchSearch95Route + genSearchSearch96Route: typeof genSearchSearch96Route + genSearchSearch97Route: typeof genSearchSearch97Route + genSearchSearch98Route: typeof genSearchSearch98Route + genSearchSearch99Route: typeof genSearchSearch99Route +} + +const genSearchRouteRouteChildren: genSearchRouteRouteChildren = { + genSearchSearch0Route: genSearchSearch0Route, + genSearchSearch1Route: genSearchSearch1Route, + genSearchSearch10Route: genSearchSearch10Route, + genSearchSearch11Route: genSearchSearch11Route, + genSearchSearch12Route: genSearchSearch12Route, + genSearchSearch13Route: genSearchSearch13Route, + genSearchSearch14Route: genSearchSearch14Route, + genSearchSearch15Route: genSearchSearch15Route, + genSearchSearch16Route: genSearchSearch16Route, + genSearchSearch17Route: genSearchSearch17Route, + genSearchSearch18Route: genSearchSearch18Route, + genSearchSearch19Route: genSearchSearch19Route, + genSearchSearch2Route: genSearchSearch2Route, + genSearchSearch20Route: genSearchSearch20Route, + genSearchSearch21Route: genSearchSearch21Route, + genSearchSearch22Route: genSearchSearch22Route, + genSearchSearch23Route: genSearchSearch23Route, + genSearchSearch24Route: genSearchSearch24Route, + genSearchSearch25Route: genSearchSearch25Route, + genSearchSearch26Route: genSearchSearch26Route, + genSearchSearch27Route: genSearchSearch27Route, + genSearchSearch28Route: genSearchSearch28Route, + genSearchSearch29Route: genSearchSearch29Route, + genSearchSearch3Route: genSearchSearch3Route, + genSearchSearch30Route: genSearchSearch30Route, + genSearchSearch31Route: genSearchSearch31Route, + genSearchSearch32Route: genSearchSearch32Route, + genSearchSearch33Route: genSearchSearch33Route, + genSearchSearch34Route: genSearchSearch34Route, + genSearchSearch35Route: genSearchSearch35Route, + genSearchSearch36Route: genSearchSearch36Route, + genSearchSearch37Route: genSearchSearch37Route, + genSearchSearch38Route: genSearchSearch38Route, + genSearchSearch39Route: genSearchSearch39Route, + genSearchSearch4Route: genSearchSearch4Route, + genSearchSearch40Route: genSearchSearch40Route, + genSearchSearch41Route: genSearchSearch41Route, + genSearchSearch42Route: genSearchSearch42Route, + genSearchSearch43Route: genSearchSearch43Route, + genSearchSearch44Route: genSearchSearch44Route, + genSearchSearch45Route: genSearchSearch45Route, + genSearchSearch46Route: genSearchSearch46Route, + genSearchSearch47Route: genSearchSearch47Route, + genSearchSearch48Route: genSearchSearch48Route, + genSearchSearch49Route: genSearchSearch49Route, + genSearchSearch5Route: genSearchSearch5Route, + genSearchSearch50Route: genSearchSearch50Route, + genSearchSearch51Route: genSearchSearch51Route, + genSearchSearch52Route: genSearchSearch52Route, + genSearchSearch53Route: genSearchSearch53Route, + genSearchSearch54Route: genSearchSearch54Route, + genSearchSearch55Route: genSearchSearch55Route, + genSearchSearch56Route: genSearchSearch56Route, + genSearchSearch57Route: genSearchSearch57Route, + genSearchSearch58Route: genSearchSearch58Route, + genSearchSearch59Route: genSearchSearch59Route, + genSearchSearch6Route: genSearchSearch6Route, + genSearchSearch60Route: genSearchSearch60Route, + genSearchSearch61Route: genSearchSearch61Route, + genSearchSearch62Route: genSearchSearch62Route, + genSearchSearch63Route: genSearchSearch63Route, + genSearchSearch64Route: genSearchSearch64Route, + genSearchSearch65Route: genSearchSearch65Route, + genSearchSearch66Route: genSearchSearch66Route, + genSearchSearch67Route: genSearchSearch67Route, + genSearchSearch68Route: genSearchSearch68Route, + genSearchSearch69Route: genSearchSearch69Route, + genSearchSearch7Route: genSearchSearch7Route, + genSearchSearch70Route: genSearchSearch70Route, + genSearchSearch71Route: genSearchSearch71Route, + genSearchSearch72Route: genSearchSearch72Route, + genSearchSearch73Route: genSearchSearch73Route, + genSearchSearch74Route: genSearchSearch74Route, + genSearchSearch75Route: genSearchSearch75Route, + genSearchSearch76Route: genSearchSearch76Route, + genSearchSearch77Route: genSearchSearch77Route, + genSearchSearch78Route: genSearchSearch78Route, + genSearchSearch79Route: genSearchSearch79Route, + genSearchSearch8Route: genSearchSearch8Route, + genSearchSearch80Route: genSearchSearch80Route, + genSearchSearch81Route: genSearchSearch81Route, + genSearchSearch82Route: genSearchSearch82Route, + genSearchSearch83Route: genSearchSearch83Route, + genSearchSearch84Route: genSearchSearch84Route, + genSearchSearch85Route: genSearchSearch85Route, + genSearchSearch86Route: genSearchSearch86Route, + genSearchSearch87Route: genSearchSearch87Route, + genSearchSearch88Route: genSearchSearch88Route, + genSearchSearch89Route: genSearchSearch89Route, + genSearchSearch9Route: genSearchSearch9Route, + genSearchSearch90Route: genSearchSearch90Route, + genSearchSearch91Route: genSearchSearch91Route, + genSearchSearch92Route: genSearchSearch92Route, + genSearchSearch93Route: genSearchSearch93Route, + genSearchSearch94Route: genSearchSearch94Route, + genSearchSearch95Route: genSearchSearch95Route, + genSearchSearch96Route: genSearchSearch96Route, + genSearchSearch97Route: genSearchSearch97Route, + genSearchSearch98Route: genSearchSearch98Route, + genSearchSearch99Route: genSearchSearch99Route, +} + +const genSearchRouteRouteWithChildren = genSearchRouteRoute._addFileChildren( + genSearchRouteRouteChildren, +) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/params': typeof genParamsRouteRouteWithChildren + '/search': typeof genSearchRouteRouteWithChildren + '/absolute': typeof AbsoluteRoute + '/linkProps': typeof LinkPropsRoute + '/relative': typeof RelativeRoute + '/absolute0': typeof genAbsolute0Route + '/absolute1': typeof genAbsolute1Route + '/absolute10': typeof genAbsolute10Route + '/absolute11': typeof genAbsolute11Route + '/absolute12': typeof genAbsolute12Route + '/absolute13': typeof genAbsolute13Route + '/absolute14': typeof genAbsolute14Route + '/absolute15': typeof genAbsolute15Route + '/absolute16': typeof genAbsolute16Route + '/absolute17': typeof genAbsolute17Route + '/absolute18': typeof genAbsolute18Route + '/absolute19': typeof genAbsolute19Route + '/absolute2': typeof genAbsolute2Route + '/absolute20': typeof genAbsolute20Route + '/absolute21': typeof genAbsolute21Route + '/absolute22': typeof genAbsolute22Route + '/absolute23': typeof genAbsolute23Route + '/absolute24': typeof genAbsolute24Route + '/absolute25': typeof genAbsolute25Route + '/absolute26': typeof genAbsolute26Route + '/absolute27': typeof genAbsolute27Route + '/absolute28': typeof genAbsolute28Route + '/absolute29': typeof genAbsolute29Route + '/absolute3': typeof genAbsolute3Route + '/absolute30': typeof genAbsolute30Route + '/absolute31': typeof genAbsolute31Route + '/absolute32': typeof genAbsolute32Route + '/absolute33': typeof genAbsolute33Route + '/absolute34': typeof genAbsolute34Route + '/absolute35': typeof genAbsolute35Route + '/absolute36': typeof genAbsolute36Route + '/absolute37': typeof genAbsolute37Route + '/absolute38': typeof genAbsolute38Route + '/absolute39': typeof genAbsolute39Route + '/absolute4': typeof genAbsolute4Route + '/absolute40': typeof genAbsolute40Route + '/absolute41': typeof genAbsolute41Route + '/absolute42': typeof genAbsolute42Route + '/absolute43': typeof genAbsolute43Route + '/absolute44': typeof genAbsolute44Route + '/absolute45': typeof genAbsolute45Route + '/absolute46': typeof genAbsolute46Route + '/absolute47': typeof genAbsolute47Route + '/absolute48': typeof genAbsolute48Route + '/absolute49': typeof genAbsolute49Route + '/absolute5': typeof genAbsolute5Route + '/absolute50': typeof genAbsolute50Route + '/absolute51': typeof genAbsolute51Route + '/absolute52': typeof genAbsolute52Route + '/absolute53': typeof genAbsolute53Route + '/absolute54': typeof genAbsolute54Route + '/absolute55': typeof genAbsolute55Route + '/absolute56': typeof genAbsolute56Route + '/absolute57': typeof genAbsolute57Route + '/absolute58': typeof genAbsolute58Route + '/absolute59': typeof genAbsolute59Route + '/absolute6': typeof genAbsolute6Route + '/absolute60': typeof genAbsolute60Route + '/absolute61': typeof genAbsolute61Route + '/absolute62': typeof genAbsolute62Route + '/absolute63': typeof genAbsolute63Route + '/absolute64': typeof genAbsolute64Route + '/absolute65': typeof genAbsolute65Route + '/absolute66': typeof genAbsolute66Route + '/absolute67': typeof genAbsolute67Route + '/absolute68': typeof genAbsolute68Route + '/absolute69': typeof genAbsolute69Route + '/absolute7': typeof genAbsolute7Route + '/absolute70': typeof genAbsolute70Route + '/absolute71': typeof genAbsolute71Route + '/absolute72': typeof genAbsolute72Route + '/absolute73': typeof genAbsolute73Route + '/absolute74': typeof genAbsolute74Route + '/absolute75': typeof genAbsolute75Route + '/absolute76': typeof genAbsolute76Route + '/absolute77': typeof genAbsolute77Route + '/absolute78': typeof genAbsolute78Route + '/absolute79': typeof genAbsolute79Route + '/absolute8': typeof genAbsolute8Route + '/absolute80': typeof genAbsolute80Route + '/absolute81': typeof genAbsolute81Route + '/absolute82': typeof genAbsolute82Route + '/absolute83': typeof genAbsolute83Route + '/absolute84': typeof genAbsolute84Route + '/absolute85': typeof genAbsolute85Route + '/absolute86': typeof genAbsolute86Route + '/absolute87': typeof genAbsolute87Route + '/absolute88': typeof genAbsolute88Route + '/absolute89': typeof genAbsolute89Route + '/absolute9': typeof genAbsolute9Route + '/absolute90': typeof genAbsolute90Route + '/absolute91': typeof genAbsolute91Route + '/absolute92': typeof genAbsolute92Route + '/absolute93': typeof genAbsolute93Route + '/absolute94': typeof genAbsolute94Route + '/absolute95': typeof genAbsolute95Route + '/absolute96': typeof genAbsolute96Route + '/absolute97': typeof genAbsolute97Route + '/absolute98': typeof genAbsolute98Route + '/absolute99': typeof genAbsolute99Route + '/relative0': typeof genRelative0Route + '/relative1': typeof genRelative1Route + '/relative10': typeof genRelative10Route + '/relative11': typeof genRelative11Route + '/relative12': typeof genRelative12Route + '/relative13': typeof genRelative13Route + '/relative14': typeof genRelative14Route + '/relative15': typeof genRelative15Route + '/relative16': typeof genRelative16Route + '/relative17': typeof genRelative17Route + '/relative18': typeof genRelative18Route + '/relative19': typeof genRelative19Route + '/relative2': typeof genRelative2Route + '/relative20': typeof genRelative20Route + '/relative21': typeof genRelative21Route + '/relative22': typeof genRelative22Route + '/relative23': typeof genRelative23Route + '/relative24': typeof genRelative24Route + '/relative25': typeof genRelative25Route + '/relative26': typeof genRelative26Route + '/relative27': typeof genRelative27Route + '/relative28': typeof genRelative28Route + '/relative29': typeof genRelative29Route + '/relative3': typeof genRelative3Route + '/relative30': typeof genRelative30Route + '/relative31': typeof genRelative31Route + '/relative32': typeof genRelative32Route + '/relative33': typeof genRelative33Route + '/relative34': typeof genRelative34Route + '/relative35': typeof genRelative35Route + '/relative36': typeof genRelative36Route + '/relative37': typeof genRelative37Route + '/relative38': typeof genRelative38Route + '/relative39': typeof genRelative39Route + '/relative4': typeof genRelative4Route + '/relative40': typeof genRelative40Route + '/relative41': typeof genRelative41Route + '/relative42': typeof genRelative42Route + '/relative43': typeof genRelative43Route + '/relative44': typeof genRelative44Route + '/relative45': typeof genRelative45Route + '/relative46': typeof genRelative46Route + '/relative47': typeof genRelative47Route + '/relative48': typeof genRelative48Route + '/relative49': typeof genRelative49Route + '/relative5': typeof genRelative5Route + '/relative50': typeof genRelative50Route + '/relative51': typeof genRelative51Route + '/relative52': typeof genRelative52Route + '/relative53': typeof genRelative53Route + '/relative54': typeof genRelative54Route + '/relative55': typeof genRelative55Route + '/relative56': typeof genRelative56Route + '/relative57': typeof genRelative57Route + '/relative58': typeof genRelative58Route + '/relative59': typeof genRelative59Route + '/relative6': typeof genRelative6Route + '/relative60': typeof genRelative60Route + '/relative61': typeof genRelative61Route + '/relative62': typeof genRelative62Route + '/relative63': typeof genRelative63Route + '/relative64': typeof genRelative64Route + '/relative65': typeof genRelative65Route + '/relative66': typeof genRelative66Route + '/relative67': typeof genRelative67Route + '/relative68': typeof genRelative68Route + '/relative69': typeof genRelative69Route + '/relative7': typeof genRelative7Route + '/relative70': typeof genRelative70Route + '/relative71': typeof genRelative71Route + '/relative72': typeof genRelative72Route + '/relative73': typeof genRelative73Route + '/relative74': typeof genRelative74Route + '/relative75': typeof genRelative75Route + '/relative76': typeof genRelative76Route + '/relative77': typeof genRelative77Route + '/relative78': typeof genRelative78Route + '/relative79': typeof genRelative79Route + '/relative8': typeof genRelative8Route + '/relative80': typeof genRelative80Route + '/relative81': typeof genRelative81Route + '/relative82': typeof genRelative82Route + '/relative83': typeof genRelative83Route + '/relative84': typeof genRelative84Route + '/relative85': typeof genRelative85Route + '/relative86': typeof genRelative86Route + '/relative87': typeof genRelative87Route + '/relative88': typeof genRelative88Route + '/relative89': typeof genRelative89Route + '/relative9': typeof genRelative9Route + '/relative90': typeof genRelative90Route + '/relative91': typeof genRelative91Route + '/relative92': typeof genRelative92Route + '/relative93': typeof genRelative93Route + '/relative94': typeof genRelative94Route + '/relative95': typeof genRelative95Route + '/relative96': typeof genRelative96Route + '/relative97': typeof genRelative97Route + '/relative98': typeof genRelative98Route + '/relative99': typeof genRelative99Route + '/params/$paramsPlaceholder': typeof ParamsParamsPlaceholderRoute + '/search/searchPlaceholder': typeof SearchSearchPlaceholderRoute + '/params/$param0': typeof genParamsParam0Route + '/params/$param1': typeof genParamsParam1Route + '/params/$param10': typeof genParamsParam10Route + '/params/$param11': typeof genParamsParam11Route + '/params/$param12': typeof genParamsParam12Route + '/params/$param13': typeof genParamsParam13Route + '/params/$param14': typeof genParamsParam14Route + '/params/$param15': typeof genParamsParam15Route + '/params/$param16': typeof genParamsParam16Route + '/params/$param17': typeof genParamsParam17Route + '/params/$param18': typeof genParamsParam18Route + '/params/$param19': typeof genParamsParam19Route + '/params/$param2': typeof genParamsParam2Route + '/params/$param20': typeof genParamsParam20Route + '/params/$param21': typeof genParamsParam21Route + '/params/$param22': typeof genParamsParam22Route + '/params/$param23': typeof genParamsParam23Route + '/params/$param24': typeof genParamsParam24Route + '/params/$param25': typeof genParamsParam25Route + '/params/$param26': typeof genParamsParam26Route + '/params/$param27': typeof genParamsParam27Route + '/params/$param28': typeof genParamsParam28Route + '/params/$param29': typeof genParamsParam29Route + '/params/$param3': typeof genParamsParam3Route + '/params/$param30': typeof genParamsParam30Route + '/params/$param31': typeof genParamsParam31Route + '/params/$param32': typeof genParamsParam32Route + '/params/$param33': typeof genParamsParam33Route + '/params/$param34': typeof genParamsParam34Route + '/params/$param35': typeof genParamsParam35Route + '/params/$param36': typeof genParamsParam36Route + '/params/$param37': typeof genParamsParam37Route + '/params/$param38': typeof genParamsParam38Route + '/params/$param39': typeof genParamsParam39Route + '/params/$param4': typeof genParamsParam4Route + '/params/$param40': typeof genParamsParam40Route + '/params/$param41': typeof genParamsParam41Route + '/params/$param42': typeof genParamsParam42Route + '/params/$param43': typeof genParamsParam43Route + '/params/$param44': typeof genParamsParam44Route + '/params/$param45': typeof genParamsParam45Route + '/params/$param46': typeof genParamsParam46Route + '/params/$param47': typeof genParamsParam47Route + '/params/$param48': typeof genParamsParam48Route + '/params/$param49': typeof genParamsParam49Route + '/params/$param5': typeof genParamsParam5Route + '/params/$param50': typeof genParamsParam50Route + '/params/$param51': typeof genParamsParam51Route + '/params/$param52': typeof genParamsParam52Route + '/params/$param53': typeof genParamsParam53Route + '/params/$param54': typeof genParamsParam54Route + '/params/$param55': typeof genParamsParam55Route + '/params/$param56': typeof genParamsParam56Route + '/params/$param57': typeof genParamsParam57Route + '/params/$param58': typeof genParamsParam58Route + '/params/$param59': typeof genParamsParam59Route + '/params/$param6': typeof genParamsParam6Route + '/params/$param60': typeof genParamsParam60Route + '/params/$param61': typeof genParamsParam61Route + '/params/$param62': typeof genParamsParam62Route + '/params/$param63': typeof genParamsParam63Route + '/params/$param64': typeof genParamsParam64Route + '/params/$param65': typeof genParamsParam65Route + '/params/$param66': typeof genParamsParam66Route + '/params/$param67': typeof genParamsParam67Route + '/params/$param68': typeof genParamsParam68Route + '/params/$param69': typeof genParamsParam69Route + '/params/$param7': typeof genParamsParam7Route + '/params/$param70': typeof genParamsParam70Route + '/params/$param71': typeof genParamsParam71Route + '/params/$param72': typeof genParamsParam72Route + '/params/$param73': typeof genParamsParam73Route + '/params/$param74': typeof genParamsParam74Route + '/params/$param75': typeof genParamsParam75Route + '/params/$param76': typeof genParamsParam76Route + '/params/$param77': typeof genParamsParam77Route + '/params/$param78': typeof genParamsParam78Route + '/params/$param79': typeof genParamsParam79Route + '/params/$param8': typeof genParamsParam8Route + '/params/$param80': typeof genParamsParam80Route + '/params/$param81': typeof genParamsParam81Route + '/params/$param82': typeof genParamsParam82Route + '/params/$param83': typeof genParamsParam83Route + '/params/$param84': typeof genParamsParam84Route + '/params/$param85': typeof genParamsParam85Route + '/params/$param86': typeof genParamsParam86Route + '/params/$param87': typeof genParamsParam87Route + '/params/$param88': typeof genParamsParam88Route + '/params/$param89': typeof genParamsParam89Route + '/params/$param9': typeof genParamsParam9Route + '/params/$param90': typeof genParamsParam90Route + '/params/$param91': typeof genParamsParam91Route + '/params/$param92': typeof genParamsParam92Route + '/params/$param93': typeof genParamsParam93Route + '/params/$param94': typeof genParamsParam94Route + '/params/$param95': typeof genParamsParam95Route + '/params/$param96': typeof genParamsParam96Route + '/params/$param97': typeof genParamsParam97Route + '/params/$param98': typeof genParamsParam98Route + '/params/$param99': typeof genParamsParam99Route + '/search/search0': typeof genSearchSearch0Route + '/search/search1': typeof genSearchSearch1Route + '/search/search10': typeof genSearchSearch10Route + '/search/search11': typeof genSearchSearch11Route + '/search/search12': typeof genSearchSearch12Route + '/search/search13': typeof genSearchSearch13Route + '/search/search14': typeof genSearchSearch14Route + '/search/search15': typeof genSearchSearch15Route + '/search/search16': typeof genSearchSearch16Route + '/search/search17': typeof genSearchSearch17Route + '/search/search18': typeof genSearchSearch18Route + '/search/search19': typeof genSearchSearch19Route + '/search/search2': typeof genSearchSearch2Route + '/search/search20': typeof genSearchSearch20Route + '/search/search21': typeof genSearchSearch21Route + '/search/search22': typeof genSearchSearch22Route + '/search/search23': typeof genSearchSearch23Route + '/search/search24': typeof genSearchSearch24Route + '/search/search25': typeof genSearchSearch25Route + '/search/search26': typeof genSearchSearch26Route + '/search/search27': typeof genSearchSearch27Route + '/search/search28': typeof genSearchSearch28Route + '/search/search29': typeof genSearchSearch29Route + '/search/search3': typeof genSearchSearch3Route + '/search/search30': typeof genSearchSearch30Route + '/search/search31': typeof genSearchSearch31Route + '/search/search32': typeof genSearchSearch32Route + '/search/search33': typeof genSearchSearch33Route + '/search/search34': typeof genSearchSearch34Route + '/search/search35': typeof genSearchSearch35Route + '/search/search36': typeof genSearchSearch36Route + '/search/search37': typeof genSearchSearch37Route + '/search/search38': typeof genSearchSearch38Route + '/search/search39': typeof genSearchSearch39Route + '/search/search4': typeof genSearchSearch4Route + '/search/search40': typeof genSearchSearch40Route + '/search/search41': typeof genSearchSearch41Route + '/search/search42': typeof genSearchSearch42Route + '/search/search43': typeof genSearchSearch43Route + '/search/search44': typeof genSearchSearch44Route + '/search/search45': typeof genSearchSearch45Route + '/search/search46': typeof genSearchSearch46Route + '/search/search47': typeof genSearchSearch47Route + '/search/search48': typeof genSearchSearch48Route + '/search/search49': typeof genSearchSearch49Route + '/search/search5': typeof genSearchSearch5Route + '/search/search50': typeof genSearchSearch50Route + '/search/search51': typeof genSearchSearch51Route + '/search/search52': typeof genSearchSearch52Route + '/search/search53': typeof genSearchSearch53Route + '/search/search54': typeof genSearchSearch54Route + '/search/search55': typeof genSearchSearch55Route + '/search/search56': typeof genSearchSearch56Route + '/search/search57': typeof genSearchSearch57Route + '/search/search58': typeof genSearchSearch58Route + '/search/search59': typeof genSearchSearch59Route + '/search/search6': typeof genSearchSearch6Route + '/search/search60': typeof genSearchSearch60Route + '/search/search61': typeof genSearchSearch61Route + '/search/search62': typeof genSearchSearch62Route + '/search/search63': typeof genSearchSearch63Route + '/search/search64': typeof genSearchSearch64Route + '/search/search65': typeof genSearchSearch65Route + '/search/search66': typeof genSearchSearch66Route + '/search/search67': typeof genSearchSearch67Route + '/search/search68': typeof genSearchSearch68Route + '/search/search69': typeof genSearchSearch69Route + '/search/search7': typeof genSearchSearch7Route + '/search/search70': typeof genSearchSearch70Route + '/search/search71': typeof genSearchSearch71Route + '/search/search72': typeof genSearchSearch72Route + '/search/search73': typeof genSearchSearch73Route + '/search/search74': typeof genSearchSearch74Route + '/search/search75': typeof genSearchSearch75Route + '/search/search76': typeof genSearchSearch76Route + '/search/search77': typeof genSearchSearch77Route + '/search/search78': typeof genSearchSearch78Route + '/search/search79': typeof genSearchSearch79Route + '/search/search8': typeof genSearchSearch8Route + '/search/search80': typeof genSearchSearch80Route + '/search/search81': typeof genSearchSearch81Route + '/search/search82': typeof genSearchSearch82Route + '/search/search83': typeof genSearchSearch83Route + '/search/search84': typeof genSearchSearch84Route + '/search/search85': typeof genSearchSearch85Route + '/search/search86': typeof genSearchSearch86Route + '/search/search87': typeof genSearchSearch87Route + '/search/search88': typeof genSearchSearch88Route + '/search/search89': typeof genSearchSearch89Route + '/search/search9': typeof genSearchSearch9Route + '/search/search90': typeof genSearchSearch90Route + '/search/search91': typeof genSearchSearch91Route + '/search/search92': typeof genSearchSearch92Route + '/search/search93': typeof genSearchSearch93Route + '/search/search94': typeof genSearchSearch94Route + '/search/search95': typeof genSearchSearch95Route + '/search/search96': typeof genSearchSearch96Route + '/search/search97': typeof genSearchSearch97Route + '/search/search98': typeof genSearchSearch98Route + '/search/search99': typeof genSearchSearch99Route +} + +export interface FileRoutesByTo { + '/': typeof IndexRoute + '/params': typeof genParamsRouteRouteWithChildren + '/search': typeof genSearchRouteRouteWithChildren + '/absolute': typeof AbsoluteRoute + '/linkProps': typeof LinkPropsRoute + '/relative': typeof RelativeRoute + '/absolute0': typeof genAbsolute0Route + '/absolute1': typeof genAbsolute1Route + '/absolute10': typeof genAbsolute10Route + '/absolute11': typeof genAbsolute11Route + '/absolute12': typeof genAbsolute12Route + '/absolute13': typeof genAbsolute13Route + '/absolute14': typeof genAbsolute14Route + '/absolute15': typeof genAbsolute15Route + '/absolute16': typeof genAbsolute16Route + '/absolute17': typeof genAbsolute17Route + '/absolute18': typeof genAbsolute18Route + '/absolute19': typeof genAbsolute19Route + '/absolute2': typeof genAbsolute2Route + '/absolute20': typeof genAbsolute20Route + '/absolute21': typeof genAbsolute21Route + '/absolute22': typeof genAbsolute22Route + '/absolute23': typeof genAbsolute23Route + '/absolute24': typeof genAbsolute24Route + '/absolute25': typeof genAbsolute25Route + '/absolute26': typeof genAbsolute26Route + '/absolute27': typeof genAbsolute27Route + '/absolute28': typeof genAbsolute28Route + '/absolute29': typeof genAbsolute29Route + '/absolute3': typeof genAbsolute3Route + '/absolute30': typeof genAbsolute30Route + '/absolute31': typeof genAbsolute31Route + '/absolute32': typeof genAbsolute32Route + '/absolute33': typeof genAbsolute33Route + '/absolute34': typeof genAbsolute34Route + '/absolute35': typeof genAbsolute35Route + '/absolute36': typeof genAbsolute36Route + '/absolute37': typeof genAbsolute37Route + '/absolute38': typeof genAbsolute38Route + '/absolute39': typeof genAbsolute39Route + '/absolute4': typeof genAbsolute4Route + '/absolute40': typeof genAbsolute40Route + '/absolute41': typeof genAbsolute41Route + '/absolute42': typeof genAbsolute42Route + '/absolute43': typeof genAbsolute43Route + '/absolute44': typeof genAbsolute44Route + '/absolute45': typeof genAbsolute45Route + '/absolute46': typeof genAbsolute46Route + '/absolute47': typeof genAbsolute47Route + '/absolute48': typeof genAbsolute48Route + '/absolute49': typeof genAbsolute49Route + '/absolute5': typeof genAbsolute5Route + '/absolute50': typeof genAbsolute50Route + '/absolute51': typeof genAbsolute51Route + '/absolute52': typeof genAbsolute52Route + '/absolute53': typeof genAbsolute53Route + '/absolute54': typeof genAbsolute54Route + '/absolute55': typeof genAbsolute55Route + '/absolute56': typeof genAbsolute56Route + '/absolute57': typeof genAbsolute57Route + '/absolute58': typeof genAbsolute58Route + '/absolute59': typeof genAbsolute59Route + '/absolute6': typeof genAbsolute6Route + '/absolute60': typeof genAbsolute60Route + '/absolute61': typeof genAbsolute61Route + '/absolute62': typeof genAbsolute62Route + '/absolute63': typeof genAbsolute63Route + '/absolute64': typeof genAbsolute64Route + '/absolute65': typeof genAbsolute65Route + '/absolute66': typeof genAbsolute66Route + '/absolute67': typeof genAbsolute67Route + '/absolute68': typeof genAbsolute68Route + '/absolute69': typeof genAbsolute69Route + '/absolute7': typeof genAbsolute7Route + '/absolute70': typeof genAbsolute70Route + '/absolute71': typeof genAbsolute71Route + '/absolute72': typeof genAbsolute72Route + '/absolute73': typeof genAbsolute73Route + '/absolute74': typeof genAbsolute74Route + '/absolute75': typeof genAbsolute75Route + '/absolute76': typeof genAbsolute76Route + '/absolute77': typeof genAbsolute77Route + '/absolute78': typeof genAbsolute78Route + '/absolute79': typeof genAbsolute79Route + '/absolute8': typeof genAbsolute8Route + '/absolute80': typeof genAbsolute80Route + '/absolute81': typeof genAbsolute81Route + '/absolute82': typeof genAbsolute82Route + '/absolute83': typeof genAbsolute83Route + '/absolute84': typeof genAbsolute84Route + '/absolute85': typeof genAbsolute85Route + '/absolute86': typeof genAbsolute86Route + '/absolute87': typeof genAbsolute87Route + '/absolute88': typeof genAbsolute88Route + '/absolute89': typeof genAbsolute89Route + '/absolute9': typeof genAbsolute9Route + '/absolute90': typeof genAbsolute90Route + '/absolute91': typeof genAbsolute91Route + '/absolute92': typeof genAbsolute92Route + '/absolute93': typeof genAbsolute93Route + '/absolute94': typeof genAbsolute94Route + '/absolute95': typeof genAbsolute95Route + '/absolute96': typeof genAbsolute96Route + '/absolute97': typeof genAbsolute97Route + '/absolute98': typeof genAbsolute98Route + '/absolute99': typeof genAbsolute99Route + '/relative0': typeof genRelative0Route + '/relative1': typeof genRelative1Route + '/relative10': typeof genRelative10Route + '/relative11': typeof genRelative11Route + '/relative12': typeof genRelative12Route + '/relative13': typeof genRelative13Route + '/relative14': typeof genRelative14Route + '/relative15': typeof genRelative15Route + '/relative16': typeof genRelative16Route + '/relative17': typeof genRelative17Route + '/relative18': typeof genRelative18Route + '/relative19': typeof genRelative19Route + '/relative2': typeof genRelative2Route + '/relative20': typeof genRelative20Route + '/relative21': typeof genRelative21Route + '/relative22': typeof genRelative22Route + '/relative23': typeof genRelative23Route + '/relative24': typeof genRelative24Route + '/relative25': typeof genRelative25Route + '/relative26': typeof genRelative26Route + '/relative27': typeof genRelative27Route + '/relative28': typeof genRelative28Route + '/relative29': typeof genRelative29Route + '/relative3': typeof genRelative3Route + '/relative30': typeof genRelative30Route + '/relative31': typeof genRelative31Route + '/relative32': typeof genRelative32Route + '/relative33': typeof genRelative33Route + '/relative34': typeof genRelative34Route + '/relative35': typeof genRelative35Route + '/relative36': typeof genRelative36Route + '/relative37': typeof genRelative37Route + '/relative38': typeof genRelative38Route + '/relative39': typeof genRelative39Route + '/relative4': typeof genRelative4Route + '/relative40': typeof genRelative40Route + '/relative41': typeof genRelative41Route + '/relative42': typeof genRelative42Route + '/relative43': typeof genRelative43Route + '/relative44': typeof genRelative44Route + '/relative45': typeof genRelative45Route + '/relative46': typeof genRelative46Route + '/relative47': typeof genRelative47Route + '/relative48': typeof genRelative48Route + '/relative49': typeof genRelative49Route + '/relative5': typeof genRelative5Route + '/relative50': typeof genRelative50Route + '/relative51': typeof genRelative51Route + '/relative52': typeof genRelative52Route + '/relative53': typeof genRelative53Route + '/relative54': typeof genRelative54Route + '/relative55': typeof genRelative55Route + '/relative56': typeof genRelative56Route + '/relative57': typeof genRelative57Route + '/relative58': typeof genRelative58Route + '/relative59': typeof genRelative59Route + '/relative6': typeof genRelative6Route + '/relative60': typeof genRelative60Route + '/relative61': typeof genRelative61Route + '/relative62': typeof genRelative62Route + '/relative63': typeof genRelative63Route + '/relative64': typeof genRelative64Route + '/relative65': typeof genRelative65Route + '/relative66': typeof genRelative66Route + '/relative67': typeof genRelative67Route + '/relative68': typeof genRelative68Route + '/relative69': typeof genRelative69Route + '/relative7': typeof genRelative7Route + '/relative70': typeof genRelative70Route + '/relative71': typeof genRelative71Route + '/relative72': typeof genRelative72Route + '/relative73': typeof genRelative73Route + '/relative74': typeof genRelative74Route + '/relative75': typeof genRelative75Route + '/relative76': typeof genRelative76Route + '/relative77': typeof genRelative77Route + '/relative78': typeof genRelative78Route + '/relative79': typeof genRelative79Route + '/relative8': typeof genRelative8Route + '/relative80': typeof genRelative80Route + '/relative81': typeof genRelative81Route + '/relative82': typeof genRelative82Route + '/relative83': typeof genRelative83Route + '/relative84': typeof genRelative84Route + '/relative85': typeof genRelative85Route + '/relative86': typeof genRelative86Route + '/relative87': typeof genRelative87Route + '/relative88': typeof genRelative88Route + '/relative89': typeof genRelative89Route + '/relative9': typeof genRelative9Route + '/relative90': typeof genRelative90Route + '/relative91': typeof genRelative91Route + '/relative92': typeof genRelative92Route + '/relative93': typeof genRelative93Route + '/relative94': typeof genRelative94Route + '/relative95': typeof genRelative95Route + '/relative96': typeof genRelative96Route + '/relative97': typeof genRelative97Route + '/relative98': typeof genRelative98Route + '/relative99': typeof genRelative99Route + '/params/$paramsPlaceholder': typeof ParamsParamsPlaceholderRoute + '/search/searchPlaceholder': typeof SearchSearchPlaceholderRoute + '/params/$param0': typeof genParamsParam0Route + '/params/$param1': typeof genParamsParam1Route + '/params/$param10': typeof genParamsParam10Route + '/params/$param11': typeof genParamsParam11Route + '/params/$param12': typeof genParamsParam12Route + '/params/$param13': typeof genParamsParam13Route + '/params/$param14': typeof genParamsParam14Route + '/params/$param15': typeof genParamsParam15Route + '/params/$param16': typeof genParamsParam16Route + '/params/$param17': typeof genParamsParam17Route + '/params/$param18': typeof genParamsParam18Route + '/params/$param19': typeof genParamsParam19Route + '/params/$param2': typeof genParamsParam2Route + '/params/$param20': typeof genParamsParam20Route + '/params/$param21': typeof genParamsParam21Route + '/params/$param22': typeof genParamsParam22Route + '/params/$param23': typeof genParamsParam23Route + '/params/$param24': typeof genParamsParam24Route + '/params/$param25': typeof genParamsParam25Route + '/params/$param26': typeof genParamsParam26Route + '/params/$param27': typeof genParamsParam27Route + '/params/$param28': typeof genParamsParam28Route + '/params/$param29': typeof genParamsParam29Route + '/params/$param3': typeof genParamsParam3Route + '/params/$param30': typeof genParamsParam30Route + '/params/$param31': typeof genParamsParam31Route + '/params/$param32': typeof genParamsParam32Route + '/params/$param33': typeof genParamsParam33Route + '/params/$param34': typeof genParamsParam34Route + '/params/$param35': typeof genParamsParam35Route + '/params/$param36': typeof genParamsParam36Route + '/params/$param37': typeof genParamsParam37Route + '/params/$param38': typeof genParamsParam38Route + '/params/$param39': typeof genParamsParam39Route + '/params/$param4': typeof genParamsParam4Route + '/params/$param40': typeof genParamsParam40Route + '/params/$param41': typeof genParamsParam41Route + '/params/$param42': typeof genParamsParam42Route + '/params/$param43': typeof genParamsParam43Route + '/params/$param44': typeof genParamsParam44Route + '/params/$param45': typeof genParamsParam45Route + '/params/$param46': typeof genParamsParam46Route + '/params/$param47': typeof genParamsParam47Route + '/params/$param48': typeof genParamsParam48Route + '/params/$param49': typeof genParamsParam49Route + '/params/$param5': typeof genParamsParam5Route + '/params/$param50': typeof genParamsParam50Route + '/params/$param51': typeof genParamsParam51Route + '/params/$param52': typeof genParamsParam52Route + '/params/$param53': typeof genParamsParam53Route + '/params/$param54': typeof genParamsParam54Route + '/params/$param55': typeof genParamsParam55Route + '/params/$param56': typeof genParamsParam56Route + '/params/$param57': typeof genParamsParam57Route + '/params/$param58': typeof genParamsParam58Route + '/params/$param59': typeof genParamsParam59Route + '/params/$param6': typeof genParamsParam6Route + '/params/$param60': typeof genParamsParam60Route + '/params/$param61': typeof genParamsParam61Route + '/params/$param62': typeof genParamsParam62Route + '/params/$param63': typeof genParamsParam63Route + '/params/$param64': typeof genParamsParam64Route + '/params/$param65': typeof genParamsParam65Route + '/params/$param66': typeof genParamsParam66Route + '/params/$param67': typeof genParamsParam67Route + '/params/$param68': typeof genParamsParam68Route + '/params/$param69': typeof genParamsParam69Route + '/params/$param7': typeof genParamsParam7Route + '/params/$param70': typeof genParamsParam70Route + '/params/$param71': typeof genParamsParam71Route + '/params/$param72': typeof genParamsParam72Route + '/params/$param73': typeof genParamsParam73Route + '/params/$param74': typeof genParamsParam74Route + '/params/$param75': typeof genParamsParam75Route + '/params/$param76': typeof genParamsParam76Route + '/params/$param77': typeof genParamsParam77Route + '/params/$param78': typeof genParamsParam78Route + '/params/$param79': typeof genParamsParam79Route + '/params/$param8': typeof genParamsParam8Route + '/params/$param80': typeof genParamsParam80Route + '/params/$param81': typeof genParamsParam81Route + '/params/$param82': typeof genParamsParam82Route + '/params/$param83': typeof genParamsParam83Route + '/params/$param84': typeof genParamsParam84Route + '/params/$param85': typeof genParamsParam85Route + '/params/$param86': typeof genParamsParam86Route + '/params/$param87': typeof genParamsParam87Route + '/params/$param88': typeof genParamsParam88Route + '/params/$param89': typeof genParamsParam89Route + '/params/$param9': typeof genParamsParam9Route + '/params/$param90': typeof genParamsParam90Route + '/params/$param91': typeof genParamsParam91Route + '/params/$param92': typeof genParamsParam92Route + '/params/$param93': typeof genParamsParam93Route + '/params/$param94': typeof genParamsParam94Route + '/params/$param95': typeof genParamsParam95Route + '/params/$param96': typeof genParamsParam96Route + '/params/$param97': typeof genParamsParam97Route + '/params/$param98': typeof genParamsParam98Route + '/params/$param99': typeof genParamsParam99Route + '/search/search0': typeof genSearchSearch0Route + '/search/search1': typeof genSearchSearch1Route + '/search/search10': typeof genSearchSearch10Route + '/search/search11': typeof genSearchSearch11Route + '/search/search12': typeof genSearchSearch12Route + '/search/search13': typeof genSearchSearch13Route + '/search/search14': typeof genSearchSearch14Route + '/search/search15': typeof genSearchSearch15Route + '/search/search16': typeof genSearchSearch16Route + '/search/search17': typeof genSearchSearch17Route + '/search/search18': typeof genSearchSearch18Route + '/search/search19': typeof genSearchSearch19Route + '/search/search2': typeof genSearchSearch2Route + '/search/search20': typeof genSearchSearch20Route + '/search/search21': typeof genSearchSearch21Route + '/search/search22': typeof genSearchSearch22Route + '/search/search23': typeof genSearchSearch23Route + '/search/search24': typeof genSearchSearch24Route + '/search/search25': typeof genSearchSearch25Route + '/search/search26': typeof genSearchSearch26Route + '/search/search27': typeof genSearchSearch27Route + '/search/search28': typeof genSearchSearch28Route + '/search/search29': typeof genSearchSearch29Route + '/search/search3': typeof genSearchSearch3Route + '/search/search30': typeof genSearchSearch30Route + '/search/search31': typeof genSearchSearch31Route + '/search/search32': typeof genSearchSearch32Route + '/search/search33': typeof genSearchSearch33Route + '/search/search34': typeof genSearchSearch34Route + '/search/search35': typeof genSearchSearch35Route + '/search/search36': typeof genSearchSearch36Route + '/search/search37': typeof genSearchSearch37Route + '/search/search38': typeof genSearchSearch38Route + '/search/search39': typeof genSearchSearch39Route + '/search/search4': typeof genSearchSearch4Route + '/search/search40': typeof genSearchSearch40Route + '/search/search41': typeof genSearchSearch41Route + '/search/search42': typeof genSearchSearch42Route + '/search/search43': typeof genSearchSearch43Route + '/search/search44': typeof genSearchSearch44Route + '/search/search45': typeof genSearchSearch45Route + '/search/search46': typeof genSearchSearch46Route + '/search/search47': typeof genSearchSearch47Route + '/search/search48': typeof genSearchSearch48Route + '/search/search49': typeof genSearchSearch49Route + '/search/search5': typeof genSearchSearch5Route + '/search/search50': typeof genSearchSearch50Route + '/search/search51': typeof genSearchSearch51Route + '/search/search52': typeof genSearchSearch52Route + '/search/search53': typeof genSearchSearch53Route + '/search/search54': typeof genSearchSearch54Route + '/search/search55': typeof genSearchSearch55Route + '/search/search56': typeof genSearchSearch56Route + '/search/search57': typeof genSearchSearch57Route + '/search/search58': typeof genSearchSearch58Route + '/search/search59': typeof genSearchSearch59Route + '/search/search6': typeof genSearchSearch6Route + '/search/search60': typeof genSearchSearch60Route + '/search/search61': typeof genSearchSearch61Route + '/search/search62': typeof genSearchSearch62Route + '/search/search63': typeof genSearchSearch63Route + '/search/search64': typeof genSearchSearch64Route + '/search/search65': typeof genSearchSearch65Route + '/search/search66': typeof genSearchSearch66Route + '/search/search67': typeof genSearchSearch67Route + '/search/search68': typeof genSearchSearch68Route + '/search/search69': typeof genSearchSearch69Route + '/search/search7': typeof genSearchSearch7Route + '/search/search70': typeof genSearchSearch70Route + '/search/search71': typeof genSearchSearch71Route + '/search/search72': typeof genSearchSearch72Route + '/search/search73': typeof genSearchSearch73Route + '/search/search74': typeof genSearchSearch74Route + '/search/search75': typeof genSearchSearch75Route + '/search/search76': typeof genSearchSearch76Route + '/search/search77': typeof genSearchSearch77Route + '/search/search78': typeof genSearchSearch78Route + '/search/search79': typeof genSearchSearch79Route + '/search/search8': typeof genSearchSearch8Route + '/search/search80': typeof genSearchSearch80Route + '/search/search81': typeof genSearchSearch81Route + '/search/search82': typeof genSearchSearch82Route + '/search/search83': typeof genSearchSearch83Route + '/search/search84': typeof genSearchSearch84Route + '/search/search85': typeof genSearchSearch85Route + '/search/search86': typeof genSearchSearch86Route + '/search/search87': typeof genSearchSearch87Route + '/search/search88': typeof genSearchSearch88Route + '/search/search89': typeof genSearchSearch89Route + '/search/search9': typeof genSearchSearch9Route + '/search/search90': typeof genSearchSearch90Route + '/search/search91': typeof genSearchSearch91Route + '/search/search92': typeof genSearchSearch92Route + '/search/search93': typeof genSearchSearch93Route + '/search/search94': typeof genSearchSearch94Route + '/search/search95': typeof genSearchSearch95Route + '/search/search96': typeof genSearchSearch96Route + '/search/search97': typeof genSearchSearch97Route + '/search/search98': typeof genSearchSearch98Route + '/search/search99': typeof genSearchSearch99Route +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof IndexRoute + '/params': typeof genParamsRouteRouteWithChildren + '/search': typeof genSearchRouteRouteWithChildren + '/absolute': typeof AbsoluteRoute + '/linkProps': typeof LinkPropsRoute + '/relative': typeof RelativeRoute + '/absolute0': typeof genAbsolute0Route + '/absolute1': typeof genAbsolute1Route + '/absolute10': typeof genAbsolute10Route + '/absolute11': typeof genAbsolute11Route + '/absolute12': typeof genAbsolute12Route + '/absolute13': typeof genAbsolute13Route + '/absolute14': typeof genAbsolute14Route + '/absolute15': typeof genAbsolute15Route + '/absolute16': typeof genAbsolute16Route + '/absolute17': typeof genAbsolute17Route + '/absolute18': typeof genAbsolute18Route + '/absolute19': typeof genAbsolute19Route + '/absolute2': typeof genAbsolute2Route + '/absolute20': typeof genAbsolute20Route + '/absolute21': typeof genAbsolute21Route + '/absolute22': typeof genAbsolute22Route + '/absolute23': typeof genAbsolute23Route + '/absolute24': typeof genAbsolute24Route + '/absolute25': typeof genAbsolute25Route + '/absolute26': typeof genAbsolute26Route + '/absolute27': typeof genAbsolute27Route + '/absolute28': typeof genAbsolute28Route + '/absolute29': typeof genAbsolute29Route + '/absolute3': typeof genAbsolute3Route + '/absolute30': typeof genAbsolute30Route + '/absolute31': typeof genAbsolute31Route + '/absolute32': typeof genAbsolute32Route + '/absolute33': typeof genAbsolute33Route + '/absolute34': typeof genAbsolute34Route + '/absolute35': typeof genAbsolute35Route + '/absolute36': typeof genAbsolute36Route + '/absolute37': typeof genAbsolute37Route + '/absolute38': typeof genAbsolute38Route + '/absolute39': typeof genAbsolute39Route + '/absolute4': typeof genAbsolute4Route + '/absolute40': typeof genAbsolute40Route + '/absolute41': typeof genAbsolute41Route + '/absolute42': typeof genAbsolute42Route + '/absolute43': typeof genAbsolute43Route + '/absolute44': typeof genAbsolute44Route + '/absolute45': typeof genAbsolute45Route + '/absolute46': typeof genAbsolute46Route + '/absolute47': typeof genAbsolute47Route + '/absolute48': typeof genAbsolute48Route + '/absolute49': typeof genAbsolute49Route + '/absolute5': typeof genAbsolute5Route + '/absolute50': typeof genAbsolute50Route + '/absolute51': typeof genAbsolute51Route + '/absolute52': typeof genAbsolute52Route + '/absolute53': typeof genAbsolute53Route + '/absolute54': typeof genAbsolute54Route + '/absolute55': typeof genAbsolute55Route + '/absolute56': typeof genAbsolute56Route + '/absolute57': typeof genAbsolute57Route + '/absolute58': typeof genAbsolute58Route + '/absolute59': typeof genAbsolute59Route + '/absolute6': typeof genAbsolute6Route + '/absolute60': typeof genAbsolute60Route + '/absolute61': typeof genAbsolute61Route + '/absolute62': typeof genAbsolute62Route + '/absolute63': typeof genAbsolute63Route + '/absolute64': typeof genAbsolute64Route + '/absolute65': typeof genAbsolute65Route + '/absolute66': typeof genAbsolute66Route + '/absolute67': typeof genAbsolute67Route + '/absolute68': typeof genAbsolute68Route + '/absolute69': typeof genAbsolute69Route + '/absolute7': typeof genAbsolute7Route + '/absolute70': typeof genAbsolute70Route + '/absolute71': typeof genAbsolute71Route + '/absolute72': typeof genAbsolute72Route + '/absolute73': typeof genAbsolute73Route + '/absolute74': typeof genAbsolute74Route + '/absolute75': typeof genAbsolute75Route + '/absolute76': typeof genAbsolute76Route + '/absolute77': typeof genAbsolute77Route + '/absolute78': typeof genAbsolute78Route + '/absolute79': typeof genAbsolute79Route + '/absolute8': typeof genAbsolute8Route + '/absolute80': typeof genAbsolute80Route + '/absolute81': typeof genAbsolute81Route + '/absolute82': typeof genAbsolute82Route + '/absolute83': typeof genAbsolute83Route + '/absolute84': typeof genAbsolute84Route + '/absolute85': typeof genAbsolute85Route + '/absolute86': typeof genAbsolute86Route + '/absolute87': typeof genAbsolute87Route + '/absolute88': typeof genAbsolute88Route + '/absolute89': typeof genAbsolute89Route + '/absolute9': typeof genAbsolute9Route + '/absolute90': typeof genAbsolute90Route + '/absolute91': typeof genAbsolute91Route + '/absolute92': typeof genAbsolute92Route + '/absolute93': typeof genAbsolute93Route + '/absolute94': typeof genAbsolute94Route + '/absolute95': typeof genAbsolute95Route + '/absolute96': typeof genAbsolute96Route + '/absolute97': typeof genAbsolute97Route + '/absolute98': typeof genAbsolute98Route + '/absolute99': typeof genAbsolute99Route + '/relative0': typeof genRelative0Route + '/relative1': typeof genRelative1Route + '/relative10': typeof genRelative10Route + '/relative11': typeof genRelative11Route + '/relative12': typeof genRelative12Route + '/relative13': typeof genRelative13Route + '/relative14': typeof genRelative14Route + '/relative15': typeof genRelative15Route + '/relative16': typeof genRelative16Route + '/relative17': typeof genRelative17Route + '/relative18': typeof genRelative18Route + '/relative19': typeof genRelative19Route + '/relative2': typeof genRelative2Route + '/relative20': typeof genRelative20Route + '/relative21': typeof genRelative21Route + '/relative22': typeof genRelative22Route + '/relative23': typeof genRelative23Route + '/relative24': typeof genRelative24Route + '/relative25': typeof genRelative25Route + '/relative26': typeof genRelative26Route + '/relative27': typeof genRelative27Route + '/relative28': typeof genRelative28Route + '/relative29': typeof genRelative29Route + '/relative3': typeof genRelative3Route + '/relative30': typeof genRelative30Route + '/relative31': typeof genRelative31Route + '/relative32': typeof genRelative32Route + '/relative33': typeof genRelative33Route + '/relative34': typeof genRelative34Route + '/relative35': typeof genRelative35Route + '/relative36': typeof genRelative36Route + '/relative37': typeof genRelative37Route + '/relative38': typeof genRelative38Route + '/relative39': typeof genRelative39Route + '/relative4': typeof genRelative4Route + '/relative40': typeof genRelative40Route + '/relative41': typeof genRelative41Route + '/relative42': typeof genRelative42Route + '/relative43': typeof genRelative43Route + '/relative44': typeof genRelative44Route + '/relative45': typeof genRelative45Route + '/relative46': typeof genRelative46Route + '/relative47': typeof genRelative47Route + '/relative48': typeof genRelative48Route + '/relative49': typeof genRelative49Route + '/relative5': typeof genRelative5Route + '/relative50': typeof genRelative50Route + '/relative51': typeof genRelative51Route + '/relative52': typeof genRelative52Route + '/relative53': typeof genRelative53Route + '/relative54': typeof genRelative54Route + '/relative55': typeof genRelative55Route + '/relative56': typeof genRelative56Route + '/relative57': typeof genRelative57Route + '/relative58': typeof genRelative58Route + '/relative59': typeof genRelative59Route + '/relative6': typeof genRelative6Route + '/relative60': typeof genRelative60Route + '/relative61': typeof genRelative61Route + '/relative62': typeof genRelative62Route + '/relative63': typeof genRelative63Route + '/relative64': typeof genRelative64Route + '/relative65': typeof genRelative65Route + '/relative66': typeof genRelative66Route + '/relative67': typeof genRelative67Route + '/relative68': typeof genRelative68Route + '/relative69': typeof genRelative69Route + '/relative7': typeof genRelative7Route + '/relative70': typeof genRelative70Route + '/relative71': typeof genRelative71Route + '/relative72': typeof genRelative72Route + '/relative73': typeof genRelative73Route + '/relative74': typeof genRelative74Route + '/relative75': typeof genRelative75Route + '/relative76': typeof genRelative76Route + '/relative77': typeof genRelative77Route + '/relative78': typeof genRelative78Route + '/relative79': typeof genRelative79Route + '/relative8': typeof genRelative8Route + '/relative80': typeof genRelative80Route + '/relative81': typeof genRelative81Route + '/relative82': typeof genRelative82Route + '/relative83': typeof genRelative83Route + '/relative84': typeof genRelative84Route + '/relative85': typeof genRelative85Route + '/relative86': typeof genRelative86Route + '/relative87': typeof genRelative87Route + '/relative88': typeof genRelative88Route + '/relative89': typeof genRelative89Route + '/relative9': typeof genRelative9Route + '/relative90': typeof genRelative90Route + '/relative91': typeof genRelative91Route + '/relative92': typeof genRelative92Route + '/relative93': typeof genRelative93Route + '/relative94': typeof genRelative94Route + '/relative95': typeof genRelative95Route + '/relative96': typeof genRelative96Route + '/relative97': typeof genRelative97Route + '/relative98': typeof genRelative98Route + '/relative99': typeof genRelative99Route + '/params/$paramsPlaceholder': typeof ParamsParamsPlaceholderRoute + '/search/searchPlaceholder': typeof SearchSearchPlaceholderRoute + '/params/$param0': typeof genParamsParam0Route + '/params/$param1': typeof genParamsParam1Route + '/params/$param10': typeof genParamsParam10Route + '/params/$param11': typeof genParamsParam11Route + '/params/$param12': typeof genParamsParam12Route + '/params/$param13': typeof genParamsParam13Route + '/params/$param14': typeof genParamsParam14Route + '/params/$param15': typeof genParamsParam15Route + '/params/$param16': typeof genParamsParam16Route + '/params/$param17': typeof genParamsParam17Route + '/params/$param18': typeof genParamsParam18Route + '/params/$param19': typeof genParamsParam19Route + '/params/$param2': typeof genParamsParam2Route + '/params/$param20': typeof genParamsParam20Route + '/params/$param21': typeof genParamsParam21Route + '/params/$param22': typeof genParamsParam22Route + '/params/$param23': typeof genParamsParam23Route + '/params/$param24': typeof genParamsParam24Route + '/params/$param25': typeof genParamsParam25Route + '/params/$param26': typeof genParamsParam26Route + '/params/$param27': typeof genParamsParam27Route + '/params/$param28': typeof genParamsParam28Route + '/params/$param29': typeof genParamsParam29Route + '/params/$param3': typeof genParamsParam3Route + '/params/$param30': typeof genParamsParam30Route + '/params/$param31': typeof genParamsParam31Route + '/params/$param32': typeof genParamsParam32Route + '/params/$param33': typeof genParamsParam33Route + '/params/$param34': typeof genParamsParam34Route + '/params/$param35': typeof genParamsParam35Route + '/params/$param36': typeof genParamsParam36Route + '/params/$param37': typeof genParamsParam37Route + '/params/$param38': typeof genParamsParam38Route + '/params/$param39': typeof genParamsParam39Route + '/params/$param4': typeof genParamsParam4Route + '/params/$param40': typeof genParamsParam40Route + '/params/$param41': typeof genParamsParam41Route + '/params/$param42': typeof genParamsParam42Route + '/params/$param43': typeof genParamsParam43Route + '/params/$param44': typeof genParamsParam44Route + '/params/$param45': typeof genParamsParam45Route + '/params/$param46': typeof genParamsParam46Route + '/params/$param47': typeof genParamsParam47Route + '/params/$param48': typeof genParamsParam48Route + '/params/$param49': typeof genParamsParam49Route + '/params/$param5': typeof genParamsParam5Route + '/params/$param50': typeof genParamsParam50Route + '/params/$param51': typeof genParamsParam51Route + '/params/$param52': typeof genParamsParam52Route + '/params/$param53': typeof genParamsParam53Route + '/params/$param54': typeof genParamsParam54Route + '/params/$param55': typeof genParamsParam55Route + '/params/$param56': typeof genParamsParam56Route + '/params/$param57': typeof genParamsParam57Route + '/params/$param58': typeof genParamsParam58Route + '/params/$param59': typeof genParamsParam59Route + '/params/$param6': typeof genParamsParam6Route + '/params/$param60': typeof genParamsParam60Route + '/params/$param61': typeof genParamsParam61Route + '/params/$param62': typeof genParamsParam62Route + '/params/$param63': typeof genParamsParam63Route + '/params/$param64': typeof genParamsParam64Route + '/params/$param65': typeof genParamsParam65Route + '/params/$param66': typeof genParamsParam66Route + '/params/$param67': typeof genParamsParam67Route + '/params/$param68': typeof genParamsParam68Route + '/params/$param69': typeof genParamsParam69Route + '/params/$param7': typeof genParamsParam7Route + '/params/$param70': typeof genParamsParam70Route + '/params/$param71': typeof genParamsParam71Route + '/params/$param72': typeof genParamsParam72Route + '/params/$param73': typeof genParamsParam73Route + '/params/$param74': typeof genParamsParam74Route + '/params/$param75': typeof genParamsParam75Route + '/params/$param76': typeof genParamsParam76Route + '/params/$param77': typeof genParamsParam77Route + '/params/$param78': typeof genParamsParam78Route + '/params/$param79': typeof genParamsParam79Route + '/params/$param8': typeof genParamsParam8Route + '/params/$param80': typeof genParamsParam80Route + '/params/$param81': typeof genParamsParam81Route + '/params/$param82': typeof genParamsParam82Route + '/params/$param83': typeof genParamsParam83Route + '/params/$param84': typeof genParamsParam84Route + '/params/$param85': typeof genParamsParam85Route + '/params/$param86': typeof genParamsParam86Route + '/params/$param87': typeof genParamsParam87Route + '/params/$param88': typeof genParamsParam88Route + '/params/$param89': typeof genParamsParam89Route + '/params/$param9': typeof genParamsParam9Route + '/params/$param90': typeof genParamsParam90Route + '/params/$param91': typeof genParamsParam91Route + '/params/$param92': typeof genParamsParam92Route + '/params/$param93': typeof genParamsParam93Route + '/params/$param94': typeof genParamsParam94Route + '/params/$param95': typeof genParamsParam95Route + '/params/$param96': typeof genParamsParam96Route + '/params/$param97': typeof genParamsParam97Route + '/params/$param98': typeof genParamsParam98Route + '/params/$param99': typeof genParamsParam99Route + '/search/search0': typeof genSearchSearch0Route + '/search/search1': typeof genSearchSearch1Route + '/search/search10': typeof genSearchSearch10Route + '/search/search11': typeof genSearchSearch11Route + '/search/search12': typeof genSearchSearch12Route + '/search/search13': typeof genSearchSearch13Route + '/search/search14': typeof genSearchSearch14Route + '/search/search15': typeof genSearchSearch15Route + '/search/search16': typeof genSearchSearch16Route + '/search/search17': typeof genSearchSearch17Route + '/search/search18': typeof genSearchSearch18Route + '/search/search19': typeof genSearchSearch19Route + '/search/search2': typeof genSearchSearch2Route + '/search/search20': typeof genSearchSearch20Route + '/search/search21': typeof genSearchSearch21Route + '/search/search22': typeof genSearchSearch22Route + '/search/search23': typeof genSearchSearch23Route + '/search/search24': typeof genSearchSearch24Route + '/search/search25': typeof genSearchSearch25Route + '/search/search26': typeof genSearchSearch26Route + '/search/search27': typeof genSearchSearch27Route + '/search/search28': typeof genSearchSearch28Route + '/search/search29': typeof genSearchSearch29Route + '/search/search3': typeof genSearchSearch3Route + '/search/search30': typeof genSearchSearch30Route + '/search/search31': typeof genSearchSearch31Route + '/search/search32': typeof genSearchSearch32Route + '/search/search33': typeof genSearchSearch33Route + '/search/search34': typeof genSearchSearch34Route + '/search/search35': typeof genSearchSearch35Route + '/search/search36': typeof genSearchSearch36Route + '/search/search37': typeof genSearchSearch37Route + '/search/search38': typeof genSearchSearch38Route + '/search/search39': typeof genSearchSearch39Route + '/search/search4': typeof genSearchSearch4Route + '/search/search40': typeof genSearchSearch40Route + '/search/search41': typeof genSearchSearch41Route + '/search/search42': typeof genSearchSearch42Route + '/search/search43': typeof genSearchSearch43Route + '/search/search44': typeof genSearchSearch44Route + '/search/search45': typeof genSearchSearch45Route + '/search/search46': typeof genSearchSearch46Route + '/search/search47': typeof genSearchSearch47Route + '/search/search48': typeof genSearchSearch48Route + '/search/search49': typeof genSearchSearch49Route + '/search/search5': typeof genSearchSearch5Route + '/search/search50': typeof genSearchSearch50Route + '/search/search51': typeof genSearchSearch51Route + '/search/search52': typeof genSearchSearch52Route + '/search/search53': typeof genSearchSearch53Route + '/search/search54': typeof genSearchSearch54Route + '/search/search55': typeof genSearchSearch55Route + '/search/search56': typeof genSearchSearch56Route + '/search/search57': typeof genSearchSearch57Route + '/search/search58': typeof genSearchSearch58Route + '/search/search59': typeof genSearchSearch59Route + '/search/search6': typeof genSearchSearch6Route + '/search/search60': typeof genSearchSearch60Route + '/search/search61': typeof genSearchSearch61Route + '/search/search62': typeof genSearchSearch62Route + '/search/search63': typeof genSearchSearch63Route + '/search/search64': typeof genSearchSearch64Route + '/search/search65': typeof genSearchSearch65Route + '/search/search66': typeof genSearchSearch66Route + '/search/search67': typeof genSearchSearch67Route + '/search/search68': typeof genSearchSearch68Route + '/search/search69': typeof genSearchSearch69Route + '/search/search7': typeof genSearchSearch7Route + '/search/search70': typeof genSearchSearch70Route + '/search/search71': typeof genSearchSearch71Route + '/search/search72': typeof genSearchSearch72Route + '/search/search73': typeof genSearchSearch73Route + '/search/search74': typeof genSearchSearch74Route + '/search/search75': typeof genSearchSearch75Route + '/search/search76': typeof genSearchSearch76Route + '/search/search77': typeof genSearchSearch77Route + '/search/search78': typeof genSearchSearch78Route + '/search/search79': typeof genSearchSearch79Route + '/search/search8': typeof genSearchSearch8Route + '/search/search80': typeof genSearchSearch80Route + '/search/search81': typeof genSearchSearch81Route + '/search/search82': typeof genSearchSearch82Route + '/search/search83': typeof genSearchSearch83Route + '/search/search84': typeof genSearchSearch84Route + '/search/search85': typeof genSearchSearch85Route + '/search/search86': typeof genSearchSearch86Route + '/search/search87': typeof genSearchSearch87Route + '/search/search88': typeof genSearchSearch88Route + '/search/search89': typeof genSearchSearch89Route + '/search/search9': typeof genSearchSearch9Route + '/search/search90': typeof genSearchSearch90Route + '/search/search91': typeof genSearchSearch91Route + '/search/search92': typeof genSearchSearch92Route + '/search/search93': typeof genSearchSearch93Route + '/search/search94': typeof genSearchSearch94Route + '/search/search95': typeof genSearchSearch95Route + '/search/search96': typeof genSearchSearch96Route + '/search/search97': typeof genSearchSearch97Route + '/search/search98': typeof genSearchSearch98Route + '/search/search99': typeof genSearchSearch99Route +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/params' + | '/search' + | '/absolute' + | '/linkProps' + | '/relative' + | '/absolute0' + | '/absolute1' + | '/absolute10' + | '/absolute11' + | '/absolute12' + | '/absolute13' + | '/absolute14' + | '/absolute15' + | '/absolute16' + | '/absolute17' + | '/absolute18' + | '/absolute19' + | '/absolute2' + | '/absolute20' + | '/absolute21' + | '/absolute22' + | '/absolute23' + | '/absolute24' + | '/absolute25' + | '/absolute26' + | '/absolute27' + | '/absolute28' + | '/absolute29' + | '/absolute3' + | '/absolute30' + | '/absolute31' + | '/absolute32' + | '/absolute33' + | '/absolute34' + | '/absolute35' + | '/absolute36' + | '/absolute37' + | '/absolute38' + | '/absolute39' + | '/absolute4' + | '/absolute40' + | '/absolute41' + | '/absolute42' + | '/absolute43' + | '/absolute44' + | '/absolute45' + | '/absolute46' + | '/absolute47' + | '/absolute48' + | '/absolute49' + | '/absolute5' + | '/absolute50' + | '/absolute51' + | '/absolute52' + | '/absolute53' + | '/absolute54' + | '/absolute55' + | '/absolute56' + | '/absolute57' + | '/absolute58' + | '/absolute59' + | '/absolute6' + | '/absolute60' + | '/absolute61' + | '/absolute62' + | '/absolute63' + | '/absolute64' + | '/absolute65' + | '/absolute66' + | '/absolute67' + | '/absolute68' + | '/absolute69' + | '/absolute7' + | '/absolute70' + | '/absolute71' + | '/absolute72' + | '/absolute73' + | '/absolute74' + | '/absolute75' + | '/absolute76' + | '/absolute77' + | '/absolute78' + | '/absolute79' + | '/absolute8' + | '/absolute80' + | '/absolute81' + | '/absolute82' + | '/absolute83' + | '/absolute84' + | '/absolute85' + | '/absolute86' + | '/absolute87' + | '/absolute88' + | '/absolute89' + | '/absolute9' + | '/absolute90' + | '/absolute91' + | '/absolute92' + | '/absolute93' + | '/absolute94' + | '/absolute95' + | '/absolute96' + | '/absolute97' + | '/absolute98' + | '/absolute99' + | '/relative0' + | '/relative1' + | '/relative10' + | '/relative11' + | '/relative12' + | '/relative13' + | '/relative14' + | '/relative15' + | '/relative16' + | '/relative17' + | '/relative18' + | '/relative19' + | '/relative2' + | '/relative20' + | '/relative21' + | '/relative22' + | '/relative23' + | '/relative24' + | '/relative25' + | '/relative26' + | '/relative27' + | '/relative28' + | '/relative29' + | '/relative3' + | '/relative30' + | '/relative31' + | '/relative32' + | '/relative33' + | '/relative34' + | '/relative35' + | '/relative36' + | '/relative37' + | '/relative38' + | '/relative39' + | '/relative4' + | '/relative40' + | '/relative41' + | '/relative42' + | '/relative43' + | '/relative44' + | '/relative45' + | '/relative46' + | '/relative47' + | '/relative48' + | '/relative49' + | '/relative5' + | '/relative50' + | '/relative51' + | '/relative52' + | '/relative53' + | '/relative54' + | '/relative55' + | '/relative56' + | '/relative57' + | '/relative58' + | '/relative59' + | '/relative6' + | '/relative60' + | '/relative61' + | '/relative62' + | '/relative63' + | '/relative64' + | '/relative65' + | '/relative66' + | '/relative67' + | '/relative68' + | '/relative69' + | '/relative7' + | '/relative70' + | '/relative71' + | '/relative72' + | '/relative73' + | '/relative74' + | '/relative75' + | '/relative76' + | '/relative77' + | '/relative78' + | '/relative79' + | '/relative8' + | '/relative80' + | '/relative81' + | '/relative82' + | '/relative83' + | '/relative84' + | '/relative85' + | '/relative86' + | '/relative87' + | '/relative88' + | '/relative89' + | '/relative9' + | '/relative90' + | '/relative91' + | '/relative92' + | '/relative93' + | '/relative94' + | '/relative95' + | '/relative96' + | '/relative97' + | '/relative98' + | '/relative99' + | '/params/$paramsPlaceholder' + | '/search/searchPlaceholder' + | '/params/$param0' + | '/params/$param1' + | '/params/$param10' + | '/params/$param11' + | '/params/$param12' + | '/params/$param13' + | '/params/$param14' + | '/params/$param15' + | '/params/$param16' + | '/params/$param17' + | '/params/$param18' + | '/params/$param19' + | '/params/$param2' + | '/params/$param20' + | '/params/$param21' + | '/params/$param22' + | '/params/$param23' + | '/params/$param24' + | '/params/$param25' + | '/params/$param26' + | '/params/$param27' + | '/params/$param28' + | '/params/$param29' + | '/params/$param3' + | '/params/$param30' + | '/params/$param31' + | '/params/$param32' + | '/params/$param33' + | '/params/$param34' + | '/params/$param35' + | '/params/$param36' + | '/params/$param37' + | '/params/$param38' + | '/params/$param39' + | '/params/$param4' + | '/params/$param40' + | '/params/$param41' + | '/params/$param42' + | '/params/$param43' + | '/params/$param44' + | '/params/$param45' + | '/params/$param46' + | '/params/$param47' + | '/params/$param48' + | '/params/$param49' + | '/params/$param5' + | '/params/$param50' + | '/params/$param51' + | '/params/$param52' + | '/params/$param53' + | '/params/$param54' + | '/params/$param55' + | '/params/$param56' + | '/params/$param57' + | '/params/$param58' + | '/params/$param59' + | '/params/$param6' + | '/params/$param60' + | '/params/$param61' + | '/params/$param62' + | '/params/$param63' + | '/params/$param64' + | '/params/$param65' + | '/params/$param66' + | '/params/$param67' + | '/params/$param68' + | '/params/$param69' + | '/params/$param7' + | '/params/$param70' + | '/params/$param71' + | '/params/$param72' + | '/params/$param73' + | '/params/$param74' + | '/params/$param75' + | '/params/$param76' + | '/params/$param77' + | '/params/$param78' + | '/params/$param79' + | '/params/$param8' + | '/params/$param80' + | '/params/$param81' + | '/params/$param82' + | '/params/$param83' + | '/params/$param84' + | '/params/$param85' + | '/params/$param86' + | '/params/$param87' + | '/params/$param88' + | '/params/$param89' + | '/params/$param9' + | '/params/$param90' + | '/params/$param91' + | '/params/$param92' + | '/params/$param93' + | '/params/$param94' + | '/params/$param95' + | '/params/$param96' + | '/params/$param97' + | '/params/$param98' + | '/params/$param99' + | '/search/search0' + | '/search/search1' + | '/search/search10' + | '/search/search11' + | '/search/search12' + | '/search/search13' + | '/search/search14' + | '/search/search15' + | '/search/search16' + | '/search/search17' + | '/search/search18' + | '/search/search19' + | '/search/search2' + | '/search/search20' + | '/search/search21' + | '/search/search22' + | '/search/search23' + | '/search/search24' + | '/search/search25' + | '/search/search26' + | '/search/search27' + | '/search/search28' + | '/search/search29' + | '/search/search3' + | '/search/search30' + | '/search/search31' + | '/search/search32' + | '/search/search33' + | '/search/search34' + | '/search/search35' + | '/search/search36' + | '/search/search37' + | '/search/search38' + | '/search/search39' + | '/search/search4' + | '/search/search40' + | '/search/search41' + | '/search/search42' + | '/search/search43' + | '/search/search44' + | '/search/search45' + | '/search/search46' + | '/search/search47' + | '/search/search48' + | '/search/search49' + | '/search/search5' + | '/search/search50' + | '/search/search51' + | '/search/search52' + | '/search/search53' + | '/search/search54' + | '/search/search55' + | '/search/search56' + | '/search/search57' + | '/search/search58' + | '/search/search59' + | '/search/search6' + | '/search/search60' + | '/search/search61' + | '/search/search62' + | '/search/search63' + | '/search/search64' + | '/search/search65' + | '/search/search66' + | '/search/search67' + | '/search/search68' + | '/search/search69' + | '/search/search7' + | '/search/search70' + | '/search/search71' + | '/search/search72' + | '/search/search73' + | '/search/search74' + | '/search/search75' + | '/search/search76' + | '/search/search77' + | '/search/search78' + | '/search/search79' + | '/search/search8' + | '/search/search80' + | '/search/search81' + | '/search/search82' + | '/search/search83' + | '/search/search84' + | '/search/search85' + | '/search/search86' + | '/search/search87' + | '/search/search88' + | '/search/search89' + | '/search/search9' + | '/search/search90' + | '/search/search91' + | '/search/search92' + | '/search/search93' + | '/search/search94' + | '/search/search95' + | '/search/search96' + | '/search/search97' + | '/search/search98' + | '/search/search99' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '/params' + | '/search' + | '/absolute' + | '/linkProps' + | '/relative' + | '/absolute0' + | '/absolute1' + | '/absolute10' + | '/absolute11' + | '/absolute12' + | '/absolute13' + | '/absolute14' + | '/absolute15' + | '/absolute16' + | '/absolute17' + | '/absolute18' + | '/absolute19' + | '/absolute2' + | '/absolute20' + | '/absolute21' + | '/absolute22' + | '/absolute23' + | '/absolute24' + | '/absolute25' + | '/absolute26' + | '/absolute27' + | '/absolute28' + | '/absolute29' + | '/absolute3' + | '/absolute30' + | '/absolute31' + | '/absolute32' + | '/absolute33' + | '/absolute34' + | '/absolute35' + | '/absolute36' + | '/absolute37' + | '/absolute38' + | '/absolute39' + | '/absolute4' + | '/absolute40' + | '/absolute41' + | '/absolute42' + | '/absolute43' + | '/absolute44' + | '/absolute45' + | '/absolute46' + | '/absolute47' + | '/absolute48' + | '/absolute49' + | '/absolute5' + | '/absolute50' + | '/absolute51' + | '/absolute52' + | '/absolute53' + | '/absolute54' + | '/absolute55' + | '/absolute56' + | '/absolute57' + | '/absolute58' + | '/absolute59' + | '/absolute6' + | '/absolute60' + | '/absolute61' + | '/absolute62' + | '/absolute63' + | '/absolute64' + | '/absolute65' + | '/absolute66' + | '/absolute67' + | '/absolute68' + | '/absolute69' + | '/absolute7' + | '/absolute70' + | '/absolute71' + | '/absolute72' + | '/absolute73' + | '/absolute74' + | '/absolute75' + | '/absolute76' + | '/absolute77' + | '/absolute78' + | '/absolute79' + | '/absolute8' + | '/absolute80' + | '/absolute81' + | '/absolute82' + | '/absolute83' + | '/absolute84' + | '/absolute85' + | '/absolute86' + | '/absolute87' + | '/absolute88' + | '/absolute89' + | '/absolute9' + | '/absolute90' + | '/absolute91' + | '/absolute92' + | '/absolute93' + | '/absolute94' + | '/absolute95' + | '/absolute96' + | '/absolute97' + | '/absolute98' + | '/absolute99' + | '/relative0' + | '/relative1' + | '/relative10' + | '/relative11' + | '/relative12' + | '/relative13' + | '/relative14' + | '/relative15' + | '/relative16' + | '/relative17' + | '/relative18' + | '/relative19' + | '/relative2' + | '/relative20' + | '/relative21' + | '/relative22' + | '/relative23' + | '/relative24' + | '/relative25' + | '/relative26' + | '/relative27' + | '/relative28' + | '/relative29' + | '/relative3' + | '/relative30' + | '/relative31' + | '/relative32' + | '/relative33' + | '/relative34' + | '/relative35' + | '/relative36' + | '/relative37' + | '/relative38' + | '/relative39' + | '/relative4' + | '/relative40' + | '/relative41' + | '/relative42' + | '/relative43' + | '/relative44' + | '/relative45' + | '/relative46' + | '/relative47' + | '/relative48' + | '/relative49' + | '/relative5' + | '/relative50' + | '/relative51' + | '/relative52' + | '/relative53' + | '/relative54' + | '/relative55' + | '/relative56' + | '/relative57' + | '/relative58' + | '/relative59' + | '/relative6' + | '/relative60' + | '/relative61' + | '/relative62' + | '/relative63' + | '/relative64' + | '/relative65' + | '/relative66' + | '/relative67' + | '/relative68' + | '/relative69' + | '/relative7' + | '/relative70' + | '/relative71' + | '/relative72' + | '/relative73' + | '/relative74' + | '/relative75' + | '/relative76' + | '/relative77' + | '/relative78' + | '/relative79' + | '/relative8' + | '/relative80' + | '/relative81' + | '/relative82' + | '/relative83' + | '/relative84' + | '/relative85' + | '/relative86' + | '/relative87' + | '/relative88' + | '/relative89' + | '/relative9' + | '/relative90' + | '/relative91' + | '/relative92' + | '/relative93' + | '/relative94' + | '/relative95' + | '/relative96' + | '/relative97' + | '/relative98' + | '/relative99' + | '/params/$paramsPlaceholder' + | '/search/searchPlaceholder' + | '/params/$param0' + | '/params/$param1' + | '/params/$param10' + | '/params/$param11' + | '/params/$param12' + | '/params/$param13' + | '/params/$param14' + | '/params/$param15' + | '/params/$param16' + | '/params/$param17' + | '/params/$param18' + | '/params/$param19' + | '/params/$param2' + | '/params/$param20' + | '/params/$param21' + | '/params/$param22' + | '/params/$param23' + | '/params/$param24' + | '/params/$param25' + | '/params/$param26' + | '/params/$param27' + | '/params/$param28' + | '/params/$param29' + | '/params/$param3' + | '/params/$param30' + | '/params/$param31' + | '/params/$param32' + | '/params/$param33' + | '/params/$param34' + | '/params/$param35' + | '/params/$param36' + | '/params/$param37' + | '/params/$param38' + | '/params/$param39' + | '/params/$param4' + | '/params/$param40' + | '/params/$param41' + | '/params/$param42' + | '/params/$param43' + | '/params/$param44' + | '/params/$param45' + | '/params/$param46' + | '/params/$param47' + | '/params/$param48' + | '/params/$param49' + | '/params/$param5' + | '/params/$param50' + | '/params/$param51' + | '/params/$param52' + | '/params/$param53' + | '/params/$param54' + | '/params/$param55' + | '/params/$param56' + | '/params/$param57' + | '/params/$param58' + | '/params/$param59' + | '/params/$param6' + | '/params/$param60' + | '/params/$param61' + | '/params/$param62' + | '/params/$param63' + | '/params/$param64' + | '/params/$param65' + | '/params/$param66' + | '/params/$param67' + | '/params/$param68' + | '/params/$param69' + | '/params/$param7' + | '/params/$param70' + | '/params/$param71' + | '/params/$param72' + | '/params/$param73' + | '/params/$param74' + | '/params/$param75' + | '/params/$param76' + | '/params/$param77' + | '/params/$param78' + | '/params/$param79' + | '/params/$param8' + | '/params/$param80' + | '/params/$param81' + | '/params/$param82' + | '/params/$param83' + | '/params/$param84' + | '/params/$param85' + | '/params/$param86' + | '/params/$param87' + | '/params/$param88' + | '/params/$param89' + | '/params/$param9' + | '/params/$param90' + | '/params/$param91' + | '/params/$param92' + | '/params/$param93' + | '/params/$param94' + | '/params/$param95' + | '/params/$param96' + | '/params/$param97' + | '/params/$param98' + | '/params/$param99' + | '/search/search0' + | '/search/search1' + | '/search/search10' + | '/search/search11' + | '/search/search12' + | '/search/search13' + | '/search/search14' + | '/search/search15' + | '/search/search16' + | '/search/search17' + | '/search/search18' + | '/search/search19' + | '/search/search2' + | '/search/search20' + | '/search/search21' + | '/search/search22' + | '/search/search23' + | '/search/search24' + | '/search/search25' + | '/search/search26' + | '/search/search27' + | '/search/search28' + | '/search/search29' + | '/search/search3' + | '/search/search30' + | '/search/search31' + | '/search/search32' + | '/search/search33' + | '/search/search34' + | '/search/search35' + | '/search/search36' + | '/search/search37' + | '/search/search38' + | '/search/search39' + | '/search/search4' + | '/search/search40' + | '/search/search41' + | '/search/search42' + | '/search/search43' + | '/search/search44' + | '/search/search45' + | '/search/search46' + | '/search/search47' + | '/search/search48' + | '/search/search49' + | '/search/search5' + | '/search/search50' + | '/search/search51' + | '/search/search52' + | '/search/search53' + | '/search/search54' + | '/search/search55' + | '/search/search56' + | '/search/search57' + | '/search/search58' + | '/search/search59' + | '/search/search6' + | '/search/search60' + | '/search/search61' + | '/search/search62' + | '/search/search63' + | '/search/search64' + | '/search/search65' + | '/search/search66' + | '/search/search67' + | '/search/search68' + | '/search/search69' + | '/search/search7' + | '/search/search70' + | '/search/search71' + | '/search/search72' + | '/search/search73' + | '/search/search74' + | '/search/search75' + | '/search/search76' + | '/search/search77' + | '/search/search78' + | '/search/search79' + | '/search/search8' + | '/search/search80' + | '/search/search81' + | '/search/search82' + | '/search/search83' + | '/search/search84' + | '/search/search85' + | '/search/search86' + | '/search/search87' + | '/search/search88' + | '/search/search89' + | '/search/search9' + | '/search/search90' + | '/search/search91' + | '/search/search92' + | '/search/search93' + | '/search/search94' + | '/search/search95' + | '/search/search96' + | '/search/search97' + | '/search/search98' + | '/search/search99' + id: + | '__root__' + | '/' + | '/params' + | '/search' + | '/absolute' + | '/linkProps' + | '/relative' + | '/absolute0' + | '/absolute1' + | '/absolute10' + | '/absolute11' + | '/absolute12' + | '/absolute13' + | '/absolute14' + | '/absolute15' + | '/absolute16' + | '/absolute17' + | '/absolute18' + | '/absolute19' + | '/absolute2' + | '/absolute20' + | '/absolute21' + | '/absolute22' + | '/absolute23' + | '/absolute24' + | '/absolute25' + | '/absolute26' + | '/absolute27' + | '/absolute28' + | '/absolute29' + | '/absolute3' + | '/absolute30' + | '/absolute31' + | '/absolute32' + | '/absolute33' + | '/absolute34' + | '/absolute35' + | '/absolute36' + | '/absolute37' + | '/absolute38' + | '/absolute39' + | '/absolute4' + | '/absolute40' + | '/absolute41' + | '/absolute42' + | '/absolute43' + | '/absolute44' + | '/absolute45' + | '/absolute46' + | '/absolute47' + | '/absolute48' + | '/absolute49' + | '/absolute5' + | '/absolute50' + | '/absolute51' + | '/absolute52' + | '/absolute53' + | '/absolute54' + | '/absolute55' + | '/absolute56' + | '/absolute57' + | '/absolute58' + | '/absolute59' + | '/absolute6' + | '/absolute60' + | '/absolute61' + | '/absolute62' + | '/absolute63' + | '/absolute64' + | '/absolute65' + | '/absolute66' + | '/absolute67' + | '/absolute68' + | '/absolute69' + | '/absolute7' + | '/absolute70' + | '/absolute71' + | '/absolute72' + | '/absolute73' + | '/absolute74' + | '/absolute75' + | '/absolute76' + | '/absolute77' + | '/absolute78' + | '/absolute79' + | '/absolute8' + | '/absolute80' + | '/absolute81' + | '/absolute82' + | '/absolute83' + | '/absolute84' + | '/absolute85' + | '/absolute86' + | '/absolute87' + | '/absolute88' + | '/absolute89' + | '/absolute9' + | '/absolute90' + | '/absolute91' + | '/absolute92' + | '/absolute93' + | '/absolute94' + | '/absolute95' + | '/absolute96' + | '/absolute97' + | '/absolute98' + | '/absolute99' + | '/relative0' + | '/relative1' + | '/relative10' + | '/relative11' + | '/relative12' + | '/relative13' + | '/relative14' + | '/relative15' + | '/relative16' + | '/relative17' + | '/relative18' + | '/relative19' + | '/relative2' + | '/relative20' + | '/relative21' + | '/relative22' + | '/relative23' + | '/relative24' + | '/relative25' + | '/relative26' + | '/relative27' + | '/relative28' + | '/relative29' + | '/relative3' + | '/relative30' + | '/relative31' + | '/relative32' + | '/relative33' + | '/relative34' + | '/relative35' + | '/relative36' + | '/relative37' + | '/relative38' + | '/relative39' + | '/relative4' + | '/relative40' + | '/relative41' + | '/relative42' + | '/relative43' + | '/relative44' + | '/relative45' + | '/relative46' + | '/relative47' + | '/relative48' + | '/relative49' + | '/relative5' + | '/relative50' + | '/relative51' + | '/relative52' + | '/relative53' + | '/relative54' + | '/relative55' + | '/relative56' + | '/relative57' + | '/relative58' + | '/relative59' + | '/relative6' + | '/relative60' + | '/relative61' + | '/relative62' + | '/relative63' + | '/relative64' + | '/relative65' + | '/relative66' + | '/relative67' + | '/relative68' + | '/relative69' + | '/relative7' + | '/relative70' + | '/relative71' + | '/relative72' + | '/relative73' + | '/relative74' + | '/relative75' + | '/relative76' + | '/relative77' + | '/relative78' + | '/relative79' + | '/relative8' + | '/relative80' + | '/relative81' + | '/relative82' + | '/relative83' + | '/relative84' + | '/relative85' + | '/relative86' + | '/relative87' + | '/relative88' + | '/relative89' + | '/relative9' + | '/relative90' + | '/relative91' + | '/relative92' + | '/relative93' + | '/relative94' + | '/relative95' + | '/relative96' + | '/relative97' + | '/relative98' + | '/relative99' + | '/params/$paramsPlaceholder' + | '/search/searchPlaceholder' + | '/params/$param0' + | '/params/$param1' + | '/params/$param10' + | '/params/$param11' + | '/params/$param12' + | '/params/$param13' + | '/params/$param14' + | '/params/$param15' + | '/params/$param16' + | '/params/$param17' + | '/params/$param18' + | '/params/$param19' + | '/params/$param2' + | '/params/$param20' + | '/params/$param21' + | '/params/$param22' + | '/params/$param23' + | '/params/$param24' + | '/params/$param25' + | '/params/$param26' + | '/params/$param27' + | '/params/$param28' + | '/params/$param29' + | '/params/$param3' + | '/params/$param30' + | '/params/$param31' + | '/params/$param32' + | '/params/$param33' + | '/params/$param34' + | '/params/$param35' + | '/params/$param36' + | '/params/$param37' + | '/params/$param38' + | '/params/$param39' + | '/params/$param4' + | '/params/$param40' + | '/params/$param41' + | '/params/$param42' + | '/params/$param43' + | '/params/$param44' + | '/params/$param45' + | '/params/$param46' + | '/params/$param47' + | '/params/$param48' + | '/params/$param49' + | '/params/$param5' + | '/params/$param50' + | '/params/$param51' + | '/params/$param52' + | '/params/$param53' + | '/params/$param54' + | '/params/$param55' + | '/params/$param56' + | '/params/$param57' + | '/params/$param58' + | '/params/$param59' + | '/params/$param6' + | '/params/$param60' + | '/params/$param61' + | '/params/$param62' + | '/params/$param63' + | '/params/$param64' + | '/params/$param65' + | '/params/$param66' + | '/params/$param67' + | '/params/$param68' + | '/params/$param69' + | '/params/$param7' + | '/params/$param70' + | '/params/$param71' + | '/params/$param72' + | '/params/$param73' + | '/params/$param74' + | '/params/$param75' + | '/params/$param76' + | '/params/$param77' + | '/params/$param78' + | '/params/$param79' + | '/params/$param8' + | '/params/$param80' + | '/params/$param81' + | '/params/$param82' + | '/params/$param83' + | '/params/$param84' + | '/params/$param85' + | '/params/$param86' + | '/params/$param87' + | '/params/$param88' + | '/params/$param89' + | '/params/$param9' + | '/params/$param90' + | '/params/$param91' + | '/params/$param92' + | '/params/$param93' + | '/params/$param94' + | '/params/$param95' + | '/params/$param96' + | '/params/$param97' + | '/params/$param98' + | '/params/$param99' + | '/search/search0' + | '/search/search1' + | '/search/search10' + | '/search/search11' + | '/search/search12' + | '/search/search13' + | '/search/search14' + | '/search/search15' + | '/search/search16' + | '/search/search17' + | '/search/search18' + | '/search/search19' + | '/search/search2' + | '/search/search20' + | '/search/search21' + | '/search/search22' + | '/search/search23' + | '/search/search24' + | '/search/search25' + | '/search/search26' + | '/search/search27' + | '/search/search28' + | '/search/search29' + | '/search/search3' + | '/search/search30' + | '/search/search31' + | '/search/search32' + | '/search/search33' + | '/search/search34' + | '/search/search35' + | '/search/search36' + | '/search/search37' + | '/search/search38' + | '/search/search39' + | '/search/search4' + | '/search/search40' + | '/search/search41' + | '/search/search42' + | '/search/search43' + | '/search/search44' + | '/search/search45' + | '/search/search46' + | '/search/search47' + | '/search/search48' + | '/search/search49' + | '/search/search5' + | '/search/search50' + | '/search/search51' + | '/search/search52' + | '/search/search53' + | '/search/search54' + | '/search/search55' + | '/search/search56' + | '/search/search57' + | '/search/search58' + | '/search/search59' + | '/search/search6' + | '/search/search60' + | '/search/search61' + | '/search/search62' + | '/search/search63' + | '/search/search64' + | '/search/search65' + | '/search/search66' + | '/search/search67' + | '/search/search68' + | '/search/search69' + | '/search/search7' + | '/search/search70' + | '/search/search71' + | '/search/search72' + | '/search/search73' + | '/search/search74' + | '/search/search75' + | '/search/search76' + | '/search/search77' + | '/search/search78' + | '/search/search79' + | '/search/search8' + | '/search/search80' + | '/search/search81' + | '/search/search82' + | '/search/search83' + | '/search/search84' + | '/search/search85' + | '/search/search86' + | '/search/search87' + | '/search/search88' + | '/search/search89' + | '/search/search9' + | '/search/search90' + | '/search/search91' + | '/search/search92' + | '/search/search93' + | '/search/search94' + | '/search/search95' + | '/search/search96' + | '/search/search97' + | '/search/search98' + | '/search/search99' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + ParamsRouteRoute: typeof ParamsRouteRouteWithChildren + SearchRouteRoute: typeof SearchRouteRouteWithChildren + AbsoluteRoute: typeof AbsoluteRoute + LinkPropsRoute: typeof LinkPropsRoute + RelativeRoute: typeof RelativeRoute + genParamsRouteRoute: typeof genParamsRouteRouteWithChildren + genSearchRouteRoute: typeof genSearchRouteRouteWithChildren + genAbsolute0Route: typeof genAbsolute0Route + genAbsolute1Route: typeof genAbsolute1Route + genAbsolute10Route: typeof genAbsolute10Route + genAbsolute11Route: typeof genAbsolute11Route + genAbsolute12Route: typeof genAbsolute12Route + genAbsolute13Route: typeof genAbsolute13Route + genAbsolute14Route: typeof genAbsolute14Route + genAbsolute15Route: typeof genAbsolute15Route + genAbsolute16Route: typeof genAbsolute16Route + genAbsolute17Route: typeof genAbsolute17Route + genAbsolute18Route: typeof genAbsolute18Route + genAbsolute19Route: typeof genAbsolute19Route + genAbsolute2Route: typeof genAbsolute2Route + genAbsolute20Route: typeof genAbsolute20Route + genAbsolute21Route: typeof genAbsolute21Route + genAbsolute22Route: typeof genAbsolute22Route + genAbsolute23Route: typeof genAbsolute23Route + genAbsolute24Route: typeof genAbsolute24Route + genAbsolute25Route: typeof genAbsolute25Route + genAbsolute26Route: typeof genAbsolute26Route + genAbsolute27Route: typeof genAbsolute27Route + genAbsolute28Route: typeof genAbsolute28Route + genAbsolute29Route: typeof genAbsolute29Route + genAbsolute3Route: typeof genAbsolute3Route + genAbsolute30Route: typeof genAbsolute30Route + genAbsolute31Route: typeof genAbsolute31Route + genAbsolute32Route: typeof genAbsolute32Route + genAbsolute33Route: typeof genAbsolute33Route + genAbsolute34Route: typeof genAbsolute34Route + genAbsolute35Route: typeof genAbsolute35Route + genAbsolute36Route: typeof genAbsolute36Route + genAbsolute37Route: typeof genAbsolute37Route + genAbsolute38Route: typeof genAbsolute38Route + genAbsolute39Route: typeof genAbsolute39Route + genAbsolute4Route: typeof genAbsolute4Route + genAbsolute40Route: typeof genAbsolute40Route + genAbsolute41Route: typeof genAbsolute41Route + genAbsolute42Route: typeof genAbsolute42Route + genAbsolute43Route: typeof genAbsolute43Route + genAbsolute44Route: typeof genAbsolute44Route + genAbsolute45Route: typeof genAbsolute45Route + genAbsolute46Route: typeof genAbsolute46Route + genAbsolute47Route: typeof genAbsolute47Route + genAbsolute48Route: typeof genAbsolute48Route + genAbsolute49Route: typeof genAbsolute49Route + genAbsolute5Route: typeof genAbsolute5Route + genAbsolute50Route: typeof genAbsolute50Route + genAbsolute51Route: typeof genAbsolute51Route + genAbsolute52Route: typeof genAbsolute52Route + genAbsolute53Route: typeof genAbsolute53Route + genAbsolute54Route: typeof genAbsolute54Route + genAbsolute55Route: typeof genAbsolute55Route + genAbsolute56Route: typeof genAbsolute56Route + genAbsolute57Route: typeof genAbsolute57Route + genAbsolute58Route: typeof genAbsolute58Route + genAbsolute59Route: typeof genAbsolute59Route + genAbsolute6Route: typeof genAbsolute6Route + genAbsolute60Route: typeof genAbsolute60Route + genAbsolute61Route: typeof genAbsolute61Route + genAbsolute62Route: typeof genAbsolute62Route + genAbsolute63Route: typeof genAbsolute63Route + genAbsolute64Route: typeof genAbsolute64Route + genAbsolute65Route: typeof genAbsolute65Route + genAbsolute66Route: typeof genAbsolute66Route + genAbsolute67Route: typeof genAbsolute67Route + genAbsolute68Route: typeof genAbsolute68Route + genAbsolute69Route: typeof genAbsolute69Route + genAbsolute7Route: typeof genAbsolute7Route + genAbsolute70Route: typeof genAbsolute70Route + genAbsolute71Route: typeof genAbsolute71Route + genAbsolute72Route: typeof genAbsolute72Route + genAbsolute73Route: typeof genAbsolute73Route + genAbsolute74Route: typeof genAbsolute74Route + genAbsolute75Route: typeof genAbsolute75Route + genAbsolute76Route: typeof genAbsolute76Route + genAbsolute77Route: typeof genAbsolute77Route + genAbsolute78Route: typeof genAbsolute78Route + genAbsolute79Route: typeof genAbsolute79Route + genAbsolute8Route: typeof genAbsolute8Route + genAbsolute80Route: typeof genAbsolute80Route + genAbsolute81Route: typeof genAbsolute81Route + genAbsolute82Route: typeof genAbsolute82Route + genAbsolute83Route: typeof genAbsolute83Route + genAbsolute84Route: typeof genAbsolute84Route + genAbsolute85Route: typeof genAbsolute85Route + genAbsolute86Route: typeof genAbsolute86Route + genAbsolute87Route: typeof genAbsolute87Route + genAbsolute88Route: typeof genAbsolute88Route + genAbsolute89Route: typeof genAbsolute89Route + genAbsolute9Route: typeof genAbsolute9Route + genAbsolute90Route: typeof genAbsolute90Route + genAbsolute91Route: typeof genAbsolute91Route + genAbsolute92Route: typeof genAbsolute92Route + genAbsolute93Route: typeof genAbsolute93Route + genAbsolute94Route: typeof genAbsolute94Route + genAbsolute95Route: typeof genAbsolute95Route + genAbsolute96Route: typeof genAbsolute96Route + genAbsolute97Route: typeof genAbsolute97Route + genAbsolute98Route: typeof genAbsolute98Route + genAbsolute99Route: typeof genAbsolute99Route + genRelative0Route: typeof genRelative0Route + genRelative1Route: typeof genRelative1Route + genRelative10Route: typeof genRelative10Route + genRelative11Route: typeof genRelative11Route + genRelative12Route: typeof genRelative12Route + genRelative13Route: typeof genRelative13Route + genRelative14Route: typeof genRelative14Route + genRelative15Route: typeof genRelative15Route + genRelative16Route: typeof genRelative16Route + genRelative17Route: typeof genRelative17Route + genRelative18Route: typeof genRelative18Route + genRelative19Route: typeof genRelative19Route + genRelative2Route: typeof genRelative2Route + genRelative20Route: typeof genRelative20Route + genRelative21Route: typeof genRelative21Route + genRelative22Route: typeof genRelative22Route + genRelative23Route: typeof genRelative23Route + genRelative24Route: typeof genRelative24Route + genRelative25Route: typeof genRelative25Route + genRelative26Route: typeof genRelative26Route + genRelative27Route: typeof genRelative27Route + genRelative28Route: typeof genRelative28Route + genRelative29Route: typeof genRelative29Route + genRelative3Route: typeof genRelative3Route + genRelative30Route: typeof genRelative30Route + genRelative31Route: typeof genRelative31Route + genRelative32Route: typeof genRelative32Route + genRelative33Route: typeof genRelative33Route + genRelative34Route: typeof genRelative34Route + genRelative35Route: typeof genRelative35Route + genRelative36Route: typeof genRelative36Route + genRelative37Route: typeof genRelative37Route + genRelative38Route: typeof genRelative38Route + genRelative39Route: typeof genRelative39Route + genRelative4Route: typeof genRelative4Route + genRelative40Route: typeof genRelative40Route + genRelative41Route: typeof genRelative41Route + genRelative42Route: typeof genRelative42Route + genRelative43Route: typeof genRelative43Route + genRelative44Route: typeof genRelative44Route + genRelative45Route: typeof genRelative45Route + genRelative46Route: typeof genRelative46Route + genRelative47Route: typeof genRelative47Route + genRelative48Route: typeof genRelative48Route + genRelative49Route: typeof genRelative49Route + genRelative5Route: typeof genRelative5Route + genRelative50Route: typeof genRelative50Route + genRelative51Route: typeof genRelative51Route + genRelative52Route: typeof genRelative52Route + genRelative53Route: typeof genRelative53Route + genRelative54Route: typeof genRelative54Route + genRelative55Route: typeof genRelative55Route + genRelative56Route: typeof genRelative56Route + genRelative57Route: typeof genRelative57Route + genRelative58Route: typeof genRelative58Route + genRelative59Route: typeof genRelative59Route + genRelative6Route: typeof genRelative6Route + genRelative60Route: typeof genRelative60Route + genRelative61Route: typeof genRelative61Route + genRelative62Route: typeof genRelative62Route + genRelative63Route: typeof genRelative63Route + genRelative64Route: typeof genRelative64Route + genRelative65Route: typeof genRelative65Route + genRelative66Route: typeof genRelative66Route + genRelative67Route: typeof genRelative67Route + genRelative68Route: typeof genRelative68Route + genRelative69Route: typeof genRelative69Route + genRelative7Route: typeof genRelative7Route + genRelative70Route: typeof genRelative70Route + genRelative71Route: typeof genRelative71Route + genRelative72Route: typeof genRelative72Route + genRelative73Route: typeof genRelative73Route + genRelative74Route: typeof genRelative74Route + genRelative75Route: typeof genRelative75Route + genRelative76Route: typeof genRelative76Route + genRelative77Route: typeof genRelative77Route + genRelative78Route: typeof genRelative78Route + genRelative79Route: typeof genRelative79Route + genRelative8Route: typeof genRelative8Route + genRelative80Route: typeof genRelative80Route + genRelative81Route: typeof genRelative81Route + genRelative82Route: typeof genRelative82Route + genRelative83Route: typeof genRelative83Route + genRelative84Route: typeof genRelative84Route + genRelative85Route: typeof genRelative85Route + genRelative86Route: typeof genRelative86Route + genRelative87Route: typeof genRelative87Route + genRelative88Route: typeof genRelative88Route + genRelative89Route: typeof genRelative89Route + genRelative9Route: typeof genRelative9Route + genRelative90Route: typeof genRelative90Route + genRelative91Route: typeof genRelative91Route + genRelative92Route: typeof genRelative92Route + genRelative93Route: typeof genRelative93Route + genRelative94Route: typeof genRelative94Route + genRelative95Route: typeof genRelative95Route + genRelative96Route: typeof genRelative96Route + genRelative97Route: typeof genRelative97Route + genRelative98Route: typeof genRelative98Route + genRelative99Route: typeof genRelative99Route +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + ParamsRouteRoute: ParamsRouteRouteWithChildren, + SearchRouteRoute: SearchRouteRouteWithChildren, + AbsoluteRoute: AbsoluteRoute, + LinkPropsRoute: LinkPropsRoute, + RelativeRoute: RelativeRoute, + genParamsRouteRoute: genParamsRouteRouteWithChildren, + genSearchRouteRoute: genSearchRouteRouteWithChildren, + genAbsolute0Route: genAbsolute0Route, + genAbsolute1Route: genAbsolute1Route, + genAbsolute10Route: genAbsolute10Route, + genAbsolute11Route: genAbsolute11Route, + genAbsolute12Route: genAbsolute12Route, + genAbsolute13Route: genAbsolute13Route, + genAbsolute14Route: genAbsolute14Route, + genAbsolute15Route: genAbsolute15Route, + genAbsolute16Route: genAbsolute16Route, + genAbsolute17Route: genAbsolute17Route, + genAbsolute18Route: genAbsolute18Route, + genAbsolute19Route: genAbsolute19Route, + genAbsolute2Route: genAbsolute2Route, + genAbsolute20Route: genAbsolute20Route, + genAbsolute21Route: genAbsolute21Route, + genAbsolute22Route: genAbsolute22Route, + genAbsolute23Route: genAbsolute23Route, + genAbsolute24Route: genAbsolute24Route, + genAbsolute25Route: genAbsolute25Route, + genAbsolute26Route: genAbsolute26Route, + genAbsolute27Route: genAbsolute27Route, + genAbsolute28Route: genAbsolute28Route, + genAbsolute29Route: genAbsolute29Route, + genAbsolute3Route: genAbsolute3Route, + genAbsolute30Route: genAbsolute30Route, + genAbsolute31Route: genAbsolute31Route, + genAbsolute32Route: genAbsolute32Route, + genAbsolute33Route: genAbsolute33Route, + genAbsolute34Route: genAbsolute34Route, + genAbsolute35Route: genAbsolute35Route, + genAbsolute36Route: genAbsolute36Route, + genAbsolute37Route: genAbsolute37Route, + genAbsolute38Route: genAbsolute38Route, + genAbsolute39Route: genAbsolute39Route, + genAbsolute4Route: genAbsolute4Route, + genAbsolute40Route: genAbsolute40Route, + genAbsolute41Route: genAbsolute41Route, + genAbsolute42Route: genAbsolute42Route, + genAbsolute43Route: genAbsolute43Route, + genAbsolute44Route: genAbsolute44Route, + genAbsolute45Route: genAbsolute45Route, + genAbsolute46Route: genAbsolute46Route, + genAbsolute47Route: genAbsolute47Route, + genAbsolute48Route: genAbsolute48Route, + genAbsolute49Route: genAbsolute49Route, + genAbsolute5Route: genAbsolute5Route, + genAbsolute50Route: genAbsolute50Route, + genAbsolute51Route: genAbsolute51Route, + genAbsolute52Route: genAbsolute52Route, + genAbsolute53Route: genAbsolute53Route, + genAbsolute54Route: genAbsolute54Route, + genAbsolute55Route: genAbsolute55Route, + genAbsolute56Route: genAbsolute56Route, + genAbsolute57Route: genAbsolute57Route, + genAbsolute58Route: genAbsolute58Route, + genAbsolute59Route: genAbsolute59Route, + genAbsolute6Route: genAbsolute6Route, + genAbsolute60Route: genAbsolute60Route, + genAbsolute61Route: genAbsolute61Route, + genAbsolute62Route: genAbsolute62Route, + genAbsolute63Route: genAbsolute63Route, + genAbsolute64Route: genAbsolute64Route, + genAbsolute65Route: genAbsolute65Route, + genAbsolute66Route: genAbsolute66Route, + genAbsolute67Route: genAbsolute67Route, + genAbsolute68Route: genAbsolute68Route, + genAbsolute69Route: genAbsolute69Route, + genAbsolute7Route: genAbsolute7Route, + genAbsolute70Route: genAbsolute70Route, + genAbsolute71Route: genAbsolute71Route, + genAbsolute72Route: genAbsolute72Route, + genAbsolute73Route: genAbsolute73Route, + genAbsolute74Route: genAbsolute74Route, + genAbsolute75Route: genAbsolute75Route, + genAbsolute76Route: genAbsolute76Route, + genAbsolute77Route: genAbsolute77Route, + genAbsolute78Route: genAbsolute78Route, + genAbsolute79Route: genAbsolute79Route, + genAbsolute8Route: genAbsolute8Route, + genAbsolute80Route: genAbsolute80Route, + genAbsolute81Route: genAbsolute81Route, + genAbsolute82Route: genAbsolute82Route, + genAbsolute83Route: genAbsolute83Route, + genAbsolute84Route: genAbsolute84Route, + genAbsolute85Route: genAbsolute85Route, + genAbsolute86Route: genAbsolute86Route, + genAbsolute87Route: genAbsolute87Route, + genAbsolute88Route: genAbsolute88Route, + genAbsolute89Route: genAbsolute89Route, + genAbsolute9Route: genAbsolute9Route, + genAbsolute90Route: genAbsolute90Route, + genAbsolute91Route: genAbsolute91Route, + genAbsolute92Route: genAbsolute92Route, + genAbsolute93Route: genAbsolute93Route, + genAbsolute94Route: genAbsolute94Route, + genAbsolute95Route: genAbsolute95Route, + genAbsolute96Route: genAbsolute96Route, + genAbsolute97Route: genAbsolute97Route, + genAbsolute98Route: genAbsolute98Route, + genAbsolute99Route: genAbsolute99Route, + genRelative0Route: genRelative0Route, + genRelative1Route: genRelative1Route, + genRelative10Route: genRelative10Route, + genRelative11Route: genRelative11Route, + genRelative12Route: genRelative12Route, + genRelative13Route: genRelative13Route, + genRelative14Route: genRelative14Route, + genRelative15Route: genRelative15Route, + genRelative16Route: genRelative16Route, + genRelative17Route: genRelative17Route, + genRelative18Route: genRelative18Route, + genRelative19Route: genRelative19Route, + genRelative2Route: genRelative2Route, + genRelative20Route: genRelative20Route, + genRelative21Route: genRelative21Route, + genRelative22Route: genRelative22Route, + genRelative23Route: genRelative23Route, + genRelative24Route: genRelative24Route, + genRelative25Route: genRelative25Route, + genRelative26Route: genRelative26Route, + genRelative27Route: genRelative27Route, + genRelative28Route: genRelative28Route, + genRelative29Route: genRelative29Route, + genRelative3Route: genRelative3Route, + genRelative30Route: genRelative30Route, + genRelative31Route: genRelative31Route, + genRelative32Route: genRelative32Route, + genRelative33Route: genRelative33Route, + genRelative34Route: genRelative34Route, + genRelative35Route: genRelative35Route, + genRelative36Route: genRelative36Route, + genRelative37Route: genRelative37Route, + genRelative38Route: genRelative38Route, + genRelative39Route: genRelative39Route, + genRelative4Route: genRelative4Route, + genRelative40Route: genRelative40Route, + genRelative41Route: genRelative41Route, + genRelative42Route: genRelative42Route, + genRelative43Route: genRelative43Route, + genRelative44Route: genRelative44Route, + genRelative45Route: genRelative45Route, + genRelative46Route: genRelative46Route, + genRelative47Route: genRelative47Route, + genRelative48Route: genRelative48Route, + genRelative49Route: genRelative49Route, + genRelative5Route: genRelative5Route, + genRelative50Route: genRelative50Route, + genRelative51Route: genRelative51Route, + genRelative52Route: genRelative52Route, + genRelative53Route: genRelative53Route, + genRelative54Route: genRelative54Route, + genRelative55Route: genRelative55Route, + genRelative56Route: genRelative56Route, + genRelative57Route: genRelative57Route, + genRelative58Route: genRelative58Route, + genRelative59Route: genRelative59Route, + genRelative6Route: genRelative6Route, + genRelative60Route: genRelative60Route, + genRelative61Route: genRelative61Route, + genRelative62Route: genRelative62Route, + genRelative63Route: genRelative63Route, + genRelative64Route: genRelative64Route, + genRelative65Route: genRelative65Route, + genRelative66Route: genRelative66Route, + genRelative67Route: genRelative67Route, + genRelative68Route: genRelative68Route, + genRelative69Route: genRelative69Route, + genRelative7Route: genRelative7Route, + genRelative70Route: genRelative70Route, + genRelative71Route: genRelative71Route, + genRelative72Route: genRelative72Route, + genRelative73Route: genRelative73Route, + genRelative74Route: genRelative74Route, + genRelative75Route: genRelative75Route, + genRelative76Route: genRelative76Route, + genRelative77Route: genRelative77Route, + genRelative78Route: genRelative78Route, + genRelative79Route: genRelative79Route, + genRelative8Route: genRelative8Route, + genRelative80Route: genRelative80Route, + genRelative81Route: genRelative81Route, + genRelative82Route: genRelative82Route, + genRelative83Route: genRelative83Route, + genRelative84Route: genRelative84Route, + genRelative85Route: genRelative85Route, + genRelative86Route: genRelative86Route, + genRelative87Route: genRelative87Route, + genRelative88Route: genRelative88Route, + genRelative89Route: genRelative89Route, + genRelative9Route: genRelative9Route, + genRelative90Route: genRelative90Route, + genRelative91Route: genRelative91Route, + genRelative92Route: genRelative92Route, + genRelative93Route: genRelative93Route, + genRelative94Route: genRelative94Route, + genRelative95Route: genRelative95Route, + genRelative96Route: genRelative96Route, + genRelative97Route: genRelative97Route, + genRelative98Route: genRelative98Route, + genRelative99Route: genRelative99Route, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/params", + "/search", + "/absolute", + "/linkProps", + "/relative", + "/params", + "/search", + "/absolute0", + "/absolute1", + "/absolute10", + "/absolute11", + "/absolute12", + "/absolute13", + "/absolute14", + "/absolute15", + "/absolute16", + "/absolute17", + "/absolute18", + "/absolute19", + "/absolute2", + "/absolute20", + "/absolute21", + "/absolute22", + "/absolute23", + "/absolute24", + "/absolute25", + "/absolute26", + "/absolute27", + "/absolute28", + "/absolute29", + "/absolute3", + "/absolute30", + "/absolute31", + "/absolute32", + "/absolute33", + "/absolute34", + "/absolute35", + "/absolute36", + "/absolute37", + "/absolute38", + "/absolute39", + "/absolute4", + "/absolute40", + "/absolute41", + "/absolute42", + "/absolute43", + "/absolute44", + "/absolute45", + "/absolute46", + "/absolute47", + "/absolute48", + "/absolute49", + "/absolute5", + "/absolute50", + "/absolute51", + "/absolute52", + "/absolute53", + "/absolute54", + "/absolute55", + "/absolute56", + "/absolute57", + "/absolute58", + "/absolute59", + "/absolute6", + "/absolute60", + "/absolute61", + "/absolute62", + "/absolute63", + "/absolute64", + "/absolute65", + "/absolute66", + "/absolute67", + "/absolute68", + "/absolute69", + "/absolute7", + "/absolute70", + "/absolute71", + "/absolute72", + "/absolute73", + "/absolute74", + "/absolute75", + "/absolute76", + "/absolute77", + "/absolute78", + "/absolute79", + "/absolute8", + "/absolute80", + "/absolute81", + "/absolute82", + "/absolute83", + "/absolute84", + "/absolute85", + "/absolute86", + "/absolute87", + "/absolute88", + "/absolute89", + "/absolute9", + "/absolute90", + "/absolute91", + "/absolute92", + "/absolute93", + "/absolute94", + "/absolute95", + "/absolute96", + "/absolute97", + "/absolute98", + "/absolute99", + "/relative0", + "/relative1", + "/relative10", + "/relative11", + "/relative12", + "/relative13", + "/relative14", + "/relative15", + "/relative16", + "/relative17", + "/relative18", + "/relative19", + "/relative2", + "/relative20", + "/relative21", + "/relative22", + "/relative23", + "/relative24", + "/relative25", + "/relative26", + "/relative27", + "/relative28", + "/relative29", + "/relative3", + "/relative30", + "/relative31", + "/relative32", + "/relative33", + "/relative34", + "/relative35", + "/relative36", + "/relative37", + "/relative38", + "/relative39", + "/relative4", + "/relative40", + "/relative41", + "/relative42", + "/relative43", + "/relative44", + "/relative45", + "/relative46", + "/relative47", + "/relative48", + "/relative49", + "/relative5", + "/relative50", + "/relative51", + "/relative52", + "/relative53", + "/relative54", + "/relative55", + "/relative56", + "/relative57", + "/relative58", + "/relative59", + "/relative6", + "/relative60", + "/relative61", + "/relative62", + "/relative63", + "/relative64", + "/relative65", + "/relative66", + "/relative67", + "/relative68", + "/relative69", + "/relative7", + "/relative70", + "/relative71", + "/relative72", + "/relative73", + "/relative74", + "/relative75", + "/relative76", + "/relative77", + "/relative78", + "/relative79", + "/relative8", + "/relative80", + "/relative81", + "/relative82", + "/relative83", + "/relative84", + "/relative85", + "/relative86", + "/relative87", + "/relative88", + "/relative89", + "/relative9", + "/relative90", + "/relative91", + "/relative92", + "/relative93", + "/relative94", + "/relative95", + "/relative96", + "/relative97", + "/relative98", + "/relative99" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/params": { + "filePath": "(gen)/params/route.tsx", + "children": [ + "/params/$param0", + "/params/$param1", + "/params/$param10", + "/params/$param11", + "/params/$param12", + "/params/$param13", + "/params/$param14", + "/params/$param15", + "/params/$param16", + "/params/$param17", + "/params/$param18", + "/params/$param19", + "/params/$param2", + "/params/$param20", + "/params/$param21", + "/params/$param22", + "/params/$param23", + "/params/$param24", + "/params/$param25", + "/params/$param26", + "/params/$param27", + "/params/$param28", + "/params/$param29", + "/params/$param3", + "/params/$param30", + "/params/$param31", + "/params/$param32", + "/params/$param33", + "/params/$param34", + "/params/$param35", + "/params/$param36", + "/params/$param37", + "/params/$param38", + "/params/$param39", + "/params/$param4", + "/params/$param40", + "/params/$param41", + "/params/$param42", + "/params/$param43", + "/params/$param44", + "/params/$param45", + "/params/$param46", + "/params/$param47", + "/params/$param48", + "/params/$param49", + "/params/$param5", + "/params/$param50", + "/params/$param51", + "/params/$param52", + "/params/$param53", + "/params/$param54", + "/params/$param55", + "/params/$param56", + "/params/$param57", + "/params/$param58", + "/params/$param59", + "/params/$param6", + "/params/$param60", + "/params/$param61", + "/params/$param62", + "/params/$param63", + "/params/$param64", + "/params/$param65", + "/params/$param66", + "/params/$param67", + "/params/$param68", + "/params/$param69", + "/params/$param7", + "/params/$param70", + "/params/$param71", + "/params/$param72", + "/params/$param73", + "/params/$param74", + "/params/$param75", + "/params/$param76", + "/params/$param77", + "/params/$param78", + "/params/$param79", + "/params/$param8", + "/params/$param80", + "/params/$param81", + "/params/$param82", + "/params/$param83", + "/params/$param84", + "/params/$param85", + "/params/$param86", + "/params/$param87", + "/params/$param88", + "/params/$param89", + "/params/$param9", + "/params/$param90", + "/params/$param91", + "/params/$param92", + "/params/$param93", + "/params/$param94", + "/params/$param95", + "/params/$param96", + "/params/$param97", + "/params/$param98", + "/params/$param99" + ] + }, + "/search": { + "filePath": "(gen)/search/route.tsx", + "children": [ + "/search/search0", + "/search/search1", + "/search/search10", + "/search/search11", + "/search/search12", + "/search/search13", + "/search/search14", + "/search/search15", + "/search/search16", + "/search/search17", + "/search/search18", + "/search/search19", + "/search/search2", + "/search/search20", + "/search/search21", + "/search/search22", + "/search/search23", + "/search/search24", + "/search/search25", + "/search/search26", + "/search/search27", + "/search/search28", + "/search/search29", + "/search/search3", + "/search/search30", + "/search/search31", + "/search/search32", + "/search/search33", + "/search/search34", + "/search/search35", + "/search/search36", + "/search/search37", + "/search/search38", + "/search/search39", + "/search/search4", + "/search/search40", + "/search/search41", + "/search/search42", + "/search/search43", + "/search/search44", + "/search/search45", + "/search/search46", + "/search/search47", + "/search/search48", + "/search/search49", + "/search/search5", + "/search/search50", + "/search/search51", + "/search/search52", + "/search/search53", + "/search/search54", + "/search/search55", + "/search/search56", + "/search/search57", + "/search/search58", + "/search/search59", + "/search/search6", + "/search/search60", + "/search/search61", + "/search/search62", + "/search/search63", + "/search/search64", + "/search/search65", + "/search/search66", + "/search/search67", + "/search/search68", + "/search/search69", + "/search/search7", + "/search/search70", + "/search/search71", + "/search/search72", + "/search/search73", + "/search/search74", + "/search/search75", + "/search/search76", + "/search/search77", + "/search/search78", + "/search/search79", + "/search/search8", + "/search/search80", + "/search/search81", + "/search/search82", + "/search/search83", + "/search/search84", + "/search/search85", + "/search/search86", + "/search/search87", + "/search/search88", + "/search/search89", + "/search/search9", + "/search/search90", + "/search/search91", + "/search/search92", + "/search/search93", + "/search/search94", + "/search/search95", + "/search/search96", + "/search/search97", + "/search/search98", + "/search/search99" + ] + }, + "/absolute": { + "filePath": "absolute.tsx" + }, + "/linkProps": { + "filePath": "linkProps.tsx" + }, + "/relative": { + "filePath": "relative.tsx" + }, + "/absolute0": { + "filePath": "(gen)/absolute0.tsx" + }, + "/absolute1": { + "filePath": "(gen)/absolute1.tsx" + }, + "/absolute10": { + "filePath": "(gen)/absolute10.tsx" + }, + "/absolute11": { + "filePath": "(gen)/absolute11.tsx" + }, + "/absolute12": { + "filePath": "(gen)/absolute12.tsx" + }, + "/absolute13": { + "filePath": "(gen)/absolute13.tsx" + }, + "/absolute14": { + "filePath": "(gen)/absolute14.tsx" + }, + "/absolute15": { + "filePath": "(gen)/absolute15.tsx" + }, + "/absolute16": { + "filePath": "(gen)/absolute16.tsx" + }, + "/absolute17": { + "filePath": "(gen)/absolute17.tsx" + }, + "/absolute18": { + "filePath": "(gen)/absolute18.tsx" + }, + "/absolute19": { + "filePath": "(gen)/absolute19.tsx" + }, + "/absolute2": { + "filePath": "(gen)/absolute2.tsx" + }, + "/absolute20": { + "filePath": "(gen)/absolute20.tsx" + }, + "/absolute21": { + "filePath": "(gen)/absolute21.tsx" + }, + "/absolute22": { + "filePath": "(gen)/absolute22.tsx" + }, + "/absolute23": { + "filePath": "(gen)/absolute23.tsx" + }, + "/absolute24": { + "filePath": "(gen)/absolute24.tsx" + }, + "/absolute25": { + "filePath": "(gen)/absolute25.tsx" + }, + "/absolute26": { + "filePath": "(gen)/absolute26.tsx" + }, + "/absolute27": { + "filePath": "(gen)/absolute27.tsx" + }, + "/absolute28": { + "filePath": "(gen)/absolute28.tsx" + }, + "/absolute29": { + "filePath": "(gen)/absolute29.tsx" + }, + "/absolute3": { + "filePath": "(gen)/absolute3.tsx" + }, + "/absolute30": { + "filePath": "(gen)/absolute30.tsx" + }, + "/absolute31": { + "filePath": "(gen)/absolute31.tsx" + }, + "/absolute32": { + "filePath": "(gen)/absolute32.tsx" + }, + "/absolute33": { + "filePath": "(gen)/absolute33.tsx" + }, + "/absolute34": { + "filePath": "(gen)/absolute34.tsx" + }, + "/absolute35": { + "filePath": "(gen)/absolute35.tsx" + }, + "/absolute36": { + "filePath": "(gen)/absolute36.tsx" + }, + "/absolute37": { + "filePath": "(gen)/absolute37.tsx" + }, + "/absolute38": { + "filePath": "(gen)/absolute38.tsx" + }, + "/absolute39": { + "filePath": "(gen)/absolute39.tsx" + }, + "/absolute4": { + "filePath": "(gen)/absolute4.tsx" + }, + "/absolute40": { + "filePath": "(gen)/absolute40.tsx" + }, + "/absolute41": { + "filePath": "(gen)/absolute41.tsx" + }, + "/absolute42": { + "filePath": "(gen)/absolute42.tsx" + }, + "/absolute43": { + "filePath": "(gen)/absolute43.tsx" + }, + "/absolute44": { + "filePath": "(gen)/absolute44.tsx" + }, + "/absolute45": { + "filePath": "(gen)/absolute45.tsx" + }, + "/absolute46": { + "filePath": "(gen)/absolute46.tsx" + }, + "/absolute47": { + "filePath": "(gen)/absolute47.tsx" + }, + "/absolute48": { + "filePath": "(gen)/absolute48.tsx" + }, + "/absolute49": { + "filePath": "(gen)/absolute49.tsx" + }, + "/absolute5": { + "filePath": "(gen)/absolute5.tsx" + }, + "/absolute50": { + "filePath": "(gen)/absolute50.tsx" + }, + "/absolute51": { + "filePath": "(gen)/absolute51.tsx" + }, + "/absolute52": { + "filePath": "(gen)/absolute52.tsx" + }, + "/absolute53": { + "filePath": "(gen)/absolute53.tsx" + }, + "/absolute54": { + "filePath": "(gen)/absolute54.tsx" + }, + "/absolute55": { + "filePath": "(gen)/absolute55.tsx" + }, + "/absolute56": { + "filePath": "(gen)/absolute56.tsx" + }, + "/absolute57": { + "filePath": "(gen)/absolute57.tsx" + }, + "/absolute58": { + "filePath": "(gen)/absolute58.tsx" + }, + "/absolute59": { + "filePath": "(gen)/absolute59.tsx" + }, + "/absolute6": { + "filePath": "(gen)/absolute6.tsx" + }, + "/absolute60": { + "filePath": "(gen)/absolute60.tsx" + }, + "/absolute61": { + "filePath": "(gen)/absolute61.tsx" + }, + "/absolute62": { + "filePath": "(gen)/absolute62.tsx" + }, + "/absolute63": { + "filePath": "(gen)/absolute63.tsx" + }, + "/absolute64": { + "filePath": "(gen)/absolute64.tsx" + }, + "/absolute65": { + "filePath": "(gen)/absolute65.tsx" + }, + "/absolute66": { + "filePath": "(gen)/absolute66.tsx" + }, + "/absolute67": { + "filePath": "(gen)/absolute67.tsx" + }, + "/absolute68": { + "filePath": "(gen)/absolute68.tsx" + }, + "/absolute69": { + "filePath": "(gen)/absolute69.tsx" + }, + "/absolute7": { + "filePath": "(gen)/absolute7.tsx" + }, + "/absolute70": { + "filePath": "(gen)/absolute70.tsx" + }, + "/absolute71": { + "filePath": "(gen)/absolute71.tsx" + }, + "/absolute72": { + "filePath": "(gen)/absolute72.tsx" + }, + "/absolute73": { + "filePath": "(gen)/absolute73.tsx" + }, + "/absolute74": { + "filePath": "(gen)/absolute74.tsx" + }, + "/absolute75": { + "filePath": "(gen)/absolute75.tsx" + }, + "/absolute76": { + "filePath": "(gen)/absolute76.tsx" + }, + "/absolute77": { + "filePath": "(gen)/absolute77.tsx" + }, + "/absolute78": { + "filePath": "(gen)/absolute78.tsx" + }, + "/absolute79": { + "filePath": "(gen)/absolute79.tsx" + }, + "/absolute8": { + "filePath": "(gen)/absolute8.tsx" + }, + "/absolute80": { + "filePath": "(gen)/absolute80.tsx" + }, + "/absolute81": { + "filePath": "(gen)/absolute81.tsx" + }, + "/absolute82": { + "filePath": "(gen)/absolute82.tsx" + }, + "/absolute83": { + "filePath": "(gen)/absolute83.tsx" + }, + "/absolute84": { + "filePath": "(gen)/absolute84.tsx" + }, + "/absolute85": { + "filePath": "(gen)/absolute85.tsx" + }, + "/absolute86": { + "filePath": "(gen)/absolute86.tsx" + }, + "/absolute87": { + "filePath": "(gen)/absolute87.tsx" + }, + "/absolute88": { + "filePath": "(gen)/absolute88.tsx" + }, + "/absolute89": { + "filePath": "(gen)/absolute89.tsx" + }, + "/absolute9": { + "filePath": "(gen)/absolute9.tsx" + }, + "/absolute90": { + "filePath": "(gen)/absolute90.tsx" + }, + "/absolute91": { + "filePath": "(gen)/absolute91.tsx" + }, + "/absolute92": { + "filePath": "(gen)/absolute92.tsx" + }, + "/absolute93": { + "filePath": "(gen)/absolute93.tsx" + }, + "/absolute94": { + "filePath": "(gen)/absolute94.tsx" + }, + "/absolute95": { + "filePath": "(gen)/absolute95.tsx" + }, + "/absolute96": { + "filePath": "(gen)/absolute96.tsx" + }, + "/absolute97": { + "filePath": "(gen)/absolute97.tsx" + }, + "/absolute98": { + "filePath": "(gen)/absolute98.tsx" + }, + "/absolute99": { + "filePath": "(gen)/absolute99.tsx" + }, + "/relative0": { + "filePath": "(gen)/relative0.tsx" + }, + "/relative1": { + "filePath": "(gen)/relative1.tsx" + }, + "/relative10": { + "filePath": "(gen)/relative10.tsx" + }, + "/relative11": { + "filePath": "(gen)/relative11.tsx" + }, + "/relative12": { + "filePath": "(gen)/relative12.tsx" + }, + "/relative13": { + "filePath": "(gen)/relative13.tsx" + }, + "/relative14": { + "filePath": "(gen)/relative14.tsx" + }, + "/relative15": { + "filePath": "(gen)/relative15.tsx" + }, + "/relative16": { + "filePath": "(gen)/relative16.tsx" + }, + "/relative17": { + "filePath": "(gen)/relative17.tsx" + }, + "/relative18": { + "filePath": "(gen)/relative18.tsx" + }, + "/relative19": { + "filePath": "(gen)/relative19.tsx" + }, + "/relative2": { + "filePath": "(gen)/relative2.tsx" + }, + "/relative20": { + "filePath": "(gen)/relative20.tsx" + }, + "/relative21": { + "filePath": "(gen)/relative21.tsx" + }, + "/relative22": { + "filePath": "(gen)/relative22.tsx" + }, + "/relative23": { + "filePath": "(gen)/relative23.tsx" + }, + "/relative24": { + "filePath": "(gen)/relative24.tsx" + }, + "/relative25": { + "filePath": "(gen)/relative25.tsx" + }, + "/relative26": { + "filePath": "(gen)/relative26.tsx" + }, + "/relative27": { + "filePath": "(gen)/relative27.tsx" + }, + "/relative28": { + "filePath": "(gen)/relative28.tsx" + }, + "/relative29": { + "filePath": "(gen)/relative29.tsx" + }, + "/relative3": { + "filePath": "(gen)/relative3.tsx" + }, + "/relative30": { + "filePath": "(gen)/relative30.tsx" + }, + "/relative31": { + "filePath": "(gen)/relative31.tsx" + }, + "/relative32": { + "filePath": "(gen)/relative32.tsx" + }, + "/relative33": { + "filePath": "(gen)/relative33.tsx" + }, + "/relative34": { + "filePath": "(gen)/relative34.tsx" + }, + "/relative35": { + "filePath": "(gen)/relative35.tsx" + }, + "/relative36": { + "filePath": "(gen)/relative36.tsx" + }, + "/relative37": { + "filePath": "(gen)/relative37.tsx" + }, + "/relative38": { + "filePath": "(gen)/relative38.tsx" + }, + "/relative39": { + "filePath": "(gen)/relative39.tsx" + }, + "/relative4": { + "filePath": "(gen)/relative4.tsx" + }, + "/relative40": { + "filePath": "(gen)/relative40.tsx" + }, + "/relative41": { + "filePath": "(gen)/relative41.tsx" + }, + "/relative42": { + "filePath": "(gen)/relative42.tsx" + }, + "/relative43": { + "filePath": "(gen)/relative43.tsx" + }, + "/relative44": { + "filePath": "(gen)/relative44.tsx" + }, + "/relative45": { + "filePath": "(gen)/relative45.tsx" + }, + "/relative46": { + "filePath": "(gen)/relative46.tsx" + }, + "/relative47": { + "filePath": "(gen)/relative47.tsx" + }, + "/relative48": { + "filePath": "(gen)/relative48.tsx" + }, + "/relative49": { + "filePath": "(gen)/relative49.tsx" + }, + "/relative5": { + "filePath": "(gen)/relative5.tsx" + }, + "/relative50": { + "filePath": "(gen)/relative50.tsx" + }, + "/relative51": { + "filePath": "(gen)/relative51.tsx" + }, + "/relative52": { + "filePath": "(gen)/relative52.tsx" + }, + "/relative53": { + "filePath": "(gen)/relative53.tsx" + }, + "/relative54": { + "filePath": "(gen)/relative54.tsx" + }, + "/relative55": { + "filePath": "(gen)/relative55.tsx" + }, + "/relative56": { + "filePath": "(gen)/relative56.tsx" + }, + "/relative57": { + "filePath": "(gen)/relative57.tsx" + }, + "/relative58": { + "filePath": "(gen)/relative58.tsx" + }, + "/relative59": { + "filePath": "(gen)/relative59.tsx" + }, + "/relative6": { + "filePath": "(gen)/relative6.tsx" + }, + "/relative60": { + "filePath": "(gen)/relative60.tsx" + }, + "/relative61": { + "filePath": "(gen)/relative61.tsx" + }, + "/relative62": { + "filePath": "(gen)/relative62.tsx" + }, + "/relative63": { + "filePath": "(gen)/relative63.tsx" + }, + "/relative64": { + "filePath": "(gen)/relative64.tsx" + }, + "/relative65": { + "filePath": "(gen)/relative65.tsx" + }, + "/relative66": { + "filePath": "(gen)/relative66.tsx" + }, + "/relative67": { + "filePath": "(gen)/relative67.tsx" + }, + "/relative68": { + "filePath": "(gen)/relative68.tsx" + }, + "/relative69": { + "filePath": "(gen)/relative69.tsx" + }, + "/relative7": { + "filePath": "(gen)/relative7.tsx" + }, + "/relative70": { + "filePath": "(gen)/relative70.tsx" + }, + "/relative71": { + "filePath": "(gen)/relative71.tsx" + }, + "/relative72": { + "filePath": "(gen)/relative72.tsx" + }, + "/relative73": { + "filePath": "(gen)/relative73.tsx" + }, + "/relative74": { + "filePath": "(gen)/relative74.tsx" + }, + "/relative75": { + "filePath": "(gen)/relative75.tsx" + }, + "/relative76": { + "filePath": "(gen)/relative76.tsx" + }, + "/relative77": { + "filePath": "(gen)/relative77.tsx" + }, + "/relative78": { + "filePath": "(gen)/relative78.tsx" + }, + "/relative79": { + "filePath": "(gen)/relative79.tsx" + }, + "/relative8": { + "filePath": "(gen)/relative8.tsx" + }, + "/relative80": { + "filePath": "(gen)/relative80.tsx" + }, + "/relative81": { + "filePath": "(gen)/relative81.tsx" + }, + "/relative82": { + "filePath": "(gen)/relative82.tsx" + }, + "/relative83": { + "filePath": "(gen)/relative83.tsx" + }, + "/relative84": { + "filePath": "(gen)/relative84.tsx" + }, + "/relative85": { + "filePath": "(gen)/relative85.tsx" + }, + "/relative86": { + "filePath": "(gen)/relative86.tsx" + }, + "/relative87": { + "filePath": "(gen)/relative87.tsx" + }, + "/relative88": { + "filePath": "(gen)/relative88.tsx" + }, + "/relative89": { + "filePath": "(gen)/relative89.tsx" + }, + "/relative9": { + "filePath": "(gen)/relative9.tsx" + }, + "/relative90": { + "filePath": "(gen)/relative90.tsx" + }, + "/relative91": { + "filePath": "(gen)/relative91.tsx" + }, + "/relative92": { + "filePath": "(gen)/relative92.tsx" + }, + "/relative93": { + "filePath": "(gen)/relative93.tsx" + }, + "/relative94": { + "filePath": "(gen)/relative94.tsx" + }, + "/relative95": { + "filePath": "(gen)/relative95.tsx" + }, + "/relative96": { + "filePath": "(gen)/relative96.tsx" + }, + "/relative97": { + "filePath": "(gen)/relative97.tsx" + }, + "/relative98": { + "filePath": "(gen)/relative98.tsx" + }, + "/relative99": { + "filePath": "(gen)/relative99.tsx" + }, + "/params/$paramsPlaceholder": { + "filePath": "params/$paramsPlaceholder.tsx", + "parent": "/params" + }, + "/search/searchPlaceholder": { + "filePath": "search/searchPlaceholder.tsx", + "parent": "/search" + }, + "/params/$param0": { + "filePath": "(gen)/params/$param0.tsx", + "parent": "/params" + }, + "/params/$param1": { + "filePath": "(gen)/params/$param1.tsx", + "parent": "/params" + }, + "/params/$param10": { + "filePath": "(gen)/params/$param10.tsx", + "parent": "/params" + }, + "/params/$param11": { + "filePath": "(gen)/params/$param11.tsx", + "parent": "/params" + }, + "/params/$param12": { + "filePath": "(gen)/params/$param12.tsx", + "parent": "/params" + }, + "/params/$param13": { + "filePath": "(gen)/params/$param13.tsx", + "parent": "/params" + }, + "/params/$param14": { + "filePath": "(gen)/params/$param14.tsx", + "parent": "/params" + }, + "/params/$param15": { + "filePath": "(gen)/params/$param15.tsx", + "parent": "/params" + }, + "/params/$param16": { + "filePath": "(gen)/params/$param16.tsx", + "parent": "/params" + }, + "/params/$param17": { + "filePath": "(gen)/params/$param17.tsx", + "parent": "/params" + }, + "/params/$param18": { + "filePath": "(gen)/params/$param18.tsx", + "parent": "/params" + }, + "/params/$param19": { + "filePath": "(gen)/params/$param19.tsx", + "parent": "/params" + }, + "/params/$param2": { + "filePath": "(gen)/params/$param2.tsx", + "parent": "/params" + }, + "/params/$param20": { + "filePath": "(gen)/params/$param20.tsx", + "parent": "/params" + }, + "/params/$param21": { + "filePath": "(gen)/params/$param21.tsx", + "parent": "/params" + }, + "/params/$param22": { + "filePath": "(gen)/params/$param22.tsx", + "parent": "/params" + }, + "/params/$param23": { + "filePath": "(gen)/params/$param23.tsx", + "parent": "/params" + }, + "/params/$param24": { + "filePath": "(gen)/params/$param24.tsx", + "parent": "/params" + }, + "/params/$param25": { + "filePath": "(gen)/params/$param25.tsx", + "parent": "/params" + }, + "/params/$param26": { + "filePath": "(gen)/params/$param26.tsx", + "parent": "/params" + }, + "/params/$param27": { + "filePath": "(gen)/params/$param27.tsx", + "parent": "/params" + }, + "/params/$param28": { + "filePath": "(gen)/params/$param28.tsx", + "parent": "/params" + }, + "/params/$param29": { + "filePath": "(gen)/params/$param29.tsx", + "parent": "/params" + }, + "/params/$param3": { + "filePath": "(gen)/params/$param3.tsx", + "parent": "/params" + }, + "/params/$param30": { + "filePath": "(gen)/params/$param30.tsx", + "parent": "/params" + }, + "/params/$param31": { + "filePath": "(gen)/params/$param31.tsx", + "parent": "/params" + }, + "/params/$param32": { + "filePath": "(gen)/params/$param32.tsx", + "parent": "/params" + }, + "/params/$param33": { + "filePath": "(gen)/params/$param33.tsx", + "parent": "/params" + }, + "/params/$param34": { + "filePath": "(gen)/params/$param34.tsx", + "parent": "/params" + }, + "/params/$param35": { + "filePath": "(gen)/params/$param35.tsx", + "parent": "/params" + }, + "/params/$param36": { + "filePath": "(gen)/params/$param36.tsx", + "parent": "/params" + }, + "/params/$param37": { + "filePath": "(gen)/params/$param37.tsx", + "parent": "/params" + }, + "/params/$param38": { + "filePath": "(gen)/params/$param38.tsx", + "parent": "/params" + }, + "/params/$param39": { + "filePath": "(gen)/params/$param39.tsx", + "parent": "/params" + }, + "/params/$param4": { + "filePath": "(gen)/params/$param4.tsx", + "parent": "/params" + }, + "/params/$param40": { + "filePath": "(gen)/params/$param40.tsx", + "parent": "/params" + }, + "/params/$param41": { + "filePath": "(gen)/params/$param41.tsx", + "parent": "/params" + }, + "/params/$param42": { + "filePath": "(gen)/params/$param42.tsx", + "parent": "/params" + }, + "/params/$param43": { + "filePath": "(gen)/params/$param43.tsx", + "parent": "/params" + }, + "/params/$param44": { + "filePath": "(gen)/params/$param44.tsx", + "parent": "/params" + }, + "/params/$param45": { + "filePath": "(gen)/params/$param45.tsx", + "parent": "/params" + }, + "/params/$param46": { + "filePath": "(gen)/params/$param46.tsx", + "parent": "/params" + }, + "/params/$param47": { + "filePath": "(gen)/params/$param47.tsx", + "parent": "/params" + }, + "/params/$param48": { + "filePath": "(gen)/params/$param48.tsx", + "parent": "/params" + }, + "/params/$param49": { + "filePath": "(gen)/params/$param49.tsx", + "parent": "/params" + }, + "/params/$param5": { + "filePath": "(gen)/params/$param5.tsx", + "parent": "/params" + }, + "/params/$param50": { + "filePath": "(gen)/params/$param50.tsx", + "parent": "/params" + }, + "/params/$param51": { + "filePath": "(gen)/params/$param51.tsx", + "parent": "/params" + }, + "/params/$param52": { + "filePath": "(gen)/params/$param52.tsx", + "parent": "/params" + }, + "/params/$param53": { + "filePath": "(gen)/params/$param53.tsx", + "parent": "/params" + }, + "/params/$param54": { + "filePath": "(gen)/params/$param54.tsx", + "parent": "/params" + }, + "/params/$param55": { + "filePath": "(gen)/params/$param55.tsx", + "parent": "/params" + }, + "/params/$param56": { + "filePath": "(gen)/params/$param56.tsx", + "parent": "/params" + }, + "/params/$param57": { + "filePath": "(gen)/params/$param57.tsx", + "parent": "/params" + }, + "/params/$param58": { + "filePath": "(gen)/params/$param58.tsx", + "parent": "/params" + }, + "/params/$param59": { + "filePath": "(gen)/params/$param59.tsx", + "parent": "/params" + }, + "/params/$param6": { + "filePath": "(gen)/params/$param6.tsx", + "parent": "/params" + }, + "/params/$param60": { + "filePath": "(gen)/params/$param60.tsx", + "parent": "/params" + }, + "/params/$param61": { + "filePath": "(gen)/params/$param61.tsx", + "parent": "/params" + }, + "/params/$param62": { + "filePath": "(gen)/params/$param62.tsx", + "parent": "/params" + }, + "/params/$param63": { + "filePath": "(gen)/params/$param63.tsx", + "parent": "/params" + }, + "/params/$param64": { + "filePath": "(gen)/params/$param64.tsx", + "parent": "/params" + }, + "/params/$param65": { + "filePath": "(gen)/params/$param65.tsx", + "parent": "/params" + }, + "/params/$param66": { + "filePath": "(gen)/params/$param66.tsx", + "parent": "/params" + }, + "/params/$param67": { + "filePath": "(gen)/params/$param67.tsx", + "parent": "/params" + }, + "/params/$param68": { + "filePath": "(gen)/params/$param68.tsx", + "parent": "/params" + }, + "/params/$param69": { + "filePath": "(gen)/params/$param69.tsx", + "parent": "/params" + }, + "/params/$param7": { + "filePath": "(gen)/params/$param7.tsx", + "parent": "/params" + }, + "/params/$param70": { + "filePath": "(gen)/params/$param70.tsx", + "parent": "/params" + }, + "/params/$param71": { + "filePath": "(gen)/params/$param71.tsx", + "parent": "/params" + }, + "/params/$param72": { + "filePath": "(gen)/params/$param72.tsx", + "parent": "/params" + }, + "/params/$param73": { + "filePath": "(gen)/params/$param73.tsx", + "parent": "/params" + }, + "/params/$param74": { + "filePath": "(gen)/params/$param74.tsx", + "parent": "/params" + }, + "/params/$param75": { + "filePath": "(gen)/params/$param75.tsx", + "parent": "/params" + }, + "/params/$param76": { + "filePath": "(gen)/params/$param76.tsx", + "parent": "/params" + }, + "/params/$param77": { + "filePath": "(gen)/params/$param77.tsx", + "parent": "/params" + }, + "/params/$param78": { + "filePath": "(gen)/params/$param78.tsx", + "parent": "/params" + }, + "/params/$param79": { + "filePath": "(gen)/params/$param79.tsx", + "parent": "/params" + }, + "/params/$param8": { + "filePath": "(gen)/params/$param8.tsx", + "parent": "/params" + }, + "/params/$param80": { + "filePath": "(gen)/params/$param80.tsx", + "parent": "/params" + }, + "/params/$param81": { + "filePath": "(gen)/params/$param81.tsx", + "parent": "/params" + }, + "/params/$param82": { + "filePath": "(gen)/params/$param82.tsx", + "parent": "/params" + }, + "/params/$param83": { + "filePath": "(gen)/params/$param83.tsx", + "parent": "/params" + }, + "/params/$param84": { + "filePath": "(gen)/params/$param84.tsx", + "parent": "/params" + }, + "/params/$param85": { + "filePath": "(gen)/params/$param85.tsx", + "parent": "/params" + }, + "/params/$param86": { + "filePath": "(gen)/params/$param86.tsx", + "parent": "/params" + }, + "/params/$param87": { + "filePath": "(gen)/params/$param87.tsx", + "parent": "/params" + }, + "/params/$param88": { + "filePath": "(gen)/params/$param88.tsx", + "parent": "/params" + }, + "/params/$param89": { + "filePath": "(gen)/params/$param89.tsx", + "parent": "/params" + }, + "/params/$param9": { + "filePath": "(gen)/params/$param9.tsx", + "parent": "/params" + }, + "/params/$param90": { + "filePath": "(gen)/params/$param90.tsx", + "parent": "/params" + }, + "/params/$param91": { + "filePath": "(gen)/params/$param91.tsx", + "parent": "/params" + }, + "/params/$param92": { + "filePath": "(gen)/params/$param92.tsx", + "parent": "/params" + }, + "/params/$param93": { + "filePath": "(gen)/params/$param93.tsx", + "parent": "/params" + }, + "/params/$param94": { + "filePath": "(gen)/params/$param94.tsx", + "parent": "/params" + }, + "/params/$param95": { + "filePath": "(gen)/params/$param95.tsx", + "parent": "/params" + }, + "/params/$param96": { + "filePath": "(gen)/params/$param96.tsx", + "parent": "/params" + }, + "/params/$param97": { + "filePath": "(gen)/params/$param97.tsx", + "parent": "/params" + }, + "/params/$param98": { + "filePath": "(gen)/params/$param98.tsx", + "parent": "/params" + }, + "/params/$param99": { + "filePath": "(gen)/params/$param99.tsx", + "parent": "/params" + }, + "/search/search0": { + "filePath": "(gen)/search/search0.tsx", + "parent": "/search" + }, + "/search/search1": { + "filePath": "(gen)/search/search1.tsx", + "parent": "/search" + }, + "/search/search10": { + "filePath": "(gen)/search/search10.tsx", + "parent": "/search" + }, + "/search/search11": { + "filePath": "(gen)/search/search11.tsx", + "parent": "/search" + }, + "/search/search12": { + "filePath": "(gen)/search/search12.tsx", + "parent": "/search" + }, + "/search/search13": { + "filePath": "(gen)/search/search13.tsx", + "parent": "/search" + }, + "/search/search14": { + "filePath": "(gen)/search/search14.tsx", + "parent": "/search" + }, + "/search/search15": { + "filePath": "(gen)/search/search15.tsx", + "parent": "/search" + }, + "/search/search16": { + "filePath": "(gen)/search/search16.tsx", + "parent": "/search" + }, + "/search/search17": { + "filePath": "(gen)/search/search17.tsx", + "parent": "/search" + }, + "/search/search18": { + "filePath": "(gen)/search/search18.tsx", + "parent": "/search" + }, + "/search/search19": { + "filePath": "(gen)/search/search19.tsx", + "parent": "/search" + }, + "/search/search2": { + "filePath": "(gen)/search/search2.tsx", + "parent": "/search" + }, + "/search/search20": { + "filePath": "(gen)/search/search20.tsx", + "parent": "/search" + }, + "/search/search21": { + "filePath": "(gen)/search/search21.tsx", + "parent": "/search" + }, + "/search/search22": { + "filePath": "(gen)/search/search22.tsx", + "parent": "/search" + }, + "/search/search23": { + "filePath": "(gen)/search/search23.tsx", + "parent": "/search" + }, + "/search/search24": { + "filePath": "(gen)/search/search24.tsx", + "parent": "/search" + }, + "/search/search25": { + "filePath": "(gen)/search/search25.tsx", + "parent": "/search" + }, + "/search/search26": { + "filePath": "(gen)/search/search26.tsx", + "parent": "/search" + }, + "/search/search27": { + "filePath": "(gen)/search/search27.tsx", + "parent": "/search" + }, + "/search/search28": { + "filePath": "(gen)/search/search28.tsx", + "parent": "/search" + }, + "/search/search29": { + "filePath": "(gen)/search/search29.tsx", + "parent": "/search" + }, + "/search/search3": { + "filePath": "(gen)/search/search3.tsx", + "parent": "/search" + }, + "/search/search30": { + "filePath": "(gen)/search/search30.tsx", + "parent": "/search" + }, + "/search/search31": { + "filePath": "(gen)/search/search31.tsx", + "parent": "/search" + }, + "/search/search32": { + "filePath": "(gen)/search/search32.tsx", + "parent": "/search" + }, + "/search/search33": { + "filePath": "(gen)/search/search33.tsx", + "parent": "/search" + }, + "/search/search34": { + "filePath": "(gen)/search/search34.tsx", + "parent": "/search" + }, + "/search/search35": { + "filePath": "(gen)/search/search35.tsx", + "parent": "/search" + }, + "/search/search36": { + "filePath": "(gen)/search/search36.tsx", + "parent": "/search" + }, + "/search/search37": { + "filePath": "(gen)/search/search37.tsx", + "parent": "/search" + }, + "/search/search38": { + "filePath": "(gen)/search/search38.tsx", + "parent": "/search" + }, + "/search/search39": { + "filePath": "(gen)/search/search39.tsx", + "parent": "/search" + }, + "/search/search4": { + "filePath": "(gen)/search/search4.tsx", + "parent": "/search" + }, + "/search/search40": { + "filePath": "(gen)/search/search40.tsx", + "parent": "/search" + }, + "/search/search41": { + "filePath": "(gen)/search/search41.tsx", + "parent": "/search" + }, + "/search/search42": { + "filePath": "(gen)/search/search42.tsx", + "parent": "/search" + }, + "/search/search43": { + "filePath": "(gen)/search/search43.tsx", + "parent": "/search" + }, + "/search/search44": { + "filePath": "(gen)/search/search44.tsx", + "parent": "/search" + }, + "/search/search45": { + "filePath": "(gen)/search/search45.tsx", + "parent": "/search" + }, + "/search/search46": { + "filePath": "(gen)/search/search46.tsx", + "parent": "/search" + }, + "/search/search47": { + "filePath": "(gen)/search/search47.tsx", + "parent": "/search" + }, + "/search/search48": { + "filePath": "(gen)/search/search48.tsx", + "parent": "/search" + }, + "/search/search49": { + "filePath": "(gen)/search/search49.tsx", + "parent": "/search" + }, + "/search/search5": { + "filePath": "(gen)/search/search5.tsx", + "parent": "/search" + }, + "/search/search50": { + "filePath": "(gen)/search/search50.tsx", + "parent": "/search" + }, + "/search/search51": { + "filePath": "(gen)/search/search51.tsx", + "parent": "/search" + }, + "/search/search52": { + "filePath": "(gen)/search/search52.tsx", + "parent": "/search" + }, + "/search/search53": { + "filePath": "(gen)/search/search53.tsx", + "parent": "/search" + }, + "/search/search54": { + "filePath": "(gen)/search/search54.tsx", + "parent": "/search" + }, + "/search/search55": { + "filePath": "(gen)/search/search55.tsx", + "parent": "/search" + }, + "/search/search56": { + "filePath": "(gen)/search/search56.tsx", + "parent": "/search" + }, + "/search/search57": { + "filePath": "(gen)/search/search57.tsx", + "parent": "/search" + }, + "/search/search58": { + "filePath": "(gen)/search/search58.tsx", + "parent": "/search" + }, + "/search/search59": { + "filePath": "(gen)/search/search59.tsx", + "parent": "/search" + }, + "/search/search6": { + "filePath": "(gen)/search/search6.tsx", + "parent": "/search" + }, + "/search/search60": { + "filePath": "(gen)/search/search60.tsx", + "parent": "/search" + }, + "/search/search61": { + "filePath": "(gen)/search/search61.tsx", + "parent": "/search" + }, + "/search/search62": { + "filePath": "(gen)/search/search62.tsx", + "parent": "/search" + }, + "/search/search63": { + "filePath": "(gen)/search/search63.tsx", + "parent": "/search" + }, + "/search/search64": { + "filePath": "(gen)/search/search64.tsx", + "parent": "/search" + }, + "/search/search65": { + "filePath": "(gen)/search/search65.tsx", + "parent": "/search" + }, + "/search/search66": { + "filePath": "(gen)/search/search66.tsx", + "parent": "/search" + }, + "/search/search67": { + "filePath": "(gen)/search/search67.tsx", + "parent": "/search" + }, + "/search/search68": { + "filePath": "(gen)/search/search68.tsx", + "parent": "/search" + }, + "/search/search69": { + "filePath": "(gen)/search/search69.tsx", + "parent": "/search" + }, + "/search/search7": { + "filePath": "(gen)/search/search7.tsx", + "parent": "/search" + }, + "/search/search70": { + "filePath": "(gen)/search/search70.tsx", + "parent": "/search" + }, + "/search/search71": { + "filePath": "(gen)/search/search71.tsx", + "parent": "/search" + }, + "/search/search72": { + "filePath": "(gen)/search/search72.tsx", + "parent": "/search" + }, + "/search/search73": { + "filePath": "(gen)/search/search73.tsx", + "parent": "/search" + }, + "/search/search74": { + "filePath": "(gen)/search/search74.tsx", + "parent": "/search" + }, + "/search/search75": { + "filePath": "(gen)/search/search75.tsx", + "parent": "/search" + }, + "/search/search76": { + "filePath": "(gen)/search/search76.tsx", + "parent": "/search" + }, + "/search/search77": { + "filePath": "(gen)/search/search77.tsx", + "parent": "/search" + }, + "/search/search78": { + "filePath": "(gen)/search/search78.tsx", + "parent": "/search" + }, + "/search/search79": { + "filePath": "(gen)/search/search79.tsx", + "parent": "/search" + }, + "/search/search8": { + "filePath": "(gen)/search/search8.tsx", + "parent": "/search" + }, + "/search/search80": { + "filePath": "(gen)/search/search80.tsx", + "parent": "/search" + }, + "/search/search81": { + "filePath": "(gen)/search/search81.tsx", + "parent": "/search" + }, + "/search/search82": { + "filePath": "(gen)/search/search82.tsx", + "parent": "/search" + }, + "/search/search83": { + "filePath": "(gen)/search/search83.tsx", + "parent": "/search" + }, + "/search/search84": { + "filePath": "(gen)/search/search84.tsx", + "parent": "/search" + }, + "/search/search85": { + "filePath": "(gen)/search/search85.tsx", + "parent": "/search" + }, + "/search/search86": { + "filePath": "(gen)/search/search86.tsx", + "parent": "/search" + }, + "/search/search87": { + "filePath": "(gen)/search/search87.tsx", + "parent": "/search" + }, + "/search/search88": { + "filePath": "(gen)/search/search88.tsx", + "parent": "/search" + }, + "/search/search89": { + "filePath": "(gen)/search/search89.tsx", + "parent": "/search" + }, + "/search/search9": { + "filePath": "(gen)/search/search9.tsx", + "parent": "/search" + }, + "/search/search90": { + "filePath": "(gen)/search/search90.tsx", + "parent": "/search" + }, + "/search/search91": { + "filePath": "(gen)/search/search91.tsx", + "parent": "/search" + }, + "/search/search92": { + "filePath": "(gen)/search/search92.tsx", + "parent": "/search" + }, + "/search/search93": { + "filePath": "(gen)/search/search93.tsx", + "parent": "/search" + }, + "/search/search94": { + "filePath": "(gen)/search/search94.tsx", + "parent": "/search" + }, + "/search/search95": { + "filePath": "(gen)/search/search95.tsx", + "parent": "/search" + }, + "/search/search96": { + "filePath": "(gen)/search/search96.tsx", + "parent": "/search" + }, + "/search/search97": { + "filePath": "(gen)/search/search97.tsx", + "parent": "/search" + }, + "/search/search98": { + "filePath": "(gen)/search/search98.tsx", + "parent": "/search" + }, + "/search/search99": { + "filePath": "(gen)/search/search99.tsx", "parent": "/search" } } diff --git a/examples/react/quickstart-file-based/src/routeTree.gen.ts b/examples/react/quickstart-file-based/src/routeTree.gen.ts index 2f4ec21e49..f0cdd796ee 100644 --- a/examples/react/quickstart-file-based/src/routeTree.gen.ts +++ b/examples/react/quickstart-file-based/src/routeTree.gen.ts @@ -49,31 +49,32 @@ declare module '@tanstack/react-router' { // Create and export the route tree -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/about': typeof AboutRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/about': typeof AboutRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/about': typeof AboutRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' | '/about' fileRoutesByTo: FileRoutesByTo to: '/' | '/about' - id: '/' | '/about' + id: '__root__' | '/' | '/about' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute AboutRoute: typeof AboutRoute } diff --git a/examples/react/quickstart-rspack-file-based/src/routeTree.gen.ts b/examples/react/quickstart-rspack-file-based/src/routeTree.gen.ts index 2f4ec21e49..f0cdd796ee 100644 --- a/examples/react/quickstart-rspack-file-based/src/routeTree.gen.ts +++ b/examples/react/quickstart-rspack-file-based/src/routeTree.gen.ts @@ -49,31 +49,32 @@ declare module '@tanstack/react-router' { // Create and export the route tree -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/about': typeof AboutRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/about': typeof AboutRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/about': typeof AboutRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' | '/about' fileRoutesByTo: FileRoutesByTo to: '/' | '/about' - id: '/' | '/about' + id: '__root__' | '/' | '/about' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute AboutRoute: typeof AboutRoute } diff --git a/examples/react/quickstart-webpack-file-based/src/routeTree.gen.ts b/examples/react/quickstart-webpack-file-based/src/routeTree.gen.ts index 2f4ec21e49..f0cdd796ee 100644 --- a/examples/react/quickstart-webpack-file-based/src/routeTree.gen.ts +++ b/examples/react/quickstart-webpack-file-based/src/routeTree.gen.ts @@ -49,31 +49,32 @@ declare module '@tanstack/react-router' { // Create and export the route tree -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/about': typeof AboutRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/about': typeof AboutRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/about': typeof AboutRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' | '/about' fileRoutesByTo: FileRoutesByTo to: '/' | '/about' - id: '/' | '/about' + id: '__root__' | '/' | '/about' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute AboutRoute: typeof AboutRoute } diff --git a/examples/react/search-validator-adapters/src/routeTree.gen.ts b/examples/react/search-validator-adapters/src/routeTree.gen.ts index a3ced0c805..76817aedee 100644 --- a/examples/react/search-validator-adapters/src/routeTree.gen.ts +++ b/examples/react/search-validator-adapters/src/routeTree.gen.ts @@ -75,37 +75,38 @@ declare module '@tanstack/react-router' { // Create and export the route tree -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/users/arktype': typeof UsersArktypeIndexRoute '/users/valibot': typeof UsersValibotIndexRoute '/users/zod': typeof UsersZodIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/users/arktype': typeof UsersArktypeIndexRoute '/users/valibot': typeof UsersValibotIndexRoute '/users/zod': typeof UsersZodIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/users/arktype/': typeof UsersArktypeIndexRoute '/users/valibot/': typeof UsersValibotIndexRoute '/users/zod/': typeof UsersZodIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' | '/users/arktype' | '/users/valibot' | '/users/zod' fileRoutesByTo: FileRoutesByTo to: '/' | '/users/arktype' | '/users/valibot' | '/users/zod' - id: '/' | '/users/arktype/' | '/users/valibot/' | '/users/zod/' + id: '__root__' | '/' | '/users/arktype/' | '/users/valibot/' | '/users/zod/' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute UsersArktypeIndexRoute: typeof UsersArktypeIndexRoute UsersValibotIndexRoute: typeof UsersValibotIndexRoute diff --git a/examples/react/start-basic-auth/app/routeTree.gen.ts b/examples/react/start-basic-auth/app/routeTree.gen.ts index 1010a1feb3..5057c1f72b 100644 --- a/examples/react/start-basic-auth/app/routeTree.gen.ts +++ b/examples/react/start-basic-auth/app/routeTree.gen.ts @@ -152,7 +152,7 @@ const AuthedRouteChildren: AuthedRouteChildren = { const AuthedRouteWithChildren = AuthedRoute._addFileChildren(AuthedRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '': typeof AuthedRouteWithChildren '/login': typeof LoginRoute @@ -163,7 +163,7 @@ interface FileRoutesByFullPath { '/posts/': typeof AuthedPostsIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '': typeof AuthedRouteWithChildren '/login': typeof LoginRoute @@ -173,7 +173,8 @@ interface FileRoutesByTo { '/posts': typeof AuthedPostsIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/_authed': typeof AuthedRouteWithChildren '/login': typeof LoginRoute @@ -184,7 +185,7 @@ interface FileRoutesById { '/_authed/posts/': typeof AuthedPostsIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -198,6 +199,7 @@ interface FileRouteTypes { fileRoutesByTo: FileRoutesByTo to: '/' | '' | '/login' | '/logout' | '/signup' | '/posts/$postId' | '/posts' id: + | '__root__' | '/' | '/_authed' | '/login' @@ -209,7 +211,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute AuthedRoute: typeof AuthedRouteWithChildren LoginRoute: typeof LoginRoute diff --git a/examples/react/start-basic-counter/app/routeTree.gen.ts b/examples/react/start-basic-counter/app/routeTree.gen.ts index 186d8a3b43..c89e6dd3db 100644 --- a/examples/react/start-basic-counter/app/routeTree.gen.ts +++ b/examples/react/start-basic-counter/app/routeTree.gen.ts @@ -36,28 +36,29 @@ declare module '@tanstack/react-router' { // Create and export the route tree -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' fileRoutesByTo: FileRoutesByTo to: '/' - id: '/' + id: '__root__' | '/' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute } diff --git a/examples/react/start-basic-react-query/app/routeTree.gen.ts b/examples/react/start-basic-react-query/app/routeTree.gen.ts index a26e213a00..d6df38d1bf 100644 --- a/examples/react/start-basic-react-query/app/routeTree.gen.ts +++ b/examples/react/start-basic-react-query/app/routeTree.gen.ts @@ -254,7 +254,7 @@ const UsersRouteChildren: UsersRouteChildren = { const UsersRouteWithChildren = UsersRoute._addFileChildren(UsersRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '': typeof LayoutLayout2RouteWithChildren '/deferred': typeof DeferredRoute @@ -270,7 +270,7 @@ interface FileRoutesByFullPath { '/posts/$postId/deep': typeof PostsPostIdDeepRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '': typeof LayoutLayout2RouteWithChildren '/deferred': typeof DeferredRoute @@ -284,7 +284,8 @@ interface FileRoutesByTo { '/posts/$postId/deep': typeof PostsPostIdDeepRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/_layout': typeof LayoutRouteWithChildren '/deferred': typeof DeferredRoute @@ -301,7 +302,7 @@ interface FileRoutesById { '/posts/$postId/deep': typeof PostsPostIdDeepRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -331,6 +332,7 @@ interface FileRouteTypes { | '/layout-b' | '/posts/$postId/deep' id: + | '__root__' | '/' | '/_layout' | '/deferred' @@ -348,7 +350,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute LayoutRoute: typeof LayoutRouteWithChildren DeferredRoute: typeof DeferredRoute diff --git a/examples/react/start-basic-rsc/app/routeTree.gen.ts b/examples/react/start-basic-rsc/app/routeTree.gen.ts index 2b81099216..55380487d0 100644 --- a/examples/react/start-basic-rsc/app/routeTree.gen.ts +++ b/examples/react/start-basic-rsc/app/routeTree.gen.ts @@ -177,7 +177,7 @@ const PostsRouteChildren: PostsRouteChildren = { const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '': typeof LayoutLayout2RouteWithChildren '/posts': typeof PostsRouteWithChildren @@ -188,7 +188,7 @@ interface FileRoutesByFullPath { '/posts/$postId/deep': typeof PostsPostIdDeepRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '': typeof LayoutLayout2RouteWithChildren '/posts/$postId': typeof PostsPostIdRoute @@ -198,7 +198,8 @@ interface FileRoutesByTo { '/posts/$postId/deep': typeof PostsPostIdDeepRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/_layout': typeof LayoutRouteWithChildren '/posts': typeof PostsRouteWithChildren @@ -210,7 +211,7 @@ interface FileRoutesById { '/posts/$postId/deep': typeof PostsPostIdDeepRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -231,6 +232,7 @@ interface FileRouteTypes { | '/layout-b' | '/posts/$postId/deep' id: + | '__root__' | '/' | '/_layout' | '/posts' @@ -243,7 +245,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute LayoutRoute: typeof LayoutRouteWithChildren PostsRoute: typeof PostsRouteWithChildren diff --git a/examples/react/start-basic/app/routeTree.gen.ts b/examples/react/start-basic/app/routeTree.gen.ts index a26e213a00..d6df38d1bf 100644 --- a/examples/react/start-basic/app/routeTree.gen.ts +++ b/examples/react/start-basic/app/routeTree.gen.ts @@ -254,7 +254,7 @@ const UsersRouteChildren: UsersRouteChildren = { const UsersRouteWithChildren = UsersRoute._addFileChildren(UsersRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '': typeof LayoutLayout2RouteWithChildren '/deferred': typeof DeferredRoute @@ -270,7 +270,7 @@ interface FileRoutesByFullPath { '/posts/$postId/deep': typeof PostsPostIdDeepRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '': typeof LayoutLayout2RouteWithChildren '/deferred': typeof DeferredRoute @@ -284,7 +284,8 @@ interface FileRoutesByTo { '/posts/$postId/deep': typeof PostsPostIdDeepRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/_layout': typeof LayoutRouteWithChildren '/deferred': typeof DeferredRoute @@ -301,7 +302,7 @@ interface FileRoutesById { '/posts/$postId/deep': typeof PostsPostIdDeepRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -331,6 +332,7 @@ interface FileRouteTypes { | '/layout-b' | '/posts/$postId/deep' id: + | '__root__' | '/' | '/_layout' | '/deferred' @@ -348,7 +350,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute LayoutRoute: typeof LayoutRouteWithChildren DeferredRoute: typeof DeferredRoute diff --git a/examples/react/start-clerk-basic/app/routeTree.gen.ts b/examples/react/start-clerk-basic/app/routeTree.gen.ts index 41f840f84a..833f1e4bc9 100644 --- a/examples/react/start-clerk-basic/app/routeTree.gen.ts +++ b/examples/react/start-clerk-basic/app/routeTree.gen.ts @@ -128,7 +128,7 @@ const AuthedRouteChildren: AuthedRouteChildren = { const AuthedRouteWithChildren = AuthedRoute._addFileChildren(AuthedRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '': typeof AuthedRouteWithChildren '/posts': typeof AuthedPostsRouteWithChildren @@ -137,7 +137,7 @@ interface FileRoutesByFullPath { '/posts/': typeof AuthedPostsIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '': typeof AuthedRouteWithChildren '/posts/$postId': typeof AuthedPostsPostIdRoute @@ -145,7 +145,8 @@ interface FileRoutesByTo { '/posts': typeof AuthedPostsIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/_authed': typeof AuthedRouteWithChildren '/_authed/posts': typeof AuthedPostsRouteWithChildren @@ -154,12 +155,13 @@ interface FileRoutesById { '/_authed/posts/': typeof AuthedPostsIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' | '' | '/posts' | '/posts/$postId' | '/profile/$' | '/posts/' fileRoutesByTo: FileRoutesByTo to: '/' | '' | '/posts/$postId' | '/profile/$' | '/posts' id: + | '__root__' | '/' | '/_authed' | '/_authed/posts' @@ -169,7 +171,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute AuthedRoute: typeof AuthedRouteWithChildren } diff --git a/examples/react/start-convex-trellaux/app/routeTree.gen.ts b/examples/react/start-convex-trellaux/app/routeTree.gen.ts index d41046c22b..05b9df8269 100644 --- a/examples/react/start-convex-trellaux/app/routeTree.gen.ts +++ b/examples/react/start-convex-trellaux/app/routeTree.gen.ts @@ -49,31 +49,32 @@ declare module '@tanstack/react-router' { // Create and export the route tree -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/boards/$boardId': typeof BoardsBoardIdRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/boards/$boardId': typeof BoardsBoardIdRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/boards/$boardId': typeof BoardsBoardIdRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' | '/boards/$boardId' fileRoutesByTo: FileRoutesByTo to: '/' | '/boards/$boardId' - id: '/' | '/boards/$boardId' + id: '__root__' | '/' | '/boards/$boardId' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute BoardsBoardIdRoute: typeof BoardsBoardIdRoute } diff --git a/examples/react/start-supabase-basic/.gitignore b/examples/react/start-supabase-basic/.gitignore index 7387b2d256..5578fb7487 100644 --- a/examples/react/start-supabase-basic/.gitignore +++ b/examples/react/start-supabase-basic/.gitignore @@ -1,3 +1,24 @@ node_modules # Keep environment variables out of version control -!.env \ No newline at end of file +!.env +package-lock.json +yarn.lock + +.DS_Store +.cache +.env +.vercel +.output +.vinxi + +/build/ +/api/ +/server/build +/public/build +.vinxi +# Sentry Config File +.env.sentry-build-plugin +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/examples/react/start-supabase-basic/app/routeTree.gen.ts b/examples/react/start-supabase-basic/app/routeTree.gen.ts index 1010a1feb3..5057c1f72b 100644 --- a/examples/react/start-supabase-basic/app/routeTree.gen.ts +++ b/examples/react/start-supabase-basic/app/routeTree.gen.ts @@ -152,7 +152,7 @@ const AuthedRouteChildren: AuthedRouteChildren = { const AuthedRouteWithChildren = AuthedRoute._addFileChildren(AuthedRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '': typeof AuthedRouteWithChildren '/login': typeof LoginRoute @@ -163,7 +163,7 @@ interface FileRoutesByFullPath { '/posts/': typeof AuthedPostsIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '': typeof AuthedRouteWithChildren '/login': typeof LoginRoute @@ -173,7 +173,8 @@ interface FileRoutesByTo { '/posts': typeof AuthedPostsIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/_authed': typeof AuthedRouteWithChildren '/login': typeof LoginRoute @@ -184,7 +185,7 @@ interface FileRoutesById { '/_authed/posts/': typeof AuthedPostsIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -198,6 +199,7 @@ interface FileRouteTypes { fileRoutesByTo: FileRoutesByTo to: '/' | '' | '/login' | '/logout' | '/signup' | '/posts/$postId' | '/posts' id: + | '__root__' | '/' | '/_authed' | '/login' @@ -209,7 +211,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute AuthedRoute: typeof AuthedRouteWithChildren LoginRoute: typeof LoginRoute diff --git a/examples/react/start-trellaux/app/routeTree.gen.ts b/examples/react/start-trellaux/app/routeTree.gen.ts index d41046c22b..05b9df8269 100644 --- a/examples/react/start-trellaux/app/routeTree.gen.ts +++ b/examples/react/start-trellaux/app/routeTree.gen.ts @@ -49,31 +49,32 @@ declare module '@tanstack/react-router' { // Create and export the route tree -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/boards/$boardId': typeof BoardsBoardIdRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/boards/$boardId': typeof BoardsBoardIdRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/boards/$boardId': typeof BoardsBoardIdRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' | '/boards/$boardId' fileRoutesByTo: FileRoutesByTo to: '/' | '/boards/$boardId' - id: '/' | '/boards/$boardId' + id: '__root__' | '/' | '/boards/$boardId' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute BoardsBoardIdRoute: typeof BoardsBoardIdRoute } diff --git a/examples/react/with-trpc-react-query/app/routeTree.gen.ts b/examples/react/with-trpc-react-query/app/routeTree.gen.ts index dde4790fde..428a773af8 100644 --- a/examples/react/with-trpc-react-query/app/routeTree.gen.ts +++ b/examples/react/with-trpc-react-query/app/routeTree.gen.ts @@ -129,7 +129,7 @@ const DashboardRouteWithChildren = DashboardRoute._addFileChildren( DashboardRouteChildren, ) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/dashboard': typeof DashboardRouteWithChildren '/dashboard/posts': typeof DashboardPostsRouteWithChildren @@ -138,14 +138,15 @@ interface FileRoutesByFullPath { '/dashboard/posts/': typeof DashboardPostsIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/dashboard': typeof DashboardIndexRoute '/dashboard/posts/$postId': typeof DashboardPostsPostIdRoute '/dashboard/posts': typeof DashboardPostsIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/dashboard': typeof DashboardRouteWithChildren '/dashboard/posts': typeof DashboardPostsRouteWithChildren @@ -154,7 +155,7 @@ interface FileRoutesById { '/dashboard/posts/': typeof DashboardPostsIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -166,6 +167,7 @@ interface FileRouteTypes { fileRoutesByTo: FileRoutesByTo to: '/' | '/dashboard' | '/dashboard/posts/$postId' | '/dashboard/posts' id: + | '__root__' | '/' | '/dashboard' | '/dashboard/posts' @@ -175,7 +177,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute DashboardRoute: typeof DashboardRouteWithChildren } diff --git a/examples/react/with-trpc/app/routeTree.gen.ts b/examples/react/with-trpc/app/routeTree.gen.ts index dde4790fde..428a773af8 100644 --- a/examples/react/with-trpc/app/routeTree.gen.ts +++ b/examples/react/with-trpc/app/routeTree.gen.ts @@ -129,7 +129,7 @@ const DashboardRouteWithChildren = DashboardRoute._addFileChildren( DashboardRouteChildren, ) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/dashboard': typeof DashboardRouteWithChildren '/dashboard/posts': typeof DashboardPostsRouteWithChildren @@ -138,14 +138,15 @@ interface FileRoutesByFullPath { '/dashboard/posts/': typeof DashboardPostsIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/dashboard': typeof DashboardIndexRoute '/dashboard/posts/$postId': typeof DashboardPostsPostIdRoute '/dashboard/posts': typeof DashboardPostsIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/dashboard': typeof DashboardRouteWithChildren '/dashboard/posts': typeof DashboardPostsRouteWithChildren @@ -154,7 +155,7 @@ interface FileRoutesById { '/dashboard/posts/': typeof DashboardPostsIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -166,6 +167,7 @@ interface FileRouteTypes { fileRoutesByTo: FileRoutesByTo to: '/' | '/dashboard' | '/dashboard/posts/$postId' | '/dashboard/posts' id: + | '__root__' | '/' | '/dashboard' | '/dashboard/posts' @@ -175,7 +177,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute DashboardRoute: typeof DashboardRouteWithChildren } diff --git a/packages/router-generator/src/generator.ts b/packages/router-generator/src/generator.ts index c91ac903fc..fdfa186394 100644 --- a/packages/router-generator/src/generator.ts +++ b/packages/router-generator/src/generator.ts @@ -589,36 +589,37 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ ]), '// Create and export the route tree', routeConfigChildrenText, - `interface FileRoutesByFullPath { + `export interface FileRoutesByFullPath { ${[...createRouteNodesByFullPath(routeNodes).entries()].map( ([fullPath, routeNode]) => { return `'${fullPath}': typeof ${getResolvedRouteNodeVariableName(routeNode)}` }, )} }`, - `interface FileRoutesByTo { + `export interface FileRoutesByTo { ${[...createRouteNodesByTo(routeNodes).entries()].map( ([to, routeNode]) => { return `'${to}': typeof ${getResolvedRouteNodeVariableName(routeNode)}` }, )} }`, - `interface FileRoutesById { + `export interface FileRoutesById { + '__root__': typeof rootRoute, ${[...createRouteNodesById(routeNodes).entries()].map( ([id, routeNode]) => { return `'${id}': typeof ${getResolvedRouteNodeVariableName(routeNode)}` }, )} }`, - `interface FileRouteTypes { + `export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: ${[...createRouteNodesByFullPath(routeNodes).keys()].map((fullPath) => `'${fullPath}'`).join('|')} fileRoutesByTo: FileRoutesByTo to: ${[...createRouteNodesByTo(routeNodes).keys()].map((to) => `'${to}'`).join('|')} - id: ${[...createRouteNodesById(routeNodes).keys()].map((id) => `'${id}'`).join('|')} + id: '__root__' | ${[...createRouteNodesById(routeNodes).keys()].map((id) => `'${id}'`).join('|')} fileRoutesById: FileRoutesById }`, - `interface RootRouteChildren { + `export interface RootRouteChildren { ${routeTree.map((child) => `${child.variableName}Route: typeof ${getResolvedRouteNodeVariableName(child)}`).join(',')} }`, `const rootRouteChildren: RootRouteChildren = { diff --git a/packages/router-generator/tests/generator/append-and-prepend/routeTree.snapshot.ts b/packages/router-generator/tests/generator/append-and-prepend/routeTree.snapshot.ts index 82604e5a9e..8c70533d27 100644 --- a/packages/router-generator/tests/generator/append-and-prepend/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/append-and-prepend/routeTree.snapshot.ts @@ -32,28 +32,29 @@ declare module '@tanstack/react-router' { // Create and export the route tree -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' fileRoutesByTo: FileRoutesByTo to: '/' - id: '/' + id: '__root__' | '/' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute } diff --git a/packages/router-generator/tests/generator/custom-tokens/routeTree.snapshot.ts b/packages/router-generator/tests/generator/custom-tokens/routeTree.snapshot.ts index 5ce44150e4..c24b7a6d0f 100644 --- a/packages/router-generator/tests/generator/custom-tokens/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/custom-tokens/routeTree.snapshot.ts @@ -157,7 +157,7 @@ const PostsR0ut3RouteWithChildren = PostsR0ut3Route._addFileChildren( PostsR0ut3RouteChildren, ) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof R1nd3xRoute '/blog': typeof BlogR0ut3RouteWithChildren '/posts': typeof PostsR0ut3RouteWithChildren @@ -168,7 +168,7 @@ interface FileRoutesByFullPath { '/posts/$postId': typeof PostsPostId1nd3xRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof R1nd3xRoute '/blog/$slug': typeof BlogSlugRoute '/blog': typeof Blog1nd3xRoute @@ -177,7 +177,8 @@ interface FileRoutesByTo { '/posts/$postId': typeof PostsPostId1nd3xRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof R1nd3xRoute '/blog': typeof BlogR0ut3RouteWithChildren '/posts': typeof PostsR0ut3RouteWithChildren @@ -188,7 +189,7 @@ interface FileRoutesById { '/posts/$postId/': typeof PostsPostId1nd3xRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -208,6 +209,7 @@ interface FileRouteTypes { | '/posts/$postId/deep' | '/posts/$postId' id: + | '__root__' | '/' | '/blog' | '/posts' @@ -219,7 +221,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { R1nd3xRoute: typeof R1nd3xRoute BlogR0ut3Route: typeof BlogR0ut3RouteWithChildren PostsR0ut3Route: typeof PostsR0ut3RouteWithChildren diff --git a/packages/router-generator/tests/generator/file-modification/routeTree.snapshot.ts b/packages/router-generator/tests/generator/file-modification/routeTree.snapshot.ts index 3d0510d0ae..9e8e4be5c2 100644 --- a/packages/router-generator/tests/generator/file-modification/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/file-modification/routeTree.snapshot.ts @@ -86,37 +86,38 @@ declare module '@tanstack/react-router' { // Create and export the route tree -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/foo': typeof testFooRoute '/initiallyEmpty': typeof testInitiallyEmptyRoute '/initiallyLazy': typeof testInitiallyLazyRoute '/bar': typeof testBarLazyRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/foo': typeof testFooRoute '/initiallyEmpty': typeof testInitiallyEmptyRoute '/initiallyLazy': typeof testInitiallyLazyRoute '/bar': typeof testBarLazyRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/foo': typeof testFooRoute '/initiallyEmpty': typeof testInitiallyEmptyRoute '/initiallyLazy': typeof testInitiallyLazyRoute '/bar': typeof testBarLazyRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' fileRoutesByTo: FileRoutesByTo to: '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' - id: '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' + id: '__root__' | '/foo' | '/initiallyEmpty' | '/initiallyLazy' | '/bar' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { testFooRoute: typeof testFooRoute testInitiallyEmptyRoute: typeof testInitiallyEmptyRoute testInitiallyLazyRoute: typeof testInitiallyLazyRoute diff --git a/packages/router-generator/tests/generator/flat/routeTree.snapshot.ts b/packages/router-generator/tests/generator/flat/routeTree.snapshot.ts index 2bb540ea85..88b18fccf6 100644 --- a/packages/router-generator/tests/generator/flat/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/flat/routeTree.snapshot.ts @@ -170,7 +170,7 @@ const PostsRouteRouteWithChildren = PostsRouteRoute._addFileChildren( PostsRouteRouteChildren, ) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/blog': typeof BlogRouteRouteWithChildren '/posts': typeof PostsRouteRouteWithChildren @@ -182,7 +182,7 @@ interface FileRoutesByFullPath { '/posts/$postId': typeof PostsPostIdIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/blog/stats': typeof BlogStatsRoute '/blog': typeof BlogIndexRoute @@ -192,7 +192,8 @@ interface FileRoutesByTo { '/posts/$postId': typeof PostsPostIdIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/blog': typeof BlogRouteRouteWithChildren '/posts': typeof PostsRouteRouteWithChildren @@ -204,7 +205,7 @@ interface FileRoutesById { '/posts/$postId/': typeof PostsPostIdIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -226,6 +227,7 @@ interface FileRouteTypes { | '/blog/$slug' | '/posts/$postId' id: + | '__root__' | '/' | '/blog' | '/posts' @@ -238,7 +240,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute BlogRouteRoute: typeof BlogRouteRouteWithChildren PostsRouteRoute: typeof PostsRouteRouteWithChildren diff --git a/packages/router-generator/tests/generator/nested-layouts/routeTree.snapshot.ts b/packages/router-generator/tests/generator/nested-layouts/routeTree.snapshot.ts index 4425bd094f..a41c906e07 100644 --- a/packages/router-generator/tests/generator/nested-layouts/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/nested-layouts/routeTree.snapshot.ts @@ -509,7 +509,7 @@ const NestedRouteChildren: NestedRouteChildren = { const NestedRouteWithChildren = NestedRoute._addFileChildren(NestedRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/jested': typeof JestedLayoutB3LayoutC2RouteWithChildren '': typeof LayoutA2RouteWithChildren @@ -528,7 +528,7 @@ interface FileRoutesByFullPath { '/nested/bar': typeof NestedLayoutB1LayoutC1BarRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/jested': typeof JestedLayoutB3IndexRoute '': typeof LayoutA2RouteWithChildren @@ -544,7 +544,8 @@ interface FileRoutesByTo { '/nested/bar': typeof NestedLayoutB1LayoutC1BarRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/jested': typeof JestedRouteRouteWithChildren '/_layout-a1': typeof LayoutA1RouteWithChildren @@ -572,7 +573,7 @@ interface FileRoutesById { '/nested/_layout-b1/_layout-c1/bar': typeof NestedLayoutB1LayoutC1BarRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -607,6 +608,7 @@ interface FileRouteTypes { | '/jested/bar' | '/nested/bar' id: + | '__root__' | '/' | '/jested' | '/_layout-a1' @@ -635,7 +637,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute JestedRouteRoute: typeof JestedRouteRouteWithChildren LayoutA1Route: typeof LayoutA1RouteWithChildren diff --git a/packages/router-generator/tests/generator/nested/routeTree.snapshot.ts b/packages/router-generator/tests/generator/nested/routeTree.snapshot.ts index f0caed3910..d9b4c36100 100644 --- a/packages/router-generator/tests/generator/nested/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/nested/routeTree.snapshot.ts @@ -170,7 +170,7 @@ const PostsRouteRouteWithChildren = PostsRouteRoute._addFileChildren( PostsRouteRouteChildren, ) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/blog': typeof BlogRouteRouteWithChildren '/posts': typeof PostsRouteRouteWithChildren @@ -182,7 +182,7 @@ interface FileRoutesByFullPath { '/posts/$postId': typeof PostsPostIdIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/blog/$slug': typeof BlogSlugRoute '/blog/stats': typeof BlogStatsRoute @@ -192,7 +192,8 @@ interface FileRoutesByTo { '/posts/$postId': typeof PostsPostIdIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/blog': typeof BlogRouteRouteWithChildren '/posts': typeof PostsRouteRouteWithChildren @@ -204,7 +205,7 @@ interface FileRoutesById { '/posts/$postId/': typeof PostsPostIdIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -226,6 +227,7 @@ interface FileRouteTypes { | '/posts/$postId/deep' | '/posts/$postId' id: + | '__root__' | '/' | '/blog' | '/posts' @@ -238,7 +240,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute BlogRouteRoute: typeof BlogRouteRouteWithChildren PostsRouteRoute: typeof PostsRouteRouteWithChildren diff --git a/packages/router-generator/tests/generator/no-manifest/routeTree.snapshot.ts b/packages/router-generator/tests/generator/no-manifest/routeTree.snapshot.ts index 60d1f48694..e411fcce0e 100644 --- a/packages/router-generator/tests/generator/no-manifest/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/no-manifest/routeTree.snapshot.ts @@ -36,28 +36,29 @@ declare module '@tanstack/react-router' { // Create and export the route tree -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' fileRoutesByTo: FileRoutesByTo to: '/' - id: '/' + id: '__root__' | '/' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute } diff --git a/packages/router-generator/tests/generator/route-groups/routeTree.snapshot.ts b/packages/router-generator/tests/generator/route-groups/routeTree.snapshot.ts index 5234ee5feb..06d86ac020 100644 --- a/packages/router-generator/tests/generator/route-groups/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/route-groups/routeTree.snapshot.ts @@ -36,28 +36,29 @@ declare module '@tanstack/react-router' { // Create and export the route tree -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/asdf/$id': typeof fooAsdfbarIdRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/asdf/$id': typeof fooAsdfbarIdRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/asdf/$id': typeof fooAsdfbarIdRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/asdf/$id' fileRoutesByTo: FileRoutesByTo to: '/asdf/$id' - id: '/asdf/$id' + id: '__root__' | '/asdf/$id' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { fooAsdfbarIdRoute: typeof fooAsdfbarIdRoute } diff --git a/packages/router-generator/tests/generator/single-level/routeTree.snapshot.ts b/packages/router-generator/tests/generator/single-level/routeTree.snapshot.ts index 75ec72d071..2ca8187b37 100644 --- a/packages/router-generator/tests/generator/single-level/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/single-level/routeTree.snapshot.ts @@ -49,31 +49,32 @@ declare module '@tanstack/react-router' { // Create and export the route tree -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/posts': typeof PostsRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/posts': typeof PostsRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/posts': typeof PostsRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' | '/posts' fileRoutesByTo: FileRoutesByTo to: '/' | '/posts' - id: '/' | '/posts' + id: '__root__' | '/' | '/posts' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute PostsRoute: typeof PostsRoute } diff --git a/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.snapshot.ts b/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.snapshot.ts index 749d5a95c4..d72aea4c63 100644 --- a/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/virtual-inside-nested/routeTree.snapshot.ts @@ -88,36 +88,37 @@ const FooBarRouteChildren: FooBarRouteChildren = { const FooBarRouteWithChildren = FooBarRoute._addFileChildren(FooBarRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof IndexRoute '/foo/bar': typeof FooBarRouteWithChildren '/foo/bar/': typeof fooBarHomeRoute '/foo/bar/$id': typeof fooBarDetailsRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof IndexRoute '/foo/bar': typeof fooBarHomeRoute '/foo/bar/$id': typeof fooBarDetailsRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof IndexRoute '/foo/bar': typeof FooBarRouteWithChildren '/foo/bar/': typeof fooBarHomeRoute '/foo/bar/$id': typeof fooBarDetailsRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: '/' | '/foo/bar' | '/foo/bar/' | '/foo/bar/$id' fileRoutesByTo: FileRoutesByTo to: '/' | '/foo/bar' | '/foo/bar/$id' - id: '/' | '/foo/bar' | '/foo/bar/' | '/foo/bar/$id' + id: '__root__' | '/' | '/foo/bar' | '/foo/bar/' | '/foo/bar/$id' fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { IndexRoute: typeof IndexRoute FooBarRoute: typeof FooBarRouteWithChildren } diff --git a/packages/router-generator/tests/generator/virtual/routeTree.snapshot.ts b/packages/router-generator/tests/generator/virtual/routeTree.snapshot.ts index 57ec5c5ea2..95c36d0759 100644 --- a/packages/router-generator/tests/generator/virtual/routeTree.snapshot.ts +++ b/packages/router-generator/tests/generator/virtual/routeTree.snapshot.ts @@ -197,7 +197,7 @@ const layoutRouteChildren: layoutRouteChildren = { const layoutRouteWithChildren = layoutRoute._addFileChildren(layoutRouteChildren) -interface FileRoutesByFullPath { +export interface FileRoutesByFullPath { '/': typeof indexRoute '': typeof layoutRouteWithChildren '/dashboard': typeof dbDashboardRouteWithChildren @@ -210,7 +210,7 @@ interface FileRoutesByFullPath { '/hello/foo': typeof HelloFooIndexRoute } -interface FileRoutesByTo { +export interface FileRoutesByTo { '/': typeof indexRoute '': typeof layoutRouteWithChildren '/dashboard': typeof dbDashboardIndexRoute @@ -221,7 +221,8 @@ interface FileRoutesByTo { '/hello/foo': typeof HelloFooIndexRoute } -interface FileRoutesById { +export interface FileRoutesById { + __root__: typeof rootRoute '/': typeof indexRoute '/_layout': typeof layoutRouteWithChildren '/_layout/dashboard': typeof dbDashboardRouteWithChildren @@ -234,7 +235,7 @@ interface FileRoutesById { '/_layout/hello/foo/': typeof HelloFooIndexRoute } -interface FileRouteTypes { +export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' @@ -258,6 +259,7 @@ interface FileRouteTypes { | '/hello/foo/$id' | '/hello/foo' id: + | '__root__' | '/' | '/_layout' | '/_layout/dashboard' @@ -271,7 +273,7 @@ interface FileRouteTypes { fileRoutesById: FileRoutesById } -interface RootRouteChildren { +export interface RootRouteChildren { indexRoute: typeof indexRoute layoutRoute: typeof layoutRouteWithChildren } From 919bd13961c490ef846019049a563ed05b5c78ff Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sat, 7 Sep 2024 07:11:00 +0000 Subject: [PATCH 067/154] release: v1.56.4 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic-virtual-file-based/package.json | 6 +++--- .../basic-virtual-inside-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-supabase-basic/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 48 files changed, 126 insertions(+), 126 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 520c5e8fd2..f8c4e7a847 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 9d35ea8870..736081fa13 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index f3f34b7bc8..6f47924d83 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 9862c0d903..5c2a0515e5 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index e0fec5851d..ab0a406409 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,9 +12,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index d6ceb0b01b..da014f1222 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index c007cc9194..231c83e096 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", + "@tanstack/start": "^1.56.4", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 2f8deb1f09..0f86568ad1 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", + "@tanstack/start": "^1.56.4", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 3d90765e61..a85ac81f7d 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 548882c84f..3ad18240b8 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 3ca94a5c43..cf04e30790 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 9f8a6b951b..3f387520a6 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 34327ed32f..69787a059f 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index b445e16996..1a256bfb6a 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 7d6a9a98cc..b076571110 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 6686fd71a8..fafd9526ac 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index cfb66ba1ef..35d630db2a 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 9b00d1312e..9954083948 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 3b82e71ee0..a59133eac7 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 7971ab435b..c499aff684 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index a6e8a51603..f04aa86d50 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/router-plugin": "^1.56.4", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.5.3" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index b7f858aaa5..e4fe031f20 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/router-plugin": "^1.56.4", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 72341c1988..c9b77b1804 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index c116bf3af3..d1de127f91 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", + "@tanstack/react-router": "^1.56.4", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/router-devtools": "^1.56.4", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 9e764a608e..258d26ca59 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", - "@tanstack/router-zod-adapter": "^1.56.3", - "@tanstack/router-valibot-adapter": "^1.56.3", - "@tanstack/router-arktype-adapter": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-zod-adapter": "^1.56.4", + "@tanstack/router-valibot-adapter": "^1.56.4", + "@tanstack/router-arktype-adapter": "^1.56.4", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index f85e028a05..5a15f4f411 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", + "@tanstack/start": "^1.56.4", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index b31dce249d..3458ab3f1c 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/start": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/start": "^1.56.4", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index fa6992d86e..7be3731339 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.3", - "@tanstack/react-router-with-query": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/react-router-with-query": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", + "@tanstack/start": "^1.56.4", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index a8f5d71a03..c0d4551d7b 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", + "@tanstack/start": "^1.56.4", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 940880087b..1372478871 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", + "@tanstack/start": "^1.56.4", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 1eee6b20d8..6ad1e86384 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.5", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", + "@tanstack/start": "^1.56.4", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 3ab0257a5b..fc26aa533a 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.3", - "@tanstack/react-router-with-query": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/react-router-with-query": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", + "@tanstack/start": "^1.56.4", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 12b2999417..7c364cf035 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.3", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-plugin": "^1.56.1", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/start": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/start": "^1.56.4", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index ca749c8e98..a348c16134 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.3", - "@tanstack/react-router-with-query": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", - "@tanstack/start": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/react-router-with-query": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", + "@tanstack/start": "^1.56.4", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index aa3a3f6b46..816ef7b510 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index ea535fe4e5..e0f863b0f0 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 6a8d05f78e..c288c77f53 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.56.3", - "@tanstack/router-devtools": "^1.56.3", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/react-router": "^1.56.4", + "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-plugin": "^1.56.4", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 338359e190..96227165ae 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.56.3", + "version": "1.56.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index b8ccb67183..80a9a9eaf8 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.56.3", + "version": "1.56.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 3fc30a710e..009052daa9 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.56.3", + "version": "1.56.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 310ca34936..33a9827d45 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.56.2", + "version": "1.56.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index ee86d31f5c..4266ac35c5 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.56.3", + "version": "1.56.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 1814979c47..6702293f96 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.56.2", + "version": "1.56.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index d05acf597d..37c3965ff0 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.56.2", + "version": "1.56.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index f9e67d1b1e..55d6eaaf06 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.56.3", + "version": "1.56.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index f6281acca2..59ebf76740 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.56.2", + "version": "1.56.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index c84148ac3d..964309eeb4 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.56.3", + "version": "1.56.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 934b7c053c..570dd70743 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.56.3", + "version": "1.56.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From f17b805efa11d0d5f983ee2dc19e1fa26e19b3b2 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sat, 7 Sep 2024 13:32:31 +0200 Subject: [PATCH 068/154] fix(react-router): correct peerDependenciesMeta (#2283) --- packages/react-router/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 80a9a9eaf8..8d570c0775 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -84,7 +84,7 @@ "@tanstack/router-generator": "workspace:*" }, "peerDependenciesMeta": { - "@tanstack/react-router": { + "@tanstack/react-generator": { "optional": true } } From 21caad3e4828ef2adaf27ff63a9b8f06a2131458 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sat, 7 Sep 2024 13:34:33 +0200 Subject: [PATCH 069/154] fix(react-router): correct typings (#2284) --- packages/react-router/src/router.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index db3a8ac5b3..3eb1cce5a1 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -138,6 +138,7 @@ export type InferRouterContext = any, any, any, + any, any > ? TRouterContext From c572286f14e7866b57d27682fa5b9c69e57f33cf Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sat, 7 Sep 2024 11:37:56 +0000 Subject: [PATCH 070/154] release: v1.56.5 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic-virtual-file-based/package.json | 4 ++-- .../react/basic-virtual-inside-file-based/package.json | 4 ++-- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-supabase-basic/package.json | 6 +++--- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 44 files changed, 97 insertions(+), 97 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index f8c4e7a847..9602102ed8 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 736081fa13..cf819d6a10 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 6f47924d83..0150e11bab 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 5c2a0515e5..e427a5d45d 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index ab0a406409..e4ed13486b 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index da014f1222..e29dbe9f37 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 231c83e096..0fe66c8c6b 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.4", + "@tanstack/start": "^1.56.5", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 0f86568ad1..6c30fde06c 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.4", + "@tanstack/start": "^1.56.5", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index a85ac81f7d..aced91f676 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 3ad18240b8..d12e1129a0 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index cf04e30790..9aa7ec3733 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 3f387520a6..a55bf09a92 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 69787a059f..53cc173367 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 1a256bfb6a..454a75e0c2 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index b076571110..58e0777b3c 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index fafd9526ac..fac506e670 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 35d630db2a..607866b044 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 9954083948..d1b89b682c 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index a59133eac7..5b7b84102e 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index c499aff684..faa77c56c4 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index f04aa86d50..967840f49a 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index e4fe031f20..ccc8141b48 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index c9b77b1804..112e6be854 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index d1de127f91..e300d7eceb 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", + "@tanstack/react-router": "^1.56.5", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/router-devtools": "^1.56.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 258d26ca59..017e0c018c 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", - "@tanstack/router-zod-adapter": "^1.56.4", - "@tanstack/router-valibot-adapter": "^1.56.4", - "@tanstack/router-arktype-adapter": "^1.56.4", + "@tanstack/router-zod-adapter": "^1.56.5", + "@tanstack/router-valibot-adapter": "^1.56.5", + "@tanstack/router-arktype-adapter": "^1.56.5", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 5a15f4f411..9ad9d4a5b5 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.4", + "@tanstack/start": "^1.56.5", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 3458ab3f1c..454e7aad36 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/start": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/start": "^1.56.5", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 7be3731339..8d6c260b78 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.4", - "@tanstack/react-router-with-query": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/react-router-with-query": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.4", + "@tanstack/start": "^1.56.5", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index c0d4551d7b..adff4b18b9 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.4", + "@tanstack/start": "^1.56.5", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 1372478871..c6565fcac9 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.4", + "@tanstack/start": "^1.56.5", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 6ad1e86384..8e7b1c8f73 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.5", - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.4", + "@tanstack/start": "^1.56.5", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index fc26aa533a..1343f107e9 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.4", - "@tanstack/react-router-with-query": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/react-router-with-query": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.4", + "@tanstack/start": "^1.56.5", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 7c364cf035..900917d320 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.3", - "@tanstack/react-router": "^1.56.4", + "@tanstack/react-router": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", - "@tanstack/start": "^1.56.4", + "@tanstack/router-devtools": "^1.56.5", + "@tanstack/start": "^1.56.5", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index a348c16134..1e9ba4bb92 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.4", - "@tanstack/react-router-with-query": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/react-router-with-query": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.4", + "@tanstack/start": "^1.56.5", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 816ef7b510..2600819933 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index e0f863b0f0..5e037199d2 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index c288c77f53..e8529557a1 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.56.4", - "@tanstack/router-devtools": "^1.56.4", + "@tanstack/react-router": "^1.56.5", + "@tanstack/router-devtools": "^1.56.5", "@tanstack/router-plugin": "^1.56.4", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 96227165ae..0e6cae22ac 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.56.4", + "version": "1.56.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 8d570c0775..e42a4b0ba6 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.56.4", + "version": "1.56.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 009052daa9..9d6586c4a5 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.56.4", + "version": "1.56.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 4266ac35c5..12ab585e53 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.56.4", + "version": "1.56.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 55d6eaaf06..02a1b2108b 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.56.4", + "version": "1.56.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 964309eeb4..e440aa16f1 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.56.4", + "version": "1.56.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 570dd70743..8e36ca9733 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.56.4", + "version": "1.56.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 282f83a860281510713169dcdab81ea52dc83454 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sun, 8 Sep 2024 00:52:37 +0200 Subject: [PATCH 071/154] chore: run typecheck for examples after building (#2285) --- examples/react/authenticated-routes/package.json | 2 +- examples/react/authenticated-routes/tsconfig.json | 4 +++- .../react/basic-default-search-params/package.json | 2 +- .../react/basic-default-search-params/tsconfig.json | 4 +++- .../basic-file-based-codesplitting/package.json | 2 +- examples/react/basic-file-based/package.json | 2 +- .../react/basic-react-query-file-based/package.json | 2 +- .../basic-react-query-file-based/tsconfig.json | 4 +++- examples/react/basic-react-query/package.json | 2 +- examples/react/basic-react-query/tsconfig.json | 5 ++++- .../react/basic-virtual-file-based/package.json | 2 +- .../react/basic-virtual-file-based/tsconfig.json | 3 ++- .../basic-virtual-inside-file-based/package.json | 2 +- .../basic-virtual-inside-file-based/tsconfig.json | 1 + examples/react/basic/package.json | 2 +- examples/react/basic/tsconfig.json | 5 ++++- examples/react/deferred-data/package.json | 2 +- examples/react/kitchen-sink-file-based/package.json | 8 ++++---- .../src/routes/dashboard.users.tsx | 5 ++--- .../react/kitchen-sink-file-based/tsconfig.json | 5 ++++- .../src/routes/dashboard.users.tsx | 5 ++--- .../react/kitchen-sink-react-query/package.json | 2 +- .../react/kitchen-sink-react-query/src/main.tsx | 13 +++++++++---- .../react/kitchen-sink-react-query/tsconfig.json | 5 ++++- examples/react/kitchen-sink/package.json | 2 +- examples/react/kitchen-sink/src/main.tsx | 5 ++--- examples/react/kitchen-sink/tsconfig.json | 5 ++++- examples/react/large-file-based/package.json | 2 +- examples/react/large-file-based/tsconfig.json | 2 ++ examples/react/location-masking/package.json | 2 +- examples/react/location-masking/src/main.tsx | 1 + examples/react/location-masking/tsconfig.json | 5 ++++- examples/react/navigation-blocking/package.json | 2 +- examples/react/quickstart-file-based/package.json | 2 +- examples/react/quickstart/package.json | 2 +- examples/react/scroll-restoration/package.json | 2 +- examples/react/scroll-restoration/tsconfig.json | 4 +++- .../react/search-validator-adapters/package.json | 2 +- .../react/search-validator-adapters/tsconfig.json | 6 +++++- examples/react/with-framer-motion/package.json | 2 +- examples/react/with-trpc-react-query/tsconfig.json | 2 ++ examples/react/with-trpc/tsconfig.json | 2 ++ packages/virtual-file-routes/tsconfig.json | 2 ++ 43 files changed, 92 insertions(+), 49 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 9602102ed8..2ecef991bf 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/authenticated-routes/tsconfig.json b/examples/react/authenticated-routes/tsconfig.json index c9e17e2b68..f5a6cae049 100644 --- a/examples/react/authenticated-routes/tsconfig.json +++ b/examples/react/authenticated-routes/tsconfig.json @@ -2,6 +2,8 @@ "compilerOptions": { "strict": true, "esModuleInterop": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler" } } diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index cf819d6a10..0303319e12 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/basic-default-search-params/tsconfig.json b/examples/react/basic-default-search-params/tsconfig.json index c9e17e2b68..f5a6cae049 100644 --- a/examples/react/basic-default-search-params/tsconfig.json +++ b/examples/react/basic-default-search-params/tsconfig.json @@ -2,6 +2,8 @@ "compilerOptions": { "strict": true, "esModuleInterop": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler" } } diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 0150e11bab..c97eee0cd1 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index e427a5d45d..fe78946544 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite", "test:e2e": "playwright test --project=chromium" diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index e4ed13486b..5b9e9bb6a9 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite", "test:e2e": "playwright test --project=chromium" diff --git a/examples/react/basic-react-query-file-based/tsconfig.json b/examples/react/basic-react-query-file-based/tsconfig.json index c9e17e2b68..f5a6cae049 100644 --- a/examples/react/basic-react-query-file-based/tsconfig.json +++ b/examples/react/basic-react-query-file-based/tsconfig.json @@ -2,6 +2,8 @@ "compilerOptions": { "strict": true, "esModuleInterop": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler" } } diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index e29dbe9f37..212f8aa3b7 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite", "test:e2e": "playwright test --project=chromium" diff --git a/examples/react/basic-react-query/tsconfig.json b/examples/react/basic-react-query/tsconfig.json index c9e17e2b68..0d2a31a7d7 100644 --- a/examples/react/basic-react-query/tsconfig.json +++ b/examples/react/basic-react-query/tsconfig.json @@ -2,6 +2,9 @@ "compilerOptions": { "strict": true, "esModuleInterop": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", + "module": "ESNext" } } diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index aced91f676..b9d404475f 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite", "test:e2e": "playwright test --project=chromium" diff --git a/examples/react/basic-virtual-file-based/tsconfig.json b/examples/react/basic-virtual-file-based/tsconfig.json index e2241c355e..3c2cd577d6 100644 --- a/examples/react/basic-virtual-file-based/tsconfig.json +++ b/examples/react/basic-virtual-file-based/tsconfig.json @@ -4,6 +4,7 @@ "esModuleInterop": true, "jsx": "react-jsx", "module": "Preserve", - "moduleResolution": "Bundler" + "moduleResolution": "Bundler", + "target": "ESNext" } } diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index d12e1129a0..036e4e6c32 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/basic-virtual-inside-file-based/tsconfig.json b/examples/react/basic-virtual-inside-file-based/tsconfig.json index e2241c355e..4c7f4aeb83 100644 --- a/examples/react/basic-virtual-inside-file-based/tsconfig.json +++ b/examples/react/basic-virtual-inside-file-based/tsconfig.json @@ -3,6 +3,7 @@ "strict": true, "esModuleInterop": true, "jsx": "react-jsx", + "target": "ESNext", "module": "Preserve", "moduleResolution": "Bundler" } diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 9aa7ec3733..7a861c65c7 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite", "test:e2e": "playwright test --project=chromium" diff --git a/examples/react/basic/tsconfig.json b/examples/react/basic/tsconfig.json index c9e17e2b68..0d2a31a7d7 100644 --- a/examples/react/basic/tsconfig.json +++ b/examples/react/basic/tsconfig.json @@ -2,6 +2,9 @@ "compilerOptions": { "strict": true, "esModuleInterop": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", + "module": "ESNext" } } diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index a55bf09a92..ae9a3c7229 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 53cc173367..bf6e29a94d 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -4,14 +4,14 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/react-router": "^1.56.2", + "@tanstack/router-devtools": "^1.56.2", + "@tanstack/router-plugin": "^1.56.2", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/src/routes/dashboard.users.tsx b/examples/react/kitchen-sink-file-based/src/routes/dashboard.users.tsx index 9a0d2e32f8..1de6c892f1 100644 --- a/examples/react/kitchen-sink-file-based/src/routes/dashboard.users.tsx +++ b/examples/react/kitchen-sink-file-based/src/routes/dashboard.users.tsx @@ -124,10 +124,9 @@ function UsersComponent() { {user.name}{' '} ({ - ...d, + search={{ userId: user.id, - })} + }} pending > {(match) => } diff --git a/examples/react/kitchen-sink-file-based/tsconfig.json b/examples/react/kitchen-sink-file-based/tsconfig.json index c9e17e2b68..0d2a31a7d7 100644 --- a/examples/react/kitchen-sink-file-based/tsconfig.json +++ b/examples/react/kitchen-sink-file-based/tsconfig.json @@ -2,6 +2,9 @@ "compilerOptions": { "strict": true, "esModuleInterop": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", + "module": "ESNext" } } diff --git a/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.users.tsx b/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.users.tsx index 3c41d5c3b6..6814d5b93f 100644 --- a/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.users.tsx +++ b/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.users.tsx @@ -139,10 +139,9 @@ function UsersComponent() { {user.name}{' '} ({ - ...d, + search={{ userId: user.id, - })} + }} pending > {(match) => } diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 58e0777b3c..f2eec86095 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/kitchen-sink-react-query/src/main.tsx b/examples/react/kitchen-sink-react-query/src/main.tsx index 808a071fb7..d0895cfce6 100644 --- a/examples/react/kitchen-sink-react-query/src/main.tsx +++ b/examples/react/kitchen-sink-react-query/src/main.tsx @@ -72,7 +72,13 @@ const usersQueryOptions = ({ const userQueryOptions = (userId: number) => queryOptions({ queryKey: ['users', userId], - queryFn: () => fetchUserById(userId), + queryFn: async () => { + const user = await fetchUserById(userId) + if (!user) { + throw new Error('User not found.') + } + return user + }, }) const useCreateInvoiceMutation = () => { @@ -648,10 +654,9 @@ function UsersComponent() { {user.name}{' '} ({ - ...d, + search={{ userId: user.id, - })} + }} pending > {(match) => } diff --git a/examples/react/kitchen-sink-react-query/tsconfig.json b/examples/react/kitchen-sink-react-query/tsconfig.json index c9e17e2b68..0d2a31a7d7 100644 --- a/examples/react/kitchen-sink-react-query/tsconfig.json +++ b/examples/react/kitchen-sink-react-query/tsconfig.json @@ -2,6 +2,9 @@ "compilerOptions": { "strict": true, "esModuleInterop": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", + "module": "ESNext" } } diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index fac506e670..43bd507011 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/kitchen-sink/src/main.tsx b/examples/react/kitchen-sink/src/main.tsx index 5655916701..ee8cc5a259 100644 --- a/examples/react/kitchen-sink/src/main.tsx +++ b/examples/react/kitchen-sink/src/main.tsx @@ -555,10 +555,9 @@ function UsersComponent() { {user.name}{' '} ({ - ...d, + search={{ userId: user.id, - })} + }} pending > {(match) => } diff --git a/examples/react/kitchen-sink/tsconfig.json b/examples/react/kitchen-sink/tsconfig.json index c9e17e2b68..0d2a31a7d7 100644 --- a/examples/react/kitchen-sink/tsconfig.json +++ b/examples/react/kitchen-sink/tsconfig.json @@ -2,6 +2,9 @@ "compilerOptions": { "strict": true, "esModuleInterop": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", + "module": "ESNext" } } diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 607866b044..31ca6b1de7 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite", "gen": "node ./src/createRoutes.mjs", diff --git a/examples/react/large-file-based/tsconfig.json b/examples/react/large-file-based/tsconfig.json index eb34d24255..3435721cc4 100644 --- a/examples/react/large-file-based/tsconfig.json +++ b/examples/react/large-file-based/tsconfig.json @@ -3,6 +3,8 @@ "strict": true, "esModuleInterop": true, "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", "noEmit": true, "skipLibCheck": true } diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index d1b89b682c..77ceed253d 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/location-masking/src/main.tsx b/examples/react/location-masking/src/main.tsx index 6f03d95379..f82c620377 100644 --- a/examples/react/location-masking/src/main.tsx +++ b/examples/react/location-masking/src/main.tsx @@ -277,6 +277,7 @@ function PhotoModalComponent() { >
diff --git a/examples/react/location-masking/tsconfig.json b/examples/react/location-masking/tsconfig.json index c9e17e2b68..0d2a31a7d7 100644 --- a/examples/react/location-masking/tsconfig.json +++ b/examples/react/location-masking/tsconfig.json @@ -2,6 +2,9 @@ "compilerOptions": { "strict": true, "esModuleInterop": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", + "module": "ESNext" } } diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 5b7b84102e..47db5b0240 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index faa77c56c4..2330b6db6d 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 112e6be854..72cec06363 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index e300d7eceb..d360c265d2 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/scroll-restoration/tsconfig.json b/examples/react/scroll-restoration/tsconfig.json index c9e17e2b68..f5a6cae049 100644 --- a/examples/react/scroll-restoration/tsconfig.json +++ b/examples/react/scroll-restoration/tsconfig.json @@ -2,6 +2,8 @@ "compilerOptions": { "strict": true, "esModuleInterop": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler" } } diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 017e0c018c..201b2c38de 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/search-validator-adapters/tsconfig.json b/examples/react/search-validator-adapters/tsconfig.json index c9e17e2b68..44c53edd67 100644 --- a/examples/react/search-validator-adapters/tsconfig.json +++ b/examples/react/search-validator-adapters/tsconfig.json @@ -2,6 +2,10 @@ "compilerOptions": { "strict": true, "esModuleInterop": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", + "module": "ESNext", + "skipLibCheck": true } } diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 2600819933..71cc17bf3e 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "vite --port=3001", - "build": "vite build", + "build": "vite build && tsc --noEmit", "serve": "vite preview", "start": "vite" }, diff --git a/examples/react/with-trpc-react-query/tsconfig.json b/examples/react/with-trpc-react-query/tsconfig.json index b50d8070ec..8db94c0f38 100644 --- a/examples/react/with-trpc-react-query/tsconfig.json +++ b/examples/react/with-trpc-react-query/tsconfig.json @@ -3,6 +3,8 @@ "strict": true, "esModuleInterop": true, "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", "skipLibCheck": true } } diff --git a/examples/react/with-trpc/tsconfig.json b/examples/react/with-trpc/tsconfig.json index b50d8070ec..8db94c0f38 100644 --- a/examples/react/with-trpc/tsconfig.json +++ b/examples/react/with-trpc/tsconfig.json @@ -3,6 +3,8 @@ "strict": true, "esModuleInterop": true, "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", "skipLibCheck": true } } diff --git a/packages/virtual-file-routes/tsconfig.json b/packages/virtual-file-routes/tsconfig.json index 041d9fe354..cdb76f0e64 100644 --- a/packages/virtual-file-routes/tsconfig.json +++ b/packages/virtual-file-routes/tsconfig.json @@ -3,5 +3,7 @@ "compilerOptions": { "jsx": "react-jsx" }, + "target": "ESNext", + "moduleResolution": "Bundler", "include": ["src", "tests", "vite.config.ts"] } From 0e16429b0d8af8d65040c06af3b895f4e10b310a Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Mon, 9 Sep 2024 13:38:48 +1200 Subject: [PATCH 072/154] test(react-router): `onEnter` should have the router context defined (#2295) * test(react-router): `onEnter` should have the router context defined * test(react-router): remove the `waitFor` call --- packages/react-router/tests/route.test.tsx | 65 ++++++++++++++++++++-- 1 file changed, 60 insertions(+), 5 deletions(-) diff --git a/packages/react-router/tests/route.test.tsx b/packages/react-router/tests/route.test.tsx index a5a9a018b2..e09642ba35 100644 --- a/packages/react-router/tests/route.test.tsx +++ b/packages/react-router/tests/route.test.tsx @@ -1,13 +1,21 @@ -/* eslint-disable */ -import { describe, it, expect } from 'vitest' +import React from 'react' +import { afterEach, describe, expect, it, vi } from 'vitest' +import { cleanup, render, screen } from '@testing-library/react' + import { - getRouteApi, - createRoute, + RouterProvider, createRootRoute, + createRoute, createRouter, + getRouteApi, useNavigate, } from '../src' -import React from 'react' + +afterEach(() => { + vi.resetAllMocks() + window.history.replaceState(null, 'root', '/') + cleanup() +}) describe('getRouteApi', () => { it('should have the useMatch hook', () => { @@ -139,3 +147,50 @@ describe('throws invariant exception when trying to access properties before `cr }) }) */ + +describe('onEnter event', () => { + it('should have router context defined in router.load()', async () => { + const fn = vi.fn() + const rootRoute = createRootRoute() + const indexRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/', + component: () => { + return

Index

+ }, + onEnter: ({ context }) => { + fn(context) + }, + }) + const routeTree = rootRoute.addChildren([indexRoute]) + const router = createRouter({ routeTree, context: { foo: 'bar' } }) + + await router.load() + + expect(fn).toHaveBeenCalledWith({ foo: 'bar' }) + }) + + it('should have router context defined in ', async () => { + const fn = vi.fn() + const rootRoute = createRootRoute() + const indexRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/', + component: () => { + return

Index

+ }, + onEnter: ({ context }) => { + fn(context) + }, + }) + const routeTree = rootRoute.addChildren([indexRoute]) + const router = createRouter({ routeTree, context: { foo: 'bar' } }) + + render() + + const indexElem = await screen.findByText('Index') + expect(indexElem).toBeInTheDocument() + + expect(fn).toHaveBeenCalledWith({ foo: 'bar' }) + }) +}) From ca9b4beb299d9a4f5ee3880df7871e7f6ec26153 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Tue, 10 Sep 2024 00:41:44 +0200 Subject: [PATCH 073/154] feat(create-router): added project generator to scaffold router projects (#2300) --- docs/framework/react/quick-start.md | 28 +- .../quickstart-rspack-file-based/package.json | 2 +- .../package.json | 2 +- packages/create-router/build.config.ts | 13 + packages/create-router/eslint.config.js | 5 + packages/create-router/index.js | 3 + packages/create-router/package.json | 120 + packages/create-router/src/bundler/index.ts | 16 + packages/create-router/src/bundler/rspack.ts | 33 + packages/create-router/src/bundler/vite.ts | 28 + packages/create-router/src/bundler/webpack.ts | 30 + packages/create-router/src/cli.ts | 82 + packages/create-router/src/constants.ts | 21 + packages/create-router/src/core.ts | 27 + packages/create-router/src/create.ts | 124 + packages/create-router/src/index.ts | 95 + packages/create-router/src/types.ts | 14 + .../src/utils/copyTemplateFiles.ts | 52 + .../src/utils/getPackageManager.ts | 16 + .../src/utils/getPeerDependencyVersion.ts | 12 + .../src/utils/isEmptyDirectory.ts | 6 + .../src/utils/runPackageManagerCommand.ts | 48 + .../src/utils/validateProjectName.ts | 25 + .../src/utils/writeTemplateFile.ts | 17 + .../bundler/rspack/rsbuild.config.ts | 15 + .../templates/bundler/vite/vite.config.ts | 8 + .../templates/bundler/webpack/_dot_swcrc | 15 + .../bundler/webpack/webpack.config.js | 45 + .../templates/core/_dot_gitignore | 13 + .../create-router/templates/core/index.html | 24 + .../create-router/templates/core/src/main.tsx | 24 + .../templates/core/src/routes/__root.tsx | 36 + .../templates/core/src/routes/about.tsx | 14 + .../templates/core/src/routes/index.tsx | 14 + .../templates/core/tsconfig.json | 7 + packages/create-router/tsconfig.json | 10 + packages/react-cross-context/vite.config.ts | 3 +- .../react-router-with-query/vite.config.ts | 3 +- packages/react-router/tests/loaders.test.tsx | 2 +- packages/react-router/vite.config.ts | 3 +- packages/router-devtools/vite.config.ts | 3 +- packages/start/vite.config.ts | 3 +- pnpm-lock.yaml | 2307 ++++++++++++++--- scripts/publish.js | 4 + 44 files changed, 3042 insertions(+), 330 deletions(-) create mode 100644 packages/create-router/build.config.ts create mode 100644 packages/create-router/eslint.config.js create mode 100755 packages/create-router/index.js create mode 100644 packages/create-router/package.json create mode 100644 packages/create-router/src/bundler/index.ts create mode 100644 packages/create-router/src/bundler/rspack.ts create mode 100644 packages/create-router/src/bundler/vite.ts create mode 100644 packages/create-router/src/bundler/webpack.ts create mode 100644 packages/create-router/src/cli.ts create mode 100644 packages/create-router/src/constants.ts create mode 100644 packages/create-router/src/core.ts create mode 100644 packages/create-router/src/create.ts create mode 100644 packages/create-router/src/index.ts create mode 100644 packages/create-router/src/types.ts create mode 100644 packages/create-router/src/utils/copyTemplateFiles.ts create mode 100644 packages/create-router/src/utils/getPackageManager.ts create mode 100644 packages/create-router/src/utils/getPeerDependencyVersion.ts create mode 100644 packages/create-router/src/utils/isEmptyDirectory.ts create mode 100644 packages/create-router/src/utils/runPackageManagerCommand.ts create mode 100644 packages/create-router/src/utils/validateProjectName.ts create mode 100644 packages/create-router/src/utils/writeTemplateFile.ts create mode 100644 packages/create-router/templates/bundler/rspack/rsbuild.config.ts create mode 100644 packages/create-router/templates/bundler/vite/vite.config.ts create mode 100644 packages/create-router/templates/bundler/webpack/_dot_swcrc create mode 100644 packages/create-router/templates/bundler/webpack/webpack.config.js create mode 100644 packages/create-router/templates/core/_dot_gitignore create mode 100644 packages/create-router/templates/core/index.html create mode 100644 packages/create-router/templates/core/src/main.tsx create mode 100644 packages/create-router/templates/core/src/routes/__root.tsx create mode 100644 packages/create-router/templates/core/src/routes/about.tsx create mode 100644 packages/create-router/templates/core/src/routes/index.tsx create mode 100644 packages/create-router/templates/core/tsconfig.json create mode 100644 packages/create-router/tsconfig.json diff --git a/docs/framework/react/quick-start.md b/docs/framework/react/quick-start.md index 07d08da9dd..3708012086 100644 --- a/docs/framework/react/quick-start.md +++ b/docs/framework/react/quick-start.md @@ -8,7 +8,23 @@ If you're feeling impatient and prefer to skip all of our wonderful documentatio File based route generation (through Vite, and other supported bundlers) is the recommended way to use TanStack Router as it provides the best experience, performance, and ergonomics for the least amount of effort. -### Install the Vite Plugin and the Router Devtools +### Scaffolding Your First TanStack Router Project + +```bash +npm create @tanstack/router@latest +# or +pnpm create @tanstack/router +# or +yarn create @tanstack/router +# or +bun create @tanstack/router +``` + +Follow the prompts to setup the project. + +### Manual Setup + +#### Install the Vite Plugin and the Router Devtools ```bash npm i -D @tanstack/router-plugin @tanstack/router-devtools @@ -20,7 +36,7 @@ yarn add -D @tanstack/router-plugin @tanstack/router-devtools bun add -D @tanstack/router-plugin @tanstack/router-devtools ``` -### Configure the Vite Plugin +#### Configure the Vite Plugin ```tsx // vite.config.ts @@ -50,7 +66,7 @@ Create the following files: > 🧠 Route files with the `.lazy.tsx` extension are lazy loaded via separate bundles to keep the main bundle size as lean as possible. -### `src/routes/__root.tsx` +#### `src/routes/__root.tsx` ```tsx import { createRootRoute, Link, Outlet } from '@tanstack/react-router' @@ -75,7 +91,7 @@ export const Route = createRootRoute({ }) ``` -### `src/routes/index.lazy.tsx` +#### `src/routes/index.lazy.tsx` ```tsx import { createLazyFileRoute } from '@tanstack/react-router' @@ -93,7 +109,7 @@ function Index() { } ``` -### `src/routes/about.lazy.tsx` +#### `src/routes/about.lazy.tsx` ```tsx import { createLazyFileRoute } from '@tanstack/react-router' @@ -107,7 +123,7 @@ function About() { } ``` -### `src/main.tsx` +#### `src/main.tsx` Regardless if you are using the `@tanstack/router-plugin` package or manually running the `tsr watch`/`tsr generate` commands from your package scripts, the following file will be generated for you at `src/routeTree.gen.ts`. diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 967840f49a..9d81eea5b6 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "rsbuild dev --port 3001", - "build": "rsbuild build", + "build": "rsbuild build && tsc --noEmit", "preview": "rsbuild preview" }, "dependencies": { diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index ccc8141b48..d2b01a08a3 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "dev": "webpack serve --port 3001 --no-open", - "build": "webpack build" + "build": "webpack build && tsc --noEmit" }, "dependencies": { "@tanstack/react-router": "^1.56.5", diff --git a/packages/create-router/build.config.ts b/packages/create-router/build.config.ts new file mode 100644 index 0000000000..e61c91fb60 --- /dev/null +++ b/packages/create-router/build.config.ts @@ -0,0 +1,13 @@ +import { defineBuildConfig } from 'unbuild' + +export default defineBuildConfig({ + entries: ['src/index'], + clean: true, + rollup: { + inlineDependencies: true, + esbuild: { + target: 'node18', + minify: true, + }, + }, +}) diff --git a/packages/create-router/eslint.config.js b/packages/create-router/eslint.config.js new file mode 100644 index 0000000000..8ce6ad05fc --- /dev/null +++ b/packages/create-router/eslint.config.js @@ -0,0 +1,5 @@ +// @ts-check + +import rootConfig from '../../eslint.config.js' + +export default [...rootConfig] diff --git a/packages/create-router/index.js b/packages/create-router/index.js new file mode 100755 index 0000000000..f5e8e064a6 --- /dev/null +++ b/packages/create-router/index.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +import './dist/index.mjs' diff --git a/packages/create-router/package.json b/packages/create-router/package.json new file mode 100644 index 0000000000..e124ec104d --- /dev/null +++ b/packages/create-router/package.json @@ -0,0 +1,120 @@ +{ + "name": "@tanstack/create-router", + "version": "1.56.0", + "description": "Modern and scalable routing for React applications", + "author": "Tanner Linsley", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/router.git", + "directory": "packages/create-router" + }, + "homepage": "https://tanstack.com/router", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "bin": { + "create-router": "index.js" + }, + "scripts": { + "dev": "unbuild --stub", + "clean": "rimraf ./dist && rimraf ./coverage", + "test:eslint": "eslint ./src", + "build": "unbuild" + }, + "type": "module", + "files": [ + "index.js", + "templates", + "dist" + ], + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "devDependencies": { + "@inquirer/prompts": "^5.5.0", + "@types/cross-spawn": "^6.0.6", + "@types/validate-npm-package-name": "^4.0.2", + "commander": "^12.1.0", + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.2", + "picocolors": "^1.1.0", + "unbuild": "^2.0.0", + "validate-npm-package-name": "^5.0.1", + "yocto-spinner": "^0.1.0" + }, + "peerDependencies": { + "@rsbuild/core": "1.0.1-rc.0", + "@rsbuild/plugin-react": "1.0.1-rc.0", + "@swc/core": "^1.7.6", + "@tanstack/react-router": "workspace:*", + "@tanstack/router-devtools": "workspace:*", + "@tanstack/router-plugin": "workspace:*", + "@types/react": "^18.2.47", + "@types/react-dom": "^18.2.18", + "@vitejs/plugin-react": "^4.3.1", + "html-webpack-plugin": "^5.6.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "swc-loader": "^0.2.6", + "typescript": "^5.5.3", + "vite": "^5.4.3", + "webpack": "^5.93.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.0.4" + }, + "peerDependenciesMeta": { + "@tanstack/react-router": { + "optional": true + }, + "@tanstack/router-devtools": { + "optional": true + }, + "@tanstack/router-plugin": { + "optional": true + }, + "@vitejs/plugin-react": { + "optional": true + }, + "vite": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "html-webpack-plugin": { + "optional": true + }, + "swc-loader": { + "optional": true + }, + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "@rsbuild/core": { + "optional": true + }, + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, + "typescript": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } +} diff --git a/packages/create-router/src/bundler/index.ts b/packages/create-router/src/bundler/index.ts new file mode 100644 index 0000000000..78a0946fb4 --- /dev/null +++ b/packages/create-router/src/bundler/index.ts @@ -0,0 +1,16 @@ +import { apply as applyVite } from './vite' +import { apply as applyRspack } from './rspack' +import { apply as applyWebpack } from './webpack' +import type { Bundler } from '../constants' +import type { ApplyParams } from '../types' + +export function apply(bundler: Bundler, params: ApplyParams) { + switch (bundler) { + case 'vite': + return applyVite(params) + case 'rspack': + return applyRspack(params) + case 'webpack': + return applyWebpack(params) + } +} diff --git a/packages/create-router/src/bundler/rspack.ts b/packages/create-router/src/bundler/rspack.ts new file mode 100644 index 0000000000..f3bf258447 --- /dev/null +++ b/packages/create-router/src/bundler/rspack.ts @@ -0,0 +1,33 @@ +import { copyTemplateFiles } from '../utils/copyTemplateFiles' +import type { ApplyParams, BundlerResult, PeerDependency } from '../types' + +export const scripts = { + dev: 'rsbuild dev --port 3001', + build: 'rsbuild build', + preview: 'rsbuild preview', +} as const + +export const devDependencies = [ + '@rsbuild/core', + '@rsbuild/plugin-react', +] as const satisfies Array + +export const overrides = { + '@tanstack/router-plugin': { + '@rsbuild/core': '$@rsbuild/core', + }, +} +export async function apply({ + targetFolder, +}: ApplyParams): Promise { + await copyTemplateFiles({ + file: '**/*', + sourceFolder: 'bundler/rspack', + targetFolder, + }) + return { + scripts, + devDependencies, + overrides, + } +} diff --git a/packages/create-router/src/bundler/vite.ts b/packages/create-router/src/bundler/vite.ts new file mode 100644 index 0000000000..b0c4d042da --- /dev/null +++ b/packages/create-router/src/bundler/vite.ts @@ -0,0 +1,28 @@ +import { copyTemplateFiles } from '../utils/copyTemplateFiles' +import type { ApplyParams, BundlerResult, PeerDependency } from '../types' + +export const scripts = { + dev: 'vite --port=3001', + build: 'vite build', + serve: 'vite preview', + start: 'vite', +} as const + +export const devDependencies = [ + '@vitejs/plugin-react', + 'vite', +] as const satisfies Array + +export async function apply({ + targetFolder, +}: ApplyParams): Promise { + await copyTemplateFiles({ + file: '**/*', + sourceFolder: 'bundler/vite', + targetFolder, + }) + return { + scripts, + devDependencies, + } +} diff --git a/packages/create-router/src/bundler/webpack.ts b/packages/create-router/src/bundler/webpack.ts new file mode 100644 index 0000000000..2e6d198e25 --- /dev/null +++ b/packages/create-router/src/bundler/webpack.ts @@ -0,0 +1,30 @@ +import { copyTemplateFiles } from '../utils/copyTemplateFiles' +import type { ApplyParams, BundlerResult, PeerDependency } from '../types' + +export const scripts = { + dev: 'webpack serve --port 3001 --no-open', + build: 'webpack build', +} as const + +export const devDependencies = [ + '@swc/core', + 'html-webpack-plugin', + 'swc-loader', + 'webpack', + 'webpack-cli', + 'webpack-dev-server', +] as const satisfies Array + +export async function apply({ + targetFolder, +}: ApplyParams): Promise { + await copyTemplateFiles({ + file: '**/*', + sourceFolder: 'bundler/webpack', + targetFolder, + }) + return { + scripts, + devDependencies, + } +} diff --git a/packages/create-router/src/cli.ts b/packages/create-router/src/cli.ts new file mode 100644 index 0000000000..d92efe1c95 --- /dev/null +++ b/packages/create-router/src/cli.ts @@ -0,0 +1,82 @@ +import { basename, resolve } from 'node:path' +import { Command, InvalidArgumentError } from 'commander' +import packageJson from '../package.json' +import { + NAME, + SUPPORTED_BUNDLERS, + SUPPORTED_PACKAGE_MANAGERS, +} from './constants' +import { validateProjectName } from './utils/validateProjectName' +import { getPackageManager } from './utils/getPackageManager' +import type { Bundler, PackageManager } from './constants' + +let directory: string | undefined + +export const command = new Command(NAME) + .version( + packageJson.version, + '-v, --version', + `Output the current version of ${NAME}.`, + ) + .argument('[directory]') + .usage('[directory] [options]') + .helpOption('-h, --help', 'Display this help message.') + .option( + `--package-manager <${SUPPORTED_PACKAGE_MANAGERS.join('|')}>`, + `Explicitly tell the CLI to use this package manager`, + (value) => { + if (!SUPPORTED_PACKAGE_MANAGERS.includes(value as PackageManager)) { + throw new InvalidArgumentError( + `Invalid package manager: ${value}. Only the following are allowed: ${SUPPORTED_PACKAGE_MANAGERS.join(', ')}`, + ) + } + return value as PackageManager + }, + getPackageManager(), + ) + .option( + `--bundler <${SUPPORTED_BUNDLERS.join('|')}>`, + `use this bundler (${SUPPORTED_BUNDLERS.join(', ')})`, + (value) => { + if (!SUPPORTED_BUNDLERS.includes(value as Bundler)) { + throw new InvalidArgumentError( + `Invalid bundler: ${value}. Only the following are allowed: ${SUPPORTED_BUNDLERS.join(', ')}`, + ) + } + return value as Bundler + }, + ) + .option( + '--skip-install', + 'Explicitly tell the CLI to skip installing packages.', + false, + ) + .option( + '--skip-build', + 'Explicitly tell the CLI to skip building the newly generated project.', + false, + ) + .action((name) => { + if (typeof name === 'string') { + name = name.trim() + } + if (name) { + const validation = validateProjectName(basename(resolve(name))) + if (!validation.valid) { + throw new InvalidArgumentError( + `Invalid project name: ${validation.problems[0]}`, + ) + } + directory = name + } + }) + .parse() + +const options = command.opts<{ + packageManager: PackageManager | undefined + bundler: Bundler | undefined + skipInstall: boolean + skipBuild: false +}>() + +export const cli = { options, args: command.args, directory } diff --git a/packages/create-router/src/constants.ts b/packages/create-router/src/constants.ts new file mode 100644 index 0000000000..5ed4f5711d --- /dev/null +++ b/packages/create-router/src/constants.ts @@ -0,0 +1,21 @@ +import { fileURLToPath } from 'node:url' +import { resolve } from 'node:path' + +export const TEMPLATES_FOLDER = resolve( + fileURLToPath(import.meta.url), + '../../templates', +) +export const NAME = 'create-router' + +export const SUPPORTED_PACKAGE_MANAGERS = [ + 'npm', + 'yarn', + 'pnpm', + 'bun', +] as const +export type PackageManager = (typeof SUPPORTED_PACKAGE_MANAGERS)[number] +export const DEFAULT_PACKAGE_MANAGER: PackageManager = 'npm' + +export const SUPPORTED_BUNDLERS = ['vite', 'webpack', 'rspack'] as const +export type Bundler = (typeof SUPPORTED_BUNDLERS)[number] +export const DEFAULT_BUNDLER: Bundler = 'vite' diff --git a/packages/create-router/src/core.ts b/packages/create-router/src/core.ts new file mode 100644 index 0000000000..2ac98d9c0f --- /dev/null +++ b/packages/create-router/src/core.ts @@ -0,0 +1,27 @@ +import { copyTemplateFiles } from './utils/copyTemplateFiles' +import type { ApplyParams, PeerDependency } from './types' + +export const dependencies = [ + '@tanstack/react-router', + '@tanstack/router-devtools', + 'react', + 'react-dom', +] as const satisfies Array +export const devDependencies = [ + '@types/react', + '@types/react-dom', + '@tanstack/router-plugin', +] as const satisfies Array + +export const scripts = { + typecheck: 'tsc --noEmit', +} + +export async function apply({ targetFolder }: ApplyParams) { + await copyTemplateFiles({ file: '**/*', sourceFolder: 'core', targetFolder }) + return { + dependencies, + devDependencies, + scripts, + } +} diff --git a/packages/create-router/src/create.ts b/packages/create-router/src/create.ts new file mode 100644 index 0000000000..a897cd1799 --- /dev/null +++ b/packages/create-router/src/create.ts @@ -0,0 +1,124 @@ +import { mkdir } from 'node:fs/promises' +import yoctoSpinner from 'yocto-spinner' +import colors from 'picocolors' +import { apply as applyCore } from './core' +import { apply as applyBundler } from './bundler' +import { getDependenciesWithVersion } from './utils/getPeerDependencyVersion' +import { writeTemplateFile } from './utils/writeTemplateFile' +import { build, install } from './utils/runPackageManagerCommand' +import type { Bundler, PackageManager } from './constants' +import type { PeerDependency } from './types' + +interface GeneratePackageJsonParams { + name: string + scripts: Record + devDependencies: Array + dependencies: Array + overrides?: Partial< + Record>> + > +} +function generatePackageJson({ + name, + scripts, + dependencies, + devDependencies, + overrides, +}: GeneratePackageJsonParams) { + return { + name, + version: '0.0.0', + private: true, + type: 'module', + scripts, + devDependencies: getDependenciesWithVersion(devDependencies), + dependencies: getDependenciesWithVersion(dependencies), + overrides, + } +} + +export interface CreateParams { + targetFolder: string + projectName: string + skipInstall: boolean + skipBuild: boolean + bundler: Bundler + packageManager: PackageManager +} +export async function create({ + targetFolder, + projectName, + skipInstall, + skipBuild, + bundler, + packageManager, +}: CreateParams) { + const originalCwd = process.cwd() + await mkdir(targetFolder, { recursive: true }) + process.chdir(targetFolder) + + const coreResult = await applyCore({ targetFolder }) + const bundlerResult = await applyBundler(bundler, { targetFolder }) + + const packageJson = generatePackageJson({ + name: projectName, + scripts: { ...coreResult.scripts, ...bundlerResult.scripts }, + dependencies: coreResult.dependencies, + devDependencies: [ + ...coreResult.devDependencies, + ...bundlerResult.devDependencies, + ], + overrides: bundlerResult.overrides, + }) + + await writeTemplateFile('package.json', targetFolder, packageJson) + + if (skipInstall) { + console.log( + `${colors.green('Success')} Created ${projectName} at ${targetFolder}`, + ) + return + } + const installSpinner = yoctoSpinner({ + text: 'installing dependencies', + }).start() + try { + await install(packageManager) + installSpinner.success('dependencies installed') + } catch (e) { + console.error(e) + installSpinner.error('failed to install dependencies') + process.exit(1) + } + + if (skipBuild) { + console.log( + `${colors.green('Success')} Created ${projectName} at ${targetFolder}`, + ) + return + } + + const buildSpinner = yoctoSpinner({ text: 'building project' }).start() + try { + await build(packageManager) + buildSpinner.success('dependencies installed') + } catch (e) { + console.error(e) + buildSpinner.error('failed to build project') + process.exit(1) + } + + console.log( + `${colors.green('Success')} Created ${projectName} at ${targetFolder}`, + ) + console.log() + const needsCd = originalCwd !== targetFolder + if (needsCd) { + console.log('now go to your project using:') + console.log(colors.cyan(` cd ${targetFolder}`)) + console.log() + } + console.log(`${needsCd ? 'then ' : ''}start the development server via:`) + console.log(colors.cyan(` ${packageManager} run dev`)) + console.log() +} diff --git a/packages/create-router/src/index.ts b/packages/create-router/src/index.ts new file mode 100644 index 0000000000..443a90f6e8 --- /dev/null +++ b/packages/create-router/src/index.ts @@ -0,0 +1,95 @@ +import { basename, resolve } from 'node:path' +import { existsSync } from 'node:fs' + +import { confirm, input, select } from '@inquirer/prompts' +import { cli } from './cli' +import { + DEFAULT_BUNDLER, + DEFAULT_PACKAGE_MANAGER, + SUPPORTED_BUNDLERS, + SUPPORTED_PACKAGE_MANAGERS, +} from './constants' +import { validateProjectName } from './utils/validateProjectName' +import { create } from './create' +import { isEmptyDirectory } from './utils/isEmptyDirectory' + +async function main() { + // project cannot be built if packages are not installed + if (cli.options.skipInstall === true) { + cli.options.skipInstall = true + } + + if (!cli.options.packageManager) { + cli.options.packageManager = await select({ + message: 'Select a package manager', + choices: SUPPORTED_PACKAGE_MANAGERS.map((pm) => ({ value: pm })), + default: DEFAULT_PACKAGE_MANAGER, + }) + } + + if (!cli.directory) { + cli.directory = await input({ + message: 'Enter the project name', + default: 'my-router-app', + validate: (name) => { + const validation = validateProjectName(basename(resolve(name))) + if (validation.valid) { + return true + } + return 'Invalid project name: ' + validation.problems[0] + }, + }) + } + + do { + if (!cli.options.bundler) { + cli.options.bundler = await select({ + message: 'Select a bundler', + choices: SUPPORTED_BUNDLERS.map((bundler) => ({ value: bundler })), + default: DEFAULT_BUNDLER, + }) + } + + if (cli.options.bundler !== 'vite') { + const bundlerConfirmed = await confirm({ + message: + 'Are you sure you want to use this bundler? If you ever choose to adopt full-stack features with Start, Vite is currently required. Proceed anyway?', + }) + if (!bundlerConfirmed) { + cli.options.bundler = undefined + } + } + } while (cli.options.bundler === undefined) + + const targetFolder = resolve(cli.directory) + const projectName = basename(targetFolder) + + if (existsSync(targetFolder) && !(await isEmptyDirectory(targetFolder))) { + const dir = + cli.directory === '.' + ? 'Current directory' + : `Target directory "${targetFolder}"` + const message = `${dir} is not empty. Please choose how to proceed:` + const action = await select({ + message, + choices: [ + { name: 'Cancel', value: 'cancel' }, + { name: 'Ignore files and continue', value: 'ignore' }, + ], + }) + if (action === 'cancel') { + process.exit(1) + } + } + + await create({ + targetFolder, + projectName, + skipInstall: cli.options.skipInstall, + skipBuild: cli.options.skipBuild, + packageManager: cli.options.packageManager, + bundler: cli.options.bundler, + }) +} + +main().catch(console.error) diff --git a/packages/create-router/src/types.ts b/packages/create-router/src/types.ts new file mode 100644 index 0000000000..5cc66170c8 --- /dev/null +++ b/packages/create-router/src/types.ts @@ -0,0 +1,14 @@ +import type packageJson from '../package.json' + +export interface ApplyParams { + targetFolder: string +} + +export type PeerDependency = keyof typeof packageJson.peerDependencies + +export interface BundlerResult { + scripts: Record + devDependencies: Array + dependencies?: Array + overrides?: Partial>>> +} diff --git a/packages/create-router/src/utils/copyTemplateFiles.ts b/packages/create-router/src/utils/copyTemplateFiles.ts new file mode 100644 index 0000000000..75c379a66a --- /dev/null +++ b/packages/create-router/src/utils/copyTemplateFiles.ts @@ -0,0 +1,52 @@ +import { copyFile, mkdir, readdir, stat } from 'node:fs/promises' +import { resolve } from 'node:path' +import fastGlob from 'fast-glob' +import { TEMPLATES_FOLDER } from '../constants' + +/** + * all files prefixed with `_dot_` will be copied over to the created project with a `.` instead of the `_dot_` + */ +const DOT_PREFIX = '_dot_' + +interface CopyTemplateFilesParams { + file: string + sourceFolder: string + targetFolder: string +} +export async function copyTemplateFiles({ + file, + sourceFolder, + targetFolder, +}: CopyTemplateFilesParams) { + const files = await fastGlob.glob(file, { + cwd: resolve(TEMPLATES_FOLDER, sourceFolder), + onlyFiles: false, + }) + + for (const file of files) { + await copy( + resolve(TEMPLATES_FOLDER, sourceFolder, file), + resolve(targetFolder, file), + ) + } +} + +async function copyDir(srcDir: string, destDir: string) { + await mkdir(destDir, { recursive: true }) + const files = await readdir(srcDir) + for (const file of files) { + const srcFile = resolve(srcDir, file) + const destFile = resolve(destDir, file) + await copy(srcFile, destFile) + } +} + +async function copy(src: string, dest: string) { + const statResult = await stat(src) + const replacedDest = dest.replace(DOT_PREFIX, '.') + if (statResult.isDirectory()) { + copyDir(src, replacedDest) + } else { + await copyFile(src, replacedDest) + } +} diff --git a/packages/create-router/src/utils/getPackageManager.ts b/packages/create-router/src/utils/getPackageManager.ts new file mode 100644 index 0000000000..4bcb7b8032 --- /dev/null +++ b/packages/create-router/src/utils/getPackageManager.ts @@ -0,0 +1,16 @@ +import { SUPPORTED_PACKAGE_MANAGERS } from '../constants' +import type { PackageManager } from '../constants' + +export function getPackageManager(): PackageManager | undefined { + const userAgent = process.env.npm_config_user_agent + + if (userAgent === undefined) { + return undefined + } + + const packageManager = SUPPORTED_PACKAGE_MANAGERS.find((manager) => + userAgent.startsWith(manager), + ) + + return packageManager +} diff --git a/packages/create-router/src/utils/getPeerDependencyVersion.ts b/packages/create-router/src/utils/getPeerDependencyVersion.ts new file mode 100644 index 0000000000..2145755e9c --- /dev/null +++ b/packages/create-router/src/utils/getPeerDependencyVersion.ts @@ -0,0 +1,12 @@ +import packageJson from '../../package.json' +import type { PeerDependency } from '../types' + +export function getDependenciesWithVersion(deps: Array) { + return deps.reduce( + (acc, dep) => { + acc[dep] = packageJson.peerDependencies[dep] + return acc + }, + {} as Record, + ) +} diff --git a/packages/create-router/src/utils/isEmptyDirectory.ts b/packages/create-router/src/utils/isEmptyDirectory.ts new file mode 100644 index 0000000000..b317f645b7 --- /dev/null +++ b/packages/create-router/src/utils/isEmptyDirectory.ts @@ -0,0 +1,6 @@ +import { readdir } from 'node:fs/promises' + +export async function isEmptyDirectory(path: string) { + const files = await readdir(path) + return files.length === 0 || (files.length === 1 && files[0] === '.git') +} diff --git a/packages/create-router/src/utils/runPackageManagerCommand.ts b/packages/create-router/src/utils/runPackageManagerCommand.ts new file mode 100644 index 0000000000..89382fe99f --- /dev/null +++ b/packages/create-router/src/utils/runPackageManagerCommand.ts @@ -0,0 +1,48 @@ +import spawn from 'cross-spawn' +import type { PackageManager } from '../constants' + +export async function runPackageManagerCommand( + packageManager: PackageManager, + args: Array, + env: NodeJS.ProcessEnv = {}, +) { + return new Promise((resolve, reject) => { + const child = spawn(packageManager, args, { + env: { + ...process.env, + ...env, + }, + stdio: ['pipe', 'pipe', 'pipe'], + }) + let stderrBuffer = '' + let stdoutBuffer = '' + + child.stderr?.on('data', (data) => { + stderrBuffer += data + }) + + child.stdout?.on('data', (data) => { + stdoutBuffer += data + }) + + child.on('close', (code) => { + if (code !== 0) { + reject( + `"${packageManager} ${args.join(' ')}" failed ${stdoutBuffer} ${stderrBuffer}`, + ) + return + } + resolve() + }) + }) +} + +export async function install(packageManager: PackageManager) { + return runPackageManagerCommand(packageManager, ['install'], { + NODE_ENV: 'development', + }) +} + +export async function build(packageManager: PackageManager) { + return runPackageManagerCommand(packageManager, ['run', 'build']) +} diff --git a/packages/create-router/src/utils/validateProjectName.ts b/packages/create-router/src/utils/validateProjectName.ts new file mode 100644 index 0000000000..dc1366ab4a --- /dev/null +++ b/packages/create-router/src/utils/validateProjectName.ts @@ -0,0 +1,25 @@ +import validate from 'validate-npm-package-name' + +type ValidatationResult = + | { + valid: true + } + | { + valid: false + problems: Array + } + +export function validateProjectName(name: string): ValidatationResult { + const nameValidation = validate(name) + if (nameValidation.validForNewPackages) { + return { valid: true } + } + + return { + valid: false, + problems: [ + ...(nameValidation.errors || []), + ...(nameValidation.warnings || []), + ], + } +} diff --git a/packages/create-router/src/utils/writeTemplateFile.ts b/packages/create-router/src/utils/writeTemplateFile.ts new file mode 100644 index 0000000000..44ab7840a3 --- /dev/null +++ b/packages/create-router/src/utils/writeTemplateFile.ts @@ -0,0 +1,17 @@ +import { resolve } from 'node:path' +import { writeFile } from 'node:fs/promises' + +export async function writeTemplateFile( + file: string, + targetFolder: string, + content: unknown, +) { + const targetPath = resolve(targetFolder, file) + let contentToWrite: string + if (typeof content === 'string') { + contentToWrite = content + } else { + contentToWrite = JSON.stringify(content, null, 2) + } + await writeFile(targetPath, contentToWrite) +} diff --git a/packages/create-router/templates/bundler/rspack/rsbuild.config.ts b/packages/create-router/templates/bundler/rspack/rsbuild.config.ts new file mode 100644 index 0000000000..9abc1a9b92 --- /dev/null +++ b/packages/create-router/templates/bundler/rspack/rsbuild.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from '@rsbuild/core' +import { pluginReact } from '@rsbuild/plugin-react' +import { TanStackRouterRspack } from '@tanstack/router-plugin/rspack' + +export default defineConfig({ + plugins: [pluginReact()], + source: { + entry: { index: './src/main.tsx' }, + }, + tools: { + rspack: { + plugins: [TanStackRouterRspack()], + }, + }, +}) diff --git a/packages/create-router/templates/bundler/vite/vite.config.ts b/packages/create-router/templates/bundler/vite/vite.config.ts new file mode 100644 index 0000000000..ca17be445d --- /dev/null +++ b/packages/create-router/templates/bundler/vite/vite.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import { TanStackRouterVite } from '@tanstack/router-plugin/vite' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [TanStackRouterVite({}), react()], +}) diff --git a/packages/create-router/templates/bundler/webpack/_dot_swcrc b/packages/create-router/templates/bundler/webpack/_dot_swcrc new file mode 100644 index 0000000000..16ef25594c --- /dev/null +++ b/packages/create-router/templates/bundler/webpack/_dot_swcrc @@ -0,0 +1,15 @@ +{ + "$schema": "https://swc.rs/schema.json", + "jsc": { + "target": "es2015", + "parser": { + "syntax": "typescript", + "tsx": true + }, + "transform": { + "react": { + "runtime": "automatic" + } + } + } +} diff --git a/packages/create-router/templates/bundler/webpack/webpack.config.js b/packages/create-router/templates/bundler/webpack/webpack.config.js new file mode 100644 index 0000000000..46e0b36fa7 --- /dev/null +++ b/packages/create-router/templates/bundler/webpack/webpack.config.js @@ -0,0 +1,45 @@ +import path from 'path' +import { fileURLToPath } from 'url' +import HtmlWebpackPlugin from 'html-webpack-plugin' +import { TanStackRouterWebpack } from '@tanstack/router-plugin/webpack' + +const __dirname = fileURLToPath(new URL('.', import.meta.url)) + +/** @type import('webpack').Configuration */ +export default ({ WEBPACK_SERVE }) => ({ + target: 'web', + mode: WEBPACK_SERVE ? 'development' : 'production', + entry: path.resolve(__dirname, './src/main.tsx'), + output: { + path: path.resolve(__dirname, './dist'), + filename: '[name].bundle.js', + publicPath: '/', + }, + resolve: { + extensions: ['.ts', '.tsx', '.js', '.jsx'], + }, + plugins: [ + new HtmlWebpackPlugin({ + template: path.resolve(__dirname, './index.html'), + filename: 'index.html', + }), + TanStackRouterWebpack(), + ], + module: { + rules: [ + { + test: /\.tsx?$/, + exclude: /(node_modules)/, + use: { loader: 'swc-loader' }, + }, + ], + }, + devServer: { + open: true, + hot: true, + historyApiFallback: { + rewrites: [{ from: /./, to: '/index.html' }], + }, + static: ['public'], + }, +}) diff --git a/packages/create-router/templates/core/_dot_gitignore b/packages/create-router/templates/core/_dot_gitignore new file mode 100644 index 0000000000..38d7344c8c --- /dev/null +++ b/packages/create-router/templates/core/_dot_gitignore @@ -0,0 +1,13 @@ +# Local +.DS_Store +*.local +*.log* + +# Dist +node_modules +dist/ + +# IDE +.vscode/* +!.vscode/extensions.json +.idea diff --git a/packages/create-router/templates/core/index.html b/packages/create-router/templates/core/index.html new file mode 100644 index 0000000000..a4b3349437 --- /dev/null +++ b/packages/create-router/templates/core/index.html @@ -0,0 +1,24 @@ + + + + + + Vite App + + + + +
+ + + diff --git a/packages/create-router/templates/core/src/main.tsx b/packages/create-router/templates/core/src/main.tsx new file mode 100644 index 0000000000..489ebafacf --- /dev/null +++ b/packages/create-router/templates/core/src/main.tsx @@ -0,0 +1,24 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import { RouterProvider, createRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' + +// Set up a Router instance +const router = createRouter({ + routeTree, + defaultPreload: 'intent', +}) + +// Register things for typesafety +declare module '@tanstack/react-router' { + interface Register { + router: typeof router + } +} + +const rootElement = document.getElementById('app')! + +if (!rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement) + root.render() +} diff --git a/packages/create-router/templates/core/src/routes/__root.tsx b/packages/create-router/templates/core/src/routes/__root.tsx new file mode 100644 index 0000000000..5d93bc90cd --- /dev/null +++ b/packages/create-router/templates/core/src/routes/__root.tsx @@ -0,0 +1,36 @@ +import * as React from 'react' +import { Link, Outlet, createRootRoute } from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' + +export const Route = createRootRoute({ + component: RootComponent, +}) + +function RootComponent() { + return ( + <> +
+ + Home + {' '} + + About + +
+
+ + + + ) +} diff --git a/packages/create-router/templates/core/src/routes/about.tsx b/packages/create-router/templates/core/src/routes/about.tsx new file mode 100644 index 0000000000..492e6b85c2 --- /dev/null +++ b/packages/create-router/templates/core/src/routes/about.tsx @@ -0,0 +1,14 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/about')({ + component: AboutComponent, +}) + +function AboutComponent() { + return ( +
+

About

+
+ ) +} diff --git a/packages/create-router/templates/core/src/routes/index.tsx b/packages/create-router/templates/core/src/routes/index.tsx new file mode 100644 index 0000000000..c4588fb2c9 --- /dev/null +++ b/packages/create-router/templates/core/src/routes/index.tsx @@ -0,0 +1,14 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: HomeComponent, +}) + +function HomeComponent() { + return ( +
+

Welcome Home!

+
+ ) +} diff --git a/packages/create-router/templates/core/tsconfig.json b/packages/create-router/templates/core/tsconfig.json new file mode 100644 index 0000000000..c9e17e2b68 --- /dev/null +++ b/packages/create-router/templates/core/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx" + } +} diff --git a/packages/create-router/tsconfig.json b/packages/create-router/tsconfig.json new file mode 100644 index 0000000000..aa15ad9925 --- /dev/null +++ b/packages/create-router/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "jsx": "react-jsx", + "target": "ESNext", + "module": "ESNext" + }, + "moduleResolution": "Bundler", + "include": ["src", "tests", "build.config.ts"] +} diff --git a/packages/react-cross-context/vite.config.ts b/packages/react-cross-context/vite.config.ts index f26ab35cad..fd79635ec6 100644 --- a/packages/react-cross-context/vite.config.ts +++ b/packages/react-cross-context/vite.config.ts @@ -1,9 +1,10 @@ import { defineConfig, mergeConfig } from 'vitest/config' import { tanstackViteConfig } from '@tanstack/config/vite' import react from '@vitejs/plugin-react' +import type { UserConfig } from 'vitest/config' const config = defineConfig({ - plugins: [react()], + plugins: [react()] as UserConfig['plugins'], }) export default mergeConfig( diff --git a/packages/react-router-with-query/vite.config.ts b/packages/react-router-with-query/vite.config.ts index 64ae150c80..212232f411 100644 --- a/packages/react-router-with-query/vite.config.ts +++ b/packages/react-router-with-query/vite.config.ts @@ -2,9 +2,10 @@ import { defineConfig, mergeConfig } from 'vitest/config' import { tanstackViteConfig } from '@tanstack/config/vite' import react from '@vitejs/plugin-react' import packageJson from './package.json' +import type { UserConfig } from 'vitest/config' const config = defineConfig({ - plugins: [react()], + plugins: [react()] as UserConfig['plugins'], test: { name: packageJson.name, dir: './tests', diff --git a/packages/react-router/tests/loaders.test.tsx b/packages/react-router/tests/loaders.test.tsx index 277dc90949..0ca8520441 100644 --- a/packages/react-router/tests/loaders.test.tsx +++ b/packages/react-router/tests/loaders.test.tsx @@ -163,7 +163,7 @@ describe('loaders parentMatchPromise', () => { expect(fooElement).toBeInTheDocument() expect(nestedLoaderMock).toHaveBeenCalled() - expect(nestedLoaderMock.mock.calls[0][0]).toBeInstanceOf(Promise) + expect(nestedLoaderMock.mock.calls[0]?.[0]).toBeInstanceOf(Promise) }) }) diff --git a/packages/react-router/vite.config.ts b/packages/react-router/vite.config.ts index 5bf850949b..b53262bcf2 100644 --- a/packages/react-router/vite.config.ts +++ b/packages/react-router/vite.config.ts @@ -2,9 +2,10 @@ import { defineConfig, mergeConfig } from 'vitest/config' import { tanstackViteConfig } from '@tanstack/config/vite' import react from '@vitejs/plugin-react' import packageJson from './package.json' +import type { UserConfig } from 'vitest/config' const config = defineConfig({ - plugins: [react()], + plugins: [react()] as UserConfig['plugins'], test: { name: packageJson.name, dir: './tests', diff --git a/packages/router-devtools/vite.config.ts b/packages/router-devtools/vite.config.ts index 2573959ec6..2d87d3ac19 100644 --- a/packages/router-devtools/vite.config.ts +++ b/packages/router-devtools/vite.config.ts @@ -1,9 +1,10 @@ import { defineConfig, mergeConfig } from 'vitest/config' import { tanstackViteConfig } from '@tanstack/config/vite' import react from '@vitejs/plugin-react' +import type { UserConfig } from 'vitest/config' const config = defineConfig({ - plugins: [react()], + plugins: [react()] as UserConfig['plugins'], }) export default mergeConfig( diff --git a/packages/start/vite.config.ts b/packages/start/vite.config.ts index d370358486..4422860a9d 100644 --- a/packages/start/vite.config.ts +++ b/packages/start/vite.config.ts @@ -1,9 +1,10 @@ import { defineConfig, mergeConfig } from 'vitest/config' import { tanstackViteConfig } from '@tanstack/config/vite' import react from '@vitejs/plugin-react' +import type { UserConfig } from 'vitest/config' const config = defineConfig({ - plugins: [react()], + plugins: [react()] as UserConfig['plugins'], }) export default mergeConfig( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f5a608a5d3..5d33450ef6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,13 +34,13 @@ importers: version: 0.15.4 '@eslint-react/eslint-plugin': specifier: ^1.12.3 - version: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + version: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@playwright/test': specifier: ^1.46.1 version: 1.46.1 '@tanstack/config': specifier: ^0.13.1 - version: 0.13.1(@types/node@20.14.9)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.0))(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 0.13.1(@types/node@20.14.9)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.6))(rollup@4.21.2)(typescript@5.5.3)(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)) '@types/node': specifier: ^20.14.7 version: 20.14.9 @@ -52,10 +52,10 @@ importers: version: 18.3.0 eslint: specifier: ^9.9.1 - version: 9.9.1(jiti@1.21.0) + version: 9.9.1(jiti@1.21.6) eslint-plugin-react-hooks: specifier: ^5.1.0-rc-a19a8ab4-20240829 - version: 5.1.0-rc-fb9a90fa48-20240614(eslint@9.9.1(jiti@1.21.0)) + version: 5.1.0-rc-fb9a90fa48-20240614(eslint@9.9.1(jiti@1.21.6)) glob: specifier: ^10.4.5 version: 10.4.5 @@ -64,7 +64,7 @@ importers: version: 25.0.0 nx: specifier: ^19.5.6 - version: 19.5.6(@swc/core@1.7.6) + version: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -103,7 +103,7 @@ importers: version: typescript@5.4.5 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.4.3(@types/node@20.14.9)(terser@5.31.1) vitest: specifier: ^1.6.0 version: 1.6.0(@types/node@20.14.9)(jsdom@25.0.0)(terser@5.31.1) @@ -143,10 +143,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic: dependencies: @@ -177,10 +177,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-default-search-params: dependencies: @@ -214,10 +214,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-file-based: dependencies: @@ -257,10 +257,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-file-based-codesplitting: dependencies: @@ -297,10 +297,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-react-query: dependencies: @@ -337,10 +337,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-react-query-file-based: dependencies: @@ -386,10 +386,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-ssr-file-based: dependencies: @@ -426,13 +426,13 @@ importers: version: 7.25.0 '@rollup/plugin-babel': specifier: ^6.0.4 - version: 6.0.4(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@4.18.0) + version: 6.0.4(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@4.21.2) '@types/express': specifier: ^4.17.21 version: 4.17.21 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) compression: specifier: ^1.7.4 version: 1.7.4 @@ -450,10 +450,10 @@ importers: version: 1.15.0 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) vite-plugin-babel: specifier: ^1.2.0 - version: 1.2.0(@babel/core@7.25.2)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 1.2.0(@babel/core@7.25.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/basic-ssr-streaming-file-based: dependencies: @@ -493,13 +493,13 @@ importers: version: 7.25.0 '@rollup/plugin-babel': specifier: ^6.0.4 - version: 6.0.4(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@4.18.0) + version: 6.0.4(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@4.21.2) '@types/express': specifier: ^4.17.21 version: 4.17.21 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) compression: specifier: ^1.7.4 version: 1.7.4 @@ -517,10 +517,10 @@ importers: version: 1.15.0 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) vite-plugin-babel: specifier: ^1.2.0 - version: 1.2.0(@babel/core@7.25.2)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 1.2.0(@babel/core@7.25.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/basic-virtual-file-based: dependencies: @@ -563,10 +563,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-virtual-inside-file-based: dependencies: @@ -609,10 +609,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/deferred-data: dependencies: @@ -646,10 +646,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/kitchen-sink: dependencies: @@ -683,10 +683,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/kitchen-sink-file-based: dependencies: @@ -723,10 +723,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/kitchen-sink-react-query: dependencies: @@ -766,10 +766,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/kitchen-sink-react-query-file-based: dependencies: @@ -812,10 +812,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/large-file-based: dependencies: @@ -855,10 +855,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/location-masking: dependencies: @@ -892,10 +892,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/navigation-blocking: dependencies: @@ -926,10 +926,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/quickstart: dependencies: @@ -954,10 +954,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/quickstart-file-based: dependencies: @@ -994,10 +994,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/quickstart-rspack-file-based: dependencies: @@ -1105,10 +1105,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/search-validator-adapters: dependencies: @@ -1157,10 +1157,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/start-basic: dependencies: @@ -1458,7 +1458,7 @@ importers: version: 2.5.2 vinxi: specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@types/react': specifier: ^18.2.65 @@ -1468,7 +1468,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.40) @@ -1486,10 +1486,10 @@ importers: version: 5.5.3 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-clerk-basic: dependencies: @@ -1601,7 +1601,7 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -1637,7 +1637,7 @@ importers: version: 1.3.3 vinxi: specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -1665,10 +1665,10 @@ importers: version: 5.5.3 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-supabase-basic: dependencies: @@ -1692,7 +1692,7 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) react: specifier: ^18.3.1 version: 18.3.1 @@ -1701,7 +1701,7 @@ importers: version: 18.3.1(react@18.3.1) vinxi: specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@types/react': specifier: ^18.3.5 @@ -1747,7 +1747,7 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) isbot: specifier: ^5.1.14 version: 5.1.14 @@ -1777,7 +1777,7 @@ importers: version: 1.3.3 vinxi: specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -1805,10 +1805,10 @@ importers: version: 5.5.3 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/with-framer-motion: dependencies: @@ -1845,10 +1845,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/with-trpc: dependencies: @@ -1878,7 +1878,7 @@ importers: version: 0.5.1 vinxi: specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -1891,7 +1891,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) examples/react/with-trpc-react-query: dependencies: @@ -1930,7 +1930,7 @@ importers: version: 0.5.1 vinxi: specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -1943,7 +1943,95 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + + packages/create-router: + dependencies: + '@rsbuild/core': + specifier: 1.0.1-rc.0 + version: 1.0.1-rc.0 + '@rsbuild/plugin-react': + specifier: 1.0.1-rc.0 + version: 1.0.1-rc.0(@rsbuild/core@1.0.1-rc.0) + '@swc/core': + specifier: ^1.7.6 + version: 1.7.6(@swc/helpers@0.5.12) + '@tanstack/react-router': + specifier: workspace:* + version: link:../react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../router-plugin + '@types/react': + specifier: ^18.2.47 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.2.18 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + html-webpack-plugin: + specifier: ^5.6.0 + version: 5.6.0(@rspack/core@1.0.0(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + swc-loader: + specifier: ^0.2.6 + version: 0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + typescript: + specifier: ^5.5.3 + version: 5.5.3 + vite: + specifier: ^5.4.3 + version: 5.4.3(@types/node@22.5.4)(terser@5.31.1) + webpack: + specifier: ^5.93.0 + version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) + webpack-dev-server: + specifier: ^5.0.4 + version: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) + devDependencies: + '@inquirer/prompts': + specifier: ^5.5.0 + version: 5.5.0 + '@types/cross-spawn': + specifier: ^6.0.6 + version: 6.0.6 + '@types/validate-npm-package-name': + specifier: ^4.0.2 + version: 4.0.2 + commander: + specifier: ^12.1.0 + version: 12.1.0 + cross-spawn: + specifier: ^7.0.3 + version: 7.0.3 + fast-glob: + specifier: ^3.3.2 + version: 3.3.2 + picocolors: + specifier: ^1.1.0 + version: 1.1.0 + unbuild: + specifier: ^2.0.0 + version: 2.0.0(typescript@5.5.3)(vue-tsc@2.0.29(typescript@5.5.3)) + validate-npm-package-name: + specifier: ^5.0.1 + version: 5.0.1 + yocto-spinner: + specifier: ^0.1.0 + version: 0.1.0 packages/history: {} @@ -1951,7 +2039,7 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) react: specifier: ^18.2.0 version: 18.3.1 @@ -1985,7 +2073,7 @@ importers: version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) combinate: specifier: ^1.1.11 version: 1.1.11 @@ -2009,7 +2097,7 @@ importers: version: link:../react-router '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) react: specifier: '>=18' version: 18.3.1 @@ -2049,7 +2137,7 @@ importers: version: 17.0.32 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) packages/router-devtools: dependencies: @@ -2065,7 +2153,7 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) react: specifier: ^18.2.0 version: 18.3.1 @@ -2146,10 +2234,10 @@ importers: version: 1.12.2 vite: specifier: '>=5.0.0' - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.93.0(@swc/core@1.7.6)(esbuild@0.23.1) + version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2177,7 +2265,7 @@ importers: devDependencies: vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) packages/router-zod-adapter: devDependencies: @@ -2219,13 +2307,13 @@ importers: version: 0.2.4 '@vinxi/react-server-dom': specifier: ^0.0.3 - version: 0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) '@vinxi/server-components': specifier: ^0.4.2 - version: 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1)) + version: 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) '@vinxi/server-functions': specifier: ^0.4.2 - version: 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1)) + version: 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) import-meta-resolve: specifier: ^4.1.0 version: 4.1.0 @@ -2240,10 +2328,10 @@ importers: version: 1.3.3 vinxi: specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 5.0.1(typescript@5.5.3)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2253,7 +2341,7 @@ importers: version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) react: specifier: ^18.2.0 version: 18.3.1 @@ -2431,6 +2519,10 @@ packages: resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} engines: {node: '>=6.9.0'} + '@babel/standalone@7.25.6': + resolution: {integrity: sha512-Kf2ZcZVqsKbtYhlA7sP0z5A3q5hmCVYMKMWRWNK/5OVwHIve3JY1djVRmIVAx8FMueLIfZGKQDIILK2w8zO4mg==} + engines: {node: '>=6.9.0'} + '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} @@ -2542,6 +2634,12 @@ packages: '@emotion/memoize@0.7.4': resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + '@esbuild/aix-ppc64@0.19.12': + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + '@esbuild/aix-ppc64@0.20.2': resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} @@ -2566,6 +2664,12 @@ packages: cpu: [arm64] os: [android] + '@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.20.2': resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} @@ -2590,6 +2694,12 @@ packages: cpu: [arm] 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.20.2': resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} @@ -2614,6 +2724,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.19.12': + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.20.2': resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} @@ -2638,6 +2754,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.19.12': + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.20.2': resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} @@ -2662,6 +2784,12 @@ packages: cpu: [x64] 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.20.2': resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} @@ -2686,6 +2814,12 @@ packages: cpu: [arm64] os: [freebsd] + '@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.20.2': resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} @@ -2710,6 +2844,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.19.12': + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.20.2': resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} @@ -2734,6 +2874,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.19.12': + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.20.2': resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} @@ -2758,6 +2904,12 @@ packages: cpu: [arm] 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.20.2': resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} @@ -2782,6 +2934,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.19.12': + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.20.2': resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} @@ -2806,6 +2964,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.19.12': + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.20.2': resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} @@ -2830,6 +2994,12 @@ packages: cpu: [mips64el] 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.20.2': resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} @@ -2854,6 +3024,12 @@ packages: cpu: [ppc64] 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.20.2': resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} @@ -2878,6 +3054,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.19.12': + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.20.2': resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} @@ -2902,6 +3084,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.19.12': + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.20.2': resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} @@ -2926,6 +3114,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.19.12': + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.20.2': resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} @@ -2950,6 +3144,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.19.12': + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.20.2': resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} @@ -2980,6 +3180,12 @@ packages: cpu: [x64] 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.20.2': resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} @@ -3004,6 +3210,12 @@ packages: cpu: [x64] os: [sunos] + '@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.20.2': resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} @@ -3028,6 +3240,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.19.12': + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.20.2': resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} @@ -3052,6 +3270,12 @@ packages: cpu: [ia32] 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.20.2': resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} @@ -3076,6 +3300,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.19.12': + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.20.2': resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} @@ -3163,22 +3393,78 @@ packages: resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} engines: {node: '>=18.18'} + '@inquirer/checkbox@2.5.0': + resolution: {integrity: sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA==} + engines: {node: '>=18'} + '@inquirer/confirm@3.1.10': resolution: {integrity: sha512-/aAHu83Njy6yf44T+ZrRPUkMcUqprrOiIKsyMvf9jOV+vF5BNb2ja1aLP33MK36W8eaf91MTL/mU/e6METuENg==} engines: {node: '>=18'} + '@inquirer/confirm@3.2.0': + resolution: {integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==} + engines: {node: '>=18'} + '@inquirer/core@8.2.3': resolution: {integrity: sha512-WrpDVPAaxJQjHid3Ra4FhUO70YBzkHSYVyW5X48L5zHYdudoPISJqTRRWSeamHfaXda7PNNaC5Py5MEo7QwBNA==} engines: {node: '>=18'} + '@inquirer/core@9.1.0': + resolution: {integrity: sha512-RZVfH//2ytTjmaBIzeKT1zefcQZzuruwkpTwwbe/i2jTl4o9M+iML5ChULzz6iw1Ok8iUBBsRCjY2IEbD8Ft4w==} + engines: {node: '>=18'} + + '@inquirer/editor@2.2.0': + resolution: {integrity: sha512-9KHOpJ+dIL5SZli8lJ6xdaYLPPzB8xB9GZItg39MBybzhxA16vxmszmQFrRwbOA918WA2rvu8xhDEg/p6LXKbw==} + engines: {node: '>=18'} + + '@inquirer/expand@2.3.0': + resolution: {integrity: sha512-qnJsUcOGCSG1e5DTOErmv2BPQqrtT6uzqn1vI/aYGiPKq+FgslGZmtdnXbhuI7IlT7OByDoEEqdnhUnVR2hhLw==} + engines: {node: '>=18'} + '@inquirer/figures@1.0.3': resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==} engines: {node: '>=18'} + '@inquirer/figures@1.0.5': + resolution: {integrity: sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==} + engines: {node: '>=18'} + + '@inquirer/input@2.3.0': + resolution: {integrity: sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==} + engines: {node: '>=18'} + + '@inquirer/number@1.1.0': + resolution: {integrity: sha512-ilUnia/GZUtfSZy3YEErXLJ2Sljo/mf9fiKc08n18DdwdmDbOzRcTv65H1jjDvlsAuvdFXf4Sa/aL7iw/NanVA==} + engines: {node: '>=18'} + + '@inquirer/password@2.2.0': + resolution: {integrity: sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg==} + engines: {node: '>=18'} + + '@inquirer/prompts@5.5.0': + resolution: {integrity: sha512-BHDeL0catgHdcHbSFFUddNzvx/imzJMft+tWDPwTm3hfu8/tApk1HrooNngB2Mb4qY+KaRWF+iZqoVUPeslEog==} + engines: {node: '>=18'} + + '@inquirer/rawlist@2.3.0': + resolution: {integrity: sha512-zzfNuINhFF7OLAtGHfhwOW2TlYJyli7lOUoJUXw/uyklcwalV6WRXBXtFIicN8rTRK1XTiPWB4UY+YuW8dsnLQ==} + engines: {node: '>=18'} + + '@inquirer/search@1.1.0': + resolution: {integrity: sha512-h+/5LSj51dx7hp5xOn4QFnUaKeARwUCLs6mIhtkJ0JYPBLmEYjdHSYh7I6GrLg9LwpJ3xeX0FZgAG1q0QdCpVQ==} + engines: {node: '>=18'} + + '@inquirer/select@2.5.0': + resolution: {integrity: sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==} + engines: {node: '>=18'} + '@inquirer/type@1.3.3': resolution: {integrity: sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==} engines: {node: '>=18'} + '@inquirer/type@1.5.3': + resolution: {integrity: sha512-xUQ14WQGR/HK5ei+2CvgcwoH9fQ4PgPGmVFSN0pc1+fVyDL3MREhyAY7nxEErSu6CkllBM3D7e3e+kOvtu+eIg==} + engines: {node: '>=18'} + '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} @@ -3973,81 +4259,161 @@ packages: cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.18.0': + '@rollup/rollup-android-arm-eabi@4.21.2': + resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.18.0': resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.21.2': + resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.18.0': resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.21.2': + resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.18.0': resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.21.2': + resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.21.2': + resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.18.0': resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.21.2': + resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.18.0': resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.21.2': + resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.18.0': resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.21.2': + resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': + resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.18.0': resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.21.2': + resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.18.0': resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.21.2': + resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.18.0': resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.21.2': + resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.18.0': resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.21.2': + resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.18.0': resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.21.2': + resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.18.0': resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.21.2': + resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.18.0': resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.21.2': + resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==} + cpu: [x64] + os: [win32] + '@rsbuild/core@1.0.0': resolution: {integrity: sha512-3CGB2vP5o5BEioHCkkdr2CA0RpMHYCwonWkaHkIsiTfCMKUaHLCkJzWJinGvg5muuHZA6YANI2YwF6wG8/cOAw==} engines: {node: '>=14.0.0'} @@ -4419,6 +4785,10 @@ packages: '@trpc/server@11.0.0-rc.477': resolution: {integrity: sha512-K6zmjRv96fWilqm/ETehEK1DWsy5bSyrs2xbsNzCbjguMgamMhOClRHgYzJcwgLp2kasJ7QgD9YbahOhV1/u1w==} + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} @@ -4461,6 +4831,9 @@ packages: '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + '@types/cross-spawn@6.0.6': + resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -4512,6 +4885,9 @@ packages: '@types/node@20.14.9': resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} + '@types/node@22.5.4': + resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} + '@types/phoenix@1.6.5': resolution: {integrity: sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==} @@ -4563,6 +4939,9 @@ packages: '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + '@types/validate-npm-package-name@4.0.2': + resolution: {integrity: sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==} + '@types/wrap-ansi@3.0.0': resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} @@ -4841,8 +5220,8 @@ packages: peerDependencies: acorn: '>=8.9.0' - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} acorn@8.12.1: @@ -5169,11 +5548,14 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + caniuse-lite@1.0.30001653: resolution: {integrity: sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==} - chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} chalk@2.4.2: @@ -5196,6 +5578,9 @@ packages: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} @@ -5304,6 +5689,9 @@ packages: color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -5332,6 +5720,10 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} @@ -5479,9 +5871,26 @@ packages: uWebSockets.js: optional: true + css-declaration-sorter@7.2.0: + resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 + css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -5494,6 +5903,28 @@ packages: engines: {node: '>=4'} hasBin: true + cssnano-preset-default@7.0.6: + resolution: {integrity: sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano-utils@5.0.0: + resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano@7.0.6: + resolution: {integrity: sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + cssstyle@4.0.1: resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} engines: {node: '>=18'} @@ -5567,8 +5998,8 @@ packages: decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} engines: {node: '>=6'} deep-is@0.1.4: @@ -5668,6 +6099,10 @@ packages: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -5691,6 +6126,9 @@ packages: dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} @@ -5698,9 +6136,16 @@ packages: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -5803,6 +6248,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} @@ -6033,6 +6483,10 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} @@ -6317,6 +6771,10 @@ packages: resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} engines: {node: '>=18'} + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + globby@14.0.1: resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} engines: {node: '>=18'} @@ -6790,6 +7248,10 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -6935,6 +7397,10 @@ packages: resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} engines: {node: '>=14'} + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + line-diff@2.1.1: resolution: {integrity: sha512-vswdynAI5AMPJacOo2o+JJ4caDJbnY2NEqms4MhMW0NJbjh3skP/brpVTAgBxrg55NRZ2Vtw88ef18hnagIpYQ==} @@ -6974,9 +7440,15 @@ packages: lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -7055,6 +7527,12 @@ packages: engines: {node: '>= 16'} hasBin: true + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -7176,9 +7654,27 @@ packages: engines: {node: '>=10'} hasBin: true + mkdist@1.5.7: + resolution: {integrity: sha512-xdBMl7hxGctAmAg4BLT3HqgpwP2QIRU4jm9aqTwu0911onX0C11+HFOvsK+VuFCpaMfIZJ5MrLfTXE+Hn/6Q2g==} + hasBin: true + peerDependencies: + sass: ^1.78.0 + typescript: '>=5.5.4' + vue-tsc: ^1.8.27 || ^2.0.21 + peerDependenciesMeta: + sass: + optional: true + typescript: + optional: true + vue-tsc: + optional: true + mlly@1.7.0: resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -7437,6 +7933,10 @@ packages: resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} engines: {node: '>=10'} + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + outvariant@1.4.2: resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} @@ -7557,6 +8057,10 @@ packages: path-to-regexp@6.2.2: resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + path-type@5.0.0: resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} engines: {node: '>=12'} @@ -7573,6 +8077,9 @@ packages: picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -7596,6 +8103,9 @@ packages: pkg-types@1.1.1: resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} + pkg-types@1.2.0: + resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} + playwright-core@1.46.1: resolution: {integrity: sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==} engines: {node: '>=18'} @@ -7610,6 +8120,48 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} + postcss-calc@10.0.2: + resolution: {integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==} + engines: {node: ^18.12 || ^20.9 || >=22.0} + peerDependencies: + postcss: ^8.4.38 + + postcss-colormin@7.0.2: + resolution: {integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-convert-values@7.0.4: + resolution: {integrity: sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-comments@7.0.3: + resolution: {integrity: sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-duplicates@7.0.1: + resolution: {integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-empty@7.0.0: + resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-overridden@7.0.0: + resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + postcss-import@15.1.0: resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} @@ -7634,16 +8186,146 @@ packages: ts-node: optional: true + postcss-merge-longhand@7.0.4: + resolution: {integrity: sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-merge-rules@7.0.4: + resolution: {integrity: sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-font-values@7.0.0: + resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-gradients@7.0.0: + resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-params@7.0.2: + resolution: {integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-selectors@7.0.4: + resolution: {integrity: sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + postcss-nested@6.0.1: resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-normalize-charset@7.0.0: + resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-display-values@7.0.0: + resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-positions@7.0.0: + resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-repeat-style@7.0.0: + resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-string@7.0.0: + resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-timing-functions@7.0.0: + resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-unicode@7.0.2: + resolution: {integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-url@7.0.0: + resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-whitespace@7.0.0: + resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-ordered-values@7.0.1: + resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-initial@7.0.2: + resolution: {integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-transforms@7.0.0: + resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + postcss-selector-parser@6.0.16: resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-svgo@7.0.1: + resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} + engines: {node: ^18.12.0 || ^20.9.0 || >= 18} + peerDependencies: + postcss: ^8.4.31 + + postcss-unique-selectors@7.0.3: + resolution: {integrity: sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -7954,6 +8636,13 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true + rollup-plugin-dts@6.1.1: + resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} + engines: {node: '>=16'} + peerDependencies: + rollup: ^3.29.4 || ^4 + typescript: ^4.5 || ^5.0 + rollup-plugin-preserve-directives@0.4.0: resolution: {integrity: sha512-gx4nBxYm5BysmEQS+e2tAMrtFxrGvk+Pe5ppafRibQi0zlW7VYAbEGk6IKDw9sJGPdFWgVTE0o4BU4cdG0Fylg==} peerDependencies: @@ -7969,11 +8658,21 @@ packages: rollup: optional: true + rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + rollup@4.18.0: resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.21.2: + resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} @@ -8297,6 +8996,12 @@ packages: engines: {node: '>=4'} hasBin: true + stylehacks@7.0.4: + resolution: {integrity: sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -8338,6 +9043,11 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + swc-loader@0.2.6: resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==} peerDependencies: @@ -8455,6 +9165,10 @@ packages: resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} engines: {node: '>=14.0.0'} + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + tmp@0.2.3: resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} engines: {node: '>=14.14'} @@ -8551,8 +9265,8 @@ packages: 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==} + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} engines: {node: '>=4'} type-fest@0.21.3: @@ -8643,6 +9357,15 @@ packages: ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + unbuild@2.0.0: + resolution: {integrity: sha512-JWCUYx3Oxdzvw2J9kTAp+DKE8df/BnH/JTSj6JyA4SH40ECdFu7FoJJcrm8G92B7TjofQ6GZGjJs50TRxoH6Wg==} + hasBin: true + peerDependencies: + typescript: ^5.1.6 + peerDependenciesMeta: + typescript: + optional: true + unc-path-regex@0.1.2: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} @@ -8659,6 +9382,9 @@ packages: undici-types@5.28.4: resolution: {integrity: sha512-3OeMF5Lyowe8VW0skf5qaIE7Or3yS9LS7fvMUI0gg4YxpIBVg0L8BxCmROw2CcYhSkpR68Epz7CGc8MPj94Uww==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici@5.28.4: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} @@ -8745,6 +9471,10 @@ packages: resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} hasBin: true + untyped@1.4.2: + resolution: {integrity: sha512-nC5q0DnPEPVURPhfPQLahhSTnemVtPzdx7ofiRxXpOB2SYnb3MfdU3DVGyJdS8Lx+tBWeAePO8BfU/3EgksM7Q==} + hasBin: true + unwasm@0.3.9: resolution: {integrity: sha512-LDxTx/2DkFURUd+BU1vUsF/moj0JsoTvl+2tcg2AUOiEzVturhGGx17/IMgGvKUYdZwr33EJHtChCJuhu9Ouvg==} @@ -8900,6 +9630,37 @@ packages: terser: optional: true + vite@5.4.3: + resolution: {integrity: sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + vitest@1.6.0: resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -9060,8 +9821,8 @@ packages: engines: {node: ^16.13.0 || >=18.0.0} 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 @@ -9161,10 +9922,22 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} + yocto-spinner@0.1.0: + resolution: {integrity: sha512-sBra0N4uhNn5UibnOz/HJxB1a0tzZ5zXbqnDe+tfRR3BGy+BmOrzrnQCZRJI7C++JiSZaPygPeNon4QCUmMQ4g==} + engines: {node: '>=18.19'} + + yoctocolors-cjs@2.1.2: + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + engines: {node: '>=18'} + + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + zip-stream@6.0.1: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} @@ -9221,7 +9994,7 @@ snapshots: '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 - picocolors: 1.0.1 + picocolors: 1.1.0 '@babel/compat-data@7.25.2': {} @@ -9302,7 +10075,7 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 + picocolors: 1.1.0 '@babel/parser@7.25.3': dependencies: @@ -9332,6 +10105,8 @@ snapshots: dependencies: regenerator-runtime: 0.14.0 + '@babel/standalone@7.25.6': {} + '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 @@ -9476,6 +10251,9 @@ snapshots: '@emotion/memoize@0.7.4': optional: true + '@esbuild/aix-ppc64@0.19.12': + optional: true + '@esbuild/aix-ppc64@0.20.2': optional: true @@ -9488,6 +10266,9 @@ snapshots: '@esbuild/android-arm64@0.17.19': optional: true + '@esbuild/android-arm64@0.19.12': + optional: true + '@esbuild/android-arm64@0.20.2': optional: true @@ -9500,6 +10281,9 @@ snapshots: '@esbuild/android-arm@0.17.19': optional: true + '@esbuild/android-arm@0.19.12': + optional: true + '@esbuild/android-arm@0.20.2': optional: true @@ -9512,6 +10296,9 @@ snapshots: '@esbuild/android-x64@0.17.19': optional: true + '@esbuild/android-x64@0.19.12': + optional: true + '@esbuild/android-x64@0.20.2': optional: true @@ -9524,6 +10311,9 @@ snapshots: '@esbuild/darwin-arm64@0.17.19': optional: true + '@esbuild/darwin-arm64@0.19.12': + optional: true + '@esbuild/darwin-arm64@0.20.2': optional: true @@ -9536,6 +10326,9 @@ snapshots: '@esbuild/darwin-x64@0.17.19': optional: true + '@esbuild/darwin-x64@0.19.12': + optional: true + '@esbuild/darwin-x64@0.20.2': optional: true @@ -9548,6 +10341,9 @@ snapshots: '@esbuild/freebsd-arm64@0.17.19': optional: true + '@esbuild/freebsd-arm64@0.19.12': + optional: true + '@esbuild/freebsd-arm64@0.20.2': optional: true @@ -9560,6 +10356,9 @@ snapshots: '@esbuild/freebsd-x64@0.17.19': optional: true + '@esbuild/freebsd-x64@0.19.12': + optional: true + '@esbuild/freebsd-x64@0.20.2': optional: true @@ -9572,6 +10371,9 @@ snapshots: '@esbuild/linux-arm64@0.17.19': optional: true + '@esbuild/linux-arm64@0.19.12': + optional: true + '@esbuild/linux-arm64@0.20.2': optional: true @@ -9584,6 +10386,9 @@ snapshots: '@esbuild/linux-arm@0.17.19': optional: true + '@esbuild/linux-arm@0.19.12': + optional: true + '@esbuild/linux-arm@0.20.2': optional: true @@ -9596,6 +10401,9 @@ snapshots: '@esbuild/linux-ia32@0.17.19': optional: true + '@esbuild/linux-ia32@0.19.12': + optional: true + '@esbuild/linux-ia32@0.20.2': optional: true @@ -9608,6 +10416,9 @@ snapshots: '@esbuild/linux-loong64@0.17.19': optional: true + '@esbuild/linux-loong64@0.19.12': + optional: true + '@esbuild/linux-loong64@0.20.2': optional: true @@ -9620,6 +10431,9 @@ snapshots: '@esbuild/linux-mips64el@0.17.19': optional: true + '@esbuild/linux-mips64el@0.19.12': + optional: true + '@esbuild/linux-mips64el@0.20.2': optional: true @@ -9632,6 +10446,9 @@ snapshots: '@esbuild/linux-ppc64@0.17.19': optional: true + '@esbuild/linux-ppc64@0.19.12': + optional: true + '@esbuild/linux-ppc64@0.20.2': optional: true @@ -9644,6 +10461,9 @@ snapshots: '@esbuild/linux-riscv64@0.17.19': optional: true + '@esbuild/linux-riscv64@0.19.12': + optional: true + '@esbuild/linux-riscv64@0.20.2': optional: true @@ -9656,6 +10476,9 @@ snapshots: '@esbuild/linux-s390x@0.17.19': optional: true + '@esbuild/linux-s390x@0.19.12': + optional: true + '@esbuild/linux-s390x@0.20.2': optional: true @@ -9668,6 +10491,9 @@ snapshots: '@esbuild/linux-x64@0.17.19': optional: true + '@esbuild/linux-x64@0.19.12': + optional: true + '@esbuild/linux-x64@0.20.2': optional: true @@ -9680,6 +10506,9 @@ snapshots: '@esbuild/netbsd-x64@0.17.19': optional: true + '@esbuild/netbsd-x64@0.19.12': + optional: true + '@esbuild/netbsd-x64@0.20.2': optional: true @@ -9695,6 +10524,9 @@ snapshots: '@esbuild/openbsd-x64@0.17.19': optional: true + '@esbuild/openbsd-x64@0.19.12': + optional: true + '@esbuild/openbsd-x64@0.20.2': optional: true @@ -9707,6 +10539,9 @@ snapshots: '@esbuild/sunos-x64@0.17.19': optional: true + '@esbuild/sunos-x64@0.19.12': + optional: true + '@esbuild/sunos-x64@0.20.2': optional: true @@ -9719,6 +10554,9 @@ snapshots: '@esbuild/win32-arm64@0.17.19': optional: true + '@esbuild/win32-arm64@0.19.12': + optional: true + '@esbuild/win32-arm64@0.20.2': optional: true @@ -9731,6 +10569,9 @@ snapshots: '@esbuild/win32-ia32@0.17.19': optional: true + '@esbuild/win32-ia32@0.19.12': + optional: true + '@esbuild/win32-ia32@0.20.2': optional: true @@ -9743,6 +10584,9 @@ snapshots: '@esbuild/win32-x64@0.17.19': optional: true + '@esbuild/win32-x64@0.19.12': + optional: true + '@esbuild/win32-x64@0.20.2': optional: true @@ -9752,20 +10596,20 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.21.0))': + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.21.6))': dependencies: - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} - '@eslint-react/ast@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': + '@eslint-react/ast@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': dependencies: '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) birecord: 0.1.1 string-ts: 2.2.0 ts-pattern: 5.3.1 @@ -9774,18 +10618,18 @@ snapshots: - supports-color - typescript - '@eslint-react/core@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': + '@eslint-react/core@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) birecord: 0.1.1 short-unique-id: 5.2.0 ts-pattern: 5.3.1 @@ -9794,46 +10638,46 @@ snapshots: - supports-color - typescript - '@eslint-react/eslint-plugin@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': + '@eslint-react/eslint-plugin@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': dependencies: - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint: 9.9.1(jiti@1.21.0) - eslint-plugin-react-debug: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint-plugin-react-dom: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint-plugin-react-hooks-extra: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint-plugin-react-naming-convention: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint-plugin-react-web-api: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint-plugin-react-x: 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.6) + eslint-plugin-react-debug: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint-plugin-react-dom: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint-plugin-react-hooks-extra: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint-plugin-react-naming-convention: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint-plugin-react-web-api: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint-plugin-react-x: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@eslint-react/jsx@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': + '@eslint-react/jsx@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': + '@eslint-react/shared@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': dependencies: '@eslint-react/tools': 1.12.3 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) picomatch: 4.0.2 transitivePeerDependencies: - eslint @@ -9842,24 +10686,24 @@ snapshots: '@eslint-react/tools@1.12.3': {} - '@eslint-react/types@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': + '@eslint-react/types@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': dependencies: '@eslint-react/tools': 1.12.3 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/var@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': + '@eslint-react/var@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) ts-pattern: 5.3.1 transitivePeerDependencies: - eslint @@ -9898,11 +10742,24 @@ snapshots: '@humanwhocodes/retry@0.3.0': {} + '@inquirer/checkbox@2.5.0': + dependencies: + '@inquirer/core': 9.1.0 + '@inquirer/figures': 1.0.5 + '@inquirer/type': 1.5.3 + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + '@inquirer/confirm@3.1.10': dependencies: '@inquirer/core': 8.2.3 '@inquirer/type': 1.3.3 + '@inquirer/confirm@3.2.0': + dependencies: + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 + '@inquirer/core@8.2.3': dependencies: '@inquirer/figures': 1.0.3 @@ -9919,10 +10776,94 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 6.2.0 + '@inquirer/core@9.1.0': + dependencies: + '@inquirer/figures': 1.0.5 + '@inquirer/type': 1.5.3 + '@types/mute-stream': 0.0.4 + '@types/node': 22.5.4 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + cli-spinners: 2.9.2 + cli-width: 4.1.0 + mute-stream: 1.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + + '@inquirer/editor@2.2.0': + dependencies: + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 + external-editor: 3.1.0 + + '@inquirer/expand@2.3.0': + dependencies: + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 + yoctocolors-cjs: 2.1.2 + '@inquirer/figures@1.0.3': {} + '@inquirer/figures@1.0.5': {} + + '@inquirer/input@2.3.0': + dependencies: + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 + + '@inquirer/number@1.1.0': + dependencies: + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 + + '@inquirer/password@2.2.0': + dependencies: + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 + ansi-escapes: 4.3.2 + + '@inquirer/prompts@5.5.0': + dependencies: + '@inquirer/checkbox': 2.5.0 + '@inquirer/confirm': 3.2.0 + '@inquirer/editor': 2.2.0 + '@inquirer/expand': 2.3.0 + '@inquirer/input': 2.3.0 + '@inquirer/number': 1.1.0 + '@inquirer/password': 2.2.0 + '@inquirer/rawlist': 2.3.0 + '@inquirer/search': 1.1.0 + '@inquirer/select': 2.5.0 + + '@inquirer/rawlist@2.3.0': + dependencies: + '@inquirer/core': 9.1.0 + '@inquirer/type': 1.5.3 + yoctocolors-cjs: 2.1.2 + + '@inquirer/search@1.1.0': + dependencies: + '@inquirer/core': 9.1.0 + '@inquirer/figures': 1.0.5 + '@inquirer/type': 1.5.3 + yoctocolors-cjs: 2.1.2 + + '@inquirer/select@2.5.0': + dependencies: + '@inquirer/core': 9.1.0 + '@inquirer/figures': 1.0.5 + '@inquirer/type': 1.5.3 + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + '@inquirer/type@1.3.3': {} + '@inquirer/type@1.5.3': + dependencies: + mute-stream: 1.0.0 + '@ioredis/commands@1.2.0': {} '@isaacs/cliui@8.0.2': @@ -10148,9 +11089,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.5.6(@swc/core@1.7.6)': + '@nrwl/tao@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12))': dependencies: - nx: 19.5.6(@swc/core@1.7.6) + nx: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) tslib: 2.7.0 transitivePeerDependencies: - '@swc-node/register' @@ -10588,23 +11529,40 @@ snapshots: - supports-color - utf-8-validate + '@rollup/plugin-alias@5.1.0(rollup@3.29.4)': + dependencies: + slash: 4.0.0 + optionalDependencies: + rollup: 3.29.4 + '@rollup/plugin-alias@5.1.0(rollup@4.18.0)': dependencies: slash: 4.0.0 optionalDependencies: rollup: 4.18.0 - '@rollup/plugin-babel@6.0.4(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@4.18.0)': + '@rollup/plugin-babel@6.0.4(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@4.21.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) optionalDependencies: '@types/babel__core': 7.20.5 - rollup: 4.18.0 + rollup: 4.21.2 transitivePeerDependencies: - supports-color + '@rollup/plugin-commonjs@25.0.7(rollup@3.29.4)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.30.11 + optionalDependencies: + rollup: 3.29.4 + '@rollup/plugin-commonjs@25.0.7(rollup@4.18.0)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -10624,12 +11582,29 @@ snapshots: optionalDependencies: rollup: 4.18.0 + '@rollup/plugin-json@6.1.0(rollup@3.29.4)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + optionalDependencies: + rollup: 3.29.4 + '@rollup/plugin-json@6.1.0(rollup@4.18.0)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) optionalDependencies: rollup: 4.18.0 + '@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + optionalDependencies: + rollup: 3.29.4 + '@rollup/plugin-node-resolve@15.2.3(rollup@4.18.0)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -10641,6 +11616,13 @@ snapshots: optionalDependencies: rollup: 4.18.0 + '@rollup/plugin-replace@5.0.7(rollup@3.29.4)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + magic-string: 0.30.11 + optionalDependencies: + rollup: 3.29.4 + '@rollup/plugin-replace@5.0.7(rollup@4.18.0)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -10661,6 +11643,14 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 + '@rollup/pluginutils@5.1.0(rollup@3.29.4)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 3.29.4 + '@rollup/pluginutils@5.1.0(rollup@4.18.0)': dependencies: '@types/estree': 1.0.5 @@ -10669,54 +11659,110 @@ snapshots: optionalDependencies: rollup: 4.18.0 + '@rollup/pluginutils@5.1.0(rollup@4.21.2)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.21.2 + '@rollup/rollup-android-arm-eabi@4.18.0': optional: true + '@rollup/rollup-android-arm-eabi@4.21.2': + optional: true + '@rollup/rollup-android-arm64@4.18.0': optional: true + '@rollup/rollup-android-arm64@4.21.2': + optional: true + '@rollup/rollup-darwin-arm64@4.18.0': optional: true + '@rollup/rollup-darwin-arm64@4.21.2': + optional: true + '@rollup/rollup-darwin-x64@4.18.0': optional: true + '@rollup/rollup-darwin-x64@4.21.2': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.21.2': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.18.0': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.21.2': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.18.0': optional: true + '@rollup/rollup-linux-arm64-gnu@4.21.2': + optional: true + '@rollup/rollup-linux-arm64-musl@4.18.0': optional: true + '@rollup/rollup-linux-arm64-musl@4.21.2': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.18.0': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.21.2': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.18.0': optional: true + '@rollup/rollup-linux-s390x-gnu@4.21.2': + optional: true + '@rollup/rollup-linux-x64-gnu@4.18.0': optional: true + '@rollup/rollup-linux-x64-gnu@4.21.2': + optional: true + '@rollup/rollup-linux-x64-musl@4.18.0': optional: true + '@rollup/rollup-linux-x64-musl@4.21.2': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.18.0': optional: true + '@rollup/rollup-win32-arm64-msvc@4.21.2': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.18.0': optional: true + '@rollup/rollup-win32-ia32-msvc@4.21.2': + optional: true + '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true + '@rollup/rollup-win32-x64-msvc@4.21.2': + optional: true + '@rsbuild/core@1.0.0': dependencies: '@rsbuild/shared': 1.0.0 @@ -10913,10 +11959,10 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} - '@stylistic/eslint-plugin-js@2.7.1(eslint@9.9.1(jiti@1.21.0))': + '@stylistic/eslint-plugin-js@2.7.1(eslint@9.9.1(jiti@1.21.6))': dependencies: '@types/eslint': 9.6.1 - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) eslint-visitor-keys: 4.0.0 espree: 10.1.0 @@ -11028,32 +12074,32 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tanstack/config@0.13.1(@types/node@20.14.9)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.0))(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': + '@tanstack/config@0.13.1(@types/node@20.14.9)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.6))(rollup@4.21.2)(typescript@5.5.3)(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1))': dependencies: '@commitlint/parse': 19.0.3 '@eslint/js': 9.9.1 - '@stylistic/eslint-plugin-js': 2.7.1(eslint@9.9.1(jiti@1.21.0)) + '@stylistic/eslint-plugin-js': 2.7.1(eslint@9.9.1(jiti@1.21.6)) commander: 12.1.0 current-git-branch: 1.1.0 esbuild-register: 3.6.0(esbuild@0.23.1) - eslint-plugin-import-x: 4.1.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint-plugin-n: 17.10.2(eslint@9.9.1(jiti@1.21.0)) + eslint-plugin-import-x: 4.1.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint-plugin-n: 17.10.2(eslint@9.9.1(jiti@1.21.6)) globals: 15.9.0 interpret: 3.1.1 jsonfile: 6.1.0 liftoff: 5.0.0 minimist: 1.2.8 - rollup-plugin-preserve-directives: 0.4.0(rollup@4.18.0) + rollup-plugin-preserve-directives: 0.4.0(rollup@4.21.2) semver: 7.6.3 simple-git: 3.25.0 typedoc: 0.26.6(typescript@5.5.3) typedoc-plugin-frontmatter: 1.0.0(typedoc-plugin-markdown@4.2.6(typedoc@0.26.6(typescript@5.5.3))) typedoc-plugin-markdown: 4.2.6(typedoc@0.26.6(typescript@5.5.3)) - typescript-eslint: 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + typescript-eslint: 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) v8flags: 4.0.1 - vite-plugin-dts: 4.0.3(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) - vite-plugin-externalize-deps: 0.8.0(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) - vite-tsconfig-paths: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + vite-plugin-dts: 4.0.3(@types/node@20.14.9)(rollup@4.21.2)(typescript@5.5.3)(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)) + vite-plugin-externalize-deps: 0.8.0(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)) + vite-tsconfig-paths: 5.0.1(typescript@5.5.3)(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)) transitivePeerDependencies: - '@types/node' - esbuild @@ -11141,6 +12187,8 @@ snapshots: '@trpc/server@11.0.0-rc.477': {} + '@trysound/sax@0.2.0': {} + '@tybys/wasm-util@0.9.0': dependencies: tslib: 2.7.0 @@ -11196,6 +12244,10 @@ snapshots: '@types/cookie@0.6.0': {} + '@types/cross-spawn@6.0.6': + dependencies: + '@types/node': 20.14.9 + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 @@ -11258,6 +12310,10 @@ snapshots: dependencies: undici-types: 5.26.5 + '@types/node@22.5.4': + dependencies: + undici-types: 6.19.8 + '@types/phoenix@1.6.5': {} '@types/prop-types@15.7.12': {} @@ -11311,6 +12367,8 @@ snapshots: '@types/unist@3.0.2': {} + '@types/validate-npm-package-name@4.0.2': {} + '@types/wrap-ansi@3.0.0': {} '@types/ws@8.5.10': @@ -11323,15 +12381,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.0 - '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3))(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': + '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/visitor-keys': 8.3.0 - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -11341,14 +12399,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': + '@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': dependencies: '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) '@typescript-eslint/visitor-keys': 8.3.0 debug: 4.3.6 - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: @@ -11359,10 +12417,10 @@ snapshots: '@typescript-eslint/types': 8.3.0 '@typescript-eslint/visitor-keys': 8.3.0 - '@typescript-eslint/type-utils@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': + '@typescript-eslint/type-utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': dependencies: '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) debug: 4.3.6 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: @@ -11388,13 +12446,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3)': + '@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.0)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript @@ -11444,7 +12502,7 @@ snapshots: transitivePeerDependencies: - uWebSockets.js - '@vinxi/plugin-directives@0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1))': + '@vinxi/plugin-directives@0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1))': dependencies: '@babel/parser': 7.25.3 acorn: 8.12.1 @@ -11455,38 +12513,38 @@ snapshots: magicast: 0.2.11 recast: 0.23.4 tslib: 2.7.0 - vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) - '@vinxi/react-server-dom@0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': + '@vinxi/react-server-dom@0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1))': dependencies: acorn-loose: 8.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) '@vinxi/react@0.2.4': {} - '@vinxi/server-components@0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1))': + '@vinxi/server-components@0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1))': dependencies: - '@vinxi/plugin-directives': 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1)) + '@vinxi/plugin-directives': 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) acorn: 8.12.1 acorn-loose: 8.3.0 acorn-typescript: 1.4.13(acorn@8.12.1) astring: 1.8.6 magicast: 0.2.11 recast: 0.23.4 - vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) - '@vinxi/server-functions@0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1))': + '@vinxi/server-functions@0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1))': dependencies: - '@vinxi/plugin-directives': 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1)) + '@vinxi/plugin-directives': 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) acorn: 8.12.1 acorn-loose: 8.3.0 acorn-typescript: 1.4.13(acorn@8.12.1) astring: 1.8.6 magicast: 0.2.11 recast: 0.23.4 - vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) '@vitejs/plugin-react@4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': dependencies: @@ -11499,11 +12557,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitejs/plugin-react@4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-react@4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) + transitivePeerDependencies: + - supports-color + '@vitest/expect@1.6.0': dependencies: '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 - chai: 4.4.1 + chai: 4.5.0 '@vitest/runner@1.6.0': dependencies: @@ -11715,7 +12795,9 @@ snapshots: dependencies: acorn: 8.12.1 - acorn-walk@8.3.2: {} + acorn-walk@8.3.4: + dependencies: + acorn: 8.12.1 acorn@8.12.1: {} @@ -12082,17 +13164,24 @@ snapshots: camelcase@7.0.1: {} + caniuse-api@3.0.0: + dependencies: + browserslist: 4.23.3 + caniuse-lite: 1.0.30001653 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + caniuse-lite@1.0.30001653: {} - chai@4.4.1: + chai@4.5.0: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 - deep-eql: 4.1.3 + deep-eql: 4.1.4 get-func-name: 2.0.2 loupe: 2.3.7 pathval: 1.1.1 - type-detect: 4.0.8 + type-detect: 4.1.0 chalk@2.4.2: dependencies: @@ -12114,6 +13203,8 @@ snapshots: char-regex@1.0.2: {} + chardet@0.7.0: {} + check-error@1.0.3: dependencies: get-func-name: 2.0.2 @@ -12227,6 +13318,8 @@ snapshots: color-convert: 1.9.3 color-string: 1.9.1 + colord@2.9.3: {} + colorette@2.0.20: {} colorspace@1.1.4: @@ -12248,6 +13341,8 @@ snapshots: commander@4.1.1: {} + commander@7.2.0: {} + commander@8.3.0: {} commondir@1.0.1: {} @@ -12379,6 +13474,10 @@ snapshots: crossws@0.2.4: {} + css-declaration-sorter@7.2.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + css-select@4.3.0: dependencies: boolbase: 1.0.0 @@ -12387,12 +13486,78 @@ snapshots: domutils: 2.8.0 nth-check: 2.1.1 + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.0 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.0 + css-what@6.1.0: {} css.escape@1.5.1: {} cssesc@3.0.0: {} + cssnano-preset-default@7.0.6(postcss@8.4.45): + dependencies: + browserslist: 4.23.3 + css-declaration-sorter: 7.2.0(postcss@8.4.45) + cssnano-utils: 5.0.0(postcss@8.4.45) + postcss: 8.4.45 + postcss-calc: 10.0.2(postcss@8.4.45) + postcss-colormin: 7.0.2(postcss@8.4.45) + postcss-convert-values: 7.0.4(postcss@8.4.45) + postcss-discard-comments: 7.0.3(postcss@8.4.45) + postcss-discard-duplicates: 7.0.1(postcss@8.4.45) + postcss-discard-empty: 7.0.0(postcss@8.4.45) + postcss-discard-overridden: 7.0.0(postcss@8.4.45) + postcss-merge-longhand: 7.0.4(postcss@8.4.45) + postcss-merge-rules: 7.0.4(postcss@8.4.45) + postcss-minify-font-values: 7.0.0(postcss@8.4.45) + postcss-minify-gradients: 7.0.0(postcss@8.4.45) + postcss-minify-params: 7.0.2(postcss@8.4.45) + postcss-minify-selectors: 7.0.4(postcss@8.4.45) + postcss-normalize-charset: 7.0.0(postcss@8.4.45) + postcss-normalize-display-values: 7.0.0(postcss@8.4.45) + postcss-normalize-positions: 7.0.0(postcss@8.4.45) + postcss-normalize-repeat-style: 7.0.0(postcss@8.4.45) + postcss-normalize-string: 7.0.0(postcss@8.4.45) + postcss-normalize-timing-functions: 7.0.0(postcss@8.4.45) + postcss-normalize-unicode: 7.0.2(postcss@8.4.45) + postcss-normalize-url: 7.0.0(postcss@8.4.45) + postcss-normalize-whitespace: 7.0.0(postcss@8.4.45) + postcss-ordered-values: 7.0.1(postcss@8.4.45) + postcss-reduce-initial: 7.0.2(postcss@8.4.45) + postcss-reduce-transforms: 7.0.0(postcss@8.4.45) + postcss-svgo: 7.0.1(postcss@8.4.45) + postcss-unique-selectors: 7.0.3(postcss@8.4.45) + + cssnano-utils@5.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + + cssnano@7.0.6(postcss@8.4.45): + dependencies: + cssnano-preset-default: 7.0.6(postcss@8.4.45) + lilconfig: 3.1.2 + postcss: 8.4.45 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + cssstyle@4.0.1: dependencies: rrweb-cssom: 0.6.0 @@ -12441,9 +13606,9 @@ snapshots: decimal.js@10.4.3: {} - deep-eql@4.1.3: + deep-eql@4.1.4: dependencies: - type-detect: 4.0.8 + type-detect: 4.1.0 deep-is@0.1.4: {} @@ -12512,6 +13677,10 @@ snapshots: diff-sequences@29.6.3: {} + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + dlv@1.1.3: {} dns-packet@5.6.1: @@ -12536,18 +13705,34 @@ snapshots: domhandler: 4.3.1 entities: 2.2.0 + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + domelementtype@2.3.0: {} domhandler@4.3.1: dependencies: domelementtype: 2.3.0 + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + domutils@2.8.0: dependencies: dom-serializer: 1.4.1 domelementtype: 2.3.0 domhandler: 4.3.1 + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -12655,6 +13840,32 @@ snapshots: '@esbuild/win32-ia32': 0.17.19 '@esbuild/win32-x64': 0.17.19 + 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.20.2: optionalDependencies: '@esbuild/aix-ppc64': 0.20.2 @@ -12746,9 +13957,9 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.9.1(jiti@1.21.0)): + eslint-compat-utils@0.5.1(eslint@9.9.1(jiti@1.21.6)): dependencies: - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) semver: 7.6.3 eslint-import-resolver-node@0.3.9: @@ -12759,20 +13970,20 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-es-x@7.8.0(eslint@9.9.1(jiti@1.21.0)): + eslint-plugin-es-x@7.8.0(eslint@9.9.1(jiti@1.21.6)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.0)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.0 - eslint: 9.9.1(jiti@1.21.0) - eslint-compat-utils: 0.5.1(eslint@9.9.1(jiti@1.21.0)) + eslint: 9.9.1(jiti@1.21.6) + eslint-compat-utils: 0.5.1(eslint@9.9.1(jiti@1.21.6)) - eslint-plugin-import-x@4.1.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): + eslint-plugin-import-x@4.1.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): dependencies: '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) debug: 4.3.6 doctrine: 3.0.0 - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.5 is-glob: 4.0.3 @@ -12784,32 +13995,32 @@ snapshots: - supports-color - typescript - eslint-plugin-n@17.10.2(eslint@9.9.1(jiti@1.21.0)): + eslint-plugin-n@17.10.2(eslint@9.9.1(jiti@1.21.6)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.0)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) enhanced-resolve: 5.17.0 - eslint: 9.9.1(jiti@1.21.0) - eslint-plugin-es-x: 7.8.0(eslint@9.9.1(jiti@1.21.0)) + eslint: 9.9.1(jiti@1.21.6) + eslint-plugin-es-x: 7.8.0(eslint@9.9.1(jiti@1.21.6)) get-tsconfig: 4.7.5 globals: 15.9.0 ignore: 5.3.1 minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-react-debug@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): + eslint-plugin-react-debug@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint: 9.9.1(jiti@1.21.0) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.6) string-ts: 2.2.0 ts-pattern: 5.3.1 optionalDependencies: @@ -12817,103 +14028,103 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): + eslint-plugin-react-dom@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint: 9.9.1(jiti@1.21.0) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.6) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): + eslint-plugin-react-hooks-extra@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint: 9.9.1(jiti@1.21.0) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.6) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614(eslint@9.9.1(jiti@1.21.0)): + eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614(eslint@9.9.1(jiti@1.21.6)): dependencies: - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) - eslint-plugin-react-naming-convention@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): + eslint-plugin-react-naming-convention@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint: 9.9.1(jiti@1.21.0) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.6) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): + eslint-plugin-react-web-api@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) birecord: 0.1.1 - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): + eslint-plugin-react-x@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint: 9.9.1(jiti@1.21.0) - is-immutable-type: 5.0.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.6) + is-immutable-type: 5.0.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.5.3 @@ -12934,9 +14145,9 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.9.1(jiti@1.21.0): + eslint@9.9.1(jiti@1.21.6): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.0)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.0 '@eslint/config-array': 0.18.0 '@eslint/eslintrc': 3.1.0 @@ -12971,7 +14182,7 @@ snapshots: strip-ansi: 6.0.1 text-table: 0.2.0 optionalDependencies: - jiti: 1.21.0 + jiti: 1.21.6 transitivePeerDependencies: - supports-color @@ -13087,6 +14298,12 @@ snapshots: extend@3.0.2: {} + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + fast-decode-uri-component@1.0.1: {} fast-deep-equal@2.0.1: {} @@ -13376,6 +14593,14 @@ snapshots: globals@15.9.0: {} + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 4.0.0 + globby@14.0.1: dependencies: '@sindresorhus/merge-streams': 2.3.0 @@ -13701,10 +14926,10 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-immutable-type@5.0.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): + is-immutable-type@5.0.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): dependencies: - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - eslint: 9.9.1(jiti@1.21.0) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint: 9.9.1(jiti@1.21.6) ts-api-utils: 1.3.0(typescript@5.5.3) ts-declaration-location: 1.0.4(typescript@5.5.3) typescript: 5.5.3 @@ -13825,6 +15050,8 @@ snapshots: jiti@1.21.0: {} + jiti@1.21.6: {} + jju@1.4.0: {} js-cookie@3.0.5: {} @@ -13924,7 +15151,7 @@ snapshots: launch-editor@2.8.0: dependencies: - picocolors: 1.0.1 + picocolors: 1.1.0 shell-quote: 1.8.1 launchdarkly-eventsource@2.0.3: {} @@ -13966,6 +15193,8 @@ snapshots: lilconfig@3.1.1: {} + lilconfig@3.1.2: {} + line-diff@2.1.1: dependencies: levdist: 1.0.0 @@ -14005,8 +15234,8 @@ snapshots: local-pkg@0.5.0: dependencies: - mlly: 1.7.0 - pkg-types: 1.1.1 + mlly: 1.7.1 + pkg-types: 1.2.0 locate-path@5.0.0: dependencies: @@ -14020,8 +15249,12 @@ snapshots: lodash.isarguments@3.1.0: {} + lodash.memoize@4.1.2: {} + lodash.merge@4.6.2: {} + lodash.uniq@4.5.0: {} + lodash@4.17.21: {} log-symbols@4.1.0: @@ -14110,6 +15343,10 @@ snapshots: marked@9.1.6: {} + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + mdurl@2.0.0: {} media-typer@0.3.0: {} @@ -14203,6 +15440,25 @@ snapshots: mkdirp@1.0.4: {} + mkdist@1.5.7(typescript@5.5.3)(vue-tsc@2.0.29(typescript@5.5.3)): + dependencies: + autoprefixer: 10.4.20(postcss@8.4.45) + citty: 0.1.6 + cssnano: 7.0.6(postcss@8.4.45) + defu: 6.1.4 + esbuild: 0.23.1 + fast-glob: 3.3.2 + jiti: 1.21.6 + mlly: 1.7.1 + pathe: 1.1.2 + pkg-types: 1.2.0 + postcss: 8.4.45 + postcss-nested: 6.2.0(postcss@8.4.45) + semver: 7.6.3 + optionalDependencies: + typescript: 5.5.3 + vue-tsc: 2.0.29(typescript@5.5.3) + mlly@1.7.0: dependencies: acorn: 8.12.1 @@ -14210,6 +15466,13 @@ snapshots: pkg-types: 1.1.1 ufo: 1.5.3 + mlly@1.7.1: + dependencies: + acorn: 8.12.1 + pathe: 1.1.2 + pkg-types: 1.2.0 + ufo: 1.5.3 + mri@1.2.0: {} ms@2.0.0: {} @@ -14439,10 +15702,10 @@ snapshots: nwsapi@2.2.12: {} - nx@19.5.6(@swc/core@1.7.6): + nx@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.5.6(@swc/core@1.7.6) + '@nrwl/tao': 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -14603,6 +15866,8 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 + os-tmpdir@1.0.2: {} + outvariant@1.4.2: {} p-finally@1.0.0: {} @@ -14617,7 +15882,7 @@ snapshots: p-limit@5.0.0: dependencies: - yocto-queue: 1.0.0 + yocto-queue: 1.1.1 p-locate@4.1.0: dependencies: @@ -14706,6 +15971,8 @@ snapshots: path-to-regexp@6.2.2: {} + path-type@4.0.0: {} + path-type@5.0.0: {} pathe@1.1.2: {} @@ -14716,6 +15983,8 @@ snapshots: picocolors@1.0.1: {} + picocolors@1.1.0: {} + picomatch@2.3.1: {} picomatch@4.0.2: {} @@ -14734,6 +16003,12 @@ snapshots: mlly: 1.7.0 pathe: 1.1.2 + pkg-types@1.2.0: + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 + playwright-core@1.46.1: {} playwright@1.46.1: @@ -14744,21 +16019,58 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-import@15.1.0(postcss@8.4.40): + postcss-calc@10.0.2(postcss@8.4.45): dependencies: - postcss: 8.4.40 + postcss: 8.4.45 + postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - postcss-import@15.1.0(postcss@8.4.45): + postcss-colormin@7.0.2(postcss@8.4.45): dependencies: + browserslist: 4.23.3 + caniuse-api: 3.0.0 + colord: 2.9.3 postcss: 8.4.45 postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.40): + postcss-convert-values@7.0.4(postcss@8.4.45): + dependencies: + browserslist: 4.23.3 + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@7.0.3(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-selector-parser: 6.1.2 + + postcss-discard-duplicates@7.0.1(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + + postcss-discard-empty@7.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + + postcss-discard-overridden@7.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + + postcss-import@15.1.0(postcss@8.4.40): + dependencies: + postcss: 8.4.40 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-import@15.1.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.40): dependencies: camelcase-css: 2.0.1 postcss: 8.4.40 @@ -14782,6 +16094,45 @@ snapshots: optionalDependencies: postcss: 8.4.45 + postcss-merge-longhand@7.0.4(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + stylehacks: 7.0.4(postcss@8.4.45) + + postcss-merge-rules@7.0.4(postcss@8.4.45): + dependencies: + browserslist: 4.23.3 + caniuse-api: 3.0.0 + cssnano-utils: 5.0.0(postcss@8.4.45) + postcss: 8.4.45 + postcss-selector-parser: 6.1.2 + + postcss-minify-font-values@7.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@7.0.0(postcss@8.4.45): + dependencies: + colord: 2.9.3 + cssnano-utils: 5.0.0(postcss@8.4.45) + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-minify-params@7.0.2(postcss@8.4.45): + dependencies: + browserslist: 4.23.3 + cssnano-utils: 5.0.0(postcss@8.4.45) + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@7.0.4(postcss@8.4.45): + dependencies: + cssesc: 3.0.0 + postcss: 8.4.45 + postcss-selector-parser: 6.1.2 + postcss-nested@6.0.1(postcss@8.4.40): dependencies: postcss: 8.4.40 @@ -14792,17 +16143,100 @@ snapshots: postcss: 8.4.45 postcss-selector-parser: 6.0.16 + postcss-nested@6.2.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-selector-parser: 6.1.2 + + postcss-normalize-charset@7.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + + postcss-normalize-display-values@7.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@7.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@7.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@7.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@7.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@7.0.2(postcss@8.4.45): + dependencies: + browserslist: 4.23.3 + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@7.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@7.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@7.0.1(postcss@8.4.45): + dependencies: + cssnano-utils: 5.0.0(postcss@8.4.45) + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@7.0.2(postcss@8.4.45): + dependencies: + browserslist: 4.23.3 + caniuse-api: 3.0.0 + postcss: 8.4.45 + + postcss-reduce-transforms@7.0.0(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + postcss-selector-parser@6.0.16: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@7.0.1(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-value-parser: 4.2.0 + svgo: 3.3.2 + + postcss-unique-selectors@7.0.3(postcss@8.4.45): + dependencies: + postcss: 8.4.45 + postcss-selector-parser: 6.1.2 + postcss-value-parser@4.2.0: {} postcss@8.4.31: dependencies: nanoid: 3.3.7 - picocolors: 1.0.1 + picocolors: 1.1.0 source-map-js: 1.2.0 postcss@8.4.40: @@ -14879,7 +16313,7 @@ snapshots: publint@0.2.10: dependencies: npm-packlist: 5.1.3 - picocolors: 1.0.1 + picocolors: 1.1.0 sade: 1.8.1 punycode.js@2.3.1: {} @@ -15111,11 +16545,19 @@ snapshots: dependencies: glob: 10.4.5 - rollup-plugin-preserve-directives@0.4.0(rollup@4.18.0): + rollup-plugin-dts@6.1.1(rollup@3.29.4)(typescript@5.5.3): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) magic-string: 0.30.11 - rollup: 4.18.0 + rollup: 3.29.4 + typescript: 5.5.3 + optionalDependencies: + '@babel/code-frame': 7.24.7 + + rollup-plugin-preserve-directives@0.4.0(rollup@4.21.2): + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + magic-string: 0.30.11 + rollup: 4.21.2 rollup-plugin-visualizer@5.12.0(rollup@4.18.0): dependencies: @@ -15126,6 +16568,10 @@ snapshots: optionalDependencies: rollup: 4.18.0 + rollup@3.29.4: + optionalDependencies: + fsevents: 2.3.3 + rollup@4.18.0: dependencies: '@types/estree': 1.0.5 @@ -15148,6 +16594,28 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.18.0 fsevents: 2.3.3 + rollup@4.21.2: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.21.2 + '@rollup/rollup-android-arm64': 4.21.2 + '@rollup/rollup-darwin-arm64': 4.21.2 + '@rollup/rollup-darwin-x64': 4.21.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.2 + '@rollup/rollup-linux-arm-musleabihf': 4.21.2 + '@rollup/rollup-linux-arm64-gnu': 4.21.2 + '@rollup/rollup-linux-arm64-musl': 4.21.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2 + '@rollup/rollup-linux-riscv64-gnu': 4.21.2 + '@rollup/rollup-linux-s390x-gnu': 4.21.2 + '@rollup/rollup-linux-x64-gnu': 4.21.2 + '@rollup/rollup-linux-x64-musl': 4.21.2 + '@rollup/rollup-win32-arm64-msvc': 4.21.2 + '@rollup/rollup-win32-ia32-msvc': 4.21.2 + '@rollup/rollup-win32-x64-msvc': 4.21.2 + fsevents: 2.3.3 + rrweb-cssom@0.6.0: {} rrweb-cssom@0.7.1: {} @@ -15501,6 +16969,12 @@ snapshots: minimist: 1.2.8 through: 2.3.8 + stylehacks@7.0.4(postcss@8.4.45): + dependencies: + browserslist: 4.23.3 + postcss: 8.4.45 + postcss-selector-parser: 6.1.2 + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -15543,6 +17017,16 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.1.0 + swc-loader@0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: '@swc/core': 1.7.6(@swc/helpers@0.5.12) @@ -15657,14 +17141,14 @@ snapshots: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.23.1 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6)(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.23.1)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6)(esbuild@0.23.1) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1) optionalDependencies: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.23.1 @@ -15708,6 +17192,10 @@ snapshots: tinyspy@2.2.1: {} + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + tmp@0.2.3: {} to-fast-properties@2.0.0: {} @@ -15783,7 +17271,7 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-detect@4.0.8: {} + type-detect@4.1.0: {} type-fest@0.21.3: {} @@ -15816,11 +17304,11 @@ snapshots: typescript: 5.5.3 yaml: 2.4.5 - typescript-eslint@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3): + typescript-eslint@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3))(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.5.3) + '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: @@ -15845,6 +17333,39 @@ snapshots: ufo@1.5.3: {} + unbuild@2.0.0(typescript@5.5.3)(vue-tsc@2.0.29(typescript@5.5.3)): + dependencies: + '@rollup/plugin-alias': 5.1.0(rollup@3.29.4) + '@rollup/plugin-commonjs': 25.0.7(rollup@3.29.4) + '@rollup/plugin-json': 6.1.0(rollup@3.29.4) + '@rollup/plugin-node-resolve': 15.2.3(rollup@3.29.4) + '@rollup/plugin-replace': 5.0.7(rollup@3.29.4) + '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + chalk: 5.3.0 + citty: 0.1.6 + consola: 3.2.3 + defu: 6.1.4 + esbuild: 0.19.12 + globby: 13.2.2 + hookable: 5.5.3 + jiti: 1.21.0 + magic-string: 0.30.11 + mkdist: 1.5.7(typescript@5.5.3)(vue-tsc@2.0.29(typescript@5.5.3)) + mlly: 1.7.0 + pathe: 1.1.2 + pkg-types: 1.1.1 + pretty-bytes: 6.1.1 + rollup: 3.29.4 + rollup-plugin-dts: 6.1.1(rollup@3.29.4)(typescript@5.5.3) + scule: 1.3.0 + untyped: 1.4.2 + optionalDependencies: + typescript: 5.5.3 + transitivePeerDependencies: + - sass + - supports-color + - vue-tsc + unc-path-regex@0.1.2: {} uncrypto@0.1.3: {} @@ -15860,6 +17381,8 @@ snapshots: undici-types@5.28.4: {} + undici-types@6.19.8: {} + undici@5.28.4: dependencies: '@fastify/busboy': 2.1.0 @@ -15932,6 +17455,18 @@ snapshots: consola: 3.2.3 pathe: 1.1.2 + untyped@1.4.2: + dependencies: + '@babel/core': 7.25.2 + '@babel/standalone': 7.25.6 + '@babel/types': 7.25.2 + defu: 6.1.4 + jiti: 1.21.0 + mri: 1.2.0 + scule: 1.3.0 + transitivePeerDependencies: + - supports-color + unwasm@0.3.9: dependencies: knitwork: 1.1.0 @@ -15945,7 +17480,7 @@ snapshots: dependencies: browserslist: 4.23.3 escalade: 3.1.2 - picocolors: 1.0.1 + picocolors: 1.1.0 uqr@0.1.2: {} @@ -16076,32 +17611,100 @@ snapshots: - uWebSockets.js - xml2js + vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1): + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) + '@types/micromatch': 4.0.7 + '@vinxi/listhen': 1.5.6 + boxen: 7.1.1 + chokidar: 3.6.0 + citty: 0.1.6 + consola: 3.2.3 + crossws: 0.2.4 + dax-sh: 0.39.2 + defu: 6.1.4 + es-module-lexer: 1.5.4 + esbuild: 0.20.2 + fast-glob: 3.3.2 + get-port-please: 3.1.2 + h3: 1.11.1 + hookable: 5.5.3 + http-proxy: 1.18.1 + micromatch: 4.0.7 + nitropack: 2.9.6(@opentelemetry/api@1.8.0) + node-fetch-native: 1.6.4 + path-to-regexp: 6.2.2 + pathe: 1.1.2 + radix3: 1.1.2 + resolve: 1.22.8 + serve-placeholder: 2.0.1 + serve-static: 1.15.0 + ufo: 1.5.3 + unctx: 2.3.1 + unenv: 1.9.0 + unstorage: 1.10.2(ioredis@5.4.1) + vite: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + zod: 3.23.8 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@libsql/client' + - '@netlify/blobs' + - '@opentelemetry/api' + - '@planetscale/database' + - '@types/node' + - '@upstash/redis' + - '@vercel/kv' + - better-sqlite3 + - debug + - drizzle-orm + - encoding + - idb-keyval + - ioredis + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - uWebSockets.js + - xml2js + vite-node@1.6.0(@types/node@20.14.9)(terser@5.31.1): dependencies: cac: 6.7.14 debug: 4.3.6 pathe: 1.1.2 - picocolors: 1.0.1 - vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + picocolors: 1.1.0 + vite: 5.4.3(@types/node@20.14.9)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color - terser - vite-plugin-babel@1.2.0(@babel/core@7.25.2)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)): + vite-plugin-babel@1.2.0(@babel/core@7.25.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)): dependencies: '@babel/core': 7.25.2 - vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + vite: 5.3.5(@types/node@22.5.4)(terser@5.31.1) - vite-plugin-dts@4.0.3(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)): + vite-plugin-dts@4.0.3(@types/node@20.14.9)(rollup@4.21.2)(typescript@5.5.3)(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)): dependencies: '@microsoft/api-extractor': 7.47.4(@types/node@20.14.9) - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) '@volar/typescript': 2.4.0 '@vue/language-core': 2.0.29(typescript@5.5.3) compare-versions: 6.1.1 @@ -16112,15 +17715,15 @@ snapshots: typescript: 5.5.3 vue-tsc: 2.0.29(typescript@5.5.3) optionalDependencies: - vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + vite: 5.4.3(@types/node@20.14.9)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-externalize-deps@0.8.0(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)): + vite-plugin-externalize-deps@0.8.0(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)): dependencies: - vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + vite: 5.4.3(@types/node@20.14.9)(terser@5.31.1) vite-tsconfig-paths@5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)): dependencies: @@ -16133,6 +17736,39 @@ snapshots: - supports-color - typescript + vite-tsconfig-paths@5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)): + dependencies: + debug: 4.3.6 + globrex: 0.1.2 + tsconfck: 3.0.3(typescript@5.5.3) + optionalDependencies: + vite: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + transitivePeerDependencies: + - supports-color + - typescript + + vite-tsconfig-paths@5.0.1(typescript@5.5.3)(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)): + dependencies: + debug: 4.3.6 + globrex: 0.1.2 + tsconfck: 3.0.3(typescript@5.5.3) + optionalDependencies: + vite: 5.4.3(@types/node@20.14.9)(terser@5.31.1) + transitivePeerDependencies: + - supports-color + - typescript + + vite-tsconfig-paths@5.0.1(typescript@5.5.3)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)): + dependencies: + debug: 4.3.6 + globrex: 0.1.2 + tsconfck: 3.0.3(typescript@5.5.3) + optionalDependencies: + vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) + transitivePeerDependencies: + - supports-color + - typescript + vite@5.3.5(@types/node@20.14.9)(terser@5.31.1): dependencies: esbuild: 0.21.5 @@ -16143,6 +17779,36 @@ snapshots: fsevents: 2.3.3 terser: 5.31.1 + vite@5.3.5(@types/node@22.5.4)(terser@5.31.1): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.40 + rollup: 4.18.0 + optionalDependencies: + '@types/node': 22.5.4 + fsevents: 2.3.3 + terser: 5.31.1 + + vite@5.4.3(@types/node@20.14.9)(terser@5.31.1): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.45 + rollup: 4.21.2 + optionalDependencies: + '@types/node': 20.14.9 + fsevents: 2.3.3 + terser: 5.31.1 + + vite@5.4.3(@types/node@22.5.4)(terser@5.31.1): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.45 + rollup: 4.21.2 + optionalDependencies: + '@types/node': 22.5.4 + fsevents: 2.3.3 + terser: 5.31.1 + vitest@1.6.0(@types/node@20.14.9)(jsdom@25.0.0)(terser@5.31.1): dependencies: '@vitest/expect': 1.6.0 @@ -16150,21 +17816,21 @@ snapshots: '@vitest/snapshot': 1.6.0 '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 - acorn-walk: 8.3.2 - chai: 4.4.1 + acorn-walk: 8.3.4 + chai: 4.5.0 debug: 4.3.6 execa: 8.0.1 local-pkg: 0.5.0 magic-string: 0.30.11 pathe: 1.1.2 - picocolors: 1.0.1 + picocolors: 1.1.0 std-env: 3.7.0 strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + vite: 5.4.3(@types/node@20.14.9)(terser@5.31.1) vite-node: 1.6.0(@types/node@20.14.9)(terser@5.31.1) - why-is-node-running: 2.2.2 + why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.14.9 jsdom: 25.0.0 @@ -16172,6 +17838,7 @@ snapshots: - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color @@ -16290,7 +17957,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -16313,17 +17980,15 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)) watchpack: 2.4.1 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.23.1): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -16346,9 +18011,11 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6)(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.23.1)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -16398,7 +18065,7 @@ snapshots: dependencies: isexe: 3.1.1 - why-is-node-running@2.2.2: + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 stackback: 0.0.2 @@ -16511,7 +18178,15 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.0.0: {} + yocto-queue@1.1.1: {} + + yocto-spinner@0.1.0: + dependencies: + yoctocolors: 2.1.1 + + yoctocolors-cjs@2.1.2: {} + + yoctocolors@2.1.1: {} zip-stream@6.0.1: dependencies: diff --git a/scripts/publish.js b/scripts/publish.js index 8a6cf779d7..83381f3a89 100644 --- a/scripts/publish.js +++ b/scripts/publish.js @@ -68,6 +68,10 @@ await publish({ name: '@tanstack/start-vite-plugin', packageDir: 'packages/start-vite-plugin', }, + { + name: '@tanstack/create-router', + packageDir: 'packages/create-router', + }, ], branchConfigs: { main: { From 031fc6e5363b6ee3ed670f3e617fc928ee40718b Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Mon, 9 Sep 2024 22:43:28 +0000 Subject: [PATCH 074/154] release: v1.57.0 --- packages/create-router/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-router/package.json b/packages/create-router/package.json index e124ec104d..7192ecf0c4 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.56.0", + "version": "1.57.0", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From a005b161043afe289f320820882cc2467dd7543b Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Tue, 10 Sep 2024 00:55:06 +0200 Subject: [PATCH 075/154] fix(create-router): delay loading of package.json to runtime (#2301) --- packages/create-router/src/utils/getPeerDependencyVersion.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/create-router/src/utils/getPeerDependencyVersion.ts b/packages/create-router/src/utils/getPeerDependencyVersion.ts index 2145755e9c..54d1eeeeec 100644 --- a/packages/create-router/src/utils/getPeerDependencyVersion.ts +++ b/packages/create-router/src/utils/getPeerDependencyVersion.ts @@ -1,5 +1,6 @@ -import packageJson from '../../package.json' import type { PeerDependency } from '../types' +// do not import at build time since router peer dependencies will still be '*' +const packageJson = require('../../package.json') export function getDependenciesWithVersion(deps: Array) { return deps.reduce( From 66b3f557f4d4e4b05ee6f43966e15c068135e000 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Tue, 10 Sep 2024 01:02:49 +0200 Subject: [PATCH 076/154] chore: fix lint (#2302) --- .../src/utils/getPeerDependencyVersion.ts | 1 + packages/router-plugin/package.json | 2 +- pnpm-lock.yaml | 320 ++++++------------ 3 files changed, 97 insertions(+), 226 deletions(-) diff --git a/packages/create-router/src/utils/getPeerDependencyVersion.ts b/packages/create-router/src/utils/getPeerDependencyVersion.ts index 54d1eeeeec..604e67ad5c 100644 --- a/packages/create-router/src/utils/getPeerDependencyVersion.ts +++ b/packages/create-router/src/utils/getPeerDependencyVersion.ts @@ -1,5 +1,6 @@ import type { PeerDependency } from '../types' // do not import at build time since router peer dependencies will still be '*' +// eslint-disable-next-line import/no-commonjs const packageJson = require('../../package.json') export function getDependenciesWithVersion(deps: Array) { diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 37c3965ff0..709ae48457 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -112,7 +112,7 @@ "zod": "^3.23.8" }, "peerDependencies": { - "@rsbuild/core": ">=1.0.0", + "@rsbuild/core": ">=1.0.1-rc.5", "vite": ">=5.0.0", "webpack": ">=5.92.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d33450ef6..4405e9c4bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1062,7 +1062,7 @@ importers: version: 18.3.0 html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(@rspack/core@1.0.0(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + version: 5.6.0(@rspack/core@1.0.3(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) swc-loader: specifier: ^0.2.6 version: 0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) @@ -1976,7 +1976,7 @@ importers: version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(@rspack/core@1.0.0(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + version: 5.6.0(@rspack/core@1.0.3(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) react: specifier: ^18.2.0 version: 18.3.1 @@ -2203,8 +2203,8 @@ importers: specifier: ^7.25.2 version: 7.25.2 '@rsbuild/core': - specifier: '>=1.0.0' - version: 1.0.0 + specifier: '>=1.0.1-rc.5' + version: 1.0.1-rc.5 '@tanstack/router-generator': specifier: workspace:* version: link:../router-generator @@ -4414,39 +4414,29 @@ packages: cpu: [x64] os: [win32] - '@rsbuild/core@1.0.0': - resolution: {integrity: sha512-3CGB2vP5o5BEioHCkkdr2CA0RpMHYCwonWkaHkIsiTfCMKUaHLCkJzWJinGvg5muuHZA6YANI2YwF6wG8/cOAw==} - engines: {node: '>=14.0.0'} - deprecated: This is a mistakenly released version, please do not use it - hasBin: true - '@rsbuild/core@1.0.1-rc.0': resolution: {integrity: sha512-tSszHL2sp/iNZkYMOOorgBonh4XAIfJODlt6JBTg5PMAywm+XXdFoEglaKeAM6WiQ/0rQYOataKrHbMkfxmh/A==} engines: {node: '>=16.7.0'} hasBin: true + '@rsbuild/core@1.0.1-rc.5': + resolution: {integrity: sha512-0+LiFrzvEEhHsizHRXMnbxtvxVvWyGFl33VfLSlOnBwUwgbblq3ehUc4QYK+mla4Zh3DbWRNr9oCdyJa+Qv2MA==} + engines: {node: '>=16.7.0'} + hasBin: true + '@rsbuild/plugin-react@1.0.1-rc.0': resolution: {integrity: sha512-bjKRNdihb3LoWW74Ri2lBQqrTaksIpGx9/mp/RiRpVUGzX+9/SDlXWvrnWdndKPm7UYfY3VBCZNT2zJRi0CCKg==} peerDependencies: '@rsbuild/core': ^1.0.1-rc.0 - '@rsbuild/shared@1.0.0': - resolution: {integrity: sha512-S8naGkaXAN+5vjk22Ghox07kGK/Weg5C1imc1ELB4J66m5PWaDSnlxiv8hdmruKelcNuWUaqmTJrqEpUkVSezw==} - deprecated: This is a mistakenly released version, please do not use it - - '@rspack/binding-darwin-arm64@0.4.0': - resolution: {integrity: sha512-iQ6ERHXzY58zgHIZZAC7L7hrosO7BZXH3RpOTTibiZdTVex4Bq10CVmy6q6m88iQuqAQS2BHOXzAYLJtZlZRRw==} - cpu: [arm64] - os: [darwin] - '@rspack/binding-darwin-arm64@1.0.0': resolution: {integrity: sha512-ZHQk9YK+swlTG48kJTgzFUW9T26KjhLXRok5la7t2AMoiuHyhGHHgC5iQfPJLZ62XzcJ/rfqs2rwakl97151jQ==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@0.4.0': - resolution: {integrity: sha512-LRCiMPCbAIwwo0euqao7+8peUXj+qPDSi0nSK2y6wjaXfUVi8FwpWQ+O+B3RH3rpyFBU63IqatC8razalt8JgQ==} - cpu: [x64] + '@rspack/binding-darwin-arm64@1.0.3': + resolution: {integrity: sha512-MZlQpDRJkjIJJqmYMiziwz9vLXi1KjORYW6hemC2umDfOzUmlkRPBUF8oEqXaUQ+zYLbjhk4iTSbFdrlqUR+6w==} + cpu: [arm64] os: [darwin] '@rspack/binding-darwin-x64@1.0.0': @@ -4454,18 +4444,18 @@ packages: cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@0.4.0': - resolution: {integrity: sha512-trfEUQ7awu6dLWUlIXmSJmwW48lSxEl7kW4FUas/UMNH3/B/wim8TPx6ZuDrCzVhYk5HP7ccjbQg7mnbJ+E48w==} - cpu: [arm64] - os: [linux] + '@rspack/binding-darwin-x64@1.0.3': + resolution: {integrity: sha512-Ke8Tw3+j5YFFIHjlqrEDnW5fbZU14s+l5LhLVaw6gVXH4yAAyFaZejaIViGi5fhKkdKmCXm0nVTK1KhhASZxAw==} + cpu: [x64] + os: [darwin] '@rspack/binding-linux-arm64-gnu@1.0.0': resolution: {integrity: sha512-yKnlsWgvydJRxDBGGKC+cyDeoSzIvOzuVqCloy5oAFAGOMXMY6bznxrkE6/olGZncdeLEpnJzZmXSuF1dYc8ow==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@0.4.0': - resolution: {integrity: sha512-ubIcXmRopSJ6n+F/cRXDfGSgK847OX0CPeSSL4tiJ4dah5lz8iISZ9GLrNHJQ+SvphOH8F9lDpp8h2iwVt0Pbw==} + '@rspack/binding-linux-arm64-gnu@1.0.3': + resolution: {integrity: sha512-Ydm6rsBnPYlKfWtz6sPRgAgJ5fQ+zFSHplR4bFlARIOXeWPn7ckQvFZrmKexuR0ULjG3Z4sbfrU6udc2MAWvig==} cpu: [arm64] os: [linux] @@ -4474,9 +4464,9 @@ packages: cpu: [arm64] os: [linux] - '@rspack/binding-linux-x64-gnu@0.4.0': - resolution: {integrity: sha512-Q3mqjgV2k68F8VuzZwaqhHggBhcSlD0N+vvtFP8BxXIX4Pdkmk2shwwVjniZmY+oKB16dbSmXxShdMlCE3CCng==} - cpu: [x64] + '@rspack/binding-linux-arm64-musl@1.0.3': + resolution: {integrity: sha512-2aS65Xne3W6qJJ5PN5oL/bMbkUeYpsQduT+ML6vY6hqvi6W6wYtkvHwscQ4HisxKQFWdB2bsE1+UT34XgHpijw==} + cpu: [arm64] os: [linux] '@rspack/binding-linux-x64-gnu@1.0.0': @@ -4484,8 +4474,8 @@ packages: cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@0.4.0': - resolution: {integrity: sha512-5l6Q00yZDIeT8T1ruxEfF1Wj3m3SqnSHrPFiUqYydmgmNll1iCCRC2AmGVsmAACDQ7rg9z8BhhHtKukNBvmwTQ==} + '@rspack/binding-linux-x64-gnu@1.0.3': + resolution: {integrity: sha512-6UWii/GBkV0B98RSjJr9Za5Y8rvU1vQpE5+8vb26pvo3Sh3kvRfOmSeIFyqR3I92er5SQKmEp8uggb74st6QGQ==} cpu: [x64] os: [linux] @@ -4494,19 +4484,19 @@ packages: cpu: [x64] os: [linux] - '@rspack/binding-win32-arm64-msvc@0.4.0': - resolution: {integrity: sha512-k96/PSkVT/VEvqHygenzgr8Z7n4SuCSKONVFB5zazWDPaJwCqaqANQuvX0PbuazVy6PbiLE/YI0+4TDjL7dHCw==} - cpu: [arm64] - os: [win32] + '@rspack/binding-linux-x64-musl@1.0.3': + resolution: {integrity: sha512-tpKGPJEe6vkkH3bsDz+l7xndNrOGxDvbDVOXV0uSESnRr6Pef5253Bi5PNooGLSaWQlXVDdazhi6x1beVHI2eg==} + cpu: [x64] + os: [linux] '@rspack/binding-win32-arm64-msvc@1.0.0': resolution: {integrity: sha512-gqtakP0Yl2aj+Q/Giwgt31hz8eOZpo2s+sJlkMJGVdIF4dejB31a8vbj/VNGeSN1tDRiLI4cyqa5eQU//t26aQ==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@0.4.0': - resolution: {integrity: sha512-DmC7MumePZuss1AigT4FaIbFPZFtZXdcWBhD7dF88CvsvQRVtOcMujtByWkkNJ6ZDp+IUHyXOtPQWr1iRjDOCQ==} - cpu: [ia32] + '@rspack/binding-win32-arm64-msvc@1.0.3': + resolution: {integrity: sha512-9FwP64T6yeq3cG1JQG0VagTMuJxJCT45G9LN5RTJ2kxJ4T28vL7uEc9usPpXOyd6xpbzTKXX0mVxL+c8x0EhZQ==} + cpu: [arm64] os: [win32] '@rspack/binding-win32-ia32-msvc@1.0.0': @@ -4514,9 +4504,9 @@ packages: cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@0.4.0': - resolution: {integrity: sha512-F3pAxz1GakFkyq8S+iPTqVkvIFnHG9te36wLW+tIzY4oC0vNPsEVunBp6NrYHzTaOf3aBZ+bvsLZyfvg+pKxqA==} - cpu: [x64] + '@rspack/binding-win32-ia32-msvc@1.0.3': + resolution: {integrity: sha512-nXbeh0206bGiwV1vgY8UDk92sZ2yMvJenevnnLtGFSMTRQ46Z2f9n+mUO1GlvpanR1HAfhgPddlKasIncTJmPQ==} + cpu: [ia32] os: [win32] '@rspack/binding-win32-x64-msvc@1.0.0': @@ -4524,15 +4514,16 @@ packages: cpu: [x64] os: [win32] - '@rspack/binding@0.4.0': - resolution: {integrity: sha512-SpjaySPGmyRnRHrQItl9W9NGE2WoHsUPnererZaLK+pfVgO92q9uoEoKl3EBNNI9uttG132SCz4cx1zXwN394w==} + '@rspack/binding-win32-x64-msvc@1.0.3': + resolution: {integrity: sha512-htBi4xt+iXD/NCEo/q4fYSg5YfXymK9P9zI36NFvfguQbhwqy4JgBx0IorjDFl5qvG70sdUzY7x98DJEseGScQ==} + cpu: [x64] + os: [win32] '@rspack/binding@1.0.0': resolution: {integrity: sha512-eLyqSEM1h/exJYn98k+9MRktP8AYDB13x5oVn8hoxVucuhk0TubFqQSX8h9SQcZp1O3j/Z8eWWwOaNPe3JU40Q==} - '@rspack/core@0.4.0': - resolution: {integrity: sha512-GY8lsCGRzj1mj5q1Ss5kjazpSisT/HJdXpIU730pG4Os6mE2sGYVUJ0ncYRv/DEBcL1c2dVr5vtMKTHlNYRlfg==} - engines: {node: '>=16.0.0'} + '@rspack/binding@1.0.3': + resolution: {integrity: sha512-wRLUDyi/6jFDDZJIov4uh9H9hJNk7JKDEhaMLM/5lJzzWsTLBB/q6JB1VAdIzOzBhYsU8iIMEVuG3Uih1H43uw==} '@rspack/core@1.0.0': resolution: {integrity: sha512-F4RA9uOLLvD1oTKa96Gcly+Sro1qaqPNENadFyiPwepa7DrwexQa/ym6CQKbvKMOYGKlVSFDPUmgFAirz35ETg==} @@ -4543,6 +4534,15 @@ packages: '@swc/helpers': optional: true + '@rspack/core@1.0.3': + resolution: {integrity: sha512-BqyBSrcTtsm1EDI10TrK6tEfNsy5vEnVDnbI0HBuQBH1zhKblnvsu6Y2bbS9+OGmB+OPEr76CmuZtzb+7V3wrQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + '@rspack/lite-tapable@1.0.0': resolution: {integrity: sha512-7MZf4lburSUZoEenwazwUDKHhqyfnLCGnQ/tKcUtztfmVzfjZfRn/EaiT0AKkYGnL2U8AGsw89oUeVyvaOLVCw==} engines: {node: '>=16.0.0'} @@ -4696,9 +4696,6 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.1': - resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} - '@swc/helpers@0.5.12': resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} @@ -5554,6 +5551,9 @@ packages: caniuse-lite@1.0.30001653: resolution: {integrity: sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==} + caniuse-lite@1.0.30001659: + resolution: {integrity: sha512-Qxxyfv3RdHAfJcXelgf0hU4DFUVXBGTjqrBUZLUh8AtlGnsDo+CnncYtTd95+ZKfnANUOzxyIQCuU/UeBZBYoA==} + chai@4.5.0: resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} @@ -5734,9 +5734,6 @@ packages: compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - compare-versions@6.0.0-rc.1: - resolution: {integrity: sha512-cFhkjbGY1jLFWIV7KegECbfuyYPxSGvgGkdkfM+ibboQDoPwg2FRHm5BSNTOApiauRBzJIQH7qvOJs2sW5ueKQ==} - compare-versions@6.1.1: resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} @@ -5834,9 +5831,6 @@ packages: resolution: {integrity: sha512-CzATjGXzUQ0EvuvgOCI6A4BGOo2bcVx8B+eC2nF862iv9fopnPQwlrbACakNCHRIJbCSBj+J/9JeDf60k64MkA==} engines: {node: '>=12.13'} - core-js@3.32.2: - resolution: {integrity: sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==} - core-js@3.38.1: resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} @@ -6196,10 +6190,6 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} - engines: {node: '>=10.13.0'} - enhanced-resolve@5.17.0: resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} engines: {node: '>=10.13.0'} @@ -6487,9 +6477,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@2.0.1: resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} @@ -6509,9 +6496,6 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -6790,9 +6774,6 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -6875,10 +6856,6 @@ packages: engines: {node: '>=12'} hasBin: true - html-rspack-plugin@5.5.7: - resolution: {integrity: sha512-7dNAURj9XBHWoYg59F8VU6hT7J7w+od4Lr5hc/rrgN6sy6QfqVpoPqW9Qw4IGFOgit8Pul7iQp1yysBSIhOlsg==} - engines: {node: '>=10.13.0'} - html-webpack-plugin@5.6.0: resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} engines: {node: '>=10.13.0'} @@ -7298,10 +7275,6 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-parse-even-better-errors@3.0.2: - resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -7378,9 +7351,6 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - levdist@1.0.0: - resolution: {integrity: sha512-YguwC2spb0pqpJM3a5OsBhih/GG2ZHoaSHnmBqhEI7997a36buhqcRTegEjozHxyxByIwLpZHZTVYMThq+Zd3g==} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -7401,9 +7371,6 @@ packages: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} - line-diff@2.1.1: - resolution: {integrity: sha512-vswdynAI5AMPJacOo2o+JJ4caDJbnY2NEqms4MhMW0NJbjh3skP/brpVTAgBxrg55NRZ2Vtw88ef18hnagIpYQ==} - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -8329,10 +8296,6 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.4.40: resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} engines: {node: ^10 || ^12 || >=14} @@ -8460,10 +8423,6 @@ packages: react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} - engines: {node: '>=0.10.0'} - react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} @@ -9031,10 +8990,6 @@ packages: resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} engines: {node: '>=12'} - supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} - supports-hyperlinks@3.1.0: resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} engines: {node: '>=14.18'} @@ -9094,10 +9049,6 @@ packages: resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} engines: {node: '>=10'} - terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - terser-webpack-plugin@5.3.10: resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} @@ -9942,12 +9893,6 @@ packages: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} - zod-validation-error@1.2.0: - resolution: {integrity: sha512-laJkD/ugwEh8CpuH+xXv5L9Z+RLz3lH8alNxolfaHZJck611OJj97R4Rb+ZqA7WNly2kNtTo4QwjdjXw9scpiw==} - engines: {node: ^14.17 || >=16.0.0} - peerDependencies: - zod: ^3.18.0 - zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} @@ -11763,19 +11708,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.21.2': optional: true - '@rsbuild/core@1.0.0': - dependencies: - '@rsbuild/shared': 1.0.0 - '@rspack/core': 0.4.0 - core-js: 3.32.2 - html-webpack-plugin: html-rspack-plugin@5.5.7 - postcss: 8.4.31 - semver: 7.6.3 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - '@rsbuild/core@1.0.1-rc.0': dependencies: '@rspack/core': 1.0.0(@swc/helpers@0.5.12) @@ -11786,85 +11718,75 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + '@rsbuild/core@1.0.1-rc.5': + dependencies: + '@rspack/core': 1.0.3(@swc/helpers@0.5.12) + '@rspack/lite-tapable': 1.0.0 + '@swc/helpers': 0.5.12 + caniuse-lite: 1.0.30001659 + core-js: 3.38.1 + optionalDependencies: + fsevents: 2.3.3 + '@rsbuild/plugin-react@1.0.1-rc.0(@rsbuild/core@1.0.1-rc.0)': dependencies: '@rsbuild/core': 1.0.1-rc.0 '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) react-refresh: 0.14.2 - '@rsbuild/shared@1.0.0': - dependencies: - '@rspack/core': 0.4.0 - caniuse-lite: 1.0.30001653 - line-diff: 2.1.1 - lodash: 4.17.21 - postcss: 8.4.31 - - '@rspack/binding-darwin-arm64@0.4.0': - optional: true - '@rspack/binding-darwin-arm64@1.0.0': optional: true - '@rspack/binding-darwin-x64@0.4.0': + '@rspack/binding-darwin-arm64@1.0.3': optional: true '@rspack/binding-darwin-x64@1.0.0': optional: true - '@rspack/binding-linux-arm64-gnu@0.4.0': + '@rspack/binding-darwin-x64@1.0.3': optional: true '@rspack/binding-linux-arm64-gnu@1.0.0': optional: true - '@rspack/binding-linux-arm64-musl@0.4.0': + '@rspack/binding-linux-arm64-gnu@1.0.3': optional: true '@rspack/binding-linux-arm64-musl@1.0.0': optional: true - '@rspack/binding-linux-x64-gnu@0.4.0': + '@rspack/binding-linux-arm64-musl@1.0.3': optional: true '@rspack/binding-linux-x64-gnu@1.0.0': optional: true - '@rspack/binding-linux-x64-musl@0.4.0': + '@rspack/binding-linux-x64-gnu@1.0.3': optional: true '@rspack/binding-linux-x64-musl@1.0.0': optional: true - '@rspack/binding-win32-arm64-msvc@0.4.0': + '@rspack/binding-linux-x64-musl@1.0.3': optional: true '@rspack/binding-win32-arm64-msvc@1.0.0': optional: true - '@rspack/binding-win32-ia32-msvc@0.4.0': + '@rspack/binding-win32-arm64-msvc@1.0.3': optional: true '@rspack/binding-win32-ia32-msvc@1.0.0': optional: true - '@rspack/binding-win32-x64-msvc@0.4.0': + '@rspack/binding-win32-ia32-msvc@1.0.3': optional: true '@rspack/binding-win32-x64-msvc@1.0.0': optional: true - '@rspack/binding@0.4.0': - optionalDependencies: - '@rspack/binding-darwin-arm64': 0.4.0 - '@rspack/binding-darwin-x64': 0.4.0 - '@rspack/binding-linux-arm64-gnu': 0.4.0 - '@rspack/binding-linux-arm64-musl': 0.4.0 - '@rspack/binding-linux-x64-gnu': 0.4.0 - '@rspack/binding-linux-x64-musl': 0.4.0 - '@rspack/binding-win32-arm64-msvc': 0.4.0 - '@rspack/binding-win32-ia32-msvc': 0.4.0 - '@rspack/binding-win32-x64-msvc': 0.4.0 + '@rspack/binding-win32-x64-msvc@1.0.3': + optional: true '@rspack/binding@1.0.0': optionalDependencies: @@ -11878,24 +11800,17 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.0.0 '@rspack/binding-win32-x64-msvc': 1.0.0 - '@rspack/core@0.4.0': - dependencies: - '@rspack/binding': 0.4.0 - '@swc/helpers': 0.5.1 - browserslist: 4.23.3 - compare-versions: 6.0.0-rc.1 - enhanced-resolve: 5.12.0 - fast-querystring: 1.1.2 - graceful-fs: 4.2.10 - json-parse-even-better-errors: 3.0.2 - neo-async: 2.6.2 - react-refresh: 0.14.0 - tapable: 2.2.1 - terminal-link: 2.1.1 - watchpack: 2.4.1 - webpack-sources: 3.2.3 - zod: 3.23.8 - zod-validation-error: 1.2.0(zod@3.23.8) + '@rspack/binding@1.0.3': + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.0.3 + '@rspack/binding-darwin-x64': 1.0.3 + '@rspack/binding-linux-arm64-gnu': 1.0.3 + '@rspack/binding-linux-arm64-musl': 1.0.3 + '@rspack/binding-linux-x64-gnu': 1.0.3 + '@rspack/binding-linux-x64-musl': 1.0.3 + '@rspack/binding-win32-arm64-msvc': 1.0.3 + '@rspack/binding-win32-ia32-msvc': 1.0.3 + '@rspack/binding-win32-x64-msvc': 1.0.3 '@rspack/core@1.0.0(@swc/helpers@0.5.12)': dependencies: @@ -11906,6 +11821,15 @@ snapshots: optionalDependencies: '@swc/helpers': 0.5.12 + '@rspack/core@1.0.3(@swc/helpers@0.5.12)': + dependencies: + '@module-federation/runtime-tools': 0.5.1 + '@rspack/binding': 1.0.3 + '@rspack/lite-tapable': 1.0.0 + caniuse-lite: 1.0.30001659 + optionalDependencies: + '@swc/helpers': 0.5.12 + '@rspack/lite-tapable@1.0.0': {} '@rspack/plugin-react-refresh@1.0.0(react-refresh@0.14.2)': @@ -12062,10 +11986,6 @@ snapshots: '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.1': - dependencies: - tslib: 2.7.0 - '@swc/helpers@0.5.12': dependencies: tslib: 2.7.0 @@ -13173,6 +13093,8 @@ snapshots: caniuse-lite@1.0.30001653: {} + caniuse-lite@1.0.30001659: {} + chai@4.5.0: dependencies: assertion-error: 1.1.0 @@ -13352,8 +13274,6 @@ snapshots: array-ify: 1.0.0 dot-prop: 5.3.0 - compare-versions@6.0.0-rc.1: {} - compare-versions@6.1.1: {} compress-commons@6.0.2: @@ -13445,8 +13365,6 @@ snapshots: dependencies: is-what: 4.1.8 - core-js@3.32.2: {} - core-js@3.38.1: {} core-util-is@1.0.3: {} @@ -13774,11 +13692,6 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.12.0: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - enhanced-resolve@5.17.0: dependencies: graceful-fs: 4.2.11 @@ -14304,8 +14217,6 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - fast-decode-uri-component@1.0.1: {} - fast-deep-equal@2.0.1: {} fast-deep-equal@3.1.3: {} @@ -14324,10 +14235,6 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-querystring@1.1.2: - dependencies: - fast-decode-uri-component: 1.0.1 - fastest-levenshtein@1.0.16: {} fastq@1.17.1: @@ -14620,8 +14527,6 @@ snapshots: dependencies: get-intrinsic: 1.2.4 - graceful-fs@4.2.10: {} - graceful-fs@4.2.11: {} graphemer@1.4.0: {} @@ -14706,12 +14611,7 @@ snapshots: relateurl: 0.2.7 terser: 5.31.1 - html-rspack-plugin@5.5.7: - dependencies: - lodash: 4.17.21 - tapable: 2.2.1 - - html-webpack-plugin@5.6.0(@rspack/core@1.0.0(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.0(@rspack/core@1.0.3(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -14719,7 +14619,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - '@rspack/core': 1.0.0(@swc/helpers@0.5.12) + '@rspack/core': 1.0.3(@swc/helpers@0.5.12) webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) htmlparser2@6.1.0: @@ -15105,8 +15005,6 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-parse-even-better-errors@3.0.2: {} - json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -15172,8 +15070,6 @@ snapshots: dependencies: readable-stream: 2.3.8 - levdist@1.0.0: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -15195,10 +15091,6 @@ snapshots: lilconfig@3.1.2: {} - line-diff@2.1.1: - dependencies: - levdist: 1.0.0 - lines-and-columns@1.2.4: {} lines-and-columns@2.0.4: {} @@ -16233,12 +16125,6 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.4.31: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.0 - source-map-js: 1.2.0 - postcss@8.4.40: dependencies: nanoid: 3.3.7 @@ -16369,8 +16255,6 @@ snapshots: react-is@18.2.0: {} - react-refresh@0.14.0: {} - react-refresh@0.14.2: {} react-remove-scroll-bar@2.3.4(@types/react@18.3.3)(react@18.3.1): @@ -17005,11 +16889,6 @@ snapshots: supports-color@9.4.0: {} - supports-hyperlinks@2.3.0: - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - supports-hyperlinks@3.1.0: dependencies: has-flag: 4.0.0 @@ -17124,11 +17003,6 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - terminal-link@2.1.1: - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -18194,8 +18068,4 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.5.2 - zod-validation-error@1.2.0(zod@3.23.8): - dependencies: - zod: 3.23.8 - zod@3.23.8: {} From 1704db9dfdfdd8330a50e003c0a49fae4ebcf4e0 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Mon, 9 Sep 2024 23:06:43 +0000 Subject: [PATCH 077/154] release: v1.57.1 --- examples/react/authenticated-routes/package.json | 2 +- examples/react/basic-file-based-codesplitting/package.json | 2 +- examples/react/basic-file-based/package.json | 2 +- examples/react/basic-react-query-file-based/package.json | 2 +- examples/react/basic-ssr-file-based/package.json | 4 ++-- examples/react/basic-ssr-streaming-file-based/package.json | 4 ++-- examples/react/basic-virtual-file-based/package.json | 2 +- examples/react/basic-virtual-inside-file-based/package.json | 2 +- examples/react/kitchen-sink-file-based/package.json | 2 +- .../react/kitchen-sink-react-query-file-based/package.json | 2 +- examples/react/large-file-based/package.json | 2 +- examples/react/quickstart-file-based/package.json | 2 +- examples/react/quickstart-rspack-file-based/package.json | 2 +- examples/react/quickstart-webpack-file-based/package.json | 2 +- examples/react/search-validator-adapters/package.json | 2 +- examples/react/start-basic-auth/package.json | 4 ++-- examples/react/start-basic-counter/package.json | 2 +- examples/react/start-basic-react-query/package.json | 4 ++-- examples/react/start-basic-rsc/package.json | 4 ++-- examples/react/start-basic/package.json | 4 ++-- examples/react/start-clerk-basic/package.json | 4 ++-- examples/react/start-convex-trellaux/package.json | 4 ++-- examples/react/start-supabase-basic/package.json | 4 ++-- examples/react/start-trellaux/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 2 +- examples/react/with-trpc/package.json | 2 +- packages/create-router/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/start/package.json | 2 +- 30 files changed, 40 insertions(+), 40 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 2ecef991bf..35ca1e4585 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index c97eee0cd1..9ff6385230 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index fe78946544..8e9f75f99f 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -12,7 +12,7 @@ "dependencies": { "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 5b9e9bb6a9..76e81aabbf 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 0fe66c8c6b..3a3c0d3dd8 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.5", + "@tanstack/router-plugin": "^1.57.1", + "@tanstack/start": "^1.57.1", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 6c30fde06c..087527932a 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.5", + "@tanstack/router-plugin": "^1.57.1", + "@tanstack/start": "^1.57.1", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index b9d404475f..bdc72ca4e4 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -12,7 +12,7 @@ "dependencies": { "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 036e4e6c32..25791bf9b1 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index bf6e29a94d..7a654e857b 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.56.2", "@tanstack/router-devtools": "^1.56.2", - "@tanstack/router-plugin": "^1.56.2", + "@tanstack/router-plugin": "^1.57.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 454a75e0c2..486a2aea68 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -13,7 +13,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 31ca6b1de7..6ae677b756 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query": "^5.51.21", "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 2330b6db6d..09b2a4d6ee 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 9d81eea5b6..d3478efd76 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.5.3" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index d2b01a08a3..10d73080af 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 201b2c38de..720eeaaeac 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "@tanstack/router-zod-adapter": "^1.56.5", "@tanstack/router-valibot-adapter": "^1.56.5", "@tanstack/router-arktype-adapter": "^1.56.5", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 9ad9d4a5b5..dfe594abc9 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -16,8 +16,8 @@ "@prisma/client": "5.17.0", "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.5", + "@tanstack/router-plugin": "^1.57.1", + "@tanstack/start": "^1.57.1", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 454e7aad36..feb15f8991 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@tanstack/react-router": "^1.56.5", - "@tanstack/start": "^1.56.5", + "@tanstack/start": "^1.57.1", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 8d6c260b78..b4411082a6 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -17,8 +17,8 @@ "@tanstack/react-router": "^1.56.5", "@tanstack/react-router-with-query": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.5", + "@tanstack/router-plugin": "^1.57.1", + "@tanstack/start": "^1.57.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index adff4b18b9..a078ad84c2 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -14,8 +14,8 @@ "@babel/plugin-syntax-typescript": "^7.24.7", "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.5", + "@tanstack/router-plugin": "^1.57.1", + "@tanstack/start": "^1.57.1", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index c6565fcac9..ddfb3a0e94 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -14,8 +14,8 @@ "dependencies": { "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.5", + "@tanstack/router-plugin": "^1.57.1", + "@tanstack/start": "^1.57.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 8e7b1c8f73..a44b6e5689 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -15,8 +15,8 @@ "@clerk/tanstack-start": "0.3.5", "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.5", + "@tanstack/router-plugin": "^1.57.1", + "@tanstack/start": "^1.57.1", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 1343f107e9..30860b8034 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -18,8 +18,8 @@ "@tanstack/react-router": "^1.56.5", "@tanstack/react-router-with-query": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.5", + "@tanstack/router-plugin": "^1.57.1", + "@tanstack/start": "^1.57.1", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 900917d320..5a129644c9 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -16,9 +16,9 @@ "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.3", "@tanstack/react-router": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/start": "^1.56.5", + "@tanstack/start": "^1.57.1", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 1e9ba4bb92..0120e0fa93 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -16,8 +16,8 @@ "@tanstack/react-router": "^1.56.5", "@tanstack/react-router-with-query": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", - "@tanstack/start": "^1.56.5", + "@tanstack/router-plugin": "^1.57.1", + "@tanstack/start": "^1.57.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 5e037199d2..7cfc1a8208 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -12,7 +12,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index e8529557a1..a9b87b3869 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -10,7 +10,7 @@ "dependencies": { "@tanstack/react-router": "^1.56.5", "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.56.4", + "@tanstack/router-plugin": "^1.57.1", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 7192ecf0c4..beed3f07ba 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.0", + "version": "1.57.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 709ae48457..855267d14a 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.56.4", + "version": "1.57.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 59ebf76740..602b6c42e5 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.56.4", + "version": "1.57.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 8e36ca9733..93d015d738 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.56.5", + "version": "1.57.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 7b96a80f779884ac1f17a26044e754ac628c40b5 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Tue, 10 Sep 2024 01:25:30 +0200 Subject: [PATCH 078/154] fix(create-router): load package.json at runtime (#2303) --- packages/create-router/src/cli.ts | 2 +- .../src/utils/getPeerDependencyVersion.ts | 5 ++--- packages/create-router/src/utils/packageJson.ts | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 packages/create-router/src/utils/packageJson.ts diff --git a/packages/create-router/src/cli.ts b/packages/create-router/src/cli.ts index d92efe1c95..4b14a81004 100644 --- a/packages/create-router/src/cli.ts +++ b/packages/create-router/src/cli.ts @@ -1,6 +1,5 @@ import { basename, resolve } from 'node:path' import { Command, InvalidArgumentError } from 'commander' -import packageJson from '../package.json' import { NAME, SUPPORTED_BUNDLERS, @@ -8,6 +7,7 @@ import { } from './constants' import { validateProjectName } from './utils/validateProjectName' import { getPackageManager } from './utils/getPackageManager' +import { packageJson } from './utils/packageJson' import type { Bundler, PackageManager } from './constants' let directory: string | undefined diff --git a/packages/create-router/src/utils/getPeerDependencyVersion.ts b/packages/create-router/src/utils/getPeerDependencyVersion.ts index 604e67ad5c..a7f38a2b72 100644 --- a/packages/create-router/src/utils/getPeerDependencyVersion.ts +++ b/packages/create-router/src/utils/getPeerDependencyVersion.ts @@ -1,7 +1,6 @@ +import { resolve } from 'node:path' import type { PeerDependency } from '../types' -// do not import at build time since router peer dependencies will still be '*' -// eslint-disable-next-line import/no-commonjs -const packageJson = require('../../package.json') +import { packageJson } from './packageJson' export function getDependenciesWithVersion(deps: Array) { return deps.reduce( diff --git a/packages/create-router/src/utils/packageJson.ts b/packages/create-router/src/utils/packageJson.ts new file mode 100644 index 0000000000..4522a1edae --- /dev/null +++ b/packages/create-router/src/utils/packageJson.ts @@ -0,0 +1,14 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { fileURLToPath } from 'node:url' + +async function readPackageJson() { + const PACKAGE_JSON_FILE = resolve( + fileURLToPath(import.meta.url), + '../../package.json', + ) + const packageJson = await readFile(PACKAGE_JSON_FILE, 'utf-8') + return JSON.parse(packageJson) +} + +export const packageJson = await readPackageJson() From c5e5110a990b9707bf91d4f68d6cb49e4c552cce Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Tue, 10 Sep 2024 01:30:50 +0200 Subject: [PATCH 079/154] fix(create-router): dependencies (#2304) --- packages/create-router/package.json | 6 +++--- .../create-router/src/utils/getPeerDependencyVersion.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/create-router/package.json b/packages/create-router/package.json index beed3f07ba..773e9de36f 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -48,9 +48,9 @@ "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", "@swc/core": "^1.7.6", - "@tanstack/react-router": "workspace:*", - "@tanstack/router-devtools": "workspace:*", - "@tanstack/router-plugin": "workspace:*", + "@tanstack/react-router": "workspace:^*", + "@tanstack/router-devtools": "workspace:^*", + "@tanstack/router-plugin": "workspace:^*", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", diff --git a/packages/create-router/src/utils/getPeerDependencyVersion.ts b/packages/create-router/src/utils/getPeerDependencyVersion.ts index a7f38a2b72..b419626378 100644 --- a/packages/create-router/src/utils/getPeerDependencyVersion.ts +++ b/packages/create-router/src/utils/getPeerDependencyVersion.ts @@ -1,6 +1,6 @@ import { resolve } from 'node:path' -import type { PeerDependency } from '../types' import { packageJson } from './packageJson' +import type { PeerDependency } from '../types' export function getDependenciesWithVersion(deps: Array) { return deps.reduce( From f3be5556b3ede3ec2af8078980a551ad9f6226a0 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Mon, 9 Sep 2024 23:32:31 +0000 Subject: [PATCH 080/154] release: v1.57.2 --- packages/create-router/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 773e9de36f..d9e06269dc 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.1", + "version": "1.57.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 6b184ae74e660d9643ba8a6c3760558798dcf0dd Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Tue, 10 Sep 2024 01:35:21 +0200 Subject: [PATCH 081/154] fix(react-router): dependencies (#2305) --- packages/create-router/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/create-router/package.json b/packages/create-router/package.json index d9e06269dc..c95bdb811b 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -48,9 +48,9 @@ "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", "@swc/core": "^1.7.6", - "@tanstack/react-router": "workspace:^*", - "@tanstack/router-devtools": "workspace:^*", - "@tanstack/router-plugin": "workspace:^*", + "@tanstack/react-router": "workspace:^", + "@tanstack/router-devtools": "workspace:^", + "@tanstack/router-plugin": "workspace:^", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", From 67686f7edec5ec5548f54dbaeefd4e5656b8a8db Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Mon, 9 Sep 2024 23:44:19 +0000 Subject: [PATCH 082/154] release: v1.57.3 --- packages/create-router/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-router/package.json b/packages/create-router/package.json index c95bdb811b..d9c16f5af7 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.2", + "version": "1.57.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 6e68fed4ecb9e3a0fbd97b7c6b1e6d2435207ab6 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Tue, 10 Sep 2024 01:46:31 +0200 Subject: [PATCH 083/154] fix(create-router): dependencies --- packages/create-router/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/create-router/package.json b/packages/create-router/package.json index d9c16f5af7..1db7b92899 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -45,8 +45,8 @@ "yocto-spinner": "^0.1.0" }, "peerDependencies": { - "@rsbuild/core": "1.0.1-rc.0", - "@rsbuild/plugin-react": "1.0.1-rc.0", + "@rsbuild/core": "1.0.1-rc.5", + "@rsbuild/plugin-react": "1.0.1-rc.5", "@swc/core": "^1.7.6", "@tanstack/react-router": "workspace:^", "@tanstack/router-devtools": "workspace:^", From ca90bc36e04c244ba6cfcd7ae82435ff5bfb10a9 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Tue, 10 Sep 2024 02:08:00 +0200 Subject: [PATCH 084/154] chore: dependencies (#2306) --- pnpm-lock.yaml | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4405e9c4bb..337c0d8175 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1948,11 +1948,11 @@ importers: packages/create-router: dependencies: '@rsbuild/core': - specifier: 1.0.1-rc.0 - version: 1.0.1-rc.0 + specifier: 1.0.1-rc.5 + version: 1.0.1-rc.5 '@rsbuild/plugin-react': - specifier: 1.0.1-rc.0 - version: 1.0.1-rc.0(@rsbuild/core@1.0.1-rc.0) + specifier: 1.0.1-rc.5 + version: 1.0.1-rc.5(@rsbuild/core@1.0.1-rc.5) '@swc/core': specifier: ^1.7.6 version: 1.7.6(@swc/helpers@0.5.12) @@ -4429,6 +4429,11 @@ packages: peerDependencies: '@rsbuild/core': ^1.0.1-rc.0 + '@rsbuild/plugin-react@1.0.1-rc.5': + resolution: {integrity: sha512-8W/PK8l//CsGXxfo8psDttyYimdehZ6n5mm8rz5QwNnyKtuxvjUS30P7meQjJxTrZTlZU3LN6yB63tOcD9xtdQ==} + peerDependencies: + '@rsbuild/core': ^1.0.1-rc.4 + '@rspack/binding-darwin-arm64@1.0.0': resolution: {integrity: sha512-ZHQk9YK+swlTG48kJTgzFUW9T26KjhLXRok5la7t2AMoiuHyhGHHgC5iQfPJLZ62XzcJ/rfqs2rwakl97151jQ==} cpu: [arm64] @@ -11734,6 +11739,12 @@ snapshots: '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) react-refresh: 0.14.2 + '@rsbuild/plugin-react@1.0.1-rc.5(@rsbuild/core@1.0.1-rc.5)': + dependencies: + '@rsbuild/core': 1.0.1-rc.5 + '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) + react-refresh: 0.14.2 + '@rspack/binding-darwin-arm64@1.0.0': optional: true @@ -11817,7 +11828,7 @@ snapshots: '@module-federation/runtime-tools': 0.5.1 '@rspack/binding': 1.0.0 '@rspack/lite-tapable': 1.0.0 - caniuse-lite: 1.0.30001653 + caniuse-lite: 1.0.30001659 optionalDependencies: '@swc/helpers': 0.5.12 @@ -13087,7 +13098,7 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.23.3 - caniuse-lite: 1.0.30001653 + caniuse-lite: 1.0.30001659 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 From cc603ff1f62030d9015d735e7c186a396a1e6d74 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Tue, 10 Sep 2024 00:09:19 +0000 Subject: [PATCH 085/154] release: v1.57.4 --- packages/create-router/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 1db7b92899..eb5654a623 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.3", + "version": "1.57.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 57a698d2ab1a740fb8cceb6037a2ed191f2b9e7c Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Tue, 10 Sep 2024 02:19:30 +0200 Subject: [PATCH 086/154] fix(create-router): wrong text --- packages/create-router/src/create.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-router/src/create.ts b/packages/create-router/src/create.ts index a897cd1799..37e55fe942 100644 --- a/packages/create-router/src/create.ts +++ b/packages/create-router/src/create.ts @@ -101,7 +101,7 @@ export async function create({ const buildSpinner = yoctoSpinner({ text: 'building project' }).start() try { await build(packageManager) - buildSpinner.success('dependencies installed') + buildSpinner.success('project built') } catch (e) { console.error(e) buildSpinner.error('failed to build project') From fe2654643b245c767e4c195adc0f5a31806efb62 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Tue, 10 Sep 2024 00:23:19 +0000 Subject: [PATCH 087/154] release: v1.57.5 --- packages/create-router/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-router/package.json b/packages/create-router/package.json index eb5654a623..5aee2844a6 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.4", + "version": "1.57.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 08907103291733fdc851ef9547d4f672ddefe433 Mon Sep 17 00:00:00 2001 From: Christopher Horobin Date: Tue, 10 Sep 2024 01:29:52 +0100 Subject: [PATCH 088/154] chore: support TS 5.6 and drop support for 5.0 (#2299) --- docs/framework/react/installation.md | 2 +- .../quickstart-rspack-file-based/package.json | 2 +- .../package.json | 2 +- examples/react/start-basic-auth/package.json | 4 +- .../react/start-basic-counter/package.json | 4 +- .../start-basic-react-query/package.json | 4 +- examples/react/start-basic-rsc/package.json | 2 +- examples/react/start-basic/package.json | 4 +- examples/react/start-clerk-basic/package.json | 4 +- .../react/start-convex-trellaux/package.json | 2 +- .../react/start-supabase-basic/package.json | 2 +- examples/react/start-trellaux/package.json | 2 +- package.json | 6 +- packages/history/package.json | 4 +- packages/react-cross-context/package.json | 4 +- packages/react-router-with-query/package.json | 4 +- packages/react-router/package.json | 4 +- packages/react-router/src/router.ts | 16 +- packages/router-arktype-adapter/package.json | 4 +- packages/router-cli/package.json | 4 +- packages/router-devtools/package.json | 4 +- packages/router-generator/package.json | 4 +- packages/router-plugin/package.json | 4 +- packages/router-valibot-adapter/package.json | 4 +- packages/router-vite-plugin/package.json | 4 +- packages/router-zod-adapter/package.json | 4 +- packages/start-vite-plugin/package.json | 4 +- packages/start/package.json | 6 +- pnpm-lock.yaml | 726 ++++++++---------- 29 files changed, 373 insertions(+), 467 deletions(-) diff --git a/docs/framework/react/installation.md b/docs/framework/react/installation.md index 9d477c3932..c092a9fc83 100644 --- a/docs/framework/react/installation.md +++ b/docs/framework/react/installation.md @@ -20,4 +20,4 @@ TanStack Router is currently only compatible with React and ReactDOM. If you wou - React v18.x.x - ReactDOM v18.x.x -- TypeScript v5.x.x (TypeScript is optional, but recommended) +- TypeScript >= v5.1.x (TypeScript is optional, but recommended) diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index d3478efd76..0706ba7d3e 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -19,6 +19,6 @@ "@tanstack/router-plugin": "^1.57.1", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", - "typescript": "^5.5.3" + "typescript": "^5.6.2" } } diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 10d73080af..f01f2b3458 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -19,7 +19,7 @@ "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", "swc-loader": "^0.2.6", - "typescript": "^5.5.3", + "typescript": "^5.6.2", "webpack": "^5.93.0", "webpack-cli": "^5.1.4", "webpack-dev-server": "^5.0.4" diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index dfe594abc9..28d4ab79e0 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -32,7 +32,7 @@ "devDependencies": { "@playwright/test": "^1.46.1", "@replayio/playwright": "^3.1.8", - "@types/node": "^20.12.11", + "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", @@ -40,7 +40,7 @@ "postcss": "^8.4.39", "prettier": "^3.3.3", "tailwindcss": "^3.4.4", - "typescript": "^5.5.3", + "typescript": "^5.6.2", "vite": "^5.3.3", "vite-tsconfig-paths": "^5.0.1" } diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index feb15f8991..e71a52b434 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -18,11 +18,11 @@ "vinxi": "0.4.2" }, "devDependencies": { - "@types/node": "^20.12.11", + "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", "prettier": "^3.3.3", - "typescript": "^5.5.3", + "typescript": "^5.6.2", "vite": "^5.3.5" } } diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index b4411082a6..47c2b3a932 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -29,7 +29,7 @@ }, "devDependencies": { "@playwright/test": "^1.46.1", - "@types/node": "^20.12.11", + "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", @@ -37,7 +37,7 @@ "postcss": "^8.4.40", "prettier": "^3.3.3", "tailwindcss": "^3.4.7", - "typescript": "^5.5.3", + "typescript": "^5.6.2", "vite": "^5.3.5", "vite-tsconfig-paths": "^5.0.1" } diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index a078ad84c2..9441104f1f 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -28,7 +28,7 @@ "postcss": "^8.4.40", "prettier": "^3.3.3", "tailwindcss": "^3.4.7", - "typescript": "^5.5.3", + "typescript": "^5.6.2", "vite": "^5.3.5", "vite-tsconfig-paths": "^5.0.1" }, diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index ddfb3a0e94..19640287d8 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -26,7 +26,7 @@ }, "devDependencies": { "@playwright/test": "^1.46.1", - "@types/node": "^20.12.11", + "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", @@ -34,7 +34,7 @@ "postcss": "^8.4.40", "prettier": "^3.3.3", "tailwindcss": "^3.4.7", - "typescript": "^5.5.3", + "typescript": "^5.6.2", "vite": "^5.3.5", "vite-tsconfig-paths": "^5.0.1" } diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index a44b6e5689..25ff8c741d 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@playwright/test": "^1.46.1", "@replayio/playwright": "^3.1.8", - "@types/node": "^20.12.11", + "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", @@ -38,7 +38,7 @@ "postcss": "^8.4.39", "prettier": "^3.3.3", "tailwindcss": "^3.4.4", - "typescript": "^5.5.3", + "typescript": "^5.6.2", "vite": "^5.3.3", "vite-tsconfig-paths": "^5.0.1" } diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 30860b8034..88ad554ce3 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -44,7 +44,7 @@ "postcss": "^8.4.40", "prettier": "^3.3.3", "tailwindcss": "^3.4.7", - "typescript": "^5.5.3", + "typescript": "^5.6.2", "vite": "^5.3.5", "vite-tsconfig-paths": "^5.0.1" } diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 5a129644c9..057a781c84 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -30,6 +30,6 @@ "autoprefixer": "^10.4.20", "postcss": "^8.4.45", "tailwindcss": "^3.4.10", - "typescript": "^5.5.3" + "typescript": "^5.6.2" } } diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 0120e0fa93..0dfff9ebd1 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -39,7 +39,7 @@ "postcss": "^8.4.40", "prettier": "^3.3.3", "tailwindcss": "^3.4.7", - "typescript": "^5.5.3", + "typescript": "^5.6.2", "vite": "^5.3.5", "vite-tsconfig-paths": "^5.0.1" } diff --git a/package.json b/package.json index 9365571e39..79e52a2b61 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@eslint-react/eslint-plugin": "^1.12.3", "@playwright/test": "^1.46.1", "@tanstack/config": "^0.13.1", - "@types/node": "^20.14.7", + "@types/node": "^22.5.4", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "eslint": "^9.9.1", @@ -48,12 +48,12 @@ "react-dom": "^18.3.1", "redaxios": "^0.5.1", "rimraf": "^5.0.10", - "typescript": "^5.5.3", - "typescript50": "npm:typescript@5.0", + "typescript": "^5.6.2", "typescript51": "npm:typescript@5.1", "typescript52": "npm:typescript@5.2", "typescript53": "npm:typescript@5.3", "typescript54": "npm:typescript@5.4", + "typescript55": "npm:typescript@5.5", "vite": "^5.3.5", "vitest": "^1.6.0" }, diff --git a/packages/history/package.json b/packages/history/package.json index c7b127cfe4..b48cd0a541 100644 --- a/packages/history/package.json +++ b/packages/history/package.json @@ -22,12 +22,12 @@ "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "test:unit": "vitest", "test:unit:dev": "pnpm run test:unit --watch", diff --git a/packages/react-cross-context/package.json b/packages/react-cross-context/package.json index a687361e09..ee8191d682 100644 --- a/packages/react-cross-context/package.json +++ b/packages/react-cross-context/package.json @@ -18,12 +18,12 @@ "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 0e6cae22ac..4b301f7805 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -27,12 +27,12 @@ "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:unit": "vitest", "test:unit:dev": "pnpm run test:unit --watch", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index e42a4b0ba6..f5e1587888 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -27,12 +27,12 @@ "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js -p tsconfig.legacy.json", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js -p tsconfig.legacy.json", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js -p tsconfig.legacy.json", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js -p tsconfig.legacy.json", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js -p tsconfig.legacy.json", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js -p tsconfig.legacy.json", + "test:types:ts56": "tsc -p tsconfig.legacy.json", "test:unit": "vitest", "test:unit:dev": "pnpm run test:unit --watch --hideSkippedTests", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index 3eb1cce5a1..ecf4a92845 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -1816,12 +1816,16 @@ export class Router< // Reset the view transition flag delete this.shouldViewTransition // Attempt to start a view transition (or just apply the changes if we can't) - ;(shouldViewTransition && typeof document !== 'undefined' - ? document - : undefined - ) - // @ts-expect-error - ?.startViewTransition?.(fn) || fn() + if ( + shouldViewTransition && + typeof document !== 'undefined' && + 'startViewTransition' in document && + typeof document.startViewTransition === 'function' + ) { + document.startViewTransition(fn) + } else { + fn() + } } updateMatch = ( diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 9d6586c4a5..a804073a24 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -27,12 +27,12 @@ "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:unit": "vitest", "test:unit:dev": "pnpm run test:unit --watch --typecheck", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 33a9827d45..5ed1b7b7c5 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -27,12 +27,12 @@ "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 12ab585e53..a723b339fd 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -27,12 +27,12 @@ "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 6702293f96..ba5950dc1c 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -27,12 +27,12 @@ "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:unit": "vitest", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 855267d14a..6c618632c2 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -30,12 +30,12 @@ "test:unit:dev": "vitest --watch", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 02a1b2108b..14110a6c1d 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -27,12 +27,12 @@ "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:unit": "vitest", "test:unit:dev": "pnpm run test:unit --watch --typecheck", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 602b6c42e5..76755119d4 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -29,12 +29,12 @@ "test:unit": "echo 'No unit tests are needed here since we do them in @tanstack/router-plugin!'", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index e440aa16f1..b8471da98b 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -27,12 +27,12 @@ "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:unit": "vitest", "test:unit:dev": "pnpm run test:unit --watch --typecheck", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", diff --git a/packages/start-vite-plugin/package.json b/packages/start-vite-plugin/package.json index b6a3fdc0ae..50326efba3 100644 --- a/packages/start-vite-plugin/package.json +++ b/packages/start-vite-plugin/package.json @@ -29,12 +29,12 @@ "test:unit": "vitest", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build" }, diff --git a/packages/start/package.json b/packages/start/package.json index 93d015d738..da9adda7e2 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -27,12 +27,12 @@ "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "tsc", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", "build": "vite build && pnpm build:config && pnpm build:router-manifest", "build:config": "tsc --project tsconfigs/config.tsconfig.json", @@ -154,7 +154,7 @@ "@vitejs/plugin-react": "^4.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", - "typescript": "^5.5.3" + "typescript": "^5.6.2" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 337c0d8175..090a1c260a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,16 +34,16 @@ importers: version: 0.15.4 '@eslint-react/eslint-plugin': specifier: ^1.12.3 - version: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + version: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@playwright/test': specifier: ^1.46.1 version: 1.46.1 '@tanstack/config': specifier: ^0.13.1 - version: 0.13.1(@types/node@20.14.9)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.6))(rollup@4.21.2)(typescript@5.5.3)(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)) + version: 0.13.1(@types/node@22.5.4)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.6))(rollup@4.21.2)(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) '@types/node': - specifier: ^20.14.7 - version: 20.14.9 + specifier: ^22.5.4 + version: 22.5.4 '@types/react': specifier: ^18.3.3 version: 18.3.3 @@ -84,11 +84,8 @@ importers: specifier: ^5.0.10 version: 5.0.10 typescript: - specifier: ^5.5.3 - version: 5.5.3 - typescript50: - specifier: npm:typescript@5.0 - version: typescript@5.0.4 + specifier: ^5.6.2 + version: 5.6.2 typescript51: specifier: npm:typescript@5.1 version: typescript@5.1.6 @@ -101,12 +98,15 @@ importers: typescript54: specifier: npm:typescript@5.4 version: typescript@5.4.5 + typescript55: + specifier: npm:typescript@5.5 + version: typescript@5.5.3 vite: specifier: ^5.3.5 - version: 5.4.3(@types/node@20.14.9)(terser@5.31.1) + version: 5.4.3(@types/node@22.5.4)(terser@5.31.1) vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.14.9)(jsdom@25.0.0)(terser@5.31.1) + version: 1.6.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.31.1) examples/react/authenticated-routes: dependencies: @@ -1030,8 +1030,8 @@ importers: specifier: ^18.3.0 version: 18.3.0 typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 examples/react/quickstart-webpack-file-based: dependencies: @@ -1067,8 +1067,8 @@ importers: specifier: ^0.2.6 version: 0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 webpack: specifier: ^5.93.0 version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) @@ -1144,7 +1144,7 @@ importers: version: 18.3.1(react@18.3.1) valibot: specifier: ^0.37.0 - version: 0.37.0(typescript@5.5.3) + version: 0.37.0(typescript@5.6.2) zod: specifier: ^3.23.8 version: 3.23.8 @@ -1178,7 +1178,7 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) isbot: specifier: ^5.1.14 version: 5.1.14 @@ -1196,14 +1196,14 @@ importers: version: 2.5.2 vinxi: specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@playwright/test': specifier: ^1.46.1 version: 1.46.1 '@types/node': - specifier: ^20.12.11 - version: 20.14.9 + specifier: ^22.5.4 + version: 22.5.4 '@types/react': specifier: ^18.2.65 version: 18.3.3 @@ -1223,14 +1223,14 @@ importers: specifier: ^3.4.7 version: 3.4.7 typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-basic-auth: dependencies: @@ -1251,7 +1251,7 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -1272,13 +1272,13 @@ importers: version: 0.5.1 remix-auth-form: specifier: ^1.5.0 - version: 1.5.0(@remix-run/server-runtime@2.11.2(typescript@5.5.3))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.2(typescript@5.5.3))) + version: 1.5.0(@remix-run/server-runtime@2.11.2(typescript@5.6.2))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2))(@remix-run/server-runtime@2.11.2(typescript@5.6.2))) tailwind-merge: specifier: ^2.5.2 version: 2.5.2 vinxi: specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@playwright/test': specifier: ^1.46.1 @@ -1287,8 +1287,8 @@ importers: specifier: ^3.1.8 version: 3.1.8(@playwright/test@1.46.1) '@types/node': - specifier: ^20.12.11 - version: 20.14.9 + specifier: ^22.5.4 + version: 22.5.4 '@types/react': specifier: ^18.2.65 version: 18.3.3 @@ -1308,14 +1308,14 @@ importers: specifier: ^3.4.4 version: 3.4.7 typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 vite: specifier: ^5.3.3 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-basic-counter: dependencies: @@ -1333,11 +1333,11 @@ importers: version: 18.3.1(react@18.3.1) vinxi: specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@types/node': - specifier: ^20.12.11 - version: 20.14.9 + specifier: ^22.5.4 + version: 22.5.4 '@types/react': specifier: ^18.2.65 version: 18.3.3 @@ -1348,11 +1348,11 @@ importers: specifier: ^3.3.3 version: 3.3.3 typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) examples/react/start-basic-react-query: dependencies: @@ -1379,7 +1379,7 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) isbot: specifier: ^5.1.14 version: 5.1.14 @@ -1397,14 +1397,14 @@ importers: version: 2.5.2 vinxi: specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@playwright/test': specifier: ^1.46.1 version: 1.46.1 '@types/node': - specifier: ^20.12.11 - version: 20.14.9 + specifier: ^22.5.4 + version: 22.5.4 '@types/react': specifier: ^18.2.65 version: 18.3.3 @@ -1424,14 +1424,14 @@ importers: specifier: ^3.4.7 version: 3.4.7 typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-basic-rsc: dependencies: @@ -1482,14 +1482,14 @@ importers: specifier: ^3.4.7 version: 3.4.7 typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 vite: specifier: ^5.3.5 version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-clerk-basic: dependencies: @@ -1510,7 +1510,7 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -1528,13 +1528,13 @@ importers: version: 0.5.1 remix-auth-form: specifier: ^1.5.0 - version: 1.5.0(@remix-run/server-runtime@2.11.2(typescript@5.5.3))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.2(typescript@5.5.3))) + version: 1.5.0(@remix-run/server-runtime@2.11.2(typescript@5.6.2))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2))(@remix-run/server-runtime@2.11.2(typescript@5.6.2))) tailwind-merge: specifier: ^2.5.2 version: 2.5.2 vinxi: specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1) + version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@playwright/test': specifier: ^1.46.1 @@ -1543,8 +1543,8 @@ importers: specifier: ^3.1.8 version: 3.1.8(@playwright/test@1.46.1) '@types/node': - specifier: ^20.12.11 - version: 20.14.9 + specifier: ^22.5.4 + version: 22.5.4 '@types/react': specifier: ^18.2.65 version: 18.3.3 @@ -1564,14 +1564,14 @@ importers: specifier: ^3.4.4 version: 3.4.7 typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 vite: specifier: ^5.3.3 - version: 5.3.5(@types/node@20.14.9)(terser@5.31.1) + version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-convex-trellaux: dependencies: @@ -1616,7 +1616,7 @@ importers: version: 1.5.0 msw: specifier: ^2.3.5 - version: 2.3.5(typescript@5.5.3) + version: 2.3.5(typescript@5.6.2) react: specifier: ^18.3.1 version: 18.3.1 @@ -1661,14 +1661,14 @@ importers: specifier: ^3.4.7 version: 3.4.7 typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 vite: specifier: ^5.3.5 version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-supabase-basic: dependencies: @@ -1719,8 +1719,8 @@ importers: specifier: ^3.4.10 version: 3.4.10 typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 examples/react/start-trellaux: dependencies: @@ -1756,7 +1756,7 @@ importers: version: 1.5.0 msw: specifier: ^2.3.5 - version: 2.3.5(typescript@5.5.3) + version: 2.3.5(typescript@5.6.2) react: specifier: ^18.3.1 version: 18.3.1 @@ -1801,14 +1801,14 @@ importers: specifier: ^3.4.7 version: 3.4.7 typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 vite: specifier: ^5.3.5 version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/with-framer-motion: dependencies: @@ -2331,7 +2331,7 @@ importers: version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.5.3)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2349,8 +2349,8 @@ importers: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 packages/start-vite-plugin: dependencies: @@ -9272,11 +9272,6 @@ packages: typescript: optional: true - typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} - hasBin: true - typescript@5.1.6: resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} @@ -9307,6 +9302,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} + engines: {node: '>=14.17'} + hasBin: true + uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} @@ -10553,13 +10553,13 @@ snapshots: '@eslint-community/regexpp@4.11.0': {} - '@eslint-react/ast@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': + '@eslint-react/ast@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) birecord: 0.1.1 string-ts: 2.2.0 ts-pattern: 5.3.1 @@ -10568,18 +10568,18 @@ snapshots: - supports-color - typescript - '@eslint-react/core@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': + '@eslint-react/core@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) birecord: 0.1.1 short-unique-id: 5.2.0 ts-pattern: 5.3.1 @@ -10588,46 +10588,46 @@ snapshots: - supports-color - typescript - '@eslint-react/eslint-plugin@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': + '@eslint-react/eslint-plugin@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) eslint: 9.9.1(jiti@1.21.6) - eslint-plugin-react-debug: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - eslint-plugin-react-dom: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - eslint-plugin-react-hooks-extra: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - eslint-plugin-react-naming-convention: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - eslint-plugin-react-web-api: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - eslint-plugin-react-x: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint-plugin-react-debug: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-react-dom: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-react-hooks-extra: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-react-naming-convention: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-react-web-api: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-react-x: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@eslint-react/jsx@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': + '@eslint-react/jsx@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': + '@eslint-react/shared@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-react/tools': 1.12.3 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) picomatch: 4.0.2 transitivePeerDependencies: - eslint @@ -10636,24 +10636,24 @@ snapshots: '@eslint-react/tools@1.12.3': {} - '@eslint-react/types@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': + '@eslint-react/types@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-react/tools': 1.12.3 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/var@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': + '@eslint-react/var@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) ts-pattern: 5.3.1 transitivePeerDependencies: - eslint @@ -10892,23 +10892,23 @@ snapshots: - encoding - supports-color - '@microsoft/api-extractor-model@7.29.4(@types/node@20.14.9)': + '@microsoft/api-extractor-model@7.29.4(@types/node@22.5.4)': dependencies: '@microsoft/tsdoc': 0.15.0 '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.5.1(@types/node@20.14.9) + '@rushstack/node-core-library': 5.5.1(@types/node@22.5.4) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.47.4(@types/node@20.14.9)': + '@microsoft/api-extractor@7.47.4(@types/node@22.5.4)': dependencies: - '@microsoft/api-extractor-model': 7.29.4(@types/node@20.14.9) + '@microsoft/api-extractor-model': 7.29.4(@types/node@22.5.4) '@microsoft/tsdoc': 0.15.0 '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.5.1(@types/node@20.14.9) + '@rushstack/node-core-library': 5.5.1(@types/node@22.5.4) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.13.3(@types/node@20.14.9) - '@rushstack/ts-command-line': 4.22.3(@types/node@20.14.9) + '@rushstack/terminal': 0.13.3(@types/node@22.5.4) + '@rushstack/ts-command-line': 4.22.3(@types/node@22.5.4) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.8 @@ -11413,23 +11413,23 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3)': + '@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)': dependencies: '@remix-run/router': 1.19.0 - '@remix-run/server-runtime': 2.11.1(typescript@5.5.3) + '@remix-run/server-runtime': 2.11.1(typescript@5.6.2) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-router: 6.26.0(react@18.3.1) react-router-dom: 6.26.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) turbo-stream: 2.2.0 optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 '@remix-run/router@1.19.0': {} '@remix-run/router@1.19.1': {} - '@remix-run/server-runtime@2.11.1(typescript@5.5.3)': + '@remix-run/server-runtime@2.11.1(typescript@5.6.2)': dependencies: '@remix-run/router': 1.19.0 '@types/cookie': 0.6.0 @@ -11439,9 +11439,9 @@ snapshots: source-map: 0.7.4 turbo-stream: 2.2.0 optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 - '@remix-run/server-runtime@2.11.2(typescript@5.5.3)': + '@remix-run/server-runtime@2.11.2(typescript@5.6.2)': dependencies: '@remix-run/router': 1.19.1 '@types/cookie': 0.6.0 @@ -11451,7 +11451,7 @@ snapshots: source-map: 0.7.4 turbo-stream: 2.3.0 optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 '@replayio/playwright@3.1.8(@playwright/test@1.46.1)': dependencies: @@ -11850,7 +11850,7 @@ snapshots: optionalDependencies: react-refresh: 0.14.2 - '@rushstack/node-core-library@5.5.1(@types/node@20.14.9)': + '@rushstack/node-core-library@5.5.1(@types/node@22.5.4)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -11861,23 +11861,23 @@ snapshots: resolve: 1.22.8 semver: 7.5.4 optionalDependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.13.3(@types/node@20.14.9)': + '@rushstack/terminal@0.13.3(@types/node@22.5.4)': dependencies: - '@rushstack/node-core-library': 5.5.1(@types/node@20.14.9) + '@rushstack/node-core-library': 5.5.1(@types/node@22.5.4) supports-color: 8.1.1 optionalDependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 - '@rushstack/ts-command-line@4.22.3(@types/node@20.14.9)': + '@rushstack/ts-command-line@4.22.3(@types/node@22.5.4)': dependencies: - '@rushstack/terminal': 0.13.3(@types/node@20.14.9) + '@rushstack/terminal': 0.13.3(@types/node@22.5.4) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -12005,7 +12005,7 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tanstack/config@0.13.1(@types/node@20.14.9)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.6))(rollup@4.21.2)(typescript@5.5.3)(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1))': + '@tanstack/config@0.13.1(@types/node@22.5.4)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.6))(rollup@4.21.2)(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1))': dependencies: '@commitlint/parse': 19.0.3 '@eslint/js': 9.9.1 @@ -12013,7 +12013,7 @@ snapshots: commander: 12.1.0 current-git-branch: 1.1.0 esbuild-register: 3.6.0(esbuild@0.23.1) - eslint-plugin-import-x: 4.1.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + eslint-plugin-import-x: 4.1.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) eslint-plugin-n: 17.10.2(eslint@9.9.1(jiti@1.21.6)) globals: 15.9.0 interpret: 3.1.1 @@ -12023,14 +12023,14 @@ snapshots: rollup-plugin-preserve-directives: 0.4.0(rollup@4.21.2) semver: 7.6.3 simple-git: 3.25.0 - typedoc: 0.26.6(typescript@5.5.3) - typedoc-plugin-frontmatter: 1.0.0(typedoc-plugin-markdown@4.2.6(typedoc@0.26.6(typescript@5.5.3))) - typedoc-plugin-markdown: 4.2.6(typedoc@0.26.6(typescript@5.5.3)) - typescript-eslint: 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + typedoc: 0.26.6(typescript@5.6.2) + typedoc-plugin-frontmatter: 1.0.0(typedoc-plugin-markdown@4.2.6(typedoc@0.26.6(typescript@5.6.2))) + typedoc-plugin-markdown: 4.2.6(typedoc@0.26.6(typescript@5.6.2)) + typescript-eslint: 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) v8flags: 4.0.1 - vite-plugin-dts: 4.0.3(@types/node@20.14.9)(rollup@4.21.2)(typescript@5.5.3)(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)) - vite-plugin-externalize-deps: 0.8.0(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)) - vite-tsconfig-paths: 5.0.1(typescript@5.5.3)(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)) + vite-plugin-dts: 4.0.3(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + vite-plugin-externalize-deps: 0.8.0(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + vite-tsconfig-paths: 5.0.1(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) transitivePeerDependencies: - '@types/node' - esbuild @@ -12152,32 +12152,32 @@ snapshots: '@types/body-parser@1.19.2': dependencies: '@types/connect': 3.4.35 - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/bonjour@3.5.13': dependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/braces@3.0.4': {} '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.17.36 - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/connect@3.4.35': dependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/cookie@0.6.0': {} '@types/cross-spawn@6.0.6': dependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/eslint-scope@3.7.7': dependencies: @@ -12193,7 +12193,7 @@ snapshots: '@types/express-serve-static-core@4.17.36': dependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -12215,7 +12215,7 @@ snapshots: '@types/http-proxy@1.17.14': dependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/jsesc@3.0.3': {} @@ -12231,11 +12231,11 @@ snapshots: '@types/mute-stream@0.0.4': dependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/node@20.14.9': dependencies: @@ -12274,7 +12274,7 @@ snapshots: '@types/send@0.17.1': dependencies: '@types/mime': 1.3.2 - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/serve-index@1.9.4': dependencies: @@ -12284,11 +12284,11 @@ snapshots: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/sockjs@0.3.36': dependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/statuses@2.0.5': {} @@ -12304,7 +12304,7 @@ snapshots: '@types/ws@8.5.10': dependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 '@types/yargs-parser@21.0.0': {} @@ -12312,34 +12312,34 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.0 - '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': + '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/visitor-keys': 8.3.0 eslint: 9.9.1(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.3) + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': + '@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) '@typescript-eslint/visitor-keys': 8.3.0 debug: 4.3.6 eslint: 9.9.1(jiti@1.21.6) optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -12348,21 +12348,21 @@ snapshots: '@typescript-eslint/types': 8.3.0 '@typescript-eslint/visitor-keys': 8.3.0 - '@typescript-eslint/type-utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': + '@typescript-eslint/type-utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) debug: 4.3.6 - ts-api-utils: 1.3.0(typescript@5.5.3) + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - eslint - supports-color '@typescript-eslint/types@8.3.0': {} - '@typescript-eslint/typescript-estree@8.3.0(typescript@5.5.3)': + '@typescript-eslint/typescript-estree@8.3.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 8.3.0 '@typescript-eslint/visitor-keys': 8.3.0 @@ -12371,18 +12371,18 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.3) + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3)': + '@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) eslint: 9.9.1(jiti@1.21.6) transitivePeerDependencies: - supports-color @@ -12477,17 +12477,6 @@ snapshots: recast: 0.23.4 vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) - '@vitejs/plugin-react@4.3.1(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1))': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) - '@types/babel__core': 7.20.5 - react-refresh: 0.14.2 - vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) - transitivePeerDependencies: - - supports-color - '@vitejs/plugin-react@4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1))': dependencies: '@babel/core': 7.25.2 @@ -12581,6 +12570,20 @@ snapshots: path-browserify: 1.0.1 optionalDependencies: typescript: 5.5.3 + optional: true + + '@vue/language-core@2.0.29(typescript@5.6.2)': + dependencies: + '@volar/language-core': 2.4.0 + '@vue/compiler-dom': 3.4.27 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.4.27 + computeds: 0.0.1 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.6.2 '@vue/shared@3.4.27': {} @@ -13901,10 +13904,10 @@ snapshots: eslint: 9.9.1(jiti@1.21.6) eslint-compat-utils: 0.5.1(eslint@9.9.1(jiti@1.21.6)) - eslint-plugin-import-x@4.1.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): + eslint-plugin-import-x@4.1.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) debug: 4.3.6 doctrine: 3.0.0 eslint: 9.9.1(jiti@1.21.6) @@ -13931,63 +13934,63 @@ snapshots: minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-react-debug@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): + eslint-plugin-react-debug@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) eslint: 9.9.1(jiti@1.21.6) string-ts: 2.2.0 ts-pattern: 5.3.1 optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): + eslint-plugin-react-dom@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) eslint: 9.9.1(jiti@1.21.6) ts-pattern: 5.3.1 optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): + eslint-plugin-react-hooks-extra@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) eslint: 9.9.1(jiti@1.21.6) ts-pattern: 5.3.1 optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -13995,63 +13998,63 @@ snapshots: dependencies: eslint: 9.9.1(jiti@1.21.6) - eslint-plugin-react-naming-convention@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): + eslint-plugin-react-naming-convention@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) eslint: 9.9.1(jiti@1.21.6) ts-pattern: 5.3.1 optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): + eslint-plugin-react-web-api@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) birecord: 0.1.1 eslint: 9.9.1(jiti@1.21.6) ts-pattern: 5.3.1 optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): + eslint-plugin-react-x@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) eslint: 9.9.1(jiti@1.21.6) - is-immutable-type: 5.0.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + is-immutable-type: 5.0.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) ts-pattern: 5.3.1 optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -14837,13 +14840,13 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-immutable-type@5.0.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): + is-immutable-type@5.0.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) eslint: 9.9.1(jiti@1.21.6) - ts-api-utils: 1.3.0(typescript@5.5.3) - ts-declaration-location: 1.0.4(typescript@5.5.3) - typescript: 5.5.3 + ts-api-utils: 1.3.0(typescript@5.6.2) + ts-declaration-location: 1.0.4(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -14955,7 +14958,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -15384,7 +15387,7 @@ snapshots: ms@2.1.3: {} - msw@2.3.5(typescript@5.5.3): + msw@2.3.5(typescript@5.6.2): dependencies: '@bundled-es-modules/cookie': 2.0.0 '@bundled-es-modules/statuses': 1.0.1 @@ -15404,7 +15407,7 @@ snapshots: type-fest: 4.23.0 yargs: 17.7.2 optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 muggle-string@0.4.1: {} @@ -16193,7 +16196,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.14.9 + '@types/node': 22.5.4 long: 5.2.3 proxy-addr@2.0.7: @@ -16377,15 +16380,15 @@ snapshots: relateurl@0.2.7: {} - remix-auth-form@1.5.0(@remix-run/server-runtime@2.11.2(typescript@5.5.3))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.2(typescript@5.5.3))): + remix-auth-form@1.5.0(@remix-run/server-runtime@2.11.2(typescript@5.6.2))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2))(@remix-run/server-runtime@2.11.2(typescript@5.6.2))): dependencies: - '@remix-run/server-runtime': 2.11.2(typescript@5.5.3) - remix-auth: 3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.2(typescript@5.5.3)) + '@remix-run/server-runtime': 2.11.2(typescript@5.6.2) + remix-auth: 3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2))(@remix-run/server-runtime@2.11.2(typescript@5.6.2)) - remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3))(@remix-run/server-runtime@2.11.2(typescript@5.5.3)): + remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2))(@remix-run/server-runtime@2.11.2(typescript@5.6.2)): dependencies: - '@remix-run/react': 2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3) - '@remix-run/server-runtime': 2.11.2(typescript@5.5.3) + '@remix-run/react': 2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@remix-run/server-runtime': 2.11.2(typescript@5.6.2) uuid: 8.3.2 renderkid@3.0.0: @@ -17112,14 +17115,14 @@ snapshots: triple-beam@1.4.1: {} - ts-api-utils@1.3.0(typescript@5.5.3): + ts-api-utils@1.3.0(typescript@5.6.2): dependencies: - typescript: 5.5.3 + typescript: 5.6.2 - ts-declaration-location@1.0.4(typescript@5.5.3): + ts-declaration-location@1.0.4(typescript@5.6.2): dependencies: minimatch: 10.0.1 - typescript: 5.5.3 + typescript: 5.6.2 ts-expose-internals-conditionally@1.0.0-empty.0: {} @@ -17127,9 +17130,9 @@ snapshots: ts-pattern@5.3.1: {} - tsconfck@3.0.3(typescript@5.5.3): + tsconfck@3.0.3(typescript@5.6.2): optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 tsconfig-paths@4.2.0: dependencies: @@ -17171,37 +17174,35 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typedoc-plugin-frontmatter@1.0.0(typedoc-plugin-markdown@4.2.6(typedoc@0.26.6(typescript@5.5.3))): + typedoc-plugin-frontmatter@1.0.0(typedoc-plugin-markdown@4.2.6(typedoc@0.26.6(typescript@5.6.2))): dependencies: - typedoc-plugin-markdown: 4.2.6(typedoc@0.26.6(typescript@5.5.3)) + typedoc-plugin-markdown: 4.2.6(typedoc@0.26.6(typescript@5.6.2)) yaml: 2.4.5 - typedoc-plugin-markdown@4.2.6(typedoc@0.26.6(typescript@5.5.3)): + typedoc-plugin-markdown@4.2.6(typedoc@0.26.6(typescript@5.6.2)): dependencies: - typedoc: 0.26.6(typescript@5.5.3) + typedoc: 0.26.6(typescript@5.6.2) - typedoc@0.26.6(typescript@5.5.3): + typedoc@0.26.6(typescript@5.6.2): dependencies: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 shiki: 1.11.0 - typescript: 5.5.3 + typescript: 5.6.2 yaml: 2.4.5 - typescript-eslint@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3): + typescript-eslint@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - eslint - supports-color - typescript@5.0.4: {} - typescript@5.1.6: {} typescript@5.2.2: {} @@ -17214,6 +17215,8 @@ snapshots: typescript@5.5.3: {} + typescript@5.6.2: {} + uc.micro@2.1.0: {} ufo@1.5.3: {} @@ -17421,81 +17424,14 @@ snapshots: valibot@0.36.0: {} - valibot@0.37.0(typescript@5.5.3): + valibot@0.37.0(typescript@5.6.2): optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 validate-npm-package-name@5.0.1: {} vary@1.1.2: {} - vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@20.14.9)(ioredis@5.4.1)(terser@5.31.1): - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) - '@types/micromatch': 4.0.7 - '@vinxi/listhen': 1.5.6 - boxen: 7.1.1 - chokidar: 3.6.0 - citty: 0.1.6 - consola: 3.2.3 - crossws: 0.2.4 - dax-sh: 0.39.2 - defu: 6.1.4 - es-module-lexer: 1.5.4 - esbuild: 0.20.2 - fast-glob: 3.3.2 - get-port-please: 3.1.2 - h3: 1.11.1 - hookable: 5.5.3 - http-proxy: 1.18.1 - micromatch: 4.0.7 - nitropack: 2.9.6(@opentelemetry/api@1.8.0) - node-fetch-native: 1.6.4 - path-to-regexp: 6.2.2 - pathe: 1.1.2 - radix3: 1.1.2 - resolve: 1.22.8 - serve-placeholder: 2.0.1 - serve-static: 1.15.0 - ufo: 1.5.3 - unctx: 2.3.1 - unenv: 1.9.0 - unstorage: 1.10.2(ioredis@5.4.1) - vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) - zod: 3.23.8 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@libsql/client' - - '@netlify/blobs' - - '@opentelemetry/api' - - '@planetscale/database' - - '@types/node' - - '@upstash/redis' - - '@vercel/kv' - - better-sqlite3 - - debug - - drizzle-orm - - encoding - - idb-keyval - - ioredis - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - uWebSockets.js - - xml2js - vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1): dependencies: '@babel/core': 7.25.2 @@ -17563,13 +17499,13 @@ snapshots: - uWebSockets.js - xml2js - vite-node@1.6.0(@types/node@20.14.9)(terser@5.31.1): + vite-node@1.6.0(@types/node@22.5.4)(terser@5.31.1): dependencies: cac: 6.7.14 debug: 4.3.6 pathe: 1.1.2 picocolors: 1.1.0 - vite: 5.4.3(@types/node@20.14.9)(terser@5.31.1) + vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - less @@ -17586,84 +17522,52 @@ snapshots: '@babel/core': 7.25.2 vite: 5.3.5(@types/node@22.5.4)(terser@5.31.1) - vite-plugin-dts@4.0.3(@types/node@20.14.9)(rollup@4.21.2)(typescript@5.5.3)(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)): + vite-plugin-dts@4.0.3(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)): dependencies: - '@microsoft/api-extractor': 7.47.4(@types/node@20.14.9) + '@microsoft/api-extractor': 7.47.4(@types/node@22.5.4) '@rollup/pluginutils': 5.1.0(rollup@4.21.2) '@volar/typescript': 2.4.0 - '@vue/language-core': 2.0.29(typescript@5.5.3) + '@vue/language-core': 2.0.29(typescript@5.6.2) compare-versions: 6.1.1 debug: 4.3.6 kolorist: 1.8.0 local-pkg: 0.5.0 magic-string: 0.30.11 - typescript: 5.5.3 - vue-tsc: 2.0.29(typescript@5.5.3) + typescript: 5.6.2 + vue-tsc: 2.0.29(typescript@5.6.2) optionalDependencies: - vite: 5.4.3(@types/node@20.14.9)(terser@5.31.1) + vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-externalize-deps@0.8.0(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)): - dependencies: - vite: 5.4.3(@types/node@20.14.9)(terser@5.31.1) - - vite-tsconfig-paths@5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@20.14.9)(terser@5.31.1)): + vite-plugin-externalize-deps@0.8.0(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)): dependencies: - debug: 4.3.6 - globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.5.3) - optionalDependencies: - vite: 5.3.5(@types/node@20.14.9)(terser@5.31.1) - transitivePeerDependencies: - - supports-color - - typescript + vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) - vite-tsconfig-paths@5.0.1(typescript@5.5.3)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)): + vite-tsconfig-paths@5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)): dependencies: debug: 4.3.6 globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.5.3) + tsconfck: 3.0.3(typescript@5.6.2) optionalDependencies: vite: 5.3.5(@types/node@22.5.4)(terser@5.31.1) transitivePeerDependencies: - supports-color - typescript - vite-tsconfig-paths@5.0.1(typescript@5.5.3)(vite@5.4.3(@types/node@20.14.9)(terser@5.31.1)): - dependencies: - debug: 4.3.6 - globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.5.3) - optionalDependencies: - vite: 5.4.3(@types/node@20.14.9)(terser@5.31.1) - transitivePeerDependencies: - - supports-color - - typescript - - vite-tsconfig-paths@5.0.1(typescript@5.5.3)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)): + vite-tsconfig-paths@5.0.1(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)): dependencies: debug: 4.3.6 globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.5.3) + tsconfck: 3.0.3(typescript@5.6.2) optionalDependencies: vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) transitivePeerDependencies: - supports-color - typescript - vite@5.3.5(@types/node@20.14.9)(terser@5.31.1): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.40 - rollup: 4.18.0 - optionalDependencies: - '@types/node': 20.14.9 - fsevents: 2.3.3 - terser: 5.31.1 - vite@5.3.5(@types/node@22.5.4)(terser@5.31.1): dependencies: esbuild: 0.21.5 @@ -17674,16 +17578,6 @@ snapshots: fsevents: 2.3.3 terser: 5.31.1 - vite@5.4.3(@types/node@20.14.9)(terser@5.31.1): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.45 - rollup: 4.21.2 - optionalDependencies: - '@types/node': 20.14.9 - fsevents: 2.3.3 - terser: 5.31.1 - vite@5.4.3(@types/node@22.5.4)(terser@5.31.1): dependencies: esbuild: 0.21.5 @@ -17694,7 +17588,7 @@ snapshots: fsevents: 2.3.3 terser: 5.31.1 - vitest@1.6.0(@types/node@20.14.9)(jsdom@25.0.0)(terser@5.31.1): + vitest@1.6.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.31.1): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -17713,11 +17607,11 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.4.3(@types/node@20.14.9)(terser@5.31.1) - vite-node: 1.6.0(@types/node@20.14.9)(terser@5.31.1) + vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) + vite-node: 1.6.0(@types/node@22.5.4)(terser@5.31.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 20.14.9 + '@types/node': 22.5.4 jsdom: 25.0.0 transitivePeerDependencies: - less @@ -17737,6 +17631,14 @@ snapshots: '@vue/language-core': 2.0.29(typescript@5.5.3) semver: 7.6.3 typescript: 5.5.3 + optional: true + + vue-tsc@2.0.29(typescript@5.6.2): + dependencies: + '@volar/typescript': 2.4.0 + '@vue/language-core': 2.0.29(typescript@5.6.2) + semver: 7.6.3 + typescript: 5.6.2 w3c-xmlserializer@5.0.0: dependencies: From b23c54731309249baf1c80b6e9e161ca484f5579 Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Tue, 10 Sep 2024 17:43:01 +1200 Subject: [PATCH 089/154] fix(create-router): update the gitignore files and react versions (#2307) * feat(create-router): update the gitignore files * feat(create-router): bump react and react-dom to 18.3.1 --- packages/create-router/package.json | 8 ++--- .../templates/core/_dot_gitignore | 5 +++ pnpm-lock.yaml | 36 +++++++++---------- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 5aee2844a6..d623773925 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -51,12 +51,12 @@ "@tanstack/react-router": "workspace:^", "@tanstack/router-devtools": "workspace:^", "@tanstack/router-plugin": "workspace:^", - "@types/react": "^18.2.47", - "@types/react-dom": "^18.2.18", + "@types/react": "^18.3.5", + "@types/react-dom": "^18.3.0", "@vitejs/plugin-react": "^4.3.1", "html-webpack-plugin": "^5.6.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "swc-loader": "^0.2.6", "typescript": "^5.5.3", "vite": "^5.4.3", diff --git a/packages/create-router/templates/core/_dot_gitignore b/packages/create-router/templates/core/_dot_gitignore index 38d7344c8c..ed335a7bdc 100644 --- a/packages/create-router/templates/core/_dot_gitignore +++ b/packages/create-router/templates/core/_dot_gitignore @@ -6,6 +6,11 @@ # Dist node_modules dist/ +.vinxi +.output +.vercel +.netlify +.wrangler # IDE .vscode/* diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 090a1c260a..276d83f02d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,7 +64,7 @@ importers: version: 25.0.0 nx: specifier: ^19.5.6 - version: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + version: 19.5.6(@swc/core@1.7.6) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -1966,10 +1966,10 @@ importers: specifier: workspace:* version: link:../router-plugin '@types/react': - specifier: ^18.2.47 + specifier: ^18.3.5 version: 18.3.5 '@types/react-dom': - specifier: ^18.2.18 + specifier: ^18.3.0 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 @@ -1978,10 +1978,10 @@ importers: specifier: ^5.6.0 version: 5.6.0(@rspack/core@1.0.3(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) react: - specifier: ^18.2.0 + specifier: ^18.3.1 version: 18.3.1 react-dom: - specifier: ^18.2.0 + specifier: ^18.3.1 version: 18.3.1(react@18.3.1) swc-loader: specifier: ^0.2.6 @@ -2237,7 +2237,7 @@ importers: version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1) + version: 5.93.0(@swc/core@1.7.6)(esbuild@0.23.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -11039,9 +11039,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12))': + '@nrwl/tao@19.5.6(@swc/core@1.7.6)': dependencies: - nx: 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + nx: 19.5.6(@swc/core@1.7.6) tslib: 2.7.0 transitivePeerDependencies: - '@swc-node/register' @@ -15608,10 +15608,10 @@ snapshots: nwsapi@2.2.12: {} - nx@19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)): + nx@19.5.6(@swc/core@1.7.6): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.5.6(@swc/core@1.7.6(@swc/helpers@0.5.12)) + '@nrwl/tao': 19.5.6(@swc/core@1.7.6) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -17029,14 +17029,14 @@ snapshots: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.23.1 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.6)(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.23.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1) + webpack: 5.93.0(@swc/core@1.7.6)(esbuild@0.23.1) optionalDependencies: '@swc/core': 1.7.6(@swc/helpers@0.5.12) esbuild: 0.23.1 @@ -17744,7 +17744,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -17767,15 +17767,17 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4): + webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.23.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -17798,11 +17800,9 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6)(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.23.1)) watchpack: 2.4.1 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild From 27fb5e6b7ba0b15cdded54dbaec03e3beb27c19d Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Tue, 10 Sep 2024 05:44:17 +0000 Subject: [PATCH 090/154] release: v1.57.6 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic-virtual-file-based/package.json | 6 +++--- .../basic-virtual-inside-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-supabase-basic/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/create-router/package.json | 2 +- packages/history/package.json | 2 +- packages/react-cross-context/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start-vite-plugin/package.json | 2 +- packages/start/package.json | 2 +- 52 files changed, 130 insertions(+), 130 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 35ca1e4585..0edb8381a1 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 0303319e12..296fa66d89 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 9ff6385230..d5913a6757 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 8e9f75f99f..6c264d0b5b 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 76e81aabbf..6c423a0df6 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,9 +12,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 212f8aa3b7..dbf7324e72 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 3a3c0d3dd8..8837bb1b97 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", - "@tanstack/start": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", + "@tanstack/start": "^1.57.6", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 087527932a..ad8aaa441c 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", - "@tanstack/start": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", + "@tanstack/start": "^1.57.6", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index bdc72ca4e4..4a33d3a04d 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 25791bf9b1..ac74bd612e 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 7a861c65c7..252c4905cb 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index ae9a3c7229..ee9d852f65 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 7a654e857b..4b3874f067 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.2", - "@tanstack/router-devtools": "^1.56.2", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 486a2aea68..995010e491 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index f2eec86095..87356c3cc7 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 43bd507011..6f7bbb3df6 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 6ae677b756..80032ec793 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 77ceed253d..3eb1c7c6c8 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 47db5b0240..19b5f07558 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 09b2a4d6ee..ca7f3ddcd9 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 0706ba7d3e..126673b494 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/router-plugin": "^1.57.6", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.6.2" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index f01f2b3458..e5b9c5154e 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/router-plugin": "^1.57.6", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 72cec06363..e3a654d034 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index d360c265d2..91dc665ec0 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", + "@tanstack/react-router": "^1.57.6", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/router-devtools": "^1.57.6", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 720eeaaeac..59db700616 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", - "@tanstack/router-zod-adapter": "^1.56.5", - "@tanstack/router-valibot-adapter": "^1.56.5", - "@tanstack/router-arktype-adapter": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", + "@tanstack/router-zod-adapter": "^1.57.6", + "@tanstack/router-valibot-adapter": "^1.57.6", + "@tanstack/router-arktype-adapter": "^1.57.6", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 28d4ab79e0..bf6697e145 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", - "@tanstack/start": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", + "@tanstack/start": "^1.57.6", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index e71a52b434..a3b05165d4 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/start": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/start": "^1.57.6", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 47c2b3a932..701af0315b 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.5", - "@tanstack/react-router-with-query": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", - "@tanstack/start": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/react-router-with-query": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", + "@tanstack/start": "^1.57.6", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 9441104f1f..9b78a181cd 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", - "@tanstack/start": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", + "@tanstack/start": "^1.57.6", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 19640287d8..9f514d45b8 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", - "@tanstack/start": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", + "@tanstack/start": "^1.57.6", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 25ff8c741d..e6abe79e92 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.5", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", - "@tanstack/start": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", + "@tanstack/start": "^1.57.6", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 88ad554ce3..9a74dec1e4 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.5", - "@tanstack/react-router-with-query": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", - "@tanstack/start": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/react-router-with-query": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", + "@tanstack/start": "^1.57.6", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 057a781c84..f88259f6fc 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.3", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/start": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/start": "^1.57.6", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 0dfff9ebd1..b22db0dda0 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.5", - "@tanstack/react-router-with-query": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", - "@tanstack/start": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/react-router-with-query": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", + "@tanstack/start": "^1.57.6", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 71cc17bf3e..859c402ab7 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 7cfc1a8208..f258125787 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index a9b87b3869..5a806055a8 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.56.5", - "@tanstack/router-devtools": "^1.56.5", - "@tanstack/router-plugin": "^1.57.1", + "@tanstack/react-router": "^1.57.6", + "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-plugin": "^1.57.6", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index d623773925..eee76c5746 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.5", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/history/package.json b/packages/history/package.json index b48cd0a541..44f8ed8067 100644 --- a/packages/history/package.json +++ b/packages/history/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/history", - "version": "1.51.7", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-cross-context/package.json b/packages/react-cross-context/package.json index ee8191d682..e7e30336a3 100644 --- a/packages/react-cross-context/package.json +++ b/packages/react-cross-context/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-cross-context", - "version": "1.51.6", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 4b301f7805..2bb7d9012a 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.56.5", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index f5e1587888..fd751b5073 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.56.5", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index a804073a24..2eb1a86838 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.56.5", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 5ed1b7b7c5..495d0c9b39 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.56.4", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index a723b339fd..74cc40a43a 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.56.5", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index ba5950dc1c..c3e9ef29e9 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.56.4", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 6c618632c2..2144af5c88 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.57.1", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 14110a6c1d..b25e7607d6 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.56.5", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 76755119d4..da0df29856 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.57.1", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index b8471da98b..19b0b5d8e4 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.56.5", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start-vite-plugin/package.json b/packages/start-vite-plugin/package.json index 50326efba3..f7c5ff34d7 100644 --- a/packages/start-vite-plugin/package.json +++ b/packages/start-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start-vite-plugin", - "version": "1.51.6", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index da9adda7e2..166b08e397 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.1", + "version": "1.57.6", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 8e3509a90f3acca00d1653591398dbd547267fc3 Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Wed, 11 Sep 2024 00:31:46 +1200 Subject: [PATCH 091/154] fix(router-generator): `disableTypes` option not being enforced (#2312) * fix(router-generator): do not write the typescript declarations when `disableTypes` is configured * test(router-generator): confirm the output of the `disableTypes` option --- packages/router-generator/src/generator.ts | 92 ++++++++++--------- .../router-generator/tests/generator.test.ts | 11 ++- .../generator/types-disabled/routeTree.gen.js | 43 +++++++++ .../types-disabled/routeTree.snapshot.js | 43 +++++++++ .../types-disabled/routes/__root.tsx | 11 +++ .../generator/types-disabled/routes/index.tsx | 6 ++ 6 files changed, 162 insertions(+), 44 deletions(-) create mode 100644 packages/router-generator/tests/generator/types-disabled/routeTree.gen.js create mode 100644 packages/router-generator/tests/generator/types-disabled/routeTree.snapshot.js create mode 100644 packages/router-generator/tests/generator/types-disabled/routes/__root.tsx create mode 100644 packages/router-generator/tests/generator/types-disabled/routes/index.tsx diff --git a/packages/router-generator/src/generator.ts b/packages/router-generator/src/generator.ts index fdfa186394..e3b1b46941 100644 --- a/packages/router-generator/src/generator.ts +++ b/packages/router-generator/src/generator.ts @@ -61,6 +61,8 @@ export async function generator(config: Config) { const start = Date.now() + const TYPES_DISABLED = config.disableTypes + const prettierOptions: prettier.Options = { semi: config.semicolons, singleQuote: config.quoteStyle === 'single', @@ -393,13 +395,15 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ if (node.children?.length) { const childConfigs = buildRouteTreeConfig(node.children, depth + 1) - const childrenDeclaration = `interface ${route}Children { - ${node.children.map((child) => `${child.variableName}Route: typeof ${getResolvedRouteNodeVariableName(child)}`).join(',')} - }` + const childrenDeclaration = TYPES_DISABLED + ? '' + : `interface ${route}Children { + ${node.children.map((child) => `${child.variableName}Route: typeof ${getResolvedRouteNodeVariableName(child)}`).join(',')} +}` - const children = `const ${route}Children: ${route}Children = { - ${node.children.map((child) => `${child.variableName}Route: ${getResolvedRouteNodeVariableName(child)}`).join(',')} - }` + const children = `const ${route}Children${TYPES_DISABLED ? '' : `: ${route}Children`} = { + ${node.children.map((child) => `${child.variableName}Route: ${getResolvedRouteNodeVariableName(child)}`).join(',')} +}` const routeWithChildren = `const ${route}WithChildren = ${route}._addFileChildren(${route}Children)` @@ -502,7 +506,7 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ ] .filter(Boolean) .join(',')} - }${config.disableTypes ? '' : 'as any'})`, + }${TYPES_DISABLED ? '' : 'as any'})`, loaderNode ? `.updateLoader({ loader: lazyFn(() => import('./${replaceBackslash( removeExt( @@ -557,7 +561,7 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ ].join('') }) .join('\n\n'), - ...(config.disableTypes + ...(TYPES_DISABLED ? [] : [ '// Populate the FileRoutesByPath interface', @@ -589,43 +593,45 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ ]), '// Create and export the route tree', routeConfigChildrenText, - `export interface FileRoutesByFullPath { - ${[...createRouteNodesByFullPath(routeNodes).entries()].map( - ([fullPath, routeNode]) => { - return `'${fullPath}': typeof ${getResolvedRouteNodeVariableName(routeNode)}` - }, - )} - }`, - `export interface FileRoutesByTo { - ${[...createRouteNodesByTo(routeNodes).entries()].map( - ([to, routeNode]) => { - return `'${to}': typeof ${getResolvedRouteNodeVariableName(routeNode)}` - }, - )} - }`, - `export interface FileRoutesById { - '__root__': typeof rootRoute, - ${[...createRouteNodesById(routeNodes).entries()].map( - ([id, routeNode]) => { - return `'${id}': typeof ${getResolvedRouteNodeVariableName(routeNode)}` - }, - )} - }`, - `export interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: ${[...createRouteNodesByFullPath(routeNodes).keys()].map((fullPath) => `'${fullPath}'`).join('|')} - fileRoutesByTo: FileRoutesByTo - to: ${[...createRouteNodesByTo(routeNodes).keys()].map((to) => `'${to}'`).join('|')} - id: '__root__' | ${[...createRouteNodesById(routeNodes).keys()].map((id) => `'${id}'`).join('|')} - fileRoutesById: FileRoutesById - }`, - `export interface RootRouteChildren { + ...(TYPES_DISABLED + ? [] + : [ + `export interface FileRoutesByFullPath { + ${[...createRouteNodesByFullPath(routeNodes).entries()].map( + ([fullPath, routeNode]) => { + return `'${fullPath}': typeof ${getResolvedRouteNodeVariableName(routeNode)}` + }, + )} +}`, + `export interface FileRoutesByTo { + ${[...createRouteNodesByTo(routeNodes).entries()].map(([to, routeNode]) => { + return `'${to}': typeof ${getResolvedRouteNodeVariableName(routeNode)}` + })} +}`, + `export interface FileRoutesById { + '__root__': typeof rootRoute, + ${[...createRouteNodesById(routeNodes).entries()].map(([id, routeNode]) => { + return `'${id}': typeof ${getResolvedRouteNodeVariableName(routeNode)}` + })} +}`, + `export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: ${[...createRouteNodesByFullPath(routeNodes).keys()].map((fullPath) => `'${fullPath}'`).join('|')} + fileRoutesByTo: FileRoutesByTo + to: ${[...createRouteNodesByTo(routeNodes).keys()].map((to) => `'${to}'`).join('|')} + id: '__root__' | ${[...createRouteNodesById(routeNodes).keys()].map((id) => `'${id}'`).join('|')} + fileRoutesById: FileRoutesById +}`, + `export interface RootRouteChildren { ${routeTree.map((child) => `${child.variableName}Route: typeof ${getResolvedRouteNodeVariableName(child)}`).join(',')} - }`, - `const rootRouteChildren: RootRouteChildren = { +}`, + `const rootRouteChildren: RootRouteChildren = { ${routeTree.map((child) => `${child.variableName}Route: ${getResolvedRouteNodeVariableName(child)}`).join(',')} - }`, - `export const routeTree = rootRoute._addFileChildren(rootRouteChildren)._addFileTypes()`, +}`, + ]), + TYPES_DISABLED + ? `export const routeTree = rootRoute._addFileChildren(rootRouteChildren)` + : `export const routeTree = rootRoute._addFileChildren(rootRouteChildren)._addFileTypes()`, ...config.routeTreeFileFooter, ] .filter(Boolean) diff --git a/packages/router-generator/tests/generator.test.ts b/packages/router-generator/tests/generator.test.ts index b16745e174..4ca9b4df0f 100644 --- a/packages/router-generator/tests/generator.test.ts +++ b/packages/router-generator/tests/generator.test.ts @@ -76,6 +76,11 @@ function rewriteConfigByFolderName(folderName: string, config: Config) { config.virtualRouteConfig = virtualRouteConfig } break + case 'types-disabled': + config.disableTypes = true + config.generatedRouteTree = + makeFolderDir(folderName) + '/routeTree.gen.js' + break default: break } @@ -144,7 +149,11 @@ describe('generator works', async () => { const generatedRouteTree = await getRouteTreeFileText(config) expect(generatedRouteTree).toMatchFileSnapshot( - join('generator', folderName, 'routeTree.snapshot.ts'), + join( + 'generator', + folderName, + `routeTree.snapshot.${config.disableTypes ? 'js' : 'ts'}`, + ), ) await postprocess(folderName) }, diff --git a/packages/router-generator/tests/generator/types-disabled/routeTree.gen.js b/packages/router-generator/tests/generator/types-disabled/routeTree.gen.js new file mode 100644 index 0000000000..317e327982 --- /dev/null +++ b/packages/router-generator/tests/generator/types-disabled/routeTree.gen.js @@ -0,0 +1,43 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as IndexImport } from './routes/index' + +// Create/Update Routes + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +}) + +// Create and export the route tree + +export const routeTree = rootRoute._addFileChildren(rootRouteChildren) + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/" + ] + }, + "/": { + "filePath": "index.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/types-disabled/routeTree.snapshot.js b/packages/router-generator/tests/generator/types-disabled/routeTree.snapshot.js new file mode 100644 index 0000000000..317e327982 --- /dev/null +++ b/packages/router-generator/tests/generator/types-disabled/routeTree.snapshot.js @@ -0,0 +1,43 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as IndexImport } from './routes/index' + +// Create/Update Routes + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +}) + +// Create and export the route tree + +export const routeTree = rootRoute._addFileChildren(rootRouteChildren) + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/" + ] + }, + "/": { + "filePath": "index.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/types-disabled/routes/__root.tsx b/packages/router-generator/tests/generator/types-disabled/routes/__root.tsx new file mode 100644 index 0000000000..f89644e82d --- /dev/null +++ b/packages/router-generator/tests/generator/types-disabled/routes/__root.tsx @@ -0,0 +1,11 @@ +import * as React from 'react' +import { Outlet, createRootRoute } from '@tanstack/react-router' + +export const Route = createRootRoute({ + component: () => ( + +
Hello "__root"!
+ +
+ ), +}) diff --git a/packages/router-generator/tests/generator/types-disabled/routes/index.tsx b/packages/router-generator/tests/generator/types-disabled/routes/index.tsx new file mode 100644 index 0000000000..578ef75601 --- /dev/null +++ b/packages/router-generator/tests/generator/types-disabled/routes/index.tsx @@ -0,0 +1,6 @@ +import React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: () =>
Hello /!
, +}) From e6616c857d0ed1c41eb14ed41df9333487863f6b Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Tue, 10 Sep 2024 12:34:02 +0000 Subject: [PATCH 092/154] release: v1.57.7 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic-virtual-file-based/package.json | 6 +++--- .../basic-virtual-inside-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-supabase-basic/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 49 files changed, 127 insertions(+), 127 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 0edb8381a1..d732823de2 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 296fa66d89..595026bd69 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index d5913a6757..f251558ef0 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 6c264d0b5b..8bcec3df62 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 6c423a0df6..3d29004c73 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,9 +12,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index dbf7324e72..fe578e9bec 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 8837bb1b97..e184cfa194 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", - "@tanstack/start": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", + "@tanstack/start": "^1.57.7", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index ad8aaa441c..de04f3648f 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", - "@tanstack/start": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", + "@tanstack/start": "^1.57.7", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 4a33d3a04d..ea84f9bfaf 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index ac74bd612e..94956ed441 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 252c4905cb..c17b22e2a9 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index ee9d852f65..46deaa7df7 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 4b3874f067..0f99da8c48 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 995010e491..719c50723a 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 87356c3cc7..218cb5921e 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 6f7bbb3df6..44d24a1cf9 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 80032ec793..671704cb50 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 3eb1c7c6c8..a7fff23cc5 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 19b5f07558..dcf67e10b7 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index ca7f3ddcd9..a9a96491f0 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 126673b494..3888cf36c2 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/router-plugin": "^1.57.7", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.6.2" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index e5b9c5154e..b11ff3721c 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/router-plugin": "^1.57.7", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index e3a654d034..23c4a9cafe 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 91dc665ec0..fa859c7c33 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", + "@tanstack/react-router": "^1.57.7", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/router-devtools": "^1.57.7", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 59db700616..f5fe00101a 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", - "@tanstack/router-zod-adapter": "^1.57.6", - "@tanstack/router-valibot-adapter": "^1.57.6", - "@tanstack/router-arktype-adapter": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", + "@tanstack/router-zod-adapter": "^1.57.7", + "@tanstack/router-valibot-adapter": "^1.57.7", + "@tanstack/router-arktype-adapter": "^1.57.7", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index bf6697e145..c82777e3b8 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", - "@tanstack/start": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", + "@tanstack/start": "^1.57.7", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index a3b05165d4..5e1c64a0d1 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/start": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/start": "^1.57.7", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 701af0315b..4ddb2ff269 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.6", - "@tanstack/react-router-with-query": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", - "@tanstack/start": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/react-router-with-query": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", + "@tanstack/start": "^1.57.7", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 9b78a181cd..c326c08b1a 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", - "@tanstack/start": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", + "@tanstack/start": "^1.57.7", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 9f514d45b8..213637e997 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", - "@tanstack/start": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", + "@tanstack/start": "^1.57.7", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index e6abe79e92..9c1a448b4d 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.5", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", - "@tanstack/start": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", + "@tanstack/start": "^1.57.7", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 9a74dec1e4..d15cc858ef 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.6", - "@tanstack/react-router-with-query": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", - "@tanstack/start": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/react-router-with-query": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", + "@tanstack/start": "^1.57.7", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index f88259f6fc..382b0633e6 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.3", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/start": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/start": "^1.57.7", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index b22db0dda0..620f2be2e3 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.6", - "@tanstack/react-router-with-query": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", - "@tanstack/start": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/react-router-with-query": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", + "@tanstack/start": "^1.57.7", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 859c402ab7..b6470b7139 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index f258125787..fd847004c6 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 5a806055a8..8aad315718 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.57.6", - "@tanstack/router-devtools": "^1.57.6", - "@tanstack/router-plugin": "^1.57.6", + "@tanstack/react-router": "^1.57.7", + "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-plugin": "^1.57.7", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index eee76c5746..fe98340598 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.6", + "version": "1.57.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 2bb7d9012a..2b554392c3 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.57.6", + "version": "1.57.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index fd751b5073..6ff8f4347c 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.57.6", + "version": "1.57.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 2eb1a86838..eb284dd265 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.57.6", + "version": "1.57.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 495d0c9b39..5b49296d1b 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.57.6", + "version": "1.57.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 74cc40a43a..65eef3231c 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.57.6", + "version": "1.57.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index c3e9ef29e9..dde1cfc90d 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.57.6", + "version": "1.57.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 2144af5c88..a88d842419 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.57.6", + "version": "1.57.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index b25e7607d6..143742d13e 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.57.6", + "version": "1.57.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index da0df29856..9fe91e1595 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.57.6", + "version": "1.57.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 19b0b5d8e4..d8106af741 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.57.6", + "version": "1.57.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 166b08e397..2405927173 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.6", + "version": "1.57.7", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From f462448202fd44c335445f4b00a80fe8e6e98e33 Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Wed, 11 Sep 2024 00:54:37 +1200 Subject: [PATCH 093/154] fix(router-generator): `rootRouteChildren` is correctly generated when using `disableTypes` (#2313) * test(router-generator): js output is correct * fix(router-generator): rootRoute with children is correctly being generated when `disableTypes` is set * refactor(router-generator): make the last line ternery a single line --- packages/router-generator/src/generator.ts | 12 ++--- .../generator/types-disabled/routeTree.gen.js | 47 ++++++++++++++++++- .../types-disabled/routeTree.snapshot.js | 47 ++++++++++++++++++- .../generator/types-disabled/routes/index.tsx | 2 +- .../generator/types-disabled/routes/posts.tsx | 6 +++ .../types-disabled/routes/posts/$postId.tsx | 6 +++ .../types-disabled/routes/users.$userId.tsx | 6 +++ 7 files changed, 116 insertions(+), 10 deletions(-) create mode 100644 packages/router-generator/tests/generator/types-disabled/routes/posts.tsx create mode 100644 packages/router-generator/tests/generator/types-disabled/routes/posts/$postId.tsx create mode 100644 packages/router-generator/tests/generator/types-disabled/routes/users.$userId.tsx diff --git a/packages/router-generator/src/generator.ts b/packages/router-generator/src/generator.ts index e3b1b46941..4bfd231f4b 100644 --- a/packages/router-generator/src/generator.ts +++ b/packages/router-generator/src/generator.ts @@ -623,15 +623,13 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ fileRoutesById: FileRoutesById }`, `export interface RootRouteChildren { - ${routeTree.map((child) => `${child.variableName}Route: typeof ${getResolvedRouteNodeVariableName(child)}`).join(',')} -}`, - `const rootRouteChildren: RootRouteChildren = { - ${routeTree.map((child) => `${child.variableName}Route: ${getResolvedRouteNodeVariableName(child)}`).join(',')} + ${routeTree.map((child) => `${child.variableName}Route: typeof ${getResolvedRouteNodeVariableName(child)}`).join(',')} }`, ]), - TYPES_DISABLED - ? `export const routeTree = rootRoute._addFileChildren(rootRouteChildren)` - : `export const routeTree = rootRoute._addFileChildren(rootRouteChildren)._addFileTypes()`, + `const rootRouteChildren${TYPES_DISABLED ? '' : ': RootRouteChildren'} = { + ${routeTree.map((child) => `${child.variableName}Route: ${getResolvedRouteNodeVariableName(child)}`).join(',')} +}`, + `export const routeTree = rootRoute._addFileChildren(rootRouteChildren)${TYPES_DISABLED ? '' : '._addFileTypes()'}`, ...config.routeTreeFileFooter, ] .filter(Boolean) diff --git a/packages/router-generator/tests/generator/types-disabled/routeTree.gen.js b/packages/router-generator/tests/generator/types-disabled/routeTree.gen.js index 317e327982..00ea7ce7f8 100644 --- a/packages/router-generator/tests/generator/types-disabled/routeTree.gen.js +++ b/packages/router-generator/tests/generator/types-disabled/routeTree.gen.js @@ -11,17 +11,47 @@ // Import Routes import { Route as rootRoute } from './routes/__root' +import { Route as PostsImport } from './routes/posts' import { Route as IndexImport } from './routes/index' +import { Route as UsersUserIdImport } from './routes/users.$userId' +import { Route as PostsPostIdImport } from './routes/posts/$postId' // Create/Update Routes +const PostsRoute = PostsImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +}) + const IndexRoute = IndexImport.update({ path: '/', getParentRoute: () => rootRoute, }) +const UsersUserIdRoute = UsersUserIdImport.update({ + path: '/users/$userId', + getParentRoute: () => rootRoute, +}) + +const PostsPostIdRoute = PostsPostIdImport.update({ + path: '/$postId', + getParentRoute: () => PostsRoute, +}) + // Create and export the route tree +const PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +const rootRouteChildren = { + IndexRoute: IndexRoute, + PostsRoute: PostsRouteWithChildren, + UsersUserIdRoute: UsersUserIdRoute, +} + export const routeTree = rootRoute._addFileChildren(rootRouteChildren) /* prettier-ignore-end */ @@ -32,11 +62,26 @@ export const routeTree = rootRoute._addFileChildren(rootRouteChildren) "__root__": { "filePath": "__root.tsx", "children": [ - "/" + "/", + "/posts", + "/users/$userId" ] }, "/": { "filePath": "index.tsx" + }, + "/posts": { + "filePath": "posts.tsx", + "children": [ + "/posts/$postId" + ] + }, + "/posts/$postId": { + "filePath": "posts/$postId.tsx", + "parent": "/posts" + }, + "/users/$userId": { + "filePath": "users.$userId.tsx" } } } diff --git a/packages/router-generator/tests/generator/types-disabled/routeTree.snapshot.js b/packages/router-generator/tests/generator/types-disabled/routeTree.snapshot.js index 317e327982..00ea7ce7f8 100644 --- a/packages/router-generator/tests/generator/types-disabled/routeTree.snapshot.js +++ b/packages/router-generator/tests/generator/types-disabled/routeTree.snapshot.js @@ -11,17 +11,47 @@ // Import Routes import { Route as rootRoute } from './routes/__root' +import { Route as PostsImport } from './routes/posts' import { Route as IndexImport } from './routes/index' +import { Route as UsersUserIdImport } from './routes/users.$userId' +import { Route as PostsPostIdImport } from './routes/posts/$postId' // Create/Update Routes +const PostsRoute = PostsImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +}) + const IndexRoute = IndexImport.update({ path: '/', getParentRoute: () => rootRoute, }) +const UsersUserIdRoute = UsersUserIdImport.update({ + path: '/users/$userId', + getParentRoute: () => rootRoute, +}) + +const PostsPostIdRoute = PostsPostIdImport.update({ + path: '/$postId', + getParentRoute: () => PostsRoute, +}) + // Create and export the route tree +const PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +const rootRouteChildren = { + IndexRoute: IndexRoute, + PostsRoute: PostsRouteWithChildren, + UsersUserIdRoute: UsersUserIdRoute, +} + export const routeTree = rootRoute._addFileChildren(rootRouteChildren) /* prettier-ignore-end */ @@ -32,11 +62,26 @@ export const routeTree = rootRoute._addFileChildren(rootRouteChildren) "__root__": { "filePath": "__root.tsx", "children": [ - "/" + "/", + "/posts", + "/users/$userId" ] }, "/": { "filePath": "index.tsx" + }, + "/posts": { + "filePath": "posts.tsx", + "children": [ + "/posts/$postId" + ] + }, + "/posts/$postId": { + "filePath": "posts/$postId.tsx", + "parent": "/posts" + }, + "/users/$userId": { + "filePath": "users.$userId.tsx" } } } diff --git a/packages/router-generator/tests/generator/types-disabled/routes/index.tsx b/packages/router-generator/tests/generator/types-disabled/routes/index.tsx index 578ef75601..cebf9db135 100644 --- a/packages/router-generator/tests/generator/types-disabled/routes/index.tsx +++ b/packages/router-generator/tests/generator/types-disabled/routes/index.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import * as React from 'react' import { createFileRoute } from '@tanstack/react-router' export const Route = createFileRoute('/')({ diff --git a/packages/router-generator/tests/generator/types-disabled/routes/posts.tsx b/packages/router-generator/tests/generator/types-disabled/routes/posts.tsx new file mode 100644 index 0000000000..ec0b3fcee7 --- /dev/null +++ b/packages/router-generator/tests/generator/types-disabled/routes/posts.tsx @@ -0,0 +1,6 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts')({ + component: () =>
Hello /posts!
, +}) diff --git a/packages/router-generator/tests/generator/types-disabled/routes/posts/$postId.tsx b/packages/router-generator/tests/generator/types-disabled/routes/posts/$postId.tsx new file mode 100644 index 0000000000..4528667792 --- /dev/null +++ b/packages/router-generator/tests/generator/types-disabled/routes/posts/$postId.tsx @@ -0,0 +1,6 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/$postId')({ + component: () =>
Hello /posts/$postId!
, +}) diff --git a/packages/router-generator/tests/generator/types-disabled/routes/users.$userId.tsx b/packages/router-generator/tests/generator/types-disabled/routes/users.$userId.tsx new file mode 100644 index 0000000000..b6553fe98a --- /dev/null +++ b/packages/router-generator/tests/generator/types-disabled/routes/users.$userId.tsx @@ -0,0 +1,6 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/users/$userId')({ + component: () =>
Hello /users/$userId!
, +}) From b695ae0f743aa70c276cac5058cb8e7a5152b121 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Tue, 10 Sep 2024 12:56:00 +0000 Subject: [PATCH 094/154] release: v1.57.8 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic-virtual-file-based/package.json | 6 +++--- .../basic-virtual-inside-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-supabase-basic/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 49 files changed, 127 insertions(+), 127 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index d732823de2..21841c48eb 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 595026bd69..9b9463e736 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index f251558ef0..d2fa6f8f69 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 8bcec3df62..8a11abd2ea 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 3d29004c73..2bad0fc771 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,9 +12,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index fe578e9bec..edbcea1520 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index e184cfa194..c64d5c0502 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", - "@tanstack/start": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", + "@tanstack/start": "^1.57.8", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index de04f3648f..055085a8a1 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", - "@tanstack/start": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", + "@tanstack/start": "^1.57.8", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index ea84f9bfaf..d398688fed 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 94956ed441..ce3fa58a1b 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index c17b22e2a9..0a4ec28b02 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 46deaa7df7..898da9a847 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 0f99da8c48..1a7f748b89 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 719c50723a..3c9b6b46d4 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 218cb5921e..e5a95c6762 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 44d24a1cf9..85a74af723 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 671704cb50..c454ae0aaf 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index a7fff23cc5..6f7a304df3 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index dcf67e10b7..b50845bc35 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index a9a96491f0..fb067fa2ed 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 3888cf36c2..2a53cdc87f 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/router-plugin": "^1.57.8", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.6.2" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index b11ff3721c..f067685932 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/router-plugin": "^1.57.8", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 23c4a9cafe..2d2b7b9c74 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index fa859c7c33..a050b1144d 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", + "@tanstack/react-router": "^1.57.8", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/router-devtools": "^1.57.8", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index f5fe00101a..23a97d0a48 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", - "@tanstack/router-zod-adapter": "^1.57.7", - "@tanstack/router-valibot-adapter": "^1.57.7", - "@tanstack/router-arktype-adapter": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", + "@tanstack/router-zod-adapter": "^1.57.8", + "@tanstack/router-valibot-adapter": "^1.57.8", + "@tanstack/router-arktype-adapter": "^1.57.8", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index c82777e3b8..2c64af18e7 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", - "@tanstack/start": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", + "@tanstack/start": "^1.57.8", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 5e1c64a0d1..672f3d95fe 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/start": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/start": "^1.57.8", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 4ddb2ff269..51ea83b1b7 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.7", - "@tanstack/react-router-with-query": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", - "@tanstack/start": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/react-router-with-query": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", + "@tanstack/start": "^1.57.8", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index c326c08b1a..655fb6241a 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", - "@tanstack/start": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", + "@tanstack/start": "^1.57.8", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 213637e997..af846fb79a 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", - "@tanstack/start": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", + "@tanstack/start": "^1.57.8", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 9c1a448b4d..f0c5173c2e 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.5", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", - "@tanstack/start": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", + "@tanstack/start": "^1.57.8", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index d15cc858ef..29fc4531bb 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.7", - "@tanstack/react-router-with-query": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", - "@tanstack/start": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/react-router-with-query": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", + "@tanstack/start": "^1.57.8", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 382b0633e6..ec9e4c3e82 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.3", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/start": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/start": "^1.57.8", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 620f2be2e3..aca9002b53 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.7", - "@tanstack/react-router-with-query": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", - "@tanstack/start": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/react-router-with-query": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", + "@tanstack/start": "^1.57.8", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index b6470b7139..75061c0d36 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index fd847004c6..86ab7ec3b1 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 8aad315718..b9c6b37514 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.57.7", - "@tanstack/router-devtools": "^1.57.7", - "@tanstack/router-plugin": "^1.57.7", + "@tanstack/react-router": "^1.57.8", + "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-plugin": "^1.57.8", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index fe98340598..dda8080d69 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.7", + "version": "1.57.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 2b554392c3..c1ef33d0d2 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.57.7", + "version": "1.57.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 6ff8f4347c..5b456bd953 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.57.7", + "version": "1.57.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index eb284dd265..a8c2509292 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.57.7", + "version": "1.57.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 5b49296d1b..2ce2d0b65c 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.57.7", + "version": "1.57.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 65eef3231c..9b94dacfa5 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.57.7", + "version": "1.57.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index dde1cfc90d..6c7722cf77 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.57.7", + "version": "1.57.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index a88d842419..f90d5217f7 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.57.7", + "version": "1.57.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 143742d13e..c611f01e0c 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.57.7", + "version": "1.57.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 9fe91e1595..4d72b27e26 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.57.7", + "version": "1.57.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index d8106af741..0f4ce54677 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.57.7", + "version": "1.57.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 2405927173..bfed82ca56 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.7", + "version": "1.57.8", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 04a6124a0998b6c385a87c364190e3fe23bb98ee Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Tue, 10 Sep 2024 19:32:26 +0200 Subject: [PATCH 095/154] fix(router-generator): correctly generate route tree if only rootRoute exists (#2314) --- packages/router-generator/src/generator.ts | 6 +- .../generator/only-root/routeTree.snapshot.ts | 61 +++++++++++++++++++ .../generator/only-root/routes/__root.tsx | 11 ++++ 3 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 packages/router-generator/tests/generator/only-root/routeTree.snapshot.ts create mode 100644 packages/router-generator/tests/generator/only-root/routes/__root.tsx diff --git a/packages/router-generator/src/generator.ts b/packages/router-generator/src/generator.ts index 4bfd231f4b..7626b8f9e5 100644 --- a/packages/router-generator/src/generator.ts +++ b/packages/router-generator/src/generator.ts @@ -616,10 +616,10 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ }`, `export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: ${[...createRouteNodesByFullPath(routeNodes).keys()].map((fullPath) => `'${fullPath}'`).join('|')} + fullPaths: ${routeNodes.length > 0 ? [...createRouteNodesByFullPath(routeNodes).keys()].map((fullPath) => `'${fullPath}'`).join('|') : 'never'} fileRoutesByTo: FileRoutesByTo - to: ${[...createRouteNodesByTo(routeNodes).keys()].map((to) => `'${to}'`).join('|')} - id: '__root__' | ${[...createRouteNodesById(routeNodes).keys()].map((id) => `'${id}'`).join('|')} + to: ${routeNodes.length > 0 ? [...createRouteNodesByTo(routeNodes).keys()].map((to) => `'${to}'`).join('|') : 'never'} + id: ${[`'__root__'`, ...[...createRouteNodesById(routeNodes).keys()].map((id) => `'${id}'`)].join('|')} fileRoutesById: FileRoutesById }`, `export interface RootRouteChildren { diff --git a/packages/router-generator/tests/generator/only-root/routeTree.snapshot.ts b/packages/router-generator/tests/generator/only-root/routeTree.snapshot.ts new file mode 100644 index 0000000000..a65ec67d05 --- /dev/null +++ b/packages/router-generator/tests/generator/only-root/routeTree.snapshot.ts @@ -0,0 +1,61 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' + +// Create/Update Routes + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath {} +} + +// Create and export the route tree + +export interface FileRoutesByFullPath {} + +export interface FileRoutesByTo {} + +export interface FileRoutesById { + __root__: typeof rootRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: never + fileRoutesByTo: FileRoutesByTo + to: never + id: '__root__' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren {} + +const rootRouteChildren: RootRouteChildren = {} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [] + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/router-generator/tests/generator/only-root/routes/__root.tsx b/packages/router-generator/tests/generator/only-root/routes/__root.tsx new file mode 100644 index 0000000000..f89644e82d --- /dev/null +++ b/packages/router-generator/tests/generator/only-root/routes/__root.tsx @@ -0,0 +1,11 @@ +import * as React from 'react' +import { Outlet, createRootRoute } from '@tanstack/react-router' + +export const Route = createRootRoute({ + component: () => ( + +
Hello "__root"!
+ +
+ ), +}) From c30c49deeaadc687238a8559628b739e663ce381 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Tue, 10 Sep 2024 17:33:33 +0000 Subject: [PATCH 096/154] release: v1.57.9 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic-virtual-file-based/package.json | 6 +++--- .../basic-virtual-inside-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-supabase-basic/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 49 files changed, 127 insertions(+), 127 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 21841c48eb..0931107ac8 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 9b9463e736..3dd7b820de 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index d2fa6f8f69..3c7730a2cb 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 8a11abd2ea..dabb78ba36 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 2bad0fc771..79368aa164 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,9 +12,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index edbcea1520..449641bbfb 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index c64d5c0502..43f696bfef 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", - "@tanstack/start": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", + "@tanstack/start": "^1.57.9", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 055085a8a1..8b84dd4694 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", - "@tanstack/start": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", + "@tanstack/start": "^1.57.9", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index d398688fed..ff15dee560 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index ce3fa58a1b..424ef6c0c6 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 0a4ec28b02..67425a55d1 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 898da9a847..fd762844bd 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 1a7f748b89..821872e8d2 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 3c9b6b46d4..a76418767a 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index e5a95c6762..d401fb8e87 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 85a74af723..c3b296d821 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index c454ae0aaf..25d03137c5 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 6f7a304df3..92e8a35da9 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index b50845bc35..21a6a42115 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index fb067fa2ed..53990327e7 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 2a53cdc87f..c4efffeccd 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.1-rc.0", "@rsbuild/plugin-react": "1.0.1-rc.0", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/router-plugin": "^1.57.9", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.6.2" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index f067685932..f15d29b95c 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/router-plugin": "^1.57.9", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 2d2b7b9c74..e9482ed14d 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index a050b1144d..16d84ae443 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", + "@tanstack/react-router": "^1.57.9", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/router-devtools": "^1.57.9", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 23a97d0a48..7e1479877c 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", - "@tanstack/router-zod-adapter": "^1.57.8", - "@tanstack/router-valibot-adapter": "^1.57.8", - "@tanstack/router-arktype-adapter": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-zod-adapter": "^1.57.9", + "@tanstack/router-valibot-adapter": "^1.57.9", + "@tanstack/router-arktype-adapter": "^1.57.9", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 2c64af18e7..7f0c11b793 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", - "@tanstack/start": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", + "@tanstack/start": "^1.57.9", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 672f3d95fe..a396220b71 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/start": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/start": "^1.57.9", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 51ea83b1b7..06aa9f8bb7 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.8", - "@tanstack/react-router-with-query": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", - "@tanstack/start": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/react-router-with-query": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", + "@tanstack/start": "^1.57.9", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 655fb6241a..7cf519d405 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", - "@tanstack/start": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", + "@tanstack/start": "^1.57.9", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index af846fb79a..64093b90aa 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", - "@tanstack/start": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", + "@tanstack/start": "^1.57.9", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index f0c5173c2e..2eb54654f5 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.5", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", - "@tanstack/start": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", + "@tanstack/start": "^1.57.9", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 29fc4531bb..7d23fcb36c 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.8", - "@tanstack/react-router-with-query": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", - "@tanstack/start": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/react-router-with-query": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", + "@tanstack/start": "^1.57.9", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index ec9e4c3e82..224e3da1f2 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.3", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/start": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/start": "^1.57.9", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index aca9002b53..bce7ccaac7 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.8", - "@tanstack/react-router-with-query": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", - "@tanstack/start": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/react-router-with-query": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", + "@tanstack/start": "^1.57.9", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 75061c0d36..77b5e827c1 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 86ab7ec3b1..3c9eccf6f4 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index b9c6b37514..60d0ca7a9d 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.57.8", - "@tanstack/router-devtools": "^1.57.8", - "@tanstack/router-plugin": "^1.57.8", + "@tanstack/react-router": "^1.57.9", + "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-plugin": "^1.57.9", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index dda8080d69..6ef05398b9 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.8", + "version": "1.57.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index c1ef33d0d2..4b4abf362a 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.57.8", + "version": "1.57.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 5b456bd953..22a1b963d7 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.57.8", + "version": "1.57.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index a8c2509292..1168c39890 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.57.8", + "version": "1.57.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 2ce2d0b65c..46e130ec91 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.57.8", + "version": "1.57.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 9b94dacfa5..b2c4b1fe02 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.57.8", + "version": "1.57.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 6c7722cf77..fd7e3ee4e8 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.57.8", + "version": "1.57.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index f90d5217f7..e2fe372273 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.57.8", + "version": "1.57.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index c611f01e0c..c76e03e42d 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.57.8", + "version": "1.57.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 4d72b27e26..41adfde5b4 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.57.8", + "version": "1.57.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 0f4ce54677..697909961c 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.57.8", + "version": "1.57.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index bfed82ca56..e063058b43 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.8", + "version": "1.57.9", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 430742a5bdf4421b46c6b14472bdd43926832714 Mon Sep 17 00:00:00 2001 From: Christopher Horobin Date: Thu, 12 Sep 2024 01:20:18 +0200 Subject: [PATCH 097/154] perf(react-router): reduce instantitions for relative routing after language service performance (#2319) --- packages/react-router/src/link.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-router/src/link.tsx b/packages/react-router/src/link.tsx index 2513d2b6d2..4b44a58193 100644 --- a/packages/react-router/src/link.tsx +++ b/packages/react-router/src/link.tsx @@ -119,7 +119,8 @@ export type SearchPaths< TSearchPath extends string, TPaths = ResolvePaths, TPrefix extends string = `${RemoveTrailingSlashes}/`, -> = TPaths extends `${TPrefix}${infer TRest}` ? TRest : never + TFilteredPaths = TPaths & `${TPrefix}${string}`, +> = TFilteredPaths extends `${TPrefix}${infer TRest}` ? TRest : never export type SearchRelativePathAutoComplete< TRouter extends AnyRouter, From 79860f932c9a54a179d79fa295637c698b89dfea Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Wed, 11 Sep 2024 23:23:21 +0000 Subject: [PATCH 098/154] release: v1.57.10 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic-virtual-file-based/package.json | 4 ++-- .../react/basic-virtual-inside-file-based/package.json | 4 ++-- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-supabase-basic/package.json | 6 +++--- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 45 files changed, 98 insertions(+), 98 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 0931107ac8..a60a0a68e8 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 3dd7b820de..0fdabf48d6 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 3c7730a2cb..7902129e94 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index dabb78ba36..2eb421e3a0 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 79368aa164..42aa4dee8f 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 449641bbfb..fda8b73992 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 43f696bfef..e2a673f3a1 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.9", + "@tanstack/start": "^1.57.10", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 8b84dd4694..45faa2295a 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.9", + "@tanstack/start": "^1.57.10", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index ff15dee560..467c56a835 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 424ef6c0c6..92b1f162a6 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 67425a55d1..c83854071c 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index fd762844bd..ebe413341e 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 821872e8d2..9d6fc75812 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index a76418767a..70bd5d0b36 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index d401fb8e87..07d7e31a55 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index c3b296d821..98b20786a2 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 25d03137c5..efe0e9ccce 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 92e8a35da9..7c40f95ba4 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 21a6a42115..511610d3e8 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 53990327e7..8ebdf5c560 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index c4efffeccd..1fcabb5ca9 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index f15d29b95c..9d2f1d3a9a 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index e9482ed14d..f575ff9914 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 16d84ae443..ab8c7f5288 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", + "@tanstack/react-router": "^1.57.10", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/router-devtools": "^1.57.10", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 7e1479877c..c8ca52388b 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", - "@tanstack/router-zod-adapter": "^1.57.9", - "@tanstack/router-valibot-adapter": "^1.57.9", - "@tanstack/router-arktype-adapter": "^1.57.9", + "@tanstack/router-zod-adapter": "^1.57.10", + "@tanstack/router-valibot-adapter": "^1.57.10", + "@tanstack/router-arktype-adapter": "^1.57.10", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 7f0c11b793..a54fb04fe9 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.9", + "@tanstack/start": "^1.57.10", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index a396220b71..a6d41712c4 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/start": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/start": "^1.57.10", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 06aa9f8bb7..8a0beeff4f 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.9", - "@tanstack/react-router-with-query": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/react-router-with-query": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.9", + "@tanstack/start": "^1.57.10", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 7cf519d405..8ff9331739 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.9", + "@tanstack/start": "^1.57.10", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 64093b90aa..1d6794be65 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.9", + "@tanstack/start": "^1.57.10", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 2eb54654f5..014d599090 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.5", - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.9", + "@tanstack/start": "^1.57.10", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 7d23fcb36c..f76cf0f3e6 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.9", - "@tanstack/react-router-with-query": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/react-router-with-query": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.9", + "@tanstack/start": "^1.57.10", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 224e3da1f2..85cb255a98 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.3", - "@tanstack/react-router": "^1.57.9", + "@tanstack/react-router": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", - "@tanstack/start": "^1.57.9", + "@tanstack/router-devtools": "^1.57.10", + "@tanstack/start": "^1.57.10", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index bce7ccaac7..300fcc1b4d 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.9", - "@tanstack/react-router-with-query": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/react-router-with-query": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.9", + "@tanstack/start": "^1.57.10", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 77b5e827c1..2a03b6e1bc 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 3c9eccf6f4..fa38b10fe6 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 60d0ca7a9d..89168f9b36 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.57.9", - "@tanstack/router-devtools": "^1.57.9", + "@tanstack/react-router": "^1.57.10", + "@tanstack/router-devtools": "^1.57.10", "@tanstack/router-plugin": "^1.57.9", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 6ef05398b9..cc3a028703 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.9", + "version": "1.57.10", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 4b4abf362a..3c46a2462e 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.57.9", + "version": "1.57.10", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 22a1b963d7..4f1843ea67 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.57.9", + "version": "1.57.10", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 1168c39890..5733e007bb 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.57.9", + "version": "1.57.10", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index b2c4b1fe02..578a48014f 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.57.9", + "version": "1.57.10", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index c76e03e42d..ca71769f93 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.57.9", + "version": "1.57.10", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 697909961c..49222101d4 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.57.9", + "version": "1.57.10", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index e063058b43..5d2bbea39c 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.9", + "version": "1.57.10", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From d328172d10a0ea6bd9654bd0ff23702201da2968 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Wed, 11 Sep 2024 09:46:31 +0200 Subject: [PATCH 099/154] chore: no braces for strings in JSX --- docs/framework/react/start/server-functions.md | 2 +- examples/react/basic-default-search-params/src/main.tsx | 2 +- .../basic-file-based-codesplitting/src/routes/__root.tsx | 2 +- examples/react/basic-file-based/src/routes/__root.tsx | 2 +- .../react/basic-react-query-file-based/src/routes/__root.tsx | 2 +- examples/react/basic-react-query/src/main.tsx | 2 +- .../react/basic-ssr-streaming-file-based/src/routes/index.tsx | 2 +- examples/react/basic-virtual-file-based/src/routes/root.tsx | 2 +- .../basic-virtual-inside-file-based/src/routes/__root.tsx | 2 +- examples/react/basic/src/main.tsx | 2 +- examples/react/deferred-data/src/main.tsx | 2 +- examples/react/location-masking/src/main.tsx | 2 +- examples/react/navigation-blocking/src/main.tsx | 2 +- examples/react/quickstart-file-based/src/routes/__root.tsx | 2 +- .../react/quickstart-rspack-file-based/src/routes/__root.tsx | 2 +- .../react/quickstart-webpack-file-based/src/routes/__root.tsx | 2 +- examples/react/start-basic-auth/app/routes/__root.tsx | 2 +- examples/react/start-basic-react-query/app/routes/__root.tsx | 4 ++-- examples/react/start-basic-rsc/app/routes/__root.tsx | 2 +- examples/react/start-basic/app/routes/__root.tsx | 4 ++-- examples/react/start-clerk-basic/app/routes/__root.tsx | 2 +- examples/react/start-supabase-basic/app/routes/__root.tsx | 2 +- examples/react/with-framer-motion/src/main.tsx | 2 +- packages/create-router/templates/core/src/routes/__root.tsx | 2 +- 24 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/framework/react/start/server-functions.md b/docs/framework/react/start/server-functions.md index 379fd6c4bb..1fc5de3648 100644 --- a/docs/framework/react/start/server-functions.md +++ b/docs/framework/react/start/server-functions.md @@ -587,7 +587,7 @@ function Home() {
diff --git a/examples/react/basic-default-search-params/src/main.tsx b/examples/react/basic-default-search-params/src/main.tsx index d2173d4047..e2331794c3 100644 --- a/examples/react/basic-default-search-params/src/main.tsx +++ b/examples/react/basic-default-search-params/src/main.tsx @@ -68,7 +68,7 @@ function RootComponent() { Home {' '} {' '} {' '} {' '} {' '}

Welcome Home!

Data: {data.date.getDate()}

- + {(data) =>

Deferred: {data.date.getDate()}

}
diff --git a/examples/react/basic-virtual-file-based/src/routes/root.tsx b/examples/react/basic-virtual-file-based/src/routes/root.tsx index bd82cdf6a5..05ac9527f3 100644 --- a/examples/react/basic-virtual-file-based/src/routes/root.tsx +++ b/examples/react/basic-virtual-file-based/src/routes/root.tsx @@ -28,7 +28,7 @@ function RootComponent() { Home {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} Date: Thu, 12 Sep 2024 17:35:28 +0200 Subject: [PATCH 100/154] docs: Link to property --- docs/framework/react/guide/navigation.md | 1 + docs/framework/react/guide/search-params.md | 41 ++++++++++++++++++++- docs/framework/react/guide/type-safety.md | 7 ++-- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/docs/framework/react/guide/navigation.md b/docs/framework/react/guide/navigation.md index a493604ccf..3eaa0f0969 100644 --- a/docs/framework/react/guide/navigation.md +++ b/docs/framework/react/guide/navigation.md @@ -206,6 +206,7 @@ It's also common to want to update a single search param without supplying any o ```tsx const link = ( ({ ...prev, page: prev.page + 1, diff --git a/docs/framework/react/guide/search-params.md b/docs/framework/react/guide/search-params.md index abd516038a..1db3a02c87 100644 --- a/docs/framework/react/guide/search-params.md +++ b/docs/framework/react/guide/search-params.md @@ -427,7 +427,10 @@ Now that you've learned how to read your route's search params, you'll be happy ### `` -The best way to update search params is to use the `search` prop on the `` component. Remember, if a `to` prop is omitted, will update the search for the current page. Here's an example: +The best way to update search params is to use the `search` prop on the `` component. + +If the search for the current page shall be updated and the `from` prop is specified, the `to` prop can be omitted. +Here's an example: ```tsx // /routes/shop.products.tsx @@ -449,6 +452,42 @@ const ProductList = () => { } ``` +If you want to update the search params in a generic component that is rendered on multiple routes, specifiying `from` can be challenging. + +In this scenario you can set `to="."` which will give you access to loosely typed search params. +Here is an example that illustrates this: + +```tsx +// `page` is a search param that is defined in the __root route and hence available on all routes. +const PageSelector = () => { + return ( +
+ ({ ...prev, page: prev.page + 1 })}> + Next Page + +
+ ) +} +``` + +If the generic component is only rendered in a specific subtree of the route tree, you can specify that subtree using `from`. Here you can omit `to='.'` if you want. + +```tsx +// `page` is a search param that is defined in the /posts route and hence available on all of its child routes. +const PageSelector = () => { + return ( +
+ ({ ...prev, page: prev.page + 1 })} + > + Next Page + +
+ ) +``` + ### `useNavigate(), navigate({ search })` The `navigate` function also accepts a `search` option that works the same way as the `search` prop on ``: diff --git a/docs/framework/react/guide/type-safety.md b/docs/framework/react/guide/type-safety.md index 0cc6c0fc1d..8d7d60744f 100644 --- a/docs/framework/react/guide/type-safety.md +++ b/docs/framework/react/guide/type-safety.md @@ -161,12 +161,11 @@ Consider the following usage of `Link` ```tsx - ``` -**These examples are bad for TS performance**. That's because `search` resolves to a union of all `search` params for all routes and TS has to check whatever you pass to the `search` prop against this potentially big union. As your application grows, this check time will increase linearly to number of routes and search params. We have done our best to optimize for this case (TypeScript will typically do this work once and cache it) but the initial check against this large union is expensive. This also applies to `params` and other API's such as `useSearch`, `useParams`, `useNavigate` etc +**These examples are bad for TS performance**. That's because `search` resolves to a union of all `search` params for all routes and TS has to check whatever you pass to the `search` prop against this potentially big union. As your application grows, this check time will increase linearly to number of routes and search params. We have done our best to optimize for this case (TypeScript will typically do this work once and cache it) but the initial check against this large union is expensive. This also applies to `params` and other API's such as `useSearch`, `useParams`, `useNavigate` etc. -Instead you should try to narrow to relevant routes with `from` or `to` +Instead you should try to narrow to relevant routes with `from` or `to`. ```tsx @@ -180,7 +179,7 @@ const from: '/posts/$postId/deep' | '/posts/' = '/posts/' ``` -You can also pass branches to `from` to only resolve `search` or `params` to be from any descendants of that branch +You can also pass branches to `from` to only resolve `search` or `params` to be from any descendants of that branch: ```tsx const from = '/posts' From 5921942f97b191c93220c1cab2db871a11dd9678 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Thu, 12 Sep 2024 17:50:26 +0200 Subject: [PATCH 101/154] chore: fix dependencies --- packages/create-router/package.json | 19 +- packages/router-cli/package.json | 3 +- packages/router-plugin/package.json | 2 +- packages/router-vite-plugin/package.json | 3 - pnpm-lock.yaml | 688 +++++++++++++++++------ 5 files changed, 524 insertions(+), 191 deletions(-) diff --git a/packages/create-router/package.json b/packages/create-router/package.json index cc3a028703..61d30f776c 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -45,24 +45,24 @@ "yocto-spinner": "^0.1.0" }, "peerDependencies": { - "@rsbuild/core": "1.0.1-rc.5", - "@rsbuild/plugin-react": "1.0.1-rc.5", - "@swc/core": "^1.7.6", + "@rsbuild/core": "^1.0.2", + "@rsbuild/plugin-react": "^1.0.1", + "@swc/core": "^1.7.25", "@tanstack/react-router": "workspace:^", "@tanstack/router-devtools": "workspace:^", "@tanstack/router-plugin": "workspace:^", - "@types/react": "^18.3.5", + "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react": "^4.3.1", "html-webpack-plugin": "^5.6.0", "react": "^18.3.1", "react-dom": "^18.3.1", "swc-loader": "^0.2.6", - "typescript": "^5.5.3", - "vite": "^5.4.3", - "webpack": "^5.93.0", + "typescript": "^5.6.2", + "vite": "^5.4.4", + "webpack": "^5.94.0", "webpack-cli": "^5.1.4", - "webpack-dev-server": "^5.0.4" + "webpack-dev-server": "^5.1.0" }, "peerDependenciesMeta": { "@tanstack/react-router": { @@ -101,6 +101,9 @@ "@rsbuild/core": { "optional": true }, + "@rsbuild/plugin-react": { + "optional": true + }, "@types/react": { "optional": true }, diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 46e130ec91..87d0fc8704 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -70,7 +70,6 @@ "yargs": "^17.7.2" }, "devDependencies": { - "@types/yargs": "^17.0.32", - "vite": "^5.3.5" + "@types/yargs": "^17.0.32" } } diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index e2fe372273..9589dac4d5 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -112,7 +112,7 @@ "zod": "^3.23.8" }, "peerDependencies": { - "@rsbuild/core": ">=1.0.1-rc.5", + "@rsbuild/core": ">=1.0.2", "vite": ">=5.0.0", "webpack": ">=5.92.0" }, diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 41adfde5b4..dd274c1a34 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -65,8 +65,5 @@ }, "dependencies": { "@tanstack/router-plugin": "workspace:^" - }, - "devDependencies": { - "vite": "^5.3.5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 276d83f02d..3f9dc89b1b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,7 +64,7 @@ importers: version: 25.0.0 nx: specifier: ^19.5.6 - version: 19.5.6(@swc/core@1.7.6) + version: 19.5.6(@swc/core@1.7.26(@swc/helpers@0.5.13)) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -1050,7 +1050,7 @@ importers: devDependencies: '@swc/core': specifier: ^1.7.6 - version: 1.7.6(@swc/helpers@0.5.12) + version: 1.7.6(@swc/helpers@0.5.13) '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin @@ -1062,16 +1062,16 @@ importers: version: 18.3.0 html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(@rspack/core@1.0.3(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + version: 5.6.0(@rspack/core@1.0.4(@swc/helpers@0.5.13))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) swc-loader: specifier: ^0.2.6 - version: 0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + version: 0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.13))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) typescript: specifier: ^5.6.2 version: 5.6.2 webpack: specifier: ^5.93.0 - version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) @@ -1692,7 +1692,7 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) react: specifier: ^18.3.1 version: 18.3.1 @@ -1891,7 +1891,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) examples/react/with-trpc-react-query: dependencies: @@ -1943,19 +1943,19 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) packages/create-router: dependencies: '@rsbuild/core': - specifier: 1.0.1-rc.5 - version: 1.0.1-rc.5 + specifier: ^1.0.2 + version: 1.0.2 '@rsbuild/plugin-react': - specifier: 1.0.1-rc.5 - version: 1.0.1-rc.5(@rsbuild/core@1.0.1-rc.5) + specifier: ^1.0.1 + version: 1.0.1(@rsbuild/core@1.0.2) '@swc/core': - specifier: ^1.7.6 - version: 1.7.6(@swc/helpers@0.5.12) + specifier: ^1.7.25 + version: 1.7.26(@swc/helpers@0.5.13) '@tanstack/react-router': specifier: workspace:* version: link:../react-router @@ -1966,17 +1966,17 @@ importers: specifier: workspace:* version: link:../router-plugin '@types/react': - specifier: ^18.3.5 + specifier: ^18.3.3 version: 18.3.5 '@types/react-dom': specifier: ^18.3.0 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(@rspack/core@1.0.3(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + version: 5.6.0(@rspack/core@1.0.4(@swc/helpers@0.5.13))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) react: specifier: ^18.3.1 version: 18.3.1 @@ -1985,22 +1985,22 @@ importers: version: 18.3.1(react@18.3.1) swc-loader: specifier: ^0.2.6 - version: 0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + version: 0.2.6(@swc/core@1.7.26(@swc/helpers@0.5.13))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.6.2 + version: 5.6.2 vite: - specifier: ^5.4.3 - version: 5.4.3(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.4 + version: 5.4.4(@types/node@22.5.4)(terser@5.31.1) webpack: - specifier: ^5.93.0 - version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) + specifier: ^5.94.0 + version: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 - version: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) + version: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) webpack-dev-server: - specifier: ^5.0.4 - version: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) + specifier: ^5.1.0 + version: 5.1.0(webpack-cli@5.1.4)(webpack@5.94.0) devDependencies: '@inquirer/prompts': specifier: ^5.5.0 @@ -2025,7 +2025,7 @@ importers: version: 1.1.0 unbuild: specifier: ^2.0.0 - version: 2.0.0(typescript@5.5.3)(vue-tsc@2.0.29(typescript@5.5.3)) + version: 2.0.0(typescript@5.6.2)(vue-tsc@2.0.29(typescript@5.6.2)) validate-npm-package-name: specifier: ^5.0.1 version: 5.0.1 @@ -2039,7 +2039,7 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) react: specifier: ^18.2.0 version: 18.3.1 @@ -2073,7 +2073,7 @@ importers: version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) combinate: specifier: ^1.1.11 version: 1.1.11 @@ -2097,7 +2097,7 @@ importers: version: link:../react-router '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) react: specifier: '>=18' version: 18.3.1 @@ -2135,9 +2135,6 @@ importers: '@types/yargs': specifier: ^17.0.32 version: 17.0.32 - vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) packages/router-devtools: dependencies: @@ -2153,7 +2150,7 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) react: specifier: ^18.2.0 version: 18.3.1 @@ -2203,8 +2200,8 @@ importers: specifier: ^7.25.2 version: 7.25.2 '@rsbuild/core': - specifier: '>=1.0.1-rc.5' - version: 1.0.1-rc.5 + specifier: '>=1.0.2' + version: 1.0.2 '@tanstack/router-generator': specifier: workspace:* version: link:../router-generator @@ -2237,7 +2234,7 @@ importers: version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.93.0(@swc/core@1.7.6)(esbuild@0.23.1) + version: 5.93.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2262,10 +2259,6 @@ importers: '@tanstack/router-plugin': specifier: workspace:* version: link:../router-plugin - devDependencies: - vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) packages/router-zod-adapter: devDependencies: @@ -2307,7 +2300,7 @@ importers: version: 0.2.4 '@vinxi/react-server-dom': specifier: ^0.0.3 - version: 0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) '@vinxi/server-components': specifier: ^0.4.2 version: 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) @@ -2331,7 +2324,7 @@ importers: version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2341,7 +2334,7 @@ importers: version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) react: specifier: ^18.2.0 version: 18.3.1 @@ -4419,28 +4412,28 @@ packages: engines: {node: '>=16.7.0'} hasBin: true - '@rsbuild/core@1.0.1-rc.5': - resolution: {integrity: sha512-0+LiFrzvEEhHsizHRXMnbxtvxVvWyGFl33VfLSlOnBwUwgbblq3ehUc4QYK+mla4Zh3DbWRNr9oCdyJa+Qv2MA==} + '@rsbuild/core@1.0.2': + resolution: {integrity: sha512-kEHmNj4QjDoqvyswEiz8gJCdc2Yo4SXlQD+TnY7ch8pTVs6kLnXRa1KclFLCdgwYnikYvvPsbBERSF8Y2I3KDg==} engines: {node: '>=16.7.0'} hasBin: true + '@rsbuild/plugin-react@1.0.1': + resolution: {integrity: sha512-JdbuM/Ycwky6XPc0YmXXcDzUYZ4JxIORcio1MB+fJNMOrs3PP1hJF5vUm5NfA7YY391fIMxD9W4oB3GQUI5c6A==} + peerDependencies: + '@rsbuild/core': 1.x || ^1.0.1-rc.0 + '@rsbuild/plugin-react@1.0.1-rc.0': resolution: {integrity: sha512-bjKRNdihb3LoWW74Ri2lBQqrTaksIpGx9/mp/RiRpVUGzX+9/SDlXWvrnWdndKPm7UYfY3VBCZNT2zJRi0CCKg==} peerDependencies: '@rsbuild/core': ^1.0.1-rc.0 - '@rsbuild/plugin-react@1.0.1-rc.5': - resolution: {integrity: sha512-8W/PK8l//CsGXxfo8psDttyYimdehZ6n5mm8rz5QwNnyKtuxvjUS30P7meQjJxTrZTlZU3LN6yB63tOcD9xtdQ==} - peerDependencies: - '@rsbuild/core': ^1.0.1-rc.4 - '@rspack/binding-darwin-arm64@1.0.0': resolution: {integrity: sha512-ZHQk9YK+swlTG48kJTgzFUW9T26KjhLXRok5la7t2AMoiuHyhGHHgC5iQfPJLZ62XzcJ/rfqs2rwakl97151jQ==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-arm64@1.0.3': - resolution: {integrity: sha512-MZlQpDRJkjIJJqmYMiziwz9vLXi1KjORYW6hemC2umDfOzUmlkRPBUF8oEqXaUQ+zYLbjhk4iTSbFdrlqUR+6w==} + '@rspack/binding-darwin-arm64@1.0.4': + resolution: {integrity: sha512-HR4OVarDhLYAd3GRus26mGjaoEkvFGSdhRHWPXkTqPWT1QIx+cMTDe2dUnEb/CZyvpH0afLBlVHrxqUBNiLT/Q==} cpu: [arm64] os: [darwin] @@ -4449,8 +4442,8 @@ packages: cpu: [x64] os: [darwin] - '@rspack/binding-darwin-x64@1.0.3': - resolution: {integrity: sha512-Ke8Tw3+j5YFFIHjlqrEDnW5fbZU14s+l5LhLVaw6gVXH4yAAyFaZejaIViGi5fhKkdKmCXm0nVTK1KhhASZxAw==} + '@rspack/binding-darwin-x64@1.0.4': + resolution: {integrity: sha512-3L/vrzrcBpg1h7SqD+9m7CB0UlkDt3aOyJGZc0vwLOQM8IezRsawEoidyN9KyYhpDzBZHzLAUnsva33BcbFJYQ==} cpu: [x64] os: [darwin] @@ -4459,8 +4452,8 @@ packages: cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-gnu@1.0.3': - resolution: {integrity: sha512-Ydm6rsBnPYlKfWtz6sPRgAgJ5fQ+zFSHplR4bFlARIOXeWPn7ckQvFZrmKexuR0ULjG3Z4sbfrU6udc2MAWvig==} + '@rspack/binding-linux-arm64-gnu@1.0.4': + resolution: {integrity: sha512-Ggo2tLJKOFNsdcg9H3eYSUy03Wrq0PMVIlm50p/LLAMlfYm3kxBDNv7fP13fxlUe/oqXtFcVOlmMezbMH4oz8w==} cpu: [arm64] os: [linux] @@ -4469,8 +4462,8 @@ packages: cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@1.0.3': - resolution: {integrity: sha512-2aS65Xne3W6qJJ5PN5oL/bMbkUeYpsQduT+ML6vY6hqvi6W6wYtkvHwscQ4HisxKQFWdB2bsE1+UT34XgHpijw==} + '@rspack/binding-linux-arm64-musl@1.0.4': + resolution: {integrity: sha512-2FeDh8/THJTH2N4XpFC9oRvdDlkOw6bQ+vS8x1jLUXj+CDwqmUiECjh+78o4qwe1EH2egWDmkq84RQ+KoR37mQ==} cpu: [arm64] os: [linux] @@ -4479,8 +4472,8 @@ packages: cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-gnu@1.0.3': - resolution: {integrity: sha512-6UWii/GBkV0B98RSjJr9Za5Y8rvU1vQpE5+8vb26pvo3Sh3kvRfOmSeIFyqR3I92er5SQKmEp8uggb74st6QGQ==} + '@rspack/binding-linux-x64-gnu@1.0.4': + resolution: {integrity: sha512-k2YQ579fDfXBw4KJMvZQQPShFUSln7wqtG59ltNLBejgFSxOtlMfLhY5oSuRvFCtsAS4SQUPOmUmfW/0dpCa7A==} cpu: [x64] os: [linux] @@ -4489,8 +4482,8 @@ packages: cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@1.0.3': - resolution: {integrity: sha512-tpKGPJEe6vkkH3bsDz+l7xndNrOGxDvbDVOXV0uSESnRr6Pef5253Bi5PNooGLSaWQlXVDdazhi6x1beVHI2eg==} + '@rspack/binding-linux-x64-musl@1.0.4': + resolution: {integrity: sha512-1Pmuq3qnE45U7uhCJNtRbDiQVF+U4BXbsA+ISNd3Gp/MUZqpuOOgrND9OWw7d+xKRifzEMtd81DaPMkrcXyRvw==} cpu: [x64] os: [linux] @@ -4499,8 +4492,8 @@ packages: cpu: [arm64] os: [win32] - '@rspack/binding-win32-arm64-msvc@1.0.3': - resolution: {integrity: sha512-9FwP64T6yeq3cG1JQG0VagTMuJxJCT45G9LN5RTJ2kxJ4T28vL7uEc9usPpXOyd6xpbzTKXX0mVxL+c8x0EhZQ==} + '@rspack/binding-win32-arm64-msvc@1.0.4': + resolution: {integrity: sha512-3tBP4xTAe8XRAlchMj2nlQXy2GOICA5StFK0kQMRId4V3xfgjlKDb/dMHMEHH4R1to1f9er9R0cRydUNP5AnbQ==} cpu: [arm64] os: [win32] @@ -4509,8 +4502,8 @@ packages: cpu: [ia32] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.0.3': - resolution: {integrity: sha512-nXbeh0206bGiwV1vgY8UDk92sZ2yMvJenevnnLtGFSMTRQ46Z2f9n+mUO1GlvpanR1HAfhgPddlKasIncTJmPQ==} + '@rspack/binding-win32-ia32-msvc@1.0.4': + resolution: {integrity: sha512-VCXXhOh9aWg31RfvJL87cvqIeL8h+gG2LPkXCJ8kzvQItLg6vlXABCGHf3NlaVUnDtAHnhsAT1sOHiD8G/kMfg==} cpu: [ia32] os: [win32] @@ -4519,16 +4512,16 @@ packages: cpu: [x64] os: [win32] - '@rspack/binding-win32-x64-msvc@1.0.3': - resolution: {integrity: sha512-htBi4xt+iXD/NCEo/q4fYSg5YfXymK9P9zI36NFvfguQbhwqy4JgBx0IorjDFl5qvG70sdUzY7x98DJEseGScQ==} + '@rspack/binding-win32-x64-msvc@1.0.4': + resolution: {integrity: sha512-hlhAZVpL1MmGJUZ730JvOL6zc12BlfIIwRNnn0PkCrNSxNOYknkfKVix8CfPU9r8L2W8MOJfsbtjteCiJmJnQA==} cpu: [x64] os: [win32] '@rspack/binding@1.0.0': resolution: {integrity: sha512-eLyqSEM1h/exJYn98k+9MRktP8AYDB13x5oVn8hoxVucuhk0TubFqQSX8h9SQcZp1O3j/Z8eWWwOaNPe3JU40Q==} - '@rspack/binding@1.0.3': - resolution: {integrity: sha512-wRLUDyi/6jFDDZJIov4uh9H9hJNk7JKDEhaMLM/5lJzzWsTLBB/q6JB1VAdIzOzBhYsU8iIMEVuG3Uih1H43uw==} + '@rspack/binding@1.0.4': + resolution: {integrity: sha512-YbVyVWvYXCAqUqIyBPEwl+M0js4BqVAxqnsRiZG861MXrqNyYbGOMTcc3Pc6D0SW/gkcWugGWzQ5jgMjAIhHzw==} '@rspack/core@1.0.0': resolution: {integrity: sha512-F4RA9uOLLvD1oTKa96Gcly+Sro1qaqPNENadFyiPwepa7DrwexQa/ym6CQKbvKMOYGKlVSFDPUmgFAirz35ETg==} @@ -4539,8 +4532,8 @@ packages: '@swc/helpers': optional: true - '@rspack/core@1.0.3': - resolution: {integrity: sha512-BqyBSrcTtsm1EDI10TrK6tEfNsy5vEnVDnbI0HBuQBH1zhKblnvsu6Y2bbS9+OGmB+OPEr76CmuZtzb+7V3wrQ==} + '@rspack/core@1.0.4': + resolution: {integrity: sha512-/R3JenF5wJSj3DPxiewyIPGzuZV336XpRORjUAOvbHPK6zea8Eeqcx6RopWM6TMikRYdZOHThKV99tyi4QLsMg==} engines: {node: '>=16.0.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -4629,66 +4622,135 @@ packages: '@supabase/supabase-js@2.45.3': resolution: {integrity: sha512-4wAux6cuVMrdH/qUjKn6p3p3L9AtAO3Une6ojIrtpCj1RaXKVoyIATiacSRAI+pKff6XZBVCGC29v+z4Jo/uSw==} + '@swc/core-darwin-arm64@1.7.26': + resolution: {integrity: sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + '@swc/core-darwin-arm64@1.7.6': resolution: {integrity: sha512-6lYHey84ZzsdtC7UuPheM4Rm0Inzxm6Sb8U6dmKc4eCx8JL0LfWG4LC5RsdsrTxnjTsbriWlnhZBffh8ijUHIQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] + '@swc/core-darwin-x64@1.7.26': + resolution: {integrity: sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + '@swc/core-darwin-x64@1.7.6': resolution: {integrity: sha512-Fyl+8aH9O5rpx4O7r2KnsPpoi32iWoKOYKiipeTbGjQ/E95tNPxbmsz4yqE8Ovldcga60IPJ5OKQA3HWRiuzdw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] + '@swc/core-linux-arm-gnueabihf@1.7.26': + resolution: {integrity: sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + '@swc/core-linux-arm-gnueabihf@1.7.6': resolution: {integrity: sha512-2WxYTqFaOx48GKC2cbO1/IntA+w+kfCFy436Ij7qRqqtV/WAvTM9TC1OmiFbqq436rSot52qYmX8fkwdB5UcLQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] + '@swc/core-linux-arm64-gnu@1.7.26': + resolution: {integrity: sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + '@swc/core-linux-arm64-gnu@1.7.6': resolution: {integrity: sha512-TBEGMSe0LhvPe4S7E68c7VzgT3OMu4VTmBLS7B2aHv4v8uZO92Khpp7L0WqgYU1y5eMjk+XLDLi4kokiNHv/Hg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] + '@swc/core-linux-arm64-musl@1.7.26': + resolution: {integrity: sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + '@swc/core-linux-arm64-musl@1.7.6': resolution: {integrity: sha512-QI8QGL0HGT42tj7F1A+YAzhGkJjUcvvTfI1e2m704W0Enl2/UIK9v5D1zvQzYwusRyKuaQfbeBRYDh0NcLOGLg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] + '@swc/core-linux-x64-gnu@1.7.26': + resolution: {integrity: sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + '@swc/core-linux-x64-gnu@1.7.6': resolution: {integrity: sha512-61AYVzhjuNQAVIKKWOJu3H0/pFD28RYJGxnGg3YMhvRLRyuWNyY5Nyyj2WkKcz/ON+g38Arlz00NT1LDIViRLg==} engines: {node: '>=10'} cpu: [x64] os: [linux] + '@swc/core-linux-x64-musl@1.7.26': + resolution: {integrity: sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + '@swc/core-linux-x64-musl@1.7.6': resolution: {integrity: sha512-hQFznpfLK8XajfAAN9Cjs0w/aVmO7iu9VZvInyrTCRcPqxV5O+rvrhRxKvC1LRMZXr5M6JRSRtepp5w+TK4kAw==} engines: {node: '>=10'} cpu: [x64] os: [linux] + '@swc/core-win32-arm64-msvc@1.7.26': + resolution: {integrity: sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + '@swc/core-win32-arm64-msvc@1.7.6': resolution: {integrity: sha512-Aqsd9afykVMuekzjm4X4TDqwxmG4CrzoOSFe0hZrn9SMio72l5eAPnMtYoe5LsIqtjV8MNprLfXaNbjHjTegmA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] + '@swc/core-win32-ia32-msvc@1.7.26': + resolution: {integrity: sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + '@swc/core-win32-ia32-msvc@1.7.6': resolution: {integrity: sha512-9h0hYnOeRVNeQgHQTvD1Im67faNSSzBZ7Adtxyu9urNLfBTJilMllFd2QuGHlKW5+uaT6ZH7ZWDb+c/enx7Lcg==} engines: {node: '>=10'} cpu: [ia32] os: [win32] + '@swc/core-win32-x64-msvc@1.7.26': + resolution: {integrity: sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + '@swc/core-win32-x64-msvc@1.7.6': resolution: {integrity: sha512-izeoB8glCSe6IIDQmrVm6bvR9muk9TeKgmtY7b6l1BwL4BFnTUk4dMmpbntT90bEVQn3JPCaPtUG4HfL8VuyuA==} engines: {node: '>=10'} cpu: [x64] os: [win32] + '@swc/core@1.7.26': + resolution: {integrity: sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + '@swc/core@1.7.6': resolution: {integrity: sha512-FZxyao9eQks1MRmUshgsZTmlg/HB2oXK5fghkoWJm/1CU2q2kaJlVDll2as5j+rmWiwkp0Gidlq8wlXcEEAO+g==} engines: {node: '>=10'} @@ -4704,6 +4766,9 @@ packages: '@swc/helpers@0.5.12': resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + '@swc/types@0.1.12': resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} @@ -6199,6 +6264,10 @@ packages: resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} engines: {node: '>=10.13.0'} + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -9617,6 +9686,37 @@ packages: terser: optional: true + vite@5.4.4: + resolution: {integrity: sha512-RHFCkULitycHVTtelJ6jQLd+KSAAzOgEYorV32R2q++M6COBjKJR6BxqClwp5sf0XaBDjVMuJ9wnNfyAJwjMkA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + vitest@1.6.0: resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -9702,6 +9802,15 @@ packages: webpack: optional: true + webpack-dev-middleware@7.4.2: + resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-dev-server@5.0.4: resolution: {integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==} engines: {node: '>= 18.12.0'} @@ -9715,6 +9824,19 @@ packages: webpack-cli: optional: true + webpack-dev-server@5.1.0: + resolution: {integrity: sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==} + engines: {node: '>= 18.12.0'} + hasBin: true + peerDependencies: + webpack: ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + webpack-merge@5.10.0: resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} engines: {node: '>=10.0.0'} @@ -9736,6 +9858,16 @@ packages: webpack-cli: optional: true + webpack@5.94.0: + resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + websocket-driver@0.7.4: resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} engines: {node: '>=0.8.0'} @@ -11039,9 +11171,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.5.6(@swc/core@1.7.6)': + '@nrwl/tao@19.5.6(@swc/core@1.7.26(@swc/helpers@0.5.13))': dependencies: - nx: 19.5.6(@swc/core@1.7.6) + nx: 19.5.6(@swc/core@1.7.26(@swc/helpers@0.5.13)) tslib: 2.7.0 transitivePeerDependencies: - '@swc-node/register' @@ -11723,80 +11855,80 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - '@rsbuild/core@1.0.1-rc.5': + '@rsbuild/core@1.0.2': dependencies: - '@rspack/core': 1.0.3(@swc/helpers@0.5.12) + '@rspack/core': 1.0.4(@swc/helpers@0.5.13) '@rspack/lite-tapable': 1.0.0 - '@swc/helpers': 0.5.12 + '@swc/helpers': 0.5.13 caniuse-lite: 1.0.30001659 core-js: 3.38.1 optionalDependencies: fsevents: 2.3.3 - '@rsbuild/plugin-react@1.0.1-rc.0(@rsbuild/core@1.0.1-rc.0)': + '@rsbuild/plugin-react@1.0.1(@rsbuild/core@1.0.2)': dependencies: - '@rsbuild/core': 1.0.1-rc.0 + '@rsbuild/core': 1.0.2 '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) react-refresh: 0.14.2 - '@rsbuild/plugin-react@1.0.1-rc.5(@rsbuild/core@1.0.1-rc.5)': + '@rsbuild/plugin-react@1.0.1-rc.0(@rsbuild/core@1.0.1-rc.0)': dependencies: - '@rsbuild/core': 1.0.1-rc.5 + '@rsbuild/core': 1.0.1-rc.0 '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) react-refresh: 0.14.2 '@rspack/binding-darwin-arm64@1.0.0': optional: true - '@rspack/binding-darwin-arm64@1.0.3': + '@rspack/binding-darwin-arm64@1.0.4': optional: true '@rspack/binding-darwin-x64@1.0.0': optional: true - '@rspack/binding-darwin-x64@1.0.3': + '@rspack/binding-darwin-x64@1.0.4': optional: true '@rspack/binding-linux-arm64-gnu@1.0.0': optional: true - '@rspack/binding-linux-arm64-gnu@1.0.3': + '@rspack/binding-linux-arm64-gnu@1.0.4': optional: true '@rspack/binding-linux-arm64-musl@1.0.0': optional: true - '@rspack/binding-linux-arm64-musl@1.0.3': + '@rspack/binding-linux-arm64-musl@1.0.4': optional: true '@rspack/binding-linux-x64-gnu@1.0.0': optional: true - '@rspack/binding-linux-x64-gnu@1.0.3': + '@rspack/binding-linux-x64-gnu@1.0.4': optional: true '@rspack/binding-linux-x64-musl@1.0.0': optional: true - '@rspack/binding-linux-x64-musl@1.0.3': + '@rspack/binding-linux-x64-musl@1.0.4': optional: true '@rspack/binding-win32-arm64-msvc@1.0.0': optional: true - '@rspack/binding-win32-arm64-msvc@1.0.3': + '@rspack/binding-win32-arm64-msvc@1.0.4': optional: true '@rspack/binding-win32-ia32-msvc@1.0.0': optional: true - '@rspack/binding-win32-ia32-msvc@1.0.3': + '@rspack/binding-win32-ia32-msvc@1.0.4': optional: true '@rspack/binding-win32-x64-msvc@1.0.0': optional: true - '@rspack/binding-win32-x64-msvc@1.0.3': + '@rspack/binding-win32-x64-msvc@1.0.4': optional: true '@rspack/binding@1.0.0': @@ -11811,17 +11943,17 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.0.0 '@rspack/binding-win32-x64-msvc': 1.0.0 - '@rspack/binding@1.0.3': + '@rspack/binding@1.0.4': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.0.3 - '@rspack/binding-darwin-x64': 1.0.3 - '@rspack/binding-linux-arm64-gnu': 1.0.3 - '@rspack/binding-linux-arm64-musl': 1.0.3 - '@rspack/binding-linux-x64-gnu': 1.0.3 - '@rspack/binding-linux-x64-musl': 1.0.3 - '@rspack/binding-win32-arm64-msvc': 1.0.3 - '@rspack/binding-win32-ia32-msvc': 1.0.3 - '@rspack/binding-win32-x64-msvc': 1.0.3 + '@rspack/binding-darwin-arm64': 1.0.4 + '@rspack/binding-darwin-x64': 1.0.4 + '@rspack/binding-linux-arm64-gnu': 1.0.4 + '@rspack/binding-linux-arm64-musl': 1.0.4 + '@rspack/binding-linux-x64-gnu': 1.0.4 + '@rspack/binding-linux-x64-musl': 1.0.4 + '@rspack/binding-win32-arm64-msvc': 1.0.4 + '@rspack/binding-win32-ia32-msvc': 1.0.4 + '@rspack/binding-win32-x64-msvc': 1.0.4 '@rspack/core@1.0.0(@swc/helpers@0.5.12)': dependencies: @@ -11832,14 +11964,14 @@ snapshots: optionalDependencies: '@swc/helpers': 0.5.12 - '@rspack/core@1.0.3(@swc/helpers@0.5.12)': + '@rspack/core@1.0.4(@swc/helpers@0.5.13)': dependencies: '@module-federation/runtime-tools': 0.5.1 - '@rspack/binding': 1.0.3 + '@rspack/binding': 1.0.4 '@rspack/lite-tapable': 1.0.0 caniuse-lite: 1.0.30001659 optionalDependencies: - '@swc/helpers': 0.5.12 + '@swc/helpers': 0.5.13 '@rspack/lite-tapable@1.0.0': {} @@ -11948,37 +12080,84 @@ snapshots: - bufferutil - utf-8-validate + '@swc/core-darwin-arm64@1.7.26': + optional: true + '@swc/core-darwin-arm64@1.7.6': optional: true + '@swc/core-darwin-x64@1.7.26': + optional: true + '@swc/core-darwin-x64@1.7.6': optional: true + '@swc/core-linux-arm-gnueabihf@1.7.26': + optional: true + '@swc/core-linux-arm-gnueabihf@1.7.6': optional: true + '@swc/core-linux-arm64-gnu@1.7.26': + optional: true + '@swc/core-linux-arm64-gnu@1.7.6': optional: true + '@swc/core-linux-arm64-musl@1.7.26': + optional: true + '@swc/core-linux-arm64-musl@1.7.6': optional: true + '@swc/core-linux-x64-gnu@1.7.26': + optional: true + '@swc/core-linux-x64-gnu@1.7.6': optional: true + '@swc/core-linux-x64-musl@1.7.26': + optional: true + '@swc/core-linux-x64-musl@1.7.6': optional: true + '@swc/core-win32-arm64-msvc@1.7.26': + optional: true + '@swc/core-win32-arm64-msvc@1.7.6': optional: true + '@swc/core-win32-ia32-msvc@1.7.26': + optional: true + '@swc/core-win32-ia32-msvc@1.7.6': optional: true + '@swc/core-win32-x64-msvc@1.7.26': + optional: true + '@swc/core-win32-x64-msvc@1.7.6': optional: true - '@swc/core@1.7.6(@swc/helpers@0.5.12)': + '@swc/core@1.7.26(@swc/helpers@0.5.13)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.12 + optionalDependencies: + '@swc/core-darwin-arm64': 1.7.26 + '@swc/core-darwin-x64': 1.7.26 + '@swc/core-linux-arm-gnueabihf': 1.7.26 + '@swc/core-linux-arm64-gnu': 1.7.26 + '@swc/core-linux-arm64-musl': 1.7.26 + '@swc/core-linux-x64-gnu': 1.7.26 + '@swc/core-linux-x64-musl': 1.7.26 + '@swc/core-win32-arm64-msvc': 1.7.26 + '@swc/core-win32-ia32-msvc': 1.7.26 + '@swc/core-win32-x64-msvc': 1.7.26 + '@swc/helpers': 0.5.13 + + '@swc/core@1.7.6(@swc/helpers@0.5.13)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.12 @@ -11993,7 +12172,7 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.7.6 '@swc/core-win32-ia32-msvc': 1.7.6 '@swc/core-win32-x64-msvc': 1.7.6 - '@swc/helpers': 0.5.12 + '@swc/helpers': 0.5.13 '@swc/counter@0.1.3': {} @@ -12001,6 +12180,10 @@ snapshots: dependencies: tslib: 2.7.0 + '@swc/helpers@0.5.13': + dependencies: + tslib: 2.7.0 + '@swc/types@0.1.12': dependencies: '@swc/counter': 0.1.3 @@ -12446,12 +12629,12 @@ snapshots: tslib: 2.7.0 vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) - '@vinxi/react-server-dom@0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1))': + '@vinxi/react-server-dom@0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1))': dependencies: acorn-loose: 8.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) + vite: 5.4.4(@types/node@22.5.4)(terser@5.31.1) '@vinxi/react@0.2.4': {} @@ -12488,14 +12671,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.3.1(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1))': + '@vitejs/plugin-react@4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) + vite: 5.4.4(@types/node@22.5.4)(terser@5.31.1) transitivePeerDependencies: - supports-color @@ -12558,20 +12741,6 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 - '@vue/language-core@2.0.29(typescript@5.5.3)': - dependencies: - '@volar/language-core': 2.4.0 - '@vue/compiler-dom': 3.4.27 - '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.4.27 - computeds: 0.0.1 - minimatch: 9.0.5 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - optionalDependencies: - typescript: 5.5.3 - optional: true - '@vue/language-core@2.0.29(typescript@5.6.2)': dependencies: '@volar/language-core': 2.4.0 @@ -12665,23 +12834,40 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4))': dependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4))': + dependencies: + webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) + + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4))': dependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4))': dependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) + + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4))': + dependencies: + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) optionalDependencies: webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4))': + dependencies: + webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) + optionalDependencies: + webpack-dev-server: 5.1.0(webpack-cli@5.1.4)(webpack@5.94.0) + '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} @@ -13711,6 +13897,11 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 + enhanced-resolve@5.17.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 @@ -14625,7 +14816,18 @@ snapshots: relateurl: 0.2.7 terser: 5.31.1 - html-webpack-plugin@5.6.0(@rspack/core@1.0.3(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.0(@rspack/core@1.0.4(@swc/helpers@0.5.13))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + optionalDependencies: + '@rspack/core': 1.0.4(@swc/helpers@0.5.13) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) + + html-webpack-plugin@5.6.0(@rspack/core@1.0.4(@swc/helpers@0.5.13))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -14633,8 +14835,8 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - '@rspack/core': 1.0.3(@swc/helpers@0.5.12) - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) + '@rspack/core': 1.0.4(@swc/helpers@0.5.13) + webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) htmlparser2@6.1.0: dependencies: @@ -15346,7 +15548,7 @@ snapshots: mkdirp@1.0.4: {} - mkdist@1.5.7(typescript@5.5.3)(vue-tsc@2.0.29(typescript@5.5.3)): + mkdist@1.5.7(typescript@5.6.2)(vue-tsc@2.0.29(typescript@5.6.2)): dependencies: autoprefixer: 10.4.20(postcss@8.4.45) citty: 0.1.6 @@ -15362,8 +15564,8 @@ snapshots: postcss-nested: 6.2.0(postcss@8.4.45) semver: 7.6.3 optionalDependencies: - typescript: 5.5.3 - vue-tsc: 2.0.29(typescript@5.5.3) + typescript: 5.6.2 + vue-tsc: 2.0.29(typescript@5.6.2) mlly@1.7.0: dependencies: @@ -15608,10 +15810,10 @@ snapshots: nwsapi@2.2.12: {} - nx@19.5.6(@swc/core@1.7.6): + nx@19.5.6(@swc/core@1.7.26(@swc/helpers@0.5.13)): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.5.6(@swc/core@1.7.6) + '@nrwl/tao': 19.5.6(@swc/core@1.7.26(@swc/helpers@0.5.13)) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -15656,7 +15858,7 @@ snapshots: '@nx/nx-linux-x64-musl': 19.5.6 '@nx/nx-win32-arm64-msvc': 19.5.6 '@nx/nx-win32-x64-msvc': 19.5.6 - '@swc/core': 1.7.6(@swc/helpers@0.5.12) + '@swc/core': 1.7.26(@swc/helpers@0.5.13) transitivePeerDependencies: - debug @@ -16443,11 +16645,11 @@ snapshots: dependencies: glob: 10.4.5 - rollup-plugin-dts@6.1.1(rollup@3.29.4)(typescript@5.5.3): + rollup-plugin-dts@6.1.1(rollup@3.29.4)(typescript@5.6.2): dependencies: magic-string: 0.30.11 rollup: 3.29.4 - typescript: 5.5.3 + typescript: 5.6.2 optionalDependencies: '@babel/code-frame': 7.24.7 @@ -16920,11 +17122,17 @@ snapshots: csso: 5.0.5 picocolors: 1.1.0 - swc-loader@0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.12))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)): + swc-loader@0.2.6(@swc/core@1.7.26(@swc/helpers@0.5.13))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: - '@swc/core': 1.7.6(@swc/helpers@0.5.12) + '@swc/core': 1.7.26(@swc/helpers@0.5.13) '@swc/counter': 0.1.3 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) + + swc-loader@0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.13))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): + dependencies: + '@swc/core': 1.7.6(@swc/helpers@0.5.13) + '@swc/counter': 0.1.3 + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) swr@2.2.5(react@18.3.1): dependencies: @@ -17017,28 +17225,40 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.1 + webpack: 5.93.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1) + optionalDependencies: + '@swc/core': 1.7.26(@swc/helpers@0.5.13) + esbuild: 0.23.1 + + terser-webpack-plugin@5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) optionalDependencies: - '@swc/core': 1.7.6(@swc/helpers@0.5.12) + '@swc/core': 1.7.26(@swc/helpers@0.5.13) esbuild: 0.23.1 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6)(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.23.1)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6)(esbuild@0.23.1) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) optionalDependencies: - '@swc/core': 1.7.6(@swc/helpers@0.5.12) + '@swc/core': 1.7.6(@swc/helpers@0.5.13) esbuild: 0.23.1 terser@5.31.1: @@ -17221,7 +17441,7 @@ snapshots: ufo@1.5.3: {} - unbuild@2.0.0(typescript@5.5.3)(vue-tsc@2.0.29(typescript@5.5.3)): + unbuild@2.0.0(typescript@5.6.2)(vue-tsc@2.0.29(typescript@5.6.2)): dependencies: '@rollup/plugin-alias': 5.1.0(rollup@3.29.4) '@rollup/plugin-commonjs': 25.0.7(rollup@3.29.4) @@ -17238,17 +17458,17 @@ snapshots: hookable: 5.5.3 jiti: 1.21.0 magic-string: 0.30.11 - mkdist: 1.5.7(typescript@5.5.3)(vue-tsc@2.0.29(typescript@5.5.3)) + mkdist: 1.5.7(typescript@5.6.2)(vue-tsc@2.0.29(typescript@5.6.2)) mlly: 1.7.0 pathe: 1.1.2 pkg-types: 1.1.1 pretty-bytes: 6.1.1 rollup: 3.29.4 - rollup-plugin-dts: 6.1.1(rollup@3.29.4)(typescript@5.5.3) + rollup-plugin-dts: 6.1.1(rollup@3.29.4)(typescript@5.6.2) scule: 1.3.0 untyped: 1.4.2 optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.2 transitivePeerDependencies: - sass - supports-color @@ -17568,6 +17788,17 @@ snapshots: - supports-color - typescript + vite-tsconfig-paths@5.0.1(typescript@5.6.2)(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)): + dependencies: + debug: 4.3.6 + globrex: 0.1.2 + tsconfck: 3.0.3(typescript@5.6.2) + optionalDependencies: + vite: 5.4.4(@types/node@22.5.4)(terser@5.31.1) + transitivePeerDependencies: + - supports-color + - typescript + vite@5.3.5(@types/node@22.5.4)(terser@5.31.1): dependencies: esbuild: 0.21.5 @@ -17588,6 +17819,16 @@ snapshots: fsevents: 2.3.3 terser: 5.31.1 + vite@5.4.4(@types/node@22.5.4)(terser@5.31.1): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.45 + rollup: 4.21.2 + optionalDependencies: + '@types/node': 22.5.4 + fsevents: 2.3.3 + terser: 5.31.1 + vitest@1.6.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.31.1): dependencies: '@vitest/expect': 1.6.0 @@ -17625,14 +17866,6 @@ snapshots: vscode-uri@3.0.8: {} - vue-tsc@2.0.29(typescript@5.5.3): - dependencies: - '@volar/typescript': 2.4.0 - '@vue/language-core': 2.0.29(typescript@5.5.3) - semver: 7.6.3 - typescript: 5.5.3 - optional: true - vue-tsc@2.0.29(typescript@5.6.2): dependencies: '@volar/typescript': 2.4.0 @@ -17666,9 +17899,9 @@ snapshots: webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -17677,12 +17910,42 @@ snapshots: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) - webpack-dev-middleware@7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)): + webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0): + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + colorette: 2.0.20 + commander: 10.0.1 + cross-spawn: 7.0.3 + envinfo: 7.13.0 + fastest-levenshtein: 1.0.16 + import-local: 3.1.0 + interpret: 3.1.1 + rechoir: 0.8.0 + webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack-merge: 5.10.0 + optionalDependencies: + webpack-dev-server: 5.1.0(webpack-cli@5.1.4)(webpack@5.94.0) + + webpack-dev-middleware@7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): + dependencies: + colorette: 2.0.20 + memfs: 4.9.3 + mime-types: 2.1.35 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.2.0 + optionalDependencies: + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) + + webpack-dev-middleware@7.4.2(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: colorette: 2.0.20 memfs: 4.9.3 @@ -17691,7 +17954,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0): dependencies: @@ -17723,10 +17986,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + webpack-dev-middleware: 7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) ws: 8.18.0 optionalDependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - bufferutil @@ -17734,6 +17997,45 @@ snapshots: - supports-color - utf-8-validate + webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.94.0): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.5 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.10 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + express: 4.19.2 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + ipaddr.js: 2.2.0 + launch-editor: 2.8.0 + open: 10.1.0 + p-retry: 6.2.0 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.4.2(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + ws: 8.18.0 + optionalDependencies: + webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + webpack-merge@5.10.0: dependencies: clone-deep: 4.0.1 @@ -17744,7 +18046,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4): + webpack@5.93.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -17767,17 +18069,15 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.12))(esbuild@0.23.1)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)) watchpack: 2.4.1 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.23.1): + webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -17800,9 +18100,43 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6)(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6)(esbuild@0.23.1)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + watchpack: 2.4.1 + webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4): + dependencies: + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) + browserslist: 4.23.3 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) transitivePeerDependencies: - '@swc/core' - esbuild From e18d1002247ab850cc001d3807295efb0b9cf4af Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Thu, 12 Sep 2024 17:35:28 +0200 Subject: [PATCH 102/154] fix(create-router): correct tsconfig.json --- packages/create-router/templates/core/tsconfig.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/create-router/templates/core/tsconfig.json b/packages/create-router/templates/core/tsconfig.json index c9e17e2b68..28953fdefa 100644 --- a/packages/create-router/templates/core/tsconfig.json +++ b/packages/create-router/templates/core/tsconfig.json @@ -2,6 +2,9 @@ "compilerOptions": { "strict": true, "esModuleInterop": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler" } } From c6a4fc88ca9f48b2446aad24b38d9640410c386a Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Thu, 12 Sep 2024 19:00:51 +0200 Subject: [PATCH 103/154] fix(create-route): no more overrides necessary --- .../quickstart-rspack-file-based/package.json | 4 +- packages/create-router/src/bundler/rspack.ts | 6 - pnpm-lock.yaml | 146 +----------------- 3 files changed, 6 insertions(+), 150 deletions(-) diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 1fcabb5ca9..ff85c2a7cb 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -14,8 +14,8 @@ "react-dom": "^18.3.1" }, "devDependencies": { - "@rsbuild/core": "1.0.1-rc.0", - "@rsbuild/plugin-react": "1.0.1-rc.0", + "@rsbuild/core": "1.0.2", + "@rsbuild/plugin-react": "1.0.1", "@tanstack/router-plugin": "^1.57.9", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", diff --git a/packages/create-router/src/bundler/rspack.ts b/packages/create-router/src/bundler/rspack.ts index f3bf258447..d596b9cf85 100644 --- a/packages/create-router/src/bundler/rspack.ts +++ b/packages/create-router/src/bundler/rspack.ts @@ -12,11 +12,6 @@ export const devDependencies = [ '@rsbuild/plugin-react', ] as const satisfies Array -export const overrides = { - '@tanstack/router-plugin': { - '@rsbuild/core': '$@rsbuild/core', - }, -} export async function apply({ targetFolder, }: ApplyParams): Promise { @@ -28,6 +23,5 @@ export async function apply({ return { scripts, devDependencies, - overrides, } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3f9dc89b1b..db7d6cdab6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1015,11 +1015,11 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@rsbuild/core': - specifier: 1.0.1-rc.0 - version: 1.0.1-rc.0 + specifier: 1.0.2 + version: 1.0.2 '@rsbuild/plugin-react': - specifier: 1.0.1-rc.0 - version: 1.0.1-rc.0(@rsbuild/core@1.0.1-rc.0) + specifier: 1.0.1 + version: 1.0.1(@rsbuild/core@1.0.2) '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin @@ -4407,11 +4407,6 @@ packages: cpu: [x64] os: [win32] - '@rsbuild/core@1.0.1-rc.0': - resolution: {integrity: sha512-tSszHL2sp/iNZkYMOOorgBonh4XAIfJODlt6JBTg5PMAywm+XXdFoEglaKeAM6WiQ/0rQYOataKrHbMkfxmh/A==} - engines: {node: '>=16.7.0'} - hasBin: true - '@rsbuild/core@1.0.2': resolution: {integrity: sha512-kEHmNj4QjDoqvyswEiz8gJCdc2Yo4SXlQD+TnY7ch8pTVs6kLnXRa1KclFLCdgwYnikYvvPsbBERSF8Y2I3KDg==} engines: {node: '>=16.7.0'} @@ -4422,116 +4417,54 @@ packages: peerDependencies: '@rsbuild/core': 1.x || ^1.0.1-rc.0 - '@rsbuild/plugin-react@1.0.1-rc.0': - resolution: {integrity: sha512-bjKRNdihb3LoWW74Ri2lBQqrTaksIpGx9/mp/RiRpVUGzX+9/SDlXWvrnWdndKPm7UYfY3VBCZNT2zJRi0CCKg==} - peerDependencies: - '@rsbuild/core': ^1.0.1-rc.0 - - '@rspack/binding-darwin-arm64@1.0.0': - resolution: {integrity: sha512-ZHQk9YK+swlTG48kJTgzFUW9T26KjhLXRok5la7t2AMoiuHyhGHHgC5iQfPJLZ62XzcJ/rfqs2rwakl97151jQ==} - cpu: [arm64] - os: [darwin] - '@rspack/binding-darwin-arm64@1.0.4': resolution: {integrity: sha512-HR4OVarDhLYAd3GRus26mGjaoEkvFGSdhRHWPXkTqPWT1QIx+cMTDe2dUnEb/CZyvpH0afLBlVHrxqUBNiLT/Q==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.0.0': - resolution: {integrity: sha512-qhTXm9wUhv2lBjsqqfCu59RchH1/2jursdPAmTqGc7zMReZdZvtJs2Ri6Ma1M48BLLu+7fS4fbL8Rw1g78TOOQ==} - cpu: [x64] - os: [darwin] - '@rspack/binding-darwin-x64@1.0.4': resolution: {integrity: sha512-3L/vrzrcBpg1h7SqD+9m7CB0UlkDt3aOyJGZc0vwLOQM8IezRsawEoidyN9KyYhpDzBZHzLAUnsva33BcbFJYQ==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.0.0': - resolution: {integrity: sha512-yKnlsWgvydJRxDBGGKC+cyDeoSzIvOzuVqCloy5oAFAGOMXMY6bznxrkE6/olGZncdeLEpnJzZmXSuF1dYc8ow==} - cpu: [arm64] - os: [linux] - '@rspack/binding-linux-arm64-gnu@1.0.4': resolution: {integrity: sha512-Ggo2tLJKOFNsdcg9H3eYSUy03Wrq0PMVIlm50p/LLAMlfYm3kxBDNv7fP13fxlUe/oqXtFcVOlmMezbMH4oz8w==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@1.0.0': - resolution: {integrity: sha512-dKFmlqlF4FELT/AX02hSwX8aRawjH5zAliQzYnvgrqcEyCKE60vKacGJQ3ZeRyru6dh5MlbUNW4H1+TDT+cDVA==} - cpu: [arm64] - os: [linux] - '@rspack/binding-linux-arm64-musl@1.0.4': resolution: {integrity: sha512-2FeDh8/THJTH2N4XpFC9oRvdDlkOw6bQ+vS8x1jLUXj+CDwqmUiECjh+78o4qwe1EH2egWDmkq84RQ+KoR37mQ==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-x64-gnu@1.0.0': - resolution: {integrity: sha512-fRk9i8aE4FiwW7+LkNyw+5vfFzJ8BZ2seAL9V5U2iwYwYibzFJsukg3h3Uh+IsGm30/7+ZRENtGwybQiMruL4g==} - cpu: [x64] - os: [linux] - '@rspack/binding-linux-x64-gnu@1.0.4': resolution: {integrity: sha512-k2YQ579fDfXBw4KJMvZQQPShFUSln7wqtG59ltNLBejgFSxOtlMfLhY5oSuRvFCtsAS4SQUPOmUmfW/0dpCa7A==} cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@1.0.0': - resolution: {integrity: sha512-qcTJC8o3KvLwsnrJJcuBjfzSrjEbACMiCB4RtbFNecXDtI+Nputx1CO1SlUrINC25/44ILketf0/hsdBQHk60g==} - cpu: [x64] - os: [linux] - '@rspack/binding-linux-x64-musl@1.0.4': resolution: {integrity: sha512-1Pmuq3qnE45U7uhCJNtRbDiQVF+U4BXbsA+ISNd3Gp/MUZqpuOOgrND9OWw7d+xKRifzEMtd81DaPMkrcXyRvw==} cpu: [x64] os: [linux] - '@rspack/binding-win32-arm64-msvc@1.0.0': - resolution: {integrity: sha512-gqtakP0Yl2aj+Q/Giwgt31hz8eOZpo2s+sJlkMJGVdIF4dejB31a8vbj/VNGeSN1tDRiLI4cyqa5eQU//t26aQ==} - cpu: [arm64] - os: [win32] - '@rspack/binding-win32-arm64-msvc@1.0.4': resolution: {integrity: sha512-3tBP4xTAe8XRAlchMj2nlQXy2GOICA5StFK0kQMRId4V3xfgjlKDb/dMHMEHH4R1to1f9er9R0cRydUNP5AnbQ==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.0.0': - resolution: {integrity: sha512-nLfGu5DjdzwawzZ7zK69vZX5aL1Gt9+Ovfz4RlngDq/D5ZzqCnNWw93cqKADgFRWS4qK9vOD9RXNNnkyWB2SEw==} - cpu: [ia32] - os: [win32] - '@rspack/binding-win32-ia32-msvc@1.0.4': resolution: {integrity: sha512-VCXXhOh9aWg31RfvJL87cvqIeL8h+gG2LPkXCJ8kzvQItLg6vlXABCGHf3NlaVUnDtAHnhsAT1sOHiD8G/kMfg==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.0.0': - resolution: {integrity: sha512-H9PqjgtZMw5aP+eXdFo7bgSP/Ycwn3oW81uI9qFqOOQ90W+o3T9ItghHBf2/ksc5GHibd208EwOBNxbKwjZDSQ==} - cpu: [x64] - os: [win32] - '@rspack/binding-win32-x64-msvc@1.0.4': resolution: {integrity: sha512-hlhAZVpL1MmGJUZ730JvOL6zc12BlfIIwRNnn0PkCrNSxNOYknkfKVix8CfPU9r8L2W8MOJfsbtjteCiJmJnQA==} cpu: [x64] os: [win32] - '@rspack/binding@1.0.0': - resolution: {integrity: sha512-eLyqSEM1h/exJYn98k+9MRktP8AYDB13x5oVn8hoxVucuhk0TubFqQSX8h9SQcZp1O3j/Z8eWWwOaNPe3JU40Q==} - '@rspack/binding@1.0.4': resolution: {integrity: sha512-YbVyVWvYXCAqUqIyBPEwl+M0js4BqVAxqnsRiZG861MXrqNyYbGOMTcc3Pc6D0SW/gkcWugGWzQ5jgMjAIhHzw==} - '@rspack/core@1.0.0': - resolution: {integrity: sha512-F4RA9uOLLvD1oTKa96Gcly+Sro1qaqPNENadFyiPwepa7DrwexQa/ym6CQKbvKMOYGKlVSFDPUmgFAirz35ETg==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@swc/helpers': - optional: true - '@rspack/core@1.0.4': resolution: {integrity: sha512-/R3JenF5wJSj3DPxiewyIPGzuZV336XpRORjUAOvbHPK6zea8Eeqcx6RopWM6TMikRYdZOHThKV99tyi4QLsMg==} engines: {node: '>=16.0.0'} @@ -4763,9 +4696,6 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.12': - resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} - '@swc/helpers@0.5.13': resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} @@ -11845,16 +11775,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.21.2': optional: true - '@rsbuild/core@1.0.1-rc.0': - dependencies: - '@rspack/core': 1.0.0(@swc/helpers@0.5.12) - '@rspack/lite-tapable': 1.0.0 - '@swc/helpers': 0.5.12 - caniuse-lite: 1.0.30001653 - core-js: 3.38.1 - optionalDependencies: - fsevents: 2.3.3 - '@rsbuild/core@1.0.2': dependencies: '@rspack/core': 1.0.4(@swc/helpers@0.5.13) @@ -11871,78 +11791,33 @@ snapshots: '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) react-refresh: 0.14.2 - '@rsbuild/plugin-react@1.0.1-rc.0(@rsbuild/core@1.0.1-rc.0)': - dependencies: - '@rsbuild/core': 1.0.1-rc.0 - '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) - react-refresh: 0.14.2 - - '@rspack/binding-darwin-arm64@1.0.0': - optional: true - '@rspack/binding-darwin-arm64@1.0.4': optional: true - '@rspack/binding-darwin-x64@1.0.0': - optional: true - '@rspack/binding-darwin-x64@1.0.4': optional: true - '@rspack/binding-linux-arm64-gnu@1.0.0': - optional: true - '@rspack/binding-linux-arm64-gnu@1.0.4': optional: true - '@rspack/binding-linux-arm64-musl@1.0.0': - optional: true - '@rspack/binding-linux-arm64-musl@1.0.4': optional: true - '@rspack/binding-linux-x64-gnu@1.0.0': - optional: true - '@rspack/binding-linux-x64-gnu@1.0.4': optional: true - '@rspack/binding-linux-x64-musl@1.0.0': - optional: true - '@rspack/binding-linux-x64-musl@1.0.4': optional: true - '@rspack/binding-win32-arm64-msvc@1.0.0': - optional: true - '@rspack/binding-win32-arm64-msvc@1.0.4': optional: true - '@rspack/binding-win32-ia32-msvc@1.0.0': - optional: true - '@rspack/binding-win32-ia32-msvc@1.0.4': optional: true - '@rspack/binding-win32-x64-msvc@1.0.0': - optional: true - '@rspack/binding-win32-x64-msvc@1.0.4': optional: true - '@rspack/binding@1.0.0': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.0.0 - '@rspack/binding-darwin-x64': 1.0.0 - '@rspack/binding-linux-arm64-gnu': 1.0.0 - '@rspack/binding-linux-arm64-musl': 1.0.0 - '@rspack/binding-linux-x64-gnu': 1.0.0 - '@rspack/binding-linux-x64-musl': 1.0.0 - '@rspack/binding-win32-arm64-msvc': 1.0.0 - '@rspack/binding-win32-ia32-msvc': 1.0.0 - '@rspack/binding-win32-x64-msvc': 1.0.0 - '@rspack/binding@1.0.4': optionalDependencies: '@rspack/binding-darwin-arm64': 1.0.4 @@ -11955,15 +11830,6 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.0.4 '@rspack/binding-win32-x64-msvc': 1.0.4 - '@rspack/core@1.0.0(@swc/helpers@0.5.12)': - dependencies: - '@module-federation/runtime-tools': 0.5.1 - '@rspack/binding': 1.0.0 - '@rspack/lite-tapable': 1.0.0 - caniuse-lite: 1.0.30001659 - optionalDependencies: - '@swc/helpers': 0.5.12 - '@rspack/core@1.0.4(@swc/helpers@0.5.13)': dependencies: '@module-federation/runtime-tools': 0.5.1 @@ -12176,10 +12042,6 @@ snapshots: '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.12': - dependencies: - tslib: 2.7.0 - '@swc/helpers@0.5.13': dependencies: tslib: 2.7.0 From c99f1ab7e68de8047d74df3b6cc3b57159b8f97b Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 12 Sep 2024 17:23:38 +0000 Subject: [PATCH 104/154] release: v1.57.11 --- examples/react/authenticated-routes/package.json | 2 +- examples/react/basic-file-based-codesplitting/package.json | 2 +- examples/react/basic-file-based/package.json | 2 +- examples/react/basic-react-query-file-based/package.json | 2 +- examples/react/basic-ssr-file-based/package.json | 4 ++-- examples/react/basic-ssr-streaming-file-based/package.json | 4 ++-- examples/react/basic-virtual-file-based/package.json | 2 +- examples/react/basic-virtual-inside-file-based/package.json | 2 +- examples/react/kitchen-sink-file-based/package.json | 2 +- .../react/kitchen-sink-react-query-file-based/package.json | 2 +- examples/react/large-file-based/package.json | 2 +- examples/react/quickstart-file-based/package.json | 2 +- examples/react/quickstart-rspack-file-based/package.json | 2 +- examples/react/quickstart-webpack-file-based/package.json | 2 +- examples/react/search-validator-adapters/package.json | 2 +- examples/react/start-basic-auth/package.json | 4 ++-- examples/react/start-basic-counter/package.json | 2 +- examples/react/start-basic-react-query/package.json | 4 ++-- examples/react/start-basic-rsc/package.json | 4 ++-- examples/react/start-basic/package.json | 4 ++-- examples/react/start-clerk-basic/package.json | 4 ++-- examples/react/start-convex-trellaux/package.json | 4 ++-- examples/react/start-supabase-basic/package.json | 4 ++-- examples/react/start-trellaux/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 2 +- examples/react/with-trpc/package.json | 2 +- packages/create-router/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/start/package.json | 2 +- 31 files changed, 41 insertions(+), 41 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index a60a0a68e8..030211cb55 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 7902129e94..ee91eb5596 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 2eb421e3a0..13835f89fe 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -12,7 +12,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 42aa4dee8f..c22c717aee 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index e2a673f3a1..0546b76a45 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.10", + "@tanstack/router-plugin": "^1.57.11", + "@tanstack/start": "^1.57.11", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 45faa2295a..df80127988 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.10", + "@tanstack/router-plugin": "^1.57.11", + "@tanstack/start": "^1.57.11", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 467c56a835..1058b8462e 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -12,7 +12,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 92b1f162a6..6dd9ddbb17 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 9d6fc75812..8b569f476d 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 70bd5d0b36..e0998be143 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -13,7 +13,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index efe0e9ccce..77c0a44fd2 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query": "^5.51.21", "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 8ebdf5c560..8835223af6 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index ff85c2a7cb..da9008fd79 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@rsbuild/core": "1.0.2", "@rsbuild/plugin-react": "1.0.1", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.6.2" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 9d2f1d3a9a..21535f18c0 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index c8ca52388b..bb3231875b 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "@tanstack/router-zod-adapter": "^1.57.10", "@tanstack/router-valibot-adapter": "^1.57.10", "@tanstack/router-arktype-adapter": "^1.57.10", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index a54fb04fe9..56286643eb 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -16,8 +16,8 @@ "@prisma/client": "5.17.0", "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.10", + "@tanstack/router-plugin": "^1.57.11", + "@tanstack/start": "^1.57.11", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index a6d41712c4..c816b4a52d 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@tanstack/react-router": "^1.57.10", - "@tanstack/start": "^1.57.10", + "@tanstack/start": "^1.57.11", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 8a0beeff4f..8a23373787 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -17,8 +17,8 @@ "@tanstack/react-router": "^1.57.10", "@tanstack/react-router-with-query": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.10", + "@tanstack/router-plugin": "^1.57.11", + "@tanstack/start": "^1.57.11", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 8ff9331739..fdfa7f950d 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -14,8 +14,8 @@ "@babel/plugin-syntax-typescript": "^7.24.7", "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.10", + "@tanstack/router-plugin": "^1.57.11", + "@tanstack/start": "^1.57.11", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 1d6794be65..54c8939ce0 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -14,8 +14,8 @@ "dependencies": { "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.10", + "@tanstack/router-plugin": "^1.57.11", + "@tanstack/start": "^1.57.11", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 014d599090..2c308a2250 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -15,8 +15,8 @@ "@clerk/tanstack-start": "0.3.5", "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.10", + "@tanstack/router-plugin": "^1.57.11", + "@tanstack/start": "^1.57.11", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index f76cf0f3e6..63085f5840 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -18,8 +18,8 @@ "@tanstack/react-router": "^1.57.10", "@tanstack/react-router-with-query": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.10", + "@tanstack/router-plugin": "^1.57.11", + "@tanstack/start": "^1.57.11", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 85cb255a98..b2fee7fa6f 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -16,9 +16,9 @@ "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.3", "@tanstack/react-router": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/start": "^1.57.10", + "@tanstack/start": "^1.57.11", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 300fcc1b4d..17b66335c6 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -16,8 +16,8 @@ "@tanstack/react-router": "^1.57.10", "@tanstack/react-router-with-query": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", - "@tanstack/start": "^1.57.10", + "@tanstack/router-plugin": "^1.57.11", + "@tanstack/start": "^1.57.11", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index fa38b10fe6..e7b197f08a 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -12,7 +12,7 @@ "@tanstack/react-query-devtools": "^5.51.21", "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 89168f9b36..1194ba7c96 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -10,7 +10,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.10", "@tanstack/router-devtools": "^1.57.10", - "@tanstack/router-plugin": "^1.57.9", + "@tanstack/router-plugin": "^1.57.11", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 61d30f776c..558a101c75 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.10", + "version": "1.57.11", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 87d0fc8704..d4f97df324 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.57.9", + "version": "1.57.11", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 9589dac4d5..97ddbd5448 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.57.9", + "version": "1.57.11", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index dd274c1a34..b68bd5f056 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.57.9", + "version": "1.57.11", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 5d2bbea39c..337dc1c209 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.10", + "version": "1.57.11", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From cef3604cf276ecb0255a102e5597352cb260acd0 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Fri, 13 Sep 2024 00:00:53 +0200 Subject: [PATCH 105/154] fix(react-router): ignore blockers for redirects (#2325) fixes #2322 --- packages/react-router/src/router.ts | 7 ++- packages/react-router/tests/blocker.test.tsx | 57 +++++++++++++++++--- 2 files changed, 57 insertions(+), 7 deletions(-) diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index ecf4a92845..82ceeeb9b9 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -1767,7 +1767,12 @@ export class Router< if (isResolvedRedirect(err)) { redirect = err if (!this.isServer) { - this.navigate({ ...err, replace: true, __isRedirect: true }) + this.navigate({ + ...err, + replace: true, + __isRedirect: true, + ignoreBlocker: true, + }) } } else if (isNotFound(err)) { notFound = err diff --git a/packages/react-router/tests/blocker.test.tsx b/packages/react-router/tests/blocker.test.tsx index 32ba93da30..c598e49402 100644 --- a/packages/react-router/tests/blocker.test.tsx +++ b/packages/react-router/tests/blocker.test.tsx @@ -10,12 +10,14 @@ import { createRootRoute, createRoute, createRouter, + redirect, useBlocker, useNavigate, } from '../src' afterEach(() => { window.history.replaceState(null, 'root', '/') + vi.resetAllMocks() cleanup() }) @@ -29,15 +31,16 @@ async function setup({ condition, ignoreBlocker }: BlockerTestOpts) { const indexRoute = createRoute({ getParentRoute: () => rootRoute, path: '/', - component: () => { + component: function Setup() { const navigate = useNavigate() useBlocker({ condition, blockerFn }) return (

Index

- link + link to posts + link to foo @@ -56,20 +59,49 @@ async function setup({ condition, ignoreBlocker }: BlockerTestOpts) { ), }) + const fooRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/foo', + beforeLoad: () => { + throw redirect({ to: '/bar' }) + }, + component: () => ( + +

Foo

+
+ ), + }) + + const barRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/bar', + component: () => ( + +

Bar

+
+ ), + }) + const router = createRouter({ - routeTree: rootRoute.addChildren([indexRoute, postsRoute]), + routeTree: rootRoute.addChildren([ + indexRoute, + postsRoute, + fooRoute, + barRoute, + ]), }) render() expect(window.location.pathname).toBe('/') - const link = await screen.findByRole('link', { name: 'link' }) + const postsLink = await screen.findByRole('link', { name: 'link to posts' }) + const fooLink = await screen.findByRole('link', { name: 'link to foo' }) const button = await screen.findByRole('button', { name: 'button' }) - return { router, clickable: { link, button }, blockerFn } + return { router, clickable: { postsLink, fooLink, button }, blockerFn } } -const clickTarget = ['link' as const, 'button' as const] +const clickTarget = ['postsLink' as const, 'button' as const] describe('Blocker', () => { const doesNotBlockTextMatrix = combinate({ @@ -115,4 +147,17 @@ describe('Blocker', () => { expect(blockerFn).toHaveBeenCalledOnce() }, ) + + test('blocker function is only called once when navigating to a route that redirects', async () => { + const { clickable, blockerFn } = await setup({ + condition: true, + ignoreBlocker: false, + }) + blockerFn.mockImplementationOnce(() => true).mockImplementation(() => false) + fireEvent.click(clickable.fooLink) + expect( + await screen.findByRole('heading', { name: 'Bar' }), + ).toBeInTheDocument() + expect(window.location.pathname).toBe('/bar') + }) }) From f3e8c9d310d1bcdd23276e766219c2b04aa0a55c Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 12 Sep 2024 22:04:39 +0000 Subject: [PATCH 106/154] release: v1.57.12 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic-virtual-file-based/package.json | 4 ++-- .../react/basic-virtual-inside-file-based/package.json | 4 ++-- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-supabase-basic/package.json | 6 +++--- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 45 files changed, 98 insertions(+), 98 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 030211cb55..68a979d1b0 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 0fdabf48d6..b74f96fdb6 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index ee91eb5596..bd5ef7c2b0 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 13835f89fe..baedc143b0 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index c22c717aee..fd234bc004 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index fda8b73992..007fc54205 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 0546b76a45..314ed7be6f 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.11", + "@tanstack/start": "^1.57.12", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index df80127988..3c1b9fb931 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.11", + "@tanstack/start": "^1.57.12", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 1058b8462e..301044d03d 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 6dd9ddbb17..ecce2f9da0 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index c83854071c..138c530992 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index ebe413341e..5ba8e95375 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 8b569f476d..abb8f55e29 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index e0998be143..2b43f0ee7b 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 07d7e31a55..ad2d5608c8 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 98b20786a2..43d2a8c369 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 77c0a44fd2..42545f1c43 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 7c40f95ba4..3cc2607e31 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 511610d3e8..59b02e8c17 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 8835223af6..c3feabec85 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index da9008fd79..5e79042b99 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 21535f18c0..32704c860c 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index f575ff9914..72deb2e19e 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index ab8c7f5288..be9222c31d 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", + "@tanstack/react-router": "^1.57.12", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/router-devtools": "^1.57.12", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index bb3231875b..a1b964e633 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", - "@tanstack/router-zod-adapter": "^1.57.10", - "@tanstack/router-valibot-adapter": "^1.57.10", - "@tanstack/router-arktype-adapter": "^1.57.10", + "@tanstack/router-zod-adapter": "^1.57.12", + "@tanstack/router-valibot-adapter": "^1.57.12", + "@tanstack/router-arktype-adapter": "^1.57.12", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 56286643eb..1e4cc71c59 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.11", + "@tanstack/start": "^1.57.12", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index c816b4a52d..ef3788947c 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/start": "^1.57.11", + "@tanstack/react-router": "^1.57.12", + "@tanstack/start": "^1.57.12", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 8a23373787..3d14342d8a 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.10", - "@tanstack/react-router-with-query": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/react-router-with-query": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.11", + "@tanstack/start": "^1.57.12", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index fdfa7f950d..b0d033f0c3 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.11", + "@tanstack/start": "^1.57.12", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 54c8939ce0..27d74e86d9 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.11", + "@tanstack/start": "^1.57.12", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 2c308a2250..5d63cc7237 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.5", - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.11", + "@tanstack/start": "^1.57.12", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 63085f5840..fa78d0477c 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.10", - "@tanstack/react-router-with-query": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/react-router-with-query": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.11", + "@tanstack/start": "^1.57.12", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index b2fee7fa6f..2fdb82ba88 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.3", - "@tanstack/react-router": "^1.57.10", + "@tanstack/react-router": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", - "@tanstack/router-devtools": "^1.57.10", - "@tanstack/start": "^1.57.11", + "@tanstack/router-devtools": "^1.57.12", + "@tanstack/start": "^1.57.12", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 17b66335c6..67deaf03e9 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.10", - "@tanstack/react-router-with-query": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/react-router-with-query": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.11", + "@tanstack/start": "^1.57.12", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 2a03b6e1bc..9b5dd20636 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index e7b197f08a..768586e9da 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 1194ba7c96..a0a6fa8f54 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.57.10", - "@tanstack/router-devtools": "^1.57.10", + "@tanstack/react-router": "^1.57.12", + "@tanstack/router-devtools": "^1.57.12", "@tanstack/router-plugin": "^1.57.11", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 558a101c75..eba9f65336 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.11", + "version": "1.57.12", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 3c46a2462e..0246c68116 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.57.10", + "version": "1.57.12", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 4f1843ea67..67e58a9cf7 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.57.10", + "version": "1.57.12", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 5733e007bb..6ca390a8f7 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.57.10", + "version": "1.57.12", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 578a48014f..241b10ea2a 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.57.10", + "version": "1.57.12", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index ca71769f93..a7310d8f32 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.57.10", + "version": "1.57.12", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 49222101d4..e11bc159c5 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.57.10", + "version": "1.57.12", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 337dc1c209..01e0263e1b 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.11", + "version": "1.57.12", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 7c1ff9b208bc5481ddd962ee3a9c69a5430ca34a Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Fri, 13 Sep 2024 00:42:39 +0200 Subject: [PATCH 107/154] chore: remove unused parameter (#2326) --- packages/react-router/src/RouterProvider.tsx | 4 +--- packages/react-router/src/router.ts | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/react-router/src/RouterProvider.tsx b/packages/react-router/src/RouterProvider.tsx index d9188a4559..a2b8fddafe 100644 --- a/packages/react-router/src/RouterProvider.tsx +++ b/packages/react-router/src/RouterProvider.tsx @@ -36,9 +36,7 @@ export type NavigateFn = < TMaskFrom extends RoutePaths | string = TFrom, TMaskTo extends string = '', >( - opts: NavigateOptions & { - __isRedirect?: boolean - }, + opts: NavigateOptions, ) => Promise export type BuildLocationFn = < diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index 82ceeeb9b9..f63da80295 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -1615,7 +1615,7 @@ export class Router< }) } - navigate: NavigateFn = ({ to, __isRedirect, ...rest }) => { + navigate: NavigateFn = ({ to, ...rest }) => { // If this link simply reloads the current route, // make sure it has a new key so it will trigger a data refresh @@ -1770,7 +1770,6 @@ export class Router< this.navigate({ ...err, replace: true, - __isRedirect: true, ignoreBlocker: true, }) } From 616946f4e033b2ad9c646052da0e75d4a97b3c18 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Fri, 13 Sep 2024 01:15:30 +0200 Subject: [PATCH 108/154] fix(router-generator): only write files if they would be different after formatting (#2327) --- packages/router-generator/src/generator.ts | 80 +++++++++++++--------- packages/router-generator/src/utils.ts | 35 ++++++++++ 2 files changed, 82 insertions(+), 33 deletions(-) diff --git a/packages/router-generator/src/generator.ts b/packages/router-generator/src/generator.ts index 7626b8f9e5..ff975c1fbb 100644 --- a/packages/router-generator/src/generator.ts +++ b/packages/router-generator/src/generator.ts @@ -12,6 +12,7 @@ import { replaceBackslash, routePathToVariable, trimPathLeft, + writeIfDifferent, } from './utils' import { getRouteNodes as physicalGetRouteNodes } from './filesystem/physical/getRouteNodes' import { getRouteNodes as virtualGetRouteNodes } from './filesystem/virtual/getRouteNodes' @@ -226,10 +227,17 @@ export const Route = createRootRoute({ ) } - if (replaced !== routeCode) { - logger.log(`🟡 Updating ${node.fullPath}`) - await fsp.writeFile(node.fullPath, replaced) - } + await writeIfDifferent( + node.fullPath, + prettierOptions, + routeCode, + replaced, + { + beforeWrite: () => { + logger.log(`🟡 Updating ${node.fullPath}`) + }, + }, + ) } if ( @@ -361,18 +369,20 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ await prettier.format(replaced, prettierOptions), ) } else { - const copied = routeCode.replace( - /(createAPIFileRoute\(\s*['"])([^\s]*)(['"],?\s*\))/g, - (_, p1, __, p3) => `${p1}${escapedRoutePath}${p3}`, + await writeIfDifferent( + node.fullPath, + prettierOptions, + routeCode, + routeCode.replace( + /(createAPIFileRoute\(\s*['"])([^\s]*)(['"],?\s*\))/g, + (_, p1, __, p3) => `${p1}${escapedRoutePath}${p3}`, + ), + { + beforeWrite: () => { + logger.log(`🟡 Updating ${node.fullPath}`) + }, + }, ) - - if (copied !== routeCode) { - logger.log(`🟡 Updating ${node.fullPath}`) - await fsp.writeFile( - node.fullPath, - await prettier.format(copied, prettierOptions), - ) - } } } @@ -673,18 +683,15 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ ) } - const routeConfigFileContent = await prettier.format( - config.disableManifestGeneration - ? routeImports - : [ - routeImports, - '\n', - '/* ROUTE_MANIFEST_START', - createRouteManifest(), - 'ROUTE_MANIFEST_END */', - ].join('\n'), - prettierOptions, - ) + const routeConfigFileContent = config.disableManifestGeneration + ? routeImports + : [ + routeImports, + '\n', + '/* ROUTE_MANIFEST_START', + createRouteManifest(), + 'ROUTE_MANIFEST_END */', + ].join('\n') if (!checkLatest()) return @@ -708,12 +715,19 @@ export const Route = createAPIFileRoute('${escapedRoutePath}')({ if (!checkLatest()) return // Write the route tree file, if it has changed - if (existingRouteTreeContent !== routeConfigFileContent) { - await fsp.writeFile( - path.resolve(config.generatedRouteTree), - routeConfigFileContent, - ) - if (!checkLatest()) return + const routeTreeWriteResult = await writeIfDifferent( + path.resolve(config.generatedRouteTree), + prettierOptions, + existingRouteTreeContent, + routeConfigFileContent, + { + beforeWrite: () => { + logger.log(`🟡 Updating ${config.generatedRouteTree}`) + }, + }, + ) + if (routeTreeWriteResult && !checkLatest()) { + return } logger.log( diff --git a/packages/router-generator/src/utils.ts b/packages/router-generator/src/utils.ts index 201341f773..cc91b77b55 100644 --- a/packages/router-generator/src/utils.ts +++ b/packages/router-generator/src/utils.ts @@ -1,3 +1,6 @@ +import * as fs from 'node:fs' +import * as prettier from 'prettier' + export function multiSortBy( arr: Array, accessors: Array<(item: T) => any> = [(d) => d], @@ -99,3 +102,35 @@ export function capitalize(s: string) { export function removeExt(d: string, keepExtension: boolean = false) { return keepExtension ? d : d.substring(0, d.lastIndexOf('.')) || d } + +/** + * This function writes to a file if the content is different. + * + * @param filepath The path to the file + * @param prettierOptions Prettier options + * @param content Original content + * @param incomingContent New content + * @param callbacks Callbacks to run before and after writing + * @returns Whether the file was written + */ +export async function writeIfDifferent( + filepath: string, + prettierOptions: prettier.Options, + content: string, + incomingContent: string, + callbacks?: { beforeWrite?: () => void; afterWrite?: () => void }, +): Promise { + const [formattedContent, updatedContent] = await Promise.all([ + prettier.format(content, prettierOptions), + prettier.format(incomingContent, prettierOptions), + ]) + + if (formattedContent !== updatedContent) { + callbacks?.beforeWrite?.() + fs.writeFileSync(filepath, updatedContent) + callbacks?.afterWrite?.() + return true + } + + return false +} From cf4f924e2c031efa2fad039f80b0bdc675b1e0ae Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 12 Sep 2024 23:16:50 +0000 Subject: [PATCH 109/154] release: v1.57.13 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic-virtual-file-based/package.json | 6 +++--- .../basic-virtual-inside-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-supabase-basic/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 49 files changed, 127 insertions(+), 127 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 68a979d1b0..04b87a7d24 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index b74f96fdb6..10975d2dc3 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index bd5ef7c2b0..9ce928f5ae 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index baedc143b0..5c5fca4ca3 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index fd234bc004..878977e08c 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,9 +12,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 007fc54205..842d77e7bb 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 314ed7be6f..5cb770f453 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", + "@tanstack/start": "^1.57.13", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 3c1b9fb931..b0f0cdfb93 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", + "@tanstack/start": "^1.57.13", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 301044d03d..02a54017bb 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index ecce2f9da0..168e403673 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 138c530992..2b7804ec73 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 5ba8e95375..c094d82a97 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index abb8f55e29..70bbf9c7a7 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 2b43f0ee7b..ad902d6a78 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index ad2d5608c8..05c1ea4ecb 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 43d2a8c369..62e51dc3b6 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 42545f1c43..1e1ba31046 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 3cc2607e31..989d72a6cf 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 59b02e8c17..68c6e834dd 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.51.21", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index c3feabec85..fe2172d69d 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 5e79042b99..dfd66f8436 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.2", "@rsbuild/plugin-react": "1.0.1", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/router-plugin": "^1.57.13", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.6.2" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 32704c860c..ea45014d96 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.6", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/router-plugin": "^1.57.13", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 72deb2e19e..e0d60d5478 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index be9222c31d..7e0f59bb91 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", + "@tanstack/react-router": "^1.57.13", "@tanstack/react-virtual": "^3.8.4", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/router-devtools": "^1.57.13", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index a1b964e633..e2e284abeb 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", - "@tanstack/router-zod-adapter": "^1.57.12", - "@tanstack/router-valibot-adapter": "^1.57.12", - "@tanstack/router-arktype-adapter": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", + "@tanstack/router-zod-adapter": "^1.57.13", + "@tanstack/router-valibot-adapter": "^1.57.13", + "@tanstack/router-arktype-adapter": "^1.57.13", "@tanstack/react-query": "^5.51.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 1e4cc71c59..9290faf167 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.17.0", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", + "@tanstack/start": "^1.57.13", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index ef3788947c..6020a7ee85 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/start": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/start": "^1.57.13", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.2" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 3d14342d8a..4cef529bec 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.12", - "@tanstack/react-router-with-query": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/react-router-with-query": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", + "@tanstack/start": "^1.57.13", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index b0d033f0c3..6116f2f42a 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.24.7", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", + "@tanstack/start": "^1.57.13", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.2" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 27d74e86d9..fff21ff833 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", + "@tanstack/start": "^1.57.13", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 5d63cc7237..a35fbdf32e 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.3.5", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", + "@tanstack/start": "^1.57.13", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.12", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index fa78d0477c..7b4a204d8b 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.12", - "@tanstack/react-router-with-query": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/react-router-with-query": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", + "@tanstack/start": "^1.57.13", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 2fdb82ba88..38704a98a7 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.3", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/start": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/start": "^1.57.13", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 67deaf03e9..b7f54eec54 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.12", - "@tanstack/react-router-with-query": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", - "@tanstack/start": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/react-router-with-query": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", + "@tanstack/start": "^1.57.13", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.14", "ky": "^1.5.0", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 9b5dd20636..fc726901e0 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", "redaxios": "^0.5.1", "framer-motion": "^11.3.21", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 768586e9da..7c82a9dfdb 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.51.21", "@tanstack/react-query-devtools": "^5.51.21", - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", "@trpc/client": "11.0.0-rc.477", "@trpc/react-query": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index a0a6fa8f54..68e2825ce1 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.57.12", - "@tanstack/router-devtools": "^1.57.12", - "@tanstack/router-plugin": "^1.57.11", + "@tanstack/react-router": "^1.57.13", + "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-plugin": "^1.57.13", "@trpc/client": "11.0.0-rc.477", "@trpc/server": "11.0.0-rc.477", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index eba9f65336..c2a1f5203e 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.12", + "version": "1.57.13", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 0246c68116..afb77d6f87 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.57.12", + "version": "1.57.13", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 67e58a9cf7..d2ae1c7f1a 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.57.12", + "version": "1.57.13", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 6ca390a8f7..24605d80ea 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.57.12", + "version": "1.57.13", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index d4f97df324..292b8bdb10 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.57.11", + "version": "1.57.13", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 241b10ea2a..f8be49846e 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.57.12", + "version": "1.57.13", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index fd7e3ee4e8..e34ef3d8cd 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.57.9", + "version": "1.57.13", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 97ddbd5448..bedda44d0f 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.57.11", + "version": "1.57.13", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index a7310d8f32..5baa844d32 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.57.12", + "version": "1.57.13", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index b68bd5f056..cd0d0bbd19 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.57.11", + "version": "1.57.13", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index e11bc159c5..4229a8f6c7 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.57.12", + "version": "1.57.13", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 01e0263e1b..a697634954 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.12", + "version": "1.57.13", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 8fde2ef13d887f6657a0534c5f2e9e6216329121 Mon Sep 17 00:00:00 2001 From: Naresh Khatri <32219857+Naresh-Khatri@users.noreply.github.com> Date: Sat, 14 Sep 2024 03:33:15 +0530 Subject: [PATCH 110/154] docs(router): fix typo in the overview guide (#2329) --- docs/framework/react/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework/react/overview.md b/docs/framework/react/overview.md index b20be5d073..db426cb221 100644 --- a/docs/framework/react/overview.md +++ b/docs/framework/react/overview.md @@ -25,7 +25,7 @@ To get started quickly, head to the next page. For a more lengthy explanation, b Using a router to build applications is widely regarded as a must-have and is usually one of the first choices you’ll make in your tech stack. -**So, why should to choose TanStack Router over another router?** +**So, why should you choose TanStack Router over another router?** To answer this question, we need to look at the other options in the space. There are many if you look hard enough, but in my experience, only a couple are worth exploring seriously: From fc987c4867ad9a8ac0fcc822d345ed84b950a3b0 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sat, 14 Sep 2024 23:08:14 +0200 Subject: [PATCH 111/154] examples: do not throw if env var is missing as this will cause a build failure while this would be wanted in a real app, we don't have that .env var available in this example --- examples/react/start-convex-trellaux/app/router.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/react/start-convex-trellaux/app/router.tsx b/examples/react/start-convex-trellaux/app/router.tsx index 8942fef5f4..f3bfd4a02c 100644 --- a/examples/react/start-convex-trellaux/app/router.tsx +++ b/examples/react/start-convex-trellaux/app/router.tsx @@ -19,7 +19,7 @@ export function createRouter() { const CONVEX_URL = (import.meta as any).env.VITE_CONVEX_URL! if (!CONVEX_URL) { - throw new Error('missing envar') + console.error('missing envar CONVEX_URL') } const convexQueryClient = new ConvexQueryClient(CONVEX_URL) From 943547cb66b6a1752c85cb3ca9fe6e0c21227d3e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Sep 2024 23:49:12 +0200 Subject: [PATCH 112/154] chore(deps): update all non-major dependencies (#2217) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/pr.yml | 2 +- .../react/authenticated-routes/package.json | 2 +- .../basic-default-search-params/package.json | 4 +- .../package.json | 2 +- examples/react/basic-file-based/package.json | 4 +- .../basic-react-query-file-based/package.json | 8 +- examples/react/basic-react-query/package.json | 8 +- .../react/basic-ssr-file-based/package.json | 10 +- .../package.json | 10 +- .../basic-virtual-file-based/package.json | 4 +- .../package.json | 4 +- examples/react/basic/package.json | 4 +- examples/react/deferred-data/package.json | 2 +- .../kitchen-sink-file-based/package.json | 2 +- .../package.json | 6 +- .../kitchen-sink-react-query/package.json | 6 +- examples/react/kitchen-sink/package.json | 2 +- examples/react/large-file-based/package.json | 4 +- examples/react/location-masking/package.json | 4 +- .../react/navigation-blocking/package.json | 4 +- .../react/quickstart-file-based/package.json | 2 +- .../quickstart-rspack-file-based/package.json | 4 +- .../package.json | 6 +- examples/react/quickstart/package.json | 2 +- .../react/scroll-restoration/package.json | 4 +- .../search-validator-adapters/package.json | 8 +- examples/react/start-basic-auth/package.json | 18 +- .../react/start-basic-counter/package.json | 4 +- .../start-basic-react-query/package.json | 16 +- examples/react/start-basic-rsc/package.json | 10 +- examples/react/start-basic/package.json | 12 +- examples/react/start-clerk-basic/package.json | 16 +- .../react/start-convex-trellaux/package.json | 20 +- .../react/start-supabase-basic/package.json | 8 +- examples/react/start-trellaux/package.json | 18 +- .../react/with-framer-motion/package.json | 4 +- .../react/with-trpc-react-query/package.json | 12 +- examples/react/with-trpc/package.json | 6 +- package.json | 18 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 4 +- packages/router-arktype-adapter/package.json | 6 +- packages/router-cli/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 10 +- packages/router-valibot-adapter/package.json | 6 +- packages/router-zod-adapter/package.json | 4 +- packages/start-vite-plugin/package.json | 10 +- packages/start/package.json | 12 +- pnpm-lock.yaml | 4187 +++++++---------- 50 files changed, 1906 insertions(+), 2619 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 8bee4aac3e..58184731f3 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -27,7 +27,7 @@ jobs: - name: Setup Tools uses: tanstack/config/.github/setup@main - name: Get base and head commits for `nx affected` - uses: nrwl/nx-set-shas@v4.0.6 + uses: nrwl/nx-set-shas@v4.1.0 with: main-branch-name: main - name: Run Checks diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 04b87a7d24..ee9edd22b4 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -22,6 +22,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 10975d2dc3..6bc167dbd5 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -9,7 +9,7 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-query": "^5.51.21", + "@tanstack/react-query": "^5.56.2", "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "redaxios": "^0.5.1", @@ -21,6 +21,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 9ce928f5ae..e4df16a433 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -22,6 +22,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 5c5fca4ca3..ec14f41ad7 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -20,10 +20,10 @@ "zod": "^3.23.8" }, "devDependencies": { - "@playwright/test": "^1.46.1", + "@playwright/test": "^1.47.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 878977e08c..783bb228f5 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-query": "^5.51.21", - "@tanstack/react-query-devtools": "^5.51.21", + "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "@tanstack/router-plugin": "^1.57.13", @@ -22,10 +22,10 @@ "zod": "^3.23.8" }, "devDependencies": { - "@playwright/test": "^1.46.1", + "@playwright/test": "^1.47.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 842d77e7bb..7062bdbe98 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-query": "^5.51.21", - "@tanstack/react-query-devtools": "^5.51.21", + "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "react": "^18.2.0", @@ -19,10 +19,10 @@ "redaxios": "^0.5.1" }, "devDependencies": { - "@playwright/test": "^1.46.1", + "@playwright/test": "^1.47.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 5cb770f453..e0cdf7ac15 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -22,16 +22,16 @@ }, "devDependencies": { "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", + "@babel/generator": "^7.25.6", "@rollup/plugin-babel": "^6.0.4", "@types/express": "^4.17.21", "@vitejs/plugin-react": "^4.3.1", "compression": "^1.7.4", - "express": "^4.19.2", - "isbot": "^5.1.14", + "express": "^4.21.0", + "isbot": "^5.1.17", "node-fetch": "^3.3.2", - "serve-static": "^1.15.0", - "vite": "^5.3.5", + "serve-static": "^1.16.2", + "vite": "^5.4.5", "vite-plugin-babel": "^1.2.0" } } diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index b0f0cdfb93..45cdca513d 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -23,16 +23,16 @@ }, "devDependencies": { "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", + "@babel/generator": "^7.25.6", "@rollup/plugin-babel": "^6.0.4", "@types/express": "^4.17.21", "@vitejs/plugin-react": "^4.3.1", "compression": "^1.7.4", - "express": "^4.19.2", - "isbot": "^5.1.14", + "express": "^4.21.0", + "isbot": "^5.1.17", "node-fetch": "^3.3.2", - "serve-static": "^1.15.0", - "vite": "^5.3.5", + "serve-static": "^1.16.2", + "vite": "^5.4.5", "vite-plugin-babel": "^1.2.0" } } diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 02a54017bb..a5c1a68bf8 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -21,10 +21,10 @@ "zod": "^3.23.8" }, "devDependencies": { - "@playwright/test": "^1.46.1", + "@playwright/test": "^1.47.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 168e403673..7dd7db2fd0 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -20,10 +20,10 @@ "zod": "^3.23.8" }, "devDependencies": { - "@playwright/test": "^1.46.1", + "@playwright/test": "^1.47.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 2b7804ec73..4d22782442 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -17,10 +17,10 @@ "redaxios": "^0.5.1" }, "devDependencies": { - "@playwright/test": "^1.46.1", + "@playwright/test": "^1.47.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index c094d82a97..e18710c249 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -21,6 +21,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 70bbf9c7a7..c14076181c 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -22,6 +22,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index ad902d6a78..2e3fa0a5e2 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-query": "^5.51.21", - "@tanstack/react-query-devtools": "^5.51.21", + "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "@tanstack/router-plugin": "^1.57.13", @@ -24,6 +24,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 05c1ea4ecb..0e07cba1de 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-query": "^5.51.21", - "@tanstack/react-query-devtools": "^5.51.21", + "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "redaxios": "^0.5.1", @@ -23,6 +23,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 62e51dc3b6..f98754a230 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -21,6 +21,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 1e1ba31046..e4a74dbf82 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -11,7 +11,7 @@ "test:types": "tsc --extendedDiagnostics" }, "dependencies": { - "@tanstack/react-query": "^5.51.21", + "@tanstack/react-query": "^5.56.2", "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "@tanstack/router-plugin": "^1.57.13", @@ -25,6 +25,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 989d72a6cf..e222f6fbb8 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@radix-ui/react-dialog": "^1.1.1", - "@tanstack/react-query": "^5.51.21", + "@tanstack/react-query": "^5.56.2", "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "redaxios": "^0.5.1", @@ -21,6 +21,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 68c6e834dd..11d511c188 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -9,7 +9,7 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-query": "^5.51.21", + "@tanstack/react-query": "^5.56.2", "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "redaxios": "^0.5.1", @@ -20,6 +20,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index fe2172d69d..32bdc132f7 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -22,6 +22,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index dfd66f8436..8fae16ccc2 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -14,8 +14,8 @@ "react-dom": "^18.3.1" }, "devDependencies": { - "@rsbuild/core": "1.0.2", - "@rsbuild/plugin-react": "1.0.1", + "@rsbuild/core": "1.0.4", + "@rsbuild/plugin-react": "1.0.2", "@tanstack/router-plugin": "^1.57.13", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index ea45014d96..0393e69478 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -13,15 +13,15 @@ "react-dom": "^18.3.1" }, "devDependencies": { - "@swc/core": "^1.7.6", + "@swc/core": "^1.7.26", "@tanstack/router-plugin": "^1.57.13", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", "swc-loader": "^0.2.6", "typescript": "^5.6.2", - "webpack": "^5.93.0", + "webpack": "^5.94.0", "webpack-cli": "^5.1.4", - "webpack-dev-server": "^5.0.4" + "webpack-dev-server": "^5.1.0" } } diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index e0d60d5478..ce7d7f2cd5 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -18,6 +18,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 7e0f59bb91..9f7c633a08 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@tanstack/react-router": "^1.57.13", - "@tanstack/react-virtual": "^3.8.4", + "@tanstack/react-virtual": "^3.10.7", "@tanstack/router-devtools": "^1.57.13", "react": "^18.2.0", "react-dom": "^18.2.0" @@ -19,6 +19,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index e2e284abeb..a85cf8148b 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -15,17 +15,17 @@ "@tanstack/router-zod-adapter": "^1.57.13", "@tanstack/router-valibot-adapter": "^1.57.13", "@tanstack/router-arktype-adapter": "^1.57.13", - "@tanstack/react-query": "^5.51.21", + "@tanstack/react-query": "^5.56.2", "react": "^18.2.0", "react-dom": "^18.2.0", "zod": "^3.23.8", - "valibot": "^0.37.0", - "arktype": "^2.0.0-beta.5" + "valibot": "^0.41.0", + "arktype": "^2.0.0-rc.7" }, "devDependencies": { "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 9290faf167..8f5497fb93 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -13,35 +13,35 @@ "test:e2e": "pnpm run prisma-generate && playwright test --project=chromium" }, "dependencies": { - "@prisma/client": "5.17.0", + "@prisma/client": "5.19.1", "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "@tanstack/router-plugin": "^1.57.13", "@tanstack/start": "^1.57.13", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", - "isbot": "^5.1.12", - "prisma": "^5.17.0", + "isbot": "^5.1.17", + "prisma": "^5.19.1", "react": "^18.3.1", "react-dom": "^18.3.1", "redaxios": "^0.5.1", "remix-auth-form": "^1.5.0", "tailwind-merge": "^2.5.2", - "vinxi": "0.4.2" + "vinxi": "0.4.3" }, "devDependencies": { - "@playwright/test": "^1.46.1", + "@playwright/test": "^1.47.1", "@replayio/playwright": "^3.1.8", "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", - "autoprefixer": "^10.4.19", - "postcss": "^8.4.39", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", "prettier": "^3.3.3", - "tailwindcss": "^3.4.4", + "tailwindcss": "^3.4.11", "typescript": "^5.6.2", - "vite": "^5.3.3", + "vite": "^5.4.5", "vite-tsconfig-paths": "^5.0.1" } } diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 6020a7ee85..388c504345 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -15,7 +15,7 @@ "@tanstack/start": "^1.57.13", "react": "^18.3.1", "react-dom": "^18.3.1", - "vinxi": "0.4.2" + "vinxi": "0.4.3" }, "devDependencies": { "@types/node": "^22.5.4", @@ -23,6 +23,6 @@ "@types/react-dom": "^18.2.21", "prettier": "^3.3.3", "typescript": "^5.6.2", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 4cef529bec..5d134b1e7d 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -12,33 +12,33 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-query": "^5.51.21", - "@tanstack/react-query-devtools": "^5.51.21", + "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.57.13", "@tanstack/react-router-with-query": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "@tanstack/router-plugin": "^1.57.13", "@tanstack/start": "^1.57.13", "@vitejs/plugin-react": "^4.3.1", - "isbot": "^5.1.14", + "isbot": "^5.1.17", "react": "^18.3.1", "react-dom": "^18.3.1", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", - "vinxi": "0.4.2" + "vinxi": "0.4.3" }, "devDependencies": { - "@playwright/test": "^1.46.1", + "@playwright/test": "^1.47.1", "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", - "postcss": "^8.4.40", + "postcss": "^8.4.47", "prettier": "^3.3.3", - "tailwindcss": "^3.4.7", + "tailwindcss": "^3.4.11", "typescript": "^5.6.2", - "vite": "^5.3.5", + "vite": "^5.4.5", "vite-tsconfig-paths": "^5.0.1" } } diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 6116f2f42a..ce3c122143 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -11,25 +11,25 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@babel/plugin-syntax-typescript": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.25.4", "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "@tanstack/router-plugin": "^1.57.13", "@tanstack/start": "^1.57.13", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", - "vinxi": "0.4.2" + "vinxi": "0.4.3" }, "devDependencies": { "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", - "postcss": "^8.4.40", + "postcss": "^8.4.47", "prettier": "^3.3.3", - "tailwindcss": "^3.4.7", + "tailwindcss": "^3.4.11", "typescript": "^5.6.2", - "vite": "^5.3.5", + "vite": "^5.4.5", "vite-tsconfig-paths": "^5.0.1" }, "overrides": { diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index fff21ff833..0ba5275c8d 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -17,25 +17,25 @@ "@tanstack/router-plugin": "^1.57.13", "@tanstack/start": "^1.57.13", "@vitejs/plugin-react": "^4.3.1", - "isbot": "^5.1.14", + "isbot": "^5.1.17", "react": "^18.3.1", "react-dom": "^18.3.1", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", - "vinxi": "0.4.2" + "vinxi": "0.4.3" }, "devDependencies": { - "@playwright/test": "^1.46.1", + "@playwright/test": "^1.47.1", "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", - "postcss": "^8.4.40", + "postcss": "^8.4.47", "prettier": "^3.3.3", - "tailwindcss": "^3.4.7", + "tailwindcss": "^3.4.11", "typescript": "^5.6.2", - "vite": "^5.3.5", + "vite": "^5.4.5", "vite-tsconfig-paths": "^5.0.1" } } diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index a35fbdf32e..57c6b7d5fe 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -12,34 +12,34 @@ "test:e2e": "exit 0; playwright test --project=chromium" }, "dependencies": { - "@clerk/tanstack-start": "0.3.5", + "@clerk/tanstack-start": "0.4.1", "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "@tanstack/router-plugin": "^1.57.13", "@tanstack/start": "^1.57.13", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", - "isbot": "^5.1.12", + "isbot": "^5.1.17", "react": "^18.3.1", "react-dom": "^18.3.1", "redaxios": "^0.5.1", "remix-auth-form": "^1.5.0", "tailwind-merge": "^2.5.2", - "vinxi": "0.4.2" + "vinxi": "0.4.3" }, "devDependencies": { - "@playwright/test": "^1.46.1", + "@playwright/test": "^1.47.1", "@replayio/playwright": "^3.1.8", "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", - "autoprefixer": "^10.4.19", - "postcss": "^8.4.39", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", "prettier": "^3.3.3", - "tailwindcss": "^3.4.4", + "tailwindcss": "^3.4.11", "typescript": "^5.6.2", - "vite": "^5.3.3", + "vite": "^5.4.5", "vite-tsconfig-paths": "^5.0.1" } } diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 7b4a204d8b..1fd45c686f 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -13,8 +13,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-query": "^5.51.21", - "@tanstack/react-query-devtools": "^5.51.21", + "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.57.13", "@tanstack/react-router-with-query": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", @@ -23,17 +23,17 @@ "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", - "convex": "^1.15.0", - "isbot": "^5.1.14", - "ky": "^1.5.0", - "msw": "^2.3.5", + "convex": "^1.16.0", + "isbot": "^5.1.17", + "ky": "^1.7.2", + "msw": "^2.4.6", "react": "^18.3.1", "react-dom": "^18.3.1", "react-hot-toast": "^2.4.1", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "tiny-invariant": "^1.3.3", - "vinxi": "0.4.2", + "vinxi": "0.4.3", "zod": "^3.23.8" }, "devDependencies": { @@ -41,11 +41,11 @@ "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", - "postcss": "^8.4.40", + "postcss": "^8.4.47", "prettier": "^3.3.3", - "tailwindcss": "^3.4.7", + "tailwindcss": "^3.4.11", "typescript": "^5.6.2", - "vite": "^5.3.5", + "vite": "^5.4.5", "vite-tsconfig-paths": "^5.0.1" } } diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 38704a98a7..ec58062c58 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -14,7 +14,7 @@ "license": "ISC", "dependencies": { "@supabase/ssr": "^0.5.1", - "@supabase/supabase-js": "^2.45.3", + "@supabase/supabase-js": "^2.45.4", "@tanstack/react-router": "^1.57.13", "@tanstack/router-plugin": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", @@ -22,14 +22,14 @@ "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "vinxi": "0.4.2" + "vinxi": "0.4.3" }, "devDependencies": { "@types/react": "^18.3.5", "@types/react-dom": "^18.3.0", "autoprefixer": "^10.4.20", - "postcss": "^8.4.45", - "tailwindcss": "^3.4.10", + "postcss": "^8.4.47", + "tailwindcss": "^3.4.11", "typescript": "^5.6.2" } } diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index b7f54eec54..7cc21186b5 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -11,24 +11,24 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-query": "^5.51.21", - "@tanstack/react-query-devtools": "^5.51.21", + "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.57.13", "@tanstack/react-router-with-query": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "@tanstack/router-plugin": "^1.57.13", "@tanstack/start": "^1.57.13", "@vitejs/plugin-react": "^4.3.1", - "isbot": "^5.1.14", - "ky": "^1.5.0", - "msw": "^2.3.5", + "isbot": "^5.1.17", + "ky": "^1.7.2", + "msw": "^2.4.6", "react": "^18.3.1", "react-dom": "^18.3.1", "react-hot-toast": "^2.4.1", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "tiny-invariant": "^1.3.3", - "vinxi": "0.4.2", + "vinxi": "0.4.3", "zod": "^3.23.8" }, "devDependencies": { @@ -36,11 +36,11 @@ "@types/react-dom": "^18.2.21", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", - "postcss": "^8.4.40", + "postcss": "^8.4.47", "prettier": "^3.3.3", - "tailwindcss": "^3.4.7", + "tailwindcss": "^3.4.11", "typescript": "^5.6.2", - "vite": "^5.3.5", + "vite": "^5.4.5", "vite-tsconfig-paths": "^5.0.1" } } diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index fc726901e0..6c9cc9bf6b 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -12,7 +12,7 @@ "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "redaxios": "^0.5.1", - "framer-motion": "^11.3.21", + "framer-motion": "^11.5.4", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -22,6 +22,6 @@ "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.3.5" + "vite": "^5.4.5" } } diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 7c82a9dfdb..2c8898ebb5 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -8,18 +8,18 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-query": "^5.51.21", - "@tanstack/react-query-devtools": "^5.51.21", + "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "@tanstack/router-plugin": "^1.57.13", - "@trpc/client": "11.0.0-rc.477", - "@trpc/react-query": "11.0.0-rc.477", - "@trpc/server": "11.0.0-rc.477", + "@trpc/client": "11.0.0-rc.502", + "@trpc/react-query": "11.0.0-rc.502", + "@trpc/server": "11.0.0-rc.502", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", - "vinxi": "0.4.2", + "vinxi": "0.4.3", "zod": "^3.23.8" }, "devDependencies": { diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 68e2825ce1..b7c232757e 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -11,12 +11,12 @@ "@tanstack/react-router": "^1.57.13", "@tanstack/router-devtools": "^1.57.13", "@tanstack/router-plugin": "^1.57.13", - "@trpc/client": "11.0.0-rc.477", - "@trpc/server": "11.0.0-rc.477", + "@trpc/client": "11.0.0-rc.502", + "@trpc/server": "11.0.0-rc.502", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", - "vinxi": "0.4.2", + "vinxi": "0.4.3", "zod": "^3.23.8" }, "devDependencies": { diff --git a/package.json b/package.json index 79e52a2b61..13b3417713 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "git", "url": "https://github.com/TanStack/router.git" }, - "packageManager": "pnpm@9.6.0", + "packageManager": "pnpm@9.10.0", "type": "module", "scripts": { "clean": "pnpm --filter \"./packages/**\" run clean", @@ -30,18 +30,18 @@ "gpt-generate": "node gpt/generate.js" }, "devDependencies": { - "@arethetypeswrong/cli": "^0.15.4", - "@eslint-react/eslint-plugin": "^1.12.3", - "@playwright/test": "^1.46.1", + "@arethetypeswrong/cli": "^0.16.2", + "@eslint-react/eslint-plugin": "^1.14.1", + "@playwright/test": "^1.47.1", "@tanstack/config": "^0.13.1", "@types/node": "^22.5.4", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", - "eslint": "^9.9.1", - "eslint-plugin-react-hooks": "^5.1.0-rc-a19a8ab4-20240829", + "eslint": "^9.10.0", + "eslint-plugin-react-hooks": "^5.1.0-rc-fb9a90fa48-20240614", "glob": "^10.4.5", "jsdom": "^25.0.0", - "nx": "^19.5.6", + "nx": "^19.7.3", "prettier": "^3.3.3", "publint": "^0.2.10", "react": "^18.3.1", @@ -53,8 +53,8 @@ "typescript52": "npm:typescript@5.2", "typescript53": "npm:typescript@5.3", "typescript54": "npm:typescript@5.4", - "typescript55": "npm:typescript@5.5", - "vite": "^5.3.5", + "typescript55": "npm:typescript@5.6.2", + "vite": "^5.4.5", "vitest": "^1.6.0" }, "resolutions": { diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index afb77d6f87..3d1cb7dbd7 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -68,7 +68,7 @@ "react": ">=18", "react-dom": ">=18", "@tanstack/react-router": "workspace:*", - "@tanstack/react-query": ">=5.51.21" + "@tanstack/react-query": ">=5.56.2" }, "peerDependencies": { "react": ">=18", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index d2ae1c7f1a..dfcdf46488 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -70,8 +70,8 @@ "tiny-warning": "^1.0.3" }, "devDependencies": { - "@testing-library/jest-dom": "^6.4.8", - "@testing-library/react": "^16.0.0", + "@testing-library/jest-dom": "^6.5.0", + "@testing-library/react": "^16.0.1", "@vitejs/plugin-react": "^4.3.1", "combinate": "^1.1.11", "react": "^18.2.0", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 24605d80ea..e5391c25d0 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -64,10 +64,10 @@ "node": ">=12" }, "devDependencies": { - "@testing-library/jest-dom": "^6.4.6", - "@testing-library/react": "^16.0.0", + "@testing-library/jest-dom": "^6.5.0", + "@testing-library/react": "^16.0.1", "@tanstack/react-router": "workspace:*", - "arktype": "^2.0.0-beta.2" + "arktype": "^2.0.0-rc.7" }, "peerDependencies": { "arktype": ">=2.0.0-beta <3", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 292b8bdb10..4205333a5a 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -70,6 +70,6 @@ "yargs": "^17.7.2" }, "devDependencies": { - "@types/yargs": "^17.0.32" + "@types/yargs": "^17.0.33" } } diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index e34ef3d8cd..28cd3e1534 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -64,7 +64,7 @@ }, "dependencies": { "@tanstack/virtual-file-routes": "workspace:^", - "tsx": "^4.19.0", + "tsx": "^4.19.1", "prettier": "^3.3.3", "zod": "^3.23.8" } diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index bedda44d0f..f93dadb25b 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -93,13 +93,13 @@ }, "dependencies": { "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/plugin-syntax-typescript": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.25.4", "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", + "@babel/traverse": "^7.25.6", + "@babel/types": "^7.25.6", "@tanstack/router-generator": "workspace:^", "@tanstack/virtual-file-routes": "workspace:^", "@types/babel__core": "^7.20.5", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 5baa844d32..9f05ddf296 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -64,10 +64,10 @@ "node": ">=12" }, "devDependencies": { - "@testing-library/jest-dom": "^6.4.6", - "@testing-library/react": "^16.0.0", + "@testing-library/jest-dom": "^6.5.0", + "@testing-library/react": "^16.0.1", "@tanstack/react-router": "workspace:*", - "valibot": "^0.36.0" + "valibot": "^0.41.0" }, "peerDependencies": { "valibot": ">=0.36.0", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 4229a8f6c7..60a885f1c3 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -64,8 +64,8 @@ "node": ">=12" }, "devDependencies": { - "@testing-library/jest-dom": "^6.4.6", - "@testing-library/react": "^16.0.0", + "@testing-library/jest-dom": "^6.5.0", + "@testing-library/react": "^16.0.1", "@tanstack/react-router": "workspace:*", "zod": "^3.23.8" }, diff --git a/packages/start-vite-plugin/package.json b/packages/start-vite-plugin/package.json index f7c5ff34d7..e712918e80 100644 --- a/packages/start-vite-plugin/package.json +++ b/packages/start-vite-plugin/package.json @@ -65,13 +65,13 @@ }, "dependencies": { "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/plugin-syntax-typescript": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.25.4", "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", + "@babel/traverse": "^7.25.6", + "@babel/types": "^7.25.6", "@types/babel__core": "^7.20.5", "@types/babel__generator": "^7.6.8", "@types/babel__template": "^7.4.4", diff --git a/packages/start/package.json b/packages/start/package.json index a697634954..5327032c54 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -137,20 +137,20 @@ "@tanstack/router-plugin": "workspace:^", "@tanstack/start-vite-plugin": "workspace:^", "@types/jsesc": "^3.0.3", - "@vinxi/react": "0.2.4", + "@vinxi/react": "0.2.5", "@vinxi/react-server-dom": "^0.0.3", - "@vinxi/server-components": "^0.4.2", - "@vinxi/server-functions": "^0.4.2", + "@vinxi/server-components": "^0.4.3", + "@vinxi/server-functions": "^0.4.3", "import-meta-resolve": "^4.1.0", - "isbot": "^5.1.14", + "isbot": "^5.1.17", "jsesc": "^3.0.2", "tiny-invariant": "^1.3.3", - "vinxi": "0.4.2", + "vinxi": "0.4.3", "vite-tsconfig-paths": "^5.0.1", "zod": "^3.23.8" }, "devDependencies": { - "@testing-library/react": "^16.0.0", + "@testing-library/react": "^16.0.1", "@vitejs/plugin-react": "^4.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db7d6cdab6..853000538f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: use-sync-external-store: 1.2.2 - eslint: ^9.9.1 + eslint: ^9.10.0 '@tanstack/history': workspace:* '@tanstack/react-cross-context': workspace:* '@tanstack/react-router': workspace:* @@ -30,32 +30,32 @@ importers: .: devDependencies: '@arethetypeswrong/cli': - specifier: ^0.15.4 - version: 0.15.4 + specifier: ^0.16.2 + version: 0.16.2 '@eslint-react/eslint-plugin': - specifier: ^1.12.3 - version: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + specifier: ^1.14.1 + version: 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) '@playwright/test': - specifier: ^1.46.1 - version: 1.46.1 + specifier: ^1.47.1 + version: 1.47.1 '@tanstack/config': specifier: ^0.13.1 - version: 0.13.1(@types/node@22.5.4)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.6))(rollup@4.21.2)(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + version: 0.13.1(@types/node@22.5.4)(esbuild@0.23.1)(eslint@9.10.0(jiti@1.21.6))(rollup@4.21.2)(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) '@types/node': specifier: ^22.5.4 version: 22.5.4 '@types/react': specifier: ^18.3.3 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.3.0 version: 18.3.0 eslint: - specifier: ^9.9.1 - version: 9.9.1(jiti@1.21.6) + specifier: ^9.10.0 + version: 9.10.0(jiti@1.21.6) eslint-plugin-react-hooks: - specifier: ^5.1.0-rc-a19a8ab4-20240829 - version: 5.1.0-rc-fb9a90fa48-20240614(eslint@9.9.1(jiti@1.21.6)) + specifier: ^5.1.0-rc-fb9a90fa48-20240614 + version: 5.1.0-rc-fb9a90fa48-20240614(eslint@9.10.0(jiti@1.21.6)) glob: specifier: ^10.4.5 version: 10.4.5 @@ -63,8 +63,8 @@ importers: specifier: ^25.0.0 version: 25.0.0 nx: - specifier: ^19.5.6 - version: 19.5.6(@swc/core@1.7.26(@swc/helpers@0.5.13)) + specifier: ^19.7.3 + version: 19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -99,11 +99,11 @@ importers: specifier: npm:typescript@5.4 version: typescript@5.4.5 typescript55: - specifier: npm:typescript@5.5 - version: typescript@5.5.3 + specifier: npm:typescript@5.6.2 + version: typescript@5.6.2 vite: - specifier: ^5.3.5 - version: 5.4.3(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) vitest: specifier: ^1.6.0 version: 1.6.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.31.1) @@ -137,16 +137,16 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic: dependencies: @@ -167,26 +167,26 @@ importers: version: 0.5.1 devDependencies: '@playwright/test': - specifier: ^1.46.1 - version: 1.46.1 + specifier: ^1.47.1 + version: 1.47.1 '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-default-search-params: dependencies: '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -208,16 +208,16 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-file-based: dependencies: @@ -247,20 +247,20 @@ importers: version: 3.23.8 devDependencies: '@playwright/test': - specifier: ^1.46.1 - version: 1.46.1 + specifier: ^1.47.1 + version: 1.47.1 '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-file-based-codesplitting: dependencies: @@ -291,25 +291,25 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-react-query: dependencies: '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.51.21 - version: 5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(@tanstack/react-query@5.56.2(react@18.3.1))(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -327,29 +327,29 @@ importers: version: 0.5.1 devDependencies: '@playwright/test': - specifier: ^1.46.1 - version: 1.46.1 + specifier: ^1.47.1 + version: 1.47.1 '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-react-query-file-based: dependencies: '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.51.21 - version: 5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(@tanstack/react-query@5.56.2(react@18.3.1))(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -376,20 +376,20 @@ importers: version: 3.23.8 devDependencies: '@playwright/test': - specifier: ^1.46.1 - version: 1.46.1 + specifier: ^1.47.1 + version: 1.47.1 '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-ssr-file-based: dependencies: @@ -422,8 +422,8 @@ importers: specifier: ^7.25.2 version: 7.25.2 '@babel/generator': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.6 + version: 7.25.6 '@rollup/plugin-babel': specifier: ^6.0.4 version: 6.0.4(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@4.21.2) @@ -432,28 +432,28 @@ importers: version: 4.17.21 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) compression: specifier: ^1.7.4 version: 1.7.4 express: - specifier: ^4.19.2 - version: 4.19.2 + specifier: ^4.21.0 + version: 4.21.0 isbot: - specifier: ^5.1.14 - version: 5.1.14 + specifier: ^5.1.17 + version: 5.1.17 node-fetch: specifier: ^3.3.2 version: 3.3.2 serve-static: - specifier: ^1.15.0 - version: 1.15.0 + specifier: ^1.16.2 + version: 1.16.2 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) vite-plugin-babel: specifier: ^1.2.0 - version: 1.2.0(@babel/core@7.25.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 1.2.0(@babel/core@7.25.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/basic-ssr-streaming-file-based: dependencies: @@ -489,8 +489,8 @@ importers: specifier: ^7.25.2 version: 7.25.2 '@babel/generator': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.6 + version: 7.25.6 '@rollup/plugin-babel': specifier: ^6.0.4 version: 6.0.4(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@4.21.2) @@ -499,28 +499,28 @@ importers: version: 4.17.21 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) compression: specifier: ^1.7.4 version: 1.7.4 express: - specifier: ^4.19.2 - version: 4.19.2 + specifier: ^4.21.0 + version: 4.21.0 isbot: - specifier: ^5.1.14 - version: 5.1.14 + specifier: ^5.1.17 + version: 5.1.17 node-fetch: specifier: ^3.3.2 version: 3.3.2 serve-static: - specifier: ^1.15.0 - version: 1.15.0 + specifier: ^1.16.2 + version: 1.16.2 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) vite-plugin-babel: specifier: ^1.2.0 - version: 1.2.0(@babel/core@7.25.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 1.2.0(@babel/core@7.25.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/basic-virtual-file-based: dependencies: @@ -553,20 +553,20 @@ importers: version: 3.23.8 devDependencies: '@playwright/test': - specifier: ^1.46.1 - version: 1.46.1 + specifier: ^1.47.1 + version: 1.47.1 '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/basic-virtual-inside-file-based: dependencies: @@ -599,20 +599,20 @@ importers: version: 3.23.8 devDependencies: '@playwright/test': - specifier: ^1.46.1 - version: 1.46.1 + specifier: ^1.47.1 + version: 1.47.1 '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/deferred-data: dependencies: @@ -640,16 +640,16 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/kitchen-sink: dependencies: @@ -677,16 +677,16 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/kitchen-sink-file-based: dependencies: @@ -717,25 +717,25 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/kitchen-sink-react-query: dependencies: '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.51.21 - version: 5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(@tanstack/react-query@5.56.2(react@18.3.1))(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -760,25 +760,25 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/kitchen-sink-react-query-file-based: dependencies: '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.51.21 - version: 5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(@tanstack/react-query@5.56.2(react@18.3.1))(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -806,22 +806,22 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/large-file-based: dependencies: '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -849,25 +849,25 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/location-masking: dependencies: '@radix-ui/react-dialog': specifier: ^1.1.1 - version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -886,22 +886,22 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/navigation-blocking: dependencies: '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -920,16 +920,16 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/quickstart: dependencies: @@ -948,16 +948,16 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/quickstart-file-based: dependencies: @@ -988,16 +988,16 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/quickstart-rspack-file-based: dependencies: @@ -1015,17 +1015,17 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@rsbuild/core': - specifier: 1.0.2 - version: 1.0.2 + specifier: 1.0.4 + version: 1.0.4 '@rsbuild/plugin-react': - specifier: 1.0.1 - version: 1.0.1(@rsbuild/core@1.0.2) + specifier: 1.0.2 + version: 1.0.2(@rsbuild/core@1.0.4) '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin '@types/react': specifier: ^18.3.3 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.3.0 version: 18.3.0 @@ -1049,35 +1049,35 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@swc/core': - specifier: ^1.7.6 - version: 1.7.6(@swc/helpers@0.5.13) + specifier: ^1.7.26 + version: 1.7.26(@swc/helpers@0.5.13) '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin '@types/react': specifier: ^18.3.3 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.3.0 version: 18.3.0 html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(@rspack/core@1.0.4(@swc/helpers@0.5.13))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + version: 5.6.0(@rspack/core@1.0.5(@swc/helpers@0.5.13))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) swc-loader: specifier: ^0.2.6 - version: 0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.13))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + version: 0.2.6(@swc/core@1.7.26(@swc/helpers@0.5.13))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) typescript: specifier: ^5.6.2 version: 5.6.2 webpack: - specifier: ^5.93.0 - version: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) + specifier: ^5.94.0 + version: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 - version: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) + version: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) webpack-dev-server: - specifier: ^5.0.4 - version: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) + specifier: ^5.1.0 + version: 5.1.0(webpack-cli@5.1.4)(webpack@5.94.0) examples/react/scroll-restoration: dependencies: @@ -1085,8 +1085,8 @@ importers: specifier: workspace:* version: link:../../../packages/react-router '@tanstack/react-virtual': - specifier: ^3.8.4 - version: 3.8.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^3.10.7 + version: 3.10.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/router-devtools': specifier: workspace:* version: link:../../../packages/router-devtools @@ -1099,22 +1099,22 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/search-validator-adapters: dependencies: '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1134,8 +1134,8 @@ importers: specifier: workspace:* version: link:../../../packages/router-zod-adapter arktype: - specifier: ^2.0.0-beta.5 - version: 2.0.0-beta.5 + specifier: ^2.0.0-rc.7 + version: 2.0.0-rc.7 react: specifier: ^18.2.0 version: 18.3.1 @@ -1143,24 +1143,24 @@ importers: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) valibot: - specifier: ^0.37.0 - version: 0.37.0(typescript@5.6.2) + specifier: ^0.41.0 + version: 0.41.0(typescript@5.6.2) zod: specifier: ^3.23.8 version: 3.23.8 devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/start-basic: dependencies: @@ -1178,10 +1178,10 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) isbot: - specifier: ^5.1.14 - version: 5.1.14 + specifier: ^5.1.17 + version: 5.1.17 react: specifier: ^18.3.1 version: 18.3.1 @@ -1195,48 +1195,48 @@ importers: specifier: ^2.5.2 version: 2.5.2 vinxi: - specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@playwright/test': - specifier: ^1.46.1 - version: 1.46.1 + specifier: ^1.47.1 + version: 1.47.1 '@types/node': specifier: ^22.5.4 version: 22.5.4 '@types/react': specifier: ^18.2.65 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.40) + version: 10.4.20(postcss@8.4.47) postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.47 + version: 8.4.47 prettier: specifier: ^3.3.3 version: 3.3.3 tailwindcss: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.11 + version: 3.4.11 typescript: specifier: ^5.6.2 version: 5.6.2 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-basic-auth: dependencies: '@prisma/client': - specifier: 5.17.0 - version: 5.17.0(prisma@5.18.0) + specifier: 5.19.1 + version: 5.19.1(prisma@5.19.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1251,16 +1251,16 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) dotenv: specifier: ^16.4.5 version: 16.4.5 isbot: - specifier: ^5.1.12 - version: 5.1.14 + specifier: ^5.1.17 + version: 5.1.17 prisma: - specifier: ^5.17.0 - version: 5.18.0 + specifier: ^5.19.1 + version: 5.19.1 react: specifier: ^18.3.1 version: 18.3.1 @@ -1277,45 +1277,45 @@ importers: specifier: ^2.5.2 version: 2.5.2 vinxi: - specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@playwright/test': - specifier: ^1.46.1 - version: 1.46.1 + specifier: ^1.47.1 + version: 1.47.1 '@replayio/playwright': specifier: ^3.1.8 - version: 3.1.8(@playwright/test@1.46.1) + version: 3.1.8(@playwright/test@1.47.1) '@types/node': specifier: ^22.5.4 version: 22.5.4 '@types/react': specifier: ^18.2.65 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 autoprefixer: - specifier: ^10.4.19 - version: 10.4.20(postcss@8.4.40) + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) postcss: - specifier: ^8.4.39 - version: 8.4.40 + specifier: ^8.4.47 + version: 8.4.47 prettier: specifier: ^3.3.3 version: 3.3.3 tailwindcss: - specifier: ^3.4.4 - version: 3.4.7 + specifier: ^3.4.11 + version: 3.4.11 typescript: specifier: ^5.6.2 version: 5.6.2 vite: - specifier: ^5.3.3 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-basic-counter: dependencies: @@ -1332,15 +1332,15 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) vinxi: - specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@types/node': specifier: ^22.5.4 version: 22.5.4 '@types/react': specifier: ^18.2.65 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 @@ -1351,17 +1351,17 @@ importers: specifier: ^5.6.2 version: 5.6.2 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/start-basic-react-query: dependencies: '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.51.21 - version: 5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(@tanstack/react-query@5.56.2(react@18.3.1))(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1379,10 +1379,10 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) isbot: - specifier: ^5.1.14 - version: 5.1.14 + specifier: ^5.1.17 + version: 5.1.17 react: specifier: ^18.3.1 version: 18.3.1 @@ -1396,48 +1396,48 @@ importers: specifier: ^2.5.2 version: 2.5.2 vinxi: - specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@playwright/test': - specifier: ^1.46.1 - version: 1.46.1 + specifier: ^1.47.1 + version: 1.47.1 '@types/node': specifier: ^22.5.4 version: 22.5.4 '@types/react': specifier: ^18.2.65 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.40) + version: 10.4.20(postcss@8.4.47) postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.47 + version: 8.4.47 prettier: specifier: ^3.3.3 version: 3.3.3 tailwindcss: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.11 + version: 3.4.11 typescript: specifier: ^5.6.2 version: 5.6.2 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-basic-rsc: dependencies: '@babel/plugin-syntax-typescript': - specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.25.2) + specifier: ^7.25.4 + version: 7.25.4(@babel/core@7.25.2) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1457,45 +1457,45 @@ importers: specifier: ^2.5.2 version: 2.5.2 vinxi: - specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@types/react': specifier: ^18.2.65 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.40) + version: 10.4.20(postcss@8.4.47) postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.47 + version: 8.4.47 prettier: specifier: ^3.3.3 version: 3.3.3 tailwindcss: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.11 + version: 3.4.11 typescript: specifier: ^5.6.2 version: 5.6.2 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-clerk-basic: dependencies: '@clerk/tanstack-start': - specifier: 0.3.5 - version: 0.3.5(@tanstack/react-router@packages+react-router)(@tanstack/start@packages+start)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 0.4.1 + version: 0.4.1(@tanstack/react-router@packages+react-router)(@tanstack/start@packages+start)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1510,13 +1510,13 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) dotenv: specifier: ^16.4.5 version: 16.4.5 isbot: - specifier: ^5.1.12 - version: 5.1.14 + specifier: ^5.1.17 + version: 5.1.17 react: specifier: ^18.3.1 version: 18.3.1 @@ -1533,57 +1533,57 @@ importers: specifier: ^2.5.2 version: 2.5.2 vinxi: - specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@playwright/test': - specifier: ^1.46.1 - version: 1.46.1 + specifier: ^1.47.1 + version: 1.47.1 '@replayio/playwright': specifier: ^3.1.8 - version: 3.1.8(@playwright/test@1.46.1) + version: 3.1.8(@playwright/test@1.47.1) '@types/node': specifier: ^22.5.4 version: 22.5.4 '@types/react': specifier: ^18.2.65 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 autoprefixer: - specifier: ^10.4.19 - version: 10.4.20(postcss@8.4.40) + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) postcss: - specifier: ^8.4.39 - version: 8.4.40 + specifier: ^8.4.47 + version: 8.4.47 prettier: specifier: ^3.3.3 version: 3.3.3 tailwindcss: - specifier: ^3.4.4 - version: 3.4.7 + specifier: ^3.4.11 + version: 3.4.11 typescript: specifier: ^5.6.2 version: 5.6.2 vite: - specifier: ^5.3.3 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-convex-trellaux: dependencies: '@convex-dev/react-query': specifier: 0.0.0-alpha.5 - version: 0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.15.0(@clerk/clerk-react@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 0.0.0-alpha.5(@tanstack/react-query@5.56.2(react@18.3.1))(convex@1.16.0(@clerk/clerk-react@5.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.51.21 - version: 5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(@tanstack/react-query@5.56.2(react@18.3.1))(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1601,22 +1601,22 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) concurrently: specifier: ^8.2.2 version: 8.2.2 convex: - specifier: ^1.15.0 - version: 1.15.0(@clerk/clerk-react@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.16.0 + version: 1.16.0(@clerk/clerk-react@5.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) isbot: - specifier: ^5.1.14 - version: 5.1.14 + specifier: ^5.1.17 + version: 5.1.17 ky: - specifier: ^1.5.0 - version: 1.5.0 + specifier: ^1.7.2 + version: 1.7.2 msw: - specifier: ^2.3.5 - version: 2.3.5(typescript@5.6.2) + specifier: ^2.4.6 + version: 2.4.6(typescript@5.6.2) react: specifier: ^18.3.1 version: 18.3.1 @@ -1636,48 +1636,48 @@ importers: specifier: ^1.3.3 version: 1.3.3 vinxi: - specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) zod: specifier: ^3.23.8 version: 3.23.8 devDependencies: '@types/react': specifier: ^18.2.65 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.40) + version: 10.4.20(postcss@8.4.47) postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.47 + version: 8.4.47 prettier: specifier: ^3.3.3 version: 3.3.3 tailwindcss: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.11 + version: 3.4.11 typescript: specifier: ^5.6.2 version: 5.6.2 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/start-supabase-basic: dependencies: '@supabase/ssr': specifier: ^0.5.1 - version: 0.5.1(@supabase/supabase-js@2.45.3) + version: 0.5.1(@supabase/supabase-js@2.45.4) '@supabase/supabase-js': - specifier: ^2.45.3 - version: 2.45.3 + specifier: ^2.45.4 + version: 2.45.4 '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1692,7 +1692,7 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) react: specifier: ^18.3.1 version: 18.3.1 @@ -1700,8 +1700,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) vinxi: - specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: '@types/react': specifier: ^18.3.5 @@ -1711,13 +1711,13 @@ importers: version: 18.3.0 autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.45) + version: 10.4.20(postcss@8.4.47) postcss: - specifier: ^8.4.45 - version: 8.4.45 + specifier: ^8.4.47 + version: 8.4.47 tailwindcss: - specifier: ^3.4.10 - version: 3.4.10 + specifier: ^3.4.11 + version: 3.4.11 typescript: specifier: ^5.6.2 version: 5.6.2 @@ -1725,11 +1725,11 @@ importers: examples/react/start-trellaux: dependencies: '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.51.21 - version: 5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(@tanstack/react-query@5.56.2(react@18.3.1))(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1747,16 +1747,16 @@ importers: version: link:../../../packages/start '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) isbot: - specifier: ^5.1.14 - version: 5.1.14 + specifier: ^5.1.17 + version: 5.1.17 ky: - specifier: ^1.5.0 - version: 1.5.0 + specifier: ^1.7.2 + version: 1.7.2 msw: - specifier: ^2.3.5 - version: 2.3.5(typescript@5.6.2) + specifier: ^2.4.6 + version: 2.4.6(typescript@5.6.2) react: specifier: ^18.3.1 version: 18.3.1 @@ -1776,39 +1776,39 @@ importers: specifier: ^1.3.3 version: 1.3.3 vinxi: - specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) zod: specifier: ^3.23.8 version: 3.23.8 devDependencies: '@types/react': specifier: ^18.2.65 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.40) + version: 10.4.20(postcss@8.4.47) postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.47 + version: 8.4.47 prettier: specifier: ^3.3.3 version: 3.3.3 tailwindcss: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.11 + version: 3.4.11 typescript: specifier: ^5.6.2 version: 5.6.2 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/with-framer-motion: dependencies: @@ -1819,8 +1819,8 @@ importers: specifier: workspace:* version: link:../../../packages/router-devtools framer-motion: - specifier: ^11.3.21 - version: 11.3.21(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^11.5.4 + version: 11.5.4(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) immer: specifier: ^10.1.1 version: 10.1.1 @@ -1839,16 +1839,16 @@ importers: devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) examples/react/with-trpc: dependencies: @@ -1862,11 +1862,11 @@ importers: specifier: workspace:* version: link:../../../packages/router-plugin '@trpc/client': - specifier: 11.0.0-rc.477 - version: 11.0.0-rc.477(@trpc/server@11.0.0-rc.477) + specifier: 11.0.0-rc.502 + version: 11.0.0-rc.502(@trpc/server@11.0.0-rc.502) '@trpc/server': - specifier: 11.0.0-rc.477 - version: 11.0.0-rc.477 + specifier: 11.0.0-rc.502 + version: 11.0.0-rc.502 react: specifier: ^18.2.0 version: 18.3.1 @@ -1877,30 +1877,30 @@ importers: specifier: ^0.5.1 version: 0.5.1 vinxi: - specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) zod: specifier: ^3.23.8 version: 3.23.8 devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) examples/react/with-trpc-react-query: dependencies: '@tanstack/react-query': - specifier: ^5.51.21 - version: 5.51.21(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.51.21 - version: 5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(react@18.3.1) + specifier: ^5.56.2 + version: 5.56.2(@tanstack/react-query@5.56.2(react@18.3.1))(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../../../packages/react-router @@ -1911,14 +1911,14 @@ importers: specifier: workspace:* version: link:../../../packages/router-plugin '@trpc/client': - specifier: 11.0.0-rc.477 - version: 11.0.0-rc.477(@trpc/server@11.0.0-rc.477) + specifier: 11.0.0-rc.502 + version: 11.0.0-rc.502(@trpc/server@11.0.0-rc.502) '@trpc/react-query': - specifier: 11.0.0-rc.477 - version: 11.0.0-rc.477(@tanstack/react-query@5.51.21(react@18.3.1))(@trpc/client@11.0.0-rc.477(@trpc/server@11.0.0-rc.477))(@trpc/server@11.0.0-rc.477)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 11.0.0-rc.502 + version: 11.0.0-rc.502(@tanstack/react-query@5.56.2(react@18.3.1))(@trpc/client@11.0.0-rc.502(@trpc/server@11.0.0-rc.502))(@trpc/server@11.0.0-rc.502)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@trpc/server': - specifier: 11.0.0-rc.477 - version: 11.0.0-rc.477 + specifier: 11.0.0-rc.502 + version: 11.0.0-rc.502 react: specifier: ^18.2.0 version: 18.3.1 @@ -1929,30 +1929,30 @@ importers: specifier: ^0.5.1 version: 0.5.1 vinxi: - specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) zod: specifier: ^3.23.8 version: 3.23.8 devDependencies: '@types/react': specifier: ^18.2.47 - version: 18.3.3 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.18 version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) packages/create-router: dependencies: '@rsbuild/core': specifier: ^1.0.2 - version: 1.0.2 + version: 1.0.4 '@rsbuild/plugin-react': specifier: ^1.0.1 - version: 1.0.1(@rsbuild/core@1.0.2) + version: 1.0.2(@rsbuild/core@1.0.4) '@swc/core': specifier: ^1.7.25 version: 1.7.26(@swc/helpers@0.5.13) @@ -1973,10 +1973,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(@rspack/core@1.0.4(@swc/helpers@0.5.13))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + version: 5.6.0(@rspack/core@1.0.5(@swc/helpers@0.5.13))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) react: specifier: ^18.3.1 version: 18.3.1 @@ -1991,7 +1991,7 @@ importers: version: 5.6.2 vite: specifier: ^5.4.4 - version: 5.4.4(@types/node@22.5.4)(terser@5.31.1) + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) webpack: specifier: ^5.94.0 version: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) @@ -2039,7 +2039,7 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) react: specifier: ^18.2.0 version: 18.3.1 @@ -2066,14 +2066,14 @@ importers: version: 1.0.3 devDependencies: '@testing-library/jest-dom': - specifier: ^6.4.8 - version: 6.4.8 + specifier: ^6.5.0 + version: 6.5.0 '@testing-library/react': - specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^16.0.1 + version: 16.0.1(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) combinate: specifier: ^1.1.11 version: 1.1.11 @@ -2090,14 +2090,14 @@ importers: packages/react-router-with-query: devDependencies: '@tanstack/react-query': - specifier: '>=5.51.21' - version: 5.51.21(react@18.3.1) + specifier: '>=5.56.2' + version: 5.56.2(react@18.3.1) '@tanstack/react-router': specifier: workspace:* version: link:../react-router '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) react: specifier: '>=18' version: 18.3.1 @@ -2111,14 +2111,14 @@ importers: specifier: workspace:* version: link:../react-router '@testing-library/jest-dom': - specifier: ^6.4.6 - version: 6.4.8 + specifier: ^6.5.0 + version: 6.5.0 '@testing-library/react': - specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^16.0.1 + version: 16.0.1(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) arktype: - specifier: ^2.0.0-beta.2 - version: 2.0.0-beta.5 + specifier: ^2.0.0-rc.7 + version: 2.0.0-rc.7 packages/router-cli: dependencies: @@ -2133,8 +2133,8 @@ importers: version: 17.7.2 devDependencies: '@types/yargs': - specifier: ^17.0.32 - version: 17.0.32 + specifier: ^17.0.33 + version: 17.0.33 packages/router-devtools: dependencies: @@ -2150,7 +2150,7 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) react: specifier: ^18.2.0 version: 18.3.1 @@ -2167,8 +2167,8 @@ importers: specifier: ^3.3.3 version: 3.3.3 tsx: - specifier: ^4.19.0 - version: 4.19.0 + specifier: ^4.19.1 + version: 4.19.1 zod: specifier: ^3.23.8 version: 3.23.8 @@ -2179,29 +2179,29 @@ importers: specifier: ^7.25.2 version: 7.25.2 '@babel/generator': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.6 + version: 7.25.6 '@babel/parser': - specifier: ^7.25.3 - version: 7.25.3 + specifier: ^7.25.6 + version: 7.25.6 '@babel/plugin-syntax-jsx': specifier: ^7.24.7 version: 7.24.7(@babel/core@7.25.2) '@babel/plugin-syntax-typescript': - specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.25.2) + specifier: ^7.25.4 + version: 7.25.4(@babel/core@7.25.2) '@babel/template': specifier: ^7.25.0 version: 7.25.0 '@babel/traverse': - specifier: ^7.25.3 - version: 7.25.3 + specifier: ^7.25.6 + version: 7.25.6 '@babel/types': - specifier: ^7.25.2 - version: 7.25.2 + specifier: ^7.25.6 + version: 7.25.6 '@rsbuild/core': specifier: '>=1.0.2' - version: 1.0.2 + version: 1.0.4 '@tanstack/router-generator': specifier: workspace:* version: link:../router-generator @@ -2231,10 +2231,10 @@ importers: version: 1.12.2 vite: specifier: '>=5.0.0' - version: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.93.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1) + version: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2245,14 +2245,14 @@ importers: specifier: workspace:* version: link:../react-router '@testing-library/jest-dom': - specifier: ^6.4.6 - version: 6.4.8 + specifier: ^6.5.0 + version: 6.5.0 '@testing-library/react': - specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^16.0.1 + version: 16.0.1(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) valibot: - specifier: ^0.36.0 - version: 0.36.0 + specifier: ^0.41.0 + version: 0.41.0(typescript@5.6.2) packages/router-vite-plugin: dependencies: @@ -2266,11 +2266,11 @@ importers: specifier: workspace:* version: link:../react-router '@testing-library/jest-dom': - specifier: ^6.4.6 - version: 6.4.8 + specifier: ^6.5.0 + version: 6.5.0 '@testing-library/react': - specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^16.0.1 + version: 16.0.1(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2296,23 +2296,23 @@ importers: specifier: ^3.0.3 version: 3.0.3 '@vinxi/react': - specifier: 0.2.4 - version: 0.2.4 + specifier: 0.2.5 + version: 0.2.5 '@vinxi/react-server-dom': specifier: ^0.0.3 - version: 0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) + version: 0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) '@vinxi/server-components': - specifier: ^0.4.2 - version: 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) + specifier: ^0.4.3 + version: 0.4.3(vinxi@0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) '@vinxi/server-functions': - specifier: ^0.4.2 - version: 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) + specifier: ^0.4.3 + version: 0.4.3(vinxi@0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) import-meta-resolve: specifier: ^4.1.0 version: 4.1.0 isbot: - specifier: ^5.1.14 - version: 5.1.14 + specifier: ^5.1.17 + version: 5.1.17 jsesc: specifier: ^3.0.2 version: 3.0.2 @@ -2320,21 +2320,21 @@ importers: specifier: ^1.3.3 version: 1.3.3 vinxi: - specifier: 0.4.2 - version: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.6.2)(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) zod: specifier: ^3.23.8 version: 3.23.8 devDependencies: '@testing-library/react': - specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^16.0.1 + version: 16.0.1(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)) + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) react: specifier: ^18.2.0 version: 18.3.1 @@ -2351,26 +2351,26 @@ importers: specifier: ^7.25.2 version: 7.25.2 '@babel/generator': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.6 + version: 7.25.6 '@babel/parser': - specifier: ^7.25.3 - version: 7.25.3 + specifier: ^7.25.6 + version: 7.25.6 '@babel/plugin-syntax-jsx': specifier: ^7.24.7 version: 7.24.7(@babel/core@7.25.2) '@babel/plugin-syntax-typescript': - specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.25.2) + specifier: ^7.25.4 + version: 7.25.4(@babel/core@7.25.2) '@babel/template': specifier: ^7.25.0 version: 7.25.0 '@babel/traverse': - specifier: ^7.25.3 - version: 7.25.3 + specifier: ^7.25.6 + version: 7.25.6 '@babel/types': - specifier: ^7.25.2 - version: 7.25.2 + specifier: ^7.25.6 + version: 7.25.6 '@types/babel__core': specifier: ^7.20.5 version: 7.20.5 @@ -2406,20 +2406,20 @@ packages: '@andrewbranch/untar.js@1.0.3': resolution: {integrity: sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==} - '@arethetypeswrong/cli@0.15.4': - resolution: {integrity: sha512-YDbImAi1MGkouT7f2yAECpUMFhhA1J0EaXzIqoC5GGtK0xDgauLtcsZezm8tNq7d3wOFXH7OnY+IORYcG212rw==} + '@arethetypeswrong/cli@0.16.2': + resolution: {integrity: sha512-QW1jjQayokcn4KmKyuqvWJl+FyRMagX/D/kwNEddhUEbAhLCL6PXPduHLYxRtQSE+e8QllGS2qcGxqrLJeExAw==} engines: {node: '>=18'} hasBin: true - '@arethetypeswrong/core@0.15.1': - resolution: {integrity: sha512-FYp6GBAgsNz81BkfItRz8RLZO03w5+BaeiPma1uCfmxTnxbtuMrI/dbzGiOk8VghO108uFI0oJo0OkewdSHw7g==} + '@arethetypeswrong/core@0.16.2': + resolution: {integrity: sha512-gAYzWaIbq8m9MuvxKmeDn24Or4mIWCSpRR0NNXAVoGUTPraB1SP3blPa5NycUPTnToKLA5DAwHLhwtWpslMbKQ==} engines: {node: '>=18'} - '@ark/schema@0.3.2': - resolution: {integrity: sha512-StWlBec++TxgDgpEUAkOxB7rqCZmOJr1dsW0P44vcgoitGtlQN13eCW1MlHlzScTUWA5iOtyHD+TsA0gKm4X0w==} + '@ark/schema@0.9.0': + resolution: {integrity: sha512-pHA+BNGICGKhKG0hEdmjJbt8yQwJnDaPD5R8nq16TXTTzuGZcroTPBXEquSVaCoAqnXwx+Skae/63D1MpDnuow==} - '@ark/util@0.2.1': - resolution: {integrity: sha512-V+h43ZoXCT79K0OiwRE7oebcIeVHZ8YL/Xf0mCUCoIEuWnAJOS8zPwQzwGJGwys7MFHgn3YQYWL/nETuEvgcpQ==} + '@ark/util@0.9.0': + resolution: {integrity: sha512-iwfIpS8EKLNRyJyurLYS66321qZSJupXlolGmU94FQ58lcgpRaK+BVQYYsJiuLj9kULxHVpQkI8bVmEvU3Sbsg==} '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} @@ -2433,8 +2433,8 @@ packages: resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.25.0': - resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.25.2': @@ -2451,8 +2451,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-plugin-utils@7.24.7': - resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} '@babel/helper-simple-access@7.24.7': @@ -2479,8 +2479,8 @@ packages: resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.3': - resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} engines: {node: '>=6.0.0'} hasBin: true @@ -2490,8 +2490,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.24.7': - resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + '@babel/plugin-syntax-typescript@7.25.4': + resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2520,12 +2520,12 @@ packages: resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.3': - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.2': - resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} '@bundled-es-modules/cookie@2.0.0': @@ -2537,19 +2537,19 @@ packages: '@bundled-es-modules/tough-cookie@0.1.6': resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} - '@clerk/backend@1.9.2': - resolution: {integrity: sha512-8vCYux8Xbu5TQ2iq9tYuDnNhv3K/XhZ+34QJG+n4ZX4w4FfTTuzwb5OylcmP69vPvYybhoQfjpK57kBOW22deg==} + '@clerk/backend@1.11.1': + resolution: {integrity: sha512-g+jk1wxS0j6s1or6e3rf8KK4bHaIxajCMHAASyhfl9a9OVBqtkeMgbQ3+LIFDRAOSQLxLKrIqJgPGPfOoHz17Q==} engines: {node: '>=18.17.0'} - '@clerk/clerk-react@5.7.0': - resolution: {integrity: sha512-VCYj/Qhm4P5u0A3X1M+yycod8cz8flFwtpnI8+ajGUDmMdel9iuR5ix01cgsHfyPuamfiuP1a4xNg7F0d+2P7Q==} + '@clerk/clerk-react@5.8.2': + resolution: {integrity: sha512-5wXr02TmxlGBjBTrM5URCk01b0q/Po6xg3SPo/U8HgrQ8qnY82hbnLxZ1dUuqH3MIzUh2VAoISJzF4TEZYqJJA==} engines: {node: '>=18.17.0'} peerDependencies: react: '>=18 || >=19.0.0-beta' react-dom: '>=18 || >=19.0.0-beta' - '@clerk/shared@2.6.2': - resolution: {integrity: sha512-RkrNknIr98GPu3srXLhjJViC1Mom1gUsRMNnf1deibX2yvRnndloZGnFb0qxf+pFL/NCkKd3nSHtK3eCJQrVYQ==} + '@clerk/shared@2.7.2': + resolution: {integrity: sha512-0SymNLqE5oMPf1XwtqNazNcpIoCKUv77f8rHpx4U8mg73uXYfuEQThNgCJyoM4/qxYLL3SBPKAlZl9MAHfSiyA==} engines: {node: '>=18.17.0'} peerDependencies: react: '>=18 || >=19.0.0-beta' @@ -2560,8 +2560,8 @@ packages: react-dom: optional: true - '@clerk/tanstack-start@0.3.5': - resolution: {integrity: sha512-Rctqajkvy1MC6bjvS6+6wvA0ah1mk0CJq92QXK2ib4uoBH4p0BAlH5JhlinAKD1ab3udlHkFitshEDgKjUP3KA==} + '@clerk/tanstack-start@0.4.1': + resolution: {integrity: sha512-EeX+9VlzYukxEwK/X3S4hWZLq6Z1fmiC3HepkyB3sT9FPYAA62eCL6TtzqSp+usVhdKuGUu22FZRb2keJmIiDA==} engines: {node: '>=18.17.0'} peerDependencies: '@tanstack/react-router': workspace:* @@ -2569,8 +2569,8 @@ packages: react: '>=18 || >=19.0.0-beta' react-dom: '>=18 || >=19.0.0-beta' - '@clerk/types@4.19.0': - resolution: {integrity: sha512-bDN/nRUD5PFCehQ+Kjdcft0I3b9CIyCcY3OBNDSc1L6RQhlXH+J48EtaP/cbRdslb83LJiBPQ2i/gV4VgblzwA==} + '@clerk/types@4.20.1': + resolution: {integrity: sha512-s2v3wFgLsB+d0Ot5yN+5IjRNKWl63AAeEczTZDZYSWuNkGihvEXYjS2NtnYuhROBRgWEHEsm0JOp0rQkfTMkBw==} engines: {node: '>=18.17.0'} '@cloudflare/kv-asset-handler@0.3.2': @@ -2645,18 +2645,18 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.23.0': + resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@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.17.19': - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.19.12': resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} @@ -2675,16 +2675,16 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + '@esbuild/android-arm64@0.23.0': + resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.17.19': - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} - engines: {node: '>=12'} - cpu: [arm] + '@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': @@ -2705,16 +2705,16 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + '@esbuild/android-arm@0.23.0': + resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.17.19': - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} - engines: {node: '>=12'} - cpu: [x64] + '@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': @@ -2735,18 +2735,18 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.23.0': + resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.23.1': resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.17.19': - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.19.12': resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} @@ -2765,16 +2765,16 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + '@esbuild/darwin-arm64@0.23.0': + resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.17.19': - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.19.12': @@ -2795,18 +2795,18 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.23.0': + resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.23.1': resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.17.19': - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.19.12': resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} @@ -2825,16 +2825,16 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + '@esbuild/freebsd-arm64@0.23.0': + resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.17.19': - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} - engines: {node: '>=12'} - cpu: [x64] + '@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': @@ -2855,18 +2855,18 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.23.0': + resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@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.17.19': - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.19.12': resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} @@ -2885,16 +2885,16 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + '@esbuild/linux-arm64@0.23.0': + resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.17.19': - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} - engines: {node: '>=12'} - cpu: [arm] + '@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': @@ -2915,16 +2915,16 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + '@esbuild/linux-arm@0.23.0': + resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.17.19': - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} - engines: {node: '>=12'} - cpu: [ia32] + '@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': @@ -2945,16 +2945,16 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + '@esbuild/linux-ia32@0.23.0': + resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.17.19': - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} - engines: {node: '>=12'} - cpu: [loong64] + '@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': @@ -2975,16 +2975,16 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + '@esbuild/linux-loong64@0.23.0': + resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.17.19': - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} - engines: {node: '>=12'} - cpu: [mips64el] + '@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': @@ -3005,16 +3005,16 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + '@esbuild/linux-mips64el@0.23.0': + resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.17.19': - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} - engines: {node: '>=12'} - cpu: [ppc64] + '@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': @@ -3035,16 +3035,16 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + '@esbuild/linux-ppc64@0.23.0': + resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.17.19': - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} - engines: {node: '>=12'} - cpu: [riscv64] + '@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': @@ -3065,16 +3065,16 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + '@esbuild/linux-riscv64@0.23.0': + resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.17.19': - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} - engines: {node: '>=12'} - cpu: [s390x] + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.19.12': @@ -3095,16 +3095,16 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + '@esbuild/linux-s390x@0.23.0': + resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.17.19': - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} - engines: {node: '>=12'} - cpu: [x64] + '@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': @@ -3125,17 +3125,17 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + '@esbuild/linux-x64@0.23.0': + resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.17.19': - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} cpu: [x64] - os: [netbsd] + os: [linux] '@esbuild/netbsd-x64@0.19.12': resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} @@ -3155,22 +3155,28 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.23.0': + resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.23.1': resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + '@esbuild/openbsd-arm64@0.23.0': + resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.17.19': - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} - engines: {node: '>=12'} - cpu: [x64] + '@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': @@ -3191,17 +3197,17 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + '@esbuild/openbsd-x64@0.23.0': + resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.17.19': - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} - engines: {node: '>=12'} + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} cpu: [x64] - os: [sunos] + os: [openbsd] '@esbuild/sunos-x64@0.19.12': resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} @@ -3221,18 +3227,18 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.23.0': + resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.23.1': resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.17.19': - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.19.12': resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} @@ -3251,16 +3257,16 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + '@esbuild/win32-arm64@0.23.0': + resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.17.19': - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} - engines: {node: '>=12'} - cpu: [ia32] + '@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': @@ -3281,16 +3287,16 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + '@esbuild/win32-ia32@0.23.0': + resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.17.19': - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.19.12': @@ -3311,6 +3317,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.23.0': + resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.23.1': resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} engines: {node: '>=18'} @@ -3321,42 +3333,42 @@ packages: resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 '@eslint-community/regexpp@4.11.0': resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-react/ast@1.12.3': - resolution: {integrity: sha512-3uRe9EBiaLpyzHKyhvm4ZXGo3h+hp9kvhRBE6mjU5up2RmUkD4qtaTVwKoHrYECADNSvzBtwHH2URARXKQ7oHg==} + '@eslint-react/ast@1.14.1': + resolution: {integrity: sha512-FzhWRl/kBF5cZky4G/I5kkRiwVUTjGNfP+fwwx94NImaH1CvnMk6ataBNNtvxXKrbWGpZSexT4vHjotfZTEXMA==} - '@eslint-react/core@1.12.3': - resolution: {integrity: sha512-MKwkzrgouFyxdI01GzHY1iifK0KPeGnThqHiRc+IGk+Dgg/8Rq2T0glUx+15J10hRbIg1bl4Cja12R/dv4R9jA==} + '@eslint-react/core@1.14.1': + resolution: {integrity: sha512-SK19+40fAYWtliPV9cRIZr0cnKIBkQJE8XWr0R2QobrWw2tkKKYqCLWwR0TpuxrjAd/JpG5TTcPHAgffCRtliw==} - '@eslint-react/eslint-plugin@1.12.3': - resolution: {integrity: sha512-S9Y3mdvbZLKH5ah1LHvAiSd9tc8ijzKjAENMPvfW5WWzyfs6+oRfUrmlrJS3u4k16Fi6zweIlV5hk7gjaFWniQ==} + '@eslint-react/eslint-plugin@1.14.1': + resolution: {integrity: sha512-aMuUJrSbUCj/+S4McaMNuEg2R8JA8aZVLgdLf5bYuNi7YYpZ7kIMaKdlLW53UlaER9kRb8lrorFUL3cyg7Yc4w==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true - '@eslint-react/jsx@1.12.3': - resolution: {integrity: sha512-aKuJRjcwEPUbeAXu7VLKICFeVZk/NhbeQIwIRdjw0JAmfNtEO5QD2wqWDZLCb4+f1moR2W3+QD8e9t0opo70QQ==} + '@eslint-react/jsx@1.14.1': + resolution: {integrity: sha512-NN8pIM3gZDk7Zusd2fFBaA78Zv98PxBDEBP/lxwSZNkuuUtgrHEBYWKRYs10hz1B6Vp1bvhIcnLO/BQThvJJog==} - '@eslint-react/shared@1.12.3': - resolution: {integrity: sha512-4zBS9ISXbb/1OM6W0x5FH2Bu2+ULmfWLQRGc3GFcWiIcHMVBB4bQGK8CsYAcxSIUxaERh3PgPKMx4aZDwBNIhQ==} + '@eslint-react/shared@1.14.1': + resolution: {integrity: sha512-gceHz2fZeJh+EwxQC+ozh+cFbnpDALnDxpamDFxZI1QRdy0wtrB0MjJFSSZ9F6WUITWxoic2T3071U9BCjI3/Q==} - '@eslint-react/tools@1.12.3': - resolution: {integrity: sha512-Q5HRbzY0lkJwdeatPkFsPgmBhP9KPGaVxtRKazsGcCO3edg2wTJP0C8khw2fplaIAce+Tj3I3YasUlp1uKQeCw==} + '@eslint-react/tools@1.14.1': + resolution: {integrity: sha512-4kutt+JCXuLatE6fBuNJ6IA2+ndgdymEvq/HQuhW2Xs6+pEqaxwrHT2GeaQbc5U8pfJCEWAYvYX1r0XF/v9gJQ==} - '@eslint-react/types@1.12.3': - resolution: {integrity: sha512-Ph6vXLz/NDeGE0/EvDTfWOrqtlE/qLcMhITCdt+ynGOP0HtRn1E8jrEZ0zTH6ri8wng6tlSHEPDnsZMNwe4hOg==} + '@eslint-react/types@1.14.1': + resolution: {integrity: sha512-WWw6e8/EHMIMOmN3SvvfiNyKJdQOrt1ugTAJIPHnNyKzOgCKhpN0xbtIQY3ghjhAm3GBO87aWB42q6a/YZd00w==} - '@eslint-react/var@1.12.3': - resolution: {integrity: sha512-K9lBA5Ap3bFfH2OxcpZYyK7HieWmJOtyjAmvC2E2StsPcQlBci+ID82xQEqrPvdL1qdRYWKpSzvSd8Xu4cJf/w==} + '@eslint-react/var@1.14.1': + resolution: {integrity: sha512-dzjwC4XM5v3aT1pc+1JxV3aZne4eyjiu+/ajkpCgnDM7Cual63uaHNBTE4LBUQiA2/oYU4iHAa9EcEn31k3EhA==} '@eslint/config-array@0.18.0': resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} @@ -3366,14 +3378,18 @@ packages: resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.9.1': - resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} + '@eslint/js@9.10.0': + resolution: {integrity: sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.1.0': + resolution: {integrity: sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@fastify/busboy@2.1.0': resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} @@ -3390,18 +3406,10 @@ packages: resolution: {integrity: sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA==} engines: {node: '>=18'} - '@inquirer/confirm@3.1.10': - resolution: {integrity: sha512-/aAHu83Njy6yf44T+ZrRPUkMcUqprrOiIKsyMvf9jOV+vF5BNb2ja1aLP33MK36W8eaf91MTL/mU/e6METuENg==} - engines: {node: '>=18'} - '@inquirer/confirm@3.2.0': resolution: {integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==} engines: {node: '>=18'} - '@inquirer/core@8.2.3': - resolution: {integrity: sha512-WrpDVPAaxJQjHid3Ra4FhUO70YBzkHSYVyW5X48L5zHYdudoPISJqTRRWSeamHfaXda7PNNaC5Py5MEo7QwBNA==} - engines: {node: '>=18'} - '@inquirer/core@9.1.0': resolution: {integrity: sha512-RZVfH//2ytTjmaBIzeKT1zefcQZzuruwkpTwwbe/i2jTl4o9M+iML5ChULzz6iw1Ok8iUBBsRCjY2IEbD8Ft4w==} engines: {node: '>=18'} @@ -3414,10 +3422,6 @@ packages: resolution: {integrity: sha512-qnJsUcOGCSG1e5DTOErmv2BPQqrtT6uzqn1vI/aYGiPKq+FgslGZmtdnXbhuI7IlT7OByDoEEqdnhUnVR2hhLw==} engines: {node: '>=18'} - '@inquirer/figures@1.0.3': - resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==} - engines: {node: '>=18'} - '@inquirer/figures@1.0.5': resolution: {integrity: sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==} engines: {node: '>=18'} @@ -3450,10 +3454,6 @@ packages: resolution: {integrity: sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==} engines: {node: '>=18'} - '@inquirer/type@1.3.3': - resolution: {integrity: sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==} - engines: {node: '>=18'} - '@inquirer/type@1.5.3': resolution: {integrity: sha512-xUQ14WQGR/HK5ei+2CvgcwoH9fQ4PgPGmVFSN0pc1+fVyDL3MREhyAY7nxEErSu6CkllBM3D7e3e+kOvtu+eIg==} engines: {node: '>=18'} @@ -3550,8 +3550,8 @@ packages: resolution: {integrity: sha512-mE6PhwcoW70EX8+h+Y/4dLfHk33GFt/y5PzDJz56ktMyaVGFXMJ5BYLbUjdmGEABfE0x5GgAGyKbrbkYww2s3A==} engines: {node: '>=18'} - '@mswjs/interceptors@0.29.1': - resolution: {integrity: sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw==} + '@mswjs/interceptors@0.35.3': + resolution: {integrity: sha512-/7DWMTsCh5Ur4yT1f6Vql48VHXkOSPXOMMBWk67lSpymHOxyNuoAA0RBKi77J/9jL7UQzzsBI2ZGjDw/vbSJFw==} engines: {node: '>=18'} '@napi-rs/snappy-android-arm-eabi@7.2.2': @@ -3659,66 +3659,66 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nrwl/tao@19.5.6': - resolution: {integrity: sha512-p1bxEjW32bIHAiTp+PVdJpa2V9En2s9FigepHXyvmT2Aipisz96CKiDjexhPTjOZHUKtqA9FgmOIuVl3sBME3g==} + '@nrwl/tao@19.7.3': + resolution: {integrity: sha512-cIGhnSFPZdVTp4bI0fqwFoE9i7ToPg5jXz+hNMl/MTwcOQfKQ1JJY/ZPLM3aBUPORFIZ/GECQEycUb6+xCB56g==} hasBin: true - '@nx/nx-darwin-arm64@19.5.6': - resolution: {integrity: sha512-evEpUq571PQkhaLBR7ul5iqE2l97QS7Q37/rxoBuwJzyQ/QKHfNu5t032bR3KLyEOrv7golT10jMeoQlNeF7eQ==} + '@nx/nx-darwin-arm64@19.7.3': + resolution: {integrity: sha512-0dDK0UkMR0vBv4AP/48Q9A+OC2dvpivdt8su/4W/CPADy69M9B5O3jPiK+jTRsLshQG/soC9JG0Rll1BNWymPg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@19.5.6': - resolution: {integrity: sha512-o1tu0dOW7TZ80VN9N11FQL/3gHd1+t6NqtEmRClN0/sAh2MZyiBdbXv7UeN5HoKE7HAusiVFIxK3c1lxOvFtsQ==} + '@nx/nx-darwin-x64@19.7.3': + resolution: {integrity: sha512-hTdv5YY2GQTdT7GwVO7ST27ZzvCmAQvmkEapfnCdy74QsL4gapaXJFvtWLHVfG6qHNRHWXbpdegvR3VswRHZVQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@19.5.6': - resolution: {integrity: sha512-IUL0ROGpLUol9cuVJ7VeUvaB/ptxg7DOjMef1+LJeOgxl/SFNa0bj0kKpA/AQwujz6cLI7Ei7xLTVQOboNh1DA==} + '@nx/nx-freebsd-x64@19.7.3': + resolution: {integrity: sha512-dwuB/3eoV2RbD0b0LHnagQOXa9PKAjLi7g5vNxzw6LuNT1tdaLaUZZGv2tfG0hHjsV0cOaAX41rEyOIwJyE7zg==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@19.5.6': - resolution: {integrity: sha512-TGf1+cpWg5QiPEGW5kgxa1fVNyASMuqu+LvQ9CKhNYNz5EPD15yr/k6C0tOjgSXro3wi8TikTeG0Ln2hpmn6pw==} + '@nx/nx-linux-arm-gnueabihf@19.7.3': + resolution: {integrity: sha512-X/eG3IqvIxlCfIOiCQKv7RKwra54I+SN9zj2TeSOtd/uK0paa3mYSlGUJqoP3wpzasW1+EPIGkTQqV283IA15w==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@19.5.6': - resolution: {integrity: sha512-4hZI5NmnBEAzr3NV/BtlPjbSVffLWGGCJ5tB/JB/NpW/vMtzOPCZ4RvsHuJMPprqHcXOdUnBgZFEcLbEMUXz0A==} + '@nx/nx-linux-arm64-gnu@19.7.3': + resolution: {integrity: sha512-LNaX8DVcPlFVJhMf1AAAR6j1DZF9BlVhWlilRM44tIfnmvPfKIahKJIJbuikHE7q+lkvMrQUUDXKiQJlmm/qDw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@nx/nx-linux-arm64-musl@19.5.6': - resolution: {integrity: sha512-n0oIBblMN+nlcBUbrFUkRSyzKZVR+G1lzdZ3PuHVwLC664hkbijEBAdF2E321yRfv5ohQVY0UIYDZVFN2XhFUg==} + '@nx/nx-linux-arm64-musl@19.7.3': + resolution: {integrity: sha512-TJ9PqSebhrn8NfrW+wqMXB9N65U0L0Kjt8FfahWffNKtSAEUvhurbNhqna2Rt5WJe2qaVf6zN2pOHKhF/5pL0w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@nx/nx-linux-x64-gnu@19.5.6': - resolution: {integrity: sha512-IuoNo1bDHyJEeHom/n2m4+AA+UQ+Rlryvt9+bTdADclSFjmBLYCgbJwQRy7q9+vQk2mpQm0pQJv4d3XKCpDH+g==} + '@nx/nx-linux-x64-gnu@19.7.3': + resolution: {integrity: sha512-YMb4WGGovwgxsP6VvAEnyWvLoUwsDrdE5CxFQ2yoThD2BixmSHUKLtx6dtPDHz25nOE3v1ZzM0xTwYXBhPaeRQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@nx/nx-linux-x64-musl@19.5.6': - resolution: {integrity: sha512-FXtB8m/CSRkXLtDOAGfImO9OCUDIwYBssnvCVqX6PyPTBaVWo/GvX1O9WRbXSqSVIaJJTPn1aY/p6vptlGbDFw==} + '@nx/nx-linux-x64-musl@19.7.3': + resolution: {integrity: sha512-zkjgDSvw2eDN+KuJBPPAPhU/lOdiMvJU0UMthJFw85dhQIYfAO8+UgiFg/qBsKo0kQ0MkhntnIPBPF8bH40qWg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@nx/nx-win32-arm64-msvc@19.5.6': - resolution: {integrity: sha512-aIDU84rjvxoqyUDIdN4VwS91Yec8bAtXOxjOFlF2acY2tXh0RjzmM+mkEP44nVAzFy0V1/cjzBKb6643FsEqdA==} + '@nx/nx-win32-arm64-msvc@19.7.3': + resolution: {integrity: sha512-qCTFG6VxNvEe5JfoAELGZsjWDL4G+2NVSoSS3tByJYwVX256qgALcVoUHMjpxBn9FeOvUW9w5PL4Am4PKDdXLw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@19.5.6': - resolution: {integrity: sha512-zWB/2TjhNYKHbuPh++5hYitno3EpSFXrPND0I0VLec27WW7voRY9XQFFznA3omForU4FfmVhITcKCqzIb3EtpA==} + '@nx/nx-win32-x64-msvc@19.7.3': + resolution: {integrity: sha512-ULNf73gLgB5cU/O4dlQe6tetbRIROTmaUNYTUUCCAC0BqVwZwPDxn4u9C5LgiErVyfPwwAhlserCGei5taLASQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3895,13 +3895,13 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.46.1': - resolution: {integrity: sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==} + '@playwright/test@1.47.1': + resolution: {integrity: sha512-dbWpcNQZ5nj16m+A5UNScYx7HX5trIy7g4phrcitn+Nk83S32EBX/CLU4hiF4RGKX/yRc93AAqtfaXB7JWBd4Q==} engines: {node: '>=18'} hasBin: true - '@prisma/client@5.17.0': - resolution: {integrity: sha512-N2tnyKayT0Zf7mHjwEyE8iG7FwTmXDHFZ1GnNhQp0pJUObsuel4ZZ1XwfuAYkq5mRIiC/Kot0kt0tGCfLJ70Jw==} + '@prisma/client@5.19.1': + resolution: {integrity: sha512-x30GFguInsgt+4z5I4WbkZP2CGpotJMUXy+Gl/aaUjHn2o1DnLYNTA+q9XdYmAQZM8fIIkvUiA2NpgosM3fneg==} engines: {node: '>=16.13'} peerDependencies: prisma: '*' @@ -3909,20 +3909,20 @@ packages: prisma: optional: true - '@prisma/debug@5.18.0': - resolution: {integrity: sha512-f+ZvpTLidSo3LMJxQPVgAxdAjzv5OpzAo/eF8qZqbwvgi2F5cTOI9XCpdRzJYA0iGfajjwjOKKrVq64vkxEfUw==} + '@prisma/debug@5.19.1': + resolution: {integrity: sha512-lAG6A6QnG2AskAukIEucYJZxxcSqKsMK74ZFVfCTOM/7UiyJQi48v6TQ47d6qKG3LbMslqOvnTX25dj/qvclGg==} - '@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169': - resolution: {integrity: sha512-a/+LpJj8vYU3nmtkg+N3X51ddbt35yYrRe8wqHTJtYQt7l1f8kjIBcCs6sHJvodW/EK5XGvboOiwm47fmNrbgg==} + '@prisma/engines-version@5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3': + resolution: {integrity: sha512-xR6rt+z5LnNqTP5BBc+8+ySgf4WNMimOKXRn6xfNRDSpHvbOEmd7+qAOmzCrddEc4Cp8nFC0txU14dstjH7FXA==} - '@prisma/engines@5.18.0': - resolution: {integrity: sha512-ofmpGLeJ2q2P0wa/XaEgTnX/IsLnvSp/gZts0zjgLNdBhfuj2lowOOPmDcfKljLQUXMvAek3lw5T01kHmCG8rg==} + '@prisma/engines@5.19.1': + resolution: {integrity: sha512-kR/PoxZDrfUmbbXqqb8SlBBgCjvGaJYMCOe189PEYzq9rKqitQ2fvT/VJ8PDSe8tTNxhc2KzsCfCAL+Iwm/7Cg==} - '@prisma/fetch-engine@5.18.0': - resolution: {integrity: sha512-I/3u0x2n31rGaAuBRx2YK4eB7R/1zCuayo2DGwSpGyrJWsZesrV7QVw7ND0/Suxeo/vLkJ5OwuBqHoCxvTHpOg==} + '@prisma/fetch-engine@5.19.1': + resolution: {integrity: sha512-pCq74rtlOVJfn4pLmdJj+eI4P7w2dugOnnTXpRilP/6n5b2aZiA4ulJlE0ddCbTPkfHmOL9BfaRgA8o+1rfdHw==} - '@prisma/get-platform@5.18.0': - resolution: {integrity: sha512-Tk+m7+uhqcKDgnMnFN0lRiH7Ewea0OEsZZs9pqXa7i3+7svS3FSCqDBCaM9x5fmhhkufiG0BtunJVDka+46DlA==} + '@prisma/get-platform@5.19.1': + resolution: {integrity: sha512-sCeoJ+7yt0UjnR+AXZL7vXlg5eNxaFOwC23h0KvW1YIXUoa7+W2ZcAUhoEQBmJTW4GrFqCuZ8YSP0mkDa4k3Zg==} '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -4247,226 +4247,146 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.18.0': - resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.21.2': resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.18.0': - resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.21.2': resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==} cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.18.0': - resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} - cpu: [arm64] - os: [darwin] + os: [android] '@rollup/rollup-darwin-arm64@4.21.2': resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.18.0': - resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.21.2': resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': - resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} - cpu: [arm] - os: [linux] - '@rollup/rollup-linux-arm-gnueabihf@4.21.2': resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.18.0': - resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} - cpu: [arm] - os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.21.2': resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.18.0': - resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} - cpu: [arm64] - os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.21.2': resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.18.0': - resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} - cpu: [arm64] - os: [linux] - '@rollup/rollup-linux-arm64-musl@4.21.2': resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': - resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} - cpu: [ppc64] - os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.18.0': - resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} - cpu: [riscv64] - os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.21.2': resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.18.0': - resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} - cpu: [s390x] - os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.21.2': resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.18.0': - resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} - cpu: [x64] - os: [linux] - '@rollup/rollup-linux-x64-gnu@4.21.2': resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.18.0': - resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} - cpu: [x64] - os: [linux] - '@rollup/rollup-linux-x64-musl@4.21.2': resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.18.0': - resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.21.2': resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.18.0': - resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.21.2': resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.18.0': - resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.21.2': resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==} cpu: [x64] os: [win32] - '@rsbuild/core@1.0.2': - resolution: {integrity: sha512-kEHmNj4QjDoqvyswEiz8gJCdc2Yo4SXlQD+TnY7ch8pTVs6kLnXRa1KclFLCdgwYnikYvvPsbBERSF8Y2I3KDg==} + '@rsbuild/core@1.0.4': + resolution: {integrity: sha512-ACvCzeyW5gW5olGBzK5Tnc5RfUOQ+BPnMB7Y0Iycz0pRYAghKQcYkpPZlEpdsKQDNeBUKk9loOy+Z7Rca4Ouzw==} engines: {node: '>=16.7.0'} hasBin: true - '@rsbuild/plugin-react@1.0.1': - resolution: {integrity: sha512-JdbuM/Ycwky6XPc0YmXXcDzUYZ4JxIORcio1MB+fJNMOrs3PP1hJF5vUm5NfA7YY391fIMxD9W4oB3GQUI5c6A==} + '@rsbuild/plugin-react@1.0.2': + resolution: {integrity: sha512-8Sa4AJ43/ift7ZW1iNMA38ZIEDXNINPa8rGI38u7b42yBgMUWBan8yDjFYAC0Gkg3lh8vCWYVQYZp0RyIS7lqA==} peerDependencies: '@rsbuild/core': 1.x || ^1.0.1-rc.0 - '@rspack/binding-darwin-arm64@1.0.4': - resolution: {integrity: sha512-HR4OVarDhLYAd3GRus26mGjaoEkvFGSdhRHWPXkTqPWT1QIx+cMTDe2dUnEb/CZyvpH0afLBlVHrxqUBNiLT/Q==} + '@rspack/binding-darwin-arm64@1.0.5': + resolution: {integrity: sha512-pEHj4AOluOa7FaR1DMACPUUZKO3qZI4/66xaTqk0BbclvMT7eheQAWtkmjdE9WJgeZ389TrwZeaMzzPdHhK/6Q==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.0.4': - resolution: {integrity: sha512-3L/vrzrcBpg1h7SqD+9m7CB0UlkDt3aOyJGZc0vwLOQM8IezRsawEoidyN9KyYhpDzBZHzLAUnsva33BcbFJYQ==} + '@rspack/binding-darwin-x64@1.0.5': + resolution: {integrity: sha512-xS5EDD9l3MHL54bnmxsndm61P9l3l7ZNuLSuPl2MbYJzDqPdnXhTdkIjdcDOLH2daFm8gfB634wa5knZhPGLOw==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.0.4': - resolution: {integrity: sha512-Ggo2tLJKOFNsdcg9H3eYSUy03Wrq0PMVIlm50p/LLAMlfYm3kxBDNv7fP13fxlUe/oqXtFcVOlmMezbMH4oz8w==} + '@rspack/binding-linux-arm64-gnu@1.0.5': + resolution: {integrity: sha512-svPOFlem7s6T33tX8a28uD5Ngc7bdML96ioiH7Fhi0J/at+WAthor4GeUNwkwuzBQI/Nc9XCgiYPcE0pzP7c6w==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@1.0.4': - resolution: {integrity: sha512-2FeDh8/THJTH2N4XpFC9oRvdDlkOw6bQ+vS8x1jLUXj+CDwqmUiECjh+78o4qwe1EH2egWDmkq84RQ+KoR37mQ==} + '@rspack/binding-linux-arm64-musl@1.0.5': + resolution: {integrity: sha512-cysqogEUNc0TgzzXcK9bkv12eoCjqhLzOvGXQU1zSEU9Hov7tuzMDl3Z6R3A7NgOCmWu84/wOnTrkSOI28caew==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-x64-gnu@1.0.4': - resolution: {integrity: sha512-k2YQ579fDfXBw4KJMvZQQPShFUSln7wqtG59ltNLBejgFSxOtlMfLhY5oSuRvFCtsAS4SQUPOmUmfW/0dpCa7A==} + '@rspack/binding-linux-x64-gnu@1.0.5': + resolution: {integrity: sha512-qIEMsWOzTKpVm0Sg553gKkua49Kd/sElLD1rZcXjjxjAsD97uq8AiNncArMfYdDKgkKbtwtW/Fb3uVuafTLnZg==} cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@1.0.4': - resolution: {integrity: sha512-1Pmuq3qnE45U7uhCJNtRbDiQVF+U4BXbsA+ISNd3Gp/MUZqpuOOgrND9OWw7d+xKRifzEMtd81DaPMkrcXyRvw==} + '@rspack/binding-linux-x64-musl@1.0.5': + resolution: {integrity: sha512-yulltMSQN3aBt3NMURYTmJcpAJBi4eEJ4i9qF0INE8f0885sJpI0j35/31POkCghG1ZOSZkYALFrheKKP9e8pg==} cpu: [x64] os: [linux] - '@rspack/binding-win32-arm64-msvc@1.0.4': - resolution: {integrity: sha512-3tBP4xTAe8XRAlchMj2nlQXy2GOICA5StFK0kQMRId4V3xfgjlKDb/dMHMEHH4R1to1f9er9R0cRydUNP5AnbQ==} + '@rspack/binding-win32-arm64-msvc@1.0.5': + resolution: {integrity: sha512-5oF/qN6TnUj28UAdaOgSIWKq7HG5QgI4p37zvQBBTXZHhrwN2kE6H+TaofWnSqWJynwmGIxJIx8bGo3lDfFbfA==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.0.4': - resolution: {integrity: sha512-VCXXhOh9aWg31RfvJL87cvqIeL8h+gG2LPkXCJ8kzvQItLg6vlXABCGHf3NlaVUnDtAHnhsAT1sOHiD8G/kMfg==} + '@rspack/binding-win32-ia32-msvc@1.0.5': + resolution: {integrity: sha512-y16IPjd/z6L7+r6RXLu7J/jlZDUenSnJDqo10HnnxtLjOJ+vna+pljI8sHcwu1ao0c3J3uMvbkF34dTiev7Opg==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.0.4': - resolution: {integrity: sha512-hlhAZVpL1MmGJUZ730JvOL6zc12BlfIIwRNnn0PkCrNSxNOYknkfKVix8CfPU9r8L2W8MOJfsbtjteCiJmJnQA==} + '@rspack/binding-win32-x64-msvc@1.0.5': + resolution: {integrity: sha512-PSBTbDSgT+ClYvyQTDtWBi/bxXW/xJmVjg9NOWe8KAEl5WNU+pToiCBLLPCGDSa+K7/zr2TDb6QakG/qYItPZw==} cpu: [x64] os: [win32] - '@rspack/binding@1.0.4': - resolution: {integrity: sha512-YbVyVWvYXCAqUqIyBPEwl+M0js4BqVAxqnsRiZG861MXrqNyYbGOMTcc3Pc6D0SW/gkcWugGWzQ5jgMjAIhHzw==} + '@rspack/binding@1.0.5': + resolution: {integrity: sha512-SnVrzRWeKSosJ0/1e5taAeqJ1ISst6NAE1N8YK4ZdUEVWmE26tC2V/yTvZHSsqatc/0Cf+A18IZJx0q6H/DlRw==} - '@rspack/core@1.0.4': - resolution: {integrity: sha512-/R3JenF5wJSj3DPxiewyIPGzuZV336XpRORjUAOvbHPK6zea8Eeqcx6RopWM6TMikRYdZOHThKV99tyi4QLsMg==} + '@rspack/core@1.0.5': + resolution: {integrity: sha512-UlydS2VupZ6yBx3jCqCHpeEUQNWCrBkTQhPIezK0eCAk13i745byjqXX4tcfN6jR5Kjh/1CIb8r07k9DgGON1w==} engines: {node: '>=16.0.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -4526,7 +4446,7 @@ packages: resolution: {integrity: sha512-4YgqaPhPV8nMAMWnRz+RB7S/CQh/ximISMj2QJ8HPveUzCqUBkeNV7iB4cggr4pkalcDCsIu0y4LhmrlS1yAgA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 '@supabase/auth-js@2.65.0': resolution: {integrity: sha512-+wboHfZufAE2Y612OsKeVP4rVOeGZzzMLD/Ac3HrTQkkY4qXNjI6Af9gtmxwccE5nFvTiF114FEbIQ1hRq5uUw==} @@ -4538,8 +4458,8 @@ packages: resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} engines: {node: 4.x || >=6.0.0} - '@supabase/postgrest-js@1.15.8': - resolution: {integrity: sha512-YunjXpoQjQ0a0/7vGAvGZA2dlMABXFdVI/8TuVKtlePxyT71sl6ERl6ay1fmIeZcqxiuFQuZw/LXUuStUG9bbg==} + '@supabase/postgrest-js@1.16.1': + resolution: {integrity: sha512-EOSEZFm5pPuCPGCmLF1VOCS78DfkSz600PBuvBND/IZmMciJ1pmsS3ss6TkB6UkuvTybYiBh7gKOYyxoEO3USA==} '@supabase/realtime-js@2.10.2': resolution: {integrity: sha512-qyCQaNg90HmJstsvr2aJNxK2zgoKh9ZZA8oqb7UT2LCh3mj9zpa3Iwu167AuyNxsxrUE8eEJ2yH6wLCij4EApA==} @@ -4552,8 +4472,8 @@ packages: '@supabase/storage-js@2.7.0': resolution: {integrity: sha512-iZenEdO6Mx9iTR6T7wC7sk6KKsoDPLq8rdu5VRy7+JiT1i8fnqfcOr6mfF2Eaqky9VQzhP8zZKQYjzozB65Rig==} - '@supabase/supabase-js@2.45.3': - resolution: {integrity: sha512-4wAux6cuVMrdH/qUjKn6p3p3L9AtAO3Une6ojIrtpCj1RaXKVoyIATiacSRAI+pKff6XZBVCGC29v+z4Jo/uSw==} + '@supabase/supabase-js@2.45.4': + resolution: {integrity: sha512-E5p8/zOLaQ3a462MZnmnz03CrduA5ySH9hZyL03Y+QZLIOO4/Gs8Rdy4ZCKDHsN7x0xdanVEWWFN3pJFQr9/hg==} '@swc/core-darwin-arm64@1.7.26': resolution: {integrity: sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==} @@ -4561,120 +4481,60 @@ packages: cpu: [arm64] os: [darwin] - '@swc/core-darwin-arm64@1.7.6': - resolution: {integrity: sha512-6lYHey84ZzsdtC7UuPheM4Rm0Inzxm6Sb8U6dmKc4eCx8JL0LfWG4LC5RsdsrTxnjTsbriWlnhZBffh8ijUHIQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - '@swc/core-darwin-x64@1.7.26': resolution: {integrity: sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-darwin-x64@1.7.6': - resolution: {integrity: sha512-Fyl+8aH9O5rpx4O7r2KnsPpoi32iWoKOYKiipeTbGjQ/E95tNPxbmsz4yqE8Ovldcga60IPJ5OKQA3HWRiuzdw==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.7.26': resolution: {integrity: sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm-gnueabihf@1.7.6': - resolution: {integrity: sha512-2WxYTqFaOx48GKC2cbO1/IntA+w+kfCFy436Ij7qRqqtV/WAvTM9TC1OmiFbqq436rSot52qYmX8fkwdB5UcLQ==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - '@swc/core-linux-arm64-gnu@1.7.26': resolution: {integrity: sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-gnu@1.7.6': - resolution: {integrity: sha512-TBEGMSe0LhvPe4S7E68c7VzgT3OMu4VTmBLS7B2aHv4v8uZO92Khpp7L0WqgYU1y5eMjk+XLDLi4kokiNHv/Hg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - '@swc/core-linux-arm64-musl@1.7.26': resolution: {integrity: sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.7.6': - resolution: {integrity: sha512-QI8QGL0HGT42tj7F1A+YAzhGkJjUcvvTfI1e2m704W0Enl2/UIK9v5D1zvQzYwusRyKuaQfbeBRYDh0NcLOGLg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - '@swc/core-linux-x64-gnu@1.7.26': resolution: {integrity: sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-gnu@1.7.6': - resolution: {integrity: sha512-61AYVzhjuNQAVIKKWOJu3H0/pFD28RYJGxnGg3YMhvRLRyuWNyY5Nyyj2WkKcz/ON+g38Arlz00NT1LDIViRLg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - '@swc/core-linux-x64-musl@1.7.26': resolution: {integrity: sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.7.6': - resolution: {integrity: sha512-hQFznpfLK8XajfAAN9Cjs0w/aVmO7iu9VZvInyrTCRcPqxV5O+rvrhRxKvC1LRMZXr5M6JRSRtepp5w+TK4kAw==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - '@swc/core-win32-arm64-msvc@1.7.26': resolution: {integrity: sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-arm64-msvc@1.7.6': - resolution: {integrity: sha512-Aqsd9afykVMuekzjm4X4TDqwxmG4CrzoOSFe0hZrn9SMio72l5eAPnMtYoe5LsIqtjV8MNprLfXaNbjHjTegmA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - '@swc/core-win32-ia32-msvc@1.7.26': resolution: {integrity: sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-ia32-msvc@1.7.6': - resolution: {integrity: sha512-9h0hYnOeRVNeQgHQTvD1Im67faNSSzBZ7Adtxyu9urNLfBTJilMllFd2QuGHlKW5+uaT6ZH7ZWDb+c/enx7Lcg==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - '@swc/core-win32-x64-msvc@1.7.26': resolution: {integrity: sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core-win32-x64-msvc@1.7.6': - resolution: {integrity: sha512-izeoB8glCSe6IIDQmrVm6bvR9muk9TeKgmtY7b6l1BwL4BFnTUk4dMmpbntT90bEVQn3JPCaPtUG4HfL8VuyuA==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - '@swc/core@1.7.26': resolution: {integrity: sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==} engines: {node: '>=10'} @@ -4684,15 +4544,6 @@ packages: '@swc/helpers': optional: true - '@swc/core@1.7.6': - resolution: {integrity: sha512-FZxyao9eQks1MRmUshgsZTmlg/HB2oXK5fghkoWJm/1CU2q2kaJlVDll2as5j+rmWiwkp0Gidlq8wlXcEEAO+g==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '*' - peerDependenciesMeta: - '@swc/helpers': - optional: true - '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -4707,22 +4558,22 @@ packages: engines: {node: '>=18'} hasBin: true - '@tanstack/query-core@5.51.21': - resolution: {integrity: sha512-POQxm42IUp6n89kKWF4IZi18v3fxQWFRolvBA6phNVmA8psdfB1MvDnGacCJdS+EOX12w/CyHM62z//rHmYmvw==} + '@tanstack/query-core@5.56.2': + resolution: {integrity: sha512-gor0RI3/R5rVV3gXfddh1MM+hgl0Z4G7tj6Xxpq6p2I03NGPaJ8dITY9Gz05zYYb/EJq9vPas/T4wn9EaDPd4Q==} - '@tanstack/query-devtools@5.51.16': - resolution: {integrity: sha512-ajwuq4WnkNCMj/Hy3KR8d3RtZ6PSKc1dD2vs2T408MdjgKzQ3klVoL6zDgVO7X+5jlb5zfgcO3thh4ojPhfIaw==} + '@tanstack/query-devtools@5.56.1': + resolution: {integrity: sha512-xnp9jq/9dHfSCDmmf+A5DjbIjYqbnnUL2ToqlaaviUQGRTapXQ8J+GxusYUu1IG0vZMaWdiVUA4HRGGZYAUU+A==} - '@tanstack/react-query-devtools@5.51.21': - resolution: {integrity: sha512-mi5ef8dvsS48GsG6/8M60O2EgrzPK1kNPngOcHBTlIUrB5dGkxP9fuHf05GQRxtSp5W5GlyeUpzOmtkKNpf9dQ==} + '@tanstack/react-query-devtools@5.56.2': + resolution: {integrity: sha512-7nINJtRZZVwhTTyDdMIcSaXo+EHMLYJu1S2e6FskvvD5prx87LlAXXWZDfU24Qm4HjshEtM5lS3HIOszNGblcw==} peerDependencies: - '@tanstack/react-query': ^5.51.21 + '@tanstack/react-query': ^5.56.2 react: ^18 || ^19 - '@tanstack/react-query@5.51.21': - resolution: {integrity: sha512-Q/V81x3sAYgCsxjwOkfLXfrmoG+FmDhLeHH5okC/Bp8Aaw2c33lbEo/mMcMnkxUPVtB2FLpzHT0tq3c+OlZEbw==} + '@tanstack/react-query@5.56.2': + resolution: {integrity: sha512-SR0GzHVo6yzhN72pnRhkEFRAHMsUo5ZPzAxfTMvUxFIDVS6W9LYUp6nXW3fcHVdg0ZJl8opSH85jqahvm6DSVg==} peerDependencies: - react: ^18.0.0 + react: ^18 || ^19 '@tanstack/react-store@0.5.5': resolution: {integrity: sha512-1orYXGatBqXCYKuroFwV8Ll/6aDa5E3pU6RR4h7RvRk7TmxF1+zLCsWALZaeijXkySNMGmvawSbUXRypivg2XA==} @@ -4730,8 +4581,8 @@ packages: react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - '@tanstack/react-virtual@3.8.4': - resolution: {integrity: sha512-Dq0VQr3QlTS2qL35g360QaJWBt7tCn/0xw4uZ0dHXPLO1Ak4Z4nVX4vuj1Npg1b/jqNMDToRtR5OIxM2NXRBWg==} + '@tanstack/react-virtual@3.10.7': + resolution: {integrity: sha512-yeP+M0G8D+15ZFPivpuQ5hoM4Fa/PzERBx8P8EGcfEsXX3JOb9G9UUrqc47ZXAxvK+YqzM9T5qlJUYUFOwCZJw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4739,19 +4590,19 @@ packages: '@tanstack/store@0.5.5': resolution: {integrity: sha512-EOSrgdDAJExbvRZEQ/Xhh9iZchXpMN+ga1Bnk8Nmygzs8TfiE6hbzThF+Pr2G19uHL6+DTDTHhJ8VQiOd7l4tA==} - '@tanstack/virtual-core@3.8.4': - resolution: {integrity: sha512-iO5Ujgw3O1yIxWDe9FgUPNkGjyT657b1WNX52u+Wv1DyBFEpdCdGkuVaky0M3hHFqNWjAmHWTn4wgj9rTr7ZQg==} + '@tanstack/virtual-core@3.10.7': + resolution: {integrity: sha512-ND5dfsU0n9F4gROzwNNDJmg6y8n9pI8YWxtgbfJ5UcNn7Hx+MxEXtXcQ189tS7sh8pmCObgz2qSiyRKTZxT4dg==} '@testing-library/dom@10.0.0': resolution: {integrity: sha512-PmJPnogldqoVFf+EwbHvbBJ98MmqASV8kLrBYgsDNxQcFMeIS7JFL48sfyXvuMtgmWO/wMhh25odr+8VhDmn4g==} engines: {node: '>=18'} - '@testing-library/jest-dom@6.4.8': - resolution: {integrity: sha512-JD0G+Zc38f5MBHA4NgxQMR5XtO5Jx9g86jqturNTt2WUfRmLDIY7iKkWHDCCTiDuFMre6nxAD5wHw9W5kI4rGw==} + '@testing-library/jest-dom@6.5.0': + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - '@testing-library/react@16.0.0': - resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==} + '@testing-library/react@16.0.1': + resolution: {integrity: sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==} engines: {node: '>=18'} peerDependencies: '@testing-library/dom': ^10.0.0 @@ -4765,22 +4616,22 @@ packages: '@types/react-dom': optional: true - '@trpc/client@11.0.0-rc.477': - resolution: {integrity: sha512-Ah/Er3vxTm2bIEUcIrike7Z/8Yc+DkFveU2ZHQQ0+zY7yxs931438+4OEJuY/Xl/0p5OTDeZTm6HBuZ1REFiyA==} + '@trpc/client@11.0.0-rc.502': + resolution: {integrity: sha512-ysFQ3wHnjzLcAqeuwx9/B/YV+2XN/kmfAdTUG+O/SUAdP2wAwo6XbhOxlHw0HWS5pDCsTfJkxDr1nMVkuFM07Q==} peerDependencies: - '@trpc/server': 11.0.0-rc.477+a467f8314 + '@trpc/server': 11.0.0-rc.502+2a8c56027 - '@trpc/react-query@11.0.0-rc.477': - resolution: {integrity: sha512-1ZCAm0wv7yLmb3muq+5DTRxdKXzI1KjTrcM2+QRKCFu6EherGM8x6zGI36P9ZmC6o+SCoedzxqazDNe+kkqVqA==} + '@trpc/react-query@11.0.0-rc.502': + resolution: {integrity: sha512-aWZZGFTxERXOzI0cb2zYoJQyLrnfJz7sqJVTR4/5UJQ1eCRdu7mFnni6rAlcAHI4r2iA+2xtBQ74JPlaVp5krg==} peerDependencies: '@tanstack/react-query': ^5.49.2 - '@trpc/client': 11.0.0-rc.477+a467f8314 - '@trpc/server': 11.0.0-rc.477+a467f8314 + '@trpc/client': 11.0.0-rc.502+2a8c56027 + '@trpc/server': 11.0.0-rc.502+2a8c56027 react: '>=18.2.0' react-dom: '>=18.2.0' - '@trpc/server@11.0.0-rc.477': - resolution: {integrity: sha512-K6zmjRv96fWilqm/ETehEK1DWsy5bSyrs2xbsNzCbjguMgamMhOClRHgYzJcwgLp2kasJ7QgD9YbahOhV1/u1w==} + '@trpc/server@11.0.0-rc.502': + resolution: {integrity: sha512-n6B8Q/UqF+hFXyCTXq9AWSn6EkXBbVo/Bs7/QzZxe5KD5CdnBomC7A1y6Qr+i0eiOWwTHJZQ0az+gJetb2fdxw==} '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} @@ -4831,9 +4682,6 @@ packages: '@types/cross-spawn@6.0.6': resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} @@ -4879,9 +4727,6 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@20.14.9': - resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} - '@types/node@22.5.4': resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} @@ -4900,9 +4745,6 @@ packages: '@types/react-dom@18.3.0': resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} - '@types/react@18.3.5': resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==} @@ -4948,15 +4790,15 @@ packages: '@types/yargs-parser@21.0.0': resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - '@types/yargs@17.0.32': - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} '@typescript-eslint/eslint-plugin@8.3.0': resolution: {integrity: sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^9.9.1 + eslint: ^9.10.0 typescript: '*' peerDependenciesMeta: typescript: @@ -4966,7 +4808,7 @@ packages: resolution: {integrity: sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 typescript: '*' peerDependenciesMeta: typescript: @@ -4976,6 +4818,10 @@ packages: resolution: {integrity: sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.5.0': + resolution: {integrity: sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/type-utils@8.3.0': resolution: {integrity: sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4985,10 +4831,23 @@ packages: typescript: optional: true + '@typescript-eslint/type-utils@8.5.0': + resolution: {integrity: sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/types@8.3.0': resolution: {integrity: sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.5.0': + resolution: {integrity: sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.3.0': resolution: {integrity: sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4998,16 +4857,35 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@8.5.0': + resolution: {integrity: sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/utils@8.3.0': resolution: {integrity: sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 + + '@typescript-eslint/utils@8.5.0': + resolution: {integrity: sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 '@typescript-eslint/visitor-keys@8.3.0': resolution: {integrity: sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.5.0': + resolution: {integrity: sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@vercel/nft@0.26.5': resolution: {integrity: sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==} engines: {node: '>=16'} @@ -5017,10 +4895,10 @@ packages: resolution: {integrity: sha512-WSN1z931BtasZJlgPp704zJFnQFRg7yzSjkm3MzAWQYe4uXFXlFr1hc5Ac2zae5/HDOz5x1/zDM5Cb54vTCnWw==} hasBin: true - '@vinxi/plugin-directives@0.4.2': - resolution: {integrity: sha512-lQuKA6Bc6z3tGmqDTSyR2CC0aSOMc0nBlHmk+5HoROSJ9Lp24xVSJjqEyaBNEnUMaq4itw+4w2IGUX7+qoMhJQ==} + '@vinxi/plugin-directives@0.4.3': + resolution: {integrity: sha512-Ey+TRIwyk8871PKhQel8NyZ9B6N0Tvhjo1QIttTyrV0d7BfUpri5GyGygmBY7fHClSE/vqaNCCZIKpTL3NJAEg==} peerDependencies: - vinxi: ^0.4.2 + vinxi: ^0.4.3 '@vinxi/react-server-dom@0.0.3': resolution: {integrity: sha512-ZJJZtuw1TbGFOBuDZBHmM3w40yzFpNFWoPCoC2QtZBkYEQXYF9sOHHxkjTfNvk4rSn/zaUAs6KNUbVRvebq/1Q==} @@ -5030,18 +4908,18 @@ packages: react-dom: 0.0.0-experimental-035a41c4e-20230704 vite: ^4.3.9 - '@vinxi/react@0.2.4': - resolution: {integrity: sha512-FYmmAWEzInpx5OAFGFSGlVauTdzDhVg8vVhqoc3DlhZAvsux3WyY/I3qp1IkCXI+mIrDFetFOZCahi3FkpSEWA==} + '@vinxi/react@0.2.5': + resolution: {integrity: sha512-Ubjv/JfYWTxFbuaHxKOeq6hQMuSuIH6eZXRf27wb82YWM82z3VY1nwZzTHgyveHg/EPSOK0p8LUmbw9758xTlw==} - '@vinxi/server-components@0.4.2': - resolution: {integrity: sha512-uQFQjfq7ZYBTYXij7NWQ7aKKH0HvpboLG/Oqxj+f3RNv09dY9xLlD03VdBvgJjx4TtssliGY2rYeFDjkrByVVw==} + '@vinxi/server-components@0.4.3': + resolution: {integrity: sha512-KVEnQtb+ZlXIEKaUw4r4WZl/rqFeZqSyIRklY1wFiPw7GCJUxbXzISpsJ+HwDhYi9k4n8uZJyQyLHGkoiEiolg==} peerDependencies: - vinxi: ^0.4.2 + vinxi: ^0.4.3 - '@vinxi/server-functions@0.4.2': - resolution: {integrity: sha512-hI6MstgFx5LqR0ZFI2NU7WVBfSuurjD/NmQBE38FC1TY9gOwXCqVXi8aQ/DEUnO5mOGNBE0iPohIUxmsbHfnUQ==} + '@vinxi/server-functions@0.4.3': + resolution: {integrity: sha512-kVYrOrCMHwGvHRwpaeW2/PE7URcGtz4Rk/hIHa2xjt5PGopzzB/Y5GC8YgZjtqSRqo0ElAKsEik7UE6CXH3HXA==} peerDependencies: - vinxi: ^0.4.2 + vinxi: ^0.4.3 '@vitejs/plugin-react@4.3.1': resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} @@ -5364,8 +5242,8 @@ packages: aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - arktype@2.0.0-beta.5: - resolution: {integrity: sha512-3bNUyiA2iuvyV/rfiErLli9HrrvC6W4XT8Ja6SAEihljM60PRQhYJEr5jM4MGGtj1k/oFxgOkHd++VjQrm6SoA==} + arktype@2.0.0-rc.7: + resolution: {integrity: sha512-O+bHkuglFJ/4O8vvhZlEQScpDT5aLqfUAqmXgt4vZ2g4IfTLEtu2paUomZTqKsUJqn5JBMIy9XJ/+lX0aad3LA==} array-each@1.0.1: resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} @@ -5419,8 +5297,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios@1.7.2: - resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} b4a@1.6.6: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} @@ -5456,8 +5334,8 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} bonjour-service@1.2.1: @@ -5548,9 +5426,6 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001653: - resolution: {integrity: sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==} - caniuse-lite@1.0.30001659: resolution: {integrity: sha512-Qxxyfv3RdHAfJcXelgf0hU4DFUVXBGTjqrBUZLUh8AtlGnsDo+CnncYtTd95+ZKfnANUOzxyIQCuU/UeBZBYoA==} @@ -5599,6 +5474,9 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + cjs-module-lexer@1.4.1: + resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} @@ -5794,8 +5672,8 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - convex@1.15.0: - resolution: {integrity: sha512-NTyr+4x3hhjzDwiQ18Rx7pfkkoZIWak3ERUd3ihWt1jQP4HVx+mqtU1B/q7ZkV5Xp4FLj3aJeck55wjc9im/bQ==} + convex@1.16.0: + resolution: {integrity: sha512-duu6ged8mL2WgN9Jxm/XykbRe8MW+Wotkj57KTX44l7TUlnwvNCKB3mmlAVCxbsd4epyU05TkQz8WGwb/4SssQ==} engines: {node: '>=18.0.0', npm: '>=7.0.0'} hasBin: true peerDependencies: @@ -6011,10 +5889,6 @@ packages: resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} engines: {node: '>=18'} - default-gateway@6.0.3: - resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} - engines: {node: '>= 10'} - defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -6187,13 +6061,13 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.17.0: - resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} - engines: {node: '>=10.13.0'} - enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} @@ -6237,11 +6111,6 @@ packages: peerDependencies: esbuild: '>=0.12 <1' - esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} @@ -6257,6 +6126,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.23.0: + resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} + engines: {node: '>=18'} + hasBin: true + esbuild@0.23.1: resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} engines: {node: '>=18'} @@ -6289,7 +6163,7 @@ packages: resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} @@ -6298,45 +6172,45 @@ packages: resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 eslint-plugin-import-x@4.1.1: resolution: {integrity: sha512-dBEM8fACIFNt4H7GoOaRmnH6evJW6JSTJTYYgmRd3vI4geBTjgDM/JyUDKUwIw0HDSyI+u7Vs3vFRXUo/BOAtA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 eslint-plugin-n@17.10.2: resolution: {integrity: sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 - eslint-plugin-react-debug@1.12.3: - resolution: {integrity: sha512-rtKsmDWFz1aG5EMj27fNfbVIxsdhqA1MIv9G4CSRhXWgqlIdg4NMWvk+2yRJjBzLWfAh1TlpLeXjuLd0PDmreQ==} + eslint-plugin-react-debug@1.14.1: + resolution: {integrity: sha512-VFkRmXGCgmCCgUsdBpmARYhFvKbK7XgF41hgQrEhJAfYA0lXE2Urb+VkVpk57xUk+ZxMQy3sy6A1P4tQ+83hrQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true - eslint-plugin-react-dom@1.12.3: - resolution: {integrity: sha512-bZOcY1Dew7WqYrdn9FLQPTL9U0qeBIpSpC2mOXKxgsvGC/B+BYQKp89K05WeRBubmqDfDKVdrqVcAku2f7BU7w==} + eslint-plugin-react-dom@1.14.1: + resolution: {integrity: sha512-hVcublIn4aAvudpl39I0l/1ldJJvn5rINHc71m+balFeKt5Qk0nPTUdPRCWRyp4ExD/mEbWAcEIP/pS0b5B/Vg==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true - eslint-plugin-react-hooks-extra@1.12.3: - resolution: {integrity: sha512-QdTOf+GddxSBA3UBme+2DwUaUJA4YzYIP+JYI3AD8Ja04nEoMqvSu4SOXVtmRr1aLWeWgR/fC3SNFXgGZUaI9A==} + eslint-plugin-react-hooks-extra@1.14.1: + resolution: {integrity: sha512-R5BOTZYY9fm7qTPN1hRZxk9mj8JwvnpXbxhEZwphM3Sn2legwXVHdXXkuUqaDR6AWw+z3wfLkb8xhVBu+uY1Hg==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: @@ -6346,33 +6220,33 @@ packages: resolution: {integrity: sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==} engines: {node: '>=10'} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 - eslint-plugin-react-naming-convention@1.12.3: - resolution: {integrity: sha512-PKKXx3Wvh/KUftE7nh+imyOrUzkIyF41i9TaPbDxuEt+ggIY0cuvYOE/bcDCVJBDq0ROb2ZhERe9i46RaJoG/Q==} + eslint-plugin-react-naming-convention@1.14.1: + resolution: {integrity: sha512-F3HCtRXwtT66/KNBuhSPxk63z/1iIxV3LUrwKAPVomTpGEIGrF/vzvNjJK0eaxf2Ae7h+SGMrDvJcRaYtRpRvQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true - eslint-plugin-react-web-api@1.12.3: - resolution: {integrity: sha512-I5UgttFfAUYQ4lSWoHs02pHb0Pp2ou3xJ4L3xRv7Uce2s8sRPKazYOt7frxqfvBMxdzStS4/g0Gu7k5/PtPypA==} + eslint-plugin-react-web-api@1.14.1: + resolution: {integrity: sha512-1qS15Wfh+++1UHtGRf6palH2nfDVlKSNMaUjaANnUss04PW0PXeNF540cTuWwMPHyh8xIxcEgDzqx+8MokCtCw==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true - eslint-plugin-react-x@1.12.3: - resolution: {integrity: sha512-LfmjFDiqleIEFqOOcAbsPqQnTkkT68tlYEpeXZBa+IWUtQVC4jxIRTmus+m/h9Td6wf2XGVEzwwSqmYQQzcb7w==} + eslint-plugin-react-x@1.14.1: + resolution: {integrity: sha512-69KBSAX9X+1Az/wfWjvztPJyaZq2PSurlYYju0bH+iWon7pBV7zSqWiGhkizLpa2bSKFhAGzbMhSuaEqPiZQkA==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: @@ -6394,8 +6268,8 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.9.1: - resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} + eslint@9.10.0: + resolution: {integrity: sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -6458,10 +6332,6 @@ packages: resolution: {integrity: sha512-/teX3MDLFBdYUhRk8WCBYboIMUmqeizu0m9Z3YF3JWrbEh/SlZg00vLJSaAGWw3wrZ9tE0buNw79eaAPYhUuvg==} engines: {node: '>=4'} - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -6470,8 +6340,8 @@ packages: resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} engines: {node: '>=0.10.0'} - express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + express@4.21.0: + resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} engines: {node: '>= 0.10.0'} extend@3.0.2: @@ -6536,8 +6406,8 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} find-up@4.1.0: @@ -6613,8 +6483,8 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - framer-motion@11.3.21: - resolution: {integrity: sha512-D+hfIsvzV8eL/iycld4K+tKlg2Q2LdwnrcBEohtGw3cG1AIuNYATbT5RUqIM1ndsAk+EfGhoSGf0UaiFodc5Tw==} + framer-motion@11.5.4: + resolution: {integrity: sha512-E+tb3/G6SO69POkdJT+3EpdMuhmtCh9EWuK4I1DnIC23L7tFPrl8vxP+LSovwaw6uUr73rUbpb4FgK011wbRJQ==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 @@ -6700,10 +6570,6 @@ packages: resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} engines: {node: '>=4'} - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -6925,10 +6791,6 @@ packages: httpxy@0.1.5: resolution: {integrity: sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ==} - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -7076,7 +6938,7 @@ packages: is-immutable-type@5.0.0: resolution: {integrity: sha512-mcvHasqbRBWJznuPqqHRKiJgYAz60sZ0mvO3bN70JbkuK7ksfmgc489aKZYxMEjIbRvyOseaTjaRZLRF/xFeRA==} peerDependencies: - eslint: ^9.9.1 + eslint: ^9.10.0 typescript: '>=4.7.4' is-inside-container@1.0.0: @@ -7194,8 +7056,8 @@ packages: isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - isbot@5.1.14: - resolution: {integrity: sha512-4X8KZHyaIqXOqEv1qfZOqshMX3r7Q/VtMEMzuGPZljDMEIGpX7bcGODR9gZztXdcPBEJpNioQXXBJun+xi2G5g==} + isbot@5.1.17: + resolution: {integrity: sha512-/wch8pRKZE+aoVhRX/hYPY1C7dMCeeMyhkQLNLNlYAbGQn9bkvMB8fOUXNnk5I0m4vDYbBJ9ciVtkr9zfBJ7qA==} engines: {node: '>=18'} isexe@2.0.0: @@ -7225,10 +7087,6 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true - jiti@1.21.6: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true @@ -7333,8 +7191,8 @@ packages: kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - ky@1.5.0: - resolution: {integrity: sha512-bkQo+UqryW6Zmo/DsixYZE4Z9t2mzvNMhceyIhuMuInb3knm5Q+GNGMKveydJAj+Z6piN1SwI6eR/V0G+Z0BtA==} + ky@1.7.2: + resolution: {integrity: sha512-OzIvbHKKDpi60TnF9t7UUVAF1B4mcqc02z5PIvrm08Wyb+yOcz63GRvEuVxNT18a9E1SrNouhB4W2NNLeD7Ykg==} engines: {node: '>=18'} launch-editor@2.8.0: @@ -7367,10 +7225,6 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} - lilconfig@3.1.2: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} @@ -7378,8 +7232,8 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lines-and-columns@2.0.4: - resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + lines-and-columns@2.0.3: + resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} linkify-it@5.0.0: @@ -7444,9 +7298,8 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@10.2.2: - resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} - engines: {node: 14 || >=16.14} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -7519,8 +7372,8 @@ packages: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} - merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -7640,9 +7493,6 @@ packages: vue-tsc: optional: true - mlly@1.7.0: - resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} - mlly@1.7.1: resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} @@ -7659,12 +7509,12 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msw@2.3.5: - resolution: {integrity: sha512-+GUI4gX5YC5Bv33epBrD+BGdmDvBg2XGruiWnI3GbIbRmMMBeZ5gs3mJ51OWSGHgJKztZ8AtZeYMMNMVrje2/Q==} + msw@2.4.6: + resolution: {integrity: sha512-flx3DIP3+a81vvEY1lCmZVFKVYVcDiizNHg6mHYc2+F2xU+4LmZ6P2eYZUGEFoJWqA3yRWS70pJa0riFVTb5FQ==} engines: {node: '>=18'} hasBin: true peerDependencies: - typescript: '>= 4.7.x' + typescript: '>= 4.8.x' peerDependenciesMeta: typescript: optional: true @@ -7805,8 +7655,8 @@ packages: nwsapi@2.2.12: resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==} - nx@19.5.6: - resolution: {integrity: sha512-qjP17aa5ViXSpo0bDgJ7O3b8EY/0+PbX7ZIKvG1g6qasohtfM1y4Sx2bbSow0zCKU0+r1LnR53Q0lyX4OOgtUg==} + nx@19.7.3: + resolution: {integrity: sha512-8F4CzKavSuOFv+uKVwXHc00Px0q40CWAYCW6NC5IgU3AMaJVumyHzgB8Sn+yfkaVgfVnZVqznOsyrbZUWuj/VA==} hasBin: true peerDependencies: '@swc-node/register': ^1.8.0 @@ -7908,8 +7758,8 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - outvariant@1.4.2: - resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} + outvariant@1.4.3: + resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} @@ -8022,8 +7872,8 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} path-to-regexp@6.2.2: resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} @@ -8045,9 +7895,6 @@ packages: perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} @@ -8071,19 +7918,16 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-types@1.1.1: - resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} - pkg-types@1.2.0: resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} - playwright-core@1.46.1: - resolution: {integrity: sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==} + playwright-core@1.47.1: + resolution: {integrity: sha512-i1iyJdLftqtt51mEk6AhYFaAJCDx0xQ/O5NU8EKaWFgMjItPVma542Nh/Aq8aLCjIJSzjaiEQGW/nyqLkGF1OQ==} engines: {node: '>=18'} hasBin: true - playwright@1.46.1: - resolution: {integrity: sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==} + playwright@1.47.1: + resolution: {integrity: sha512-SUEKi6947IqYbKxRiqnbUobVZY4bF1uu+ZnZNJX9DfU1tlf2UhWfvVjLf01pQx9URsOr18bFVUKXmanYWhbfkw==} engines: {node: '>=18'} hasBin: true @@ -8193,12 +8037,6 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - postcss-nested@6.2.0: resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} engines: {node: '>=12.0'} @@ -8277,10 +8115,6 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} - postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -8300,12 +8134,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.40: - resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.45: - resolution: {integrity: sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==} + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -8337,8 +8167,8 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - prisma@5.18.0: - resolution: {integrity: sha512-+TrSIxZsh64OPOmaSgVPH7ALL9dfU0jceYaMJXsNrTkFHO7/3RANi5K2ZiPB1De9+KDxCWn7jvRq8y8pvk+o9g==} + prisma@5.19.1: + resolution: {integrity: sha512-c5K9MiDaa+VAAyh1OiYk76PXOme9s3E992D7kvvIOhCrNsBQfy2mP2QAQtX0WNj140IgG++12kwZpYB9iIydNQ==} engines: {node: '>=16.13'} hasBin: true @@ -8379,8 +8209,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} querystringify@2.2.0: @@ -8626,11 +8456,6 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true - rollup@4.18.0: - resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.21.2: resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8708,8 +8533,8 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} serialize-javascript@6.0.2: @@ -8722,8 +8547,8 @@ packages: serve-placeholder@2.0.1: resolution: {integrity: sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ==} - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} set-blocking@2.0.0: @@ -8827,8 +8652,8 @@ packages: sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} source-map-support@0.5.21: @@ -8932,10 +8757,6 @@ packages: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -9028,13 +8849,8 @@ packages: tailwind-merge@2.5.2: resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} - tailwindcss@3.4.10: - resolution: {integrity: sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==} - engines: {node: '>=14.0.0'} - hasBin: true - - tailwindcss@3.4.7: - resolution: {integrity: sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==} + tailwindcss@3.4.11: + resolution: {integrity: sha512-qhEuBcLemjSJk5ajccN9xJFtM/h0AVCPaA6C92jNP+M2J8kX+eMJHI7R2HFKUvvAsMpcfLILMCFYSeDwpMmlUg==} engines: {node: '>=14.0.0'} hasBin: true @@ -9176,9 +8992,6 @@ packages: peerDependencies: typescript: '>=4.0.0' - ts-expose-internals-conditionally@1.0.0-empty.0: - resolution: {integrity: sha512-F8m9NOF6ZhdOClDVdlM8gj3fDCav4ZIFSs/EI3ksQbAAXVSCN/Jh5OCJDDZWBuBy9psFc6jULGDlPwjMYMhJDw==} - ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -9205,8 +9018,8 @@ packages: tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - tsx@4.19.0: - resolution: {integrity: sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==} + tsx@4.19.1: + resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==} engines: {node: '>=18.0.0'} hasBin: true @@ -9296,8 +9109,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.5.3: - resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} + typescript@5.6.1-rc: + resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} engines: {node: '>=14.17'} hasBin: true @@ -9331,9 +9144,6 @@ packages: unctx@2.3.1: resolution: {integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@5.28.4: resolution: {integrity: sha512-3OeMF5Lyowe8VW0skf5qaIE7Or3yS9LS7fvMUI0gg4YxpIBVg0L8BxCmROw2CcYhSkpR68Epz7CGc8MPj94Uww==} @@ -9500,11 +9310,8 @@ packages: resolution: {integrity: sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==} engines: {node: '>= 10.13.0'} - valibot@0.36.0: - resolution: {integrity: sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==} - - valibot@0.37.0: - resolution: {integrity: sha512-FQz52I8RXgFgOHym3XHYSREbNtkgSjF9prvMFH1nBsRyfL6SfCzoT1GuSDTlbsuPubM7/6Kbw0ZMQb8A+V+VsQ==} + valibot@0.41.0: + resolution: {integrity: sha512-igDBb8CTYr8YTQlOKgaN9nSS0Be7z+WRuaeYqGf3Cjz3aKmSnqEmYnkfVjzIuumGqfHpa3fLIvMEAfhrpqN8ng==} peerDependencies: typescript: '>=5' peerDependenciesMeta: @@ -9519,8 +9326,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vinxi@0.4.2: - resolution: {integrity: sha512-BbvIum9BLUQ22O/lU1RX0+aKNMXXcl58hofNoWFnFcKkm+efgVsHiD2d7HG3w8QLdb2Asdhmz5/ZzI1Y3zTBXw==} + vinxi@0.4.3: + resolution: {integrity: sha512-RgJz7RWftML5h/qfPsp3QKVc2FSlvV4+HevpE0yEY2j+PS/I2ULjoSsZDXaR8Ks2WYuFFDzQr8yrox7v8aqkng==} hasBin: true vite-node@1.6.0: @@ -9557,67 +9364,8 @@ packages: vite: optional: true - vite@5.3.5: - resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vite@5.4.3: - resolution: {integrity: sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vite@5.4.4: - resolution: {integrity: sha512-RHFCkULitycHVTtelJ6jQLd+KSAAzOgEYorV32R2q++M6COBjKJR6BxqClwp5sf0XaBDjVMuJ9wnNfyAJwjMkA==} + vite@5.4.5: + resolution: {integrity: sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -9723,15 +9471,6 @@ packages: webpack-dev-server: optional: true - webpack-dev-middleware@7.2.1: - resolution: {integrity: sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true - webpack-dev-middleware@7.4.2: resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} engines: {node: '>= 18.12.0'} @@ -9741,19 +9480,6 @@ packages: webpack: optional: true - webpack-dev-server@5.0.4: - resolution: {integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==} - engines: {node: '>= 18.12.0'} - hasBin: true - peerDependencies: - webpack: ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - webpack-dev-server@5.1.0: resolution: {integrity: sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==} engines: {node: '>= 18.12.0'} @@ -9778,16 +9504,6 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.93.0: - resolution: {integrity: sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - webpack@5.94.0: resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} engines: {node: '>=10.13.0'} @@ -9978,9 +9694,9 @@ snapshots: '@andrewbranch/untar.js@1.0.3': {} - '@arethetypeswrong/cli@0.15.4': + '@arethetypeswrong/cli@0.16.2': dependencies: - '@arethetypeswrong/core': 0.15.1 + '@arethetypeswrong/core': 0.16.2 chalk: 4.1.2 cli-table3: 0.6.5 commander: 10.0.1 @@ -9988,20 +9704,21 @@ snapshots: marked-terminal: 7.1.0(marked@9.1.6) semver: 7.6.3 - '@arethetypeswrong/core@0.15.1': + '@arethetypeswrong/core@0.16.2': dependencies: '@andrewbranch/untar.js': 1.0.3 + cjs-module-lexer: 1.4.1 fflate: 0.8.2 + lru-cache: 10.4.3 semver: 7.6.3 - ts-expose-internals-conditionally: 1.0.0-empty.0 - typescript: 5.3.3 + typescript: 5.6.1-rc validate-npm-package-name: 5.0.1 - '@ark/schema@0.3.2': + '@ark/schema@0.9.0': dependencies: - '@ark/util': 0.2.1 + '@ark/util': 0.9.0 - '@ark/util@0.2.1': {} + '@ark/util@0.9.0': {} '@babel/code-frame@7.24.7': dependencies: @@ -10014,14 +9731,14 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 + '@babel/generator': 7.25.6 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.3 + '@babel/parser': 7.25.6 '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 convert-source-map: 2.0.0 debug: 4.3.6 gensync: 1.0.0-beta.2 @@ -10030,9 +9747,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.25.0': + '@babel/generator@7.25.6': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 @@ -10047,8 +9764,8 @@ snapshots: '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color @@ -10058,16 +9775,16 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color - '@babel/helper-plugin-utils@7.24.7': {} + '@babel/helper-plugin-utils@7.24.8': {} '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color @@ -10080,7 +9797,7 @@ snapshots: '@babel/helpers@7.25.0': dependencies: '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@babel/highlight@7.24.7': dependencies: @@ -10089,29 +9806,29 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.0 - '@babel/parser@7.25.3': + '@babel/parser@7.25.6': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/runtime@7.23.5': dependencies: @@ -10122,22 +9839,22 @@ snapshots: '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 - '@babel/traverse@7.25.3': + '@babel/traverse@7.25.6': dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 debug: 4.3.6 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.25.2': + '@babel/types@7.25.6': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 @@ -10156,10 +9873,10 @@ snapshots: '@types/tough-cookie': 4.0.5 tough-cookie: 4.1.4 - '@clerk/backend@1.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/backend@1.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@clerk/shared': 2.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/types': 4.19.0 + '@clerk/shared': 2.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/types': 4.20.1 cookie: 0.5.0 snakecase-keys: 5.4.4 tslib: 2.4.1 @@ -10167,17 +9884,17 @@ snapshots: - react - react-dom - '@clerk/clerk-react@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/clerk-react@5.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@clerk/shared': 2.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/types': 4.19.0 + '@clerk/shared': 2.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/types': 4.20.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.4.1 - '@clerk/shared@2.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/shared@2.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@clerk/types': 4.19.0 + '@clerk/types': 4.20.1 glob-to-regexp: 0.4.1 js-cookie: 3.0.5 std-env: 3.7.0 @@ -10186,19 +9903,19 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@clerk/tanstack-start@0.3.5(@tanstack/react-router@packages+react-router)(@tanstack/start@packages+start)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/tanstack-start@0.4.1(@tanstack/react-router@packages+react-router)(@tanstack/start@packages+start)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@clerk/backend': 1.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/clerk-react': 5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/shared': 2.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/types': 4.19.0 + '@clerk/backend': 1.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/clerk-react': 5.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/shared': 2.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/types': 4.20.1 '@tanstack/react-router': link:packages/react-router '@tanstack/start': link:packages/start react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.4.1 - '@clerk/types@4.19.0': + '@clerk/types@4.20.1': dependencies: csstype: 3.1.1 @@ -10222,10 +9939,10 @@ snapshots: '@types/conventional-commits-parser': 5.0.0 chalk: 5.3.0 - '@convex-dev/react-query@0.0.0-alpha.5(@tanstack/react-query@5.51.21(react@18.3.1))(convex@1.15.0(@clerk/clerk-react@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@convex-dev/react-query@0.0.0-alpha.5(@tanstack/react-query@5.56.2(react@18.3.1))(convex@1.16.0(@clerk/clerk-react@5.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: - '@tanstack/react-query': 5.51.21(react@18.3.1) - convex: 1.15.0(@clerk/clerk-react@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-query': 5.56.2(react@18.3.1) + convex: 1.16.0(@clerk/clerk-react@5.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dabh/diagnostics@2.0.3': dependencies: @@ -10272,10 +9989,10 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.23.1': + '@esbuild/aix-ppc64@0.23.0': optional: true - '@esbuild/android-arm64@0.17.19': + '@esbuild/aix-ppc64@0.23.1': optional: true '@esbuild/android-arm64@0.19.12': @@ -10287,10 +10004,10 @@ snapshots: '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.23.1': + '@esbuild/android-arm64@0.23.0': optional: true - '@esbuild/android-arm@0.17.19': + '@esbuild/android-arm64@0.23.1': optional: true '@esbuild/android-arm@0.19.12': @@ -10302,10 +10019,10 @@ snapshots: '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.23.1': + '@esbuild/android-arm@0.23.0': optional: true - '@esbuild/android-x64@0.17.19': + '@esbuild/android-arm@0.23.1': optional: true '@esbuild/android-x64@0.19.12': @@ -10317,10 +10034,10 @@ snapshots: '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.23.1': + '@esbuild/android-x64@0.23.0': optional: true - '@esbuild/darwin-arm64@0.17.19': + '@esbuild/android-x64@0.23.1': optional: true '@esbuild/darwin-arm64@0.19.12': @@ -10332,10 +10049,10 @@ snapshots: '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.23.1': + '@esbuild/darwin-arm64@0.23.0': optional: true - '@esbuild/darwin-x64@0.17.19': + '@esbuild/darwin-arm64@0.23.1': optional: true '@esbuild/darwin-x64@0.19.12': @@ -10347,10 +10064,10 @@ snapshots: '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.23.1': + '@esbuild/darwin-x64@0.23.0': optional: true - '@esbuild/freebsd-arm64@0.17.19': + '@esbuild/darwin-x64@0.23.1': optional: true '@esbuild/freebsd-arm64@0.19.12': @@ -10362,10 +10079,10 @@ snapshots: '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.23.1': + '@esbuild/freebsd-arm64@0.23.0': optional: true - '@esbuild/freebsd-x64@0.17.19': + '@esbuild/freebsd-arm64@0.23.1': optional: true '@esbuild/freebsd-x64@0.19.12': @@ -10377,10 +10094,10 @@ snapshots: '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.23.1': + '@esbuild/freebsd-x64@0.23.0': optional: true - '@esbuild/linux-arm64@0.17.19': + '@esbuild/freebsd-x64@0.23.1': optional: true '@esbuild/linux-arm64@0.19.12': @@ -10392,10 +10109,10 @@ snapshots: '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.23.1': + '@esbuild/linux-arm64@0.23.0': optional: true - '@esbuild/linux-arm@0.17.19': + '@esbuild/linux-arm64@0.23.1': optional: true '@esbuild/linux-arm@0.19.12': @@ -10407,10 +10124,10 @@ snapshots: '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.23.1': + '@esbuild/linux-arm@0.23.0': optional: true - '@esbuild/linux-ia32@0.17.19': + '@esbuild/linux-arm@0.23.1': optional: true '@esbuild/linux-ia32@0.19.12': @@ -10422,10 +10139,10 @@ snapshots: '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.23.1': + '@esbuild/linux-ia32@0.23.0': optional: true - '@esbuild/linux-loong64@0.17.19': + '@esbuild/linux-ia32@0.23.1': optional: true '@esbuild/linux-loong64@0.19.12': @@ -10437,10 +10154,10 @@ snapshots: '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.23.1': + '@esbuild/linux-loong64@0.23.0': optional: true - '@esbuild/linux-mips64el@0.17.19': + '@esbuild/linux-loong64@0.23.1': optional: true '@esbuild/linux-mips64el@0.19.12': @@ -10452,10 +10169,10 @@ snapshots: '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.23.1': + '@esbuild/linux-mips64el@0.23.0': optional: true - '@esbuild/linux-ppc64@0.17.19': + '@esbuild/linux-mips64el@0.23.1': optional: true '@esbuild/linux-ppc64@0.19.12': @@ -10467,10 +10184,10 @@ snapshots: '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.23.1': + '@esbuild/linux-ppc64@0.23.0': optional: true - '@esbuild/linux-riscv64@0.17.19': + '@esbuild/linux-ppc64@0.23.1': optional: true '@esbuild/linux-riscv64@0.19.12': @@ -10482,10 +10199,10 @@ snapshots: '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.23.1': + '@esbuild/linux-riscv64@0.23.0': optional: true - '@esbuild/linux-s390x@0.17.19': + '@esbuild/linux-riscv64@0.23.1': optional: true '@esbuild/linux-s390x@0.19.12': @@ -10497,10 +10214,10 @@ snapshots: '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.23.1': + '@esbuild/linux-s390x@0.23.0': optional: true - '@esbuild/linux-x64@0.17.19': + '@esbuild/linux-s390x@0.23.1': optional: true '@esbuild/linux-x64@0.19.12': @@ -10512,10 +10229,10 @@ snapshots: '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.23.1': + '@esbuild/linux-x64@0.23.0': optional: true - '@esbuild/netbsd-x64@0.17.19': + '@esbuild/linux-x64@0.23.1': optional: true '@esbuild/netbsd-x64@0.19.12': @@ -10527,13 +10244,16 @@ snapshots: '@esbuild/netbsd-x64@0.21.5': optional: true + '@esbuild/netbsd-x64@0.23.0': + optional: true + '@esbuild/netbsd-x64@0.23.1': optional: true - '@esbuild/openbsd-arm64@0.23.1': + '@esbuild/openbsd-arm64@0.23.0': optional: true - '@esbuild/openbsd-x64@0.17.19': + '@esbuild/openbsd-arm64@0.23.1': optional: true '@esbuild/openbsd-x64@0.19.12': @@ -10545,10 +10265,10 @@ snapshots: '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.23.1': + '@esbuild/openbsd-x64@0.23.0': optional: true - '@esbuild/sunos-x64@0.17.19': + '@esbuild/openbsd-x64@0.23.1': optional: true '@esbuild/sunos-x64@0.19.12': @@ -10560,10 +10280,10 @@ snapshots: '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.23.1': + '@esbuild/sunos-x64@0.23.0': optional: true - '@esbuild/win32-arm64@0.17.19': + '@esbuild/sunos-x64@0.23.1': optional: true '@esbuild/win32-arm64@0.19.12': @@ -10575,10 +10295,10 @@ snapshots: '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.23.1': + '@esbuild/win32-arm64@0.23.0': optional: true - '@esbuild/win32-ia32@0.17.19': + '@esbuild/win32-arm64@0.23.1': optional: true '@esbuild/win32-ia32@0.19.12': @@ -10590,10 +10310,10 @@ snapshots: '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.23.1': + '@esbuild/win32-ia32@0.23.0': optional: true - '@esbuild/win32-x64@0.17.19': + '@esbuild/win32-ia32@0.23.1': optional: true '@esbuild/win32-x64@0.19.12': @@ -10605,23 +10325,26 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true + '@esbuild/win32-x64@0.23.0': + optional: true + '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.21.6))': + '@eslint-community/eslint-utils@4.4.0(eslint@9.10.0(jiti@1.21.6))': dependencies: - eslint: 9.9.1(jiti@1.21.6) + eslint: 9.10.0(jiti@1.21.6) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} - '@eslint-react/ast@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': + '@eslint-react/ast@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) birecord: 0.1.1 string-ts: 2.2.0 ts-pattern: 5.3.1 @@ -10630,18 +10353,18 @@ snapshots: - supports-color - typescript - '@eslint-react/core@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': - dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) birecord: 0.1.1 short-unique-id: 5.2.0 ts-pattern: 5.3.1 @@ -10650,72 +10373,72 @@ snapshots: - supports-color - typescript - '@eslint-react/eslint-plugin@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': - dependencies: - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint: 9.9.1(jiti@1.21.6) - eslint-plugin-react-debug: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint-plugin-react-dom: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint-plugin-react-hooks-extra: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint-plugin-react-naming-convention: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint-plugin-react-web-api: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint-plugin-react-x: 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/eslint-plugin@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': + dependencies: + '@eslint-react/shared': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint: 9.10.0(jiti@1.21.6) + eslint-plugin-react-debug: 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-react-dom: 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-react-hooks-extra: 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-react-naming-convention: 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-react-web-api: 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-react-x: 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@eslint-react/jsx@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': + '@eslint-react/jsx@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/ast': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': + '@eslint-react/shared@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@eslint-react/tools': 1.12.3 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) picomatch: 4.0.2 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/tools@1.12.3': {} + '@eslint-react/tools@1.14.1': {} - '@eslint-react/types@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': + '@eslint-react/types@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@eslint-react/tools': 1.12.3 - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/var@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': + '@eslint-react/var@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/ast': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) ts-pattern: 5.3.1 transitivePeerDependencies: - eslint @@ -10744,10 +10467,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.9.1': {} + '@eslint/js@9.10.0': {} '@eslint/object-schema@2.1.4': {} + '@eslint/plugin-kit@0.1.0': + dependencies: + levn: 0.4.1 + '@fastify/busboy@2.1.0': {} '@humanwhocodes/module-importer@1.0.1': {} @@ -10762,32 +10489,11 @@ snapshots: ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 - '@inquirer/confirm@3.1.10': - dependencies: - '@inquirer/core': 8.2.3 - '@inquirer/type': 1.3.3 - '@inquirer/confirm@3.2.0': dependencies: '@inquirer/core': 9.1.0 '@inquirer/type': 1.5.3 - '@inquirer/core@8.2.3': - dependencies: - '@inquirer/figures': 1.0.3 - '@inquirer/type': 1.3.3 - '@types/mute-stream': 0.0.4 - '@types/node': 20.14.9 - '@types/wrap-ansi': 3.0.0 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-spinners: 2.9.2 - cli-width: 4.1.0 - mute-stream: 1.0.0 - signal-exit: 4.1.0 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - '@inquirer/core@9.1.0': dependencies: '@inquirer/figures': 1.0.5 @@ -10816,8 +10522,6 @@ snapshots: '@inquirer/type': 1.5.3 yoctocolors-cjs: 2.1.2 - '@inquirer/figures@1.0.3': {} - '@inquirer/figures@1.0.5': {} '@inquirer/input@2.3.0': @@ -10870,8 +10574,6 @@ snapshots: ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 - '@inquirer/type@1.3.3': {} - '@inquirer/type@1.5.3': dependencies: mute-stream: 1.0.0 @@ -11011,16 +10713,16 @@ snapshots: '@open-draft/logger': 0.3.0 '@open-draft/until': 2.1.0 is-node-process: 1.2.0 - outvariant: 1.4.2 + outvariant: 1.4.3 strict-event-emitter: 0.5.1 - '@mswjs/interceptors@0.29.1': + '@mswjs/interceptors@0.35.3': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 '@open-draft/until': 2.1.0 is-node-process: 1.2.0 - outvariant: 1.4.2 + outvariant: 1.4.3 strict-event-emitter: 0.5.1 '@napi-rs/snappy-android-arm-eabi@7.2.2': @@ -11101,43 +10803,43 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.5.6(@swc/core@1.7.26(@swc/helpers@0.5.13))': + '@nrwl/tao@19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13))': dependencies: - nx: 19.5.6(@swc/core@1.7.26(@swc/helpers@0.5.13)) + nx: 19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)) tslib: 2.7.0 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug - '@nx/nx-darwin-arm64@19.5.6': + '@nx/nx-darwin-arm64@19.7.3': optional: true - '@nx/nx-darwin-x64@19.5.6': + '@nx/nx-darwin-x64@19.7.3': optional: true - '@nx/nx-freebsd-x64@19.5.6': + '@nx/nx-freebsd-x64@19.7.3': optional: true - '@nx/nx-linux-arm-gnueabihf@19.5.6': + '@nx/nx-linux-arm-gnueabihf@19.7.3': optional: true - '@nx/nx-linux-arm64-gnu@19.5.6': + '@nx/nx-linux-arm64-gnu@19.7.3': optional: true - '@nx/nx-linux-arm64-musl@19.5.6': + '@nx/nx-linux-arm64-musl@19.7.3': optional: true - '@nx/nx-linux-x64-gnu@19.5.6': + '@nx/nx-linux-x64-gnu@19.7.3': optional: true - '@nx/nx-linux-x64-musl@19.5.6': + '@nx/nx-linux-x64-musl@19.7.3': optional: true - '@nx/nx-win32-arm64-msvc@19.5.6': + '@nx/nx-win32-arm64-msvc@19.7.3': optional: true - '@nx/nx-win32-x64-msvc@19.5.6': + '@nx/nx-win32-x64-msvc@19.7.3': optional: true '@open-draft/deferred-promise@2.2.0': {} @@ -11145,7 +10847,7 @@ snapshots: '@open-draft/logger@0.3.0': dependencies: is-node-process: 1.2.0 - outvariant: 1.4.2 + outvariant: 1.4.3 '@open-draft/until@2.1.0': {} @@ -11288,34 +10990,34 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.46.1': + '@playwright/test@1.47.1': dependencies: - playwright: 1.46.1 + playwright: 1.47.1 - '@prisma/client@5.17.0(prisma@5.18.0)': + '@prisma/client@5.19.1(prisma@5.19.1)': optionalDependencies: - prisma: 5.18.0 + prisma: 5.19.1 - '@prisma/debug@5.18.0': {} + '@prisma/debug@5.19.1': {} - '@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169': {} + '@prisma/engines-version@5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3': {} - '@prisma/engines@5.18.0': + '@prisma/engines@5.19.1': dependencies: - '@prisma/debug': 5.18.0 - '@prisma/engines-version': 5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169 - '@prisma/fetch-engine': 5.18.0 - '@prisma/get-platform': 5.18.0 + '@prisma/debug': 5.19.1 + '@prisma/engines-version': 5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3 + '@prisma/fetch-engine': 5.19.1 + '@prisma/get-platform': 5.19.1 - '@prisma/fetch-engine@5.18.0': + '@prisma/fetch-engine@5.19.1': dependencies: - '@prisma/debug': 5.18.0 - '@prisma/engines-version': 5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169 - '@prisma/get-platform': 5.18.0 + '@prisma/debug': 5.19.1 + '@prisma/engines-version': 5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3 + '@prisma/get-platform': 5.19.1 - '@prisma/get-platform@5.18.0': + '@prisma/get-platform@5.19.1': dependencies: - '@prisma/debug': 5.18.0 + '@prisma/debug': 5.19.1 '@protobufjs/aspromise@1.1.2': {} @@ -11342,138 +11044,138 @@ snapshots: '@radix-ui/primitive@1.1.0': {} - '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1)': + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.5)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 - '@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1)': + '@radix-ui/react-context@1.1.0(@types/react@18.3.5)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 - '@radix-ui/react-dialog@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dialog@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.3.1) aria-hidden: 1.2.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) + react-remove-scroll: 2.5.7(@types/react@18.3.5)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.5)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.3)(react@18.3.1)': + '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.5)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 - '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1)': + '@radix-ui/react-id@1.1.0(@types/react@18.3.5)(react@18.3.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 - '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.5)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)': + '@radix-ui/react-slot@1.1.0(@types/react@18.3.5)(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1)': + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.5)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1)': + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.5)(react@18.3.1)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1)': + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.5)(react@18.3.1)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1)': + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.5)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 '@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)': dependencies: @@ -11515,9 +11217,9 @@ snapshots: optionalDependencies: typescript: 5.6.2 - '@replayio/playwright@3.1.8(@playwright/test@1.46.1)': + '@replayio/playwright@3.1.8(@playwright/test@1.47.1)': dependencies: - '@playwright/test': 1.46.1 + '@playwright/test': 1.47.1 chalk: 4.1.2 debug: 4.3.6 fs-extra: 11.2.0 @@ -11547,11 +11249,11 @@ snapshots: optionalDependencies: rollup: 3.29.4 - '@rollup/plugin-alias@5.1.0(rollup@4.18.0)': + '@rollup/plugin-alias@5.1.0(rollup@4.21.2)': dependencies: slash: 4.0.0 optionalDependencies: - rollup: 4.18.0 + rollup: 4.21.2 '@rollup/plugin-babel@6.0.4(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@4.21.2)': dependencies: @@ -11575,24 +11277,24 @@ snapshots: optionalDependencies: rollup: 3.29.4 - '@rollup/plugin-commonjs@25.0.7(rollup@4.18.0)': + '@rollup/plugin-commonjs@25.0.7(rollup@4.21.2)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.11 optionalDependencies: - rollup: 4.18.0 + rollup: 4.21.2 - '@rollup/plugin-inject@5.0.5(rollup@4.18.0)': + '@rollup/plugin-inject@5.0.5(rollup@4.21.2)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) estree-walker: 2.0.2 magic-string: 0.30.11 optionalDependencies: - rollup: 4.18.0 + rollup: 4.21.2 '@rollup/plugin-json@6.1.0(rollup@3.29.4)': dependencies: @@ -11600,11 +11302,11 @@ snapshots: optionalDependencies: rollup: 3.29.4 - '@rollup/plugin-json@6.1.0(rollup@4.18.0)': + '@rollup/plugin-json@6.1.0(rollup@4.21.2)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) optionalDependencies: - rollup: 4.18.0 + rollup: 4.21.2 '@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4)': dependencies: @@ -11617,16 +11319,16 @@ snapshots: optionalDependencies: rollup: 3.29.4 - '@rollup/plugin-node-resolve@15.2.3(rollup@4.18.0)': + '@rollup/plugin-node-resolve@15.2.3(rollup@4.21.2)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.18.0 + rollup: 4.21.2 '@rollup/plugin-replace@5.0.7(rollup@3.29.4)': dependencies: @@ -11635,20 +11337,20 @@ snapshots: optionalDependencies: rollup: 3.29.4 - '@rollup/plugin-replace@5.0.7(rollup@4.18.0)': + '@rollup/plugin-replace@5.0.7(rollup@4.21.2)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) magic-string: 0.30.11 optionalDependencies: - rollup: 4.18.0 + rollup: 4.21.2 - '@rollup/plugin-terser@0.4.4(rollup@4.18.0)': + '@rollup/plugin-terser@0.4.4(rollup@4.21.2)': dependencies: serialize-javascript: 6.0.2 smob: 1.4.1 terser: 5.31.1 optionalDependencies: - rollup: 4.18.0 + rollup: 4.21.2 '@rollup/pluginutils@4.2.1': dependencies: @@ -11663,14 +11365,6 @@ snapshots: optionalDependencies: rollup: 3.29.4 - '@rollup/pluginutils@5.1.0(rollup@4.18.0)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 4.18.0 - '@rollup/pluginutils@5.1.0(rollup@4.21.2)': dependencies: '@types/estree': 1.0.5 @@ -11679,105 +11373,57 @@ snapshots: optionalDependencies: rollup: 4.21.2 - '@rollup/rollup-android-arm-eabi@4.18.0': - optional: true - '@rollup/rollup-android-arm-eabi@4.21.2': optional: true - '@rollup/rollup-android-arm64@4.18.0': - optional: true - '@rollup/rollup-android-arm64@4.21.2': optional: true - '@rollup/rollup-darwin-arm64@4.18.0': - optional: true - '@rollup/rollup-darwin-arm64@4.21.2': optional: true - '@rollup/rollup-darwin-x64@4.18.0': - optional: true - '@rollup/rollup-darwin-x64@4.21.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.21.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.18.0': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.21.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.18.0': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.21.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.18.0': - optional: true - '@rollup/rollup-linux-arm64-musl@4.21.2': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': - optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.18.0': - optional: true - '@rollup/rollup-linux-riscv64-gnu@4.21.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.18.0': - optional: true - '@rollup/rollup-linux-s390x-gnu@4.21.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.18.0': - optional: true - '@rollup/rollup-linux-x64-gnu@4.21.2': optional: true - '@rollup/rollup-linux-x64-musl@4.18.0': - optional: true - '@rollup/rollup-linux-x64-musl@4.21.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.18.0': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.21.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.18.0': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.21.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.18.0': - optional: true - '@rollup/rollup-win32-x64-msvc@4.21.2': optional: true - '@rsbuild/core@1.0.2': + '@rsbuild/core@1.0.4': dependencies: - '@rspack/core': 1.0.4(@swc/helpers@0.5.13) + '@rspack/core': 1.0.5(@swc/helpers@0.5.13) '@rspack/lite-tapable': 1.0.0 '@swc/helpers': 0.5.13 caniuse-lite: 1.0.30001659 @@ -11785,55 +11431,55 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - '@rsbuild/plugin-react@1.0.1(@rsbuild/core@1.0.2)': + '@rsbuild/plugin-react@1.0.2(@rsbuild/core@1.0.4)': dependencies: - '@rsbuild/core': 1.0.2 + '@rsbuild/core': 1.0.4 '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) react-refresh: 0.14.2 - '@rspack/binding-darwin-arm64@1.0.4': + '@rspack/binding-darwin-arm64@1.0.5': optional: true - '@rspack/binding-darwin-x64@1.0.4': + '@rspack/binding-darwin-x64@1.0.5': optional: true - '@rspack/binding-linux-arm64-gnu@1.0.4': + '@rspack/binding-linux-arm64-gnu@1.0.5': optional: true - '@rspack/binding-linux-arm64-musl@1.0.4': + '@rspack/binding-linux-arm64-musl@1.0.5': optional: true - '@rspack/binding-linux-x64-gnu@1.0.4': + '@rspack/binding-linux-x64-gnu@1.0.5': optional: true - '@rspack/binding-linux-x64-musl@1.0.4': + '@rspack/binding-linux-x64-musl@1.0.5': optional: true - '@rspack/binding-win32-arm64-msvc@1.0.4': + '@rspack/binding-win32-arm64-msvc@1.0.5': optional: true - '@rspack/binding-win32-ia32-msvc@1.0.4': + '@rspack/binding-win32-ia32-msvc@1.0.5': optional: true - '@rspack/binding-win32-x64-msvc@1.0.4': + '@rspack/binding-win32-x64-msvc@1.0.5': optional: true - '@rspack/binding@1.0.4': + '@rspack/binding@1.0.5': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.0.4 - '@rspack/binding-darwin-x64': 1.0.4 - '@rspack/binding-linux-arm64-gnu': 1.0.4 - '@rspack/binding-linux-arm64-musl': 1.0.4 - '@rspack/binding-linux-x64-gnu': 1.0.4 - '@rspack/binding-linux-x64-musl': 1.0.4 - '@rspack/binding-win32-arm64-msvc': 1.0.4 - '@rspack/binding-win32-ia32-msvc': 1.0.4 - '@rspack/binding-win32-x64-msvc': 1.0.4 - - '@rspack/core@1.0.4(@swc/helpers@0.5.13)': + '@rspack/binding-darwin-arm64': 1.0.5 + '@rspack/binding-darwin-x64': 1.0.5 + '@rspack/binding-linux-arm64-gnu': 1.0.5 + '@rspack/binding-linux-arm64-musl': 1.0.5 + '@rspack/binding-linux-x64-gnu': 1.0.5 + '@rspack/binding-linux-x64-musl': 1.0.5 + '@rspack/binding-win32-arm64-msvc': 1.0.5 + '@rspack/binding-win32-ia32-msvc': 1.0.5 + '@rspack/binding-win32-x64-msvc': 1.0.5 + + '@rspack/core@1.0.5(@swc/helpers@0.5.13)': dependencies: '@module-federation/runtime-tools': 0.5.1 - '@rspack/binding': 1.0.4 + '@rspack/binding': 1.0.5 '@rspack/lite-tapable': 1.0.0 caniuse-lite: 1.0.30001659 optionalDependencies: @@ -11892,10 +11538,10 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} - '@stylistic/eslint-plugin-js@2.7.1(eslint@9.9.1(jiti@1.21.6))': + '@stylistic/eslint-plugin-js@2.7.1(eslint@9.10.0(jiti@1.21.6))': dependencies: '@types/eslint': 9.6.1 - eslint: 9.9.1(jiti@1.21.6) + eslint: 9.10.0(jiti@1.21.6) eslint-visitor-keys: 4.0.0 espree: 10.1.0 @@ -11911,7 +11557,7 @@ snapshots: dependencies: whatwg-url: 5.0.0 - '@supabase/postgrest-js@1.15.8': + '@supabase/postgrest-js@1.16.1': dependencies: '@supabase/node-fetch': 2.6.15 @@ -11925,21 +11571,21 @@ snapshots: - bufferutil - utf-8-validate - '@supabase/ssr@0.5.1(@supabase/supabase-js@2.45.3)': + '@supabase/ssr@0.5.1(@supabase/supabase-js@2.45.4)': dependencies: - '@supabase/supabase-js': 2.45.3 + '@supabase/supabase-js': 2.45.4 cookie: 0.6.0 '@supabase/storage-js@2.7.0': dependencies: '@supabase/node-fetch': 2.6.15 - '@supabase/supabase-js@2.45.3': + '@supabase/supabase-js@2.45.4': dependencies: '@supabase/auth-js': 2.65.0 '@supabase/functions-js': 2.4.1 '@supabase/node-fetch': 2.6.15 - '@supabase/postgrest-js': 1.15.8 + '@supabase/postgrest-js': 1.16.1 '@supabase/realtime-js': 2.10.2 '@supabase/storage-js': 2.7.0 transitivePeerDependencies: @@ -11949,63 +11595,33 @@ snapshots: '@swc/core-darwin-arm64@1.7.26': optional: true - '@swc/core-darwin-arm64@1.7.6': - optional: true - '@swc/core-darwin-x64@1.7.26': optional: true - '@swc/core-darwin-x64@1.7.6': - optional: true - '@swc/core-linux-arm-gnueabihf@1.7.26': optional: true - '@swc/core-linux-arm-gnueabihf@1.7.6': - optional: true - '@swc/core-linux-arm64-gnu@1.7.26': optional: true - '@swc/core-linux-arm64-gnu@1.7.6': - optional: true - '@swc/core-linux-arm64-musl@1.7.26': optional: true - '@swc/core-linux-arm64-musl@1.7.6': - optional: true - '@swc/core-linux-x64-gnu@1.7.26': optional: true - '@swc/core-linux-x64-gnu@1.7.6': - optional: true - '@swc/core-linux-x64-musl@1.7.26': optional: true - '@swc/core-linux-x64-musl@1.7.6': - optional: true - '@swc/core-win32-arm64-msvc@1.7.26': optional: true - '@swc/core-win32-arm64-msvc@1.7.6': - optional: true - '@swc/core-win32-ia32-msvc@1.7.26': optional: true - '@swc/core-win32-ia32-msvc@1.7.6': - optional: true - '@swc/core-win32-x64-msvc@1.7.26': optional: true - '@swc/core-win32-x64-msvc@1.7.6': - optional: true - '@swc/core@1.7.26(@swc/helpers@0.5.13)': dependencies: '@swc/counter': 0.1.3 @@ -12023,23 +11639,6 @@ snapshots: '@swc/core-win32-x64-msvc': 1.7.26 '@swc/helpers': 0.5.13 - '@swc/core@1.7.6(@swc/helpers@0.5.13)': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.12 - optionalDependencies: - '@swc/core-darwin-arm64': 1.7.6 - '@swc/core-darwin-x64': 1.7.6 - '@swc/core-linux-arm-gnueabihf': 1.7.6 - '@swc/core-linux-arm64-gnu': 1.7.6 - '@swc/core-linux-arm64-musl': 1.7.6 - '@swc/core-linux-x64-gnu': 1.7.6 - '@swc/core-linux-x64-musl': 1.7.6 - '@swc/core-win32-arm64-msvc': 1.7.6 - '@swc/core-win32-ia32-msvc': 1.7.6 - '@swc/core-win32-x64-msvc': 1.7.6 - '@swc/helpers': 0.5.13 - '@swc/counter@0.1.3': {} '@swc/helpers@0.5.13': @@ -12050,16 +11649,16 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tanstack/config@0.13.1(@types/node@22.5.4)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.6))(rollup@4.21.2)(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1))': + '@tanstack/config@0.13.1(@types/node@22.5.4)(esbuild@0.23.1)(eslint@9.10.0(jiti@1.21.6))(rollup@4.21.2)(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1))': dependencies: '@commitlint/parse': 19.0.3 - '@eslint/js': 9.9.1 - '@stylistic/eslint-plugin-js': 2.7.1(eslint@9.9.1(jiti@1.21.6)) + '@eslint/js': 9.10.0 + '@stylistic/eslint-plugin-js': 2.7.1(eslint@9.10.0(jiti@1.21.6)) commander: 12.1.0 current-git-branch: 1.1.0 esbuild-register: 3.6.0(esbuild@0.23.1) - eslint-plugin-import-x: 4.1.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint-plugin-n: 17.10.2(eslint@9.9.1(jiti@1.21.6)) + eslint-plugin-import-x: 4.1.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-n: 17.10.2(eslint@9.10.0(jiti@1.21.6)) globals: 15.9.0 interpret: 3.1.1 jsonfile: 6.1.0 @@ -12071,11 +11670,11 @@ snapshots: typedoc: 0.26.6(typescript@5.6.2) typedoc-plugin-frontmatter: 1.0.0(typedoc-plugin-markdown@4.2.6(typedoc@0.26.6(typescript@5.6.2))) typedoc-plugin-markdown: 4.2.6(typedoc@0.26.6(typescript@5.6.2)) - typescript-eslint: 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + typescript-eslint: 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) v8flags: 4.0.1 - vite-plugin-dts: 4.0.3(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) - vite-plugin-externalize-deps: 0.8.0(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) - vite-tsconfig-paths: 5.0.1(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)) + vite-plugin-dts: 4.0.3(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + vite-plugin-externalize-deps: 0.8.0(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + vite-tsconfig-paths: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) transitivePeerDependencies: - '@types/node' - esbuild @@ -12085,19 +11684,19 @@ snapshots: - typescript - vite - '@tanstack/query-core@5.51.21': {} + '@tanstack/query-core@5.56.2': {} - '@tanstack/query-devtools@5.51.16': {} + '@tanstack/query-devtools@5.56.1': {} - '@tanstack/react-query-devtools@5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(react@18.3.1)': + '@tanstack/react-query-devtools@5.56.2(@tanstack/react-query@5.56.2(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/query-devtools': 5.51.16 - '@tanstack/react-query': 5.51.21(react@18.3.1) + '@tanstack/query-devtools': 5.56.1 + '@tanstack/react-query': 5.56.2(react@18.3.1) react: 18.3.1 - '@tanstack/react-query@5.51.21(react@18.3.1)': + '@tanstack/react-query@5.56.2(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.51.21 + '@tanstack/query-core': 5.56.2 react: 18.3.1 '@tanstack/react-store@0.5.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -12107,15 +11706,15 @@ snapshots: react-dom: 18.3.1(react@18.3.1) use-sync-external-store: 1.2.2(react@18.3.1) - '@tanstack/react-virtual@3.8.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-virtual@3.10.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/virtual-core': 3.8.4 + '@tanstack/virtual-core': 3.10.7 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) '@tanstack/store@0.5.5': {} - '@tanstack/virtual-core@3.8.4': {} + '@tanstack/virtual-core@3.10.7': {} '@testing-library/dom@10.0.0': dependencies: @@ -12128,10 +11727,9 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.8': + '@testing-library/jest-dom@6.5.0': dependencies: '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.23.5 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 @@ -12139,7 +11737,7 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/react@16.0.0(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@testing-library/react@16.0.1(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.23.5 '@testing-library/dom': 10.0.0 @@ -12149,19 +11747,19 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@trpc/client@11.0.0-rc.477(@trpc/server@11.0.0-rc.477)': + '@trpc/client@11.0.0-rc.502(@trpc/server@11.0.0-rc.502)': dependencies: - '@trpc/server': 11.0.0-rc.477 + '@trpc/server': 11.0.0-rc.502 - '@trpc/react-query@11.0.0-rc.477(@tanstack/react-query@5.51.21(react@18.3.1))(@trpc/client@11.0.0-rc.477(@trpc/server@11.0.0-rc.477))(@trpc/server@11.0.0-rc.477)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@trpc/react-query@11.0.0-rc.502(@tanstack/react-query@5.56.2(react@18.3.1))(@trpc/client@11.0.0-rc.502(@trpc/server@11.0.0-rc.502))(@trpc/server@11.0.0-rc.502)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/react-query': 5.51.21(react@18.3.1) - '@trpc/client': 11.0.0-rc.477(@trpc/server@11.0.0-rc.477) - '@trpc/server': 11.0.0-rc.477 + '@tanstack/react-query': 5.56.2(react@18.3.1) + '@trpc/client': 11.0.0-rc.502(@trpc/server@11.0.0-rc.502) + '@trpc/server': 11.0.0-rc.502 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@trpc/server@11.0.0-rc.477': {} + '@trpc/server@11.0.0-rc.502': {} '@trysound/sax@0.2.0': {} @@ -12175,24 +11773,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@types/body-parser@1.19.2': dependencies: @@ -12224,11 +11822,6 @@ snapshots: dependencies: '@types/node': 22.5.4 - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.5 - '@types/eslint@9.6.1': dependencies: '@types/estree': 1.0.5 @@ -12282,10 +11875,6 @@ snapshots: dependencies: '@types/node': 22.5.4 - '@types/node@20.14.9': - dependencies: - undici-types: 5.26.5 - '@types/node@22.5.4': dependencies: undici-types: 6.19.8 @@ -12300,12 +11889,7 @@ snapshots: '@types/react-dom@18.3.0': dependencies: - '@types/react': 18.3.3 - - '@types/react@18.3.3': - dependencies: - '@types/prop-types': 15.7.12 - csstype: 3.1.3 + '@types/react': 18.3.5 '@types/react@18.3.5': dependencies: @@ -12353,19 +11937,19 @@ snapshots: '@types/yargs-parser@21.0.0': {} - '@types/yargs@17.0.32': + '@types/yargs@17.0.33': dependencies: '@types/yargs-parser': 21.0.0 - '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': + '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/parser': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/visitor-keys': 8.3.0 - eslint: 9.9.1(jiti@1.21.6) + eslint: 9.10.0(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -12375,14 +11959,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': + '@typescript-eslint/parser@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) '@typescript-eslint/visitor-keys': 8.3.0 debug: 4.3.6 - eslint: 9.9.1(jiti@1.21.6) + eslint: 9.10.0(jiti@1.21.6) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: @@ -12393,10 +11977,27 @@ snapshots: '@typescript-eslint/types': 8.3.0 '@typescript-eslint/visitor-keys': 8.3.0 - '@typescript-eslint/type-utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': + '@typescript-eslint/scope-manager@8.5.0': + dependencies: + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/visitor-keys': 8.5.0 + + '@typescript-eslint/type-utils@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + debug: 4.3.6 + ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - eslint + - supports-color + + '@typescript-eslint/type-utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': + dependencies: + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) debug: 4.3.6 ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: @@ -12407,6 +12008,8 @@ snapshots: '@typescript-eslint/types@8.3.0': {} + '@typescript-eslint/types@8.5.0': {} + '@typescript-eslint/typescript-estree@8.3.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 8.3.0 @@ -12422,13 +12025,39 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': + '@typescript-eslint/typescript-estree@8.5.0(typescript@5.6.2)': + dependencies: + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/visitor-keys': 8.5.0 + debug: 4.3.6 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) - eslint: 9.9.1(jiti@1.21.6) + eslint: 9.10.0(jiti@1.21.6) + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + eslint: 9.10.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript @@ -12438,6 +12067,11 @@ snapshots: '@typescript-eslint/types': 8.3.0 eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@8.5.0': + dependencies: + '@typescript-eslint/types': 8.5.0 + eslint-visitor-keys: 3.4.3 + '@vercel/nft@0.26.5': dependencies: '@mapbox/node-pre-gyp': 1.0.11 @@ -12467,8 +12101,8 @@ snapshots: get-port-please: 3.1.2 h3: 1.11.1 http-shutdown: 1.2.2 - jiti: 1.21.0 - mlly: 1.7.0 + jiti: 1.21.6 + mlly: 1.7.1 node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.7.0 @@ -12478,9 +12112,9 @@ snapshots: transitivePeerDependencies: - uWebSockets.js - '@vinxi/plugin-directives@0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1))': + '@vinxi/plugin-directives@0.4.3(vinxi@0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1))': dependencies: - '@babel/parser': 7.25.3 + '@babel/parser': 7.25.6 acorn: 8.12.1 acorn-jsx: 5.3.2(acorn@8.12.1) acorn-loose: 8.3.0 @@ -12489,58 +12123,47 @@ snapshots: magicast: 0.2.11 recast: 0.23.4 tslib: 2.7.0 - vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + vinxi: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) - '@vinxi/react-server-dom@0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1))': + '@vinxi/react-server-dom@0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1))': dependencies: acorn-loose: 8.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - vite: 5.4.4(@types/node@22.5.4)(terser@5.31.1) + vite: 5.4.5(@types/node@22.5.4)(terser@5.31.1) - '@vinxi/react@0.2.4': {} + '@vinxi/react@0.2.5': {} - '@vinxi/server-components@0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1))': + '@vinxi/server-components@0.4.3(vinxi@0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1))': dependencies: - '@vinxi/plugin-directives': 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) + '@vinxi/plugin-directives': 0.4.3(vinxi@0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) acorn: 8.12.1 acorn-loose: 8.3.0 acorn-typescript: 1.4.13(acorn@8.12.1) astring: 1.8.6 magicast: 0.2.11 recast: 0.23.4 - vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + vinxi: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) - '@vinxi/server-functions@0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1))': + '@vinxi/server-functions@0.4.3(vinxi@0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1))': dependencies: - '@vinxi/plugin-directives': 0.4.2(vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) + '@vinxi/plugin-directives': 0.4.3(vinxi@0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1)) acorn: 8.12.1 acorn-loose: 8.3.0 acorn-typescript: 1.4.13(acorn@8.12.1) astring: 1.8.6 magicast: 0.2.11 recast: 0.23.4 - vinxi: 0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) - - '@vitejs/plugin-react@4.3.1(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1))': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) - '@types/babel__core': 7.20.5 - react-refresh: 0.14.2 - vite: 5.3.5(@types/node@22.5.4)(terser@5.31.1) - transitivePeerDependencies: - - supports-color + vinxi: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) - '@vitejs/plugin-react@4.3.1(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1))': + '@vitejs/plugin-react@4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.4(@types/node@22.5.4)(terser@5.31.1) + vite: 5.4.5(@types/node@22.5.4)(terser@5.31.1) transitivePeerDependencies: - supports-color @@ -12587,11 +12210,11 @@ snapshots: '@vue/compiler-core@3.4.27': dependencies: - '@babel/parser': 7.25.3 + '@babel/parser': 7.25.6 '@vue/shared': 3.4.27 entities: 4.5.0 estree-walker: 2.0.2 - source-map-js: 1.2.0 + source-map-js: 1.2.1 '@vue/compiler-dom@3.4.27': dependencies: @@ -12696,33 +12319,16 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4))': - dependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4))': dependencies: webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4))': - dependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4))': dependencies: webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4))': - dependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) - optionalDependencies: - webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0))(webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4))': dependencies: webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) @@ -12924,10 +12530,10 @@ snapshots: dependencies: dequal: 2.0.3 - arktype@2.0.0-beta.5: + arktype@2.0.0-rc.7: dependencies: - '@ark/schema': 0.3.2 - '@ark/util': 0.2.1 + '@ark/schema': 0.9.0 + '@ark/util': 0.9.0 array-each@1.0.1: {} @@ -12961,31 +12567,21 @@ snapshots: asynckit@0.4.0: {} - autoprefixer@10.4.20(postcss@8.4.40): - dependencies: - browserslist: 4.23.3 - caniuse-lite: 1.0.30001653 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.40 - postcss-value-parser: 4.2.0 - - autoprefixer@10.4.20(postcss@8.4.45): + autoprefixer@10.4.20(postcss@8.4.47): dependencies: browserslist: 4.23.3 - caniuse-lite: 1.0.30001653 + caniuse-lite: 1.0.30001659 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.45 + picocolors: 1.1.0 + postcss: 8.4.47 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - axios@1.7.2: + axios@1.7.7: dependencies: follow-redirects: 1.15.6 form-data: 4.0.0 @@ -12998,9 +12594,9 @@ snapshots: babel-dead-code-elimination@1.0.6: dependencies: '@babel/core': 7.25.2 - '@babel/parser': 7.25.3 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.25.6 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color @@ -13029,7 +12625,7 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - body-parser@1.20.2: + body-parser@1.20.3: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -13039,7 +12635,7 @@ snapshots: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.11.0 + qs: 6.13.0 raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 @@ -13079,7 +12675,7 @@ snapshots: browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001653 + caniuse-lite: 1.0.30001659 electron-to-chromium: 1.5.4 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -13117,12 +12713,12 @@ snapshots: defu: 6.1.4 dotenv: 16.4.5 giget: 1.2.1 - jiti: 1.21.0 - mlly: 1.7.0 + jiti: 1.21.6 + mlly: 1.7.1 ohash: 1.1.3 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.1.1 + pkg-types: 1.2.0 rc9: 2.1.1 cac@6.7.14: {} @@ -13153,8 +12749,6 @@ snapshots: lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001653: {} - caniuse-lite@1.0.30001659: {} chai@4.5.0: @@ -13213,6 +12807,8 @@ snapshots: dependencies: consola: 3.2.3 + cjs-module-lexer@1.4.1: {} + clean-css@5.3.3: dependencies: source-map: 0.6.1 @@ -13405,13 +13001,14 @@ snapshots: convert-source-map@2.0.0: {} - convex@1.15.0(@clerk/clerk-react@5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + convex@1.16.0(@clerk/clerk-react@5.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - esbuild: 0.17.19 + esbuild: 0.23.0 + globals: 15.9.0 jwt-decode: 3.1.2 prettier: 3.2.5 optionalDependencies: - '@clerk/clerk-react': 5.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/clerk-react': 5.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -13454,9 +13051,9 @@ snapshots: crossws@0.2.4: {} - css-declaration-sorter@7.2.0(postcss@8.4.45): + css-declaration-sorter@7.2.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 css-select@4.3.0: dependencies: @@ -13477,12 +13074,12 @@ snapshots: css-tree@2.2.1: dependencies: mdn-data: 2.0.28 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-tree@2.3.1: dependencies: mdn-data: 2.0.30 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-what@6.1.0: {} @@ -13490,49 +13087,49 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.6(postcss@8.4.45): + cssnano-preset-default@7.0.6(postcss@8.4.47): dependencies: browserslist: 4.23.3 - css-declaration-sorter: 7.2.0(postcss@8.4.45) - cssnano-utils: 5.0.0(postcss@8.4.45) - postcss: 8.4.45 - postcss-calc: 10.0.2(postcss@8.4.45) - postcss-colormin: 7.0.2(postcss@8.4.45) - postcss-convert-values: 7.0.4(postcss@8.4.45) - postcss-discard-comments: 7.0.3(postcss@8.4.45) - postcss-discard-duplicates: 7.0.1(postcss@8.4.45) - postcss-discard-empty: 7.0.0(postcss@8.4.45) - postcss-discard-overridden: 7.0.0(postcss@8.4.45) - postcss-merge-longhand: 7.0.4(postcss@8.4.45) - postcss-merge-rules: 7.0.4(postcss@8.4.45) - postcss-minify-font-values: 7.0.0(postcss@8.4.45) - postcss-minify-gradients: 7.0.0(postcss@8.4.45) - postcss-minify-params: 7.0.2(postcss@8.4.45) - postcss-minify-selectors: 7.0.4(postcss@8.4.45) - postcss-normalize-charset: 7.0.0(postcss@8.4.45) - postcss-normalize-display-values: 7.0.0(postcss@8.4.45) - postcss-normalize-positions: 7.0.0(postcss@8.4.45) - postcss-normalize-repeat-style: 7.0.0(postcss@8.4.45) - postcss-normalize-string: 7.0.0(postcss@8.4.45) - postcss-normalize-timing-functions: 7.0.0(postcss@8.4.45) - postcss-normalize-unicode: 7.0.2(postcss@8.4.45) - postcss-normalize-url: 7.0.0(postcss@8.4.45) - postcss-normalize-whitespace: 7.0.0(postcss@8.4.45) - postcss-ordered-values: 7.0.1(postcss@8.4.45) - postcss-reduce-initial: 7.0.2(postcss@8.4.45) - postcss-reduce-transforms: 7.0.0(postcss@8.4.45) - postcss-svgo: 7.0.1(postcss@8.4.45) - postcss-unique-selectors: 7.0.3(postcss@8.4.45) - - cssnano-utils@5.0.0(postcss@8.4.45): - dependencies: - postcss: 8.4.45 - - cssnano@7.0.6(postcss@8.4.45): - dependencies: - cssnano-preset-default: 7.0.6(postcss@8.4.45) + css-declaration-sorter: 7.2.0(postcss@8.4.47) + cssnano-utils: 5.0.0(postcss@8.4.47) + postcss: 8.4.47 + postcss-calc: 10.0.2(postcss@8.4.47) + postcss-colormin: 7.0.2(postcss@8.4.47) + postcss-convert-values: 7.0.4(postcss@8.4.47) + postcss-discard-comments: 7.0.3(postcss@8.4.47) + postcss-discard-duplicates: 7.0.1(postcss@8.4.47) + postcss-discard-empty: 7.0.0(postcss@8.4.47) + postcss-discard-overridden: 7.0.0(postcss@8.4.47) + postcss-merge-longhand: 7.0.4(postcss@8.4.47) + postcss-merge-rules: 7.0.4(postcss@8.4.47) + postcss-minify-font-values: 7.0.0(postcss@8.4.47) + postcss-minify-gradients: 7.0.0(postcss@8.4.47) + postcss-minify-params: 7.0.2(postcss@8.4.47) + postcss-minify-selectors: 7.0.4(postcss@8.4.47) + postcss-normalize-charset: 7.0.0(postcss@8.4.47) + postcss-normalize-display-values: 7.0.0(postcss@8.4.47) + postcss-normalize-positions: 7.0.0(postcss@8.4.47) + postcss-normalize-repeat-style: 7.0.0(postcss@8.4.47) + postcss-normalize-string: 7.0.0(postcss@8.4.47) + postcss-normalize-timing-functions: 7.0.0(postcss@8.4.47) + postcss-normalize-unicode: 7.0.2(postcss@8.4.47) + postcss-normalize-url: 7.0.0(postcss@8.4.47) + postcss-normalize-whitespace: 7.0.0(postcss@8.4.47) + postcss-ordered-values: 7.0.1(postcss@8.4.47) + postcss-reduce-initial: 7.0.2(postcss@8.4.47) + postcss-reduce-transforms: 7.0.0(postcss@8.4.47) + postcss-svgo: 7.0.1(postcss@8.4.47) + postcss-unique-selectors: 7.0.3(postcss@8.4.47) + + cssnano-utils@5.0.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + + cssnano@7.0.6(postcss@8.4.47): + dependencies: + cssnano-preset-default: 7.0.6(postcss@8.4.47) lilconfig: 3.1.2 - postcss: 8.4.45 + postcss: 8.4.47 csso@5.0.5: dependencies: @@ -13601,10 +13198,6 @@ snapshots: bundle-name: 4.1.0 default-browser-id: 5.0.0 - default-gateway@6.0.3: - dependencies: - execa: 5.1.1 - defaults@1.0.4: dependencies: clone: 1.0.4 @@ -13750,15 +13343,12 @@ snapshots: encodeurl@1.0.2: {} + encodeurl@2.0.0: {} + end-of-stream@1.4.4: dependencies: once: 1.4.0 - enhanced-resolve@5.17.0: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 @@ -13795,31 +13385,6 @@ snapshots: transitivePeerDependencies: - supports-color - esbuild@0.17.19: - optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 - esbuild@0.19.12: optionalDependencies: '@esbuild/aix-ppc64': 0.19.12 @@ -13898,6 +13463,33 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.23.0: + 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@0.23.1: optionalDependencies: '@esbuild/aix-ppc64': 0.23.1 @@ -13937,9 +13529,9 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.9.1(jiti@1.21.6)): + eslint-compat-utils@0.5.1(eslint@9.10.0(jiti@1.21.6)): dependencies: - eslint: 9.9.1(jiti@1.21.6) + eslint: 9.10.0(jiti@1.21.6) semver: 7.6.3 eslint-import-resolver-node@0.3.9: @@ -13950,20 +13542,20 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-es-x@7.8.0(eslint@9.9.1(jiti@1.21.6)): + eslint-plugin-es-x@7.8.0(eslint@9.10.0(jiti@1.21.6)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.0 - eslint: 9.9.1(jiti@1.21.6) - eslint-compat-utils: 0.5.1(eslint@9.9.1(jiti@1.21.6)) + eslint: 9.10.0(jiti@1.21.6) + eslint-compat-utils: 0.5.1(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-import-x@4.1.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): + eslint-plugin-import-x@4.1.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) debug: 4.3.6 doctrine: 3.0.0 - eslint: 9.9.1(jiti@1.21.6) + eslint: 9.10.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.5 is-glob: 4.0.3 @@ -13975,32 +13567,32 @@ snapshots: - supports-color - typescript - eslint-plugin-n@17.10.2(eslint@9.9.1(jiti@1.21.6)): + eslint-plugin-n@17.10.2(eslint@9.10.0(jiti@1.21.6)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) - enhanced-resolve: 5.17.0 - eslint: 9.9.1(jiti@1.21.6) - eslint-plugin-es-x: 7.8.0(eslint@9.9.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) + enhanced-resolve: 5.17.1 + eslint: 9.10.0(jiti@1.21.6) + eslint-plugin-es-x: 7.8.0(eslint@9.10.0(jiti@1.21.6)) get-tsconfig: 4.7.5 globals: 15.9.0 ignore: 5.3.1 minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-react-debug@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint: 9.9.1(jiti@1.21.6) + eslint-plugin-react-debug@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2): + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint: 9.10.0(jiti@1.21.6) string-ts: 2.2.0 ts-pattern: 5.3.1 optionalDependencies: @@ -14008,103 +13600,103 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint: 9.9.1(jiti@1.21.6) + eslint-plugin-react-dom@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2): + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint: 9.10.0(jiti@1.21.6) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - - eslint-plugin-react-hooks-extra@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint: 9.9.1(jiti@1.21.6) + + eslint-plugin-react-hooks-extra@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2): + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint: 9.10.0(jiti@1.21.6) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614(eslint@9.9.1(jiti@1.21.6)): + eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614(eslint@9.10.0(jiti@1.21.6)): dependencies: - eslint: 9.9.1(jiti@1.21.6) + eslint: 9.10.0(jiti@1.21.6) - eslint-plugin-react-naming-convention@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): + eslint-plugin-react-naming-convention@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint: 9.9.1(jiti@1.21.6) + '@eslint-react/ast': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint: 9.10.0(jiti@1.21.6) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-react-web-api@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2): + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) birecord: 0.1.1 - eslint: 9.9.1(jiti@1.21.6) + eslint: 9.10.0(jiti@1.21.6) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/core': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/jsx': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/shared': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/tools': 1.12.3 - '@eslint-react/types': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@eslint-react/var': 1.12.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint: 9.9.1(jiti@1.21.6) - is-immutable-type: 5.0.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-react-x@1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2): + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/core': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint: 9.10.0(jiti@1.21.6) + is-immutable-type: 5.0.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) ts-pattern: 5.3.1 optionalDependencies: typescript: 5.6.2 @@ -14125,13 +13717,14 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.9.1(jiti@1.21.6): + eslint@9.10.0(jiti@1.21.6): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.0 '@eslint/config-array': 0.18.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.9.1 + '@eslint/js': 9.10.0 + '@eslint/plugin-kit': 0.1.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 @@ -14154,7 +13747,6 @@ snapshots: is-glob: 4.0.3 is-path-inside: 3.0.3 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 @@ -14212,18 +13804,6 @@ snapshots: signal-exit: 3.0.7 strip-eof: 1.0.0 - execa@5.1.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - execa@8.0.1: dependencies: cross-spawn: 7.0.3 @@ -14240,34 +13820,34 @@ snapshots: dependencies: homedir-polyfill: 1.0.3 - express@4.19.2: + express@4.21.0: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.2 + body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.6.0 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0 + finalhandler: 1.3.1 fresh: 0.5.2 http-errors: 2.0.0 - merge-descriptors: 1.0.1 + merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.7 + path-to-regexp: 0.1.10 proxy-addr: 2.0.7 - qs: 6.11.0 + qs: 6.13.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.19.0 + serve-static: 1.16.2 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -14335,10 +13915,10 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.2.0: + finalhandler@1.3.1: dependencies: debug: 2.6.9 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 @@ -14416,7 +13996,7 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@11.3.21(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + framer-motion@11.5.4(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: tslib: 2.7.0 optionalDependencies: @@ -14492,8 +14072,6 @@ snapshots: get-stream@3.0.0: {} - get-stream@6.0.1: {} - get-stream@8.0.1: {} get-tsconfig@4.7.5: @@ -14678,18 +14256,7 @@ snapshots: relateurl: 0.2.7 terser: 5.31.1 - html-webpack-plugin@5.6.0(@rspack/core@1.0.4(@swc/helpers@0.5.13))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): - dependencies: - '@types/html-minifier-terser': 6.1.0 - html-minifier-terser: 6.1.0 - lodash: 4.17.21 - pretty-error: 4.0.0 - tapable: 2.2.1 - optionalDependencies: - '@rspack/core': 1.0.4(@swc/helpers@0.5.13) - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) - - html-webpack-plugin@5.6.0(@rspack/core@1.0.4(@swc/helpers@0.5.13))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.0(@rspack/core@1.0.5(@swc/helpers@0.5.13))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -14697,7 +14264,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - '@rspack/core': 1.0.4(@swc/helpers@0.5.13) + '@rspack/core': 1.0.5(@swc/helpers@0.5.13) webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) htmlparser2@6.1.0: @@ -14778,8 +14345,6 @@ snapshots: httpxy@0.1.5: {} - human-signals@2.1.0: {} - human-signals@5.0.0: {} hyperdyperid@1.2.0: {} @@ -14904,10 +14469,10 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-immutable-type@5.0.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): + is-immutable-type@5.0.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - eslint: 9.9.1(jiti@1.21.6) + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint: 9.10.0(jiti@1.21.6) ts-api-utils: 1.3.0(typescript@5.6.2) ts-declaration-location: 1.0.4(typescript@5.6.2) typescript: 5.6.2 @@ -14997,7 +14562,7 @@ snapshots: isarray@1.0.0: {} - isbot@5.1.14: {} + isbot@5.1.17: {} isexe@2.0.0: {} @@ -15026,8 +14591,6 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jiti@1.21.0: {} - jiti@1.21.6: {} jju@1.4.0: {} @@ -15123,7 +14686,7 @@ snapshots: kuler@2.0.0: {} - ky@1.5.0: {} + ky@1.7.2: {} launch-editor@2.8.0: dependencies: @@ -15165,13 +14728,11 @@ snapshots: lilconfig@2.1.0: {} - lilconfig@3.1.1: {} - lilconfig@3.1.2: {} lines-and-columns@1.2.4: {} - lines-and-columns@2.0.4: {} + lines-and-columns@2.0.3: {} linkify-it@5.0.0: dependencies: @@ -15189,8 +14750,8 @@ snapshots: get-port-please: 3.1.2 h3: 1.11.1 http-shutdown: 1.2.2 - jiti: 1.21.0 - mlly: 1.7.0 + jiti: 1.21.6 + mlly: 1.7.1 node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.7.0 @@ -15255,7 +14816,7 @@ snapshots: dependencies: tslib: 2.7.0 - lru-cache@10.2.2: {} + lru-cache@10.4.3: {} lru-cache@4.1.5: dependencies: @@ -15280,8 +14841,8 @@ snapshots: magicast@0.2.11: dependencies: - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 recast: 0.23.4 make-dir@3.1.0: @@ -15330,7 +14891,7 @@ snapshots: meow@12.1.1: {} - merge-descriptors@1.0.1: {} + merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -15412,9 +14973,9 @@ snapshots: mkdist@1.5.7(typescript@5.6.2)(vue-tsc@2.0.29(typescript@5.6.2)): dependencies: - autoprefixer: 10.4.20(postcss@8.4.45) + autoprefixer: 10.4.20(postcss@8.4.47) citty: 0.1.6 - cssnano: 7.0.6(postcss@8.4.45) + cssnano: 7.0.6(postcss@8.4.47) defu: 6.1.4 esbuild: 0.23.1 fast-glob: 3.3.2 @@ -15422,20 +14983,13 @@ snapshots: mlly: 1.7.1 pathe: 1.1.2 pkg-types: 1.2.0 - postcss: 8.4.45 - postcss-nested: 6.2.0(postcss@8.4.45) + postcss: 8.4.47 + postcss-nested: 6.2.0(postcss@8.4.47) semver: 7.6.3 optionalDependencies: typescript: 5.6.2 vue-tsc: 2.0.29(typescript@5.6.2) - mlly@1.7.0: - dependencies: - acorn: 8.12.1 - pathe: 1.1.2 - pkg-types: 1.1.1 - ufo: 1.5.3 - mlly@1.7.1: dependencies: acorn: 8.12.1 @@ -15451,13 +15005,13 @@ snapshots: ms@2.1.3: {} - msw@2.3.5(typescript@5.6.2): + msw@2.4.6(typescript@5.6.2): dependencies: '@bundled-es-modules/cookie': 2.0.0 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 3.1.10 - '@mswjs/interceptors': 0.29.1 + '@inquirer/confirm': 3.2.0 + '@mswjs/interceptors': 0.35.3 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 '@types/statuses': 2.0.5 @@ -15465,7 +15019,7 @@ snapshots: graphql: 16.9.0 headers-polyfill: 4.0.3 is-node-process: 1.2.0 - outvariant: 1.4.2 + outvariant: 1.4.3 path-to-regexp: 6.2.2 strict-event-emitter: 0.5.1 type-fest: 4.23.0 @@ -15500,14 +15054,14 @@ snapshots: dependencies: '@cloudflare/kv-asset-handler': 0.3.2 '@netlify/functions': 2.6.3(@opentelemetry/api@1.8.0) - '@rollup/plugin-alias': 5.1.0(rollup@4.18.0) - '@rollup/plugin-commonjs': 25.0.7(rollup@4.18.0) - '@rollup/plugin-inject': 5.0.5(rollup@4.18.0) - '@rollup/plugin-json': 6.1.0(rollup@4.18.0) - '@rollup/plugin-node-resolve': 15.2.3(rollup@4.18.0) - '@rollup/plugin-replace': 5.0.7(rollup@4.18.0) - '@rollup/plugin-terser': 0.4.4(rollup@4.18.0) - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@rollup/plugin-alias': 5.1.0(rollup@4.21.2) + '@rollup/plugin-commonjs': 25.0.7(rollup@4.21.2) + '@rollup/plugin-inject': 5.0.5(rollup@4.21.2) + '@rollup/plugin-json': 6.1.0(rollup@4.21.2) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.21.2) + '@rollup/plugin-replace': 5.0.7(rollup@4.21.2) + '@rollup/plugin-terser': 0.4.4(rollup@4.21.2) + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) '@types/http-proxy': 1.17.14 '@vercel/nft': 0.26.5 archiver: 7.0.1 @@ -15534,13 +15088,13 @@ snapshots: httpxy: 0.1.5 ioredis: 5.4.1 is-primitive: 3.0.1 - jiti: 1.21.0 + jiti: 1.21.6 klona: 2.0.6 knitwork: 1.1.0 listhen: 1.7.2 magic-string: 0.30.11 mime: 4.0.3 - mlly: 1.7.0 + mlly: 1.7.1 mri: 1.2.0 node-fetch-native: 1.6.4 ofetch: 1.3.4 @@ -15548,21 +15102,21 @@ snapshots: openapi-typescript: 6.7.5 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.1.1 + pkg-types: 1.2.0 pretty-bytes: 6.1.1 radix3: 1.1.2 - rollup: 4.18.0 - rollup-plugin-visualizer: 5.12.0(rollup@4.18.0) + rollup: 4.21.2 + rollup-plugin-visualizer: 5.12.0(rollup@4.21.2) scule: 1.3.0 semver: 7.6.3 serve-placeholder: 2.0.1 - serve-static: 1.15.0 + serve-static: 1.16.2 std-env: 3.7.0 ufo: 1.5.3 uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.9.0 - unimport: 3.7.1(rollup@4.18.0) + unimport: 3.7.1(rollup@4.21.2) unstorage: 1.10.2(ioredis@5.4.1) unwasm: 0.3.9 transitivePeerDependencies: @@ -15672,14 +15226,14 @@ snapshots: nwsapi@2.2.12: {} - nx@19.5.6(@swc/core@1.7.26(@swc/helpers@0.5.13)): + nx@19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.5.6(@swc/core@1.7.26(@swc/helpers@0.5.13)) + '@nrwl/tao': 19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 - axios: 1.7.2 + axios: 1.7.7 chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -15694,7 +15248,7 @@ snapshots: ignore: 5.3.1 jest-diff: 29.7.0 jsonc-parser: 3.2.0 - lines-and-columns: 2.0.4 + lines-and-columns: 2.0.3 minimatch: 9.0.3 node-machine-id: 1.1.12 npm-run-path: 4.0.1 @@ -15710,16 +15264,16 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 19.5.6 - '@nx/nx-darwin-x64': 19.5.6 - '@nx/nx-freebsd-x64': 19.5.6 - '@nx/nx-linux-arm-gnueabihf': 19.5.6 - '@nx/nx-linux-arm64-gnu': 19.5.6 - '@nx/nx-linux-arm64-musl': 19.5.6 - '@nx/nx-linux-x64-gnu': 19.5.6 - '@nx/nx-linux-x64-musl': 19.5.6 - '@nx/nx-win32-arm64-msvc': 19.5.6 - '@nx/nx-win32-x64-msvc': 19.5.6 + '@nx/nx-darwin-arm64': 19.7.3 + '@nx/nx-darwin-x64': 19.7.3 + '@nx/nx-freebsd-x64': 19.7.3 + '@nx/nx-linux-arm-gnueabihf': 19.7.3 + '@nx/nx-linux-arm64-gnu': 19.7.3 + '@nx/nx-linux-arm64-musl': 19.7.3 + '@nx/nx-linux-x64-gnu': 19.7.3 + '@nx/nx-linux-x64-musl': 19.7.3 + '@nx/nx-win32-arm64-msvc': 19.7.3 + '@nx/nx-win32-x64-msvc': 19.7.3 '@swc/core': 1.7.26(@swc/helpers@0.5.13) transitivePeerDependencies: - debug @@ -15838,7 +15392,7 @@ snapshots: os-tmpdir@1.0.2: {} - outvariant@1.4.2: {} + outvariant@1.4.3: {} p-finally@1.0.0: {} @@ -15934,10 +15488,10 @@ snapshots: path-scurry@1.11.1: dependencies: - lru-cache: 10.2.2 + lru-cache: 10.4.3 minipass: 7.1.2 - path-to-regexp@0.1.7: {} + path-to-regexp@0.1.10: {} path-to-regexp@6.2.2: {} @@ -15951,8 +15505,6 @@ snapshots: perfect-debounce@1.0.0: {} - picocolors@1.0.1: {} - picocolors@1.1.0: {} picomatch@2.3.1: {} @@ -15967,253 +15519,207 @@ snapshots: dependencies: find-up: 4.1.0 - pkg-types@1.1.1: - dependencies: - confbox: 0.1.7 - mlly: 1.7.0 - pathe: 1.1.2 - pkg-types@1.2.0: dependencies: confbox: 0.1.7 mlly: 1.7.1 pathe: 1.1.2 - playwright-core@1.46.1: {} + playwright-core@1.47.1: {} - playwright@1.46.1: + playwright@1.47.1: dependencies: - playwright-core: 1.46.1 + playwright-core: 1.47.1 optionalDependencies: fsevents: 2.3.2 possible-typed-array-names@1.0.0: {} - postcss-calc@10.0.2(postcss@8.4.45): + postcss-calc@10.0.2(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.4.45): + postcss-colormin@7.0.2(postcss@8.4.47): dependencies: browserslist: 4.23.3 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.4.45): + postcss-convert-values@7.0.4(postcss@8.4.47): dependencies: browserslist: 4.23.3 - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.3(postcss@8.4.45): + postcss-discard-comments@7.0.3(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-selector-parser: 6.1.2 - postcss-discard-duplicates@7.0.1(postcss@8.4.45): - dependencies: - postcss: 8.4.45 - - postcss-discard-empty@7.0.0(postcss@8.4.45): + postcss-discard-duplicates@7.0.1(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 - postcss-discard-overridden@7.0.0(postcss@8.4.45): + postcss-discard-empty@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 - postcss-import@15.1.0(postcss@8.4.40): + postcss-discard-overridden@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 + postcss: 8.4.47 - postcss-import@15.1.0(postcss@8.4.45): + postcss-import@15.1.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.40): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.40 - - postcss-js@4.0.1(postcss@8.4.45): + postcss-js@4.0.1(postcss@8.4.47): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.45 - - postcss-load-config@4.0.2(postcss@8.4.40): - dependencies: - lilconfig: 3.1.1 - yaml: 2.4.5 - optionalDependencies: - postcss: 8.4.40 + postcss: 8.4.47 - postcss-load-config@4.0.2(postcss@8.4.45): + postcss-load-config@4.0.2(postcss@8.4.47): dependencies: - lilconfig: 3.1.1 + lilconfig: 3.1.2 yaml: 2.4.5 optionalDependencies: - postcss: 8.4.45 + postcss: 8.4.47 - postcss-merge-longhand@7.0.4(postcss@8.4.45): + postcss-merge-longhand@7.0.4(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.4.45) + stylehacks: 7.0.4(postcss@8.4.47) - postcss-merge-rules@7.0.4(postcss@8.4.45): + postcss-merge-rules@7.0.4(postcss@8.4.47): dependencies: browserslist: 4.23.3 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.4.45) - postcss: 8.4.45 + cssnano-utils: 5.0.0(postcss@8.4.47) + postcss: 8.4.47 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@7.0.0(postcss@8.4.45): + postcss-minify-font-values@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.4.45): + postcss-minify-gradients@7.0.0(postcss@8.4.47): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.4.45) - postcss: 8.4.45 + cssnano-utils: 5.0.0(postcss@8.4.47) + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.4.45): + postcss-minify-params@7.0.2(postcss@8.4.47): dependencies: browserslist: 4.23.3 - cssnano-utils: 5.0.0(postcss@8.4.45) - postcss: 8.4.45 + cssnano-utils: 5.0.0(postcss@8.4.47) + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.4(postcss@8.4.45): + postcss-minify-selectors@7.0.4(postcss@8.4.47): dependencies: cssesc: 3.0.0 - postcss: 8.4.45 + postcss: 8.4.47 postcss-selector-parser: 6.1.2 - postcss-nested@6.0.1(postcss@8.4.40): - dependencies: - postcss: 8.4.40 - postcss-selector-parser: 6.0.16 - - postcss-nested@6.0.1(postcss@8.4.45): - dependencies: - postcss: 8.4.45 - postcss-selector-parser: 6.0.16 - - postcss-nested@6.2.0(postcss@8.4.45): + postcss-nested@6.2.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-selector-parser: 6.1.2 - postcss-normalize-charset@7.0.0(postcss@8.4.45): + postcss-normalize-charset@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 - postcss-normalize-display-values@7.0.0(postcss@8.4.45): + postcss-normalize-display-values@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.4.45): + postcss-normalize-positions@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.4.45): + postcss-normalize-repeat-style@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.4.45): + postcss-normalize-string@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.4.45): + postcss-normalize-timing-functions@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.4.45): + postcss-normalize-unicode@7.0.2(postcss@8.4.47): dependencies: browserslist: 4.23.3 - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.4.45): + postcss-normalize-url@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.4.45): + postcss-normalize-whitespace@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.1(postcss@8.4.45): + postcss-ordered-values@7.0.1(postcss@8.4.47): dependencies: - cssnano-utils: 5.0.0(postcss@8.4.45) - postcss: 8.4.45 + cssnano-utils: 5.0.0(postcss@8.4.47) + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.2(postcss@8.4.45): + postcss-reduce-initial@7.0.2(postcss@8.4.47): dependencies: browserslist: 4.23.3 caniuse-api: 3.0.0 - postcss: 8.4.45 + postcss: 8.4.47 - postcss-reduce-transforms@7.0.0(postcss@8.4.45): + postcss-reduce-transforms@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-selector-parser@6.0.16: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.1(postcss@8.4.45): + postcss-svgo@7.0.1(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.3(postcss@8.4.45): + postcss-unique-selectors@7.0.3(postcss@8.4.47): dependencies: - postcss: 8.4.45 + postcss: 8.4.47 postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} - postcss@8.4.40: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - postcss@8.4.45: + postcss@8.4.47: dependencies: nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 + picocolors: 1.1.0 + source-map-js: 1.2.1 prelude-ls@1.2.1: {} @@ -16240,9 +15746,11 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.2.0 - prisma@5.18.0: + prisma@5.19.1: dependencies: - '@prisma/engines': 5.18.0 + '@prisma/engines': 5.19.1 + optionalDependencies: + fsevents: 2.3.3 process-nextick-args@2.0.1: {} @@ -16284,7 +15792,7 @@ snapshots: punycode@2.3.1: {} - qs@6.11.0: + qs@6.13.0: dependencies: side-channel: 1.0.6 @@ -16335,24 +15843,24 @@ snapshots: react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.4(@types/react@18.3.3)(react@18.3.1): + react-remove-scroll-bar@2.3.4(@types/react@18.3.5)(react@18.3.1): dependencies: react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.5)(react@18.3.1) tslib: 2.7.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 - react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1): + react-remove-scroll@2.5.7(@types/react@18.3.5)(react@18.3.1): dependencies: react: 18.3.1 - react-remove-scroll-bar: 2.3.4(@types/react@18.3.3)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) + react-remove-scroll-bar: 2.3.4(@types/react@18.3.5)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.5)(react@18.3.1) tslib: 2.7.0 - use-callback-ref: 1.3.0(@types/react@18.3.3)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) + use-callback-ref: 1.3.0(@types/react@18.3.5)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.5)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 react-router-dom@6.26.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -16366,14 +15874,14 @@ snapshots: '@remix-run/router': 1.19.0 react: 18.3.1 - react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): + react-style-singleton@2.2.1(@types/react@18.3.5)(react@18.3.1): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.3.1 tslib: 2.7.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 react@18.3.1: dependencies: @@ -16521,41 +16029,19 @@ snapshots: magic-string: 0.30.11 rollup: 4.21.2 - rollup-plugin-visualizer@5.12.0(rollup@4.18.0): + rollup-plugin-visualizer@5.12.0(rollup@4.21.2): dependencies: open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rollup: 4.18.0 + rollup: 4.21.2 rollup@3.29.4: optionalDependencies: fsevents: 2.3.3 - rollup@4.18.0: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.18.0 - '@rollup/rollup-android-arm64': 4.18.0 - '@rollup/rollup-darwin-arm64': 4.18.0 - '@rollup/rollup-darwin-x64': 4.18.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 - '@rollup/rollup-linux-arm-musleabihf': 4.18.0 - '@rollup/rollup-linux-arm64-gnu': 4.18.0 - '@rollup/rollup-linux-arm64-musl': 4.18.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 - '@rollup/rollup-linux-riscv64-gnu': 4.18.0 - '@rollup/rollup-linux-s390x-gnu': 4.18.0 - '@rollup/rollup-linux-x64-gnu': 4.18.0 - '@rollup/rollup-linux-x64-musl': 4.18.0 - '@rollup/rollup-win32-arm64-msvc': 4.18.0 - '@rollup/rollup-win32-ia32-msvc': 4.18.0 - '@rollup/rollup-win32-x64-msvc': 4.18.0 - fsevents: 2.3.3 - rollup@4.21.2: dependencies: '@types/estree': 1.0.5 @@ -16642,7 +16128,7 @@ snapshots: semver@7.6.3: {} - send@0.18.0: + send@0.19.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -16680,12 +16166,12 @@ snapshots: dependencies: defu: 6.1.4 - serve-static@1.15.0: + serve-static@1.16.2: dependencies: - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0 + send: 0.19.0 transitivePeerDependencies: - supports-color @@ -16804,7 +16290,7 @@ snapshots: uuid: 8.3.2 websocket-driver: 0.7.4 - source-map-js@1.2.0: {} + source-map-js@1.2.1: {} source-map-support@0.5.21: dependencies: @@ -16907,8 +16393,6 @@ snapshots: strip-eof@1.0.0: {} - strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} strip-indent@3.0.0: @@ -16931,10 +16415,10 @@ snapshots: minimist: 1.2.8 through: 2.3.8 - stylehacks@7.0.4(postcss@8.4.45): + stylehacks@7.0.4(postcss@8.4.47): dependencies: browserslist: 4.23.3 - postcss: 8.4.45 + postcss: 8.4.47 postcss-selector-parser: 6.1.2 sucrase@3.35.0: @@ -16990,12 +16474,6 @@ snapshots: '@swc/counter': 0.1.3 webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) - swc-loader@0.2.6(@swc/core@1.7.6(@swc/helpers@0.5.13))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): - dependencies: - '@swc/core': 1.7.6(@swc/helpers@0.5.13) - '@swc/counter': 0.1.3 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) - swr@2.2.5(react@18.3.1): dependencies: client-only: 0.0.1 @@ -17008,34 +16486,7 @@ snapshots: tailwind-merge@2.5.2: {} - tailwindcss@3.4.10: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.7 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.1 - postcss: 8.4.45 - postcss-import: 15.1.0(postcss@8.4.45) - postcss-js: 4.0.1(postcss@8.4.45) - postcss-load-config: 4.0.2(postcss@8.4.45) - postcss-nested: 6.0.1(postcss@8.4.45) - postcss-selector-parser: 6.0.16 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - tailwindcss@3.4.7: + tailwindcss@3.4.11: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -17045,18 +16496,18 @@ snapshots: fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.0 + jiti: 1.21.6 lilconfig: 2.1.0 micromatch: 4.0.7 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.0.1 - postcss: 8.4.40 - postcss-import: 15.1.0(postcss@8.4.40) - postcss-js: 4.0.1(postcss@8.4.40) - postcss-load-config: 4.0.2(postcss@8.4.40) - postcss-nested: 6.0.1(postcss@8.4.40) - postcss-selector-parser: 6.0.16 + picocolors: 1.1.0 + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47) + postcss-nested: 6.2.0(postcss@8.4.47) + postcss-selector-parser: 6.1.2 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: @@ -17087,18 +16538,6 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - terser-webpack-plugin@5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1) - optionalDependencies: - '@swc/core': 1.7.26(@swc/helpers@0.5.13) - esbuild: 0.23.1 - terser-webpack-plugin@5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -17111,16 +16550,16 @@ snapshots: '@swc/core': 1.7.26(@swc/helpers@0.5.13) esbuild: 0.23.1 - terser-webpack-plugin@5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1) optionalDependencies: - '@swc/core': 1.7.6(@swc/helpers@0.5.13) + '@swc/core': 1.7.26(@swc/helpers@0.5.13) esbuild: 0.23.1 terser@5.31.1: @@ -17206,8 +16645,6 @@ snapshots: minimatch: 10.0.1 typescript: 5.6.2 - ts-expose-internals-conditionally@1.0.0-empty.0: {} - ts-interface-checker@0.1.13: {} ts-pattern@5.3.1: {} @@ -17226,7 +16663,7 @@ snapshots: tslib@2.7.0: {} - tsx@4.19.0: + tsx@4.19.1: dependencies: esbuild: 0.23.1 get-tsconfig: 4.7.5 @@ -17274,11 +16711,11 @@ snapshots: typescript: 5.6.2 yaml: 2.4.5 - typescript-eslint@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): + typescript-eslint@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/parser': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: @@ -17295,7 +16732,7 @@ snapshots: typescript@5.4.5: {} - typescript@5.5.3: {} + typescript@5.6.1-rc: {} typescript@5.6.2: {} @@ -17318,12 +16755,12 @@ snapshots: esbuild: 0.19.12 globby: 13.2.2 hookable: 5.5.3 - jiti: 1.21.0 + jiti: 1.21.6 magic-string: 0.30.11 mkdist: 1.5.7(typescript@5.6.2)(vue-tsc@2.0.29(typescript@5.6.2)) - mlly: 1.7.0 + mlly: 1.7.1 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.2.0 pretty-bytes: 6.1.1 rollup: 3.29.4 rollup-plugin-dts: 6.1.1(rollup@3.29.4)(typescript@5.6.2) @@ -17347,8 +16784,6 @@ snapshots: magic-string: 0.30.11 unplugin: 1.12.2 - undici-types@5.26.5: {} - undici-types@5.28.4: {} undici-types@6.19.8: {} @@ -17369,18 +16804,18 @@ snapshots: unicorn-magic@0.1.0: {} - unimport@3.7.1(rollup@4.18.0): + unimport@3.7.1(rollup@4.21.2): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) acorn: 8.12.1 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 fast-glob: 3.3.2 local-pkg: 0.5.0 magic-string: 0.30.11 - mlly: 1.7.0 + mlly: 1.7.1 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.2.0 scule: 1.3.0 strip-literal: 1.3.0 unplugin: 1.12.2 @@ -17409,7 +16844,7 @@ snapshots: destr: 2.0.3 h3: 1.11.1 listhen: 1.7.2 - lru-cache: 10.2.2 + lru-cache: 10.4.3 mri: 1.2.0 node-fetch-native: 1.6.4 ofetch: 1.3.4 @@ -17429,9 +16864,9 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/standalone': 7.25.6 - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 defu: 6.1.4 - jiti: 1.21.0 + jiti: 1.21.6 mri: 1.2.0 scule: 1.3.0 transitivePeerDependencies: @@ -17441,9 +16876,9 @@ snapshots: dependencies: knitwork: 1.1.0 magic-string: 0.30.11 - mlly: 1.7.0 + mlly: 1.7.1 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.2.0 unplugin: 1.12.2 update-browserslist-db@1.1.0(browserslist@4.23.3): @@ -17467,20 +16902,20 @@ snapshots: urlpattern-polyfill@8.0.2: {} - use-callback-ref@1.3.0(@types/react@18.3.3)(react@18.3.1): + use-callback-ref@1.3.0(@types/react@18.3.5)(react@18.3.1): dependencies: react: 18.3.1 tslib: 2.7.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 - use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): + use-sidecar@1.1.2(@types/react@18.3.5)(react@18.3.1): dependencies: detect-node-es: 1.1.0 react: 18.3.1 tslib: 2.7.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.5 use-sync-external-store@1.2.2(react@18.3.1): dependencies: @@ -17504,9 +16939,7 @@ snapshots: v8flags@4.0.1: {} - valibot@0.36.0: {} - - valibot@0.37.0(typescript@5.6.2): + valibot@0.41.0(typescript@5.6.2): optionalDependencies: typescript: 5.6.2 @@ -17514,11 +16947,11 @@ snapshots: vary@1.1.2: {} - vinxi@0.4.2(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1): + vinxi@0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1): dependencies: '@babel/core': 7.25.2 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2) '@types/micromatch': 4.0.7 '@vinxi/listhen': 1.5.6 boxen: 7.1.1 @@ -17543,12 +16976,12 @@ snapshots: radix3: 1.1.2 resolve: 1.22.8 serve-placeholder: 2.0.1 - serve-static: 1.15.0 + serve-static: 1.16.2 ufo: 1.5.3 unctx: 2.3.1 unenv: 1.9.0 unstorage: 1.10.2(ioredis@5.4.1) - vite: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + vite: 5.4.5(@types/node@22.5.4)(terser@5.31.1) zod: 3.23.8 transitivePeerDependencies: - '@azure/app-configuration' @@ -17574,6 +17007,7 @@ snapshots: - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color @@ -17587,7 +17021,7 @@ snapshots: debug: 4.3.6 pathe: 1.1.2 picocolors: 1.1.0 - vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) + vite: 5.4.5(@types/node@22.5.4)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - less @@ -17599,12 +17033,12 @@ snapshots: - supports-color - terser - vite-plugin-babel@1.2.0(@babel/core@7.25.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)): + vite-plugin-babel@1.2.0(@babel/core@7.25.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)): dependencies: '@babel/core': 7.25.2 - vite: 5.3.5(@types/node@22.5.4)(terser@5.31.1) + vite: 5.4.5(@types/node@22.5.4)(terser@5.31.1) - vite-plugin-dts@4.0.3(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)): + vite-plugin-dts@4.0.3(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)): dependencies: '@microsoft/api-extractor': 7.47.4(@types/node@22.5.4) '@rollup/pluginutils': 5.1.0(rollup@4.21.2) @@ -17618,73 +17052,31 @@ snapshots: typescript: 5.6.2 vue-tsc: 2.0.29(typescript@5.6.2) optionalDependencies: - vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) + vite: 5.4.5(@types/node@22.5.4)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-externalize-deps@0.8.0(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)): - dependencies: - vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) - - vite-tsconfig-paths@5.0.1(typescript@5.6.2)(vite@5.3.5(@types/node@22.5.4)(terser@5.31.1)): - dependencies: - debug: 4.3.6 - globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.6.2) - optionalDependencies: - vite: 5.3.5(@types/node@22.5.4)(terser@5.31.1) - transitivePeerDependencies: - - supports-color - - typescript - - vite-tsconfig-paths@5.0.1(typescript@5.6.2)(vite@5.4.3(@types/node@22.5.4)(terser@5.31.1)): + vite-plugin-externalize-deps@0.8.0(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)): dependencies: - debug: 4.3.6 - globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.6.2) - optionalDependencies: - vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) - transitivePeerDependencies: - - supports-color - - typescript + vite: 5.4.5(@types/node@22.5.4)(terser@5.31.1) - vite-tsconfig-paths@5.0.1(typescript@5.6.2)(vite@5.4.4(@types/node@22.5.4)(terser@5.31.1)): + vite-tsconfig-paths@5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)): dependencies: debug: 4.3.6 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.6.2) optionalDependencies: - vite: 5.4.4(@types/node@22.5.4)(terser@5.31.1) + vite: 5.4.5(@types/node@22.5.4)(terser@5.31.1) transitivePeerDependencies: - supports-color - typescript - vite@5.3.5(@types/node@22.5.4)(terser@5.31.1): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.40 - rollup: 4.18.0 - optionalDependencies: - '@types/node': 22.5.4 - fsevents: 2.3.3 - terser: 5.31.1 - - vite@5.4.3(@types/node@22.5.4)(terser@5.31.1): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.45 - rollup: 4.21.2 - optionalDependencies: - '@types/node': 22.5.4 - fsevents: 2.3.3 - terser: 5.31.1 - - vite@5.4.4(@types/node@22.5.4)(terser@5.31.1): + vite@5.4.5(@types/node@22.5.4)(terser@5.31.1): dependencies: esbuild: 0.21.5 - postcss: 8.4.45 + postcss: 8.4.47 rollup: 4.21.2 optionalDependencies: '@types/node': 22.5.4 @@ -17710,7 +17102,7 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.4.3(@types/node@22.5.4)(terser@5.31.1) + vite: 5.4.5(@types/node@22.5.4)(terser@5.31.1) vite-node: 1.6.0(@types/node@22.5.4)(terser@5.31.1) why-is-node-running: 2.3.0 optionalDependencies: @@ -17758,25 +17150,6 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0): - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) - colorette: 2.0.20 - commander: 10.0.1 - cross-spawn: 7.0.3 - envinfo: 7.13.0 - fastest-levenshtein: 1.0.16 - import-local: 3.1.0 - interpret: 3.1.1 - rechoir: 0.8.0 - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) - webpack-merge: 5.10.0 - optionalDependencies: - webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) - webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0): dependencies: '@discoveryjs/json-ext': 0.5.7 @@ -17796,17 +17169,6 @@ snapshots: optionalDependencies: webpack-dev-server: 5.1.0(webpack-cli@5.1.4)(webpack@5.94.0) - webpack-dev-middleware@7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): - dependencies: - colorette: 2.0.20 - memfs: 4.9.3 - mime-types: 2.1.35 - on-finished: 2.4.1 - range-parser: 1.2.1 - schema-utils: 4.2.0 - optionalDependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) - webpack-dev-middleware@7.4.2(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)): dependencies: colorette: 2.0.20 @@ -17818,47 +17180,6 @@ snapshots: optionalDependencies: webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) - webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0): - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.5 - '@types/sockjs': 0.3.36 - '@types/ws': 8.5.10 - ansi-html-community: 0.0.8 - bonjour-service: 1.2.1 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.7.4 - connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 - express: 4.19.2 - graceful-fs: 4.2.11 - html-entities: 2.5.2 - http-proxy-middleware: 2.0.6(@types/express@4.17.21) - ipaddr.js: 2.2.0 - launch-editor: 2.8.0 - open: 10.1.0 - p-retry: 6.2.0 - rimraf: 5.0.10 - schema-utils: 4.2.0 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 7.2.1(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) - ws: 8.18.0 - optionalDependencies: - webpack: 5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.94.0): dependencies: '@types/bonjour': 3.5.13 @@ -17874,7 +17195,7 @@ snapshots: colorette: 2.0.20 compression: 1.7.4 connect-history-api-fallback: 2.0.0 - express: 4.19.2 + express: 4.21.0 graceful-fs: 4.2.11 html-entities: 2.5.2 http-proxy-middleware: 2.0.6(@types/express@4.17.21) @@ -17908,40 +17229,8 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.93.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.23.3 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.0 - es-module-lexer: 1.5.4 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)) - watchpack: 2.4.1 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4): + webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1): dependencies: - '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 @@ -17950,7 +17239,7 @@ snapshots: acorn-import-attributes: 1.9.5(acorn@8.12.1) browserslist: 4.23.3 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.0 + enhanced-resolve: 5.17.1 es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 @@ -17962,11 +17251,9 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.93.0(@swc/core@1.7.6(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)) watchpack: 2.4.1 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - '@swc/core' - esbuild From 1519f29f0b01ccc6e7f784e46f0b2474369ed43d Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sat, 14 Sep 2024 23:57:19 +0200 Subject: [PATCH 113/154] chore: fix jsdoc --- packages/react-router/src/router.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index f63da80295..c83e35c19d 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -306,7 +306,7 @@ export interface RouterOptions< */ notFoundMode?: 'root' | 'fuzzy' /** - * The default `gcTime` a route should use if no + * The default `gcTime` a route should use if no gcTime is provided. * * @default 1_800_000 `(30 minutes)` * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/RouterOptionsType#defaultgctime-property) @@ -322,7 +322,6 @@ export interface RouterOptions< */ caseSensitive?: boolean /** - * __Required*__ * * The route tree that will be used to configure the router instance. * From bca91371ec2894b55ab665abb03a1e6b86540a2f Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Sat, 14 Sep 2024 23:57:34 +0200 Subject: [PATCH 114/154] fix(start): do not resolve paths again --- packages/start/src/config/index.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/start/src/config/index.ts b/packages/start/src/config/index.ts index 8c42a3f708..10c6e33f54 100644 --- a/packages/start/src/config/index.ts +++ b/packages/start/src/config/index.ts @@ -491,10 +491,7 @@ function tsrRoutesManifest(opts: { } catch (err) { console.error(err) throw new Error( - `Could not find the production client vite manifest at '${path.resolve( - config.build.outDir, - '../client/_build/.vite/manifest.json', - )}'!`, + `Could not find the production client vite manifest at '${clientViteManifestPath}'!`, ) } @@ -505,9 +502,7 @@ function tsrRoutesManifest(opts: { routeTreeContent = readFileSync(routeTreePath, 'utf-8') } catch (err) { throw new Error( - `Could not find the generated route tree at '${path.resolve( - opts.tsrConfig.generatedRouteTree, - )}'!`, + `Could not find the generated route tree at '${routeTreePath}'!`, ) } From 71edc6a0132b38d1c09e2875932540a2e8ff132a Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sat, 14 Sep 2024 22:04:37 +0000 Subject: [PATCH 115/154] release: v1.57.14 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic-virtual-file-based/package.json | 6 +++--- .../basic-virtual-inside-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-supabase-basic/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start-vite-plugin/package.json | 2 +- packages/start/package.json | 2 +- 50 files changed, 128 insertions(+), 128 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index ee9edd22b4..b217b5a104 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 6bc167dbd5..32e7d61df7 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index e4df16a433..4a2fd28187 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index ec14f41ad7..11085de27f 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 783bb228f5..6c0339d7ec 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,9 +12,9 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 7062bdbe98..80f15df790 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index e0cdf7ac15..329bf57898 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", - "@tanstack/start": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", + "@tanstack/start": "^1.57.14", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 45cdca513d..5d7e970e29 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", - "@tanstack/start": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", + "@tanstack/start": "^1.57.14", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index a5c1a68bf8..0ca0797973 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 7dd7db2fd0..1ec056b723 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 4d22782442..ea51f3602b 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index e18710c249..6c257e60cb 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index c14076181c..1c3a521479 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 2e3fa0a5e2..cfd528990c 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 0e07cba1de..d23d3ccf0e 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index f98754a230..e8d1e3531b 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index e4a74dbf82..3e1bdb5fb7 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index e222f6fbb8..ff822754f6 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 11d511c188..ff4bb1390c 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 32bdc132f7..16c717b7f6 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 8fae16ccc2..30bdff2789 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.4", "@rsbuild/plugin-react": "1.0.2", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/router-plugin": "^1.57.14", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.6.2" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 0393e69478..046eada577 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.26", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/router-plugin": "^1.57.14", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index ce7d7f2cd5..5b07e6b171 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 9f7c633a08..d4c64f4fac 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", + "@tanstack/react-router": "^1.57.14", "@tanstack/react-virtual": "^3.10.7", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/router-devtools": "^1.57.14", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index a85cf8148b..732da23cd8 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", - "@tanstack/router-zod-adapter": "^1.57.13", - "@tanstack/router-valibot-adapter": "^1.57.13", - "@tanstack/router-arktype-adapter": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", + "@tanstack/router-zod-adapter": "^1.57.14", + "@tanstack/router-valibot-adapter": "^1.57.14", + "@tanstack/router-arktype-adapter": "^1.57.14", "@tanstack/react-query": "^5.56.2", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 8f5497fb93..d42d6772a1 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.19.1", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", - "@tanstack/start": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", + "@tanstack/start": "^1.57.14", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 388c504345..3168576cd2 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/start": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/start": "^1.57.14", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.3" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 5d134b1e7d..2302455b1c 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.13", - "@tanstack/react-router-with-query": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", - "@tanstack/start": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/react-router-with-query": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", + "@tanstack/start": "^1.57.14", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index ce3c122143..d19a6ec4d8 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.25.4", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", - "@tanstack/start": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", + "@tanstack/start": "^1.57.14", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.3" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 0ba5275c8d..ed520584ea 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", - "@tanstack/start": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", + "@tanstack/start": "^1.57.14", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 57c6b7d5fe..20db9296b9 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.4.1", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", - "@tanstack/start": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", + "@tanstack/start": "^1.57.14", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 1fd45c686f..9037469dc6 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.13", - "@tanstack/react-router-with-query": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", - "@tanstack/start": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/react-router-with-query": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", + "@tanstack/start": "^1.57.14", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index ec58062c58..7e47d9702a 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.4", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/start": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/start": "^1.57.14", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 7cc21186b5..d9921168ef 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.13", - "@tanstack/react-router-with-query": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", - "@tanstack/start": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/react-router-with-query": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", + "@tanstack/start": "^1.57.14", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "ky": "^1.7.2", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 6c9cc9bf6b..4a931faf27 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", "redaxios": "^0.5.1", "framer-motion": "^11.5.4", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 2c8898ebb5..ecf5fee829 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", "@trpc/client": "11.0.0-rc.502", "@trpc/react-query": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index b7c232757e..fcee822f17 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.57.13", - "@tanstack/router-devtools": "^1.57.13", - "@tanstack/router-plugin": "^1.57.13", + "@tanstack/react-router": "^1.57.14", + "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-plugin": "^1.57.14", "@trpc/client": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index c2a1f5203e..2633789835 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.13", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 3d1cb7dbd7..4c16550e15 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.57.13", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index dfcdf46488..95138b5e12 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.57.13", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index e5391c25d0..44bc31669b 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.57.13", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 4205333a5a..db3d4f2190 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.57.13", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index f8be49846e..5b02293a40 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.57.13", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 28cd3e1534..772a61c1b3 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.57.13", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index f93dadb25b..3c721b5082 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.57.13", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 9f05ddf296..8900567fd4 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.57.13", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index cd0d0bbd19..e451a3762f 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.57.13", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 60a885f1c3..0f5ad473b1 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.57.13", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start-vite-plugin/package.json b/packages/start-vite-plugin/package.json index e712918e80..5055a33e62 100644 --- a/packages/start-vite-plugin/package.json +++ b/packages/start-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start-vite-plugin", - "version": "1.57.6", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 5327032c54..cf9c6cc849 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.13", + "version": "1.57.14", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 02f4e9a3ddd1e0f2769bda52907951e0f79e72eb Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Sun, 15 Sep 2024 12:56:54 +1200 Subject: [PATCH 116/154] docs(start): correctly import the redirect fn (#2338) --- docs/framework/react/start/server-functions.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/framework/react/start/server-functions.md b/docs/framework/react/start/server-functions.md index 1fc5de3648..461c165ad6 100644 --- a/docs/framework/react/start/server-functions.md +++ b/docs/framework/react/start/server-functions.md @@ -343,10 +343,11 @@ Server functions can throw a `redirect` error to redirect the user to a differen - During SSR, redirects are handled by sending a 302 response to the client with the new location - On the client, redirects are handled by the router automatically from within a route lifecycle or a component that uses the `useServerFn` hook. If you call a server function from anywhere else, redirects will not be handled automatically. -To throw a redirect, you can use the `redirect` function exported from the `@tanstack/start` package: +To throw a redirect, you can use the `redirect` function exported from the `@tanstack/react-router` package: ```tsx -import { createServerFn, redirect } from '@tanstack/start' +import { redirect } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' export const doStuff = createServerFn('GET', async () => { // Redirect the user to the home page @@ -365,7 +366,8 @@ Redirects can utilize all of the same options as `router.navigate`, `useNavigate Redirects can also set the status code of the response by passing a `status` option: ```tsx -import { createServerFn, redirect } from '@tanstack/start' +import { redirect } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' export const doStuff = createServerFn('GET', async () => { // Redirect the user to the home page with a 301 status code @@ -383,7 +385,8 @@ export const doStuff = createServerFn('GET', async () => { You can also set custom headers on a redirect by passing a `headers` option: ```tsx -import { createServerFn, redirect } from '@tanstack/start' +import { redirect } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' export const doStuff = createServerFn('GET', async () => { // Redirect the user to the home page with a custom header From 7783678ae2490b30dc7fb7b172809c052857fbde Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Sun, 15 Sep 2024 13:26:33 +1200 Subject: [PATCH 117/154] fix(router-generator): do not allow "_" as a `routeFileIgnorePrefix` (#2339) * fix(router-generator): do not allow "_" as a `routeFIleIgnorePrefix` * fix(router-generator): prompt the user if the rootRoute is undefined --- packages/router-generator/src/config.ts | 10 ++++++++++ packages/router-generator/src/generator.ts | 7 ++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/router-generator/src/config.ts b/packages/router-generator/src/config.ts index b39fc63896..9a6c562f03 100644 --- a/packages/router-generator/src/config.ts +++ b/packages/router-generator/src/config.ts @@ -119,5 +119,15 @@ ERROR: The "experimental.enableCodeSplitting" flag has been made stable and is n `The "indexToken" and "routeToken" options must be different.`, ) } + + if ( + config.routeFileIgnorePrefix && + config.routeFileIgnorePrefix.trim() === '_' + ) { + throw new Error( + `The "routeFileIgnorePrefix" cannot be an underscore ("_"). This is a reserved character used to denote a pathless route. Please use a different prefix.`, + ) + } + return config } diff --git a/packages/router-generator/src/generator.ts b/packages/router-generator/src/generator.ts index ff975c1fbb..f2deeda789 100644 --- a/packages/router-generator/src/generator.ts +++ b/packages/router-generator/src/generator.ts @@ -80,8 +80,13 @@ export async function generator(config: Config) { const { rootRouteNode, routeNodes: beforeRouteNodes } = getRouteNodesResult if (rootRouteNode === undefined) { - throw new Error(`rootRouteNode must not be undefined`) + let errorMessage = `rootRouteNode must not be undefined. Make sure you've added your root route into the route-tree.` + if (!config.virtualRouteConfig) { + errorMessage += `\nMake sure that you add a "${rootPathId}.${config.disableTypes ? 'js' : 'tsx'}" file to your routes directory.\nAdd the file in: "${config.routesDirectory}/${rootPathId}.${config.disableTypes ? 'js' : 'tsx'}"` + } + throw new Error(errorMessage) } + const preRouteNodes = multiSortBy(beforeRouteNodes, [ (d) => (d.routePath === '/' ? -1 : 1), (d) => d.routePath?.split('/').length, From b604f07c6e793f4dc2fcfae3411d2dec74c4a677 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sun, 15 Sep 2024 01:28:02 +0000 Subject: [PATCH 118/154] release: v1.57.15 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic-virtual-file-based/package.json | 6 +++--- .../basic-virtual-inside-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-supabase-basic/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 49 files changed, 127 insertions(+), 127 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index b217b5a104..4a22a0f26a 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 32e7d61df7..79f2e0de0f 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 4a2fd28187..53249aefad 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 11085de27f..ab35791041 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 6c0339d7ec..64ad1632bb 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,9 +12,9 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 80f15df790..cde4471ced 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 329bf57898..00b2ed604d 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", - "@tanstack/start": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 5d7e970e29..ae4c393626 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", - "@tanstack/start": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 0ca0797973..0d997fe7a2 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,9 +10,9 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 1ec056b723..466cf0e2f1 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index ea51f3602b..5679a9369d 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 6c257e60cb..ba89c28696 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 1c3a521479..37e397daed 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index cfd528990c..c9bc6d3dca 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index d23d3ccf0e..1c94826c1a 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index e8d1e3531b..6baaa2b860 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 3e1bdb5fb7..36a68cb71e 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index ff822754f6..faba8256ee 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index ff4bb1390c..e2a7f6ca05 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 16c717b7f6..24f62effbe 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 30bdff2789..a90005063f 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.4", "@rsbuild/plugin-react": "1.0.2", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/router-plugin": "^1.57.15", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.6.2" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 046eada577..3a678dd7db 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.26", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/router-plugin": "^1.57.15", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 5b07e6b171..4ca0a5a469 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index d4c64f4fac..776d204912 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", + "@tanstack/react-router": "^1.57.15", "@tanstack/react-virtual": "^3.10.7", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/router-devtools": "^1.57.15", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 732da23cd8..e5cd82e7ab 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", - "@tanstack/router-zod-adapter": "^1.57.14", - "@tanstack/router-valibot-adapter": "^1.57.14", - "@tanstack/router-arktype-adapter": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-zod-adapter": "^1.57.15", + "@tanstack/router-valibot-adapter": "^1.57.15", + "@tanstack/router-arktype-adapter": "^1.57.15", "@tanstack/react-query": "^5.56.2", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index d42d6772a1..d759c7af6c 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.19.1", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", - "@tanstack/start": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 3168576cd2..085cf636a5 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/start": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/start": "^1.57.15", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.3" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 2302455b1c..337c6d9cde 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.14", - "@tanstack/react-router-with-query": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", - "@tanstack/start": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/react-router-with-query": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index d19a6ec4d8..2a62d7db12 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.25.4", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", - "@tanstack/start": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.3" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index ed520584ea..89483f2862 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", - "@tanstack/start": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 20db9296b9..aa208cac91 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.4.1", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", - "@tanstack/start": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 9037469dc6..ecd636c9b8 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.14", - "@tanstack/react-router-with-query": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", - "@tanstack/start": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/react-router-with-query": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 7e47d9702a..f180b34556 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.4", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/start": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/start": "^1.57.15", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index d9921168ef..487ffa3182 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.14", - "@tanstack/react-router-with-query": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", - "@tanstack/start": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/react-router-with-query": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "ky": "^1.7.2", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 4a931faf27..480d5f7b0e 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", "redaxios": "^0.5.1", "framer-motion": "^11.5.4", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index ecf5fee829..c85238b82e 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", "@trpc/client": "11.0.0-rc.502", "@trpc/react-query": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index fcee822f17..b0e6e15fea 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.57.14", - "@tanstack/router-devtools": "^1.57.14", - "@tanstack/router-plugin": "^1.57.14", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", "@trpc/client": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 2633789835..e5b3e6baf1 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.14", + "version": "1.57.15", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 4c16550e15..36476c1067 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.57.14", + "version": "1.57.15", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 95138b5e12..3317b9ace9 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.57.14", + "version": "1.57.15", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 44bc31669b..1d06770bc5 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.57.14", + "version": "1.57.15", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index db3d4f2190..5d6eb1df1c 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.57.14", + "version": "1.57.15", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 5b02293a40..a2d009b7b3 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.57.14", + "version": "1.57.15", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 772a61c1b3..82fb4c861d 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.57.14", + "version": "1.57.15", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 3c721b5082..f87ed57367 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.57.14", + "version": "1.57.15", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 8900567fd4..f2254abf05 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.57.14", + "version": "1.57.15", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index e451a3762f..5987be2130 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.57.14", + "version": "1.57.15", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 0f5ad473b1..847fc67bd5 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.57.14", + "version": "1.57.15", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index cf9c6cc849..c6b06622a0 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.14", + "version": "1.57.15", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From e8a968453fa053719a45dd023a1ff8fd531e3bcf Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Sun, 15 Sep 2024 14:15:59 +1200 Subject: [PATCH 119/154] chore: correctly set the typescript55 version to 5.5.2 (#2340) * chore: correctly set the typescript test version to 5.5.2 * docs(router): callout the typescript support policy * docs: correction its last 5 versions --- docs/framework/react/installation.md | 4 ++- package.json | 2 +- pnpm-lock.yaml | 39 ++++++++++++++++------------ 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/docs/framework/react/installation.md b/docs/framework/react/installation.md index c092a9fc83..4da39e2fb6 100644 --- a/docs/framework/react/installation.md +++ b/docs/framework/react/installation.md @@ -20,4 +20,6 @@ TanStack Router is currently only compatible with React and ReactDOM. If you wou - React v18.x.x - ReactDOM v18.x.x -- TypeScript >= v5.1.x (TypeScript is optional, but recommended) +- TypeScript >= v5.2.x (TypeScript is optional, but recommended) + - We aim to support the last five minor versions of TypeScript. If you are using an older version, you may run into issues. Please upgrade to the latest version of TypeScript to ensure compatibility. + - We may drop support for older versions of TypeScript, outside of the range mentioned above, without warning in a minor or patch release. diff --git a/package.json b/package.json index 13b3417713..f0199f1a4f 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "typescript52": "npm:typescript@5.2", "typescript53": "npm:typescript@5.3", "typescript54": "npm:typescript@5.4", - "typescript55": "npm:typescript@5.6.2", + "typescript55": "npm:typescript@5.5.2", "vite": "^5.4.5", "vitest": "^1.6.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 853000538f..8ec5dfb326 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,7 +64,7 @@ importers: version: 25.0.0 nx: specifier: ^19.7.3 - version: 19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)) + version: 19.7.3(@swc/core@1.7.26) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -99,8 +99,8 @@ importers: specifier: npm:typescript@5.4 version: typescript@5.4.5 typescript55: - specifier: npm:typescript@5.6.2 - version: typescript@5.6.2 + specifier: npm:typescript@5.5.2 + version: typescript@5.5.2 vite: specifier: ^5.4.5 version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) @@ -2234,7 +2234,7 @@ importers: version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1) + version: 5.94.0(@swc/core@1.7.26)(esbuild@0.23.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -9109,6 +9109,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.5.2: + resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.6.1-rc: resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} engines: {node: '>=14.17'} @@ -10803,9 +10808,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13))': + '@nrwl/tao@19.7.3(@swc/core@1.7.26)': dependencies: - nx: 19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)) + nx: 19.7.3(@swc/core@1.7.26) tslib: 2.7.0 transitivePeerDependencies: - '@swc-node/register' @@ -15226,10 +15231,10 @@ snapshots: nwsapi@2.2.12: {} - nx@19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)): + nx@19.7.3(@swc/core@1.7.26): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)) + '@nrwl/tao': 19.7.3(@swc/core@1.7.26) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -16550,14 +16555,14 @@ snapshots: '@swc/core': 1.7.26(@swc/helpers@0.5.13) esbuild: 0.23.1 - terser-webpack-plugin@5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.26)(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26)(esbuild@0.23.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1) + webpack: 5.94.0(@swc/core@1.7.26)(esbuild@0.23.1) optionalDependencies: '@swc/core': 1.7.26(@swc/helpers@0.5.13) esbuild: 0.23.1 @@ -16732,6 +16737,8 @@ snapshots: typescript@5.4.5: {} + typescript@5.5.2: {} + typescript@5.6.1-rc: {} typescript@5.6.2: {} @@ -17229,7 +17236,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1): + webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4): dependencies: '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 @@ -17251,15 +17258,17 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4): + webpack@5.94.0(@swc/core@1.7.26)(esbuild@0.23.1): dependencies: '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 @@ -17281,11 +17290,9 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26)(esbuild@0.23.1)) watchpack: 2.4.1 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) transitivePeerDependencies: - '@swc/core' - esbuild From 474234e0721505f9c2bd4d83b1d580f1f9680b0f Mon Sep 17 00:00:00 2001 From: Em Snook Date: Sun, 15 Sep 2024 13:29:48 +0530 Subject: [PATCH 120/154] docs(router): fix typos in the overview guide (#2343) --- docs/framework/react/overview.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/framework/react/overview.md b/docs/framework/react/overview.md index db426cb221..ddfd941218 100644 --- a/docs/framework/react/overview.md +++ b/docs/framework/react/overview.md @@ -29,10 +29,10 @@ Using a router to build applications is widely regarded as a must-have and is us To answer this question, we need to look at the other options in the space. There are many if you look hard enough, but in my experience, only a couple are worth exploring seriously: -- **Next.js** - Widely regarded as the de facto framework for starting a new React project, it’s laser focused on performance, workflow, and bleeding edge technology. It’s APIs and abstractions are powerful, but can sometimes come across as non-standard. It's extremely fast growth and adoption in the industry has resulted in a featured packed experience, but not at the expense of feeling overwhelming and sometimes bloated. +- **Next.js** - Widely regarded as the de facto framework for starting a new React project, it’s laser focused on performance, workflow, and bleeding edge technology. Its APIs and abstractions are powerful, but can sometimes come across as non-standard. Its extremely fast growth and adoption in the industry has resulted in a featured packed experience, but not at the expense of feeling overwhelming and sometimes bloated. - **Remix / React Router** - A full-stack framework based on the historically successful React Router offers a similarly powerful developer and user experience, with APIs and vision based firmly on web standards like Request/Response and a focus on running anywhere JS can run. Many of its APIs and abstractions are wonderfully designed and were inspiration for more than a few TanStack Router APIs. That said, its rigid design, bolted-on type safety and sometimes strict over-adherence to platform APIs can leave some developers wanting more. -Both of these frameworks (and their routers) are great, and I can personally attest that both are very good solutions for build React applications. My experience has also taught me that these solutions could also be much better, especially around the actual routing APIs that are available to developers to make their apps faster, easier, and more enjoyable to work with. +Both of these frameworks (and their routers) are great, and I can personally attest that both are very good solutions for building React applications. My experience has also taught me that these solutions could also be much better, especially around the actual routing APIs that are available to developers to make their apps faster, easier, and more enjoyable to work with. It's probably no surprise at this point that picking a router is so important that it is often tied 1-to-1 with your choice of framework, since most frameworks rely on a specific router. @@ -126,7 +126,7 @@ TanStack Router is designed with a flexible and powerful data loading API that m ## Inherited Route Context -TanStack Router's router and route context is a powerful feature that allows you to define context that is specific to a route which is then inherited by all child routes. Even the router and root route's themselves can provide context. Context can be built up both synchronously and asynchronously, and can be used to share data, configuration, or even functions between routes and route configurations. This is especially useful for scenarios like: +TanStack Router's router and route context is a powerful feature that allows you to define context that is specific to a route which is then inherited by all child routes. Even the router and root routes themselves can provide context. Context can be built up both synchronously and asynchronously, and can be used to share data, configuration, or even functions between routes and route configurations. This is especially useful for scenarios like: - Authentication and Authorization - Hybrid SSR/CSR data fetching and preloading From e13a9e609d8924f0269c3ac786f67446d4007961 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 04:46:20 +0000 Subject: [PATCH 121/154] chore(deps): update all non-major dependencies (#2348) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../search-validator-adapters/package.json | 4 +- .../react/start-convex-trellaux/package.json | 2 +- examples/react/start-trellaux/package.json | 2 +- package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- pnpm-lock.yaml | 107 ++++++++---------- 7 files changed, 57 insertions(+), 64 deletions(-) diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index e5cd82e7ab..8c483970ea 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -19,8 +19,8 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "zod": "^3.23.8", - "valibot": "^0.41.0", - "arktype": "^2.0.0-rc.7" + "valibot": "^0.42.0", + "arktype": "^2.0.0-rc.8" }, "devDependencies": { "@types/react": "^18.2.47", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index ecd636c9b8..7c8ecb86f1 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -26,7 +26,7 @@ "convex": "^1.16.0", "isbot": "^5.1.17", "ky": "^1.7.2", - "msw": "^2.4.6", + "msw": "^2.4.7", "react": "^18.3.1", "react-dom": "^18.3.1", "react-hot-toast": "^2.4.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 487ffa3182..82144c7893 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -21,7 +21,7 @@ "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "ky": "^1.7.2", - "msw": "^2.4.6", + "msw": "^2.4.7", "react": "^18.3.1", "react-dom": "^18.3.1", "react-hot-toast": "^2.4.1", diff --git a/package.json b/package.json index f0199f1a4f..13b3417713 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "typescript52": "npm:typescript@5.2", "typescript53": "npm:typescript@5.3", "typescript54": "npm:typescript@5.4", - "typescript55": "npm:typescript@5.5.2", + "typescript55": "npm:typescript@5.6.2", "vite": "^5.4.5", "vitest": "^1.6.0" }, diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 1d06770bc5..5a58b06e0a 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -67,7 +67,7 @@ "@testing-library/jest-dom": "^6.5.0", "@testing-library/react": "^16.0.1", "@tanstack/react-router": "workspace:*", - "arktype": "^2.0.0-rc.7" + "arktype": "^2.0.0-rc.8" }, "peerDependencies": { "arktype": ">=2.0.0-beta <3", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index f2254abf05..c16d0a74e5 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -67,7 +67,7 @@ "@testing-library/jest-dom": "^6.5.0", "@testing-library/react": "^16.0.1", "@tanstack/react-router": "workspace:*", - "valibot": "^0.41.0" + "valibot": "^0.42.0" }, "peerDependencies": { "valibot": ">=0.36.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8ec5dfb326..12ce32ad89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,7 +64,7 @@ importers: version: 25.0.0 nx: specifier: ^19.7.3 - version: 19.7.3(@swc/core@1.7.26) + version: 19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -99,8 +99,8 @@ importers: specifier: npm:typescript@5.4 version: typescript@5.4.5 typescript55: - specifier: npm:typescript@5.5.2 - version: typescript@5.5.2 + specifier: npm:typescript@5.6.2 + version: typescript@5.6.2 vite: specifier: ^5.4.5 version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) @@ -1134,8 +1134,8 @@ importers: specifier: workspace:* version: link:../../../packages/router-zod-adapter arktype: - specifier: ^2.0.0-rc.7 - version: 2.0.0-rc.7 + specifier: ^2.0.0-rc.8 + version: 2.0.0-rc.8 react: specifier: ^18.2.0 version: 18.3.1 @@ -1143,8 +1143,8 @@ importers: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) valibot: - specifier: ^0.41.0 - version: 0.41.0(typescript@5.6.2) + specifier: ^0.42.0 + version: 0.42.0(typescript@5.6.2) zod: specifier: ^3.23.8 version: 3.23.8 @@ -1615,8 +1615,8 @@ importers: specifier: ^1.7.2 version: 1.7.2 msw: - specifier: ^2.4.6 - version: 2.4.6(typescript@5.6.2) + specifier: ^2.4.7 + version: 2.4.7(typescript@5.6.2) react: specifier: ^18.3.1 version: 18.3.1 @@ -1755,8 +1755,8 @@ importers: specifier: ^1.7.2 version: 1.7.2 msw: - specifier: ^2.4.6 - version: 2.4.6(typescript@5.6.2) + specifier: ^2.4.7 + version: 2.4.7(typescript@5.6.2) react: specifier: ^18.3.1 version: 18.3.1 @@ -2117,8 +2117,8 @@ importers: specifier: ^16.0.1 version: 16.0.1(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) arktype: - specifier: ^2.0.0-rc.7 - version: 2.0.0-rc.7 + specifier: ^2.0.0-rc.8 + version: 2.0.0-rc.8 packages/router-cli: dependencies: @@ -2234,7 +2234,7 @@ importers: version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.94.0(@swc/core@1.7.26)(esbuild@0.23.1) + version: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -2251,8 +2251,8 @@ importers: specifier: ^16.0.1 version: 16.0.1(@testing-library/dom@10.0.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) valibot: - specifier: ^0.41.0 - version: 0.41.0(typescript@5.6.2) + specifier: ^0.42.0 + version: 0.42.0(typescript@5.6.2) packages/router-vite-plugin: dependencies: @@ -2415,11 +2415,11 @@ packages: resolution: {integrity: sha512-gAYzWaIbq8m9MuvxKmeDn24Or4mIWCSpRR0NNXAVoGUTPraB1SP3blPa5NycUPTnToKLA5DAwHLhwtWpslMbKQ==} engines: {node: '>=18'} - '@ark/schema@0.9.0': - resolution: {integrity: sha512-pHA+BNGICGKhKG0hEdmjJbt8yQwJnDaPD5R8nq16TXTTzuGZcroTPBXEquSVaCoAqnXwx+Skae/63D1MpDnuow==} + '@ark/schema@0.10.0': + resolution: {integrity: sha512-zpfXwWLOzj9aUK+dXQ6aleJAOgle4/WrHDop5CMX2M88dFQ85NdH8O0v0pvMAQnfFcaQAZ/nVDYLlBJsFc09XA==} - '@ark/util@0.9.0': - resolution: {integrity: sha512-iwfIpS8EKLNRyJyurLYS66321qZSJupXlolGmU94FQ58lcgpRaK+BVQYYsJiuLj9kULxHVpQkI8bVmEvU3Sbsg==} + '@ark/util@0.10.0': + resolution: {integrity: sha512-uK+9VU5doGMYOoOZVE+XaSs1vYACoaEJdrDkuBx26S4X7y3ChyKsPnIg/9pIw2vUySph1GkAXbvBnfVE2GmXgQ==} '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} @@ -3550,8 +3550,8 @@ packages: resolution: {integrity: sha512-mE6PhwcoW70EX8+h+Y/4dLfHk33GFt/y5PzDJz56ktMyaVGFXMJ5BYLbUjdmGEABfE0x5GgAGyKbrbkYww2s3A==} engines: {node: '>=18'} - '@mswjs/interceptors@0.35.3': - resolution: {integrity: sha512-/7DWMTsCh5Ur4yT1f6Vql48VHXkOSPXOMMBWk67lSpymHOxyNuoAA0RBKi77J/9jL7UQzzsBI2ZGjDw/vbSJFw==} + '@mswjs/interceptors@0.35.6': + resolution: {integrity: sha512-PpD687w7qLxVMK176bpQjbzU9O0VC75QnBK5U1lKd29s4hIuxfTItUD6raNKyQ6BN8b64/8HE34RuYTkwH9uPQ==} engines: {node: '>=18'} '@napi-rs/snappy-android-arm-eabi@7.2.2': @@ -5242,8 +5242,8 @@ packages: aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - arktype@2.0.0-rc.7: - resolution: {integrity: sha512-O+bHkuglFJ/4O8vvhZlEQScpDT5aLqfUAqmXgt4vZ2g4IfTLEtu2paUomZTqKsUJqn5JBMIy9XJ/+lX0aad3LA==} + arktype@2.0.0-rc.8: + resolution: {integrity: sha512-ByrqjptsavUCUL9ptts6BUL2LCNkVZyniOdaBw76dlBQ6gYIhYSeycuuj4gRFwcAafszOnAPD2fAqHK7bbo/Zw==} array-each@1.0.1: resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} @@ -7509,8 +7509,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msw@2.4.6: - resolution: {integrity: sha512-flx3DIP3+a81vvEY1lCmZVFKVYVcDiizNHg6mHYc2+F2xU+4LmZ6P2eYZUGEFoJWqA3yRWS70pJa0riFVTb5FQ==} + msw@2.4.7: + resolution: {integrity: sha512-lLfwzRjTQhaYaoJq600wCFAmjLQnI7JI2VnUDmqj6icZbxgClwJqaJW2/++kkeQvKKoI8rG8NRFMutoG8+LT7w==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -9109,11 +9109,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.5.2: - resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==} - engines: {node: '>=14.17'} - hasBin: true - typescript@5.6.1-rc: resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} engines: {node: '>=14.17'} @@ -9315,8 +9310,8 @@ packages: resolution: {integrity: sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==} engines: {node: '>= 10.13.0'} - valibot@0.41.0: - resolution: {integrity: sha512-igDBb8CTYr8YTQlOKgaN9nSS0Be7z+WRuaeYqGf3Cjz3aKmSnqEmYnkfVjzIuumGqfHpa3fLIvMEAfhrpqN8ng==} + valibot@0.42.0: + resolution: {integrity: sha512-igMdmHXxDiQY714ssh9bGisMqJ2yg7sko1KOmv/omnrIacGtP6mGrbvVT1IuV1bDrHyG9ybgpHwG1UElDiDCLg==} peerDependencies: typescript: '>=5' peerDependenciesMeta: @@ -9719,11 +9714,11 @@ snapshots: typescript: 5.6.1-rc validate-npm-package-name: 5.0.1 - '@ark/schema@0.9.0': + '@ark/schema@0.10.0': dependencies: - '@ark/util': 0.9.0 + '@ark/util': 0.10.0 - '@ark/util@0.9.0': {} + '@ark/util@0.10.0': {} '@babel/code-frame@7.24.7': dependencies: @@ -10721,7 +10716,7 @@ snapshots: outvariant: 1.4.3 strict-event-emitter: 0.5.1 - '@mswjs/interceptors@0.35.3': + '@mswjs/interceptors@0.35.6': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -10808,9 +10803,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.7.3(@swc/core@1.7.26)': + '@nrwl/tao@19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13))': dependencies: - nx: 19.7.3(@swc/core@1.7.26) + nx: 19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)) tslib: 2.7.0 transitivePeerDependencies: - '@swc-node/register' @@ -12535,10 +12530,10 @@ snapshots: dependencies: dequal: 2.0.3 - arktype@2.0.0-rc.7: + arktype@2.0.0-rc.8: dependencies: - '@ark/schema': 0.9.0 - '@ark/util': 0.9.0 + '@ark/schema': 0.10.0 + '@ark/util': 0.10.0 array-each@1.0.1: {} @@ -15010,13 +15005,13 @@ snapshots: ms@2.1.3: {} - msw@2.4.6(typescript@5.6.2): + msw@2.4.7(typescript@5.6.2): dependencies: '@bundled-es-modules/cookie': 2.0.0 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 '@inquirer/confirm': 3.2.0 - '@mswjs/interceptors': 0.35.3 + '@mswjs/interceptors': 0.35.6 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 '@types/statuses': 2.0.5 @@ -15231,10 +15226,10 @@ snapshots: nwsapi@2.2.12: {} - nx@19.7.3(@swc/core@1.7.26): + nx@19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.7.3(@swc/core@1.7.26) + '@nrwl/tao': 19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -16555,14 +16550,14 @@ snapshots: '@swc/core': 1.7.26(@swc/helpers@0.5.13) esbuild: 0.23.1 - terser-webpack-plugin@5.3.10(@swc/core@1.7.26)(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26)(esbuild@0.23.1)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.94.0(@swc/core@1.7.26)(esbuild@0.23.1) + webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1) optionalDependencies: '@swc/core': 1.7.26(@swc/helpers@0.5.13) esbuild: 0.23.1 @@ -16737,8 +16732,6 @@ snapshots: typescript@5.4.5: {} - typescript@5.5.2: {} - typescript@5.6.1-rc: {} typescript@5.6.2: {} @@ -16946,7 +16939,7 @@ snapshots: v8flags@4.0.1: {} - valibot@0.41.0(typescript@5.6.2): + valibot@0.42.0(typescript@5.6.2): optionalDependencies: typescript: 5.6.2 @@ -17236,7 +17229,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4): + webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1): dependencies: '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 @@ -17258,17 +17251,15 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)) watchpack: 2.4.1 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.94.0(@swc/core@1.7.26)(esbuild@0.23.1): + webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4): dependencies: '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 @@ -17290,9 +17281,11 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26)(esbuild@0.23.1)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) transitivePeerDependencies: - '@swc/core' - esbuild From d56da3ed5adef7f0f671cbea94e5a52a555d1036 Mon Sep 17 00:00:00 2001 From: Lachlan Collins <1667261+lachlancollins@users.noreply.github.com> Date: Mon, 16 Sep 2024 19:14:17 +1000 Subject: [PATCH 122/154] ci(deps): fix typescript55 version (#2349) --- .github/renovate.json | 1 + package.json | 2 +- pnpm-lock.yaml | 11 +++++++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index 66367ceae5..fcdf2db6d9 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -32,6 +32,7 @@ "typescript52", "typescript53", "typescript54", + "typescript55", "unplugin", "use-sync-external-store", "waku" diff --git a/package.json b/package.json index 13b3417713..b1d2f8d135 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "typescript52": "npm:typescript@5.2", "typescript53": "npm:typescript@5.3", "typescript54": "npm:typescript@5.4", - "typescript55": "npm:typescript@5.6.2", + "typescript55": "npm:typescript@5.5", "vite": "^5.4.5", "vitest": "^1.6.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 12ce32ad89..ddf22ec1e7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -99,8 +99,8 @@ importers: specifier: npm:typescript@5.4 version: typescript@5.4.5 typescript55: - specifier: npm:typescript@5.6.2 - version: typescript@5.6.2 + specifier: npm:typescript@5.5 + version: typescript@5.5.4 vite: specifier: ^5.4.5 version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) @@ -9109,6 +9109,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.6.1-rc: resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} engines: {node: '>=14.17'} @@ -16732,6 +16737,8 @@ snapshots: typescript@5.4.5: {} + typescript@5.5.4: {} + typescript@5.6.1-rc: {} typescript@5.6.2: {} From fb9205dc9b30e52ff800f3bea54f599c6ef0d759 Mon Sep 17 00:00:00 2001 From: Casey Johnson <57372130+theMostCuriousHomunculus@users.noreply.github.com> Date: Tue, 17 Sep 2024 00:21:47 -0500 Subject: [PATCH 123/154] docs(router): correcting a variable reference in external-data-loading.md (#2355) "client" should have been "queryClient" --- docs/framework/react/guide/external-data-loading.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework/react/guide/external-data-loading.md b/docs/framework/react/guide/external-data-loading.md index 4f29532248..c0907b8314 100644 --- a/docs/framework/react/guide/external-data-loading.md +++ b/docs/framework/react/guide/external-data-loading.md @@ -175,7 +175,7 @@ export function createRouter() { // On the client, hydrate the loader client with the data // we dehydrated on the server hydrate: (dehydrated) => { - hydrate(client, dehydrated.queryClientState) + hydrate(queryClient, dehydrated.queryClientState) }, // Optionally, we can use `Wrap` to wrap our router in the loader client provider Wrap: ({ children }) => { From 2c6090d56ad48873b7d59dfbf779ee8838a8af8c Mon Sep 17 00:00:00 2001 From: Levin Rickert Date: Tue, 17 Sep 2024 07:23:18 +0200 Subject: [PATCH 124/154] fix(react-router): correct typo in optional the `peerDependenciesMeta` (#2351) --- packages/react-router/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 3317b9ace9..1e51870fe0 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -84,7 +84,7 @@ "@tanstack/router-generator": "workspace:*" }, "peerDependenciesMeta": { - "@tanstack/react-generator": { + "@tanstack/router-generator": { "optional": true } } From b719c0d14b4e51c2df328003d2a831c41c173739 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Tue, 17 Sep 2024 05:27:59 +0000 Subject: [PATCH 125/154] release: v1.57.16 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic-virtual-file-based/package.json | 4 ++-- .../react/basic-virtual-inside-file-based/package.json | 4 ++-- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-supabase-basic/package.json | 6 +++--- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 45 files changed, 98 insertions(+), 98 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 4a22a0f26a..a2e2476d7d 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 79f2e0de0f..e05b528d62 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 53249aefad..970b5278a1 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index ab35791041..1493e827c0 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 64ad1632bb..0185484c9c 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index cde4471ced..1d726f0030 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 00b2ed604d..fb2ac4409e 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.15", + "@tanstack/start": "^1.57.16", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index ae4c393626..dab59697ac 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.15", + "@tanstack/start": "^1.57.16", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 0d997fe7a2..0d6ca4d1dc 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 466cf0e2f1..492313fe4e 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 5679a9369d..d823737e73 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index ba89c28696..78b6c96b22 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 37e397daed..8eaf4f9ae9 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index c9bc6d3dca..a901755678 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 1c94826c1a..6e847f0971 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 6baaa2b860..d8974da9b1 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 36a68cb71e..6ca8b3a462 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index faba8256ee..b88afdaf23 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index e2a7f6ca05..b19f543feb 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 24f62effbe..808b8b76d7 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index a90005063f..5e87a1edc9 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 3a678dd7db..2ee176c63d 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 4ca0a5a469..c79d5ea12d 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 776d204912..fee12d354d 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", + "@tanstack/react-router": "^1.57.16", "@tanstack/react-virtual": "^3.10.7", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-devtools": "^1.57.16", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 8c483970ea..e560b8e395 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/router-zod-adapter": "^1.57.15", - "@tanstack/router-valibot-adapter": "^1.57.15", - "@tanstack/router-arktype-adapter": "^1.57.15", + "@tanstack/router-zod-adapter": "^1.57.16", + "@tanstack/router-valibot-adapter": "^1.57.16", + "@tanstack/router-arktype-adapter": "^1.57.16", "@tanstack/react-query": "^5.56.2", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index d759c7af6c..292deeef89 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.19.1", - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.15", + "@tanstack/start": "^1.57.16", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 085cf636a5..a2068935be 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/start": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/start": "^1.57.16", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.3" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 337c6d9cde..d5a4422194 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.15", - "@tanstack/react-router-with-query": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/react-router-with-query": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.15", + "@tanstack/start": "^1.57.16", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 2a62d7db12..3b96844205 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.25.4", - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.15", + "@tanstack/start": "^1.57.16", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.3" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 89483f2862..a805373a99 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.15", + "@tanstack/start": "^1.57.16", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index aa208cac91..8289b9e097 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.4.1", - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.15", + "@tanstack/start": "^1.57.16", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 7c8ecb86f1..0c5c657071 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.15", - "@tanstack/react-router-with-query": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/react-router-with-query": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.15", + "@tanstack/start": "^1.57.16", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index f180b34556..03218c79c0 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.4", - "@tanstack/react-router": "^1.57.15", + "@tanstack/react-router": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", - "@tanstack/start": "^1.57.15", + "@tanstack/router-devtools": "^1.57.16", + "@tanstack/start": "^1.57.16", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 82144c7893..4934e17dd7 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.15", - "@tanstack/react-router-with-query": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/react-router-with-query": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.15", + "@tanstack/start": "^1.57.16", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "ky": "^1.7.2", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 480d5f7b0e..359943a79e 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "redaxios": "^0.5.1", "framer-motion": "^11.5.4", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index c85238b82e..0403a5016d 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", "@trpc/client": "11.0.0-rc.502", "@trpc/react-query": "11.0.0-rc.502", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index b0e6e15fea..a58e93040c 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.57.15", - "@tanstack/router-devtools": "^1.57.15", + "@tanstack/react-router": "^1.57.16", + "@tanstack/router-devtools": "^1.57.16", "@tanstack/router-plugin": "^1.57.15", "@trpc/client": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index e5b3e6baf1..2d983011d3 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.15", + "version": "1.57.16", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 36476c1067..e564471a39 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.57.15", + "version": "1.57.16", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 1e51870fe0..e4998cffc5 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.57.15", + "version": "1.57.16", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 5a58b06e0a..0a28247596 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.57.15", + "version": "1.57.16", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index a2d009b7b3..af97d4ef9d 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.57.15", + "version": "1.57.16", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index c16d0a74e5..27ebf60a86 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.57.15", + "version": "1.57.16", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 847fc67bd5..28d8cbc669 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.57.15", + "version": "1.57.16", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index c6b06622a0..094f47a0ad 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.15", + "version": "1.57.16", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 3d66d7058c1e004354ee751a3005f6d5f660dce4 Mon Sep 17 00:00:00 2001 From: Christopher Horobin Date: Tue, 17 Sep 2024 08:34:17 +0200 Subject: [PATCH 126/154] perf(react-router): apply language service performance to `getRouteApi` (#2354) --- packages/react-router/src/route.ts | 76 +++++++++---------- .../react-router/tests/routeApi.test-d.tsx | 37 ++++++++- 2 files changed, 73 insertions(+), 40 deletions(-) diff --git a/packages/react-router/src/route.ts b/packages/react-router/src/route.ts index 9bd0f6ac77..225d9e45b2 100644 --- a/packages/react-router/src/route.ts +++ b/packages/react-router/src/route.ts @@ -750,37 +750,21 @@ export type RouteConstraints = { TRouteTree: AnyRoute } +export type RouteTypesById< + TRouter extends RegisteredRouter, + TId extends RouteIds, +> = RouteById['types'] + export function getRouteApi< - TId extends RouteIds, - TRouter extends AnyRouter = RegisteredRouter, - TRoute extends AnyRoute = RouteById, - TFullSearchSchema = TRoute['types']['fullSearchSchema'], - TAllParams = TRoute['types']['allParams'], - TAllContext = TRoute['types']['allContext'], - TLoaderDeps = TRoute['types']['loaderDeps'], - TLoaderData = TRoute['types']['loaderData'], + TRouter extends RegisteredRouter, + TId extends RouteIds, >(id: TId) { - return new RouteApi< - TId, - TRouter, - TRoute, - TFullSearchSchema, - TAllParams, - TAllContext, - TLoaderDeps, - TLoaderData - >({ id }) + return new RouteApi({ id }) } export class RouteApi< - TId extends RouteIds, - TRouter extends AnyRouter = RegisteredRouter, - TRoute extends AnyRoute = RouteById, - TFullSearchSchema = TRoute['types']['fullSearchSchema'], - TAllParams = TRoute['types']['allParams'], - TAllContext = TRoute['types']['allContext'], - TLoaderDeps = TRoute['types']['loaderDeps'], - TLoaderData = TRoute['types']['loaderData'], + TRouter extends RegisteredRouter, + TId extends RouteIds, > { id: TId @@ -801,8 +785,12 @@ export class RouteApi< return useMatch({ select: opts?.select, from: this.id }) } - useRouteContext = >(opts?: { - select?: (s: Expand) => TSelected + useRouteContext = < + TSelected = Expand['allContext']>, + >(opts?: { + select?: ( + s: Expand['allContext']>, + ) => TSelected }): TSelected => { return useMatch({ from: this.id, @@ -810,32 +798,44 @@ export class RouteApi< }) } - useSearch = >(opts?: { - select?: (s: Expand) => TSelected + useSearch = < + TSelected = Expand['fullSearchSchema']>, + >(opts?: { + select?: ( + s: Expand['fullSearchSchema']>, + ) => TSelected }): TSelected => { return useSearch({ ...opts, from: this.id }) } - useParams = >(opts?: { - select?: (s: Expand) => TSelected + useParams = < + TSelected = Expand['allParams']>, + >(opts?: { + select?: (s: Expand['allParams']>) => TSelected }): TSelected => { return useParams({ ...opts, from: this.id }) } - useLoaderDeps = (opts?: { - select?: (s: TLoaderDeps) => TSelected + useLoaderDeps = < + TSelected = RouteTypesById['loaderDeps'], + >(opts?: { + select?: (s: RouteTypesById['loaderDeps']) => TSelected }): TSelected => { return useLoaderDeps({ ...opts, from: this.id, strict: false } as any) } - useLoaderData = (opts?: { - select?: (s: TLoaderData) => TSelected + useLoaderData = < + TSelected = RouteTypesById['loaderData'], + >(opts?: { + select?: (s: RouteTypesById['loaderData']) => TSelected }): TSelected => { return useLoaderData({ ...opts, from: this.id, strict: false } as any) } - useNavigate = (): UseNavigateResult => { - return useNavigate({ from: this.id }) + useNavigate = (): UseNavigateResult< + RouteTypesById['fullPath'] + > => { + return useNavigate({ from: this.id as string }) } notFound = (opts?: NotFoundError) => { diff --git a/packages/react-router/tests/routeApi.test-d.tsx b/packages/react-router/tests/routeApi.test-d.tsx index 927cd6a536..467bfb7263 100644 --- a/packages/react-router/tests/routeApi.test-d.tsx +++ b/packages/react-router/tests/routeApi.test-d.tsx @@ -1,6 +1,6 @@ import { describe, expectTypeOf, test } from 'vitest' import { createRootRoute, createRoute, createRouter, getRouteApi } from '../src' -import type { UseNavigateResult } from '../src' +import type { MakeRouteMatch, UseNavigateResult } from '../src' const rootRoute = createRootRoute() @@ -23,6 +23,9 @@ const invoiceRoute = createRoute({ getParentRoute: () => invoicesRoute, path: '$invoiceId', validateSearch: () => ({ page: 0 }), + beforeLoad: () => ({ beforeLoadContext: 0 }), + loaderDeps: () => ({ dep: 0 }), + loader: () => ({ data: 0 }), }) const routeTree = rootRoute.addChildren([ @@ -40,7 +43,7 @@ type ExtractDefaultFrom = T extends UseNavigateResult ? DefaultFrom : never describe('getRouteApi', () => { - const invoiceRouteApi = getRouteApi<'/invoices/$invoiceId', DefaultRouter>( + const invoiceRouteApi = getRouteApi( '/invoices/$invoiceId', ) describe('useNavigate', () => { @@ -52,6 +55,36 @@ describe('getRouteApi', () => { >().toEqualTypeOf<'/invoices/$invoiceId'>() }) }) + test('useParams', () => { + expectTypeOf(invoiceRouteApi.useParams()).toEqualTypeOf<{ + invoiceId: string + }>() + }) + test('useContext', () => { + expectTypeOf(invoiceRouteApi.useRouteContext()).toEqualTypeOf<{ + beforeLoadContext: number + }>() + }) + test('useSearch', () => { + expectTypeOf(invoiceRouteApi.useSearch()).toEqualTypeOf<{ + page: number + }>() + }) + test('useLoaderData', () => { + expectTypeOf(invoiceRouteApi.useLoaderData()).toEqualTypeOf<{ + data: number + }>() + }) + test('useLoaderDeps', () => { + expectTypeOf(invoiceRouteApi.useLoaderDeps()).toEqualTypeOf<{ + dep: number + }>() + }) + test('useMatch', () => { + expectTypeOf(invoiceRouteApi.useMatch()).toEqualTypeOf< + MakeRouteMatch + >() + }) }) describe('createRoute', () => { From 601adfbdcd961f68f7611da11db7469c1ad7f0f7 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Tue, 17 Sep 2024 06:38:31 +0000 Subject: [PATCH 127/154] release: v1.57.17 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic-virtual-file-based/package.json | 4 ++-- .../react/basic-virtual-inside-file-based/package.json | 4 ++-- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-supabase-basic/package.json | 6 +++--- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 45 files changed, 98 insertions(+), 98 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index a2e2476d7d..4dd084b06f 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index e05b528d62..f01a76595f 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 970b5278a1..ce58c397e2 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 1493e827c0..feaa90fbf3 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 0185484c9c..95f42bf8ec 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 1d726f0030..8db7a092f8 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index fb2ac4409e..1e1e31f84d 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.16", + "@tanstack/start": "^1.57.17", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index dab59697ac..b4397613d3 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.16", + "@tanstack/start": "^1.57.17", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 0d6ca4d1dc..e310e86e51 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 492313fe4e..005e72adff 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index d823737e73..08d0429f94 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 78b6c96b22..e2407f77ce 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 8eaf4f9ae9..d2bca9b549 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index a901755678..626438e10f 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 6e847f0971..32fbe69e52 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index d8974da9b1..51429df711 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 6ca8b3a462..659cb99588 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index b88afdaf23..b256d774c0 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index b19f543feb..6cffee0cfb 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 808b8b76d7..dfd31a8687 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 5e87a1edc9..49a602c53b 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 2ee176c63d..498e6007c8 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index c79d5ea12d..1b20b2392e 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index fee12d354d..b1a66f3084 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", + "@tanstack/react-router": "^1.57.17", "@tanstack/react-virtual": "^3.10.7", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/router-devtools": "^1.57.17", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index e560b8e395..8737437387 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/router-zod-adapter": "^1.57.16", - "@tanstack/router-valibot-adapter": "^1.57.16", - "@tanstack/router-arktype-adapter": "^1.57.16", + "@tanstack/router-zod-adapter": "^1.57.17", + "@tanstack/router-valibot-adapter": "^1.57.17", + "@tanstack/router-arktype-adapter": "^1.57.17", "@tanstack/react-query": "^5.56.2", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 292deeef89..87f6c9ab0e 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.19.1", - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.16", + "@tanstack/start": "^1.57.17", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index a2068935be..be6c3423cd 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/start": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/start": "^1.57.17", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.3" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index d5a4422194..69d112fff0 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.16", - "@tanstack/react-router-with-query": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/react-router-with-query": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.16", + "@tanstack/start": "^1.57.17", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 3b96844205..541b6d0b02 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.25.4", - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.16", + "@tanstack/start": "^1.57.17", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.3" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index a805373a99..bf92dc088c 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.16", + "@tanstack/start": "^1.57.17", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 8289b9e097..c871488efb 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.4.1", - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.16", + "@tanstack/start": "^1.57.17", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 0c5c657071..5b2f89ee82 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.16", - "@tanstack/react-router-with-query": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/react-router-with-query": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.16", + "@tanstack/start": "^1.57.17", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 03218c79c0..246c59c9be 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.4", - "@tanstack/react-router": "^1.57.16", + "@tanstack/react-router": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/router-devtools": "^1.57.16", - "@tanstack/start": "^1.57.16", + "@tanstack/router-devtools": "^1.57.17", + "@tanstack/start": "^1.57.17", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 4934e17dd7..0a770bb742 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.16", - "@tanstack/react-router-with-query": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/react-router-with-query": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.16", + "@tanstack/start": "^1.57.17", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "ky": "^1.7.2", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 359943a79e..2b35c0fdab 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "redaxios": "^0.5.1", "framer-motion": "^11.5.4", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 0403a5016d..80954c64e9 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", "@trpc/client": "11.0.0-rc.502", "@trpc/react-query": "11.0.0-rc.502", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index a58e93040c..2168be1c48 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.57.16", - "@tanstack/router-devtools": "^1.57.16", + "@tanstack/react-router": "^1.57.17", + "@tanstack/router-devtools": "^1.57.17", "@tanstack/router-plugin": "^1.57.15", "@trpc/client": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 2d983011d3..8bdbe54549 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.16", + "version": "1.57.17", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index e564471a39..8d63146f97 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.57.16", + "version": "1.57.17", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index e4998cffc5..346ac10f56 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.57.16", + "version": "1.57.17", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 0a28247596..70e4cefce6 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.57.16", + "version": "1.57.17", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index af97d4ef9d..e6242e7db2 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.57.16", + "version": "1.57.17", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 27ebf60a86..d959389942 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.57.16", + "version": "1.57.17", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 28d8cbc669..c81dceed68 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.57.16", + "version": "1.57.17", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 094f47a0ad..304f0e2f29 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.16", + "version": "1.57.17", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From b5080c6af789daa76dcc4b7e093a42964551c679 Mon Sep 17 00:00:00 2001 From: "Sang June (Josh) Rhee" <60160057+joshrhee@users.noreply.github.com> Date: Tue, 17 Sep 2024 20:51:28 -0400 Subject: [PATCH 128/154] docs(router): fix the import of `StartServer` in the SSR guide (#2358) Since `StartServer` is exporting from `@tanstack/start/server`, the import path should be updated --- docs/framework/react/guide/ssr.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/framework/react/guide/ssr.md b/docs/framework/react/guide/ssr.md index a166415230..8959423a8b 100644 --- a/docs/framework/react/guide/ssr.md +++ b/docs/framework/react/guide/ssr.md @@ -21,7 +21,7 @@ Non-Streaming server-side rendering is the classic process of rendering the mark To implement non-streaming SSR with TanStack Router, you will need the following utilities: -- `StartServer` from `@tanstack/start` +- `StartServer` from `@tanstack/start/server` - e.g. `` - Rendering this component in your server entry will render your application and also automatically handle application-level hydration/dehydration and implement the `Wrap` component option on `Router` - `StartClient` from `@tanstack/start` @@ -142,7 +142,7 @@ Here is a complete example of a server entry file that uses all of the concepts import * as React from 'react' import ReactDOMServer from 'react-dom/server' import { createMemoryHistory } from '@tanstack/react-router' -import { StartServer } from '@tanstack/start' +import { StartServer } from '@tanstack/start/server' import { createRouter } from './router' export async function render(url, response) { From b0be38eef3040a36d5bf6d65b6190ec7329e4a4a Mon Sep 17 00:00:00 2001 From: Ravi Lamichhane Date: Wed, 18 Sep 2024 06:50:36 +0545 Subject: [PATCH 129/154] fix(react-router): `search` getting overridden on page load (#2346) --- packages/react-router/src/router.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index c83e35c19d..c279a6d7d1 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -1326,7 +1326,7 @@ export class Router< 'Could not find match for from: ' + dest.from, ) - const fromSearch = this.state.pendingMatches + const fromSearch = this.state.pendingMatches?.length ? last(this.state.pendingMatches)?.search : last(fromMatches)?.search || this.latestLocation.search From 67da2a7ea207a24ad4981f337c52bc3208369e8e Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Wed, 18 Sep 2024 01:09:50 +0000 Subject: [PATCH 130/154] release: v1.57.18 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic-virtual-file-based/package.json | 4 ++-- .../react/basic-virtual-inside-file-based/package.json | 4 ++-- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-supabase-basic/package.json | 6 +++--- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 45 files changed, 98 insertions(+), 98 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 4dd084b06f..eca9aaa7fd 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index f01a76595f..d9865b4f83 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index ce58c397e2..9c9d911006 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index feaa90fbf3..b6d446b5d4 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 95f42bf8ec..b7e7bbba15 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 8db7a092f8..b542f8ba7a 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -12,8 +12,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 1e1e31f84d..2e6b1357df 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.17", + "@tanstack/start": "^1.57.18", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index b4397613d3..3f1aaaaeeb 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.17", + "@tanstack/start": "^1.57.18", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index e310e86e51..7c1f1a6ce1 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 005e72adff..eed1c50e79 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 08d0429f94..281f0ed8d6 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -10,8 +10,8 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index e2407f77ce..6837bed846 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index d2bca9b549..a088aa2545 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 626438e10f..8bda23d13c 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 32fbe69e52..50f253b474 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 51429df711..6a9055099a 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 659cb99588..e17db5add6 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index b256d774c0..1cb66a4a9f 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 6cffee0cfb..c7890b93fb 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index dfd31a8687..37a5e96d37 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 49a602c53b..46c378f493 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 498e6007c8..4d7e837e74 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 1b20b2392e..c2b31dc4ac 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index b1a66f3084..d37290f44a 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", + "@tanstack/react-router": "^1.57.18", "@tanstack/react-virtual": "^3.10.7", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/router-devtools": "^1.57.18", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 8737437387..31bcf1a1c1 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/router-zod-adapter": "^1.57.17", - "@tanstack/router-valibot-adapter": "^1.57.17", - "@tanstack/router-arktype-adapter": "^1.57.17", + "@tanstack/router-zod-adapter": "^1.57.18", + "@tanstack/router-valibot-adapter": "^1.57.18", + "@tanstack/router-arktype-adapter": "^1.57.18", "@tanstack/react-query": "^5.56.2", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 87f6c9ab0e..de6873770e 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@prisma/client": "5.19.1", - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.17", + "@tanstack/start": "^1.57.18", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index be6c3423cd..c69bec7071 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/start": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/start": "^1.57.18", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.3" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 69d112fff0..7b7fbabb16 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -14,11 +14,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.17", - "@tanstack/react-router-with-query": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/react-router-with-query": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.17", + "@tanstack/start": "^1.57.18", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 541b6d0b02..63e9164387 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.25.4", - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.17", + "@tanstack/start": "^1.57.18", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.3" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index bf92dc088c..f8d6539de1 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -12,10 +12,10 @@ "test:e2e": "playwright test --project=chromium" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.17", + "@tanstack/start": "^1.57.18", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index c871488efb..0830469e6e 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.4.1", - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.17", + "@tanstack/start": "^1.57.18", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 5b2f89ee82..ef2473bbc9 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.17", - "@tanstack/react-router-with-query": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/react-router-with-query": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.17", + "@tanstack/start": "^1.57.18", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 246c59c9be..6fc569cf86 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.4", - "@tanstack/react-router": "^1.57.17", + "@tanstack/react-router": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/router-devtools": "^1.57.17", - "@tanstack/start": "^1.57.17", + "@tanstack/router-devtools": "^1.57.18", + "@tanstack/start": "^1.57.18", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 0a770bb742..19a0d75e66 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.17", - "@tanstack/react-router-with-query": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/react-router-with-query": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.17", + "@tanstack/start": "^1.57.18", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "ky": "^1.7.2", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 2b35c0fdab..2d2ea4df51 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "redaxios": "^0.5.1", "framer-motion": "^11.5.4", "immer": "^10.1.1", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 80954c64e9..774b2ea398 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", "@trpc/client": "11.0.0-rc.502", "@trpc/react-query": "11.0.0-rc.502", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 2168be1c48..558e05f3c3 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.57.17", - "@tanstack/router-devtools": "^1.57.17", + "@tanstack/react-router": "^1.57.18", + "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.15", "@trpc/client": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 8bdbe54549..d1adacb3d3 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.17", + "version": "1.57.18", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 8d63146f97..7e33506886 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.57.17", + "version": "1.57.18", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 346ac10f56..64ffe53e3c 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.57.17", + "version": "1.57.18", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index 70e4cefce6..f8b7e5725c 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.57.17", + "version": "1.57.18", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index e6242e7db2..17f87b5d07 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.57.17", + "version": "1.57.18", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index d959389942..79261ebea2 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.57.17", + "version": "1.57.18", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index c81dceed68..fc4661ef32 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.57.17", + "version": "1.57.18", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 304f0e2f29..cf612cee34 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.17", + "version": "1.57.18", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From a9017a9a7a0062788f2376a66997221af6f680c5 Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Thu, 19 Sep 2024 04:09:22 +1200 Subject: [PATCH 131/154] chore: copying e2e test sandboxes from `examples/` to `e2e/` (#2357) --- e2e/react-router/basic-file-based/.gitignore | 10 + e2e/react-router/basic-file-based/index.html | 24 + .../basic-file-based/package.json | 29 + .../basic-file-based/playwright.config.ts | 0 .../basic-file-based/src/main.tsx | 25 + .../basic-file-based/src/posts.tsx | 32 + .../basic-file-based/src/routeTree.gen.ts | 294 ++++ .../basic-file-based/src/routes/__root.tsx | 62 + .../basic-file-based/src/routes/_layout.tsx | 16 + .../src/routes/_layout/_layout-2.tsx | 34 + .../src/routes/_layout/_layout-2/layout-a.tsx | 9 + .../src/routes/_layout/_layout-2/layout-b.tsx | 9 + .../basic-file-based/src/routes/index.tsx | 14 + .../src/routes/posts.$postId.tsx | 28 + .../src/routes/posts.index.tsx | 10 + .../basic-file-based/src/routes/posts.tsx | 39 + .../basic-file-based/tests/app.spec.ts | 0 .../basic-file-based/tsconfig.json | 7 + .../basic-file-based/vite.config.js | 8 + .../basic-react-query-file-based/.gitignore | 10 + .../basic-react-query-file-based/index.html | 24 + .../basic-react-query-file-based/package.json | 31 + .../playwright.config.ts | 0 .../basic-react-query-file-based/src/main.tsx | 37 + .../src/postQueryOptions.tsx | 8 + .../src/posts.tsx | 33 + .../src/postsQueryOptions.tsx | 7 + .../src/routeTree.gen.ts | 294 ++++ .../src/routes/__root.tsx | 70 + .../src/routes/_layout.tsx | 16 + .../src/routes/_layout/_layout-2.tsx | 34 + .../src/routes/_layout/_layout-2/layout-a.tsx | 9 + .../src/routes/_layout/_layout-2/layout-b.tsx | 9 + .../src/routes/index.tsx | 14 + .../src/routes/posts.$postId.tsx | 58 + .../src/routes/posts.index.tsx | 10 + .../src/routes/posts.tsx | 42 + .../tests/app.spec.ts | 0 .../tsconfig.json | 9 + .../vite.config.js | 8 + e2e/react-router/basic-react-query/.gitignore | 10 + e2e/react-router/basic-react-query/index.html | 24 + .../basic-react-query/package.json | 28 + .../basic-react-query/playwright.config.ts | 0 .../basic-react-query/src/main.tsx | 274 ++++ .../basic-react-query/src/posts.lazy.tsx | 40 + .../basic-react-query/src/posts.ts | 44 + .../basic-react-query/tests/app.spec.ts | 0 .../basic-react-query/tsconfig.json | 10 + .../basic-react-query/vite.config.js | 7 + .../basic-virtual-file-based/.gitignore | 10 + .../basic-virtual-file-based/index.html | 24 + .../basic-virtual-file-based/package.json | 30 + .../playwright.config.ts | 0 .../basic-virtual-file-based/routes.ts | 22 + .../basic-virtual-file-based/src/main.tsx | 25 + .../basic-virtual-file-based/src/posts.tsx | 32 + .../src/routeTree.gen.ts | 413 ++++++ .../basic-virtual-file-based/src/routes/a.tsx | 9 + .../basic-virtual-file-based/src/routes/b.tsx | 9 + .../routes/file-based-subtree/hello/index.tsx | 5 + .../routes/file-based-subtree/hello/route.tsx | 27 + .../file-based-subtree/hello/universe.tsx | 5 + .../routes/file-based-subtree/hello/world.tsx | 5 + .../src/routes/home.tsx | 14 + .../src/routes/layout/first-layout.tsx | 16 + .../src/routes/layout/second-layout.tsx | 34 + .../src/routes/posts/posts-detail.tsx | 28 + .../src/routes/posts/posts-home.tsx | 10 + .../src/routes/posts/posts.tsx | 39 + .../src/routes/root.tsx | 70 + .../tests/app.spec.ts | 0 .../basic-virtual-file-based/tsconfig.json | 10 + .../basic-virtual-file-based/vite.config.ts | 9 + e2e/react-router/basic/.gitignore | 10 + e2e/react-router/basic/index.html | 24 + e2e/react-router/basic/package.json | 26 + .../react-router}/basic/playwright.config.ts | 0 e2e/react-router/basic/src/main.tsx | 229 ++++ e2e/react-router/basic/src/posts.lazy.tsx | 36 + e2e/react-router/basic/src/posts.ts | 32 + .../react-router}/basic/tests/app.spec.ts | 0 e2e/react-router/basic/tsconfig.json | 10 + e2e/react-router/basic/vite.config.js | 7 + e2e/start/basic-auth/.env | 7 + e2e/start/basic-auth/.gitignore | 22 + e2e/start/basic-auth/.prettierignore | 5 + e2e/start/basic-auth/.prettierrc | 5 + e2e/start/basic-auth/app.config.ts | 12 + e2e/start/basic-auth/app/client.tsx | 7 + e2e/start/basic-auth/app/components/Auth.tsx | 57 + .../app/components/DefaultCatchBoundary.tsx | 53 + e2e/start/basic-auth/app/components/Login.tsx | 67 + .../basic-auth/app/components/NotFound.tsx | 25 + e2e/start/basic-auth/app/hooks/useMutation.ts | 44 + e2e/start/basic-auth/app/routeTree.gen.ts | 285 ++++ e2e/start/basic-auth/app/router.tsx | 21 + e2e/start/basic-auth/app/routes/__root.tsx | 145 ++ e2e/start/basic-auth/app/routes/_authed.tsx | 66 + .../app/routes/_authed/posts.$postId.tsx | 28 + .../app/routes/_authed/posts.index.tsx | 9 + .../basic-auth/app/routes/_authed/posts.tsx | 38 + e2e/start/basic-auth/app/routes/index.tsx | 13 + e2e/start/basic-auth/app/routes/login.tsx | 10 + e2e/start/basic-auth/app/routes/logout.tsx | 18 + e2e/start/basic-auth/app/routes/signup.tsx | 99 ++ e2e/start/basic-auth/app/ssr.tsx | 12 + e2e/start/basic-auth/app/styles/app.css | 14 + e2e/start/basic-auth/app/utils/posts.ts | 33 + e2e/start/basic-auth/app/utils/prisma.ts | 16 + e2e/start/basic-auth/app/utils/seo.ts | 33 + e2e/start/basic-auth/app/utils/session.ts | 13 + e2e/start/basic-auth/package.json | 46 + .../start/basic-auth}/playwright.config.ts | 0 e2e/start/basic-auth/postcss.config.cjs | 7 + e2e/start/basic-auth/prisma/dev.db | Bin 0 -> 24576 bytes .../20240811183753_init/migration.sql | 8 + .../prisma/migrations/migration_lock.toml | 3 + e2e/start/basic-auth/prisma/schema.prisma | 16 + .../public/android-chrome-192x192.png | Bin 0 -> 29964 bytes .../public/android-chrome-512x512.png | Bin 0 -> 109271 bytes .../basic-auth/public/apple-touch-icon.png | Bin 0 -> 27246 bytes e2e/start/basic-auth/public/favicon-16x16.png | Bin 0 -> 832 bytes e2e/start/basic-auth/public/favicon-32x32.png | Bin 0 -> 2115 bytes e2e/start/basic-auth/public/favicon.ico | Bin 0 -> 15406 bytes e2e/start/basic-auth/public/favicon.png | Bin 0 -> 1507 bytes e2e/start/basic-auth/public/site.webmanifest | 19 + e2e/start/basic-auth/tailwind.config.cjs | 4 + .../start/basic-auth}/tests/app.spec.ts | 0 .../basic-auth}/tests/mock-db-setup.test.ts | 0 .../tests/mock-db-teardown.test.ts | 0 e2e/start/basic-auth/tsconfig.json | 22 + e2e/start/basic-react-query/.gitignore | 22 + e2e/start/basic-react-query/.prettierignore | 5 + e2e/start/basic-react-query/.prettierrc | 5 + e2e/start/basic-react-query/app.config.ts | 12 + e2e/start/basic-react-query/app/api.ts | 6 + e2e/start/basic-react-query/app/client.tsx | 7 + .../app/components/DefaultCatchBoundary.tsx | 53 + .../app/components/NotFound.tsx | 25 + .../basic-react-query/app/routeTree.gen.ts | 460 +++++++ e2e/start/basic-react-query/app/router.tsx | 31 + .../basic-react-query/app/routes/__root.tsx | 144 ++ .../basic-react-query/app/routes/_layout.tsx | 16 + .../app/routes/_layout/_layout-2.tsx | 34 + .../app/routes/_layout/_layout-2/layout-a.tsx | 9 + .../app/routes/_layout/_layout-2/layout-b.tsx | 9 + .../basic-react-query/app/routes/api.users.ts | 17 + .../app/routes/api/users.$id.ts | 24 + .../basic-react-query/app/routes/deferred.tsx | 53 + .../basic-react-query/app/routes/index.tsx | 13 + .../app/routes/posts.$postId.tsx | 53 + .../app/routes/posts.index.tsx | 9 + .../basic-react-query/app/routes/posts.tsx | 43 + .../app/routes/posts_.$postId.deep.tsx | 41 + .../basic-react-query/app/routes/redirect.tsx | 9 + .../app/routes/users.$userId.tsx | 33 + .../app/routes/users.index.tsx | 9 + .../basic-react-query/app/routes/users.tsx | 42 + e2e/start/basic-react-query/app/ssr.tsx | 12 + .../basic-react-query/app/styles/app.css | 14 + .../basic-react-query/app/utils/posts.tsx | 45 + e2e/start/basic-react-query/app/utils/seo.ts | 33 + .../basic-react-query/app/utils/users.tsx | 34 + e2e/start/basic-react-query/package.json | 44 + .../basic-react-query}/playwright.config.ts | 0 .../basic-react-query/postcss.config.cjs | 7 + .../public/android-chrome-192x192.png | Bin 0 -> 29964 bytes .../public/android-chrome-512x512.png | Bin 0 -> 109271 bytes .../public/apple-touch-icon.png | Bin 0 -> 27246 bytes .../public/favicon-16x16.png | Bin 0 -> 832 bytes .../public/favicon-32x32.png | Bin 0 -> 2115 bytes .../basic-react-query/public/favicon.ico | Bin 0 -> 15406 bytes .../basic-react-query/public/favicon.png | Bin 0 -> 1507 bytes .../basic-react-query/public/site.webmanifest | 19 + .../basic-react-query/tailwind.config.cjs | 4 + .../basic-react-query}/tests/app.spec.ts | 0 e2e/start/basic-react-query/tsconfig.json | 22 + e2e/start/basic-rsc/.gitignore | 18 + e2e/start/basic-rsc/.prettierignore | 5 + e2e/start/basic-rsc/.prettierrc | 5 + e2e/start/basic-rsc/app.config.ts | 12 + e2e/start/basic-rsc/app/client.tsx | 7 + .../app/components/DefaultCatchBoundary.tsx | 53 + .../basic-rsc/app/components/NotFound.tsx | 25 + e2e/start/basic-rsc/app/routeTree.gen.ts | 325 +++++ e2e/start/basic-rsc/app/router.tsx | 21 + e2e/start/basic-rsc/app/routes/__root.tsx | 123 ++ e2e/start/basic-rsc/app/routes/_layout.tsx | 16 + .../app/routes/_layout/_layout-2.tsx | 34 + .../app/routes/_layout/_layout-2/layout-a.tsx | 9 + .../app/routes/_layout/_layout-2/layout-b.tsx | 9 + e2e/start/basic-rsc/app/routes/index.tsx | 13 + .../basic-rsc/app/routes/posts.$postId.tsx | 47 + .../basic-rsc/app/routes/posts.index.tsx | 10 + e2e/start/basic-rsc/app/routes/posts.tsx | 15 + .../app/routes/posts_.$postId.deep.tsx | 26 + e2e/start/basic-rsc/app/ssr.tsx | 12 + e2e/start/basic-rsc/app/styles/app.css | 14 + e2e/start/basic-rsc/app/utils/posts.tsx | 35 + e2e/start/basic-rsc/app/utils/renderPosts.tsx | 63 + e2e/start/basic-rsc/app/utils/seo.ts | 33 + e2e/start/basic-rsc/package.json | 39 + e2e/start/basic-rsc/postcss.config.cjs | 7 + .../public/android-chrome-192x192.png | Bin 0 -> 29964 bytes .../public/android-chrome-512x512.png | Bin 0 -> 109271 bytes .../basic-rsc/public/apple-touch-icon.png | Bin 0 -> 27246 bytes e2e/start/basic-rsc/public/favicon-16x16.png | Bin 0 -> 832 bytes e2e/start/basic-rsc/public/favicon-32x32.png | Bin 0 -> 2115 bytes e2e/start/basic-rsc/public/favicon.ico | Bin 0 -> 15406 bytes e2e/start/basic-rsc/public/favicon.png | Bin 0 -> 1507 bytes e2e/start/basic-rsc/public/site.webmanifest | 19 + e2e/start/basic-rsc/tailwind.config.cjs | 4 + e2e/start/basic-rsc/tsconfig.json | 22 + e2e/start/basic/.gitignore | 22 + e2e/start/basic/.prettierignore | 5 + e2e/start/basic/.prettierrc | 5 + e2e/start/basic/app.config.ts | 12 + e2e/start/basic/app/api.ts | 6 + e2e/start/basic/app/client.tsx | 7 + .../app/components/DefaultCatchBoundary.tsx | 53 + e2e/start/basic/app/components/NotFound.tsx | 25 + e2e/start/basic/app/routeTree.gen.ts | 460 +++++++ e2e/start/basic/app/router.tsx | 21 + e2e/start/basic/app/routes/__root.tsx | 139 ++ e2e/start/basic/app/routes/_layout.tsx | 16 + .../basic/app/routes/_layout/_layout-2.tsx | 34 + .../app/routes/_layout/_layout-2/layout-a.tsx | 9 + .../app/routes/_layout/_layout-2/layout-b.tsx | 9 + e2e/start/basic/app/routes/api.users.ts | 17 + e2e/start/basic/app/routes/api/users.$id.ts | 24 + e2e/start/basic/app/routes/deferred.tsx | 60 + e2e/start/basic/app/routes/index.tsx | 13 + e2e/start/basic/app/routes/posts.$postId.tsx | 38 + e2e/start/basic/app/routes/posts.index.tsx | 9 + e2e/start/basic/app/routes/posts.tsx | 38 + .../basic/app/routes/posts_.$postId.deep.tsx | 26 + e2e/start/basic/app/routes/redirect.tsx | 9 + e2e/start/basic/app/routes/users.$userId.tsx | 36 + e2e/start/basic/app/routes/users.index.tsx | 9 + e2e/start/basic/app/routes/users.tsx | 47 + e2e/start/basic/app/ssr.tsx | 12 + e2e/start/basic/app/styles/app.css | 14 + e2e/start/basic/app/utils/posts.tsx | 32 + e2e/start/basic/app/utils/seo.ts | 33 + e2e/start/basic/app/utils/users.tsx | 7 + e2e/start/basic/package.json | 41 + .../start/basic}/playwright.config.ts | 0 e2e/start/basic/postcss.config.cjs | 7 + .../basic/public/android-chrome-192x192.png | Bin 0 -> 29964 bytes .../basic/public/android-chrome-512x512.png | Bin 0 -> 109271 bytes e2e/start/basic/public/apple-touch-icon.png | Bin 0 -> 27246 bytes e2e/start/basic/public/favicon-16x16.png | Bin 0 -> 832 bytes e2e/start/basic/public/favicon-32x32.png | Bin 0 -> 2115 bytes e2e/start/basic/public/favicon.ico | Bin 0 -> 15406 bytes e2e/start/basic/public/favicon.png | Bin 0 -> 1507 bytes e2e/start/basic/public/site.webmanifest | 19 + e2e/start/basic/tailwind.config.cjs | 4 + .../start/basic}/tests/app.spec.ts | 0 e2e/start/basic/tsconfig.json | 22 + e2e/start/clerk-basic/.env | 2 + e2e/start/clerk-basic/.gitignore | 22 + e2e/start/clerk-basic/.prettierignore | 5 + e2e/start/clerk-basic/.prettierrc | 5 + e2e/start/clerk-basic/app.config.ts | 12 + e2e/start/clerk-basic/app/client.tsx | 7 + .../app/components/DefaultCatchBoundary.tsx | 53 + .../clerk-basic/app/components/NotFound.tsx | 25 + e2e/start/clerk-basic/app/routeTree.gen.ts | 232 ++++ e2e/start/clerk-basic/app/router.tsx | 21 + e2e/start/clerk-basic/app/routes/__root.tsx | 140 ++ e2e/start/clerk-basic/app/routes/_authed.tsx | 21 + .../app/routes/_authed/posts.$postId.tsx | 28 + .../app/routes/_authed/posts.index.tsx | 9 + .../clerk-basic/app/routes/_authed/posts.tsx | 38 + .../app/routes/_authed/profile.$.tsx | 38 + e2e/start/clerk-basic/app/routes/index.tsx | 13 + e2e/start/clerk-basic/app/ssr.tsx | 16 + e2e/start/clerk-basic/app/styles/app.css | 14 + e2e/start/clerk-basic/app/utils/posts.ts | 33 + e2e/start/clerk-basic/app/utils/seo.ts | 33 + e2e/start/clerk-basic/package.json | 44 + .../start/clerk-basic}/playwright.config.ts | 0 e2e/start/clerk-basic/postcss.config.cjs | 7 + .../public/android-chrome-192x192.png | Bin 0 -> 29964 bytes .../public/android-chrome-512x512.png | Bin 0 -> 109271 bytes .../clerk-basic/public/apple-touch-icon.png | Bin 0 -> 27246 bytes .../clerk-basic/public/favicon-16x16.png | Bin 0 -> 832 bytes .../clerk-basic/public/favicon-32x32.png | Bin 0 -> 2115 bytes e2e/start/clerk-basic/public/favicon.ico | Bin 0 -> 15406 bytes e2e/start/clerk-basic/public/favicon.png | Bin 0 -> 1507 bytes e2e/start/clerk-basic/public/site.webmanifest | 19 + e2e/start/clerk-basic/tailwind.config.cjs | 4 + .../start/clerk-basic}/tests/app.spec.ts | 0 e2e/start/clerk-basic/tsconfig.json | 22 + examples/react/basic-file-based/package.json | 4 +- .../basic-react-query-file-based/package.json | 4 +- examples/react/basic-react-query/package.json | 4 +- .../basic-virtual-file-based/package.json | 4 +- .../package.json | 1 - examples/react/basic/package.json | 4 +- examples/react/start-basic-auth/package.json | 7 +- .../react/start-basic-counter/package.json | 2 +- .../start-basic-react-query/package.json | 6 +- examples/react/start-basic-rsc/package.json | 2 +- examples/react/start-basic/package.json | 6 +- examples/react/start-clerk-basic/package.json | 7 +- .../react/start-convex-trellaux/package.json | 2 +- .../react/start-supabase-basic/package.json | 2 +- examples/react/start-trellaux/package.json | 2 +- package.json | 4 +- pnpm-lock.yaml | 1217 ++++++++--------- pnpm-workspace.yaml | 2 + 313 files changed, 9579 insertions(+), 655 deletions(-) create mode 100644 e2e/react-router/basic-file-based/.gitignore create mode 100644 e2e/react-router/basic-file-based/index.html create mode 100644 e2e/react-router/basic-file-based/package.json rename {examples/react => e2e/react-router}/basic-file-based/playwright.config.ts (100%) create mode 100644 e2e/react-router/basic-file-based/src/main.tsx create mode 100644 e2e/react-router/basic-file-based/src/posts.tsx create mode 100644 e2e/react-router/basic-file-based/src/routeTree.gen.ts create mode 100644 e2e/react-router/basic-file-based/src/routes/__root.tsx create mode 100644 e2e/react-router/basic-file-based/src/routes/_layout.tsx create mode 100644 e2e/react-router/basic-file-based/src/routes/_layout/_layout-2.tsx create mode 100644 e2e/react-router/basic-file-based/src/routes/_layout/_layout-2/layout-a.tsx create mode 100644 e2e/react-router/basic-file-based/src/routes/_layout/_layout-2/layout-b.tsx create mode 100644 e2e/react-router/basic-file-based/src/routes/index.tsx create mode 100644 e2e/react-router/basic-file-based/src/routes/posts.$postId.tsx create mode 100644 e2e/react-router/basic-file-based/src/routes/posts.index.tsx create mode 100644 e2e/react-router/basic-file-based/src/routes/posts.tsx rename {examples/react => e2e/react-router}/basic-file-based/tests/app.spec.ts (100%) create mode 100644 e2e/react-router/basic-file-based/tsconfig.json create mode 100644 e2e/react-router/basic-file-based/vite.config.js create mode 100644 e2e/react-router/basic-react-query-file-based/.gitignore create mode 100644 e2e/react-router/basic-react-query-file-based/index.html create mode 100644 e2e/react-router/basic-react-query-file-based/package.json rename {examples/react => e2e/react-router}/basic-react-query-file-based/playwright.config.ts (100%) create mode 100644 e2e/react-router/basic-react-query-file-based/src/main.tsx create mode 100644 e2e/react-router/basic-react-query-file-based/src/postQueryOptions.tsx create mode 100644 e2e/react-router/basic-react-query-file-based/src/posts.tsx create mode 100644 e2e/react-router/basic-react-query-file-based/src/postsQueryOptions.tsx create mode 100644 e2e/react-router/basic-react-query-file-based/src/routeTree.gen.ts create mode 100644 e2e/react-router/basic-react-query-file-based/src/routes/__root.tsx create mode 100644 e2e/react-router/basic-react-query-file-based/src/routes/_layout.tsx create mode 100644 e2e/react-router/basic-react-query-file-based/src/routes/_layout/_layout-2.tsx create mode 100644 e2e/react-router/basic-react-query-file-based/src/routes/_layout/_layout-2/layout-a.tsx create mode 100644 e2e/react-router/basic-react-query-file-based/src/routes/_layout/_layout-2/layout-b.tsx create mode 100644 e2e/react-router/basic-react-query-file-based/src/routes/index.tsx create mode 100644 e2e/react-router/basic-react-query-file-based/src/routes/posts.$postId.tsx create mode 100644 e2e/react-router/basic-react-query-file-based/src/routes/posts.index.tsx create mode 100644 e2e/react-router/basic-react-query-file-based/src/routes/posts.tsx rename {examples/react => e2e/react-router}/basic-react-query-file-based/tests/app.spec.ts (100%) create mode 100644 e2e/react-router/basic-react-query-file-based/tsconfig.json create mode 100644 e2e/react-router/basic-react-query-file-based/vite.config.js create mode 100644 e2e/react-router/basic-react-query/.gitignore create mode 100644 e2e/react-router/basic-react-query/index.html create mode 100644 e2e/react-router/basic-react-query/package.json rename {examples/react => e2e/react-router}/basic-react-query/playwright.config.ts (100%) create mode 100644 e2e/react-router/basic-react-query/src/main.tsx create mode 100644 e2e/react-router/basic-react-query/src/posts.lazy.tsx create mode 100644 e2e/react-router/basic-react-query/src/posts.ts rename {examples/react => e2e/react-router}/basic-react-query/tests/app.spec.ts (100%) create mode 100644 e2e/react-router/basic-react-query/tsconfig.json create mode 100644 e2e/react-router/basic-react-query/vite.config.js create mode 100644 e2e/react-router/basic-virtual-file-based/.gitignore create mode 100644 e2e/react-router/basic-virtual-file-based/index.html create mode 100644 e2e/react-router/basic-virtual-file-based/package.json rename {examples/react => e2e/react-router}/basic-virtual-file-based/playwright.config.ts (100%) create mode 100644 e2e/react-router/basic-virtual-file-based/routes.ts create mode 100644 e2e/react-router/basic-virtual-file-based/src/main.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/posts.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routeTree.gen.ts create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/a.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/b.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/index.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/route.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/universe.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/world.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/home.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/layout/first-layout.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/layout/second-layout.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/posts/posts-detail.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/posts/posts-home.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/posts/posts.tsx create mode 100644 e2e/react-router/basic-virtual-file-based/src/routes/root.tsx rename {examples/react => e2e/react-router}/basic-virtual-file-based/tests/app.spec.ts (100%) create mode 100644 e2e/react-router/basic-virtual-file-based/tsconfig.json create mode 100644 e2e/react-router/basic-virtual-file-based/vite.config.ts create mode 100644 e2e/react-router/basic/.gitignore create mode 100644 e2e/react-router/basic/index.html create mode 100644 e2e/react-router/basic/package.json rename {examples/react => e2e/react-router}/basic/playwright.config.ts (100%) create mode 100644 e2e/react-router/basic/src/main.tsx create mode 100644 e2e/react-router/basic/src/posts.lazy.tsx create mode 100644 e2e/react-router/basic/src/posts.ts rename {examples/react => e2e/react-router}/basic/tests/app.spec.ts (100%) create mode 100644 e2e/react-router/basic/tsconfig.json create mode 100644 e2e/react-router/basic/vite.config.js create mode 100644 e2e/start/basic-auth/.env create mode 100644 e2e/start/basic-auth/.gitignore create mode 100644 e2e/start/basic-auth/.prettierignore create mode 100644 e2e/start/basic-auth/.prettierrc create mode 100644 e2e/start/basic-auth/app.config.ts create mode 100644 e2e/start/basic-auth/app/client.tsx create mode 100644 e2e/start/basic-auth/app/components/Auth.tsx create mode 100644 e2e/start/basic-auth/app/components/DefaultCatchBoundary.tsx create mode 100644 e2e/start/basic-auth/app/components/Login.tsx create mode 100644 e2e/start/basic-auth/app/components/NotFound.tsx create mode 100644 e2e/start/basic-auth/app/hooks/useMutation.ts create mode 100644 e2e/start/basic-auth/app/routeTree.gen.ts create mode 100644 e2e/start/basic-auth/app/router.tsx create mode 100644 e2e/start/basic-auth/app/routes/__root.tsx create mode 100644 e2e/start/basic-auth/app/routes/_authed.tsx create mode 100644 e2e/start/basic-auth/app/routes/_authed/posts.$postId.tsx create mode 100644 e2e/start/basic-auth/app/routes/_authed/posts.index.tsx create mode 100644 e2e/start/basic-auth/app/routes/_authed/posts.tsx create mode 100644 e2e/start/basic-auth/app/routes/index.tsx create mode 100644 e2e/start/basic-auth/app/routes/login.tsx create mode 100644 e2e/start/basic-auth/app/routes/logout.tsx create mode 100644 e2e/start/basic-auth/app/routes/signup.tsx create mode 100644 e2e/start/basic-auth/app/ssr.tsx create mode 100644 e2e/start/basic-auth/app/styles/app.css create mode 100644 e2e/start/basic-auth/app/utils/posts.ts create mode 100644 e2e/start/basic-auth/app/utils/prisma.ts create mode 100644 e2e/start/basic-auth/app/utils/seo.ts create mode 100644 e2e/start/basic-auth/app/utils/session.ts create mode 100644 e2e/start/basic-auth/package.json rename {examples/react/start-basic-auth => e2e/start/basic-auth}/playwright.config.ts (100%) create mode 100644 e2e/start/basic-auth/postcss.config.cjs create mode 100644 e2e/start/basic-auth/prisma/dev.db create mode 100644 e2e/start/basic-auth/prisma/migrations/20240811183753_init/migration.sql create mode 100644 e2e/start/basic-auth/prisma/migrations/migration_lock.toml create mode 100644 e2e/start/basic-auth/prisma/schema.prisma create mode 100644 e2e/start/basic-auth/public/android-chrome-192x192.png create mode 100644 e2e/start/basic-auth/public/android-chrome-512x512.png create mode 100644 e2e/start/basic-auth/public/apple-touch-icon.png create mode 100644 e2e/start/basic-auth/public/favicon-16x16.png create mode 100644 e2e/start/basic-auth/public/favicon-32x32.png create mode 100644 e2e/start/basic-auth/public/favicon.ico create mode 100644 e2e/start/basic-auth/public/favicon.png create mode 100644 e2e/start/basic-auth/public/site.webmanifest create mode 100644 e2e/start/basic-auth/tailwind.config.cjs rename {examples/react/start-basic-auth => e2e/start/basic-auth}/tests/app.spec.ts (100%) rename {examples/react/start-basic-auth => e2e/start/basic-auth}/tests/mock-db-setup.test.ts (100%) rename {examples/react/start-basic-auth => e2e/start/basic-auth}/tests/mock-db-teardown.test.ts (100%) create mode 100644 e2e/start/basic-auth/tsconfig.json create mode 100644 e2e/start/basic-react-query/.gitignore create mode 100644 e2e/start/basic-react-query/.prettierignore create mode 100644 e2e/start/basic-react-query/.prettierrc create mode 100644 e2e/start/basic-react-query/app.config.ts create mode 100644 e2e/start/basic-react-query/app/api.ts create mode 100644 e2e/start/basic-react-query/app/client.tsx create mode 100644 e2e/start/basic-react-query/app/components/DefaultCatchBoundary.tsx create mode 100644 e2e/start/basic-react-query/app/components/NotFound.tsx create mode 100644 e2e/start/basic-react-query/app/routeTree.gen.ts create mode 100644 e2e/start/basic-react-query/app/router.tsx create mode 100644 e2e/start/basic-react-query/app/routes/__root.tsx create mode 100644 e2e/start/basic-react-query/app/routes/_layout.tsx create mode 100644 e2e/start/basic-react-query/app/routes/_layout/_layout-2.tsx create mode 100644 e2e/start/basic-react-query/app/routes/_layout/_layout-2/layout-a.tsx create mode 100644 e2e/start/basic-react-query/app/routes/_layout/_layout-2/layout-b.tsx create mode 100644 e2e/start/basic-react-query/app/routes/api.users.ts create mode 100644 e2e/start/basic-react-query/app/routes/api/users.$id.ts create mode 100644 e2e/start/basic-react-query/app/routes/deferred.tsx create mode 100644 e2e/start/basic-react-query/app/routes/index.tsx create mode 100644 e2e/start/basic-react-query/app/routes/posts.$postId.tsx create mode 100644 e2e/start/basic-react-query/app/routes/posts.index.tsx create mode 100644 e2e/start/basic-react-query/app/routes/posts.tsx create mode 100644 e2e/start/basic-react-query/app/routes/posts_.$postId.deep.tsx create mode 100644 e2e/start/basic-react-query/app/routes/redirect.tsx create mode 100644 e2e/start/basic-react-query/app/routes/users.$userId.tsx create mode 100644 e2e/start/basic-react-query/app/routes/users.index.tsx create mode 100644 e2e/start/basic-react-query/app/routes/users.tsx create mode 100644 e2e/start/basic-react-query/app/ssr.tsx create mode 100644 e2e/start/basic-react-query/app/styles/app.css create mode 100644 e2e/start/basic-react-query/app/utils/posts.tsx create mode 100644 e2e/start/basic-react-query/app/utils/seo.ts create mode 100644 e2e/start/basic-react-query/app/utils/users.tsx create mode 100644 e2e/start/basic-react-query/package.json rename {examples/react/start-basic-react-query => e2e/start/basic-react-query}/playwright.config.ts (100%) create mode 100644 e2e/start/basic-react-query/postcss.config.cjs create mode 100644 e2e/start/basic-react-query/public/android-chrome-192x192.png create mode 100644 e2e/start/basic-react-query/public/android-chrome-512x512.png create mode 100644 e2e/start/basic-react-query/public/apple-touch-icon.png create mode 100644 e2e/start/basic-react-query/public/favicon-16x16.png create mode 100644 e2e/start/basic-react-query/public/favicon-32x32.png create mode 100644 e2e/start/basic-react-query/public/favicon.ico create mode 100644 e2e/start/basic-react-query/public/favicon.png create mode 100644 e2e/start/basic-react-query/public/site.webmanifest create mode 100644 e2e/start/basic-react-query/tailwind.config.cjs rename {examples/react/start-basic-react-query => e2e/start/basic-react-query}/tests/app.spec.ts (100%) create mode 100644 e2e/start/basic-react-query/tsconfig.json create mode 100644 e2e/start/basic-rsc/.gitignore create mode 100644 e2e/start/basic-rsc/.prettierignore create mode 100644 e2e/start/basic-rsc/.prettierrc create mode 100644 e2e/start/basic-rsc/app.config.ts create mode 100644 e2e/start/basic-rsc/app/client.tsx create mode 100644 e2e/start/basic-rsc/app/components/DefaultCatchBoundary.tsx create mode 100644 e2e/start/basic-rsc/app/components/NotFound.tsx create mode 100644 e2e/start/basic-rsc/app/routeTree.gen.ts create mode 100644 e2e/start/basic-rsc/app/router.tsx create mode 100644 e2e/start/basic-rsc/app/routes/__root.tsx create mode 100644 e2e/start/basic-rsc/app/routes/_layout.tsx create mode 100644 e2e/start/basic-rsc/app/routes/_layout/_layout-2.tsx create mode 100644 e2e/start/basic-rsc/app/routes/_layout/_layout-2/layout-a.tsx create mode 100644 e2e/start/basic-rsc/app/routes/_layout/_layout-2/layout-b.tsx create mode 100644 e2e/start/basic-rsc/app/routes/index.tsx create mode 100644 e2e/start/basic-rsc/app/routes/posts.$postId.tsx create mode 100644 e2e/start/basic-rsc/app/routes/posts.index.tsx create mode 100644 e2e/start/basic-rsc/app/routes/posts.tsx create mode 100644 e2e/start/basic-rsc/app/routes/posts_.$postId.deep.tsx create mode 100644 e2e/start/basic-rsc/app/ssr.tsx create mode 100644 e2e/start/basic-rsc/app/styles/app.css create mode 100644 e2e/start/basic-rsc/app/utils/posts.tsx create mode 100644 e2e/start/basic-rsc/app/utils/renderPosts.tsx create mode 100644 e2e/start/basic-rsc/app/utils/seo.ts create mode 100644 e2e/start/basic-rsc/package.json create mode 100644 e2e/start/basic-rsc/postcss.config.cjs create mode 100644 e2e/start/basic-rsc/public/android-chrome-192x192.png create mode 100644 e2e/start/basic-rsc/public/android-chrome-512x512.png create mode 100644 e2e/start/basic-rsc/public/apple-touch-icon.png create mode 100644 e2e/start/basic-rsc/public/favicon-16x16.png create mode 100644 e2e/start/basic-rsc/public/favicon-32x32.png create mode 100644 e2e/start/basic-rsc/public/favicon.ico create mode 100644 e2e/start/basic-rsc/public/favicon.png create mode 100644 e2e/start/basic-rsc/public/site.webmanifest create mode 100644 e2e/start/basic-rsc/tailwind.config.cjs create mode 100644 e2e/start/basic-rsc/tsconfig.json create mode 100644 e2e/start/basic/.gitignore create mode 100644 e2e/start/basic/.prettierignore create mode 100644 e2e/start/basic/.prettierrc create mode 100644 e2e/start/basic/app.config.ts create mode 100644 e2e/start/basic/app/api.ts create mode 100644 e2e/start/basic/app/client.tsx create mode 100644 e2e/start/basic/app/components/DefaultCatchBoundary.tsx create mode 100644 e2e/start/basic/app/components/NotFound.tsx create mode 100644 e2e/start/basic/app/routeTree.gen.ts create mode 100644 e2e/start/basic/app/router.tsx create mode 100644 e2e/start/basic/app/routes/__root.tsx create mode 100644 e2e/start/basic/app/routes/_layout.tsx create mode 100644 e2e/start/basic/app/routes/_layout/_layout-2.tsx create mode 100644 e2e/start/basic/app/routes/_layout/_layout-2/layout-a.tsx create mode 100644 e2e/start/basic/app/routes/_layout/_layout-2/layout-b.tsx create mode 100644 e2e/start/basic/app/routes/api.users.ts create mode 100644 e2e/start/basic/app/routes/api/users.$id.ts create mode 100644 e2e/start/basic/app/routes/deferred.tsx create mode 100644 e2e/start/basic/app/routes/index.tsx create mode 100644 e2e/start/basic/app/routes/posts.$postId.tsx create mode 100644 e2e/start/basic/app/routes/posts.index.tsx create mode 100644 e2e/start/basic/app/routes/posts.tsx create mode 100644 e2e/start/basic/app/routes/posts_.$postId.deep.tsx create mode 100644 e2e/start/basic/app/routes/redirect.tsx create mode 100644 e2e/start/basic/app/routes/users.$userId.tsx create mode 100644 e2e/start/basic/app/routes/users.index.tsx create mode 100644 e2e/start/basic/app/routes/users.tsx create mode 100644 e2e/start/basic/app/ssr.tsx create mode 100644 e2e/start/basic/app/styles/app.css create mode 100644 e2e/start/basic/app/utils/posts.tsx create mode 100644 e2e/start/basic/app/utils/seo.ts create mode 100644 e2e/start/basic/app/utils/users.tsx create mode 100644 e2e/start/basic/package.json rename {examples/react/start-basic => e2e/start/basic}/playwright.config.ts (100%) create mode 100644 e2e/start/basic/postcss.config.cjs create mode 100644 e2e/start/basic/public/android-chrome-192x192.png create mode 100644 e2e/start/basic/public/android-chrome-512x512.png create mode 100644 e2e/start/basic/public/apple-touch-icon.png create mode 100644 e2e/start/basic/public/favicon-16x16.png create mode 100644 e2e/start/basic/public/favicon-32x32.png create mode 100644 e2e/start/basic/public/favicon.ico create mode 100644 e2e/start/basic/public/favicon.png create mode 100644 e2e/start/basic/public/site.webmanifest create mode 100644 e2e/start/basic/tailwind.config.cjs rename {examples/react/start-basic => e2e/start/basic}/tests/app.spec.ts (100%) create mode 100644 e2e/start/basic/tsconfig.json create mode 100644 e2e/start/clerk-basic/.env create mode 100644 e2e/start/clerk-basic/.gitignore create mode 100644 e2e/start/clerk-basic/.prettierignore create mode 100644 e2e/start/clerk-basic/.prettierrc create mode 100644 e2e/start/clerk-basic/app.config.ts create mode 100644 e2e/start/clerk-basic/app/client.tsx create mode 100644 e2e/start/clerk-basic/app/components/DefaultCatchBoundary.tsx create mode 100644 e2e/start/clerk-basic/app/components/NotFound.tsx create mode 100644 e2e/start/clerk-basic/app/routeTree.gen.ts create mode 100644 e2e/start/clerk-basic/app/router.tsx create mode 100644 e2e/start/clerk-basic/app/routes/__root.tsx create mode 100644 e2e/start/clerk-basic/app/routes/_authed.tsx create mode 100644 e2e/start/clerk-basic/app/routes/_authed/posts.$postId.tsx create mode 100644 e2e/start/clerk-basic/app/routes/_authed/posts.index.tsx create mode 100644 e2e/start/clerk-basic/app/routes/_authed/posts.tsx create mode 100644 e2e/start/clerk-basic/app/routes/_authed/profile.$.tsx create mode 100644 e2e/start/clerk-basic/app/routes/index.tsx create mode 100644 e2e/start/clerk-basic/app/ssr.tsx create mode 100644 e2e/start/clerk-basic/app/styles/app.css create mode 100644 e2e/start/clerk-basic/app/utils/posts.ts create mode 100644 e2e/start/clerk-basic/app/utils/seo.ts create mode 100644 e2e/start/clerk-basic/package.json rename {examples/react/start-clerk-basic => e2e/start/clerk-basic}/playwright.config.ts (100%) create mode 100644 e2e/start/clerk-basic/postcss.config.cjs create mode 100644 e2e/start/clerk-basic/public/android-chrome-192x192.png create mode 100644 e2e/start/clerk-basic/public/android-chrome-512x512.png create mode 100644 e2e/start/clerk-basic/public/apple-touch-icon.png create mode 100644 e2e/start/clerk-basic/public/favicon-16x16.png create mode 100644 e2e/start/clerk-basic/public/favicon-32x32.png create mode 100644 e2e/start/clerk-basic/public/favicon.ico create mode 100644 e2e/start/clerk-basic/public/favicon.png create mode 100644 e2e/start/clerk-basic/public/site.webmanifest create mode 100644 e2e/start/clerk-basic/tailwind.config.cjs rename {examples/react/start-clerk-basic => e2e/start/clerk-basic}/tests/app.spec.ts (100%) create mode 100644 e2e/start/clerk-basic/tsconfig.json diff --git a/e2e/react-router/basic-file-based/.gitignore b/e2e/react-router/basic-file-based/.gitignore new file mode 100644 index 0000000000..a6ea47e508 --- /dev/null +++ b/e2e/react-router/basic-file-based/.gitignore @@ -0,0 +1,10 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local + +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/e2e/react-router/basic-file-based/index.html b/e2e/react-router/basic-file-based/index.html new file mode 100644 index 0000000000..a4b3349437 --- /dev/null +++ b/e2e/react-router/basic-file-based/index.html @@ -0,0 +1,24 @@ + + + + + + Vite App + + + + +
+ + + diff --git a/e2e/react-router/basic-file-based/package.json b/e2e/react-router/basic-file-based/package.json new file mode 100644 index 0000000000..baccfe13d1 --- /dev/null +++ b/e2e/react-router/basic-file-based/package.json @@ -0,0 +1,29 @@ +{ + "name": "tanstack-router-e2e-react-basic-file-based", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --port=3001", + "build": "vite build && tsc --noEmit", + "serve": "vite preview", + "start": "vite", + "test:e2e": "playwright test --project=chromium" + }, + "dependencies": { + "@tanstack/react-router": "workspace:^", + "@tanstack/router-devtools": "workspace:^", + "@tanstack/router-plugin": "workspace:^", + "immer": "^10.1.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "redaxios": "^0.5.1", + "zod": "^3.23.8" + }, + "devDependencies": { + "@playwright/test": "^1.47.1", + "@types/react": "^18.2.47", + "@types/react-dom": "^18.2.18", + "@vitejs/plugin-react": "^4.3.1", + "vite": "^5.4.5" + } +} diff --git a/examples/react/basic-file-based/playwright.config.ts b/e2e/react-router/basic-file-based/playwright.config.ts similarity index 100% rename from examples/react/basic-file-based/playwright.config.ts rename to e2e/react-router/basic-file-based/playwright.config.ts diff --git a/e2e/react-router/basic-file-based/src/main.tsx b/e2e/react-router/basic-file-based/src/main.tsx new file mode 100644 index 0000000000..18b1b603f8 --- /dev/null +++ b/e2e/react-router/basic-file-based/src/main.tsx @@ -0,0 +1,25 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import { RouterProvider, createRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' + +// Set up a Router instance +const router = createRouter({ + routeTree, + defaultPreload: 'intent', + defaultStaleTime: 5000, +}) + +// Register things for typesafety +declare module '@tanstack/react-router' { + interface Register { + router: typeof router + } +} + +const rootElement = document.getElementById('app')! + +if (!rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement) + root.render() +} diff --git a/e2e/react-router/basic-file-based/src/posts.tsx b/e2e/react-router/basic-file-based/src/posts.tsx new file mode 100644 index 0000000000..3ccf1ff421 --- /dev/null +++ b/e2e/react-router/basic-file-based/src/posts.tsx @@ -0,0 +1,32 @@ +import { notFound } from '@tanstack/react-router' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPost = async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + await new Promise((r) => setTimeout(r, 500)) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + if (err.status === 404) { + throw notFound() + } + throw err + }) + + return post +} + +export const fetchPosts = async () => { + console.info('Fetching posts...') + await new Promise((r) => setTimeout(r, 500)) + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +} diff --git a/e2e/react-router/basic-file-based/src/routeTree.gen.ts b/e2e/react-router/basic-file-based/src/routeTree.gen.ts new file mode 100644 index 0000000000..149df203a2 --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routeTree.gen.ts @@ -0,0 +1,294 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as PostsImport } from './routes/posts' +import { Route as LayoutImport } from './routes/_layout' +import { Route as IndexImport } from './routes/index' +import { Route as PostsIndexImport } from './routes/posts.index' +import { Route as PostsPostIdImport } from './routes/posts.$postId' +import { Route as LayoutLayout2Import } from './routes/_layout/_layout-2' +import { Route as LayoutLayout2LayoutBImport } from './routes/_layout/_layout-2/layout-b' +import { Route as LayoutLayout2LayoutAImport } from './routes/_layout/_layout-2/layout-a' + +// Create/Update Routes + +const PostsRoute = PostsImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const LayoutRoute = LayoutImport.update({ + id: '/_layout', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const PostsIndexRoute = PostsIndexImport.update({ + path: '/', + getParentRoute: () => PostsRoute, +} as any) + +const PostsPostIdRoute = PostsPostIdImport.update({ + path: '/$postId', + getParentRoute: () => PostsRoute, +} as any) + +const LayoutLayout2Route = LayoutLayout2Import.update({ + id: '/_layout-2', + getParentRoute: () => LayoutRoute, +} as any) + +const LayoutLayout2LayoutBRoute = LayoutLayout2LayoutBImport.update({ + path: '/layout-b', + getParentRoute: () => LayoutLayout2Route, +} as any) + +const LayoutLayout2LayoutARoute = LayoutLayout2LayoutAImport.update({ + path: '/layout-a', + getParentRoute: () => LayoutLayout2Route, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/_layout': { + id: '/_layout' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsImport + parentRoute: typeof rootRoute + } + '/_layout/_layout-2': { + id: '/_layout/_layout-2' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutLayout2Import + parentRoute: typeof LayoutImport + } + '/posts/$postId': { + id: '/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof PostsPostIdImport + parentRoute: typeof PostsImport + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof PostsIndexImport + parentRoute: typeof PostsImport + } + '/_layout/_layout-2/layout-a': { + id: '/_layout/_layout-2/layout-a' + path: '/layout-a' + fullPath: '/layout-a' + preLoaderRoute: typeof LayoutLayout2LayoutAImport + parentRoute: typeof LayoutLayout2Import + } + '/_layout/_layout-2/layout-b': { + id: '/_layout/_layout-2/layout-b' + path: '/layout-b' + fullPath: '/layout-b' + preLoaderRoute: typeof LayoutLayout2LayoutBImport + parentRoute: typeof LayoutLayout2Import + } + } +} + +// Create and export the route tree + +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute +} + +export interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/posts' + | '/posts/$postId' + | '/posts/' + | '/layout-a' + | '/layout-b' + fileRoutesByTo: FileRoutesByTo + to: '/' | '' | '/posts/$postId' | '/posts' | '/layout-a' | '/layout-b' + id: + | '__root__' + | '/' + | '/_layout' + | '/posts' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/posts/' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + PostsRoute: typeof PostsRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + PostsRoute: PostsRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/_layout", + "/posts" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_layout": { + "filePath": "_layout.tsx", + "children": [ + "/_layout/_layout-2" + ] + }, + "/posts": { + "filePath": "posts.tsx", + "children": [ + "/posts/$postId", + "/posts/" + ] + }, + "/_layout/_layout-2": { + "filePath": "_layout/_layout-2.tsx", + "parent": "/_layout", + "children": [ + "/_layout/_layout-2/layout-a", + "/_layout/_layout-2/layout-b" + ] + }, + "/posts/$postId": { + "filePath": "posts.$postId.tsx", + "parent": "/posts" + }, + "/posts/": { + "filePath": "posts.index.tsx", + "parent": "/posts" + }, + "/_layout/_layout-2/layout-a": { + "filePath": "_layout/_layout-2/layout-a.tsx", + "parent": "/_layout/_layout-2" + }, + "/_layout/_layout-2/layout-b": { + "filePath": "_layout/_layout-2/layout-b.tsx", + "parent": "/_layout/_layout-2" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/e2e/react-router/basic-file-based/src/routes/__root.tsx b/e2e/react-router/basic-file-based/src/routes/__root.tsx new file mode 100644 index 0000000000..6b57d1e239 --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routes/__root.tsx @@ -0,0 +1,62 @@ +import * as React from 'react' +import { Link, Outlet, createRootRoute } from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' + +export const Route = createRootRoute({ + component: RootComponent, + notFoundComponent: () => { + return ( +
+

This is the notFoundComponent configured on root route

+ Start Over +
+ ) + }, +}) + +function RootComponent() { + return ( + <> +
+ + Home + {' '} + + Posts + {' '} + + Layout + {' '} + + This Route Does Not Exist + +
+
+ + {/* Start rendering router matches */} + + + ) +} diff --git a/e2e/react-router/basic-file-based/src/routes/_layout.tsx b/e2e/react-router/basic-file-based/src/routes/_layout.tsx new file mode 100644 index 0000000000..02ddbb1cd9 --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routes/_layout.tsx @@ -0,0 +1,16 @@ +import { Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a layout
+
+ +
+
+ ) +} diff --git a/e2e/react-router/basic-file-based/src/routes/_layout/_layout-2.tsx b/e2e/react-router/basic-file-based/src/routes/_layout/_layout-2.tsx new file mode 100644 index 0000000000..3b7dbf2903 --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routes/_layout/_layout-2.tsx @@ -0,0 +1,34 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a nested layout
+
+ + Layout A + + + Layout B + +
+
+ +
+
+ ) +} diff --git a/e2e/react-router/basic-file-based/src/routes/_layout/_layout-2/layout-a.tsx b/e2e/react-router/basic-file-based/src/routes/_layout/_layout-2/layout-a.tsx new file mode 100644 index 0000000000..61e19b4d9f --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routes/_layout/_layout-2/layout-a.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-a')({ + component: LayoutAComponent, +}) + +function LayoutAComponent() { + return
I'm layout A!
+} diff --git a/e2e/react-router/basic-file-based/src/routes/_layout/_layout-2/layout-b.tsx b/e2e/react-router/basic-file-based/src/routes/_layout/_layout-2/layout-b.tsx new file mode 100644 index 0000000000..cceed1fb9a --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routes/_layout/_layout-2/layout-b.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-b')({ + component: LayoutBComponent, +}) + +function LayoutBComponent() { + return
I'm layout B!
+} diff --git a/e2e/react-router/basic-file-based/src/routes/index.tsx b/e2e/react-router/basic-file-based/src/routes/index.tsx new file mode 100644 index 0000000000..eac82a9174 --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routes/index.tsx @@ -0,0 +1,14 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!

+
+ ) +} diff --git a/e2e/react-router/basic-file-based/src/routes/posts.$postId.tsx b/e2e/react-router/basic-file-based/src/routes/posts.$postId.tsx new file mode 100644 index 0000000000..febb02ab2f --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routes/posts.$postId.tsx @@ -0,0 +1,28 @@ +import * as React from 'react' +import { ErrorComponent, createFileRoute } from '@tanstack/react-router' +import { fetchPost } from '../posts' +import type { ErrorComponentProps } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/$postId')({ + loader: async ({ params: { postId } }) => fetchPost(postId), + errorComponent: PostErrorComponent as any, + notFoundComponent: () => { + return

Post not found

+ }, + component: PostComponent, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const post = Route.useLoaderData() + + return ( +
+

{post.title}

+
{post.body}
+
+ ) +} diff --git a/e2e/react-router/basic-file-based/src/routes/posts.index.tsx b/e2e/react-router/basic-file-based/src/routes/posts.index.tsx new file mode 100644 index 0000000000..056433ca0a --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routes/posts.index.tsx @@ -0,0 +1,10 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/e2e/react-router/basic-file-based/src/routes/posts.tsx b/e2e/react-router/basic-file-based/src/routes/posts.tsx new file mode 100644 index 0000000000..c7a09ed7f8 --- /dev/null +++ b/e2e/react-router/basic-file-based/src/routes/posts.tsx @@ -0,0 +1,39 @@ +import * as React from 'react' +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { fetchPosts } from '../posts' + +export const Route = createFileRoute('/posts')({ + loader: fetchPosts, + component: PostsComponent, +}) + +function PostsComponent() { + const posts = Route.useLoaderData() + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+
+ +
+ ) +} diff --git a/examples/react/basic-file-based/tests/app.spec.ts b/e2e/react-router/basic-file-based/tests/app.spec.ts similarity index 100% rename from examples/react/basic-file-based/tests/app.spec.ts rename to e2e/react-router/basic-file-based/tests/app.spec.ts diff --git a/e2e/react-router/basic-file-based/tsconfig.json b/e2e/react-router/basic-file-based/tsconfig.json new file mode 100644 index 0000000000..c9e17e2b68 --- /dev/null +++ b/e2e/react-router/basic-file-based/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx" + } +} diff --git a/e2e/react-router/basic-file-based/vite.config.js b/e2e/react-router/basic-file-based/vite.config.js new file mode 100644 index 0000000000..9cb8cad864 --- /dev/null +++ b/e2e/react-router/basic-file-based/vite.config.js @@ -0,0 +1,8 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import { TanStackRouterVite } from '@tanstack/router-plugin/vite' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [TanStackRouterVite(), react()], +}) diff --git a/e2e/react-router/basic-react-query-file-based/.gitignore b/e2e/react-router/basic-react-query-file-based/.gitignore new file mode 100644 index 0000000000..a6ea47e508 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/.gitignore @@ -0,0 +1,10 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local + +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/e2e/react-router/basic-react-query-file-based/index.html b/e2e/react-router/basic-react-query-file-based/index.html new file mode 100644 index 0000000000..a4b3349437 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/index.html @@ -0,0 +1,24 @@ + + + + + + Vite App + + + + +
+ + + diff --git a/e2e/react-router/basic-react-query-file-based/package.json b/e2e/react-router/basic-react-query-file-based/package.json new file mode 100644 index 0000000000..184ac95ac6 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/package.json @@ -0,0 +1,31 @@ +{ + "name": "tanstack-router-e2e-react-basic-react-query-file-based", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --port=3001", + "build": "vite build && tsc --noEmit", + "serve": "vite preview", + "start": "vite", + "test:e2e": "playwright test --project=chromium" + }, + "dependencies": { + "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query-devtools": "^5.56.2", + "@tanstack/react-router": "workspace:^", + "@tanstack/router-devtools": "workspace:^", + "@tanstack/router-plugin": "workspace:^", + "immer": "^10.1.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "redaxios": "^0.5.1", + "zod": "^3.23.8" + }, + "devDependencies": { + "@playwright/test": "^1.47.1", + "@types/react": "^18.2.47", + "@types/react-dom": "^18.2.18", + "@vitejs/plugin-react": "^4.3.1", + "vite": "^5.4.5" + } +} diff --git a/examples/react/basic-react-query-file-based/playwright.config.ts b/e2e/react-router/basic-react-query-file-based/playwright.config.ts similarity index 100% rename from examples/react/basic-react-query-file-based/playwright.config.ts rename to e2e/react-router/basic-react-query-file-based/playwright.config.ts diff --git a/e2e/react-router/basic-react-query-file-based/src/main.tsx b/e2e/react-router/basic-react-query-file-based/src/main.tsx new file mode 100644 index 0000000000..7f98a1d3d5 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/main.tsx @@ -0,0 +1,37 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import { RouterProvider, createRouter } from '@tanstack/react-router' +import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import { routeTree } from './routeTree.gen' + +const queryClient = new QueryClient() + +// Set up a Router instance +const router = createRouter({ + routeTree, + context: { + queryClient, + }, + defaultPreload: 'intent', + // Since we're using React Query, we don't want loader calls to ever be stale + // This will ensure that the loader is always called when the route is preloaded or visited + defaultPreloadStaleTime: 0, +}) + +// Register things for typesafety +declare module '@tanstack/react-router' { + interface Register { + router: typeof router + } +} + +const rootElement = document.getElementById('app')! + +if (!rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement) + root.render( + + + , + ) +} diff --git a/e2e/react-router/basic-react-query-file-based/src/postQueryOptions.tsx b/e2e/react-router/basic-react-query-file-based/src/postQueryOptions.tsx new file mode 100644 index 0000000000..f4dae09458 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/postQueryOptions.tsx @@ -0,0 +1,8 @@ +import { queryOptions } from '@tanstack/react-query' +import { fetchPost } from './posts' + +export const postQueryOptions = (postId: string) => + queryOptions({ + queryKey: ['posts', { postId }], + queryFn: () => fetchPost(postId), + }) diff --git a/e2e/react-router/basic-react-query-file-based/src/posts.tsx b/e2e/react-router/basic-react-query-file-based/src/posts.tsx new file mode 100644 index 0000000000..d551659b92 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/posts.tsx @@ -0,0 +1,33 @@ +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export class PostNotFoundError extends Error {} + +export const fetchPost = async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + await new Promise((r) => setTimeout(r, 500)) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + if (err.status === 404) { + throw new PostNotFoundError(`Post with id "${postId}" not found!`) + } + throw err + }) + + return post +} + +export const fetchPosts = async () => { + console.info('Fetching posts...') + await new Promise((r) => setTimeout(r, 500)) + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +} diff --git a/e2e/react-router/basic-react-query-file-based/src/postsQueryOptions.tsx b/e2e/react-router/basic-react-query-file-based/src/postsQueryOptions.tsx new file mode 100644 index 0000000000..6d96d627f3 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/postsQueryOptions.tsx @@ -0,0 +1,7 @@ +import { queryOptions } from '@tanstack/react-query' +import { fetchPosts } from './posts' + +export const postsQueryOptions = queryOptions({ + queryKey: ['posts'], + queryFn: () => fetchPosts(), +}) diff --git a/e2e/react-router/basic-react-query-file-based/src/routeTree.gen.ts b/e2e/react-router/basic-react-query-file-based/src/routeTree.gen.ts new file mode 100644 index 0000000000..149df203a2 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/routeTree.gen.ts @@ -0,0 +1,294 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as PostsImport } from './routes/posts' +import { Route as LayoutImport } from './routes/_layout' +import { Route as IndexImport } from './routes/index' +import { Route as PostsIndexImport } from './routes/posts.index' +import { Route as PostsPostIdImport } from './routes/posts.$postId' +import { Route as LayoutLayout2Import } from './routes/_layout/_layout-2' +import { Route as LayoutLayout2LayoutBImport } from './routes/_layout/_layout-2/layout-b' +import { Route as LayoutLayout2LayoutAImport } from './routes/_layout/_layout-2/layout-a' + +// Create/Update Routes + +const PostsRoute = PostsImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const LayoutRoute = LayoutImport.update({ + id: '/_layout', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const PostsIndexRoute = PostsIndexImport.update({ + path: '/', + getParentRoute: () => PostsRoute, +} as any) + +const PostsPostIdRoute = PostsPostIdImport.update({ + path: '/$postId', + getParentRoute: () => PostsRoute, +} as any) + +const LayoutLayout2Route = LayoutLayout2Import.update({ + id: '/_layout-2', + getParentRoute: () => LayoutRoute, +} as any) + +const LayoutLayout2LayoutBRoute = LayoutLayout2LayoutBImport.update({ + path: '/layout-b', + getParentRoute: () => LayoutLayout2Route, +} as any) + +const LayoutLayout2LayoutARoute = LayoutLayout2LayoutAImport.update({ + path: '/layout-a', + getParentRoute: () => LayoutLayout2Route, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/_layout': { + id: '/_layout' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsImport + parentRoute: typeof rootRoute + } + '/_layout/_layout-2': { + id: '/_layout/_layout-2' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutLayout2Import + parentRoute: typeof LayoutImport + } + '/posts/$postId': { + id: '/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof PostsPostIdImport + parentRoute: typeof PostsImport + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof PostsIndexImport + parentRoute: typeof PostsImport + } + '/_layout/_layout-2/layout-a': { + id: '/_layout/_layout-2/layout-a' + path: '/layout-a' + fullPath: '/layout-a' + preLoaderRoute: typeof LayoutLayout2LayoutAImport + parentRoute: typeof LayoutLayout2Import + } + '/_layout/_layout-2/layout-b': { + id: '/_layout/_layout-2/layout-b' + path: '/layout-b' + fullPath: '/layout-b' + preLoaderRoute: typeof LayoutLayout2LayoutBImport + parentRoute: typeof LayoutLayout2Import + } + } +} + +// Create and export the route tree + +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute +} + +export interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/posts' + | '/posts/$postId' + | '/posts/' + | '/layout-a' + | '/layout-b' + fileRoutesByTo: FileRoutesByTo + to: '/' | '' | '/posts/$postId' | '/posts' | '/layout-a' | '/layout-b' + id: + | '__root__' + | '/' + | '/_layout' + | '/posts' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/posts/' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + PostsRoute: typeof PostsRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + PostsRoute: PostsRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/_layout", + "/posts" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_layout": { + "filePath": "_layout.tsx", + "children": [ + "/_layout/_layout-2" + ] + }, + "/posts": { + "filePath": "posts.tsx", + "children": [ + "/posts/$postId", + "/posts/" + ] + }, + "/_layout/_layout-2": { + "filePath": "_layout/_layout-2.tsx", + "parent": "/_layout", + "children": [ + "/_layout/_layout-2/layout-a", + "/_layout/_layout-2/layout-b" + ] + }, + "/posts/$postId": { + "filePath": "posts.$postId.tsx", + "parent": "/posts" + }, + "/posts/": { + "filePath": "posts.index.tsx", + "parent": "/posts" + }, + "/_layout/_layout-2/layout-a": { + "filePath": "_layout/_layout-2/layout-a.tsx", + "parent": "/_layout/_layout-2" + }, + "/_layout/_layout-2/layout-b": { + "filePath": "_layout/_layout-2/layout-b.tsx", + "parent": "/_layout/_layout-2" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/e2e/react-router/basic-react-query-file-based/src/routes/__root.tsx b/e2e/react-router/basic-react-query-file-based/src/routes/__root.tsx new file mode 100644 index 0000000000..8f36e2c17b --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/routes/__root.tsx @@ -0,0 +1,70 @@ +import * as React from 'react' +import { + Link, + Outlet, + createRootRouteWithContext, +} from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' +import { ReactQueryDevtools } from '@tanstack/react-query-devtools' +import type { QueryClient } from '@tanstack/react-query' + +export const Route = createRootRouteWithContext<{ + queryClient: QueryClient +}>()({ + component: RootComponent, + notFoundComponent: () => { + return ( +
+

This is the notFoundComponent configured on root route

+ Start Over +
+ ) + }, +}) + +function RootComponent() { + return ( + <> +
+ + Home + {' '} + + Posts + {' '} + + Layout + {' '} + + This Route Does Not Exist + +
+
+ + + + + ) +} diff --git a/e2e/react-router/basic-react-query-file-based/src/routes/_layout.tsx b/e2e/react-router/basic-react-query-file-based/src/routes/_layout.tsx new file mode 100644 index 0000000000..02ddbb1cd9 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/routes/_layout.tsx @@ -0,0 +1,16 @@ +import { Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a layout
+
+ +
+
+ ) +} diff --git a/e2e/react-router/basic-react-query-file-based/src/routes/_layout/_layout-2.tsx b/e2e/react-router/basic-react-query-file-based/src/routes/_layout/_layout-2.tsx new file mode 100644 index 0000000000..3b7dbf2903 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/routes/_layout/_layout-2.tsx @@ -0,0 +1,34 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a nested layout
+
+ + Layout A + + + Layout B + +
+
+ +
+
+ ) +} diff --git a/e2e/react-router/basic-react-query-file-based/src/routes/_layout/_layout-2/layout-a.tsx b/e2e/react-router/basic-react-query-file-based/src/routes/_layout/_layout-2/layout-a.tsx new file mode 100644 index 0000000000..61e19b4d9f --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/routes/_layout/_layout-2/layout-a.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-a')({ + component: LayoutAComponent, +}) + +function LayoutAComponent() { + return
I'm layout A!
+} diff --git a/e2e/react-router/basic-react-query-file-based/src/routes/_layout/_layout-2/layout-b.tsx b/e2e/react-router/basic-react-query-file-based/src/routes/_layout/_layout-2/layout-b.tsx new file mode 100644 index 0000000000..cceed1fb9a --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/routes/_layout/_layout-2/layout-b.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-b')({ + component: LayoutBComponent, +}) + +function LayoutBComponent() { + return
I'm layout B!
+} diff --git a/e2e/react-router/basic-react-query-file-based/src/routes/index.tsx b/e2e/react-router/basic-react-query-file-based/src/routes/index.tsx new file mode 100644 index 0000000000..eac82a9174 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/routes/index.tsx @@ -0,0 +1,14 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!

+
+ ) +} diff --git a/e2e/react-router/basic-react-query-file-based/src/routes/posts.$postId.tsx b/e2e/react-router/basic-react-query-file-based/src/routes/posts.$postId.tsx new file mode 100644 index 0000000000..78455fdcdf --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/routes/posts.$postId.tsx @@ -0,0 +1,58 @@ +import * as React from 'react' +import { + ErrorComponent, + createFileRoute, + useRouter, +} from '@tanstack/react-router' +import { + useQueryErrorResetBoundary, + useSuspenseQuery, +} from '@tanstack/react-query' +import { PostNotFoundError } from '../posts' +import { postQueryOptions } from '../postQueryOptions' +import type { ErrorComponentProps } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/$postId')({ + loader: ({ context: { queryClient }, params: { postId } }) => { + return queryClient.ensureQueryData(postQueryOptions(postId)) + }, + errorComponent: PostErrorComponent, + component: PostComponent, +}) + +export function PostErrorComponent({ error, reset }: ErrorComponentProps) { + const router = useRouter() + if (error instanceof PostNotFoundError) { + return
{error.message}
+ } + const queryErrorResetBoundary = useQueryErrorResetBoundary() + + React.useEffect(() => { + queryErrorResetBoundary.reset() + }, [queryErrorResetBoundary]) + + return ( +
+ + +
+ ) +} + +function PostComponent() { + const postId = Route.useParams().postId + const { data: post } = useSuspenseQuery(postQueryOptions(postId)) + + return ( +
+

{post.title}

+
{post.body}
+
+ ) +} diff --git a/e2e/react-router/basic-react-query-file-based/src/routes/posts.index.tsx b/e2e/react-router/basic-react-query-file-based/src/routes/posts.index.tsx new file mode 100644 index 0000000000..056433ca0a --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/routes/posts.index.tsx @@ -0,0 +1,10 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/e2e/react-router/basic-react-query-file-based/src/routes/posts.tsx b/e2e/react-router/basic-react-query-file-based/src/routes/posts.tsx new file mode 100644 index 0000000000..86701f982c --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/src/routes/posts.tsx @@ -0,0 +1,42 @@ +import * as React from 'react' +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { useSuspenseQuery } from '@tanstack/react-query' +import { postsQueryOptions } from '../postsQueryOptions' + +export const Route = createFileRoute('/posts')({ + loader: ({ context: { queryClient } }) => + queryClient.ensureQueryData(postsQueryOptions), + component: PostsComponent, +}) + +function PostsComponent() { + const postsQuery = useSuspenseQuery(postsQueryOptions) + const posts = postsQuery.data + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+
+ +
+ ) +} diff --git a/examples/react/basic-react-query-file-based/tests/app.spec.ts b/e2e/react-router/basic-react-query-file-based/tests/app.spec.ts similarity index 100% rename from examples/react/basic-react-query-file-based/tests/app.spec.ts rename to e2e/react-router/basic-react-query-file-based/tests/app.spec.ts diff --git a/e2e/react-router/basic-react-query-file-based/tsconfig.json b/e2e/react-router/basic-react-query-file-based/tsconfig.json new file mode 100644 index 0000000000..f5a6cae049 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler" + } +} diff --git a/e2e/react-router/basic-react-query-file-based/vite.config.js b/e2e/react-router/basic-react-query-file-based/vite.config.js new file mode 100644 index 0000000000..9cb8cad864 --- /dev/null +++ b/e2e/react-router/basic-react-query-file-based/vite.config.js @@ -0,0 +1,8 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import { TanStackRouterVite } from '@tanstack/router-plugin/vite' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [TanStackRouterVite(), react()], +}) diff --git a/e2e/react-router/basic-react-query/.gitignore b/e2e/react-router/basic-react-query/.gitignore new file mode 100644 index 0000000000..a6ea47e508 --- /dev/null +++ b/e2e/react-router/basic-react-query/.gitignore @@ -0,0 +1,10 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local + +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/e2e/react-router/basic-react-query/index.html b/e2e/react-router/basic-react-query/index.html new file mode 100644 index 0000000000..a4b3349437 --- /dev/null +++ b/e2e/react-router/basic-react-query/index.html @@ -0,0 +1,24 @@ + + + + + + Vite App + + + + +
+ + + diff --git a/e2e/react-router/basic-react-query/package.json b/e2e/react-router/basic-react-query/package.json new file mode 100644 index 0000000000..21aabaa44f --- /dev/null +++ b/e2e/react-router/basic-react-query/package.json @@ -0,0 +1,28 @@ +{ + "name": "tanstack-router-e2e-react-react-query", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --port=3001", + "build": "vite build && tsc --noEmit", + "serve": "vite preview", + "start": "vite", + "test:e2e": "playwright test --project=chromium" + }, + "dependencies": { + "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query-devtools": "^5.56.2", + "@tanstack/react-router": "workspace:^", + "@tanstack/router-devtools": "workspace:^", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "redaxios": "^0.5.1" + }, + "devDependencies": { + "@playwright/test": "^1.47.1", + "@types/react": "^18.2.47", + "@types/react-dom": "^18.2.18", + "@vitejs/plugin-react": "^4.3.1", + "vite": "^5.4.5" + } +} diff --git a/examples/react/basic-react-query/playwright.config.ts b/e2e/react-router/basic-react-query/playwright.config.ts similarity index 100% rename from examples/react/basic-react-query/playwright.config.ts rename to e2e/react-router/basic-react-query/playwright.config.ts diff --git a/e2e/react-router/basic-react-query/src/main.tsx b/e2e/react-router/basic-react-query/src/main.tsx new file mode 100644 index 0000000000..a5455491c0 --- /dev/null +++ b/e2e/react-router/basic-react-query/src/main.tsx @@ -0,0 +1,274 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import { + ErrorComponent, + type ErrorComponentProps, + Link, + Outlet, + RouterProvider, + createRootRouteWithContext, + createRoute, + createRouter, + useRouter, +} from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' +import { ReactQueryDevtools } from '@tanstack/react-query-devtools' +import { + QueryClient, + QueryClientProvider, + useQueryErrorResetBoundary, + useSuspenseQuery, +} from '@tanstack/react-query' +import { NotFoundError, postQueryOptions, postsQueryOptions } from './posts' + +const rootRoute = createRootRouteWithContext<{ + queryClient: QueryClient +}>()({ + component: RootComponent, + notFoundComponent: () => { + return ( +
+

This is the notFoundComponent configured on root route

+ Start Over +
+ ) + }, +}) + +function RootComponent() { + return ( + <> +
+ + Home + {' '} + + Posts + {' '} + + Layout + {' '} + + This Route Does Not Exist + +
+
+ + + + + ) +} + +const indexRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/', + component: IndexRouteComponent, +}) + +function IndexRouteComponent() { + return ( +
+

Welcome Home!

+
+ ) +} + +const postsRoute = createRoute({ + getParentRoute: () => rootRoute, + path: 'posts', + loader: ({ context: { queryClient } }) => + queryClient.ensureQueryData(postsQueryOptions), +}).lazy(() => import('./posts.lazy').then((d) => d.Route)) + +const postsIndexRoute = createRoute({ + getParentRoute: () => postsRoute, + path: '/', + component: PostsIndexRouteComponent, +}) + +function PostsIndexRouteComponent() { + return
Select a post.
+} + +const postRoute = createRoute({ + getParentRoute: () => postsRoute, + path: '$postId', + errorComponent: PostErrorComponent, + loader: ({ context: { queryClient }, params: { postId } }) => + queryClient.ensureQueryData(postQueryOptions(postId)), + component: PostRouteComponent, +}) + +function PostErrorComponent({ error, reset }: ErrorComponentProps) { + const router = useRouter() + if (error instanceof NotFoundError) { + return
{error.message}
+ } + const queryErrorResetBoundary = useQueryErrorResetBoundary() + + React.useEffect(() => { + queryErrorResetBoundary.reset() + }, [queryErrorResetBoundary]) + + return ( +
+ + +
+ ) +} + +function PostRouteComponent() { + const { postId } = postRoute.useParams() + const postQuery = useSuspenseQuery(postQueryOptions(postId)) + const post = postQuery.data + + return ( +
+

{post.title}

+
{post.body}
+
+ ) +} + +const layoutRoute = createRoute({ + getParentRoute: () => rootRoute, + id: '_layout', + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a layout
+
+ +
+
+ ) +} + +const layout2Route = createRoute({ + getParentRoute: () => layoutRoute, + id: '_layout-2', + component: Layout2Component, +}) + +function Layout2Component() { + return ( +
+
I'm a nested layout
+
+ + Layout A + + + Layout B + +
+
+ +
+
+ ) +} + +const layoutARoute = createRoute({ + getParentRoute: () => layout2Route, + path: '/layout-a', + component: LayoutAComponent, +}) + +function LayoutAComponent() { + return
I'm layout A!
+} + +const layoutBRoute = createRoute({ + getParentRoute: () => layout2Route, + path: '/layout-b', + component: LayoutBComponent, +}) + +function LayoutBComponent() { + return
I'm layout B!
+} + +const routeTree = rootRoute.addChildren([ + postsRoute.addChildren([postRoute, postsIndexRoute]), + layoutRoute.addChildren([ + layout2Route.addChildren([layoutARoute, layoutBRoute]), + ]), + indexRoute, +]) + +const queryClient = new QueryClient() + +// Set up a Router instance +const router = createRouter({ + routeTree, + defaultPreload: 'intent', + // Since we're using React Query, we don't want loader calls to ever be stale + // This will ensure that the loader is always called when the route is preloaded or visited + defaultPreloadStaleTime: 0, + context: { + queryClient, + }, +}) + +// Register things for typesafety +declare module '@tanstack/react-router' { + interface Register { + router: typeof router + } +} + +const rootElement = document.getElementById('app')! + +if (!rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement) + + root.render( + + + , + ) +} diff --git a/e2e/react-router/basic-react-query/src/posts.lazy.tsx b/e2e/react-router/basic-react-query/src/posts.lazy.tsx new file mode 100644 index 0000000000..b5ed92e4ac --- /dev/null +++ b/e2e/react-router/basic-react-query/src/posts.lazy.tsx @@ -0,0 +1,40 @@ +import * as React from 'react' +import { Link, Outlet, createLazyRoute } from '@tanstack/react-router' +import { useSuspenseQuery } from '@tanstack/react-query' +import { postsQueryOptions } from './posts' + +export const Route = createLazyRoute('/posts')({ + component: PostsComponent, +}) + +function PostsComponent() { + const postsQuery = useSuspenseQuery(postsQueryOptions) + + const posts = postsQuery.data + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+ +
+ ) +} diff --git a/e2e/react-router/basic-react-query/src/posts.ts b/e2e/react-router/basic-react-query/src/posts.ts new file mode 100644 index 0000000000..54e126683e --- /dev/null +++ b/e2e/react-router/basic-react-query/src/posts.ts @@ -0,0 +1,44 @@ +import axios from 'redaxios' +import { queryOptions } from '@tanstack/react-query' + +export class NotFoundError extends Error {} + +type PostType = { + id: string + title: string + body: string +} + +const fetchPosts = async () => { + console.info('Fetching posts...') + await new Promise((r) => setTimeout(r, 500)) + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +} + +const fetchPost = async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + await new Promise((r) => setTimeout(r, 500)) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!post) { + throw new NotFoundError(`Post with id "${postId}" not found!`) + } + + return post +} + +export const postQueryOptions = (postId: string) => + queryOptions({ + queryKey: ['posts', { postId }], + queryFn: () => fetchPost(postId), + }) + +export const postsQueryOptions = queryOptions({ + queryKey: ['posts'], + queryFn: () => fetchPosts(), +}) diff --git a/examples/react/basic-react-query/tests/app.spec.ts b/e2e/react-router/basic-react-query/tests/app.spec.ts similarity index 100% rename from examples/react/basic-react-query/tests/app.spec.ts rename to e2e/react-router/basic-react-query/tests/app.spec.ts diff --git a/e2e/react-router/basic-react-query/tsconfig.json b/e2e/react-router/basic-react-query/tsconfig.json new file mode 100644 index 0000000000..0d2a31a7d7 --- /dev/null +++ b/e2e/react-router/basic-react-query/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", + "module": "ESNext" + } +} diff --git a/e2e/react-router/basic-react-query/vite.config.js b/e2e/react-router/basic-react-query/vite.config.js new file mode 100644 index 0000000000..5a33944a9b --- /dev/null +++ b/e2e/react-router/basic-react-query/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) diff --git a/e2e/react-router/basic-virtual-file-based/.gitignore b/e2e/react-router/basic-virtual-file-based/.gitignore new file mode 100644 index 0000000000..a6ea47e508 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/.gitignore @@ -0,0 +1,10 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local + +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/e2e/react-router/basic-virtual-file-based/index.html b/e2e/react-router/basic-virtual-file-based/index.html new file mode 100644 index 0000000000..a4b3349437 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/index.html @@ -0,0 +1,24 @@ + + + + + + Vite App + + + + +
+ + + diff --git a/e2e/react-router/basic-virtual-file-based/package.json b/e2e/react-router/basic-virtual-file-based/package.json new file mode 100644 index 0000000000..b7857ce83a --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/package.json @@ -0,0 +1,30 @@ +{ + "name": "tanstack-router-e2e-react-basic-virtual-file-based", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --port=3001", + "build": "vite build && tsc --noEmit", + "serve": "vite preview", + "start": "vite", + "test:e2e": "playwright test --project=chromium" + }, + "dependencies": { + "@tanstack/react-router": "workspace:^", + "@tanstack/router-devtools": "workspace:^", + "@tanstack/router-plugin": "workspace:^", + "@tanstack/virtual-file-routes": "workspace:^", + "immer": "^10.1.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "redaxios": "^0.5.1", + "zod": "^3.23.8" + }, + "devDependencies": { + "@playwright/test": "^1.47.1", + "@types/react": "^18.2.47", + "@types/react-dom": "^18.2.18", + "@vitejs/plugin-react": "^4.3.1", + "vite": "^5.4.5" + } +} diff --git a/examples/react/basic-virtual-file-based/playwright.config.ts b/e2e/react-router/basic-virtual-file-based/playwright.config.ts similarity index 100% rename from examples/react/basic-virtual-file-based/playwright.config.ts rename to e2e/react-router/basic-virtual-file-based/playwright.config.ts diff --git a/e2e/react-router/basic-virtual-file-based/routes.ts b/e2e/react-router/basic-virtual-file-based/routes.ts new file mode 100644 index 0000000000..6c2c144ec5 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/routes.ts @@ -0,0 +1,22 @@ +import { + index, + layout, + physical, + rootRoute, + route, +} from '@tanstack/virtual-file-routes' + +export const routes = rootRoute('root.tsx', [ + index('home.tsx'), + route('/posts', 'posts/posts.tsx', [ + index('posts/posts-home.tsx'), + route('$postId', 'posts/posts-detail.tsx'), + ]), + layout('first', 'layout/first-layout.tsx', [ + layout('second', 'layout/second-layout.tsx', [ + route('/layout-a', 'a.tsx'), + route('/layout-b', 'b.tsx'), + ]), + ]), + physical('/classic', 'file-based-subtree'), +]) diff --git a/e2e/react-router/basic-virtual-file-based/src/main.tsx b/e2e/react-router/basic-virtual-file-based/src/main.tsx new file mode 100644 index 0000000000..18b1b603f8 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/main.tsx @@ -0,0 +1,25 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import { RouterProvider, createRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' + +// Set up a Router instance +const router = createRouter({ + routeTree, + defaultPreload: 'intent', + defaultStaleTime: 5000, +}) + +// Register things for typesafety +declare module '@tanstack/react-router' { + interface Register { + router: typeof router + } +} + +const rootElement = document.getElementById('app')! + +if (!rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement) + root.render() +} diff --git a/e2e/react-router/basic-virtual-file-based/src/posts.tsx b/e2e/react-router/basic-virtual-file-based/src/posts.tsx new file mode 100644 index 0000000000..3ccf1ff421 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/posts.tsx @@ -0,0 +1,32 @@ +import { notFound } from '@tanstack/react-router' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPost = async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + await new Promise((r) => setTimeout(r, 500)) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + if (err.status === 404) { + throw notFound() + } + throw err + }) + + return post +} + +export const fetchPosts = async () => { + console.info('Fetching posts...') + await new Promise((r) => setTimeout(r, 500)) + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +} diff --git a/e2e/react-router/basic-virtual-file-based/src/routeTree.gen.ts b/e2e/react-router/basic-virtual-file-based/src/routeTree.gen.ts new file mode 100644 index 0000000000..da6e49f4dc --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routeTree.gen.ts @@ -0,0 +1,413 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/root' +import { Route as postsPostsImport } from './routes/posts/posts' +import { Route as layoutFirstLayoutImport } from './routes/layout/first-layout' +import { Route as homeImport } from './routes/home' +import { Route as postsPostsDetailImport } from './routes/posts/posts-detail' +import { Route as layoutSecondLayoutImport } from './routes/layout/second-layout' +import { Route as postsPostsHomeImport } from './routes/posts/posts-home' +import { Route as ClassicHelloRouteImport } from './routes/file-based-subtree/hello/route' +import { Route as ClassicHelloIndexImport } from './routes/file-based-subtree/hello/index' +import { Route as ClassicHelloWorldImport } from './routes/file-based-subtree/hello/world' +import { Route as ClassicHelloUniverseImport } from './routes/file-based-subtree/hello/universe' +import { Route as bImport } from './routes/b' +import { Route as aImport } from './routes/a' + +// Create/Update Routes + +const postsPostsRoute = postsPostsImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const layoutFirstLayoutRoute = layoutFirstLayoutImport.update({ + id: '/_first', + getParentRoute: () => rootRoute, +} as any) + +const homeRoute = homeImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const postsPostsDetailRoute = postsPostsDetailImport.update({ + path: '/$postId', + getParentRoute: () => postsPostsRoute, +} as any) + +const layoutSecondLayoutRoute = layoutSecondLayoutImport.update({ + id: '/_second', + getParentRoute: () => layoutFirstLayoutRoute, +} as any) + +const postsPostsHomeRoute = postsPostsHomeImport.update({ + path: '/', + getParentRoute: () => postsPostsRoute, +} as any) + +const ClassicHelloRouteRoute = ClassicHelloRouteImport.update({ + path: '/classic/hello', + getParentRoute: () => rootRoute, +} as any) + +const ClassicHelloIndexRoute = ClassicHelloIndexImport.update({ + path: '/', + getParentRoute: () => ClassicHelloRouteRoute, +} as any) + +const ClassicHelloWorldRoute = ClassicHelloWorldImport.update({ + path: '/world', + getParentRoute: () => ClassicHelloRouteRoute, +} as any) + +const ClassicHelloUniverseRoute = ClassicHelloUniverseImport.update({ + path: '/universe', + getParentRoute: () => ClassicHelloRouteRoute, +} as any) + +const bRoute = bImport.update({ + path: '/layout-b', + getParentRoute: () => layoutSecondLayoutRoute, +} as any) + +const aRoute = aImport.update({ + path: '/layout-a', + getParentRoute: () => layoutSecondLayoutRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof homeImport + parentRoute: typeof rootRoute + } + '/_first': { + id: '/_first' + path: '' + fullPath: '' + preLoaderRoute: typeof layoutFirstLayoutImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof postsPostsImport + parentRoute: typeof rootRoute + } + '/classic/hello': { + id: '/classic/hello' + path: '/classic/hello' + fullPath: '/classic/hello' + preLoaderRoute: typeof ClassicHelloRouteImport + parentRoute: typeof rootRoute + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof postsPostsHomeImport + parentRoute: typeof postsPostsImport + } + '/_first/_second': { + id: '/_first/_second' + path: '' + fullPath: '' + preLoaderRoute: typeof layoutSecondLayoutImport + parentRoute: typeof layoutFirstLayoutImport + } + '/posts/$postId': { + id: '/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof postsPostsDetailImport + parentRoute: typeof postsPostsImport + } + '/_first/_second/layout-a': { + id: '/_first/_second/layout-a' + path: '/layout-a' + fullPath: '/layout-a' + preLoaderRoute: typeof aImport + parentRoute: typeof layoutSecondLayoutImport + } + '/_first/_second/layout-b': { + id: '/_first/_second/layout-b' + path: '/layout-b' + fullPath: '/layout-b' + preLoaderRoute: typeof bImport + parentRoute: typeof layoutSecondLayoutImport + } + '/classic/hello/universe': { + id: '/classic/hello/universe' + path: '/universe' + fullPath: '/classic/hello/universe' + preLoaderRoute: typeof ClassicHelloUniverseImport + parentRoute: typeof ClassicHelloRouteImport + } + '/classic/hello/world': { + id: '/classic/hello/world' + path: '/world' + fullPath: '/classic/hello/world' + preLoaderRoute: typeof ClassicHelloWorldImport + parentRoute: typeof ClassicHelloRouteImport + } + '/classic/hello/': { + id: '/classic/hello/' + path: '/' + fullPath: '/classic/hello/' + preLoaderRoute: typeof ClassicHelloIndexImport + parentRoute: typeof ClassicHelloRouteImport + } + } +} + +// Create and export the route tree + +interface layoutSecondLayoutRouteChildren { + aRoute: typeof aRoute + bRoute: typeof bRoute +} + +const layoutSecondLayoutRouteChildren: layoutSecondLayoutRouteChildren = { + aRoute: aRoute, + bRoute: bRoute, +} + +const layoutSecondLayoutRouteWithChildren = + layoutSecondLayoutRoute._addFileChildren(layoutSecondLayoutRouteChildren) + +interface layoutFirstLayoutRouteChildren { + layoutSecondLayoutRoute: typeof layoutSecondLayoutRouteWithChildren +} + +const layoutFirstLayoutRouteChildren: layoutFirstLayoutRouteChildren = { + layoutSecondLayoutRoute: layoutSecondLayoutRouteWithChildren, +} + +const layoutFirstLayoutRouteWithChildren = + layoutFirstLayoutRoute._addFileChildren(layoutFirstLayoutRouteChildren) + +interface postsPostsRouteChildren { + postsPostsHomeRoute: typeof postsPostsHomeRoute + postsPostsDetailRoute: typeof postsPostsDetailRoute +} + +const postsPostsRouteChildren: postsPostsRouteChildren = { + postsPostsHomeRoute: postsPostsHomeRoute, + postsPostsDetailRoute: postsPostsDetailRoute, +} + +const postsPostsRouteWithChildren = postsPostsRoute._addFileChildren( + postsPostsRouteChildren, +) + +interface ClassicHelloRouteRouteChildren { + ClassicHelloUniverseRoute: typeof ClassicHelloUniverseRoute + ClassicHelloWorldRoute: typeof ClassicHelloWorldRoute + ClassicHelloIndexRoute: typeof ClassicHelloIndexRoute +} + +const ClassicHelloRouteRouteChildren: ClassicHelloRouteRouteChildren = { + ClassicHelloUniverseRoute: ClassicHelloUniverseRoute, + ClassicHelloWorldRoute: ClassicHelloWorldRoute, + ClassicHelloIndexRoute: ClassicHelloIndexRoute, +} + +const ClassicHelloRouteRouteWithChildren = + ClassicHelloRouteRoute._addFileChildren(ClassicHelloRouteRouteChildren) + +export interface FileRoutesByFullPath { + '/': typeof homeRoute + '': typeof layoutSecondLayoutRouteWithChildren + '/posts': typeof postsPostsRouteWithChildren + '/classic/hello': typeof ClassicHelloRouteRouteWithChildren + '/posts/': typeof postsPostsHomeRoute + '/posts/$postId': typeof postsPostsDetailRoute + '/layout-a': typeof aRoute + '/layout-b': typeof bRoute + '/classic/hello/universe': typeof ClassicHelloUniverseRoute + '/classic/hello/world': typeof ClassicHelloWorldRoute + '/classic/hello/': typeof ClassicHelloIndexRoute +} + +export interface FileRoutesByTo { + '/': typeof homeRoute + '': typeof layoutSecondLayoutRouteWithChildren + '/posts': typeof postsPostsHomeRoute + '/posts/$postId': typeof postsPostsDetailRoute + '/layout-a': typeof aRoute + '/layout-b': typeof bRoute + '/classic/hello/universe': typeof ClassicHelloUniverseRoute + '/classic/hello/world': typeof ClassicHelloWorldRoute + '/classic/hello': typeof ClassicHelloIndexRoute +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof homeRoute + '/_first': typeof layoutFirstLayoutRouteWithChildren + '/posts': typeof postsPostsRouteWithChildren + '/classic/hello': typeof ClassicHelloRouteRouteWithChildren + '/posts/': typeof postsPostsHomeRoute + '/_first/_second': typeof layoutSecondLayoutRouteWithChildren + '/posts/$postId': typeof postsPostsDetailRoute + '/_first/_second/layout-a': typeof aRoute + '/_first/_second/layout-b': typeof bRoute + '/classic/hello/universe': typeof ClassicHelloUniverseRoute + '/classic/hello/world': typeof ClassicHelloWorldRoute + '/classic/hello/': typeof ClassicHelloIndexRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/posts' + | '/classic/hello' + | '/posts/' + | '/posts/$postId' + | '/layout-a' + | '/layout-b' + | '/classic/hello/universe' + | '/classic/hello/world' + | '/classic/hello/' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/posts' + | '/posts/$postId' + | '/layout-a' + | '/layout-b' + | '/classic/hello/universe' + | '/classic/hello/world' + | '/classic/hello' + id: + | '__root__' + | '/' + | '/_first' + | '/posts' + | '/classic/hello' + | '/posts/' + | '/_first/_second' + | '/posts/$postId' + | '/_first/_second/layout-a' + | '/_first/_second/layout-b' + | '/classic/hello/universe' + | '/classic/hello/world' + | '/classic/hello/' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + homeRoute: typeof homeRoute + layoutFirstLayoutRoute: typeof layoutFirstLayoutRouteWithChildren + postsPostsRoute: typeof postsPostsRouteWithChildren + ClassicHelloRouteRoute: typeof ClassicHelloRouteRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + homeRoute: homeRoute, + layoutFirstLayoutRoute: layoutFirstLayoutRouteWithChildren, + postsPostsRoute: postsPostsRouteWithChildren, + ClassicHelloRouteRoute: ClassicHelloRouteRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "root.tsx", + "children": [ + "/", + "/_first", + "/posts", + "/classic/hello" + ] + }, + "/": { + "filePath": "home.tsx" + }, + "/_first": { + "filePath": "layout/first-layout.tsx", + "children": [ + "/_first/_second" + ] + }, + "/posts": { + "filePath": "posts/posts.tsx", + "children": [ + "/posts/", + "/posts/$postId" + ] + }, + "/classic/hello": { + "filePath": "file-based-subtree/hello/route.tsx", + "children": [ + "/classic/hello/universe", + "/classic/hello/world", + "/classic/hello/" + ] + }, + "/posts/": { + "filePath": "posts/posts-home.tsx", + "parent": "/posts" + }, + "/_first/_second": { + "filePath": "layout/second-layout.tsx", + "parent": "/_first", + "children": [ + "/_first/_second/layout-a", + "/_first/_second/layout-b" + ] + }, + "/posts/$postId": { + "filePath": "posts/posts-detail.tsx", + "parent": "/posts" + }, + "/_first/_second/layout-a": { + "filePath": "a.tsx", + "parent": "/_first/_second" + }, + "/_first/_second/layout-b": { + "filePath": "b.tsx", + "parent": "/_first/_second" + }, + "/classic/hello/universe": { + "filePath": "file-based-subtree/hello/universe.tsx", + "parent": "/classic/hello" + }, + "/classic/hello/world": { + "filePath": "file-based-subtree/hello/world.tsx", + "parent": "/classic/hello" + }, + "/classic/hello/": { + "filePath": "file-based-subtree/hello/index.tsx", + "parent": "/classic/hello" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/a.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/a.tsx new file mode 100644 index 0000000000..6cccd02950 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/a.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_first/_second/layout-a')({ + component: LayoutAComponent, +}) + +function LayoutAComponent() { + return
I'm layout A!
+} diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/b.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/b.tsx new file mode 100644 index 0000000000..98bb842612 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/b.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_first/_second/layout-b')({ + component: LayoutBComponent, +}) + +function LayoutBComponent() { + return
I'm layout B!
+} diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/index.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/index.tsx new file mode 100644 index 0000000000..7a6d5e3bd3 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/index.tsx @@ -0,0 +1,5 @@ +import { Link, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/classic/hello/')({ + component: () =>
This is the index
, +}) diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/route.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/route.tsx new file mode 100644 index 0000000000..566efc8777 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/route.tsx @@ -0,0 +1,27 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/classic/hello')({ + component: () => ( +
+ Hello! +
{' '} + + say hello to the universe + {' '} + + say hello to the world + + +
+ ), +}) diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/universe.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/universe.tsx new file mode 100644 index 0000000000..e00c47d74b --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/universe.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/classic/hello/universe')({ + component: () =>
Hello /classic/hello/universe!
, +}) diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/world.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/world.tsx new file mode 100644 index 0000000000..9783557342 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/file-based-subtree/hello/world.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/classic/hello/world')({ + component: () =>
Hello /classic/hello/world!
, +}) diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/home.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/home.tsx new file mode 100644 index 0000000000..eac82a9174 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/home.tsx @@ -0,0 +1,14 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!

+
+ ) +} diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/layout/first-layout.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/layout/first-layout.tsx new file mode 100644 index 0000000000..d39e206f2d --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/layout/first-layout.tsx @@ -0,0 +1,16 @@ +import { Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_first')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a layout
+
+ +
+
+ ) +} diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/layout/second-layout.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/layout/second-layout.tsx new file mode 100644 index 0000000000..ef178a6e16 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/layout/second-layout.tsx @@ -0,0 +1,34 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_first/_second')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a nested layout
+
+ + Layout A + + + Layout B + +
+
+ +
+
+ ) +} diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/posts/posts-detail.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/posts/posts-detail.tsx new file mode 100644 index 0000000000..948d52d6d6 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/posts/posts-detail.tsx @@ -0,0 +1,28 @@ +import * as React from 'react' +import { ErrorComponent, createFileRoute } from '@tanstack/react-router' +import { fetchPost } from '../../posts' +import type { ErrorComponentProps } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/$postId')({ + loader: async ({ params: { postId } }) => fetchPost(postId), + errorComponent: PostErrorComponent as any, + notFoundComponent: () => { + return

Post not found

+ }, + component: PostComponent, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const post = Route.useLoaderData() + + return ( +
+

{post.title}

+
{post.body}
+
+ ) +} diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/posts/posts-home.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/posts/posts-home.tsx new file mode 100644 index 0000000000..056433ca0a --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/posts/posts-home.tsx @@ -0,0 +1,10 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/posts/posts.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/posts/posts.tsx new file mode 100644 index 0000000000..a2ab1ee388 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/posts/posts.tsx @@ -0,0 +1,39 @@ +import * as React from 'react' +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { fetchPosts } from '../../posts' + +export const Route = createFileRoute('/posts')({ + loader: fetchPosts, + component: PostsComponent, +}) + +function PostsComponent() { + const posts = Route.useLoaderData() + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+
+ +
+ ) +} diff --git a/e2e/react-router/basic-virtual-file-based/src/routes/root.tsx b/e2e/react-router/basic-virtual-file-based/src/routes/root.tsx new file mode 100644 index 0000000000..05ac9527f3 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/src/routes/root.tsx @@ -0,0 +1,70 @@ +import * as React from 'react' +import { Link, Outlet, createRootRoute } from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' + +export const Route = createRootRoute({ + component: RootComponent, + notFoundComponent: () => { + return ( +
+

This is the notFoundComponent configured on root route

+ Start Over +
+ ) + }, +}) + +function RootComponent() { + return ( + <> +
+ + Home + {' '} + + Posts + {' '} + + Layout + {' '} + + Subtree + {' '} + + This Route Does Not Exist + +
+
+ + {/* Start rendering router matches */} + + + ) +} diff --git a/examples/react/basic-virtual-file-based/tests/app.spec.ts b/e2e/react-router/basic-virtual-file-based/tests/app.spec.ts similarity index 100% rename from examples/react/basic-virtual-file-based/tests/app.spec.ts rename to e2e/react-router/basic-virtual-file-based/tests/app.spec.ts diff --git a/e2e/react-router/basic-virtual-file-based/tsconfig.json b/e2e/react-router/basic-virtual-file-based/tsconfig.json new file mode 100644 index 0000000000..3c2cd577d6 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "Preserve", + "moduleResolution": "Bundler", + "target": "ESNext" + } +} diff --git a/e2e/react-router/basic-virtual-file-based/vite.config.ts b/e2e/react-router/basic-virtual-file-based/vite.config.ts new file mode 100644 index 0000000000..c1b8574783 --- /dev/null +++ b/e2e/react-router/basic-virtual-file-based/vite.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import { TanStackRouterVite } from '@tanstack/router-plugin/vite' +import { routes } from './routes' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [TanStackRouterVite({ virtualRouteConfig: routes }), react()], +}) diff --git a/e2e/react-router/basic/.gitignore b/e2e/react-router/basic/.gitignore new file mode 100644 index 0000000000..8354e4d50d --- /dev/null +++ b/e2e/react-router/basic/.gitignore @@ -0,0 +1,10 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local + +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ \ No newline at end of file diff --git a/e2e/react-router/basic/index.html b/e2e/react-router/basic/index.html new file mode 100644 index 0000000000..a4b3349437 --- /dev/null +++ b/e2e/react-router/basic/index.html @@ -0,0 +1,24 @@ + + + + + + Vite App + + + + +
+ + + diff --git a/e2e/react-router/basic/package.json b/e2e/react-router/basic/package.json new file mode 100644 index 0000000000..e8f110a69c --- /dev/null +++ b/e2e/react-router/basic/package.json @@ -0,0 +1,26 @@ +{ + "name": "tanstack-router-e2e-react-basic", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --port=3001", + "build": "vite build && tsc --noEmit", + "serve": "vite preview", + "start": "vite", + "test:e2e": "playwright test --project=chromium" + }, + "dependencies": { + "@tanstack/react-router": "workspace:^", + "@tanstack/router-devtools": "workspace:^", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "redaxios": "^0.5.1" + }, + "devDependencies": { + "@playwright/test": "^1.47.1", + "@types/react": "^18.2.47", + "@types/react-dom": "^18.2.18", + "@vitejs/plugin-react": "^4.3.1", + "vite": "^5.4.5" + } +} diff --git a/examples/react/basic/playwright.config.ts b/e2e/react-router/basic/playwright.config.ts similarity index 100% rename from examples/react/basic/playwright.config.ts rename to e2e/react-router/basic/playwright.config.ts diff --git a/e2e/react-router/basic/src/main.tsx b/e2e/react-router/basic/src/main.tsx new file mode 100644 index 0000000000..f75bdb8629 --- /dev/null +++ b/e2e/react-router/basic/src/main.tsx @@ -0,0 +1,229 @@ +import ReactDOM from 'react-dom/client' +import { + ErrorComponent, + type ErrorComponentProps, + Link, + Outlet, + RouterProvider, + createRootRoute, + createRoute, + createRouter, +} from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' +import { NotFoundError, fetchPost, fetchPosts } from './posts' + +const rootRoute = createRootRoute({ + component: RootComponent, + notFoundComponent: () => { + return ( +
+

This is the notFoundComponent configured on root route

+ Start Over +
+ ) + }, +}) + +function RootComponent() { + return ( + <> +
+ + Home + {' '} + + Posts + {' '} + + Layout + {' '} + + This Route Does Not Exist + +
+ + + + ) +} +const indexRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/', + component: IndexComponent, +}) + +function IndexComponent() { + return ( +
+

Welcome Home!

+
+ ) +} + +export const postsRoute = createRoute({ + getParentRoute: () => rootRoute, + path: 'posts', + loader: () => fetchPosts(), +}).lazy(() => import('./posts.lazy').then((d) => d.Route)) + +const postsIndexRoute = createRoute({ + getParentRoute: () => postsRoute, + path: '/', + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} + +const postRoute = createRoute({ + getParentRoute: () => postsRoute, + path: '$postId', + errorComponent: PostErrorComponent, + loader: ({ params }) => fetchPost(params.postId), + component: PostComponent, +}) + +function PostErrorComponent({ error }: ErrorComponentProps) { + if (error instanceof NotFoundError) { + return
{error.message}
+ } + + return +} + +function PostComponent() { + const post = postRoute.useLoaderData() + + return ( +
+

{post.title}

+
+
{post.body}
+
+ ) +} + +const layoutRoute = createRoute({ + getParentRoute: () => rootRoute, + id: '_layout', + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a layout
+
+ +
+
+ ) +} + +const layout2Route = createRoute({ + getParentRoute: () => layoutRoute, + id: '_layout-2', + component: Layout2Component, +}) + +function Layout2Component() { + return ( +
+
I'm a nested layout
+
+ + Layout A + + + Layout B + +
+
+ +
+
+ ) +} + +const layoutARoute = createRoute({ + getParentRoute: () => layout2Route, + path: '/layout-a', + component: LayoutAComponent, +}) + +function LayoutAComponent() { + return
I'm layout A!
+} + +const layoutBRoute = createRoute({ + getParentRoute: () => layout2Route, + path: '/layout-b', + component: LayoutBComponent, +}) + +function LayoutBComponent() { + return
I'm layout B!
+} + +const routeTree = rootRoute.addChildren([ + postsRoute.addChildren([postRoute, postsIndexRoute]), + layoutRoute.addChildren([ + layout2Route.addChildren([layoutARoute, layoutBRoute]), + ]), + indexRoute, +]) + +// Set up a Router instance +const router = createRouter({ + routeTree, + defaultPreload: 'intent', + defaultStaleTime: 5000, +}) + +// Register things for typesafety +declare module '@tanstack/react-router' { + interface Register { + router: typeof router + } +} + +const rootElement = document.getElementById('app')! + +if (!rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement) + + root.render() +} diff --git a/e2e/react-router/basic/src/posts.lazy.tsx b/e2e/react-router/basic/src/posts.lazy.tsx new file mode 100644 index 0000000000..dd17e6b7db --- /dev/null +++ b/e2e/react-router/basic/src/posts.lazy.tsx @@ -0,0 +1,36 @@ +import * as React from 'react' +import { Link, Outlet, createLazyRoute } from '@tanstack/react-router' + +export const Route = createLazyRoute('/posts')({ + component: PostsComponent, +}) + +function PostsComponent() { + const posts = Route.useLoaderData() + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+ +
+ ) +} diff --git a/e2e/react-router/basic/src/posts.ts b/e2e/react-router/basic/src/posts.ts new file mode 100644 index 0000000000..54d62e5788 --- /dev/null +++ b/e2e/react-router/basic/src/posts.ts @@ -0,0 +1,32 @@ +import axios from 'redaxios' + +export class NotFoundError extends Error {} + +type PostType = { + id: string + title: string + body: string +} + +export const fetchPosts = async () => { + console.info('Fetching posts...') + await new Promise((r) => setTimeout(r, 500)) + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +} + +export const fetchPost = async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + await new Promise((r) => setTimeout(r, 500)) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!post) { + throw new NotFoundError(`Post with id "${postId}" not found!`) + } + + return post +} diff --git a/examples/react/basic/tests/app.spec.ts b/e2e/react-router/basic/tests/app.spec.ts similarity index 100% rename from examples/react/basic/tests/app.spec.ts rename to e2e/react-router/basic/tests/app.spec.ts diff --git a/e2e/react-router/basic/tsconfig.json b/e2e/react-router/basic/tsconfig.json new file mode 100644 index 0000000000..0d2a31a7d7 --- /dev/null +++ b/e2e/react-router/basic/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", + "module": "ESNext" + } +} diff --git a/e2e/react-router/basic/vite.config.js b/e2e/react-router/basic/vite.config.js new file mode 100644 index 0000000000..5a33944a9b --- /dev/null +++ b/e2e/react-router/basic/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) diff --git a/e2e/start/basic-auth/.env b/e2e/start/basic-auth/.env new file mode 100644 index 0000000000..c498ab59bf --- /dev/null +++ b/e2e/start/basic-auth/.env @@ -0,0 +1,7 @@ +# Environment variables declared in this file are automatically made available to Prisma. +# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema + +# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB. +# See the documentation for all the connection string options: https://pris.ly/d/connection-strings + +DATABASE_URL="file:./dev.db" \ No newline at end of file diff --git a/e2e/start/basic-auth/.gitignore b/e2e/start/basic-auth/.gitignore new file mode 100644 index 0000000000..b15fed94e2 --- /dev/null +++ b/e2e/start/basic-auth/.gitignore @@ -0,0 +1,22 @@ +node_modules +package-lock.json +yarn.lock + +!.env +.DS_Store +.cache +.vercel +.output +.vinxi + +/build/ +/api/ +/server/build +/public/build +.vinxi +# Sentry Config File +.env.sentry-build-plugin +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/e2e/start/basic-auth/.prettierignore b/e2e/start/basic-auth/.prettierignore new file mode 100644 index 0000000000..fd1b50a539 --- /dev/null +++ b/e2e/start/basic-auth/.prettierignore @@ -0,0 +1,5 @@ +**/api +**/build +**/public +pnpm-lock.yaml +routeTree.gen.ts \ No newline at end of file diff --git a/e2e/start/basic-auth/.prettierrc b/e2e/start/basic-auth/.prettierrc new file mode 100644 index 0000000000..aaf3357d4a --- /dev/null +++ b/e2e/start/basic-auth/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "semi": false, + "trailingComma": "all" +} diff --git a/e2e/start/basic-auth/app.config.ts b/e2e/start/basic-auth/app.config.ts new file mode 100644 index 0000000000..d1d9b04ded --- /dev/null +++ b/e2e/start/basic-auth/app.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from '@tanstack/start/config' +import tsConfigPaths from 'vite-tsconfig-paths' + +export default defineConfig({ + vite: { + plugins: () => [ + tsConfigPaths({ + projects: ['./tsconfig.json'], + }), + ], + }, +}) diff --git a/e2e/start/basic-auth/app/client.tsx b/e2e/start/basic-auth/app/client.tsx new file mode 100644 index 0000000000..f16ba73f62 --- /dev/null +++ b/e2e/start/basic-auth/app/client.tsx @@ -0,0 +1,7 @@ +import { hydrateRoot } from 'react-dom/client' +import { StartClient } from '@tanstack/start' +import { createRouter } from './router' + +const router = createRouter() + +hydrateRoot(document.getElementById('root')!, ) diff --git a/e2e/start/basic-auth/app/components/Auth.tsx b/e2e/start/basic-auth/app/components/Auth.tsx new file mode 100644 index 0000000000..7504f8649b --- /dev/null +++ b/e2e/start/basic-auth/app/components/Auth.tsx @@ -0,0 +1,57 @@ +export function Auth({ + actionText, + onSubmit, + status, + afterSubmit, +}: { + actionText: string + onSubmit: (e: React.FormEvent) => void + status: 'pending' | 'idle' | 'success' | 'error' + afterSubmit?: React.ReactNode +}) { + return ( +
+
+

{actionText}

+ { + e.preventDefault() + onSubmit(e) + }} + className="space-y-4" + > +
+ + +
+
+ + +
+ + {afterSubmit ? afterSubmit : null} + +
+
+ ) +} diff --git a/e2e/start/basic-auth/app/components/DefaultCatchBoundary.tsx b/e2e/start/basic-auth/app/components/DefaultCatchBoundary.tsx new file mode 100644 index 0000000000..f0ce51dc57 --- /dev/null +++ b/e2e/start/basic-auth/app/components/DefaultCatchBoundary.tsx @@ -0,0 +1,53 @@ +import { + ErrorComponent, + ErrorComponentProps, + Link, + rootRouteId, + useMatch, + useRouter, +} from '@tanstack/react-router' + +export function DefaultCatchBoundary({ error }: ErrorComponentProps) { + const router = useRouter() + const isRoot = useMatch({ + strict: false, + select: (state) => state.id === rootRouteId, + }) + + console.error(error) + + return ( +
+ +
+ + {isRoot ? ( + + Home + + ) : ( + { + e.preventDefault() + window.history.back() + }} + > + Go Back + + )} +
+
+ ) +} diff --git a/e2e/start/basic-auth/app/components/Login.tsx b/e2e/start/basic-auth/app/components/Login.tsx new file mode 100644 index 0000000000..6e114612e7 --- /dev/null +++ b/e2e/start/basic-auth/app/components/Login.tsx @@ -0,0 +1,67 @@ +import { useRouter } from '@tanstack/react-router' +import { useServerFn } from '@tanstack/start' +import { useMutation } from '../hooks/useMutation' +import { loginFn } from '../routes/_authed' +import { Auth } from './Auth' +import { signupFn } from '~/routes/signup' + +export function Login() { + const router = useRouter() + + const loginMutation = useMutation({ + fn: loginFn, + onSuccess: async (ctx) => { + if (!ctx.data?.error) { + await router.invalidate() + router.navigate({ to: '/' }) + return + } + }, + }) + + const signupMutation = useMutation({ + fn: useServerFn(signupFn), + }) + + return ( + { + const formData = new FormData(e.target as HTMLFormElement) + + loginMutation.mutate({ + email: formData.get('email') as string, + password: formData.get('password') as string, + }) + }} + afterSubmit={ + loginMutation.data ? ( + <> +
{loginMutation.data.message}
+ {loginMutation.data.userNotFound ? ( +
+ +
+ ) : null} + + ) : null + } + /> + ) +} diff --git a/e2e/start/basic-auth/app/components/NotFound.tsx b/e2e/start/basic-auth/app/components/NotFound.tsx new file mode 100644 index 0000000000..7b54fa5680 --- /dev/null +++ b/e2e/start/basic-auth/app/components/NotFound.tsx @@ -0,0 +1,25 @@ +import { Link } from '@tanstack/react-router' + +export function NotFound({ children }: { children?: any }) { + return ( +
+
+ {children ||

The page you are looking for does not exist.

} +
+

+ + + Start Over + +

+
+ ) +} diff --git a/e2e/start/basic-auth/app/hooks/useMutation.ts b/e2e/start/basic-auth/app/hooks/useMutation.ts new file mode 100644 index 0000000000..1ff7a4653b --- /dev/null +++ b/e2e/start/basic-auth/app/hooks/useMutation.ts @@ -0,0 +1,44 @@ +import * as React from 'react' + +export function useMutation(opts: { + fn: (variables: TVariables) => Promise + onSuccess?: (ctx: { data: TData }) => void | Promise +}) { + const [submittedAt, setSubmittedAt] = React.useState() + const [variables, setVariables] = React.useState() + const [error, setError] = React.useState() + const [data, setData] = React.useState() + const [status, setStatus] = React.useState< + 'idle' | 'pending' | 'success' | 'error' + >('idle') + + const mutate = React.useCallback( + async (variables: TVariables): Promise => { + setStatus('pending') + setSubmittedAt(Date.now()) + setVariables(variables) + // + try { + const data = await opts.fn(variables) + await opts.onSuccess?.({ data }) + setStatus('success') + setError(undefined) + setData(data) + return data + } catch (err: any) { + setStatus('error') + setError(err) + } + }, + [opts.fn], + ) + + return { + status, + variables, + submittedAt, + mutate, + error, + data, + } +} diff --git a/e2e/start/basic-auth/app/routeTree.gen.ts b/e2e/start/basic-auth/app/routeTree.gen.ts new file mode 100644 index 0000000000..5057c1f72b --- /dev/null +++ b/e2e/start/basic-auth/app/routeTree.gen.ts @@ -0,0 +1,285 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as SignupImport } from './routes/signup' +import { Route as LogoutImport } from './routes/logout' +import { Route as LoginImport } from './routes/login' +import { Route as AuthedImport } from './routes/_authed' +import { Route as IndexImport } from './routes/index' +import { Route as AuthedPostsImport } from './routes/_authed/posts' +import { Route as AuthedPostsIndexImport } from './routes/_authed/posts.index' +import { Route as AuthedPostsPostIdImport } from './routes/_authed/posts.$postId' + +// Create/Update Routes + +const SignupRoute = SignupImport.update({ + path: '/signup', + getParentRoute: () => rootRoute, +} as any) + +const LogoutRoute = LogoutImport.update({ + path: '/logout', + getParentRoute: () => rootRoute, +} as any) + +const LoginRoute = LoginImport.update({ + path: '/login', + getParentRoute: () => rootRoute, +} as any) + +const AuthedRoute = AuthedImport.update({ + id: '/_authed', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const AuthedPostsRoute = AuthedPostsImport.update({ + path: '/posts', + getParentRoute: () => AuthedRoute, +} as any) + +const AuthedPostsIndexRoute = AuthedPostsIndexImport.update({ + path: '/', + getParentRoute: () => AuthedPostsRoute, +} as any) + +const AuthedPostsPostIdRoute = AuthedPostsPostIdImport.update({ + path: '/$postId', + getParentRoute: () => AuthedPostsRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/_authed': { + id: '/_authed' + path: '' + fullPath: '' + preLoaderRoute: typeof AuthedImport + parentRoute: typeof rootRoute + } + '/login': { + id: '/login' + path: '/login' + fullPath: '/login' + preLoaderRoute: typeof LoginImport + parentRoute: typeof rootRoute + } + '/logout': { + id: '/logout' + path: '/logout' + fullPath: '/logout' + preLoaderRoute: typeof LogoutImport + parentRoute: typeof rootRoute + } + '/signup': { + id: '/signup' + path: '/signup' + fullPath: '/signup' + preLoaderRoute: typeof SignupImport + parentRoute: typeof rootRoute + } + '/_authed/posts': { + id: '/_authed/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof AuthedPostsImport + parentRoute: typeof AuthedImport + } + '/_authed/posts/$postId': { + id: '/_authed/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof AuthedPostsPostIdImport + parentRoute: typeof AuthedPostsImport + } + '/_authed/posts/': { + id: '/_authed/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof AuthedPostsIndexImport + parentRoute: typeof AuthedPostsImport + } + } +} + +// Create and export the route tree + +interface AuthedPostsRouteChildren { + AuthedPostsPostIdRoute: typeof AuthedPostsPostIdRoute + AuthedPostsIndexRoute: typeof AuthedPostsIndexRoute +} + +const AuthedPostsRouteChildren: AuthedPostsRouteChildren = { + AuthedPostsPostIdRoute: AuthedPostsPostIdRoute, + AuthedPostsIndexRoute: AuthedPostsIndexRoute, +} + +const AuthedPostsRouteWithChildren = AuthedPostsRoute._addFileChildren( + AuthedPostsRouteChildren, +) + +interface AuthedRouteChildren { + AuthedPostsRoute: typeof AuthedPostsRouteWithChildren +} + +const AuthedRouteChildren: AuthedRouteChildren = { + AuthedPostsRoute: AuthedPostsRouteWithChildren, +} + +const AuthedRouteWithChildren = + AuthedRoute._addFileChildren(AuthedRouteChildren) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof AuthedRouteWithChildren + '/login': typeof LoginRoute + '/logout': typeof LogoutRoute + '/signup': typeof SignupRoute + '/posts': typeof AuthedPostsRouteWithChildren + '/posts/$postId': typeof AuthedPostsPostIdRoute + '/posts/': typeof AuthedPostsIndexRoute +} + +export interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof AuthedRouteWithChildren + '/login': typeof LoginRoute + '/logout': typeof LogoutRoute + '/signup': typeof SignupRoute + '/posts/$postId': typeof AuthedPostsPostIdRoute + '/posts': typeof AuthedPostsIndexRoute +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof IndexRoute + '/_authed': typeof AuthedRouteWithChildren + '/login': typeof LoginRoute + '/logout': typeof LogoutRoute + '/signup': typeof SignupRoute + '/_authed/posts': typeof AuthedPostsRouteWithChildren + '/_authed/posts/$postId': typeof AuthedPostsPostIdRoute + '/_authed/posts/': typeof AuthedPostsIndexRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/login' + | '/logout' + | '/signup' + | '/posts' + | '/posts/$postId' + | '/posts/' + fileRoutesByTo: FileRoutesByTo + to: '/' | '' | '/login' | '/logout' | '/signup' | '/posts/$postId' | '/posts' + id: + | '__root__' + | '/' + | '/_authed' + | '/login' + | '/logout' + | '/signup' + | '/_authed/posts' + | '/_authed/posts/$postId' + | '/_authed/posts/' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AuthedRoute: typeof AuthedRouteWithChildren + LoginRoute: typeof LoginRoute + LogoutRoute: typeof LogoutRoute + SignupRoute: typeof SignupRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AuthedRoute: AuthedRouteWithChildren, + LoginRoute: LoginRoute, + LogoutRoute: LogoutRoute, + SignupRoute: SignupRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/_authed", + "/login", + "/logout", + "/signup" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_authed": { + "filePath": "_authed.tsx", + "children": [ + "/_authed/posts" + ] + }, + "/login": { + "filePath": "login.tsx" + }, + "/logout": { + "filePath": "logout.tsx" + }, + "/signup": { + "filePath": "signup.tsx" + }, + "/_authed/posts": { + "filePath": "_authed/posts.tsx", + "parent": "/_authed", + "children": [ + "/_authed/posts/$postId", + "/_authed/posts/" + ] + }, + "/_authed/posts/$postId": { + "filePath": "_authed/posts.$postId.tsx", + "parent": "/_authed/posts" + }, + "/_authed/posts/": { + "filePath": "_authed/posts.index.tsx", + "parent": "/_authed/posts" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/e2e/start/basic-auth/app/router.tsx b/e2e/start/basic-auth/app/router.tsx new file mode 100644 index 0000000000..0886de701f --- /dev/null +++ b/e2e/start/basic-auth/app/router.tsx @@ -0,0 +1,21 @@ +import { createRouter as createTanStackRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' +import { DefaultCatchBoundary } from './components/DefaultCatchBoundary' +import { NotFound } from './components/NotFound' + +export function createRouter() { + const router = createTanStackRouter({ + routeTree, + defaultPreload: 'intent', + defaultErrorComponent: DefaultCatchBoundary, + defaultNotFoundComponent: () => , + }) + + return router +} + +declare module '@tanstack/react-router' { + interface Register { + router: ReturnType + } +} diff --git a/e2e/start/basic-auth/app/routes/__root.tsx b/e2e/start/basic-auth/app/routes/__root.tsx new file mode 100644 index 0000000000..6f5fc33295 --- /dev/null +++ b/e2e/start/basic-auth/app/routes/__root.tsx @@ -0,0 +1,145 @@ +import { + Link, + Outlet, + ScrollRestoration, + createRootRoute, +} from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' +import { + Body, + Head, + Html, + Meta, + Scripts, + createServerFn, +} from '@tanstack/start' +import * as React from 'react' +import { DefaultCatchBoundary } from '~/components/DefaultCatchBoundary.js' +import { NotFound } from '~/components/NotFound.js' +import appCss from '~/styles/app.css?url' +import { seo } from '~/utils/seo.js' +import { useAppSession } from '~/utils/session.js' + +const fetchUser = createServerFn('GET', async () => { + // We need to auth on the server so we have access to secure cookies + const session = await useAppSession() + + if (!session.data.userEmail) { + return null + } + + return { + email: session.data.userEmail, + } +}) + +export const Route = createRootRoute({ + meta: () => [ + { + charSet: 'utf-8', + }, + { + name: 'viewport', + content: 'width=device-width, initial-scale=1', + }, + ...seo({ + title: + 'TanStack Start | Type-Safe, Client-First, Full-Stack React Framework', + description: `TanStack Start is a type-safe, client-first, full-stack React framework. `, + }), + ], + links: () => [ + { rel: 'stylesheet', href: appCss }, + { + rel: 'apple-touch-icon', + sizes: '180x180', + href: '/apple-touch-icon.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '32x32', + href: '/favicon-32x32.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '16x16', + href: '/favicon-16x16.png', + }, + { rel: 'manifest', href: '/site.webmanifest', color: '#fffff' }, + { rel: 'icon', href: '/favicon.ico' }, + ], + beforeLoad: async () => { + const user = await fetchUser() + + return { + user, + } + }, + errorComponent: (props) => { + return ( + + + + ) + }, + notFoundComponent: () => , + component: RootComponent, +}) + +function RootComponent() { + return ( + + + + ) +} + +function RootDocument({ children }: { children: React.ReactNode }) { + const { user } = Route.useRouteContext() + + return ( + + + + + +
+ + Home + {' '} + + Posts + +
+ {user ? ( + <> + {user.email} + Logout + + ) : ( + Login + )} +
+
+
+ {children} + + + + + + ) +} diff --git a/e2e/start/basic-auth/app/routes/_authed.tsx b/e2e/start/basic-auth/app/routes/_authed.tsx new file mode 100644 index 0000000000..bcd6beaed0 --- /dev/null +++ b/e2e/start/basic-auth/app/routes/_authed.tsx @@ -0,0 +1,66 @@ +import { createFileRoute } from '@tanstack/react-router' +import { createServerFn, json } from '@tanstack/start' +import { Auth } from '../components/Auth' +import { hashPassword, prismaClient } from '~/utils/prisma' +import { Login } from '~/components/Login' +import { useAppSession } from '~/utils/session' + +export const loginFn = createServerFn( + 'POST', + async ( + payload: { + email: string + password: string + }, + { request }, + ) => { + // Find the user + const user = await prismaClient.user.findUnique({ + where: { + email: payload.email, + }, + }) + + // Check if the user exists + if (!user) { + return { + error: true, + userNotFound: true, + message: 'User not found', + } + } + + // Check if the password is correct + const hashedPassword = await hashPassword(payload.password) + + if (user.password !== hashedPassword) { + return { + error: true, + message: 'Incorrect password', + } + } + + // Create a session + const session = await useAppSession() + + // Store the user's email in the session + await session.update({ + userEmail: user.email, + }) + }, +) + +export const Route = createFileRoute('/_authed')({ + beforeLoad: ({ context }) => { + if (!context.user) { + throw new Error('Not authenticated') + } + }, + errorComponent: ({ error }) => { + if (error.message === 'Not authenticated') { + return + } + + throw error + }, +}) diff --git a/e2e/start/basic-auth/app/routes/_authed/posts.$postId.tsx b/e2e/start/basic-auth/app/routes/_authed/posts.$postId.tsx new file mode 100644 index 0000000000..d6d12b3702 --- /dev/null +++ b/e2e/start/basic-auth/app/routes/_authed/posts.$postId.tsx @@ -0,0 +1,28 @@ +import { ErrorComponent, createFileRoute } from '@tanstack/react-router' +import type { ErrorComponentProps } from '@tanstack/react-router' +import { NotFound } from '~/components/NotFound.js' +import { fetchPost } from '~/utils/posts.js' + +export const Route = createFileRoute('/_authed/posts/$postId')({ + loader: ({ params: { postId } }) => fetchPost(postId), + errorComponent: PostErrorComponent as any, + component: PostComponent, + notFoundComponent: () => { + return Post not found + }, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const post = Route.useLoaderData() + + return ( +
+

{post.title}

+
{post.body}
+
+ ) +} diff --git a/e2e/start/basic-auth/app/routes/_authed/posts.index.tsx b/e2e/start/basic-auth/app/routes/_authed/posts.index.tsx new file mode 100644 index 0000000000..ea9e667e54 --- /dev/null +++ b/e2e/start/basic-auth/app/routes/_authed/posts.index.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_authed/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/e2e/start/basic-auth/app/routes/_authed/posts.tsx b/e2e/start/basic-auth/app/routes/_authed/posts.tsx new file mode 100644 index 0000000000..86c8ef4138 --- /dev/null +++ b/e2e/start/basic-auth/app/routes/_authed/posts.tsx @@ -0,0 +1,38 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { fetchPosts } from '~/utils/posts.js' + +export const Route = createFileRoute('/_authed/posts')({ + loader: () => fetchPosts(), + component: PostsComponent, +}) + +function PostsComponent() { + const posts = Route.useLoaderData() + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+
+ +
+ ) +} diff --git a/e2e/start/basic-auth/app/routes/index.tsx b/e2e/start/basic-auth/app/routes/index.tsx new file mode 100644 index 0000000000..09a907cb18 --- /dev/null +++ b/e2e/start/basic-auth/app/routes/index.tsx @@ -0,0 +1,13 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!!!

+
+ ) +} diff --git a/e2e/start/basic-auth/app/routes/login.tsx b/e2e/start/basic-auth/app/routes/login.tsx new file mode 100644 index 0000000000..03ced20832 --- /dev/null +++ b/e2e/start/basic-auth/app/routes/login.tsx @@ -0,0 +1,10 @@ +import { createFileRoute } from '@tanstack/react-router' +import { Login } from '~/components/Login' + +export const Route = createFileRoute('/login')({ + component: LoginComp, +}) + +function LoginComp() { + return +} diff --git a/e2e/start/basic-auth/app/routes/logout.tsx b/e2e/start/basic-auth/app/routes/logout.tsx new file mode 100644 index 0000000000..f78aa7d8ec --- /dev/null +++ b/e2e/start/basic-auth/app/routes/logout.tsx @@ -0,0 +1,18 @@ +import { createFileRoute, redirect } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' +import { useAppSession } from '~/utils/session' + +const logoutFn = createServerFn('POST', async () => { + const session = await useAppSession() + + session.clear() + + throw redirect({ + href: '/', + }) +}) + +export const Route = createFileRoute('/logout')({ + preload: false, + loader: () => logoutFn(), +}) diff --git a/e2e/start/basic-auth/app/routes/signup.tsx b/e2e/start/basic-auth/app/routes/signup.tsx new file mode 100644 index 0000000000..5148372826 --- /dev/null +++ b/e2e/start/basic-auth/app/routes/signup.tsx @@ -0,0 +1,99 @@ +import { createFileRoute, redirect } from '@tanstack/react-router' +import { createServerFn, useServerFn } from '@tanstack/start' +import { updateSession } from 'vinxi/http' +import { hashPassword, prismaClient } from '~/utils/prisma' +import { useMutation } from '~/hooks/useMutation' +import { Auth } from '~/components/Auth' +import { useAppSession } from '~/utils/session' + +export const signupFn = createServerFn( + 'POST', + async (payload: { + email: string + password: string + redirectUrl?: string + }) => { + // Check if the user already exists + const found = await prismaClient.user.findUnique({ + where: { + email: payload.email, + }, + }) + + // Encrypt the password using Sha256 into plaintext + const password = await hashPassword(payload.password) + + // Create a session + const session = await useAppSession() + + if (found) { + if (found.password !== password) { + return { + error: true, + userExists: true, + message: 'User already exists', + } + } + + // Store the user's email in the session + await session.update({ + userEmail: found.email, + }) + + // Redirect to the prev page stored in the "redirect" search param + throw redirect({ + href: payload.redirectUrl || '/', + }) + } + + // Create the user + const user = await prismaClient.user.create({ + data: { + email: payload.email, + password, + }, + }) + + // Store the user's email in the session + await session.update({ + userEmail: user.email, + }) + + // Redirect to the prev page stored in the "redirect" search param + throw redirect({ + href: payload.redirectUrl || '/', + }) + }, +) + +export const Route = createFileRoute('/signup')({ + component: SignupComp, +}) + +function SignupComp() { + const signupMutation = useMutation({ + fn: useServerFn(signupFn), + }) + + return ( + { + const formData = new FormData(e.target as HTMLFormElement) + + signupMutation.mutate({ + email: formData.get('email') as string, + password: formData.get('password') as string, + }) + }} + afterSubmit={ + signupMutation.data?.error ? ( + <> +
{signupMutation.data.message}
+ + ) : null + } + /> + ) +} diff --git a/e2e/start/basic-auth/app/ssr.tsx b/e2e/start/basic-auth/app/ssr.tsx new file mode 100644 index 0000000000..62572579ac --- /dev/null +++ b/e2e/start/basic-auth/app/ssr.tsx @@ -0,0 +1,12 @@ +import { + createStartHandler, + defaultStreamHandler, +} from '@tanstack/start/server' +import { getRouterManifest } from '@tanstack/start/router-manifest' + +import { createRouter } from './router' + +export default createStartHandler({ + createRouter, + getRouterManifest, +})(defaultStreamHandler) diff --git a/e2e/start/basic-auth/app/styles/app.css b/e2e/start/basic-auth/app/styles/app.css new file mode 100644 index 0000000000..d6426ccb72 --- /dev/null +++ b/e2e/start/basic-auth/app/styles/app.css @@ -0,0 +1,14 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + html, + body { + @apply text-gray-900 bg-gray-50 dark:bg-gray-950 dark:text-gray-200; + } + + .using-mouse * { + outline: none !important; + } +} diff --git a/e2e/start/basic-auth/app/utils/posts.ts b/e2e/start/basic-auth/app/utils/posts.ts new file mode 100644 index 0000000000..00fc9ae143 --- /dev/null +++ b/e2e/start/basic-auth/app/utils/posts.ts @@ -0,0 +1,33 @@ +import { notFound } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPost = createServerFn('GET', async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + console.error(err) + if (err.status === 404) { + throw notFound() + } + throw err + }) + + return post +}) + +export const fetchPosts = createServerFn('GET', async () => { + console.info('Fetching posts...') + await new Promise((r) => setTimeout(r, 1000)) + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +}) diff --git a/e2e/start/basic-auth/app/utils/prisma.ts b/e2e/start/basic-auth/app/utils/prisma.ts new file mode 100644 index 0000000000..74f5137b46 --- /dev/null +++ b/e2e/start/basic-auth/app/utils/prisma.ts @@ -0,0 +1,16 @@ +import crypto from 'node:crypto' +import { PrismaClient } from '@prisma/client' + +export const prismaClient = new PrismaClient() + +export function hashPassword(password: string) { + return new Promise((resolve, reject) => { + crypto.pbkdf2(password, 'salt', 100000, 64, 'sha256', (err, derivedKey) => { + if (err) { + reject(err) + } else { + resolve(derivedKey.toString('hex')) + } + }) + }) +} diff --git a/e2e/start/basic-auth/app/utils/seo.ts b/e2e/start/basic-auth/app/utils/seo.ts new file mode 100644 index 0000000000..d18ad84b74 --- /dev/null +++ b/e2e/start/basic-auth/app/utils/seo.ts @@ -0,0 +1,33 @@ +export const seo = ({ + title, + description, + keywords, + image, +}: { + title: string + description?: string + image?: string + keywords?: string +}) => { + const tags = [ + { title }, + { name: 'description', content: description }, + { name: 'keywords', content: keywords }, + { name: 'twitter:title', content: title }, + { name: 'twitter:description', content: description }, + { name: 'twitter:creator', content: '@tannerlinsley' }, + { name: 'twitter:site', content: '@tannerlinsley' }, + { name: 'og:type', content: 'website' }, + { name: 'og:title', content: title }, + { name: 'og:description', content: description }, + ...(image + ? [ + { name: 'twitter:image', content: image }, + { name: 'twitter:card', content: 'summary_large_image' }, + { name: 'og:image', content: image }, + ] + : []), + ] + + return tags +} diff --git a/e2e/start/basic-auth/app/utils/session.ts b/e2e/start/basic-auth/app/utils/session.ts new file mode 100644 index 0000000000..08d28177cb --- /dev/null +++ b/e2e/start/basic-auth/app/utils/session.ts @@ -0,0 +1,13 @@ +// app/services/session.server.ts +import { useSession } from 'vinxi/http' +import type { User } from '@prisma/client' + +type SessionUser = { + userEmail: User['email'] +} + +export function useAppSession() { + return useSession({ + password: 'ChangeThisBeforeShippingToProdOrYouWillBeFired', + }) +} diff --git a/e2e/start/basic-auth/package.json b/e2e/start/basic-auth/package.json new file mode 100644 index 0000000000..783ba1ac6e --- /dev/null +++ b/e2e/start/basic-auth/package.json @@ -0,0 +1,46 @@ +{ + "name": "tanstack-start-e2e-basic-auth", + "private": true, + "sideEffects": false, + "type": "module", + "scripts": { + "dev": "vinxi dev", + "build": "vinxi build", + "start": "vinxi start", + "lint": "prettier --check '**/*' --ignore-unknown && eslint --ext .ts,.tsx ./app", + "format": "prettier --write '**/*' --ignore-unknown", + "prisma-generate": "prisma generate", + "test:e2e": "pnpm run prisma-generate && playwright test --project=chromium" + }, + "dependencies": { + "@prisma/client": "5.19.1", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", + "@vitejs/plugin-react": "^4.3.1", + "dotenv": "^16.4.5", + "isbot": "^5.1.17", + "prisma": "^5.19.1", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "redaxios": "^0.5.1", + "remix-auth-form": "^1.5.0", + "tailwind-merge": "^2.5.2", + "vinxi": "0.4.3" + }, + "devDependencies": { + "@playwright/test": "^1.47.1", + "@types/node": "^22.5.4", + "@types/react": "^18.2.65", + "@types/react-dom": "^18.2.21", + "@vitejs/plugin-react": "^4.3.1", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", + "prettier": "^3.3.3", + "tailwindcss": "^3.4.11", + "typescript": "^5.6.2", + "vite": "^5.4.5", + "vite-tsconfig-paths": "^5.0.1" + } +} diff --git a/examples/react/start-basic-auth/playwright.config.ts b/e2e/start/basic-auth/playwright.config.ts similarity index 100% rename from examples/react/start-basic-auth/playwright.config.ts rename to e2e/start/basic-auth/playwright.config.ts diff --git a/e2e/start/basic-auth/postcss.config.cjs b/e2e/start/basic-auth/postcss.config.cjs new file mode 100644 index 0000000000..8e638a6bcd --- /dev/null +++ b/e2e/start/basic-auth/postcss.config.cjs @@ -0,0 +1,7 @@ +module.exports = { + plugins: [ + require('tailwindcss/nesting'), + require('tailwindcss'), + require('autoprefixer'), + ], +} diff --git a/e2e/start/basic-auth/prisma/dev.db b/e2e/start/basic-auth/prisma/dev.db new file mode 100644 index 0000000000000000000000000000000000000000..5f4ab51a02990fc664b53e0583765f4669fd622a GIT binary patch literal 24576 zcmeI(J8v9S6ae5EzXBHPMG=f;x!$p7#^=tQ^UZECbL=~}cRN+c;$YM> zRmPLolQd1PWm%FW5tb!bj>bH!EF5jX&-B##vsPnrCH`Kk|Cubl_FGc>rT%^GYVA8% z#eo7SfC4Ch0w{n2D1ZVefCB%CKzng%ZGAQUtkd`5llC}_%Fr{NZuua5I@wy<+HY>Q znpt~q=XSf9?d)wgKgb$q;~Lqmy~q0+mmAaBjrHODg|*ey^l+;(wi_n#lVxFcwASYJ z-R5jcc6m92F`JmRnjf^Xy<4!fcXzY*_IGY>?%&PcZQgzRaoEs|#~%+yzHv5kdHvGD z(%RM4G?^AM{-_IgZlyV>2Gi|wnlYVxU;N_3^uijY>6hg+w{ke@jC-c+b?%K!)fx21 z=l9H=&HH>nwPOH-YW-iE8x z+PT@BMIBdD_DwGw2R`k9-NC)_allFLlhE10MuTn_PH2sLaQduIoN`>5QFSh_>?rEE zhuCk?hR+BGs9uG0|y#cVK^?`;GjRPbZ4*CywTi;x8j|h z8+*;|^9Ll$>sxb6Ywy!%y$jA?xRRdVH@TO8W%6OG!IIX83A}Ki01BW03ZMWApa2S> z01BW03ZMWA{7V9dwRE|CSX<;tviPc}y2x`UHZz@_>2-+H`ItM`+1 zHo2dq^>niD01BW03ZTIMC-Bei G|NjCh%*#yx literal 0 HcmV?d00001 diff --git a/e2e/start/basic-auth/prisma/migrations/20240811183753_init/migration.sql b/e2e/start/basic-auth/prisma/migrations/20240811183753_init/migration.sql new file mode 100644 index 0000000000..4512a8f782 --- /dev/null +++ b/e2e/start/basic-auth/prisma/migrations/20240811183753_init/migration.sql @@ -0,0 +1,8 @@ +-- CreateTable +CREATE TABLE "User" ( + "email" TEXT NOT NULL PRIMARY KEY, + "password" TEXT NOT NULL +); + +-- CreateIndex +CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); diff --git a/e2e/start/basic-auth/prisma/migrations/migration_lock.toml b/e2e/start/basic-auth/prisma/migrations/migration_lock.toml new file mode 100644 index 0000000000..e5e5c4705a --- /dev/null +++ b/e2e/start/basic-auth/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "sqlite" \ No newline at end of file diff --git a/e2e/start/basic-auth/prisma/schema.prisma b/e2e/start/basic-auth/prisma/schema.prisma new file mode 100644 index 0000000000..3544834310 --- /dev/null +++ b/e2e/start/basic-auth/prisma/schema.prisma @@ -0,0 +1,16 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "sqlite" + url = env("DATABASE_URL") +} + +model User { + email String @id @unique + password String +} \ No newline at end of file diff --git a/e2e/start/basic-auth/public/android-chrome-192x192.png b/e2e/start/basic-auth/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..09c8324f8c6781bc90fcf5dd38e0702bd5f171f3 GIT binary patch literal 29964 zcmV(|K+(U6P)PyA07*naRCr$OT?d?1#nu1MePw&!Wnn2xuPUHa5fOWhim}9AqQ;m6yGg#7n3xz# z1e2(VEr~UX#u6J?uz-jP0@C{~yUX_8U%B&n=9V}2zI)$$yDXOI&Cl@mmYFkWPMs^5clrlPYm*cvVvo6&eHV`@U}e)m!o2H1BvNgM-Ltm3}(T#N?~ z<%27SG9X#y{9phn00wi8VT^%shbCo2%g^2JQxi^;qXJw3b^|B_c&EaY&p6Nprmg_< z*0nWY(?e5OF!51+yWjkd0piU6HM@DXFVKA!_psx^*;p`^3GgHimdC)EMy5p41}g33 zZ9J3zHOSj|*J#54#;r~Hy-0r?j5F|hfOUiO7BIerhxy{LKWWju!&uX|o5W*}{yPSc z@N>gDp5{sK%JVW$|1kK;;JAD>*#vEH%si(L)a>0j={tzDP<3@8P|;~ubA zLp)p+ZcDEJ(?r((9aCr+_|`K3+3~^Mol_XtL=Md2U^Bt_XbX0n1iUQpoqpRX%t_eW zm4;ow%ikF7xiL>dFtTk7{38Z@$idh7hNZ0fw)+p?Y6kdqNyqh2`Eg+E01jj`Vas!H z4lu^RIR_&dA+W?jf6+tnOx)6bnOJ39jqt5vfLqI&a~0J)OjXtM8QA3< zNc&n&yxk?(&p%5emN|2%hw3J{Q}DWGy~jOUO$M3lkby#`jrNA!}(f>IHSWs4$(v75n9`5@QfQta+JH_SW z;ok1ox-me!cI4-=+T2$djfjR@KsHf09sKz^0FQZD@b5r(#dU)RcP84_H{reiDF*n{ zp1P?D!}*-CbHLHhBF2qB?Bd;xLY?l*YC(?v%VEnzSGi=0wQHPMK7c)P@1a1#KyVq7pok)E1mpdkS)cTV=9Z3Wf)fgO}MTbbr$r;Ty*QkJi?XQA45I zRF2~qcxKNL?j}xqYbx~|0_}@L#CmVrwtknlcN3<+aT^Bid_N`w5Ho~QQn2En-(%~b zA4I`e*u4tJ)Ln*@aFoDr0mBj~xP?uHg**CY1pBX*Zwv!GSzn(S3U!~Ns{Ah;$c>2- zH@i6E8ybtdQOO{#pT=ratQSj zH-ULLTC#?tr07J1J!C6IE}zI)S2iXIdB zXc6cBV0GyQoUva57*4q{6im^Uf~-l%#$9bGM=~;W=`1fuS!4Q<#jogCzlNTuHs!d8 ztv@~2CJM%gpR7S{^DRX`#uA*-pVe=PEVdcA(@^1z6S+UFFKu)>`gA-ROMel38Ncj{ zgvsH0%&xu~g;+?N81N^&oPmzb?k}y|)ujimy z@M8k5<)^tm69j3)toSz0ca}D75lmNy*Vbl2FzT>b+BEvpxkP@JXq&NMwBy9UhbyiC zWCgb2gtFr_v14$r(TUXzvTluF_!T(*$qvKbuY$ni_4&19fCpEt@)eB8J2V{PcXE#D z@dohCf8HDW=*u5AKW7>!rZ30CD$M7)}+zdZfuqpUj?NH)bwcUTcx$F^^zKFQkjh0w5-y8eq?XVFa|r z`e=zFW5LN}mesF3B1evhEwN%*!j8?jDGn~$g12ZFw4CFGtwbw zM+E)W|LaaK!0z#vqOSj8j`%;Y;ujd${8FTA>d4Rl#@$%sHs)268srD;1jm_dE;j6M zB9GPnSH=Le7x%E1ZHI6*{37SD=JCkl+0C|eGMVjSOCGrsV>mHREM{`TqydMMixA6g zaD(68zg^tR0z!Uf#}j~q{&g)1*DldgAc)Y7GzjCjoEtfX-{vZb?^?uZ`&!M7tePKLsz01gc+)C){Sqhl>Nu4G5y zlU}s8&!2oH4DdnQx}$gyk3(Ta!Zz23Vd6%Qr#lMm7+J+m8ONqz)W37IiX8egHMUEC z!UvFGmj$yJj!RI-+~+Pk2gdk~DnosQll=AXV*JDN0g9#BiC<;{VgMho=b#^=bi$9p z6|$AI^%Y|drffS6solGxHGso7dQ6oZd!gV$b|l{E@wfZl=cB5f!&%K;5%e2I!3ja360yX##lhGMn2g-O?*eeyI$wvh}kw0A(TPd~mOz z{qCc$3{*on;rY* zm_z%W0dD2DDyMaxG$kBnF9N(sSd{{^I`zoEW7y8I?CQwWO0yla4>^!8{g!DY>iYx< z$UYuix<9o4P+eKn;Z#0}gS1r>ROrYS_Pv_f22hAuc4=-rb6|r7O@8Xctm_ zaNY=vEs`R<@!)hL-QIrJV@(m8cl=%D7{2*3ctXvQ7ik?}|0X)qzT@NBar{z;qIFAT7ozndNI@-I|@^UU-HM?Cd}IC}DKUs6=0-?IAMShagOHdU;_ z+C8*xz6B?~P& zjosEy6zv*Jq~Z)z;T3je-)*YtQwFFEelSPnd=cl|MfBM*6mR5CY#d7#+MgvdBh*K9 zo4aav;I;KHWAXY|EQIe*^1(@!*nKSK{=8&rI zMjGJD+2=)4=q&a=( zfOXi*YmCxt(_z@6DF+oB)fa$IOFqHF%l?kChEgHX=^{y=nVkWTM~SL|qJ~v8H?|5b zkeQr`pP%?E96V%-H6O?rn;m`$rnoq9a44h3C6Ao}-l}rs{^7?F2GEH=G_V+5Q;tSp z)D(o%a-k-t1HKfK?8T@Z@Rd@#6j@t-AL)hOAv1`qBFg7#G~Z@6m;$asRo0OECK51f!c)?1|=+=rh=b z)Hj|*(&}a4scGn*J_lXXj)9t*k>JLQXc+TX%mWMA%KnfUP@6>x!d}H zq(6m3WqB8COb%9oB`sL~*4cUfAv+z9?i1P)G*V;s(HwYVDm=H1cV^CwfJ1^oH==*{`dwJEd8ue6IVA~$ zMijy4lNN)dLP5q{lI>rztqg%~%>x{sKNOP&9f&|EfL(PZsA;W3c4`*J_8%pfBgvbD zBSsyHjN}YtCTAckB?F4$i5!k+NoZFoyF#LqggRNXe;tlkg0XTnS zOpvQ9IC!K`ZBP788O8*VLPWN1?`FKQX(`rLY(iUCJHk9Hq-{r_OH5EkQkn=urudT4 zFFhYWm~t8p9d-zkytLBeeqHhJo3XY+o5(@K2B6=-e3PH$>JKFG8|#`;TUjq0U;5jK z5+#mu>zk?m6lA4jV#?ryaPE}TFd|<+mpck4HZhO@&MZA8;6t<8Jy1S+8cNlAFttUj z8K}djBXsCBfG<5NzQO80gKzDxqlZpr5HZ1*b2Y$+L)odlt4iG~2H^blq)<5ggbHY; zPcJTc<<#wSBJi5ldVIKR75?-2>)2UW+T)&v<_^Mnhs?v_Bc~xdB~w3VH`2_vyB6vjr)s$rv+f1d@^?3_})3I21-pV++c6SBZGPd>M;k^sm?J5kx|fBc>R&JT=QM z9M(()H5i7<$u!gclP_Y_lg1y3Gbf#lLD>W1GH#EN;qn1%s)Mq6F+8hY0$8`Dgt}Th z8KK!X07+UUdb>9E?0OoW(&qqfTOB8d_{&)vAh4c88ZKZb_WXQ;UNJy-_kYh~3LfSh zw)*@%6-(|@SlU>QS2r!i+uN3-qPfaObP%hrL}c`@aS=gW+XvRUF)yf~<6ERGv< zI8Hy1>RU#J{mh#G;xEhoCDI%E4=%v)aYMjZq#zxcITa;UXsm6vv`Nk}`3PRWSD0S} zi(FgNIdGvvN^pk40@hF{EY=TXW++I{#hei{aOwfaU`zp3i!n#oi@1f`oN%y)8Yt^l zK-sVytY&*u)d*fV1mQ{ZpbkGAU`{8?av;ZQdo0++g_&}d(0i#iXd1ss>N zvmtF+OH4fUm;qW_7Zvz?NzX9G^^;i~R!j80qiYXGBwpm1^gRc`lU)5!3Or!!8C9Sy!+d zcfI!zUfuMLi1v&=a5xGFk?){6&%3wmK~-6e>Eu#>^j=yHG!a6R(3B`7Z`NEW-olVT&-1$kn06y zr-Kg~fzYv+gXhVmnw)1;3!rIB+e&*0yla06gmosC351qaNDjpfd^ku6cloNlEI;SC zj{N`&6O;Xs&l7&Xqi)eaU#jtc=k-R{P6T=VK5u(u^rEsuz7QE) zZ^~g$DGo2EMap7OPwpYp=fl#^aPyKsMWn7r!GIx!$j;BSFn}RRWb?@U$jT2ojcE=i z5mnjFy{0Chs8L6t6Jf3jvu61CVr*NtQ$%>=i_9&dJ*2jYkW zkzL>3+9|$kZEiOikF)@31kz?%c^P8OA=*^pP*skWhE_DxHG!)f!~};8Js5W%f3q$3 zSSLZl95Rdf*yqMbOC@O>g0kdAcwT!JeAHNk&%6}8U?7krE#O7XX++#=kEEm~v*>CF zO2upN?0E)I9gKg90}yZQuWghXDi*Tya9yIDlQ09cH$OAgt9V~#oDZ-vK%#ohO_y2k zFDqSzdsjS$vX&~7P>Y84M?wEwP$s5)X+28|IQqkA3m^g`5oPK2@~CKz8^VZKiDyTCeX$Qc4pDF76j6KSB}P%2)A zQu!KKK+BJcnl!SKjO4k*fw8{nZi82X<5YHjVk^W6F+f?_qLji+b_al~!R14!ZN8a( zFtHqk7z5u{UxEid`8Pf+TVuXOgfe(U5%T)yXwIjOb4T_wS5!55914Zd-qI-uj{Zk> z_TG|eGc*}%4v6WdG;H2B&VmWGV&)RC>+42gM(j`D@8o~!% z26fZ?83_&oF z!%JovF$DP;gNGL(J5P=-Yvxaghm|q|525AskLz+5Onxe`0+kj5`*CJ_T7fTQCagO&(SK)!x&tg|& zxj7ahHX@Y4BL*O>a_lXw#@>=DOSm%Lz!QBgJKqMwX(Mts{V0)c;Lric$W9Xuux2ku zdels`Na0QL7b;4sQMyl+$mLS0uBIqnC{R1@_6Zd*iYNMnj_iJh+FQgB#+_b6gG3QU2s0Z<4YG4Ea3{ zW7)Y>Ciqy-Y*5#BG~$^}i}BX(k5JiG7jI0xelFH-g>R=bHc5AnM>w~#tTcZM$5?Y% zomO@;veHmEumJss^fL)sCNoo1=o3hhDsrxqlBrs4#J3QrqEKsh0BculG@bNc9C{h% zjXg>O$4xr+#tfC_iPegzv zE@?k)jF7NfJMFw8>`S{h7m&;7fJG@lq4K9W1QGqpb={1q(zG!ku4ehx3R!yumhPvqzUL6lRFfT zocL?d0-uRDV;#h4z>?XSkX~qQgy;E%VD-BIFE^!sc+TbE!)9oiqI#RIb1Iv<;dUq; zWl+kV1Z&?N4WZnK{F?^vu5dNNm!~H3?Lu}^?1)fI2I$`V&#_>>Hx&hg#eB$StaOy8 z@k}!dXv26!ciYlkB8!vy@a5+M7{gl7GafraUHGWtb3F9<3)m@{LE=?obGnBX%e-PP zRFzT-!e-PYk(?uWCg^=~xC!Hw=4`Y@_x;H}_`F`?E}4d-b^+4rGevr6q0AT`F~Z0L zhGEEvfg*jvRczW#B^#NL&#?M~bt1G%3uC`K>?#~KXp&`ZB$~L5#X$|fQHod(8W`4# zn7`&mcpkqKjBu_Wo`H;1gpax$>WHZpf;8q$u(m#L7ELEvfSNYrP#RZ4+4}-muvuR` zi$&pyim#~m%An#{b_%w*wGfj5!h4_mk;?c&aGq?l&?EbO^_Jy^j0{Rc&>5YJA?hz0 z+XdVt2i@P^RE}r2yotpnE6^2+NPSU_flL#9V>&fU&LK%{W5t)=A)=-G#^RUgUW6|d zk%tqJu2$sJ3NA4Ly-VLxyCVBjRmJKqZHku@=AyKMKFQ>acXtKNXcK)~P?U$voOGn7 zr)oRR7?5WCHmJsIFk%LoI8-?{ui1f}o3!Z4x#Nz393_5sHvnC=Kym?)oa@Y- z^kO&w*7CV9k68P5unroN%SxH79c6?&Xif2$?kk=yB=x(N9aZ`F9y0(hdn7l+d{1zO z6Jv6T~ba)v2Wq zP~4tk>O}mV9bFdUCoSRidPP{2zM=LAQkg-FG0;L)YI?Gn_CRJ$M_Y$r1S9g3mY$-m z=*GCH?e?~gCb4!j@xC^1%C0T&JbgdV(E{jaiG|Pl8ThD4A}`2k{>*zVrSNR| zCs?o^Jbehl zUiW%ZE?|Ry*x>YyD{Ti#|8)rSfNK6(XV^(o$vV~OMUph8ij=)|yGqf&3-J)1-trb6 zT>qkJ>yr~I(g;#C!j>;0d`cal`$^&*zd&?*OS_QrbkQ@C+LY2jOhRS^UCF7*2y_L6 zg!XjBfCqEmMsG5?Rf*l)oi^aU$V$uvQxTKg`r&fS`y z(OCx8VUKDu@U*c&$^gM#YWjHdw}jgeS24q1e6g*jqxOa?0|ZO|xe(yjL`_mGo5f&r zH&%0F9_jw$TNmS>8(&3hPzwwb0a6lL#BSCar$w#K_D*zmbPKbDBsRs-$?+vZ6LEi$ zh{lkVlC0(GQ^>iqTiEBMB}f~PmJka}-N2}|Kx03ka+uZ!+3gh5Hx|MSFx4={?*pLy zz|;?!Lu4|=GmD5(Tbqb6BP%~?z7!N^6bf@M=umMk5hi);m|tT;?$Fq;y3LzG1@^gV zZ33$<2huXY3kM0wZ@C;8jMZ+1=i|R>L47)vG9w@1gKq+o^$kWc#U(08?M&-NTd`;l z>|S5-B~l7cq!D)pD0!4}`1IALM5bZi-}%q3_pxBjGp6JxX`YdlE~K%1k?l?kN0dHH z5t?jDQ}B94f?9KfR-Z>Ber=Uj%gW?XLn>NZ+lA>v_eq&_wrdPQ3^4i=Agu}5FbC++ z*PC>N z>X=iYjyQ=Nul?6)VlB7(hF+E)i+3!~!n+>6US%wjm1c04#hbD=v9Vpx+aepD z>}GO4lanb4jSF*#w1Ut8p8%P)Kp+L!GAqIaWb5bk&lRCnyA?<9b+mP%p|(*FHdvw^HGqJ9c?JTC~VB?~vv6yu zt->0Y*w)z8Cf?1=PB$H3lHT;6%mB2IQa1=FnFxe@nkFG;%!zVHwbp6Q$d@4PLrh4p zQKTm;hl)=*BaWQun!R8!}HePfl#X^{k=f=@GHOvPl+H%rVSlNrSdJXhBbgE3F?q};HeHr z$H_3bjm6C;k(h~rz4gNCtP{>U>nuy=Q4|9NwmvdV@q}OE98%V&i=K%U&Phx)iMQUa zSdCw;dK4iwEKH4l1M;GrPm=ItZczN2%$|J84)tqk21HDhFh)d9SEQI#1VA#E$ZR4B zospGl#+YqO(u{%KOhl+5CaFSVp%0 zsHq6gzAREg(xE@rUJ1{-KWO<63ZNFuggRpXjh!)6s$tJ*{xLtaoJSnR0HGZZT@F?K zGv`Q=7e-7A##qFZ&d(LkjB{o67L8OF`!n&kgpjUq02jW02X?mX75F6cAv*M@Ij=Pp zb%GH44=NB59bpowD(b2m%?&K%+-78_o6#Zyhlr7whZePR3$i79p3JEZ@tpg#;}Mtdu@EL#tv1qXm3)9Z*J~M{Wcmyo+TR+Rq6k<=7pg1jglMKcyV}-B?V@K?nax-O zAfLd#Z-6ueZE8^R_QO74_klpoAdLwGjKlhiP-Lw2 zdGa-?%4^Zm*eVvfatm{iMOzMS(Qwji#4L4H4Z@EpPA|l5lP|`E9IZS`6fO+`BZu&$ zy)Gt`$j_x&wg@JJLF_(&L(JYFO#9rkH=l*_+4~wH`#n%+9uGeCcyql#EQUszC>+X% zcY(E*nhX%0dNYt-99?!oVq(^`0m`0#1A#`U{f`A7aH7cs#<SlpIlX~0L5=N;ktmFoj$uqT+2(Dn?V8yn{DO$|ZfR~4{sS?+vSlQVkLIkiEs6XR0UhgPnMak6qW$KEi7==)GOj6FLlgnvWV zq5US{uhV`kixqN%Q7`7>@_ZT+e%01>B%f0fAf0-8M z%Ezv&1Ew9Mf92$qL>X1qXph|X@|umfW$j~V33iCEBuRf`byTP>kq2KVicyITF~cKn z34uZ@x;r;&wSver8Zfv}?7g+59&;`jh!)XkmDS={bD*iQMPq<&U;;5fy>)++A%NO5 zfX#D!X!mG)49L+PF>Z+1OB@yEuq8lM?x_)sKw}#^X0WI`YP4%;BZ@|CU%$&-znDMv zbX+(>&-9E-8n#VY_V@dE-YgW?*#YI<7lkjtXC4P$P~=XH`e5145237iUbFu_fI99t z@NuU^XWJX&FuvQh2ujrl8oK@I2#>l9$Q)%|ptBHkG@W{&PG=K-X8HjZat(g|*WWQ_ z977|YrEBQoIK}zR9VdqVm24-&_}3>Rq^kJK)|c^A$-4qdinUWkHhH0!Bs*;up)hCh z=s{+!PJ?J@4}g&$Pqq84VN-4J)CQF~50IMiht`Ad3n?*qB)4EpZ@i z!T{_%*n_RDT81r|Hbch_Hg|DpWj7sn<_mMEva}jZQ7~lGK;-5}QXGu&G*maDWP7>r z2MUvOaNpD)V|ZGjgHbFSsD`5;QH%Ll$G^E}*Y=&@LdiZc#i(@Tj&0twUZl{BrAfIz z{ehkN!a*o2p99;qQa78t2p@YBU~KM@Z8TF%YyGjUi=dP*)4ESeM|k|DK+Z_XQIe?N zwAmy$gq&cv`40N2SAR@QG3 zl5xn0BBYb^YQoF0Wz7y@9t#ogv&`{GT)*Q|pJR9@Jd=E)t->uUXYYymr z2ZDD^MwcBuJA+9A&C$VggTn#l_GTzc9@4T*6@V8Gg*x{#fR2-rc-Ul2iH6w5=b`Lb zroBZBFzFH?cciV8ICRNT>YX&-TsAiufUjAY9cE11#hi$dX@AGSnUe|RfQPb)GIDTA_)m9=p zx`;vSiEAWjDY8V4v|$2e*Xu%28VCKP5A3K+ixKXhf}ei&chm>8bq6xvsHm36 zAhoCd%99G9bVs?^!A9oXpkYNiy2*#o&`#QF$Ho#7((RX&h5HY=3d7U;Tl^OBkp<5Y zpC%#m)jmft1eFWtX}6=kbI>NTRw4OYT?XY@iW+GfSNMcOq0XEKP@1{io&!v5?ekD} zFE=%SI`tCpe7SO-1GEn9csS2tldo;EpfRv|;S~z_gAwHFSc*#Mm#}AlCR%hblgv*d zZLVzChO5_TS*m23j2IV*0FXr9zG1gW92-7X+W#w!ue!VzdrPTu1bv?+Dl1s>LZd}P^ycS&yO?C`aY&kpMq75JMhOX z&!dDYB7Z28Z0H{!9hC(tpUc4_O!>wCbK00Cu`DArW3S(wgOl?dsA% zpxZn0Bx~(0-0@#Lu}AahsT{dhl2E%SO`vppg&^wUQG;~5J;KU?KtNP(6S+W&BGv`W zP4W_{P&pA=AftmWXk}TZOp>{3D2%;(ss#fSDCsz1#{iUmz8$owOxgu0;HAV;`tP_C zjuZb;iuU@JQrx`ZG1PWz`*cZ@(K^BKv62;OC0(7|H9VPnsbxEvK`i#IdVigGC)wl2 zl3Bk&I_66#v^!9+g9n)axyqp2q9dp9!pwpFB$B zz#AJ>h`^icTaiB?dexO|{;g|wphK_HOslL^H^>q`6+6RJvA{&du!fBt616r!7)Y|Iepi~*Mw1G~zXm}TwCji{^CQrNE=c04X0dbIh}BrzF2>07t6N!-4RHQy#% z*p7QOh)2x3Wd25xuLF#%r3tKT8`SY6`Sl%yHjl+}j)zXDY}pH7n^r^^;HV3Lq7l~o zEL(pTx;3A%%?eAO$fjHw)EMC7dnT&juW`-?8aAXc>4vZ{w2Y&gM8h5x*WP$&SOwzb&OKOF>Z*pwzciWBc<=) zz50y^=_jU;UqE(#|H1tn&KQdz$jOSNr&OYG?S~sgao<77dHBbqtC8>5oo4-WCjn%c zH)++~!fW#4lubaJv}~Jbeb;1^3oR3vg%S-I<(QE~oHE}Si)9iYMGgy+2C1xG3ik0E zTFayXjy+#6fStZHqSj9ZjSf=NvkHYNC$Z_*uhZWB{Fr1DFc2>RcG>$`akaW5rOn9hY|tUAD=eOoe+(Xq+ak)_$@U?=8&{9Exx z;lO;1ojl5_N97HxBGWR6^`CAg=j8CS^Lb#5YzZ$Yd!SFhB3hTrUXPW&D? zYyid_;IjB^vnM?w@3jCRvn>zuEsy-5blZio0WWPwVQ>c`}leDqM>7q!JQIr3v zgMNZ>=>u`+J@=xzrdlw7*VxCQkCV10cLaf9!-nCfKf1zIh_!~gu(W;yp0EBG8{4d9 zX-FecNR}LY$`qxAG4rwsRtf{JUbbGWV@%2zio3_0hdjUIz7Ff~q7<*)A&YTtTTkay z=0yw9Ibb}d0_r7<4)ot! zt-p02Z4$OOIlw+Yox~W4i_mxBFvsT~Z!+QhY{u>4_o5eH!bcx}0!lU|Ca_#wV*m~X z_uNjWrNaS| z_klmfP%20p^NMAf8gpuIz{#XZ)LcrWO{2e_(MdE{yY=OSkXUA#&@qcU0yv-XCAanq zC;JvL@HtvDZX&?Vo=*f(Rsa`Oe~ddybOsnXP(*?3)KBs7Z5v9kN4L?ly{WjV_+%WH zcM$F@eHFw+f&oShM8SYui^EE3&+Arh5}Vq|K^FN%lJ=*c)fKhk%rCmm?>`II6`v@6 zFJJjF{`2yG1@Q|8(9vOFr858o!oVfxpNoSgOo--?s1T#}%0DaK$D0l7QPJIqws7Y!aPY{#uWeV;f2B^`>W)zPaC=St(FDfKUCJ?P4lLKtC ze8rJOWd4X9VqYXN{&n<)n3Y9L2$YoW!Ji*`SVVzR{WeFK0bN0$GYA}c_-veV+_8=% z=XR4!qfc6QVtrdVmNjifX?ML@^2PXu(yb|PiSnW-X|AcR1zSJgDITAaKN-IrChh%= zgXbOr7mF5q)zE(YC?0<%WX7>w3dfO*zkU07m4!A~gGMs&k>0F?6id|_5IDcHsP+@w zvFBCM39SH+KZF=SdzUgi$?Ty6sHyUUU-9A>Lr%uYxf9`GT5$f3J+Fb4uPk1c+GG1!nR+7|_?TC!>80b7Lor>t$v$db%jxvn_Mok!s@l(cVgh7&d{chp((v__E za9QDOT-g6GQTfb3_#I^t1{gM$7{F>5um5C=C?q@TfMFu~V!1f5XJ>`T$Dt|we*P3( zH|RJd(J6>JjK8_-ZnU+xAtPB^5td6mQW&(Y3&_sO#*Z()2>H3WQQ>bVQ^d)OGDxE> z+>Q5|w&1QOJ)%e{@l}@6vvU;lh5i zL>yeeqQh}V#cNnpr&SrIV@(GP?x%I7FMd!3Ws>gXVA>ggHr7yaS=s|Y?f!bu_i#-1 z1WO9jf8KZv%Rl)PSt(K^NTR5wP9P~M1?SJ3hw&pviEWD};Yq%HPjF(4ttQxl@<0RD zwCxf9Rs@=`wX+JXy5Den@fkQi=Riw;#vdACI?s(kvxG<)mtqaaX>I0Y#domdh@ zW8p-n3z@zwkxd5}>AArSZZOJYi-nVjFkt7i@Zwwk%D{eN6_eUuiJ6$O6rr<%T~xmc zcT~JC`WP``C=Qx74jWf*#f}XnA}zrK1wS2dB+kj7rb%Yo^~Z|WL2Zcd#}|up#Egqf zm^B}65J_bROdX@AK$}m+*2Asqb_r8wXi^@Y9(4s$Z0W|YEM1CsmM<3?AW5@AEEkzT zok50^jyw`a&zj|cx}M=A(t!0lS}E^PgTiU94Ypxf>o&~J9F0TLhQytp-p-x&U2ox! zMujsRPP!njtdGpGDOa88%SqZh(K83XkA>g3<$eZ4_TMFjIVXNe_};U`0DHA1Z3lpVZWVu%sdHieOkCb?wg~+>UH4VJi$`mhi$^0T3`0?IKg(+++qBsG(9wfTLJ55Ky4*jogFU1e(I8L3&X`7*i(p_MtZHb%LY!^=l`m*uD zs2{=apkbh zITK@mZ$y{E!Zb2Ap5It_49?Bf^U!T7zoo4Wk39bz%Bm_+C@s9o&Tws;<_BDJ(Zwh* z65|p^Vs9j0Z@!5KP~Vw4@p{@n&-V={9Q;|P{`VJ@bDQH75Q`18oSPAO(~?^2(!i?r zJ-EE=Df1~w;R|!8;fMLNki_I;H=P?G1~_x~!@@_QgXv}*WnUbM{*FSU6ka9YU_??r z?jLkE3VqIXJli@t@UNF%#Ew0CFhF`mwk?~xv~cM47hR0O1LD^ZlQHCy9PJpCOpI`P zLkPY3#?aGl_IhH_CiGSuY2I7tEq!w|GWDgO_w8sBP(u{IK6u-m0v2+3FV3Bgi*sfm z-Q#Zd$beS{n{h??zfm4+65A1H968ywPCtP|5upvAY!#bhyv&0i=FY@rc{AY^#cZOl z?mz&G-dv2;n>Hao6`%^~cE^eq!x}n(6K5ZeV`m;3drlL;NmK*9`6eOCa(U^S(BFQ5 zk*P1-)GG#Xmh_3pe{BLL@3;$IDEL|a9GsOkIj-3wYpBL>2X3nRFIIK#5hckd9Xdgz zJ<9_zD>P8rLs>08|9FdtFco?;@IcX781B!DNiJ`ExExD9T7m2oAYIC(GZ-PL0#&WR z#4%%W$tm9xZMls;zO=HwkvJB6L-FyUNvzerYR9d&omIYFcuJH>6OB>IPMtrBs6x-QI~hU@Yu?I{9_HT0*AXvxZt@WzS{ zk(tbq=>gs}AYT}zL?_qrRkVqJQW+$;iY{?Y&dAOJ~3K~(K0^$}rU>qb8r z4(o4iQmsNygUz@n7~Y&a^Mp3bJ4PFJ28}&$M!%7_WV*1-iDiriAzE>3z!*&v5#lt2 zms~?tqnk)uM(gtU?IBycl91=tj!OX#f9?j025@e`n)etXQkymFkY#I;%K8ZC-eXOl z;;hVxBF{%|&uNhM=js12{Q=P8TZROaoN(-?L_vPWy0p}pc zqaE#OAtdQzLj1bz+wt$W7DEkpn~t!3e|3F_<_BDJ&UqL*V1Q{RMJCgEEyX&4&MWXv z^B|AU5Gqb>Mab5=cqF%Jfw2ekX3Rw_I*G7>bw=D^wa`9R@39GYxDNhP`uf^tViIsWz9tLP4NV4&^@TM*2E#!i4%g}*=d zD9k>HB2h9~I!}J&uJ*3=G&LujI^)EuwXEMop2=k3j?3uTb9*=5{fOp|X1(aKIgcR` zoX9K|p{btXL>mj^&s^tHTGcLZ+~lPl7$<(~$vejP#y9qUHNaPOmE)$m*U+GLh|MKa zkC-UV5i?0pKUsYnrB-lYcFHjPKJNr%DU^5bG#0D;D5>0wM_+pdo!#vy%GAzYwyy}c z1vE3Le_lRrKKB9#DG*P9*ongF{djUe9@E%mp&d*orgdUESx&pP84Lczg_|`ZnFvno zIyVuVXk%df>1*wp#6_IDDLp%4?4R4eb7{Uuw>kEPTk*r%=dd@_BC4|;cEU7E6$aWs zzkJE3V#ik+^W&DBqj7vHCEX=<1wtX*{p?eyZ*CAK5FPkpRIL*&Fl}EzWebp*o{68H zekO7=><41V%3SW(4JWY_eqwOIp?G2&9)@IeX?{7%6C_4&yq*s54p$dktVw(>~2l}@!wCN zwy7Td(;?C#j7xl>Cui+x1pNLKTyp%$7+FN8A=+^j4=3?(>jbaens#C?C&FMJyhb{N(^W+gNm93)U8 zrEf;z#BQF%GEHL5on*V4b0=?7H(W8}3=>9!>m5$hh~9KA`F8QfAcwm2ccXA( zzpvAhz*j8ODn3pae>_nW$cg(+O7Fo|%2@3r`b?vg?V&oHS*PU$(e9}e&OHiU?Opij zt<@syldj9tr{n7MI15!S-9Eo;DVA?shx{}kM++Q@OQzqpZlIzCm^Nkt&YV3Ley_nP ziAuRd$NXi#x4%psw{h%`{^GaE_+!`VsSq+?@ocMjYR}%5)xnHLK`eD0``P#FpTLd~ z)iei=J8KT;6m{AUOqrh(e1%w$eF_Q{+oqT(0G!9WY~wmSzkI1!4JIbAFo6CC39Bu2 zz{sLOxa8=Qke(vf`*a((thP;-vOyKkgy{_-xe-LXzG8i6hd-8imZ-q|(s0tq_~Y0A z8>)KFmn~oVs=xc&SK#4xZGZ6aamA>qs1@nXWcu8kJ{PB_M5jAP`i?CjmTl4*APp!W zx|X!L91$vQ($)ih{{0IuAUC>1OJ9vOF~PB~y~UTB``W|4f8SRyD$g+f&ui}om-Ykf zJ9J-a3%kP&IIrnxba1WAqH#^}4Z_0A?;(RFmS5xq^zzN?@Z5(>Q9umfq5+60XhDq9 zBF>q83}%jr#c*FLYQF0%9tId5VEoZ*@BhM=OKd-Yp7Dq@6NpT#K^L$7qkOhE7y}u_ejpr91KH+y6yYGQ?t-C}AZ9ZH%9tAz(*6Fm2QX zoOifXDWW&y>miKVc;iUKzMeM&4~FF!kI)i*?gnR%@F?LT{G13q>~QknHFU@`fKkr^iqvsG$?M>ezW0Tcp=2 zjRk)!4E6?BvUYNk%)Omcw=u*UTP$gA!*N2y6c7I1vIHr$ka1Wxl$Fi&Pruy~DY2lF4(7@#;C@QHi~tHoi^L1imY)dn0s zZZgi8c0@uW3^z0&ux*>Dx|@8+Az;bTGMv9l5Tk0ePR&XFt9%;e}A;;HgUb}%jr7`V0#W= z{E_R65m1*>6fx$4o*gEc5@a9Du72gdWwjaad-=JOdb6qE8r}w#szoz-6R!@m43jLu z-JCcH=J`)9M25})R4!4zWDqGYXj>hSoRp3$=bny%IeN7^8FuM|V0k&(UwaL_lPXlu zim?aY!huLVdJa7O@~nQX9ex7{`|^eScdW75@##b#_IvT>G1k(N6Mgj5q)CMK-C(5g zMnBsHpK>JQf4iX{)bJuOHpi?yC7&xRAGt0DB2kc~5|WfIDc?7cZ6Q4JAa#tHZQ9ZT z%NgzOe^F^v*=ZCms88^=Wxbc9J$Lcxn9^3@|K5Gl5JR)_=%MKnr5sVIRIf z^+-$~F<$T5sOV%p@Ph|KXkYvWg1dHz;}V%lC18B;jXw~n*W3tJy%T7l;=OvcFFU@( zuq2$AL?+?O5*(5swWk^g0&&>mZOo1Byas_73oY0vOrBG-l9rquAy?dTkgQ@@ZWX=^ zx{+x}|1Huy62{5sd<1M*57HKUVeqj)ZrB0WWLt^5>fn`m4G!P)Y zWBxQKOP@XY00lc6I}x>$VJRQpAy1~jmEN)V$Nn3b|MUV81sa(PQ83r|!bua01WOHbG$_UfZ~g5_$%ax#Gme6sACt@g~ouM7WlNFYIT>>O?Bz+{CP$Gi9R_3;OJ^ z$x>d%i6nT;5_qEj#X#VE#&5k{gNzOp%?IlQ_JsG}ngMl7}ReOVz=y4}T3-NH-oB8f7{IO`pp-skaM_tA( zg6jBRuhWl6(x=ycT#g+2FrGQS;{=4!xzoU8DIbdgY?+Hu3qQ6#98V3A`?telhcWW} z&c%`ej6)a;ag++P~V_iO#p)M`-t6fO~~G z#NY++7~Q7BSYzQNDkIi`A)Myhu}z%@5~dT$WO0%%7LrPQ-mE*) zY~%UjT%<2-rQfihF1Sr&fInY%6gZv%Lw?Lm zrzQ5&auN$M;`qR6(@4e@-t7Z=lEYvr}xb$bVTH36w3H)^KSr}O`(3Y<2 zqVcFNuA=?bcM&eB2Et@IdBM0B@TVi~_G_Ueg@BSxnwcgKLFNk+cX1YnO+QDTw*<7S zn+&llf+#w*9e?Bmzg?)wZN^dxrjO)AC;B~$IWKTi2QSWHKUtt1lE?pY-9&^z<(g?n z$9I>6fd`krh%HsSaZsVQDaP&u%QQ#7sbJQI8enSic$_~?I&~@mtn#jIbiKbC!EJlN zhzV3L{Fhw{|Fu7X`sBm#be2=u>;zi+?v*$gsDKA2v7ar_k4b&-3Lo0j>1gtCQ6I)q zbA65HSSDpmDG&pYeKaW_`tT)euG)o(h1!WRc7nGojL~7*DzK4+IQ+Qt)ShRURPHQC z+Z!LFf5;=WfHGhZl#~qc$~ySxj)0e(5f??$C)3eeJiB$?*X`*F-PKx3Y`!-mt!*N^ z@*(Y@Y|-XD*S+vXHIUQ$1d0Dcjr{$?7qPW^HzxPjw?!I3D%%(hMA88o6b_}di1|mH zjp2ETE7gwnPQ3Q~Qf%L}8>ja#!eA=jqBDXphqxC>$Bcw$WR8dqF*?L7HHD767betq zSHc*0kzKz)te8d^;I3<~08<`JxQTDci}x*m4!i5iFv(y5+m0|94W=K^1e7!Z$Bdbd zlgB%qAK;9sflyF8-1xi8iUF=($!@w=R9B8Lz`|>?5mdBOqrbaM4E%BF zV`ylv$D{#3iga9olO=AfAJYDS&9y-P%tG97#CZu}^S!rLV&$?m;ykc3&OILE4jcvE z89?`v%?R&q(w$c9}L~X2cWZq4TOn*ZCqfi z)6fALv>uS;O~;ipPRGD3_p^PeE@k zfF2zpMqvF4;JyAFg#Yvscx9``927!LNrmU0bAgU9)N5WenMRq!f$1Z_es>OV?_Yq9 zCLmn}lD|#n6Dwsm-(yxsvogRRulwB>XGqhUz;~C9f%&g25Vb)M?58n+aoIJ1y=WFO zKwH3vGY>in(*})q#b;}48=igQRaEV*#o*#1%sc0JWMo(m+z7UHq3Wd#$gTmroIG(o zL`uYNXawnB=1l@SVG_{!1;M|uO}sA{gL}Y^9|QK-X+Zw{R5Ak?)eW571Y~?`Or_h{ zFBbgTaUS`d*G@y2X&Y?6y95U2zq$a~$-n{q^nMGSn^IU_nhY zP_cQY`b1(KgHP8OS~Q7q{r% zp;j{|$^^RO<{?mnZ-GNUxmpI}s~TKi_ZzFd=x6g^TOdlJ98jP$fP@lz&Y+pU1%S3m zE-M9w=MKcB2cLqBB%@k{)&Ly|`}UIM_;lquBqt}~duJSj(PM_iocG$AdOY>m%V=wD z$I#(}aQ1nph*Rb1Qnv@eTj}g30DBk^_5fX8@h|K40s(^wh*>;B8<^Mk8-dAv!2tV{ zUiyFz7`8$29m9Tp=N@MUxci1QbaP66xk#>n5OY@KRW`v=woE^#m2Rh1eaB9Wm}89c zr7~XZII@dp6Bg-3`>G@j+(@!x4D(;VM=$^_g!vuL(}-mXttg{GrQ({IKR|v;mM(G_ z!r?GBtlx^a-dKiEIE*=Sr(@cTN$_}R1vmz_8BnsT94|h<1nun|n11MF%$_q1$;tlc z8p8pA*D!!0-3=a~RYAC&q3-i`1UkbgQinhs#67wTIJF5#BR?PkJlnHIUE#H5X40_i zv|wNDbsD;5e)T_`vIh)tE}lv6Sty-7h9q`1yYWvZw?}Dke%lR~1L~i_VcS#aMzwlp zCgC$|%E-m%nfYk+C7B0g)8IYe=-<_b8I9E_?4~?;CyYoO6_v#)bDMz~w|^}dv8F>< zxZBRbR>e4fvBm)81XD7cj9;S}H#2BMEl}1BTs-MyOzuAhVQ&zPS(Rw?)?n?rO{lGH zKw4S~X3RVo$^Imybz~!_xj#H1y||WyQ*9nORF&hCkJsY8cUOX|s$iTsM@)xT6y%DP zKftkN(=IG|;RC2)j(!;h_}=NqAfqT1NFw_`7H;jvf)mxpn>VLCiby-vNvT+wGXPad zsR&ESf0VY96YR!8EwvcmN+qo9^X)LtPVX?*3Gn&smIV*n^^}G0_^sDY15;iC_yD7` zHm@I@9xs}`N$6G->`2STd-;P9P(0Y4mW}uG=(nhu(5ovw6vQdjyO0~~0{uRgocTzq__-|$!Np!x0K>z-1n*;^sgQTUoZ*Dfix7<41*`^hd1QM2k(4> z&)(mHP$-0Bj-8F^(wKu`9hH*q)IYzcO zAxTw{73xMxI3#Gv5F7xj1XoXEw?^!LJ6mfqhSH;1>*5b`i;gKv$-vIEENn~9K}B*p zHe}|b&i^ItTLmzttq}vd+A*=E7X7+AaX?EQMz=L#Y?~no?C48m5}i=){@wgH?-2|@ z3t^@SM3zN=K+OPnIuPy;5EH05!VlGmT_Sjc_#Fwqhm4`99%QuTAt{i8-S0G_etSDm z@5hltj>VYKBcldaQ&Wd!%Rj}oEjz)Of{ByHWA5CU!taP(PNnBL3|rE3uq{1X&`C{F zD%NG@qcS-SThj?KU(S^u=n`}?u&WKD+Zr*Vy%~c$TXA^9-nYOrj%T;tYLTRlV(_rH zS6;s@J^N1`9v|AhzL;j|moqFt;T&0^0MbJNVLlySU5azdw_seW+uEI*%5{|C4kiGF zF+1>o@Ba;Xx&~l_fbJ1Ms2{+|rzOcQNq0Me+ogU?4dB8ECbSM3f}W{e0PkY(b|ztP zXcUUd$0E00J1wWSwjNLaTXUKzl61xyCt$>gV)*?ON{yvG<7i0|nUr0l=C)ZS?(D0C$hN%nNkl zx*cn9Y;`GycC-rh=W{fd;x%h!7?p8+RJ#_h*1n4Y2LajB08wPlmW@pFoTy2YkOq+3 zOF)Y_X&W+`igzE3_x`#G4cj`9o0^BYvu9!CNc-tH@o*wP=LjkuVFs6^X5!7lAy_bS zGV1-3tJss~zT9`)F?oozSv=BtECyHz;F>QN&VB3c7|PpkuES9^WjMBG54^oh5Ua>7 zL3LIIb|!5{dy!UnS0KuT*o|lAdphCTrT0EDiW{TZ`?4`j+bS=L)zKIp9*6vz-Z4Ok zF}&HY81M8OjP+Uhc&nfDd2IVOd;9h4dog*)wN5>_Gr;Q7L!c-t^%a)=3SD0|P6Nsb zbYWOW3ohQh373{^L~1w`w~Me6Mn!HZJ}>?R&8ZCt_`1QF8dJJE68Ju72)i_wnNFT4 z*_4tk4JU0R+T@CGq|;h+F=E>^Cx0!>;dpRc zpR*8Dbp{S8UfnYW*jSc}fcgZ$PV8BSU$3__LIKR*wicI_Y{a0BHj7rEQi@%^PE_WU z;j^JD(U@KrGg4!>;SG&o*A9Z{dSeOych zhkj_YOhW@$Ypd35SOw~8fzGbjz!7z1W&k-_bbvDj$jt%78C(138rt51Gt0N*%styN zwXquQ{x*~p?7+@`+fb8T0hMXN0h7pe%$R12199rNEQjaGgfBA!oiS!?s+Zf8`!nv- z=6Xt~OT=Wdz$d{NWtQ1B)Bm@3El_q8W%{eW_hudmlSwAYOrD645I_MnAO<`TREUvh z*n|Yo)g=MhU3X7J)ZO(lE1ng_kX_J4AguB-K-Lhzg8_WRvw|WI#RmZ*!I;b>GnvT@ zlg#rzYWcgndj76k-Cg(2osfWi&YYRKx4XK!`hR@?_y1K@a4?~BI+}LQL1XJts2&)H zrzbRG{jAwoKVvrjJl5YDb2MHD$;;j@2nA8Qx`3X2!z*Y+-Lt0p^%|zh03{4bZb)7x zPK;jDO<(|UR^h}M--&86UICtYbuOILV-T3>Hn4j)#EzXnM+fki?Vi974FNeHVvs@% z4%*eAXEL<8)^NY*?=;PU9Rtjn4b;>^o^X8loC>^*S^b?@x%+0!7C%5w&1=XzUf&}* zd5b`l3tO6Wxz=0Fq@mVZN`=~{5`B7a^f%ve(p4B%t?cH$h}|i8pVJWU+3$TuJ5thw z8@k^}y^$J9C!a=b?|A%X;3BN4zY2e@X{f*`vnGayAfEpnKnsAqymeS!NN&_Ye`mwX z+Z#KPN&!_>!w;|Ig$8!k;lQLxkTYihO-k8rutne1gCBdeZ;|{9^>T3ey_^X4AY-ejaG zxjaztUrkbS%>>uf7;X{su*SI_9himzUI<__$k`k)H~#@V~O|fgY3PSG?(U-+AfM4Sd5Wm#RwFooT0AP2VUt*n?IL+wS<%`G>}~^E zT7dR;psmf$nkT)qk$>MI9lQ%0*6tjc0?>=PV8u5jaCK~-$Tc-l#h7J!n_d!G2eK69 zOxq)6ploJ+J>NWb5zX1Jb}7aDT4AurZ(wbWQ55R(AKRqD~KxNo{#R4M;cw2 zjE&9;Y!EApUpv8-En6U-c?Rh21_lPp6MBL)jZ*;f^2w&y>&H;mQ#gX!F~{qUd39mq z+Rr5Ek=<>VTz-_u)INbsW(vlQ^8}p?(DZ5Er0hx^dpaPxU-J}VXN&i+6kpK)gcFk> z*lDLi9(SA@TsNk6U{TLE@Xo8RY;B|&_9#r~Ex3{4;#S(f@trW`ix%Wy1o)l-}4)Iy+7@7%mbwT{` zkH9aUh=1es5ERRifV((71I(E2{x9pt1CuKVCi?mzTKwICNHO;BCuMAx*}hY;{&re; zHAzvDPI-N?n^mi7@Xph(Lv8gx3|G5YTsP8FNZ|MFgCGmjxfkf~_t=8hdc404M@^lB zxu>VGaQY9?koU^Ii=co`BQncR)}8hPp!Gn>>idL)7pR(qZX}->FusB)YC9$#G+Qa2 z)*tc+R*Y08lCRIBZ{XYb{m(y-HEYa5!rHL&0Cd6KKRO91@gM}ICih{K&Y*~o+%Nh1 zo*oE-PcQ!|@C;R%EIxAbuko&<{)Fm`$123JJN$bRZrTfs0$D10GYP&6X$%&a+KCK$ zl|U+CH(Vb;9bd_mV1{A^29c~|4yFvG2!mN~)w*3hY|UQPuK&t(c1iu;Ka|1dKOBYs z`N_%X8)W6$bB=-}7*kj05fcPMM^G6&V#$%%g}gi;mwotYo3`u~fLgon(HkJ8F{NyC zvr##xP(Z4E7wWb>i%-m3ho%W$ah&Nz>X=tyciIJh;#hCS7Z)y`=u$Yn94oB62Uipx z9|WHpf@5o8w}3`Up(s#(b*~pRo1jr#puBz01bq4N<=A`pdytzv^^FyFlRycv1{a?l z%lz=mN>hOQAD)iFn5PK+kBTst(I^GBC!{vx%*;AWa$2mCN6Nwyi$gGn;EucEpl0EV zEV~86lN1jW#SvWSnYV~ykV5U3az2Aw)CU4G1c_*SSAs}-9N-T}@CEbf7Tf)F>@-e9!PJ1xBdXQsc88bQUYF_4G3 zdV)6ubqMPdtHT3N9fJo+E5^m^=ZA#VWQh%N0#AmS=+B~{B)2FIm5MuI~gejENdy?iQ1Xc!C7bXd-`1XN}Ptb7toGGY5r z91sU*;(~4i%M|n_j$Rc2u|~kVN&)}?6rxE)K~yicdkMDChA;_Ls88%a75~}33cUqm zwQ-_|7*7bXeOg2w)uNC;g^}hD1*1jv92A`LgCZ}t zHs4!?2`bZwm~WNv7*l( zTMIE`8k*iVh^3QnM!leQFj?|Ydr2Il6T>sUCY%ch;b2=U9|w&hl2RdvrJbY0pg>4% z;ZIy5jJ2VbDp1U10QK1QfnsZI{;9(Yl8Gq_m3}j?q7;|fZOb*`YcE`dSGHC`?q~&i z4@e!*URlV@$3r*2RF1%vuK;AQ&s%wE!I9qrP!C#^)dX>3dqoTC=e%mJgkxI69-MQ^ zFVHlhv#9)7UCNb$Fg`&ZTF_PnfqE5Ykr3)aZYzut*BSYJtr|444{;0+3&;Zjj8j6x zJ#~dMdkDP|BtiZJ!tTpqg<~lg}wGdbm)cTgx6N(Z1AG)qkfY|3-jotyT6av8H`Yv2@<|Z6g z+iR}k)I0!Bt1-2rRE3m~hL>Ep7-_nJ~UZra8*fD99D} zygKv>)i3#$p0dZk-{nCg|D)LHp`H83;>+t6f^r7#L8TC5Js2wwqgru)bf{y>9hV|E z6d#aVl30&IY6Wg;?kVMRe(uN=fLi+eS59*G7o&}~N8y-+R$P4SI!vhbc2wt9KE(F; zZ-#-IuH~zN6y-RI8u8_Hqchw#)~K zysSFikB=PwAm-F>fg@y5WuqE%#p+P0GGTs~IPkyZL9eNdK`}=~mfphhnphki_9zRZ zxcf-!pCt4a^e6Xr#@vQw+)zZF`UZd| z0Nwku&C}pG8z6BK$v}DC@va(^8pNVm58&wf7s8N-S#>2;^qXpU)DDh1+z7C@dcmfG zHVxuLQHW8N(F8@fCosY=8(3wC33P#13AB2!eV@**{^{fQG2C^-w8MSm#>_T0w@_VrQB|% zL>?zic@p!Reuj)cUzfjRF8DO?L?XCFY#Q|!WPl^em_wG`hT=3SNsJKl{si}m6M9>P z(4mrnUX7(x%Y=5im!ud}!J%NRnMdZ{I#)>JzAX#zz}ET5SuDpABRlPIuoPeW($CA4 zFa5g8c>rqpiYqdxpLs5X{6V=LoIQRE7S4JA)hTaf2|l-$E{6Mn6vA;gG82)4;e zhGGCFjJl#2EwBabi41ltsC;BfuH1nlv$4|qRTTK!cpC0y44#jBSE_QMLOLp;2x^El2&4=a1;&5>*gs=e zPrY|CmC5jR7U(m|4iDvqWrjHIOgf9I%-3;!bH%ss8XX0=;N$fUGHWCxZIKv1Ntk+2 zU4=>YUHH(6o6$6`HGUa!T920UCu)fi#Bm)-b5qxRpj1#R?L2#(WW2%P<3tzgF=ceCVJEq~kA3p=z z+b4J>63GjVWCg@M1!PxYZ^jsj2*m#=6P1K9j}j$m$5htsJ%PCNc79Dih( z?$oI^72p!=2|R>8i^>;9o%PYr4=i&W1ThGLk$X3I2ldi}WRwld!j#GAIs7(40R9tFlvvWPXKT9%1F(EhVZ*z zkXpp|n-oBYNrsost!haygWpfD3S~lBq-YV!7$_PWBlS{^Ri`!zZ>jitX$e)dP_k_Q zVDYjux-q+X)BEw`=M$D)5u!z+un-U2{)cje+vb|lRRHS2;*}?ff}~x!Pc(I?abi0b zo$_OhtLYmqQ}#~`1;DfrmCCT1phA@Jm+``*Xi!sfE$}p|Qq%&*L@6O}KN9=1_Vu7Q z7V6ltKMV@$1#}_rqI(|y`KgSWlpxE>yLddO-f7pqT3o;JgLt_$k}&+Obi@_daNCG7 zy-7+i`U*fh&ir=AJOS|lfKXn1Y)v0N^1jC~xjwuot+V?_9o}x30O!uES|TBIyF3Z2oAAwo)FX# z-f}E7xh5p|%AKocl)$#ONw{vqS=hTTyn`l@OA_)zoH+9tXgj(j33RF7kG=w^9$j$x z2L!}@0NlkV9Z|r$=KK!xj(HAg$6uJ14H6$z8tb_1q>krJ3{4!S)-9*;dacffx936u zo8UI#9NYN<0rs}U@kQ~D1rx?;Ta)GI_}|n%Rgu2h>BR;i(vJnk`GSM>PrMr&pE@4& zw|{g>$cwS@_Men0%;lVa;1qy*cfrbw1SHMboH?~&H_kfwr>L#=p^q>8?qIUNl}?nx z-CGHJobYfM;CD!Glf$GCI4O1J21A7xrRGlk=FgA5GNftRG&`k=GBNIcupoIc&J^qOLU&Hm>x^e>$ zvbr%a&)NXQDF+Y8b){n-Sv{}GE72SRfl$%sp@<<_%qBeER>kC@aR7iF2C{LiXA8OD_3CxW# zguxo~KB)F%VU;G(`nmcHuQ+P62zs%=-#C{-hhY&h2hAg(fSC3(2w<)E?6i{Eg)csi zXPcYdwYm=Y@rEgYdeY19#5+=XtOsx;mH5!-?rb;49@qrHy092urgFiiSz-$3YTiT- zFymam{#}SovS4iVV7lmDQHpPXEUqGzi1AI2IWur}RxB^foS9~9hsX<&CP8R~j8k&_jomDx!V$^0^R% zswk6^OA!JRMbqk;+o+07w?ACKlll?C>?jW#h3|`=J1GGf5#&?*B==M_*Rda2N8lbY z2A{v=6pTuFgN@*;a}Ejxpw4{!yQt4dTs@G*7mAWHN!e8cZK(&8dSXZkQBrXnFQVg$ z!=XmVO2!CgoZ$NosAx+hBczG*1SVsk*GDnv<-$%P8nknC15`9lmV|_&wW)ow{?G5i zSBG*~{fPyrcwt*9f`8B{fa=gC-@#%>;AR0#atR%idp9VA&YN=x6vFJjq?uqV6$Ak!}}UrKx(67Nl7Jak@O1=7Yuk}0FiUvjxgtc0?RI9@&}`x{C+ zSwfvC1&vIu`BLC2pjO%)OGH>Ir6cfECXLVacH+r-^H8zLER|4-gH8d|LoK@<(^5Hn z0uo;>MSwyIpb2IokIv7h0FqabYA@S%MwL;3H1;P+FgXJg8^Sdef?m{TWB!9N zb&14;@41~6zECp;-<>-P6`8|Z38Ck09JC5Rom_H1#$@*3qr$R$*MLu+obSztgu^n9TU{jb0B<7T*0?tcI=?h zHX-pJwGww7cN|8%dPAiJ|DcTlOb>eTw{en_!Zi-?AzFqpuuu_@h6_;CON|t+66ixy z(#I7#161M3EM364H;Ig0RGT)Hoe}wkI5-to>YNydg%zUP5qR85o8DR85Zn8+zS{pBSwJ8`hYWVwxezP95^Na!sY63+Vv9?MWu#FaJj z*?+n!-bh(VCCDbLsl0=pRV}jmNjp+n2A?`))L~qt zWlvDx5XuhbiGy_7sZ+cp2u&? zgu#vH#L=BvjFQOk#4U}Ulwgd4Jsw?38_})K3*5cv-6&~WqEdx)G|xYz6(CTAn=w5F zTrDJ)34tj>_=`iA!nd+0;o4YY>{wqnUGj61SZ>LDNVt&DM&U}L&m`?3+0Qg^|82~ zd#1STGLKV2gn@pK7zPZ$o|M2kIJo<~lMjA&$5t!fR0=>3z2pYepbFE|4n7HqzZJqQ zsR$R>vGNL|;6$9yIs6cgR|%q|wfPMkyD>ng^C$^tQOy|%f&6HkmsfB~I5Ckoob>8& z9NdwX_|72EvUEQBZH4PlIPXoT0DRCdy%95H2A`G^e(*Sf)Zna5Z>45;22h_*Aci45_jjS@#>2C*n21m@ksjmmQnzHpf0@yS4&E$ z0q=l7y#Q+BFm=ciBrz}SdplXPh9=?+A1|z#n7^ zkFH#R)guw2L;2dbv;w$6^ZiI=I`JNn!U;m+Q~|tC0CQqtPm=KKu*DX}Xu-6a$;RPY zqyllA?|Tof5Y$!*co_n}OgnhOaqxUyC!Srp6v=zk9?BA)(D%2z0`T$q==B&Y>d=4! zn&99ZDey4|I9!hxjI~6i;CLR0a!+B(C8z*BLh1D4JH3qA5!n9v4xV=k2S2PzVRugf zo!6X=-Z!yKm-J|VRe*%yqN$p>AuLS^EOZ3sN}$dWs1gDVuAw!sLvaeDmu+xQcWF#>S0Mzc>quTs{)iT*fd)$m&UO| zVv>}Y?>MNI67O~dY6LJ-3LN3?+rg6#S2#+WV5bH7~%td>R%OL1Vc`18*Q6}3AHJtvKiE*iB&4VK^i9jI0X`pzh`lS z^yt?KuGNmf`fO56mk@Z&5$L4uNr8eR@T*J;&%;3>okwp@pnnj^SN#rMZ`7JPBN)1a b=FG literal 0 HcmV?d00001 diff --git a/e2e/start/basic-auth/public/android-chrome-512x512.png b/e2e/start/basic-auth/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..11d626ea3d00fddd52861bf0af5554a92fc30d69 GIT binary patch literal 109271 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 Ef@mE(_W%F@ literal 0 HcmV?d00001 diff --git a/e2e/start/basic-auth/public/apple-touch-icon.png b/e2e/start/basic-auth/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9423cc02c40ea066d2a061cdcdf621c0718cb1 GIT binary patch literal 27246 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⪼QBTrk7=4F{*9!jcuIQgW+_>ANWx*5LpNgE&8}9N3K*JMuTNJf#O&;+>RZ| zjg;3vb4-j5IFBmngCqzc5lpnz!-?B@=251<>}+hauP_1Tw>D@Tnoh15&3RWNHAz1Y=~@p1k3`V<>dOf4tpihiU|EI8e0>>Mup4;$39xXNHGsB$890{) z*Xd|3t6*fuFQ-GaIkqn2=^O*OOe6f5$S)Jj0G&=912<9ixUC`%u$n8O%ke+)sk}bw zA4j#BuLh%FjSChi$ZvlV;Np&oXm>yvy!s4_@&%STh4Xi3hop5p%H%FD3C`aK(l#e2 zG1@Of)f%MtwyeVI>y~107Dq{jrR9*xY2<9{1GY2(XH7o_Cr&tA@1$eEC3>peJ?MG= zLxgrzfu-jn>6}ZTu2~D#)`*l-4u_IyxcE71v$3YQ^+fw=d(pr)`&_*6vWadWjYK8>cVOGT^r{Woa=&rRAngA(eUGnaPxy^YPeOh>o(`ZIGS za1dP%mL3(z+d05;S+aN|6VXWk_cpKCxe?E;dKX3MDu(EnL)+jb8Cl4kbi+PcB$9CV zdDlpynoI(Fy*wO7*9)&Bvab~&(S!TNKP4vzX%`(0mM)!qw}~B6pPkFJ%OSR?L2wN+ zDFN2@-Z9p03^od&#ytBRal`N^yY{}zH9-IAhV#Ic=cD3W*_f%Lv9TgyniI;I$HN`h z$+T?@)VOXzA7Lj0b21XIvfLPiqn^*ID)7|GMaWN!2(iPBR~pYE94K$pPJ`cm=9S1x z%Zkn*)5xGnIE?N^A0fQ67Et|Qs$blNoqYMlNV<3)@VXXEC+bjR%tg@Hw@3`!WO`l^ zQ(eZ!jZxa@>r#)`f^71PIQ2Le5K*6Ftep#=+v333`RuxTv@0q2JvUDKcZ@{s%zr}3 zmF36D>BY$hQdX?0;;k6odDm5M!xJmsL|$qHqbX*(#~d=okPIxf9l&Kro{qzYx<%c0 zuZ#EeqWg`H5!u_Kap=;aNPGS%1pn|5lCm1WOf#i(7J7*z2@RU`(Ew>4#mVEf$7^Nm zPkX)E>UgeVI=ks!?b09t>U(eOC6COgs`}gaSl`ELo0BU^6Vu z9;4rQ5hZd+^QEZ=*xUfj9x)jg%_Q}m{&k!&pljt8zr6y58+T)9QU-icjq?=;>MQkAdEr3#@bpv`q+*4TGzViT>5En9Q2Df`!hEW z^|x!QEAZr}Z=oQ~0<_TvC$Q-`MfhJ)1&k~hj4NlKjWnU{h@EH*)_$@Hi(Xxf?Brye zGjtfTS|WfhPt(oRzQQc{XOw^?`=OL&f=w6$RPO>*@0il@>itT;XLyF)bg%v5P5%3v zZUWb?M&55OJy7cPcQqJjJs$Z!t=fWTK6@L*=_*E%)1IM?ba>p!i^`s5yhQ#HZ5~&awR3J;T1=ojj6@acgD!Q?(FQwqYplZww4Y| zoH7PypMR3L#+mno(DzO`B0Ji^Nc_;bwJ^dI6(Z@iUnBUnTYz3w(~PJAU{DSMn|=-T z2M+;zcZoQ_tPo%Y$-oKIfXekich?u6==Gr?*6WNc>{QJ2+1rNLvo6d2JOR9uL=6UYTL`?H0aXlW@@aZ(5ZBfWGzLdUS}It(w1K>^8JKFF z?m5__cgV^Y;s(CYZoT&rc{Mfb=Xc#O6I^-!-!}(4b~lLvEP?N0xj05G@?NA#q#iGK zMY&8DKyO=)sYSq`3=j8FDZ9a`t2=;A4ZsN_569W#wEGVY7lMZRCOrG}LbSJa;<&HR z#+;)ymzh|pwx%9WKKhcF0B6rT5tF8jgO9GebtK-%z;`pC#|Lao0#qM@O+YvZr11>x zishULaAiG^O#s*RT%P1hfUeF)#B^DW?*c5-Dkf3f>uCd1PhhwH;WJl23od=5|>HTForZ^2I zZht!#9b1G$W3Y^!og?}o7~a~x42!le$FyQQhc@J8N9iUZ=nj_EwLnQ`39dQ(JS6-5 z=t^rtXIcwBU9}E7w(mh^W;%{L{zzn`WgxvfNBpxavxWnf?f}FYR(-k-@4veYbTsVb zQ;xxm!|1v?f9HdS30Xbop6X!AL8HH=fH0N{( zb2@@K9ItCr(ovC~i}nCr&u1mSs-mp76XQEukR;TRZstHY!;I8-#+S06-D_|Vla1Ia z;&NO|aw?uJ8;4F`0PC|0v9M^k8GJV$=W)I#a9>nYf%I?) zGu!HMYJH_xT78^i({cFRZbx-SXSBE8BeYl|79Ebab}TmmUF^c4MO8YZB=MBz0AZ3a z7|=HoP;#_s>AaEF{9DqJ7?Xs4X7uEsxOSXyW-Hw{7HOS%f(}bQ`~)8_UL{VnU;OQJ zFmmKjy|>ZU&^>!<@WS(Npu4LF+1Xh*=iHMqWC+FelSeX!RVkYP>rbNd5Druj9u!by z)J21a;=UdY4;%sy)-9T1EN);w zyXTKi7HfyZf(8D@Mn0QSL5*`YqnXlp=Wum^{= z)?;jE3&wP{Vq!;==v4Gf_TrnC8Oh#W=W`1j0?<2_V|p<_fHtOlco3kb13Uu=mjXN; zPz_6>2T09U={js1$YbTv-(__aAhkCWI~TQ}p}Yf1dkVfW^&FIz&`~q1&3%1AY~HdR zAHKgFU0vN6F=7Z#Idv`y3XHqZy+G`wo4f+s^AP{soSBbp89AuP$i?cML1;)y#hUCw zv<0G#%Lfu43g?*E(Tvi*F3f1H7e8mU)X{3+SkM7_P*(!6$m z(m@Asyw0aa!bppRksb-*oZ20@ymAw!wbS{$M656#-?;cBaIWIjZA_2l;78b%Xe?W+@@+w zZEHeVPp1%3_9u1vI`DMOLNw;pplk-fDA+ni{btP*`@}R%XI;~!As>l*{wy$ ztsIU;e_jpNkbKR^!;lYS6R(q~4@%Y#O`<)p@(nlF|g8 ztgT?Oj2jco2>{)#EP26qn<#E|%G}2Qceov3O(_@`oQ`2TXCSH1d1p=Rm5fBlB?V>p z-PpshCoS`kh?V^rAJ=a=-wH%d#mter69Y7TwPyG806TBLD?fw8@8cl0>a_VpI@T~ zRx|B_M|HO0jM`oJ-yIt|cL`*5&;#OL0mBrewH5qc6N-<^iiAe7#!2IdQ;{Gwy58g(< zwH0jBW+1F99?Hvs`g-lqwO2|`2Bu8~QgnH}s0e)ASo{6da$csqj_HHX_9`wmpjT9! zgtm^CQB{?W?ryM}8qI^Nx(0{{)A@l*bVF-V5s;M$E`DYMIoaB?{YaxipW@_>$1o$f z2w`8yJlQnROA#?RaRtTA7zHk7`*r|9S@Lg{RzUnvGtgqpDw6~uWbCw<0u4tvvCGqqx zJslV^0({aWV6b*QTOx@>j|CCzReQXbmN4^H{zYdv5D(aoQ~{N;iakl zqf73k4WR*A0azChQ<;YGRQ@UFGru7(K9wR{(cOqZbGLR+B7r^;FuRFNRCWh)@DV!; z4=BIvpQy378f?=hVAn37s|yIy?4wvBhcFSLva;Uc$%W_R?>}i97@%nozVSa-bH*Qt z*>t}j5W3IU4Bsq+xI2j^{nSVxI~y23P6IcIDVfsU5qjZ%9>k=+cX3ANJtz)uGlA>` zsqwdS@QH5ZHj(0kxci$f5TXk?1qg`)J3;K=z6K~wu)lGOX0Nv9IrU$n~Z5Hw!KqBuFe$=O{vzO8JBI79Dh+JL=nn#@gL zkLstyv1QuO?<9u&uJKl^d!r5EDlMR7RH7Js#BB+nxw!(koT8|v9U{XEnQ_;w`7ZAM z>67t56`w;>2^3vv-0a0*I67W|2mC$F-qtoS+H}xng#OX2)l+6#4^E!B8q-GXLTYlK zU7ze>fupR%eQ6^{9GQNavabV}PI=e>m)E9Ges6+Q2EGh({kaKzm+#!X)7(^b@l2p_K z6s}C(2)k{H4SbSft*RjxH$3|-^o^bjKBNpn#588~0mf+J#jzeJ_#Q4e<=I5?^aId~ z@}Ppw9LD!hPo(Dk_{N7YruvrPl)z)iRqE|vmgGj~(n|o&O3|*HaMMQEWY!qsg1NCX z#1Mz*VQMZ68QfzdX|%x*1LBG(j!mPvdbr5xRAz0v_K(8<8g+=DI_>36qXF#t@E|b0t5(TF3Y}~+$;mm2{vJSb7(MRvBhhn7$sXv+|}T`CI@zFr&OnBKlF)2 z?IGQ^A!D0jh}3pBpm+0hJkxv$UTTeUW;^sluc~L`;?rMGwBr5&no50k(L>;fe`}T@ z9*EI7FoC^O(1mjXf4~&qN3lf=iDS`*uOI_R^4ayk@&?UKPLATjF4_mDS}opY(p6ND zG%2P=L$W41pCzIhv57^xoY4~mHt*BK5kp&QYC}9kw2wNE!Jq1HKo>cKABbdZ>Jt@X z7#_xjr~XfWs_s9a|M|`Y@bH_gwr;qob=X%AglvA+nnuEiE-C;mRYkv&4mnHHBa01( z{<~M>6{wi!zXwx&i=iNFcYEYg6G9(!AZC384sY?*#4{8-#M7k{X~2@&H2xz_--cW4`T zN@P7GUAE2QO()k06ULI{U~&OJP&7!(uPERp#g$r;u8M?6tSIlpJbP%lR6~SaA}fwA*;GP)N8Sp zd7GxeOJ3HIVbfU1fR!wTran4eSrX?ofaz?DA;P$Fe_eGbuO#$cUkKP(r|Gh77F372 zQztJfgClWA?E=(?3N*bS{Uh5!QxmXjx28ir!0F#Zc8B`P!wdRb?0^7`^S@WfLjE@Z zzMqZ(F`7$UJtrH5L&7*`%KvZgT7#@8uJG4$@9wfZF~$l;QPh|!D-kMHYKdABgOLynva%>Ifn{CU z$DPn~r)SUfobH~xd+)NV-aqWJ_s;a4`T9HG`OfK{=TRlvs(yO1M}O~G4)iW>12ZcN z9BzTm&`K{C67JQ7RZd8hC@SD{V73)i6xfKrtve~PNvS1@u}Ks@o=!d$SL$n1grn@e z`QR|zzve>JzMsuorzPEIPptFHS|;MjM^r3HjqCOSS|0wAnO_&d!-i0WBYFa|TA20~ zcuNQKx=~w^s(TnimZpR*e zvJIkVMPZ(`tP<`I_717@;hlwNmdl6I6#QyGplfQ%@V^~*Bj?Y7NK@amjIE^=qA~QA z8XAL;HmK|)TsHP49N91Qm_rp#eSHenJ{9@yH=68mu7fEVOvAou{N#k3u*eD>=$vbz zpObS*bdTJWoJKla)8Df3Y4h&T%ir?T`2+sez4@WHh)$Mmx)In@|E@f~z8 zJ7o6y&w%%L19FcM>VD`NTmHUj$I-a`)gPd-rPxbO#p`Hloqz|bQ+duDggORjdBofA z9)@QBRRH0_{*FPrJaZ5i4qb&4`o9~oMR2o~PeP=JEMLnaNzg=O$og6R%dn=CeI1>4 z(fMi8X()3Ck|g{>ku)+eIc0pEohiWC3E_wiD!)+w2G5O=E$_0~i4q9YLh#DA5%|>` zlhN2xv~3J_qfDHEd+ylO5d?J{(DLka?~=asV)$_H`0W_&#G$J&a=?0IM80ev3xVXq zN++XNS>EEdvMX^ojIx4ZLOMYd0I4oFvA6#J&WWOd&Lxvld=G1DM+czp@Jm2$k2)I*?p)E)V-*L`aum1S{X2j>Nvjh4oj2!TG zA~{i@j#xpLGwMACMqy^Wi zN}@=+SYI#XD9uhaHyK}3OP;CsN~Sj455+u--<*s!TfgltzHq?su@=Zp!+q6th2o|( z8k!#Umg*76c+a4vWtglS3fVj$_aT&)o?LimD1i^C*oo=GmZKum*8Zs&CeqIe%yL^~ zm6&Pl8impDLnc5{i4tQ@(oB>{z+8P57IxLOuHKQS+iH=!v=pHY0|T9YJrf}oNSnsY$Pj#+3Y5?<}Shg z)kWJ~pm+=&eu>OQ*H6!R{t^K8rQGuB^sYp|KJ~bG%ySsfV;7tFDY+qUl3W%gJysh- zS&I#Xm7?Qn>`rgA0%C%RwW38D_aO@VRH`@<*;vAu(pzT7uYGS;l7+d5UWk%R{qK)~ z1L1ncSWZJ^$hHH6@XO~WVf&swzyY!v$xOR@y_~qIb@fA!7lWDAF^Uf8;J}w%f0=0Y zSGMid$q%_a+l&dP{T;_u)h56k4J-tJ>RqP5V1L#ZqcS#|?l7>`M6#|gW~XrzfRPmu z^E37ujU2Ia>y{dgK(?P9+L~(Uhzz(1VgSAbwJep#R-iMQ`pwP9V$rkbqOr-j9a+xL zh$(pLp{I%oW~%p#d)%|Dv*=g5P(aMKf%@d(>v86&b-dS1SWr3|QacAAvD}DQ=(fm? zh*4d~;v9&yg%S#U+EFLJhu@~YTzc5(%xJkmOgb4nY6a|=E5wxB=_FG>%a!N<-4#|8 zY1Nk8Cpm`4*Peo>UmI=1Q_hFK7<-Ss6>H))hopvN4! z9TQIb8!9W3yBAS2U&<{BX2p_Rr7RIb3rNIR_HCzLW;^bfNt4zar(?4*K9`)@u9K^X z6h#nCTFIqd8+Vcg0@SMxCs_TbJ+ScE^RQv-(JVfFUp#UXAM51NQ&`3Is_+K~!Fq@dkZep9O0()3T)IH`8R&0J1|nzMnpF z9Y%lS9c1!5m?!%O!ci$^=0c?j1V#@!MKY$l1}1GCd!GT&#za!H-}2YQTpXf~MZ!;} zkw~#6-P6N1*~s50o6|%%78S#Bw)**gYPmOv8oPp(N=S3Q!1L=y1@c4wEMGpb5|!SK zcw)KS+`DA2(gRu!ed3S$Bir(r5dOr$13t!uXTFHCta;m71#**qR3Xz9hGW*0!*^96 zrN@jNUkkqquxZ$p8;73ICUOHBnHa|AY&Z3PiAliderHRpHd*Lok{jG?_$a?^f=);( z$~HG=ao5TT*tqR0@O|+DTC&&Rh2Q2o%}V&{96*Pl?orvW?9y{qO*x`heJl}FgHS$a zP+PHN^?GP!0i!XM0v-!MlM|7`(lZuc7{`L0Af^^l4umFc&#-jpWDRFcc8ddkE6#9s=08uMckf{p6Jg>U;gLGr$~8t`bg|*r6vatQvI8z`9#}U@m9U ztJoxk2%ETQ$zBvHEul4*v8VB4Y0<_4=$J>WPd)>?nj}Naov}F-%nBH*b!lPQsArm! zJO;f_rIx%$QcKHK<$CU;e$NOj*s{Co{#z&2l~iU>kaZqIhi9#>hF3QP3x&XsgWO5W zl!M|T4Y7uviCA)@0OfKgl=T-*Wt$~t3)|Gkj`Y0+h-}hnia;i7lKE~%%a6#Tv>H6P zBwVym1s7%m9=T5At!?=gS&AKl`zeB_(fxYknYguDJ}|2jU!4wU`Q2vLps!z!`NGF+ zA@ZG+!QeOcH>yo^5kR3g(!UG3>{YD5zLKYD-9?2_H66xsp_; zm(3MsEaX6eFLku6BnB&9@@SHGadGxD%$ssPN@C5~=Eq?Hv>Z_N%gAo~02d>N6+)n& zEcZ)5C#rZP?3?sztn{obE5+;*T&6;XVr&Pya^Q+h9+L&;av3;4hg7FKAF;`&RYO&j zOH=_F9dF7vXj07CoZNj;_al%V^?~%*D>9gIbQ7LE=NxF;0CWybA2vX%uXp{!n0|<$ z=QXurmxKKI+bfK0Y#LTeXq? zO?kz(?~xz}%e7I*kqZMh?!cylEtr4JI25%vqtIz^*a0mEeC;xfX!h|SJdCsMzf85S zOD}VU2c_5b{g(+?bS8}Hd8Ye~d%qsyt;bBc=d{r#G$gt)2}CAO46wEY)Rr9U6BJmx zWfyL^;B*wNYpzfrtM_*aK+C~g^)RZuX55nzmG;ucxgC=XOkHTH+L;?zG_z4!XwFSIrq2ZML|FxHKVb-p($CypAa^-Hs{vhI zgBgAf3xvQxy?9_v&|F@!D*7#d3N=AY{TB%tpeLOs>E(!G)=8&F4o&hv zV0YHT+|k3(;bl`D1u^}6mtkl+sAz*B%nlPFB8N#BXw6l`49kArJyElJB)4?W`92FX2+yq(Fe`u&Yq9B56!gAPw}iONwyY9WcIew5mj3 zIGjI6PWX5wlf@G6AYK|jwreJRu8GqnZ9CVX>EC7d-g|>EU3ge31cFBbxWY6iS2&+J zW@Cj`hHl>}z@_%cNo7wRKRS;|w_9?67|W*VO<_E2_^1~iZe0IYJYHShx!rMv-0L*& z?e>6HUvlyi4D2CrB|Kar85=+^4rJ8vV68w+OS{(nS@pBd&?cSi+H=EUyV2;vTAGZT z1E9eZc*O&r5n24{($iplLTef@b%pnQZU7xQA~oon^&z+Soh^J!GFer$U=k}L5Q(8n z6r1f8tM+jcg%pE0eeARjiC%X`AqP`uJUr*g%{3eG`r&BtEG6(icYvlBD{w_T+$Df- z34!AU4lSVP*~^Qv*( z$F(RF{GV$;tBWyh35FtzkpjWv=)Nm}K@qT(Ha4}DstKULL}i5b6syGIT}S^$Oe)9^ zhke^zg36ZOElFoMId%!)AD+O9Rv#N?oQDqz1xR;${}%$#^roC#gRUy;4k;FC3uhMZCHOCwT%V!p9f@BZa^j@~LooKQrfmumuVmKrK~7)tk}IN}>eu ztHQ$uPv8ysc>AXDc&ij(=?=&ILIXNVBv&FcxHqy5+fm-yf|(FFSqR8oyekyAO&)eE zL9uiz|$V^X5W5T-mo7{gAbr($`rJA2hf#rj9&uUa&@m;hS7c| zSQ>VLCmK<_ zo1U~uAc6Xt1Z~Llp9o-8253bVpJvPONsEV8T!0;&y&XWx%hKiE_J2If|1waZ6m0+i N002ovPDHLkV1k;v<;Va4 literal 0 HcmV?d00001 diff --git a/e2e/start/basic-auth/public/favicon-16x16.png b/e2e/start/basic-auth/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..e3389b00443d602a249b48ae0e21e333971c9c1e GIT binary patch literal 832 zcmV-G1Hb%Px%`bk7VR5(v%lW%BSRTRK~=OuZ4FYhI3vvy^4t8t~UDHGBS#44K%hSiDal!9Nj zeb^RZ;3&cb72F3w6s4;uUA7>Cf>1=Z56;a$8wZ=NKHtq z33GDV=_|V0E(QPTEB1=edhG{{=-+C??RQi7*e9J7YBnZR+PppIKjA8EV+}Yt`zH<7 zGR%O5D3|Ef)99hUXu19=Cxaki@6toZIe&u-X0(oDFRl|x6P7Bwc^mB(i9|gOY)Jh6DaPkmt z8Wr!@TP1|RPlYRlJe^eRB0K(gn91{(=zi{HrkpHIflw8&q%;+U!V&dFPYDQAWJh@< zwcklN9VEX?vG;}75GqCepKC25M^xV%BcR%A8c!)S5k4P0$g}HS#lA6zy`~K@9&EX4 zOrvr%_1U2dp~gg6G*;&`Jag*?jZTJv+$S`*#)zme_SFWOCm*F4U&hJihqxAu;8z}x zWv7!u>YKRa3PUJQs55wC)i4QvFOAV0jW$?1cnUJJ7Vl?z_ge{9q!zpfCJxd8vJ>-ql@0&`Bttn1~4;s>8tax%hr(^q#A_*wqAv( zh(T&>hJD?OhiP$sxAzkd1W1^EHV1WL3xM&6$*HhG@|8}OjPpG{+!;GC>w;ha0000< KMNUMnLSTZGXp5cz literal 0 HcmV?d00001 diff --git a/e2e/start/basic-auth/public/favicon-32x32.png b/e2e/start/basic-auth/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..900c77d444c9b31e6144b6ac0bb1ab7bb7ca767f GIT binary patch literal 2115 zcmV-J2)y@+P)Px+{YgYYR9Hu?mwRj!*A>QpcV>2XcJ0O3#$YVRaSSGa5y3nY2&Sn>jS48BR4oZ8 zDxi=C8bm>jXj)n-gy4^wM4(g!nTM3PD6Ik{5G77fQfQ&nJd9OC2-x6YV+?-o+TQ2P z+-i5d_S%@@MxB3lXU@I%eCIpgJ@;I}5TBj3GNqHiA`70gq*5pmISA5`(FIzCkhc}A zN(H`hqo3G3MtFv@w0P8@l7{ASmZfYqq<9I09+?pH35oyX?~Z_npu-)|6b=tl?(bZa zJ>mL)^YKssdm9^Fc42KZq_Q5Q_9&on`}oTrkm>y=6*J%BS?`-hj{l3@*w`Yb;~Q*^ zK>>X3sm=F=t)rHtV5pAc4Coz=NSjI^X%s)KnS~?N7NP12lBHrEHwLcv0D$w|mka%d zD3_9qxN$Jb6K(NSXh9!2XAU9LRO+63l{wYVpacW)d^KZHES{$_5kx-#wSjZ_K~tWQ zknym{n>>x2tND_G>_YNKJxGuU1#sTIOfYjixi{9~XuH`b8feC3j#%8sL@$6wdEBLj zofQ&M5S#H}{2x_)#9yk*2!%tu{lXryQ?nDK7#r{YybLpYB>pFhNNV^qN!QfOHv3I$>r*P{%C?v@=u$d!qCuj!~~?a3W<8-BuJBWh9<1yxni zGzHCJBR4-Am)jWyG_2OnTZOB7mryRB2HLTnT8IcXqul=trR5w1yQ5<)=kSB-f{s-} z*6vL)gxUn?@!54kIL8&^5l{XD+4sfJ{*#)SexdWOsGlg;G-Q`I6etc%c+19Vi__tag&1pxg z7tN+csm}SJjn45-)Z(lth)6m_x8#rcuajm^9(3b~tN%hyoP~1fJ*>i)5iJ*y?mW;( zfDkK$alWJ!RaqDJ7FW^pWLA!+ar+s*EO5Gg1%;##~Eg zZO(!O0ExS(N7gs1k$DA(YiE(8@*s6|#IRpjr?y{|Ff~5A+YIt*xD2~y$6aI6`J{@k z%a80dSavass>+M}X7d&*{oisdSjD|jLFD})2Q&IfXh;QAz$IaQ`rBqCBjOvV{b=*+E8=j5qRShn;P@^f>ePTGxb&Ue-E{ger4Lg{x<4FN@q zkVoFMr0lB)5=nXIH5RxhaH_k8zfP{l+w5g~YZ1YwE{>KTX2z5vzBm2pA*}z1Ap$96 z*)J>-03=RnHGQnl{u?uH4QGQsoA%C5_8%`LYh*4j&tLj~0#LfK8RUqEt+ui2IKNN& z0dC>IFim!UycMxNT&8H{h~+35`q{w(0aR%J>_qc zY?l;G`U!dNG<@eOan78I;_4|Q(b6VK+*MI@y&I#)7OTUTgxs~U6v^tLhOqA+dq~y8 zj2!+n^Ty7mp}Ll|1`~aHKEkOYTvoyf^GFTs7jnm@ZUTc>8nVVT%1GiFo73Q@ar zXUfXyMNQT25qg_FMq^|^uFuQN_IoUBy2X;aH_) zV}cXu{L;aUoLK}_jbo$p_$2cQDpE&L=Nc9bF!H2@0!->`2^_p|Ix}`0A2@bE+^%1V zKLC~mb{h;&g`CHbd3j6--e6n923pgv;m{ypi?} zRa!pc=1sU=4;}3g3P(;faO%jM#}2Y;$*LHDl6~XI%({ZA#hTAZVet8(t&Le6XUW8J z+*%+?eYy+m8rapoUq}311y2BOcYxQ>DXl2xQ{Q4pOGCPxk=h@l-ZTuF8VlI8CUzW0 z)A8$)64~k97!5~NK-XC?`R~kjo*+es^dxX3IE{nob)En!!pa>F-0{MR)a*___eBd{&XI#(sc0bg# zz>#l?c<<``c&t}&S~JlJkHT;2gwhHIcifWh&qc?tw9{bpdw5FkvLCNxKe$W zrOStMF^Pj%vlo|7vP~7NcW7t>sgAtcdK^ZDn6MKPglXt@b~^)Xnf||A%@XV1EBhE{ zS!~u6Ub3s`iK-urjUF8YbQ_0V8ao%x;=5f=6G24&uh~mVP_W1*cuvzOw5#OURMMjk tHCpW&w;d{#x{a?ig%htm&ycR?{{iM;1e;Am{%-&P002ovPDHLkV1jPm0a*Y5 literal 0 HcmV?d00001 diff --git a/e2e/start/basic-auth/public/favicon.ico b/e2e/start/basic-auth/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1a1751676f7e22811b1070572093996c93c87617 GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/e2e/start/basic-auth/public/favicon.png b/e2e/start/basic-auth/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e77bc06091ade4496525a09d8900675afcf03f0 GIT binary patch literal 1507 zcmV<91swW`P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$^O-V#SR9Fd>S3Qp$MHK9ro!#4$ zEP@L_hX|b@f=!*_42h6mKu7{)4)_U*>1>0bCkUj;Z1X!7 zHe(Ew^Oi(|bW3J~xu+)XbtFF?4>!7TH$>(D_atUQVEj(8fGvYu2NF33#JZX>)(Vj8 zIi@z>Glt?6t~;Lf(|C8F>;WF^8F<^s7Scr!sZc01uB?HMHoL5+FZ>B(g+r-)?Sn)#3Zal#?G@GAwO5U27MpGOlC2+_saA)rl zP-<@-n~;PQOlm|Hi<+W;NdR;5+=zADzM&?!+CPD36=cGwHy6!D^vPEHG?rO`K>G|M z3FposX{yT132wuw1OR3Um_5JoKB#6?!QgBupIT;?YIr;WcpmuCE>S75mZid+ens#E zGPuYjiG0UNNVWu=f!Id^?9)34)eIpu-`j_~W0iAQzK(}XYc_!;87Tk~?4tq|h=2(! zuq0HCiNK)@+ocCKR3q1REdUju>HdYxd>JX@%oOibg+J~D+}rhz54D!NfC{h-OYk{M zkzmFtdrL@nL0bm8nF@pob1CeLC>12ef#in-Bzv2!wi)Iuwq24)`AH}|0QNQ^f$KHv z?5PBPo1*#GAuAk+Poe`?UJ>mP`@~d4a(103j0lwUx@_+$#B&VC%7r>#2$HIiD`KO8L|s3Yp%M}BT0;NJDzZtPnx=4%enhU zhW*pNN0t`^4%5MKAR+}=^Q?QeqQ`>bbK zf+-ji$Uz8V0?LpX@kh`k%DL)GCA2=@SJNKg56Wh>>pr=7{1PmHqG|~=AdLV3002ov JPDHLkV1ivgp)>#h literal 0 HcmV?d00001 diff --git a/e2e/start/basic-auth/public/site.webmanifest b/e2e/start/basic-auth/public/site.webmanifest new file mode 100644 index 0000000000..fa99de77db --- /dev/null +++ b/e2e/start/basic-auth/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/e2e/start/basic-auth/tailwind.config.cjs b/e2e/start/basic-auth/tailwind.config.cjs new file mode 100644 index 0000000000..75fe25dbf7 --- /dev/null +++ b/e2e/start/basic-auth/tailwind.config.cjs @@ -0,0 +1,4 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./app/**/*.{js,ts,jsx,tsx}'], +} diff --git a/examples/react/start-basic-auth/tests/app.spec.ts b/e2e/start/basic-auth/tests/app.spec.ts similarity index 100% rename from examples/react/start-basic-auth/tests/app.spec.ts rename to e2e/start/basic-auth/tests/app.spec.ts diff --git a/examples/react/start-basic-auth/tests/mock-db-setup.test.ts b/e2e/start/basic-auth/tests/mock-db-setup.test.ts similarity index 100% rename from examples/react/start-basic-auth/tests/mock-db-setup.test.ts rename to e2e/start/basic-auth/tests/mock-db-setup.test.ts diff --git a/examples/react/start-basic-auth/tests/mock-db-teardown.test.ts b/e2e/start/basic-auth/tests/mock-db-teardown.test.ts similarity index 100% rename from examples/react/start-basic-auth/tests/mock-db-teardown.test.ts rename to e2e/start/basic-auth/tests/mock-db-teardown.test.ts diff --git a/e2e/start/basic-auth/tsconfig.json b/e2e/start/basic-auth/tsconfig.json new file mode 100644 index 0000000000..d1b5b77660 --- /dev/null +++ b/e2e/start/basic-auth/tsconfig.json @@ -0,0 +1,22 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "target": "ES2022", + "allowJs": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "paths": { + "~/*": ["./app/*"] + }, + "noEmit": true + } +} diff --git a/e2e/start/basic-react-query/.gitignore b/e2e/start/basic-react-query/.gitignore new file mode 100644 index 0000000000..be342025da --- /dev/null +++ b/e2e/start/basic-react-query/.gitignore @@ -0,0 +1,22 @@ +node_modules +package-lock.json +yarn.lock + +.DS_Store +.cache +.env +.vercel +.output +.vinxi + +/build/ +/api/ +/server/build +/public/build +.vinxi +# Sentry Config File +.env.sentry-build-plugin +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/e2e/start/basic-react-query/.prettierignore b/e2e/start/basic-react-query/.prettierignore new file mode 100644 index 0000000000..fd1b50a539 --- /dev/null +++ b/e2e/start/basic-react-query/.prettierignore @@ -0,0 +1,5 @@ +**/api +**/build +**/public +pnpm-lock.yaml +routeTree.gen.ts \ No newline at end of file diff --git a/e2e/start/basic-react-query/.prettierrc b/e2e/start/basic-react-query/.prettierrc new file mode 100644 index 0000000000..aaf3357d4a --- /dev/null +++ b/e2e/start/basic-react-query/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "semi": false, + "trailingComma": "all" +} diff --git a/e2e/start/basic-react-query/app.config.ts b/e2e/start/basic-react-query/app.config.ts new file mode 100644 index 0000000000..d1d9b04ded --- /dev/null +++ b/e2e/start/basic-react-query/app.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from '@tanstack/start/config' +import tsConfigPaths from 'vite-tsconfig-paths' + +export default defineConfig({ + vite: { + plugins: () => [ + tsConfigPaths({ + projects: ['./tsconfig.json'], + }), + ], + }, +}) diff --git a/e2e/start/basic-react-query/app/api.ts b/e2e/start/basic-react-query/app/api.ts new file mode 100644 index 0000000000..0caf78bb9d --- /dev/null +++ b/e2e/start/basic-react-query/app/api.ts @@ -0,0 +1,6 @@ +import { + createStartAPIHandler, + defaultAPIFileRouteHandler, +} from '@tanstack/start/api' + +export default createStartAPIHandler(defaultAPIFileRouteHandler) diff --git a/e2e/start/basic-react-query/app/client.tsx b/e2e/start/basic-react-query/app/client.tsx new file mode 100644 index 0000000000..f16ba73f62 --- /dev/null +++ b/e2e/start/basic-react-query/app/client.tsx @@ -0,0 +1,7 @@ +import { hydrateRoot } from 'react-dom/client' +import { StartClient } from '@tanstack/start' +import { createRouter } from './router' + +const router = createRouter() + +hydrateRoot(document.getElementById('root')!, ) diff --git a/e2e/start/basic-react-query/app/components/DefaultCatchBoundary.tsx b/e2e/start/basic-react-query/app/components/DefaultCatchBoundary.tsx new file mode 100644 index 0000000000..f0ce51dc57 --- /dev/null +++ b/e2e/start/basic-react-query/app/components/DefaultCatchBoundary.tsx @@ -0,0 +1,53 @@ +import { + ErrorComponent, + ErrorComponentProps, + Link, + rootRouteId, + useMatch, + useRouter, +} from '@tanstack/react-router' + +export function DefaultCatchBoundary({ error }: ErrorComponentProps) { + const router = useRouter() + const isRoot = useMatch({ + strict: false, + select: (state) => state.id === rootRouteId, + }) + + console.error(error) + + return ( +
+ +
+ + {isRoot ? ( + + Home + + ) : ( + { + e.preventDefault() + window.history.back() + }} + > + Go Back + + )} +
+
+ ) +} diff --git a/e2e/start/basic-react-query/app/components/NotFound.tsx b/e2e/start/basic-react-query/app/components/NotFound.tsx new file mode 100644 index 0000000000..7b54fa5680 --- /dev/null +++ b/e2e/start/basic-react-query/app/components/NotFound.tsx @@ -0,0 +1,25 @@ +import { Link } from '@tanstack/react-router' + +export function NotFound({ children }: { children?: any }) { + return ( +
+
+ {children ||

The page you are looking for does not exist.

} +
+

+ + + Start Over + +

+
+ ) +} diff --git a/e2e/start/basic-react-query/app/routeTree.gen.ts b/e2e/start/basic-react-query/app/routeTree.gen.ts new file mode 100644 index 0000000000..d6df38d1bf --- /dev/null +++ b/e2e/start/basic-react-query/app/routeTree.gen.ts @@ -0,0 +1,460 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as UsersImport } from './routes/users' +import { Route as RedirectImport } from './routes/redirect' +import { Route as PostsImport } from './routes/posts' +import { Route as DeferredImport } from './routes/deferred' +import { Route as LayoutImport } from './routes/_layout' +import { Route as IndexImport } from './routes/index' +import { Route as UsersIndexImport } from './routes/users.index' +import { Route as PostsIndexImport } from './routes/posts.index' +import { Route as UsersUserIdImport } from './routes/users.$userId' +import { Route as PostsPostIdImport } from './routes/posts.$postId' +import { Route as LayoutLayout2Import } from './routes/_layout/_layout-2' +import { Route as PostsPostIdDeepImport } from './routes/posts_.$postId.deep' +import { Route as LayoutLayout2LayoutBImport } from './routes/_layout/_layout-2/layout-b' +import { Route as LayoutLayout2LayoutAImport } from './routes/_layout/_layout-2/layout-a' + +// Create/Update Routes + +const UsersRoute = UsersImport.update({ + path: '/users', + getParentRoute: () => rootRoute, +} as any) + +const RedirectRoute = RedirectImport.update({ + path: '/redirect', + getParentRoute: () => rootRoute, +} as any) + +const PostsRoute = PostsImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const DeferredRoute = DeferredImport.update({ + path: '/deferred', + getParentRoute: () => rootRoute, +} as any) + +const LayoutRoute = LayoutImport.update({ + id: '/_layout', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const UsersIndexRoute = UsersIndexImport.update({ + path: '/', + getParentRoute: () => UsersRoute, +} as any) + +const PostsIndexRoute = PostsIndexImport.update({ + path: '/', + getParentRoute: () => PostsRoute, +} as any) + +const UsersUserIdRoute = UsersUserIdImport.update({ + path: '/$userId', + getParentRoute: () => UsersRoute, +} as any) + +const PostsPostIdRoute = PostsPostIdImport.update({ + path: '/$postId', + getParentRoute: () => PostsRoute, +} as any) + +const LayoutLayout2Route = LayoutLayout2Import.update({ + id: '/_layout-2', + getParentRoute: () => LayoutRoute, +} as any) + +const PostsPostIdDeepRoute = PostsPostIdDeepImport.update({ + path: '/posts/$postId/deep', + getParentRoute: () => rootRoute, +} as any) + +const LayoutLayout2LayoutBRoute = LayoutLayout2LayoutBImport.update({ + path: '/layout-b', + getParentRoute: () => LayoutLayout2Route, +} as any) + +const LayoutLayout2LayoutARoute = LayoutLayout2LayoutAImport.update({ + path: '/layout-a', + getParentRoute: () => LayoutLayout2Route, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/_layout': { + id: '/_layout' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutImport + parentRoute: typeof rootRoute + } + '/deferred': { + id: '/deferred' + path: '/deferred' + fullPath: '/deferred' + preLoaderRoute: typeof DeferredImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsImport + parentRoute: typeof rootRoute + } + '/redirect': { + id: '/redirect' + path: '/redirect' + fullPath: '/redirect' + preLoaderRoute: typeof RedirectImport + parentRoute: typeof rootRoute + } + '/users': { + id: '/users' + path: '/users' + fullPath: '/users' + preLoaderRoute: typeof UsersImport + parentRoute: typeof rootRoute + } + '/_layout/_layout-2': { + id: '/_layout/_layout-2' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutLayout2Import + parentRoute: typeof LayoutImport + } + '/posts/$postId': { + id: '/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof PostsPostIdImport + parentRoute: typeof PostsImport + } + '/users/$userId': { + id: '/users/$userId' + path: '/$userId' + fullPath: '/users/$userId' + preLoaderRoute: typeof UsersUserIdImport + parentRoute: typeof UsersImport + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof PostsIndexImport + parentRoute: typeof PostsImport + } + '/users/': { + id: '/users/' + path: '/' + fullPath: '/users/' + preLoaderRoute: typeof UsersIndexImport + parentRoute: typeof UsersImport + } + '/_layout/_layout-2/layout-a': { + id: '/_layout/_layout-2/layout-a' + path: '/layout-a' + fullPath: '/layout-a' + preLoaderRoute: typeof LayoutLayout2LayoutAImport + parentRoute: typeof LayoutLayout2Import + } + '/_layout/_layout-2/layout-b': { + id: '/_layout/_layout-2/layout-b' + path: '/layout-b' + fullPath: '/layout-b' + preLoaderRoute: typeof LayoutLayout2LayoutBImport + parentRoute: typeof LayoutLayout2Import + } + '/posts/$postId/deep': { + id: '/posts/$postId/deep' + path: '/posts/$postId/deep' + fullPath: '/posts/$postId/deep' + preLoaderRoute: typeof PostsPostIdDeepImport + parentRoute: typeof rootRoute + } + } +} + +// Create and export the route tree + +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +interface UsersRouteChildren { + UsersUserIdRoute: typeof UsersUserIdRoute + UsersIndexRoute: typeof UsersIndexRoute +} + +const UsersRouteChildren: UsersRouteChildren = { + UsersUserIdRoute: UsersUserIdRoute, + UsersIndexRoute: UsersIndexRoute, +} + +const UsersRouteWithChildren = UsersRoute._addFileChildren(UsersRouteChildren) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/deferred': typeof DeferredRoute + '/posts': typeof PostsRouteWithChildren + '/redirect': typeof RedirectRoute + '/users': typeof UsersRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts/': typeof PostsIndexRoute + '/users/': typeof UsersIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/deferred': typeof DeferredRoute + '/redirect': typeof RedirectRoute + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts': typeof PostsIndexRoute + '/users': typeof UsersIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/deferred': typeof DeferredRoute + '/posts': typeof PostsRouteWithChildren + '/redirect': typeof RedirectRoute + '/users': typeof UsersRouteWithChildren + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts/': typeof PostsIndexRoute + '/users/': typeof UsersIndexRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/deferred' + | '/posts' + | '/redirect' + | '/users' + | '/posts/$postId' + | '/users/$userId' + | '/posts/' + | '/users/' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/deferred' + | '/redirect' + | '/posts/$postId' + | '/users/$userId' + | '/posts' + | '/users' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + id: + | '__root__' + | '/' + | '/_layout' + | '/deferred' + | '/posts' + | '/redirect' + | '/users' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/users/$userId' + | '/posts/' + | '/users/' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + | '/posts/$postId/deep' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + DeferredRoute: typeof DeferredRoute + PostsRoute: typeof PostsRouteWithChildren + RedirectRoute: typeof RedirectRoute + UsersRoute: typeof UsersRouteWithChildren + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + DeferredRoute: DeferredRoute, + PostsRoute: PostsRouteWithChildren, + RedirectRoute: RedirectRoute, + UsersRoute: UsersRouteWithChildren, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/_layout", + "/deferred", + "/posts", + "/redirect", + "/users", + "/posts/$postId/deep" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_layout": { + "filePath": "_layout.tsx", + "children": [ + "/_layout/_layout-2" + ] + }, + "/deferred": { + "filePath": "deferred.tsx" + }, + "/posts": { + "filePath": "posts.tsx", + "children": [ + "/posts/$postId", + "/posts/" + ] + }, + "/redirect": { + "filePath": "redirect.tsx" + }, + "/users": { + "filePath": "users.tsx", + "children": [ + "/users/$userId", + "/users/" + ] + }, + "/_layout/_layout-2": { + "filePath": "_layout/_layout-2.tsx", + "parent": "/_layout", + "children": [ + "/_layout/_layout-2/layout-a", + "/_layout/_layout-2/layout-b" + ] + }, + "/posts/$postId": { + "filePath": "posts.$postId.tsx", + "parent": "/posts" + }, + "/users/$userId": { + "filePath": "users.$userId.tsx", + "parent": "/users" + }, + "/posts/": { + "filePath": "posts.index.tsx", + "parent": "/posts" + }, + "/users/": { + "filePath": "users.index.tsx", + "parent": "/users" + }, + "/_layout/_layout-2/layout-a": { + "filePath": "_layout/_layout-2/layout-a.tsx", + "parent": "/_layout/_layout-2" + }, + "/_layout/_layout-2/layout-b": { + "filePath": "_layout/_layout-2/layout-b.tsx", + "parent": "/_layout/_layout-2" + }, + "/posts/$postId/deep": { + "filePath": "posts_.$postId.deep.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/e2e/start/basic-react-query/app/router.tsx b/e2e/start/basic-react-query/app/router.tsx new file mode 100644 index 0000000000..ee35b01cbf --- /dev/null +++ b/e2e/start/basic-react-query/app/router.tsx @@ -0,0 +1,31 @@ +import { QueryClient } from '@tanstack/react-query' +import { createRouter as createTanStackRouter } from '@tanstack/react-router' +import { routerWithQueryClient } from '@tanstack/react-router-with-query' +import { routeTree } from './routeTree.gen' +import { DefaultCatchBoundary } from './components/DefaultCatchBoundary' +import { NotFound } from './components/NotFound' + +// NOTE: Most of the integration code found here is experimental and will +// definitely end up in a more streamlined API in the future. This is just +// to show what's possible with the current APIs. + +export function createRouter() { + const queryClient = new QueryClient() + + return routerWithQueryClient( + createTanStackRouter({ + routeTree, + context: { queryClient }, + defaultPreload: 'intent', + defaultErrorComponent: DefaultCatchBoundary, + defaultNotFoundComponent: () => , + }), + queryClient, + ) +} + +declare module '@tanstack/react-router' { + interface Register { + router: ReturnType + } +} diff --git a/e2e/start/basic-react-query/app/routes/__root.tsx b/e2e/start/basic-react-query/app/routes/__root.tsx new file mode 100644 index 0000000000..87f26f02ef --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/__root.tsx @@ -0,0 +1,144 @@ +import { + Link, + Outlet, + ScrollRestoration, + createRootRouteWithContext, +} from '@tanstack/react-router' +import { ReactQueryDevtools } from '@tanstack/react-query-devtools' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' +import { Body, Head, Html, Meta, Scripts } from '@tanstack/start' +import * as React from 'react' +import type { QueryClient } from '@tanstack/react-query' +import { DefaultCatchBoundary } from '~/components/DefaultCatchBoundary' +import { NotFound } from '~/components/NotFound' +// @ts-expect-error +import appCss from '~/styles/app.css?url' +import { seo } from '~/utils/seo' + +export const Route = createRootRouteWithContext<{ + queryClient: QueryClient +}>()({ + meta: () => [ + { + charSet: 'utf-8', + }, + { + name: 'viewport', + content: 'width=device-width, initial-scale=1', + }, + ...seo({ + title: + 'TanStack Start | Type-Safe, Client-First, Full-Stack React Framework', + description: `TanStack Start is a type-safe, client-first, full-stack React framework. `, + }), + ], + links: () => [ + { rel: 'stylesheet', href: appCss }, + { + rel: 'apple-touch-icon', + sizes: '180x180', + href: '/apple-touch-icon.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '32x32', + href: '/favicon-32x32.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '16x16', + href: '/favicon-16x16.png', + }, + { rel: 'manifest', href: '/site.webmanifest', color: '#fffff' }, + { rel: 'icon', href: '/favicon.ico' }, + ], + errorComponent: (props) => { + return ( + + + + ) + }, + notFoundComponent: () => , + component: RootComponent, +}) + +function RootComponent() { + return ( + + + + ) +} + +function RootDocument({ children }: { children: React.ReactNode }) { + return ( + + + + + +
+ + Home + {' '} + + Posts + {' '} + + Users + {' '} + + Layout + {' '} + + Deferred + {' '} + + This Route Does Not Exist + +
+
+ {children} + + + + + + + ) +} diff --git a/e2e/start/basic-react-query/app/routes/_layout.tsx b/e2e/start/basic-react-query/app/routes/_layout.tsx new file mode 100644 index 0000000000..af5585728e --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/_layout.tsx @@ -0,0 +1,16 @@ +import { Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a layout
+
+ +
+
+ ) +} diff --git a/e2e/start/basic-react-query/app/routes/_layout/_layout-2.tsx b/e2e/start/basic-react-query/app/routes/_layout/_layout-2.tsx new file mode 100644 index 0000000000..2167ce27ce --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/_layout/_layout-2.tsx @@ -0,0 +1,34 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a nested layout
+
+ + Layout A + + + Layout B + +
+
+ +
+
+ ) +} diff --git a/e2e/start/basic-react-query/app/routes/_layout/_layout-2/layout-a.tsx b/e2e/start/basic-react-query/app/routes/_layout/_layout-2/layout-a.tsx new file mode 100644 index 0000000000..bb8d3d277d --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/_layout/_layout-2/layout-a.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-a')({ + component: LayoutAComponent, +}) + +function LayoutAComponent() { + return
I'm A!
+} diff --git a/e2e/start/basic-react-query/app/routes/_layout/_layout-2/layout-b.tsx b/e2e/start/basic-react-query/app/routes/_layout/_layout-2/layout-b.tsx new file mode 100644 index 0000000000..69f6158958 --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/_layout/_layout-2/layout-b.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-b')({ + component: LayoutBComponent, +}) + +function LayoutBComponent() { + return
I'm B!
+} diff --git a/e2e/start/basic-react-query/app/routes/api.users.ts b/e2e/start/basic-react-query/app/routes/api.users.ts new file mode 100644 index 0000000000..3b11af9b9d --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/api.users.ts @@ -0,0 +1,17 @@ +import { json } from '@tanstack/start' +import { createAPIFileRoute } from '@tanstack/start/api' +import axios from 'redaxios' +import type { User } from '../utils/users' + +export const Route = createAPIFileRoute('/api/users')({ + GET: async ({ request }) => { + console.info('Fetching users... @', request.url) + const res = await axios.get>( + 'https://jsonplaceholder.typicode.com/users', + ) + + const list = res.data.slice(0, 10) + + return json(list.map((u) => ({ id: u.id, name: u.name, email: u.email }))) + }, +}) diff --git a/e2e/start/basic-react-query/app/routes/api/users.$id.ts b/e2e/start/basic-react-query/app/routes/api/users.$id.ts new file mode 100644 index 0000000000..849d45e8d0 --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/api/users.$id.ts @@ -0,0 +1,24 @@ +import { json } from '@tanstack/start' +import { createAPIFileRoute } from '@tanstack/start/api' +import axios from 'redaxios' +import type { User } from '../../utils/users' + +export const Route = createAPIFileRoute('/api/users/$id')({ + GET: async ({ request, params }) => { + console.info(`Fetching users by id=${params.id}... @`, request.url) + try { + const res = await axios.get( + 'https://jsonplaceholder.typicode.com/users/' + params.id, + ) + + return json({ + id: res.data.id, + name: res.data.name, + email: res.data.email, + }) + } catch (e) { + console.error(e) + return json({ error: 'User not found' }, { status: 404 }) + } + }, +}) diff --git a/e2e/start/basic-react-query/app/routes/deferred.tsx b/e2e/start/basic-react-query/app/routes/deferred.tsx new file mode 100644 index 0000000000..666ae26e49 --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/deferred.tsx @@ -0,0 +1,53 @@ +import { queryOptions, useSuspenseQuery } from '@tanstack/react-query' +import { createFileRoute } from '@tanstack/react-router' +import { Suspense, useState } from 'react' + +const deferredQueryOptions = () => + queryOptions({ + queryKey: ['deferred'], + queryFn: async () => { + await new Promise((r) => setTimeout(r, 3000)) + return { + message: `Hello deferred from the server!`, + status: 'success', + time: new Date(), + } + }, + }) + +export const Route = createFileRoute('/deferred')({ + loader: ({ context }) => { + // Kick off loading as early as possible! + context.queryClient.prefetchQuery(deferredQueryOptions()) + }, + component: Deferred, +}) + +function Deferred() { + const [count, setCount] = useState(0) + + return ( +
+ + + +
Count: {count}
+
+ +
+
+ ) +} + +function DeferredQuery() { + const deferredQuery = useSuspenseQuery(deferredQueryOptions()) + + return ( +
+

Deferred Query

+
Status: {deferredQuery.data.status}
+
Message: {deferredQuery.data.message}
+
Time: {deferredQuery.data.time.toISOString()}
+
+ ) +} diff --git a/e2e/start/basic-react-query/app/routes/index.tsx b/e2e/start/basic-react-query/app/routes/index.tsx new file mode 100644 index 0000000000..09a907cb18 --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/index.tsx @@ -0,0 +1,13 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!!!

+
+ ) +} diff --git a/e2e/start/basic-react-query/app/routes/posts.$postId.tsx b/e2e/start/basic-react-query/app/routes/posts.$postId.tsx new file mode 100644 index 0000000000..546e3d2795 --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/posts.$postId.tsx @@ -0,0 +1,53 @@ +import { ErrorComponent, Link, createFileRoute } from '@tanstack/react-router' +import { useSuspenseQuery } from '@tanstack/react-query' +import { postQueryOptions } from '../utils/posts' +import type { ErrorComponentProps } from '@tanstack/react-router' +import { NotFound } from '~/components/NotFound' + +export const Route = createFileRoute('/posts/$postId')({ + loader: async ({ params: { postId }, context }) => { + const data = await context.queryClient.ensureQueryData( + postQueryOptions(postId), + ) + + return { + title: data.title, + } + }, + meta: ({ loaderData }) => [ + { + title: loaderData.title, + }, + ], + errorComponent: PostErrorComponent as any, + notFoundComponent: () => { + return Post not found + }, + component: PostComponent, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const { postId } = Route.useParams() + const postQuery = useSuspenseQuery(postQueryOptions(postId)) + + return ( +
+

{postQuery.data.title}

+
{postQuery.data.body}
+ + Deep View + +
+ ) +} diff --git a/e2e/start/basic-react-query/app/routes/posts.index.tsx b/e2e/start/basic-react-query/app/routes/posts.index.tsx new file mode 100644 index 0000000000..5b5f08f95b --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/posts.index.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/e2e/start/basic-react-query/app/routes/posts.tsx b/e2e/start/basic-react-query/app/routes/posts.tsx new file mode 100644 index 0000000000..64600d15c4 --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/posts.tsx @@ -0,0 +1,43 @@ +import { useSuspenseQuery } from '@tanstack/react-query' +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { postsQueryOptions } from '../utils/posts' + +export const Route = createFileRoute('/posts')({ + loader: async ({ context }) => { + await context.queryClient.ensureQueryData(postsQueryOptions()) + }, + meta: () => [{ title: 'Posts' }], + component: PostsComponent, +}) + +function PostsComponent() { + const postsQuery = useSuspenseQuery(postsQueryOptions()) + + return ( +
+
    + {[ + ...postsQuery.data, + { id: 'i-do-not-exist', title: 'Non-existent Post' }, + ].map((post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + })} +
+
+ +
+ ) +} diff --git a/e2e/start/basic-react-query/app/routes/posts_.$postId.deep.tsx b/e2e/start/basic-react-query/app/routes/posts_.$postId.deep.tsx new file mode 100644 index 0000000000..0561ae6ccd --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/posts_.$postId.deep.tsx @@ -0,0 +1,41 @@ +import { Link, createFileRoute } from '@tanstack/react-router' +import { useSuspenseQuery } from '@tanstack/react-query' +import { postQueryOptions } from '../utils/posts' +import { PostErrorComponent } from './posts.$postId' + +export const Route = createFileRoute('/posts/$postId/deep')({ + loader: async ({ params: { postId }, context }) => { + const data = await context.queryClient.ensureQueryData( + postQueryOptions(postId), + ) + + return { + title: data.title, + } + }, + meta: ({ loaderData }) => [ + { + title: loaderData.title, + }, + ], + errorComponent: PostErrorComponent as any, + component: PostDeepComponent, +}) + +function PostDeepComponent() { + const { postId } = Route.useParams() + const postQuery = useSuspenseQuery(postQueryOptions(postId)) + + return ( +
+ + ← All Posts + +

{postQuery.data.title}

+
{postQuery.data.body}
+
+ ) +} diff --git a/e2e/start/basic-react-query/app/routes/redirect.tsx b/e2e/start/basic-react-query/app/routes/redirect.tsx new file mode 100644 index 0000000000..c9286de13d --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/redirect.tsx @@ -0,0 +1,9 @@ +import { createFileRoute, redirect } from '@tanstack/react-router' + +export const Route = createFileRoute('/redirect')({ + beforeLoad: async () => { + throw redirect({ + to: '/posts', + }) + }, +}) diff --git a/e2e/start/basic-react-query/app/routes/users.$userId.tsx b/e2e/start/basic-react-query/app/routes/users.$userId.tsx new file mode 100644 index 0000000000..0750a01568 --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/users.$userId.tsx @@ -0,0 +1,33 @@ +import { useSuspenseQuery } from '@tanstack/react-query' +import { ErrorComponent, createFileRoute } from '@tanstack/react-router' +import type { ErrorComponentProps } from '@tanstack/react-router' +import { NotFound } from '~/components/NotFound' +import { userQueryOptions } from '~/utils/users' + +export const Route = createFileRoute('/users/$userId')({ + loader: async ({ context, params: { userId } }) => { + await context.queryClient.ensureQueryData(userQueryOptions(userId)) + }, + errorComponent: UserErrorComponent, + component: UserComponent, + notFoundComponent: () => { + return User not found + }, +}) + +export function UserErrorComponent({ error }: ErrorComponentProps) { + return +} + +function UserComponent() { + const params = Route.useParams() + const userQuery = useSuspenseQuery(userQueryOptions(params.userId)) + const user = userQuery.data + + return ( +
+

{user.name}

+
{user.email}
+
+ ) +} diff --git a/e2e/start/basic-react-query/app/routes/users.index.tsx b/e2e/start/basic-react-query/app/routes/users.index.tsx new file mode 100644 index 0000000000..b6b0ee67fb --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/users.index.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/users/')({ + component: UsersIndexComponent, +}) + +function UsersIndexComponent() { + return
Select a user.
+} diff --git a/e2e/start/basic-react-query/app/routes/users.tsx b/e2e/start/basic-react-query/app/routes/users.tsx new file mode 100644 index 0000000000..2f3c72cb7b --- /dev/null +++ b/e2e/start/basic-react-query/app/routes/users.tsx @@ -0,0 +1,42 @@ +import { useSuspenseQuery } from '@tanstack/react-query' +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { usersQueryOptions } from '../utils/users' + +export const Route = createFileRoute('/users')({ + loader: async ({ context }) => { + await context.queryClient.ensureQueryData(usersQueryOptions()) + }, + component: UsersComponent, +}) + +function UsersComponent() { + const usersQuery = useSuspenseQuery(usersQueryOptions()) + + return ( +
+
    + {[ + ...usersQuery.data, + { id: 'i-do-not-exist', name: 'Non-existent User', email: '' }, + ].map((user) => { + return ( +
  • + +
    {user.name}
    + +
  • + ) + })} +
+
+ +
+ ) +} diff --git a/e2e/start/basic-react-query/app/ssr.tsx b/e2e/start/basic-react-query/app/ssr.tsx new file mode 100644 index 0000000000..62572579ac --- /dev/null +++ b/e2e/start/basic-react-query/app/ssr.tsx @@ -0,0 +1,12 @@ +import { + createStartHandler, + defaultStreamHandler, +} from '@tanstack/start/server' +import { getRouterManifest } from '@tanstack/start/router-manifest' + +import { createRouter } from './router' + +export default createStartHandler({ + createRouter, + getRouterManifest, +})(defaultStreamHandler) diff --git a/e2e/start/basic-react-query/app/styles/app.css b/e2e/start/basic-react-query/app/styles/app.css new file mode 100644 index 0000000000..d6426ccb72 --- /dev/null +++ b/e2e/start/basic-react-query/app/styles/app.css @@ -0,0 +1,14 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + html, + body { + @apply text-gray-900 bg-gray-50 dark:bg-gray-950 dark:text-gray-200; + } + + .using-mouse * { + outline: none !important; + } +} diff --git a/e2e/start/basic-react-query/app/utils/posts.tsx b/e2e/start/basic-react-query/app/utils/posts.tsx new file mode 100644 index 0000000000..bca6d45082 --- /dev/null +++ b/e2e/start/basic-react-query/app/utils/posts.tsx @@ -0,0 +1,45 @@ +import { queryOptions } from '@tanstack/react-query' +import { notFound } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPosts = createServerFn('GET', async () => { + console.info('Fetching posts...') + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +}) + +export const postsQueryOptions = () => + queryOptions({ + queryKey: ['posts'], + queryFn: () => fetchPosts(), + }) + +export const fetchPost = createServerFn('GET', async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + console.error(err) + if (err.status === 404) { + throw notFound() + } + throw err + }) + + return post +}) + +export const postQueryOptions = (postId: string) => + queryOptions({ + queryKey: ['post', postId], + queryFn: () => fetchPost(postId), + }) diff --git a/e2e/start/basic-react-query/app/utils/seo.ts b/e2e/start/basic-react-query/app/utils/seo.ts new file mode 100644 index 0000000000..d18ad84b74 --- /dev/null +++ b/e2e/start/basic-react-query/app/utils/seo.ts @@ -0,0 +1,33 @@ +export const seo = ({ + title, + description, + keywords, + image, +}: { + title: string + description?: string + image?: string + keywords?: string +}) => { + const tags = [ + { title }, + { name: 'description', content: description }, + { name: 'keywords', content: keywords }, + { name: 'twitter:title', content: title }, + { name: 'twitter:description', content: description }, + { name: 'twitter:creator', content: '@tannerlinsley' }, + { name: 'twitter:site', content: '@tannerlinsley' }, + { name: 'og:type', content: 'website' }, + { name: 'og:title', content: title }, + { name: 'og:description', content: description }, + ...(image + ? [ + { name: 'twitter:image', content: image }, + { name: 'twitter:card', content: 'summary_large_image' }, + { name: 'og:image', content: image }, + ] + : []), + ] + + return tags +} diff --git a/e2e/start/basic-react-query/app/utils/users.tsx b/e2e/start/basic-react-query/app/utils/users.tsx new file mode 100644 index 0000000000..9b6760bfa7 --- /dev/null +++ b/e2e/start/basic-react-query/app/utils/users.tsx @@ -0,0 +1,34 @@ +import { queryOptions } from '@tanstack/react-query' +import axios from 'redaxios' + +export type User = { + id: number + name: string + email: string +} + +export const DEPLOY_URL = 'http://localhost:3000' + +export const usersQueryOptions = () => + queryOptions({ + queryKey: ['users'], + queryFn: () => + axios + .get>(DEPLOY_URL + '/api/users') + .then((r) => r.data) + .catch(() => { + throw new Error('Failed to fetch users') + }), + }) + +export const userQueryOptions = (id: string) => + queryOptions({ + queryKey: ['users', id], + queryFn: () => + axios + .get(DEPLOY_URL + '/api/users/' + id) + .then((r) => r.data) + .catch(() => { + throw new Error('Failed to fetch user') + }), + }) diff --git a/e2e/start/basic-react-query/package.json b/e2e/start/basic-react-query/package.json new file mode 100644 index 0000000000..f1a4557d10 --- /dev/null +++ b/e2e/start/basic-react-query/package.json @@ -0,0 +1,44 @@ +{ + "name": "tanstack-start-e2e-basic-react-query", + "private": true, + "sideEffects": false, + "type": "module", + "scripts": { + "dev": "vinxi dev", + "build": "vinxi build", + "start": "vinxi start", + "lint": "prettier --check '**/*' --ignore-unknown && eslint --ext .ts,.tsx ./app", + "format": "prettier --write '**/*' --ignore-unknown", + "test:e2e": "playwright test --project=chromium" + }, + "dependencies": { + "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query-devtools": "^5.56.2", + "@tanstack/react-router": "^1.57.15", + "@tanstack/react-router-with-query": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", + "@vitejs/plugin-react": "^4.3.1", + "isbot": "^5.1.17", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "redaxios": "^0.5.1", + "tailwind-merge": "^2.5.2", + "vinxi": "0.4.3" + }, + "devDependencies": { + "@playwright/test": "^1.47.1", + "@types/node": "^22.5.4", + "@types/react": "^18.2.65", + "@types/react-dom": "^18.2.21", + "@vitejs/plugin-react": "^4.3.1", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", + "prettier": "^3.3.3", + "tailwindcss": "^3.4.11", + "typescript": "^5.6.2", + "vite": "^5.4.5", + "vite-tsconfig-paths": "^5.0.1" + } +} diff --git a/examples/react/start-basic-react-query/playwright.config.ts b/e2e/start/basic-react-query/playwright.config.ts similarity index 100% rename from examples/react/start-basic-react-query/playwright.config.ts rename to e2e/start/basic-react-query/playwright.config.ts diff --git a/e2e/start/basic-react-query/postcss.config.cjs b/e2e/start/basic-react-query/postcss.config.cjs new file mode 100644 index 0000000000..8e638a6bcd --- /dev/null +++ b/e2e/start/basic-react-query/postcss.config.cjs @@ -0,0 +1,7 @@ +module.exports = { + plugins: [ + require('tailwindcss/nesting'), + require('tailwindcss'), + require('autoprefixer'), + ], +} diff --git a/e2e/start/basic-react-query/public/android-chrome-192x192.png b/e2e/start/basic-react-query/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..09c8324f8c6781bc90fcf5dd38e0702bd5f171f3 GIT binary patch literal 29964 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
-$E{6Mn6vA;gG82)4;e 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 b=FG literal 0 HcmV?d00001 diff --git a/e2e/start/basic-react-query/public/android-chrome-512x512.png b/e2e/start/basic-react-query/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..11d626ea3d00fddd52861bf0af5554a92fc30d69 GIT binary patch literal 109271 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 Ef@mE(_W%F@ literal 0 HcmV?d00001 diff --git a/e2e/start/basic-react-query/public/apple-touch-icon.png b/e2e/start/basic-react-query/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9423cc02c40ea066d2a061cdcdf621c0718cb1 GIT binary patch literal 27246 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⪼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 N002ovPDHLkV1k;v<;Va4 literal 0 HcmV?d00001 diff --git a/e2e/start/basic-react-query/public/favicon-16x16.png b/e2e/start/basic-react-query/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..e3389b00443d602a249b48ae0e21e333971c9c1e GIT binary patch literal 832 zcmV-G1Hb%Px%`bk7VR5(v%lW%BSRTRK~=OuZ4FYhI3vvy^4t8t~UDHGBS#44K%hSiDal!9Nj zeb^RZ;3&cb72F3w6s4;uUA7>Cf>1=Z56;a$8wZ=NKHtq z33GDV=_|V0E(QPTEB1=edhG{{=-+C??RQi7*e9J7YBnZR+PppIKjA8EV+}Yt`zH<7 zGR%O5D3|Ef)99hUXu19=Cxaki@6toZIe&u-X0(oDFRl|x6P7Bwc^mB(i9|gOY)Jh6DaPkmt z8Wr!@TP1|RPlYRlJe^eRB0K(gn91{(=zi{HrkpHIflw8&q%;+U!V&dFPYDQAWJh@< zwcklN9VEX?vG;}75GqCepKC25M^xV%BcR%A8c!)S5k4P0$g}HS#lA6zy`~K@9&EX4 zOrvr%_1U2dp~gg6G*;&`Jag*?jZTJv+$S`*#)zme_SFWOCm*F4U&hJihqxAu;8z}x zWv7!u>YKRa3PUJQs55wC)i4QvFOAV0jW$?1cnUJJ7Vl?z_ge{9q!zpfCJxd8vJ>-ql@0&`Bttn1~4;s>8tax%hr(^q#A_*wqAv( zh(T&>hJD?OhiP$sxAzkd1W1^EHV1WL3xM&6$*HhG@|8}OjPpG{+!;GC>w;ha0000< KMNUMnLSTZGXp5cz literal 0 HcmV?d00001 diff --git a/e2e/start/basic-react-query/public/favicon-32x32.png b/e2e/start/basic-react-query/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..900c77d444c9b31e6144b6ac0bb1ab7bb7ca767f GIT binary patch literal 2115 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 literal 0 HcmV?d00001 diff --git a/e2e/start/basic-react-query/public/favicon.ico b/e2e/start/basic-react-query/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1a1751676f7e22811b1070572093996c93c87617 GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/e2e/start/basic-react-query/public/favicon.png b/e2e/start/basic-react-query/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e77bc06091ade4496525a09d8900675afcf03f0 GIT binary patch literal 1507 zcmV<91swW`P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$^O-V#SR9Fd>S3Qp$MHK9ro!#4$ zEP@L_hX|b@f=!*_42h6mKu7{)4)_U*>1>0bCkUj;Z1X!7 zHe(Ew^Oi(|bW3J~xu+)XbtFF?4>!7TH$>(D_atUQVEj(8fGvYu2NF33#JZX>)(Vj8 zIi@z>Glt?6t~;Lf(|C8F>;WF^8F<^s7Scr!sZc01uB?HMHoL5+FZ>B(g+r-)?Sn)#3Zal#?G@GAwO5U27MpGOlC2+_saA)rl zP-<@-n~;PQOlm|Hi<+W;NdR;5+=zADzM&?!+CPD36=cGwHy6!D^vPEHG?rO`K>G|M z3FposX{yT132wuw1OR3Um_5JoKB#6?!QgBupIT;?YIr;WcpmuCE>S75mZid+ens#E zGPuYjiG0UNNVWu=f!Id^?9)34)eIpu-`j_~W0iAQzK(}XYc_!;87Tk~?4tq|h=2(! zuq0HCiNK)@+ocCKR3q1REdUju>HdYxd>JX@%oOibg+J~D+}rhz54D!NfC{h-OYk{M zkzmFtdrL@nL0bm8nF@pob1CeLC>12ef#in-Bzv2!wi)Iuwq24)`AH}|0QNQ^f$KHv z?5PBPo1*#GAuAk+Poe`?UJ>mP`@~d4a(103j0lwUx@_+$#B&VC%7r>#2$HIiD`KO8L|s3Yp%M}BT0;NJDzZtPnx=4%enhU zhW*pNN0t`^4%5MKAR+}=^Q?QeqQ`>bbK zf+-ji$Uz8V0?LpX@kh`k%DL)GCA2=@SJNKg56Wh>>pr=7{1PmHqG|~=AdLV3002ov JPDHLkV1ivgp)>#h literal 0 HcmV?d00001 diff --git a/e2e/start/basic-react-query/public/site.webmanifest b/e2e/start/basic-react-query/public/site.webmanifest new file mode 100644 index 0000000000..fa99de77db --- /dev/null +++ b/e2e/start/basic-react-query/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/e2e/start/basic-react-query/tailwind.config.cjs b/e2e/start/basic-react-query/tailwind.config.cjs new file mode 100644 index 0000000000..75fe25dbf7 --- /dev/null +++ b/e2e/start/basic-react-query/tailwind.config.cjs @@ -0,0 +1,4 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./app/**/*.{js,ts,jsx,tsx}'], +} diff --git a/examples/react/start-basic-react-query/tests/app.spec.ts b/e2e/start/basic-react-query/tests/app.spec.ts similarity index 100% rename from examples/react/start-basic-react-query/tests/app.spec.ts rename to e2e/start/basic-react-query/tests/app.spec.ts diff --git a/e2e/start/basic-react-query/tsconfig.json b/e2e/start/basic-react-query/tsconfig.json new file mode 100644 index 0000000000..d1b5b77660 --- /dev/null +++ b/e2e/start/basic-react-query/tsconfig.json @@ -0,0 +1,22 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "target": "ES2022", + "allowJs": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "paths": { + "~/*": ["./app/*"] + }, + "noEmit": true + } +} diff --git a/e2e/start/basic-rsc/.gitignore b/e2e/start/basic-rsc/.gitignore new file mode 100644 index 0000000000..d3387e00cd --- /dev/null +++ b/e2e/start/basic-rsc/.gitignore @@ -0,0 +1,18 @@ +node_modules +package-lock.json +yarn.lock + +.DS_Store +.cache +.env +.vercel +.output +.vinxi + +/build/ +/api/ +/server/build +/public/build +.vinxi +# Sentry Config File +.env.sentry-build-plugin diff --git a/e2e/start/basic-rsc/.prettierignore b/e2e/start/basic-rsc/.prettierignore new file mode 100644 index 0000000000..fd1b50a539 --- /dev/null +++ b/e2e/start/basic-rsc/.prettierignore @@ -0,0 +1,5 @@ +**/api +**/build +**/public +pnpm-lock.yaml +routeTree.gen.ts \ No newline at end of file diff --git a/e2e/start/basic-rsc/.prettierrc b/e2e/start/basic-rsc/.prettierrc new file mode 100644 index 0000000000..aaf3357d4a --- /dev/null +++ b/e2e/start/basic-rsc/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "semi": false, + "trailingComma": "all" +} diff --git a/e2e/start/basic-rsc/app.config.ts b/e2e/start/basic-rsc/app.config.ts new file mode 100644 index 0000000000..d1d9b04ded --- /dev/null +++ b/e2e/start/basic-rsc/app.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from '@tanstack/start/config' +import tsConfigPaths from 'vite-tsconfig-paths' + +export default defineConfig({ + vite: { + plugins: () => [ + tsConfigPaths({ + projects: ['./tsconfig.json'], + }), + ], + }, +}) diff --git a/e2e/start/basic-rsc/app/client.tsx b/e2e/start/basic-rsc/app/client.tsx new file mode 100644 index 0000000000..f16ba73f62 --- /dev/null +++ b/e2e/start/basic-rsc/app/client.tsx @@ -0,0 +1,7 @@ +import { hydrateRoot } from 'react-dom/client' +import { StartClient } from '@tanstack/start' +import { createRouter } from './router' + +const router = createRouter() + +hydrateRoot(document.getElementById('root')!, ) diff --git a/e2e/start/basic-rsc/app/components/DefaultCatchBoundary.tsx b/e2e/start/basic-rsc/app/components/DefaultCatchBoundary.tsx new file mode 100644 index 0000000000..f0ce51dc57 --- /dev/null +++ b/e2e/start/basic-rsc/app/components/DefaultCatchBoundary.tsx @@ -0,0 +1,53 @@ +import { + ErrorComponent, + ErrorComponentProps, + Link, + rootRouteId, + useMatch, + useRouter, +} from '@tanstack/react-router' + +export function DefaultCatchBoundary({ error }: ErrorComponentProps) { + const router = useRouter() + const isRoot = useMatch({ + strict: false, + select: (state) => state.id === rootRouteId, + }) + + console.error(error) + + return ( +
+ +
+ + {isRoot ? ( + + Home + + ) : ( + { + e.preventDefault() + window.history.back() + }} + > + Go Back + + )} +
+
+ ) +} diff --git a/e2e/start/basic-rsc/app/components/NotFound.tsx b/e2e/start/basic-rsc/app/components/NotFound.tsx new file mode 100644 index 0000000000..7b54fa5680 --- /dev/null +++ b/e2e/start/basic-rsc/app/components/NotFound.tsx @@ -0,0 +1,25 @@ +import { Link } from '@tanstack/react-router' + +export function NotFound({ children }: { children?: any }) { + return ( +
+
+ {children ||

The page you are looking for does not exist.

} +
+

+ + + Start Over + +

+
+ ) +} diff --git a/e2e/start/basic-rsc/app/routeTree.gen.ts b/e2e/start/basic-rsc/app/routeTree.gen.ts new file mode 100644 index 0000000000..55380487d0 --- /dev/null +++ b/e2e/start/basic-rsc/app/routeTree.gen.ts @@ -0,0 +1,325 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as PostsImport } from './routes/posts' +import { Route as LayoutImport } from './routes/_layout' +import { Route as IndexImport } from './routes/index' +import { Route as PostsIndexImport } from './routes/posts.index' +import { Route as PostsPostIdImport } from './routes/posts.$postId' +import { Route as LayoutLayout2Import } from './routes/_layout/_layout-2' +import { Route as PostsPostIdDeepImport } from './routes/posts_.$postId.deep' +import { Route as LayoutLayout2LayoutBImport } from './routes/_layout/_layout-2/layout-b' +import { Route as LayoutLayout2LayoutAImport } from './routes/_layout/_layout-2/layout-a' + +// Create/Update Routes + +const PostsRoute = PostsImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const LayoutRoute = LayoutImport.update({ + id: '/_layout', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const PostsIndexRoute = PostsIndexImport.update({ + path: '/', + getParentRoute: () => PostsRoute, +} as any) + +const PostsPostIdRoute = PostsPostIdImport.update({ + path: '/$postId', + getParentRoute: () => PostsRoute, +} as any) + +const LayoutLayout2Route = LayoutLayout2Import.update({ + id: '/_layout-2', + getParentRoute: () => LayoutRoute, +} as any) + +const PostsPostIdDeepRoute = PostsPostIdDeepImport.update({ + path: '/posts/$postId/deep', + getParentRoute: () => rootRoute, +} as any) + +const LayoutLayout2LayoutBRoute = LayoutLayout2LayoutBImport.update({ + path: '/layout-b', + getParentRoute: () => LayoutLayout2Route, +} as any) + +const LayoutLayout2LayoutARoute = LayoutLayout2LayoutAImport.update({ + path: '/layout-a', + getParentRoute: () => LayoutLayout2Route, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/_layout': { + id: '/_layout' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsImport + parentRoute: typeof rootRoute + } + '/_layout/_layout-2': { + id: '/_layout/_layout-2' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutLayout2Import + parentRoute: typeof LayoutImport + } + '/posts/$postId': { + id: '/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof PostsPostIdImport + parentRoute: typeof PostsImport + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof PostsIndexImport + parentRoute: typeof PostsImport + } + '/_layout/_layout-2/layout-a': { + id: '/_layout/_layout-2/layout-a' + path: '/layout-a' + fullPath: '/layout-a' + preLoaderRoute: typeof LayoutLayout2LayoutAImport + parentRoute: typeof LayoutLayout2Import + } + '/_layout/_layout-2/layout-b': { + id: '/_layout/_layout-2/layout-b' + path: '/layout-b' + fullPath: '/layout-b' + preLoaderRoute: typeof LayoutLayout2LayoutBImport + parentRoute: typeof LayoutLayout2Import + } + '/posts/$postId/deep': { + id: '/posts/$postId/deep' + path: '/posts/$postId/deep' + fullPath: '/posts/$postId/deep' + preLoaderRoute: typeof PostsPostIdDeepImport + parentRoute: typeof rootRoute + } + } +} + +// Create and export the route tree + +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/posts' + | '/posts/$postId' + | '/posts/' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/posts/$postId' + | '/posts' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + id: + | '__root__' + | '/' + | '/_layout' + | '/posts' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/posts/' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + | '/posts/$postId/deep' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + PostsRoute: typeof PostsRouteWithChildren + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + PostsRoute: PostsRouteWithChildren, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/_layout", + "/posts", + "/posts/$postId/deep" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_layout": { + "filePath": "_layout.tsx", + "children": [ + "/_layout/_layout-2" + ] + }, + "/posts": { + "filePath": "posts.tsx", + "children": [ + "/posts/$postId", + "/posts/" + ] + }, + "/_layout/_layout-2": { + "filePath": "_layout/_layout-2.tsx", + "parent": "/_layout", + "children": [ + "/_layout/_layout-2/layout-a", + "/_layout/_layout-2/layout-b" + ] + }, + "/posts/$postId": { + "filePath": "posts.$postId.tsx", + "parent": "/posts" + }, + "/posts/": { + "filePath": "posts.index.tsx", + "parent": "/posts" + }, + "/_layout/_layout-2/layout-a": { + "filePath": "_layout/_layout-2/layout-a.tsx", + "parent": "/_layout/_layout-2" + }, + "/_layout/_layout-2/layout-b": { + "filePath": "_layout/_layout-2/layout-b.tsx", + "parent": "/_layout/_layout-2" + }, + "/posts/$postId/deep": { + "filePath": "posts_.$postId.deep.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/e2e/start/basic-rsc/app/router.tsx b/e2e/start/basic-rsc/app/router.tsx new file mode 100644 index 0000000000..0886de701f --- /dev/null +++ b/e2e/start/basic-rsc/app/router.tsx @@ -0,0 +1,21 @@ +import { createRouter as createTanStackRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' +import { DefaultCatchBoundary } from './components/DefaultCatchBoundary' +import { NotFound } from './components/NotFound' + +export function createRouter() { + const router = createTanStackRouter({ + routeTree, + defaultPreload: 'intent', + defaultErrorComponent: DefaultCatchBoundary, + defaultNotFoundComponent: () => , + }) + + return router +} + +declare module '@tanstack/react-router' { + interface Register { + router: ReturnType + } +} diff --git a/e2e/start/basic-rsc/app/routes/__root.tsx b/e2e/start/basic-rsc/app/routes/__root.tsx new file mode 100644 index 0000000000..b973394ac6 --- /dev/null +++ b/e2e/start/basic-rsc/app/routes/__root.tsx @@ -0,0 +1,123 @@ +import { + Link, + Outlet, + ScrollRestoration, + createRootRoute, +} from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' +import { Body, Head, Html, Meta, Scripts } from '@tanstack/start' +import * as React from 'react' +import { DefaultCatchBoundary } from '~/components/DefaultCatchBoundary' +import { NotFound } from '~/components/NotFound' +import appCss from '~/styles/app.css?url' +import { seo } from '~/utils/seo' + +export const Route = createRootRoute({ + meta: () => [ + { + charSet: 'utf-8', + }, + { + name: 'viewport', + content: 'width=device-width, initial-scale=1', + }, + ...seo({ + title: + 'TanStack Start | Type-Safe, Client-First, Full-Stack React Framework', + description: `TanStack Start is a type-safe, client-first, full-stack React framework. `, + }), + ], + links: () => [ + { rel: 'stylesheet', href: appCss }, + { + rel: 'apple-touch-icon', + sizes: '180x180', + href: '/apple-touch-icon.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '32x32', + href: '/favicon-32x32.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '16x16', + href: '/favicon-16x16.png', + }, + { rel: 'manifest', href: '/site.webmanifest', color: '#fffff' }, + { rel: 'icon', href: '/favicon.ico' }, + ], + errorComponent: (props) => { + return ( + + + + ) + }, + notFoundComponent: () => , + component: RootComponent, +}) + +function RootComponent() { + return ( + + + + ) +} + +function RootDocument({ children }: { children: React.ReactNode }) { + return ( + + + + + +
+ + Home + {' '} + + Posts + + + Layout + + + This Route Does Not Exist + +
+
+ {/* {children} */} + {children} + + + + + + ) +} diff --git a/e2e/start/basic-rsc/app/routes/_layout.tsx b/e2e/start/basic-rsc/app/routes/_layout.tsx new file mode 100644 index 0000000000..02ddbb1cd9 --- /dev/null +++ b/e2e/start/basic-rsc/app/routes/_layout.tsx @@ -0,0 +1,16 @@ +import { Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a layout
+
+ +
+
+ ) +} diff --git a/e2e/start/basic-rsc/app/routes/_layout/_layout-2.tsx b/e2e/start/basic-rsc/app/routes/_layout/_layout-2.tsx new file mode 100644 index 0000000000..3b7dbf2903 --- /dev/null +++ b/e2e/start/basic-rsc/app/routes/_layout/_layout-2.tsx @@ -0,0 +1,34 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a nested layout
+
+ + Layout A + + + Layout B + +
+
+ +
+
+ ) +} diff --git a/e2e/start/basic-rsc/app/routes/_layout/_layout-2/layout-a.tsx b/e2e/start/basic-rsc/app/routes/_layout/_layout-2/layout-a.tsx new file mode 100644 index 0000000000..61e19b4d9f --- /dev/null +++ b/e2e/start/basic-rsc/app/routes/_layout/_layout-2/layout-a.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-a')({ + component: LayoutAComponent, +}) + +function LayoutAComponent() { + return
I'm layout A!
+} diff --git a/e2e/start/basic-rsc/app/routes/_layout/_layout-2/layout-b.tsx b/e2e/start/basic-rsc/app/routes/_layout/_layout-2/layout-b.tsx new file mode 100644 index 0000000000..cceed1fb9a --- /dev/null +++ b/e2e/start/basic-rsc/app/routes/_layout/_layout-2/layout-b.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-b')({ + component: LayoutBComponent, +}) + +function LayoutBComponent() { + return
I'm layout B!
+} diff --git a/e2e/start/basic-rsc/app/routes/index.tsx b/e2e/start/basic-rsc/app/routes/index.tsx new file mode 100644 index 0000000000..b7b6138529 --- /dev/null +++ b/e2e/start/basic-rsc/app/routes/index.tsx @@ -0,0 +1,13 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!

+
+ ) +} diff --git a/e2e/start/basic-rsc/app/routes/posts.$postId.tsx b/e2e/start/basic-rsc/app/routes/posts.$postId.tsx new file mode 100644 index 0000000000..53c416e9f5 --- /dev/null +++ b/e2e/start/basic-rsc/app/routes/posts.$postId.tsx @@ -0,0 +1,47 @@ +import { + ErrorComponent, + ErrorComponentProps, + Link, + createFileRoute, +} from '@tanstack/react-router' +import { fetchPost } from '../utils/posts' +import { NotFound } from '~/components/NotFound' +import { createServerFn } from '@tanstack/start' + +const renderPost = createServerFn('GET', async (postId: string) => { + const post = await fetchPost(postId) + + return ( +
+

{post.title}

+
{post.body}
+ + Deep View + +
+ ) +}) + +export const Route = createFileRoute('/posts/$postId')({ + loader: async ({ params: { postId } }) => renderPost(postId), + errorComponent: PostErrorComponent as any, + component: PostComponent, + notFoundComponent: () => { + return Post not found + }, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + return Route.useLoaderData() +} diff --git a/e2e/start/basic-rsc/app/routes/posts.index.tsx b/e2e/start/basic-rsc/app/routes/posts.index.tsx new file mode 100644 index 0000000000..1b491e46be --- /dev/null +++ b/e2e/start/basic-rsc/app/routes/posts.index.tsx @@ -0,0 +1,10 @@ +import { createFileRoute } from '@tanstack/react-router' + +// @ts-ignore +export const Route = createFileRoute('/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/e2e/start/basic-rsc/app/routes/posts.tsx b/e2e/start/basic-rsc/app/routes/posts.tsx new file mode 100644 index 0000000000..02682eaa42 --- /dev/null +++ b/e2e/start/basic-rsc/app/routes/posts.tsx @@ -0,0 +1,15 @@ +// import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' +import { createServerFn, renderRsc } from '@tanstack/start' +import { renderPosts } from '~/utils/renderPosts' + +export const serverRenderPosts = createServerFn('GET', renderPosts) + +export const Route = createFileRoute('/posts')({ + loader: async () => serverRenderPosts(), + component: PostsComponent, +}) + +function PostsComponent() { + return renderRsc(Route.useLoaderData()) +} diff --git a/e2e/start/basic-rsc/app/routes/posts_.$postId.deep.tsx b/e2e/start/basic-rsc/app/routes/posts_.$postId.deep.tsx new file mode 100644 index 0000000000..dd9bcd1d34 --- /dev/null +++ b/e2e/start/basic-rsc/app/routes/posts_.$postId.deep.tsx @@ -0,0 +1,26 @@ +import { createFileRoute, Link } from '@tanstack/react-router' +import { PostErrorComponent } from './posts.$postId' +import { fetchPost } from '../utils/posts' + +export const Route = createFileRoute('/posts/$postId/deep')({ + loader: async ({ params: { postId } }) => fetchPost(postId), + errorComponent: PostErrorComponent as any, + component: PostDeepComponent, +}) + +function PostDeepComponent() { + const post = Route.useLoaderData() + + return ( +
+ + ← All Posts + +

{post.title}

+
{post.body}
+
+ ) +} diff --git a/e2e/start/basic-rsc/app/ssr.tsx b/e2e/start/basic-rsc/app/ssr.tsx new file mode 100644 index 0000000000..62572579ac --- /dev/null +++ b/e2e/start/basic-rsc/app/ssr.tsx @@ -0,0 +1,12 @@ +import { + createStartHandler, + defaultStreamHandler, +} from '@tanstack/start/server' +import { getRouterManifest } from '@tanstack/start/router-manifest' + +import { createRouter } from './router' + +export default createStartHandler({ + createRouter, + getRouterManifest, +})(defaultStreamHandler) diff --git a/e2e/start/basic-rsc/app/styles/app.css b/e2e/start/basic-rsc/app/styles/app.css new file mode 100644 index 0000000000..d6426ccb72 --- /dev/null +++ b/e2e/start/basic-rsc/app/styles/app.css @@ -0,0 +1,14 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + html, + body { + @apply text-gray-900 bg-gray-50 dark:bg-gray-950 dark:text-gray-200; + } + + .using-mouse * { + outline: none !important; + } +} diff --git a/e2e/start/basic-rsc/app/utils/posts.tsx b/e2e/start/basic-rsc/app/utils/posts.tsx new file mode 100644 index 0000000000..b2a8acc634 --- /dev/null +++ b/e2e/start/basic-rsc/app/utils/posts.tsx @@ -0,0 +1,35 @@ +// import { notFound } from '@tanstack/react-router' +// import { createServerFn } from '@tanstack/start' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPost = async (postId: string) => { + 'use server' + console.info(`Fetching post with id ${postId}...`) + await new Promise((r) => setTimeout(r, 500)) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + if (err.status === 404) { + // throw notFound() + } + throw err + }) + + return post +} + +export const fetchPosts = async () => { + 'use server' + console.info('Fetching posts...') + await new Promise((r) => setTimeout(r, 500)) + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +} diff --git a/e2e/start/basic-rsc/app/utils/renderPosts.tsx b/e2e/start/basic-rsc/app/utils/renderPosts.tsx new file mode 100644 index 0000000000..37c0661217 --- /dev/null +++ b/e2e/start/basic-rsc/app/utils/renderPosts.tsx @@ -0,0 +1,63 @@ +'use server' + +import React from 'react' +import { fetchPosts } from './posts' + +export async function renderPosts() { + const posts = await fetchPosts() + + posts.state = posts.state || { + status: 'pending', + promise: Promise.resolve(), + } + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }]?.map( + (post) => { + return ( +
  • + {post.title.substring(0, 20)} + {/* +
    {post.title.substring(0, 20)}
    + */} +
  • + ) + }, + )} +
+
+ Loading...
}> + + + + ) +} + +function DelayedDateViaSuspense({ state }) { + // a component that will suspend for 1 second and then show the current date + if (state.status === 'pending') { + state.promise = new Promise((resolve) => { + setTimeout(() => { + state.status = 'success' + resolve() + }, 5000) + }) + throw state.promise + } + + return
{new Date().toISOString().replace('T', ' ').split('.')[0]}
+} + +// ...fetchPosts +// posts +// ...5000 +// timestamp diff --git a/e2e/start/basic-rsc/app/utils/seo.ts b/e2e/start/basic-rsc/app/utils/seo.ts new file mode 100644 index 0000000000..d18ad84b74 --- /dev/null +++ b/e2e/start/basic-rsc/app/utils/seo.ts @@ -0,0 +1,33 @@ +export const seo = ({ + title, + description, + keywords, + image, +}: { + title: string + description?: string + image?: string + keywords?: string +}) => { + const tags = [ + { title }, + { name: 'description', content: description }, + { name: 'keywords', content: keywords }, + { name: 'twitter:title', content: title }, + { name: 'twitter:description', content: description }, + { name: 'twitter:creator', content: '@tannerlinsley' }, + { name: 'twitter:site', content: '@tannerlinsley' }, + { name: 'og:type', content: 'website' }, + { name: 'og:title', content: title }, + { name: 'og:description', content: description }, + ...(image + ? [ + { name: 'twitter:image', content: image }, + { name: 'twitter:card', content: 'summary_large_image' }, + { name: 'og:image', content: image }, + ] + : []), + ] + + return tags +} diff --git a/e2e/start/basic-rsc/package.json b/e2e/start/basic-rsc/package.json new file mode 100644 index 0000000000..53378b7df3 --- /dev/null +++ b/e2e/start/basic-rsc/package.json @@ -0,0 +1,39 @@ +{ + "name": "tanstack-start-e2e-basic-rsc", + "private": true, + "sideEffects": false, + "type": "module", + "scripts": { + "dev": "vinxi dev", + "build": "vinxi build", + "start": "vinxi start", + "lint": "prettier --check '**/*' --ignore-unknown && eslint --ext .ts,.tsx ./app", + "format": "prettier --write '**/*' --ignore-unknown" + }, + "dependencies": { + "@babel/plugin-syntax-typescript": "^7.25.4", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", + "redaxios": "^0.5.1", + "tailwind-merge": "^2.5.2", + "vinxi": "0.4.3" + }, + "devDependencies": { + "@types/react": "^18.2.65", + "@types/react-dom": "^18.2.21", + "@vitejs/plugin-react": "^4.3.1", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", + "prettier": "^3.3.3", + "tailwindcss": "^3.4.11", + "typescript": "^5.6.2", + "vite": "^5.4.5", + "vite-tsconfig-paths": "^5.0.1" + }, + "overrides": { + "react": "0.0.0-experimental-035a41c4e-20230704", + "react-dom": "0.0.0-experimental-035a41c4e-20230704" + } +} diff --git a/e2e/start/basic-rsc/postcss.config.cjs b/e2e/start/basic-rsc/postcss.config.cjs new file mode 100644 index 0000000000..8e638a6bcd --- /dev/null +++ b/e2e/start/basic-rsc/postcss.config.cjs @@ -0,0 +1,7 @@ +module.exports = { + plugins: [ + require('tailwindcss/nesting'), + require('tailwindcss'), + require('autoprefixer'), + ], +} diff --git a/e2e/start/basic-rsc/public/android-chrome-192x192.png b/e2e/start/basic-rsc/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..09c8324f8c6781bc90fcf5dd38e0702bd5f171f3 GIT binary patch literal 29964 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
-$E{6Mn6vA;gG82)4;e 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 b=FG literal 0 HcmV?d00001 diff --git a/e2e/start/basic-rsc/public/android-chrome-512x512.png b/e2e/start/basic-rsc/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..11d626ea3d00fddd52861bf0af5554a92fc30d69 GIT binary patch literal 109271 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 Ef@mE(_W%F@ literal 0 HcmV?d00001 diff --git a/e2e/start/basic-rsc/public/apple-touch-icon.png b/e2e/start/basic-rsc/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9423cc02c40ea066d2a061cdcdf621c0718cb1 GIT binary patch literal 27246 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⪼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 N002ovPDHLkV1k;v<;Va4 literal 0 HcmV?d00001 diff --git a/e2e/start/basic-rsc/public/favicon-16x16.png b/e2e/start/basic-rsc/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..e3389b00443d602a249b48ae0e21e333971c9c1e GIT binary patch literal 832 zcmV-G1Hb%Px%`bk7VR5(v%lW%BSRTRK~=OuZ4FYhI3vvy^4t8t~UDHGBS#44K%hSiDal!9Nj zeb^RZ;3&cb72F3w6s4;uUA7>Cf>1=Z56;a$8wZ=NKHtq z33GDV=_|V0E(QPTEB1=edhG{{=-+C??RQi7*e9J7YBnZR+PppIKjA8EV+}Yt`zH<7 zGR%O5D3|Ef)99hUXu19=Cxaki@6toZIe&u-X0(oDFRl|x6P7Bwc^mB(i9|gOY)Jh6DaPkmt z8Wr!@TP1|RPlYRlJe^eRB0K(gn91{(=zi{HrkpHIflw8&q%;+U!V&dFPYDQAWJh@< zwcklN9VEX?vG;}75GqCepKC25M^xV%BcR%A8c!)S5k4P0$g}HS#lA6zy`~K@9&EX4 zOrvr%_1U2dp~gg6G*;&`Jag*?jZTJv+$S`*#)zme_SFWOCm*F4U&hJihqxAu;8z}x zWv7!u>YKRa3PUJQs55wC)i4QvFOAV0jW$?1cnUJJ7Vl?z_ge{9q!zpfCJxd8vJ>-ql@0&`Bttn1~4;s>8tax%hr(^q#A_*wqAv( zh(T&>hJD?OhiP$sxAzkd1W1^EHV1WL3xM&6$*HhG@|8}OjPpG{+!;GC>w;ha0000< KMNUMnLSTZGXp5cz literal 0 HcmV?d00001 diff --git a/e2e/start/basic-rsc/public/favicon-32x32.png b/e2e/start/basic-rsc/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..900c77d444c9b31e6144b6ac0bb1ab7bb7ca767f GIT binary patch literal 2115 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 literal 0 HcmV?d00001 diff --git a/e2e/start/basic-rsc/public/favicon.ico b/e2e/start/basic-rsc/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1a1751676f7e22811b1070572093996c93c87617 GIT binary patch literal 15406 zcmeHOd0bW1+Fl2T)asg*b?Ynb=5X`&-CNczGfPshnW^PmhMJl=CJLyC8iErjB7!1= z%=0WD0t$kNf(oc84uDKf;D7_*z&VHWeDAyW*>FJYTG{>QyXW_NS$nU&*84nb?X}k4 z`*{~as6-p_+;f7`H^iK_LVPHMc;gNE{H-oR_)y-v@9MAj79y*w5N}Z#szNp7d`ceg z=Qg#k@cO}B`2AEQLYAsU^lG)(?NlVveB4D=RNqHBi7@LZyk>X`-?=&wyaXc324dGH zh`sI*2ZA9E$3YxV(}}Zro+2xvqoE%&Gttr5;%^xu$Xs8~f$F(IWCTHE$5Opih%-kZ z&Yy-jl?h|pAsJjp@v(NPk*BSN3PZOKf=D3D{ee_(C&aN7h|`CuUIE0#a)`n_3=NqA zF3WYeew3H!8|bXk`EOAn+)ag*2_NI>WPgaGyY-kWm?m!BVg-cSkCwHgSkV7%d$ihpd+fwB2n%=`AHbdAe!S+2u%Eu2wg?hGhq zwxvNjHX7#*6PqjedU_4aH|QF#E9E%lx@LY*lYwoauNnjVw_<^p8Xd=Mg_*Aoi+ts4 zN|_d^dU>2qy*yrrap8M0DKs1JWdDHC?g#MKIbq=Z1<_TMHt0PiYimy5!@5g#XqNzpXtEec~usxTf6PbkDqAu50ezz_=_Pt%P-o2*Owy3VuMqO8Gt*$AvExLMsqx-eXE{~qS zii2O7@;dVd*=JmqJ_o=9-? z5_?=tM2bh}-;Jj@@SNIPxKH*Gp409N?^zK33m}3lAi}I5BCR2Iu7!x-2$8sj?%{Tb zeO|oI+!u!;eZ-O7wCeuGpU13DgzG3gzSl^&em@Z|t%ISGQ;FG zj@PMUDH>6b=_qn@JN+sazO#E#dkcj3kD&D)BG3?bjRCGJMCuM|uYwyx>th1p?uE$D zfGEg@IF|=elwTk+f_ps)XL|`ZeLtxMtK|OPZ5E)4U?wID2aEW|}8@+;m!x z4}?NwMa#H(jJuz3vmnmqO6#*IE0mrS9a6lnvF~5vU^-3onloN?ZJ2p)h+t}S*m9cF zt7Y5-#@$Bk^@K3QJ+ccTZx6(YbizHJ87#T90#y9nQl8gMTKBV9#Q+w0snR`&i zEn?iWgj+(m7a=OE_h_WL2e&@vCYu7I&AMA^LD*hRZ zF%=H6KEh|KjS3Ey)b1rJY+j*)FJY&Kt5BLFu;*YO^a+cCD#b&-2S@0gC7jN5 zoa`9APtcglO@fNXf1lk4uqXQ+sV@6qU+j~8GX`TZCga=Nmvqib9eBU!$n&^xTu4@y z*B<$qy|FibGCVv(VQG6G7OQ}1b~hn5_|W{PIi5y#D1zpC4B8*sjif>1xtnzOXnY;!ZKQWI_M!J9)z=>z`sL%sYx4Cxb1z&s^P>DmSkEnHn75-wx^C)0 z?~fxK(e5i}EcDdEYzJWKp?hTANBLCpCG246%z_BN6`SpU1ApE39r}4WN!Mq((fIq) z0dGtTZnb=CK7KKeu$RV=MeCs0lIRAE@=KJ?#|EV1gA?=c*ObZlF{}cUw$R)jz5xTR z(i+Pv^?p+tqtjU@>8@KR>OiSvOA~I>yW-~<7nX=GgTnC6;UDnsk(u}?z#b#k(K`FN zEvC8^HkP;8RgH0>$yk}F*5@@)%GTub7mly5%h2Vm%V>aN)@e29vF97~**68fJ?5d$ z{wa7PVH{oy9g7baN1)A+6|hOUkLmGQcrS7(-aha>dPYrctgrZayi}Lxn4|UDl%s_s zy*tyfWZfgjqfh!|={@(z)28TudLf2JyEN8i zACf=4FU9Bd@CGS=Y#`0ky^UC2uBWvo+X}R3G7b7it^niy581Oj2BM4KU_9?XgvQ=< zbTl6?^-quFiBi9G4<8TvW7iDo8~V~>N<@QntzUo+&Zo4Pn%)4LT)7Nmdz7HFSE=Sc z85CQ4vKTLV4WkRj()U8A?fvo8)_zdU8-^F?JK}|af1zveFg)iw2p@;9#OU4b7#>fH ziGdHtld``NJ83NBYp{;KQQS*3*hJqMPGpS9*!&C#u2lO3RjFZUcIVFEPuo62yDc9; zFcUBk*R}1h`$Pkm^R(`CTD99djA2QPbX~tE@OPQ2(l*#%z@L~-t4h3Qt9(w;`4u>C< z^vb?_=34gM(|D9cU)hKG2iDQ}iEXt^`mHl?I#Y(Eo9FQ6kq7kdM%aAcWxGb$t-gOU zKL1YK&FPze=fJi6+Zo8eeL!z~tehJj^Yy0u?5l?`JLV$h?Z1HIw+^5~W&^!16E@pE zToWnsceRZ4=)Wa*_Vy~i5nE7vJqEwdb|RxV2?xs)rFze2Q~NUr`vCQM#xJ+KC7UZ( zJUU&f^mV*)WrybSl^u9o+nkt*31P)JUK)&{Cn_`|o5osh>-W1QW^3oyFFE$EzTn_< zv%>EFtqMEbs<0>HwB@mUUS8;g>T>)0)fYDToW11PY>u_&|8etBV&D0G$qJMEC01Vb z=PmQp=a*hrmn_v$%67fJ#4?YsaTzZAxPJe?mt&oTBw8_z?1|_ku) zoLL*GBuyrszS%8BcG!C&J)KnX|G>{)hWhd9%iUkiJv1Vr0!CCz14$y>;SLhK0yK^pc=Y zswdVK&nd>jb80eaS8{**P=71DIrhMsoy41B5UkrVZ;nN)qOAH>NFSsP>Rgf)xeQ#w&}yhLOjUk!YK0%q%b#eR zETVV4#j;izu~LrRNcx=}^*63x>)y#!CJ#HHoO>HxC?nG7X z+(||lv5YlK3weGjdTA{6cf7v8lN8>h*QWW(F*MeS4SDA#lXjabYpAU4ojI)Nw{nb4 z;#~r9se;Fjq%DfQ_`DT<(;e72bKQT^JZPNl*SI#ZA<#uAm2%b+9;S4 zb7PK=YRBR!;-#gtRmscdt8`ZLRbaE6tAgpAr_gufFtlahb&{|Z z9?XfkF~>*o4{;S1n^&sT8%T?^Un*<8&Z|`L-bC?BpAHxkIb6Ta(D+Gm)@#4i-^`o! z?wlk!hRT}v$xPy%E$hIAq{k|}%N5?#->e5$U8V6v<#-*XwvS2q5rKYBOPGw!db7lZ zI59Wo*c$%`578|#MARu-u3@@6SRg(?Alh4CqQ?L{yK@y(2{itB4Dpy@?i~Ali1%?> zE9dp3C2#KY@*+v&SCO9m?4b}$4EkEaU@XQo)*V-lin-MQ64L-J@Y)2co$Q= zp-k5OS%c^Gh1VNi^Qq5`a&}=*?rONC{gZsRl`t5KF&UdVD14Y3b7Zc}S!qLgzIg9= zs<@aGq(ay>(&z0}@LW&&HjSG|cNNkiRXDLv;Os$x@;rfxV=C;~I|LKm_v3|FdY1BB zke;s`FQWUw>m}b0=E&opjo14;T8H>Of#(Que<3Xc6Mb{BCv_+)j;kc!jKNrp$=J++ zxiBZ@#vGX|b7uZFHZVGw+0(M zCf;6l0CQK|gT>FJuahtK$-Wtbu^5xF6>VPTVnlj<2QXLW%-omR-R`o^>2&-yk9hb6 zY)4q=TI`Hkiny3Xh>Bc}kdO`V^7Vn!_B7g0a0M2&v=5+#nbWx#O{nZS14b z(=CN;Ke}z%i~b?!FvzbIz2@z~NV8%rGNbtYCucEZz(p*!)HUvc3j2#uRT;jr< zn43RwWUkDaxi49R9_DtaG+$3Tx!xArX|dRz`qz&1bA$X}I#zv2YwBbgHDzF8 zv!n#`S3kgqgH!P1vOAbK?luO!UWOTc?!(qt1MAnd*z&0cOU;{bTl3Exm|76Th^%(M19n98H{~7FCc@oDG z_w7jH*okD@DOIdRo;l}J-cPP~vB32~Q+a(kF^t|TCip{)cEc#E6X5dSt(}TLun@DnuQ!(a zVQV#{{{Pw)-M;f~%x}%d6V9tKBklQd?OWdycx~rb`1_$57~~bySnnIhQknmVP55-_ z{>J>r_4|9uEs4@WHhPYeQ@&N4u13E%tl3_%W$_ve@NvQ0o>nl8 zxh7qE$72=VJvtKu&Y4Luj=r9&VHKxEfAcuvzaCx2IbnWKbu&MWd(V_TXiqS;ir3Yw zO4b#wqP=O9lIhbuI{chek57U&6VIs>ubYp>3D@a)IuHNInt`{{Owc!HHeU0afVr_n z={F9HMb;@Axk zgID5X%UIa%Q`5f3I~0e^#`{4l@uL6dcr$qdUiKXQ5JpSP)_6QrrWsFdlKnxAUE^NC zL((2WY44!@Aq|FxyHcEXCO*iYkDiI&qLcHdQf!dphduU8#G8o|(A&uz&y2K2yP+#E zc5^0XC+6UvAuG^pw+a4vd@hDuw4!@83qzuudH>-r81GqZetkW~Ib?1WTckdo5k~P` zDNioP+?{f@BOEF2$hNtKjgJdMucS$MGl_VnPLg7+F9v;%S0hJCG1%8*N8_2F$H3@c zi}1{s))>6q8{GrH#XA(2?sw`Z^ga3`r3>(vo!?;b{?iZnXS~*M6(0R*AH(83a+&3{ zkFuXD@y~AJ$=qE|J?OFZl(v!#EzLYL53dD|p?)5Zm&1okdp$W$$Z_L8Q4ICZl-J&h zz9|RIMcdIc(bfGc^r3O}_e0b1I>i=y?)?_MQ@+E%s5RJhyyhYQE%Er=jAEOc@?_52by4IP61rcJ%Gc>t8gl~ z^$?CB?tpC#n7m7i?ZjvC5iP!Q12p%*ovSFvckj9B8jBW7`tP_oEuHnPS;H$~15-kyCp*x285Y7E9&S z%$d3KH(20hycbxhxfn<>>DJ7p^fKNFo{OiP`{5~X4H&%38iChpAHoQ{rpBy;S`1HZ zKqzt8cu9kS6xVOhyg9}lP8LcQqEDmXOQajW-?c<+qC4$B=|pp(ozp+5-#?MYPZ!$%z?HqgZ`2{e=1R zFF~WRh}YDs$)MOSI(E98kA5)=@T$*9yzKo2Ui0}1qf*wvySf6O?Xkq$)W6&wo*Pf| zJ@7P^>;k@O$a}ZIz7)TldR?u@zaq4FJB0R<&^?HJP*2YadKceKT$Mcq zysvdmBk) zOHW169-vY5TpKH`IqhjqPd?y?IY&IO^2|>7SD&MDcVu7WNAVe1Q;YZqwREipZdYrm zeKnX_R!^EL@#K98F%KE-r$#d6KTNEi4{YG>45J zC$4l*T|6`EUSaK_d*_hV!dm7j=dsrg!DR1p^zs=6la!yK6p(IGx+}l zCGW_c!^pgOP%gvQTb5PM4O1#-Ra$}ev|mm7e+B-Zg(j<}V^bpa*zpT)LopJcI&~-0 z^wh2N+EcgEAX_@6iZ#zW*;t12l`@5mt74@F25SArvEpg|26sjR#p{) zoYEM?6zoO*#YlQj$iy>;)fB&>H8PXdnJk*CPw2<%()p@@mntj0Eh?|L*HvD2$L}?p z$Sl0M<~Ba|yNuMck;p6$!)v)Ub>b+k?}uoOB+Ms7znPnxSGIJ!alz4-_VHZ2dBH(_ z^TI|*R^dP?oBmunHau7IIdwqs*=;B~w+%NdHmTVc`}8RJgZ2+JYk@Q`+TJeT_+Cxf z8q2z})$w(ut18LxtE|kXlIyY$_C<58+51cj$Uo$i=lAW3WnCT=uk7)l#BxM^3GHGp sUYw*kZ&9czwx}V4-fB3n{`}%3F2iNH4%cNLe+aq%I{j}CJVp=vAC(LAUjP6A literal 0 HcmV?d00001 diff --git a/e2e/start/basic-rsc/public/favicon.png b/e2e/start/basic-rsc/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e77bc06091ade4496525a09d8900675afcf03f0 GIT binary patch literal 1507 zcmV<91swW`P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$^O-V#SR9Fd>S3Qp$MHK9ro!#4$ zEP@L_hX|b@f=!*_42h6mKu7{)4)_U*>1>0bCkUj;Z1X!7 zHe(Ew^Oi(|bW3J~xu+)XbtFF?4>!7TH$>(D_atUQVEj(8fGvYu2NF33#JZX>)(Vj8 zIi@z>Glt?6t~;Lf(|C8F>;WF^8F<^s7Scr!sZc01uB?HMHoL5+FZ>B(g+r-)?Sn)#3Zal#?G@GAwO5U27MpGOlC2+_saA)rl zP-<@-n~;PQOlm|Hi<+W;NdR;5+=zADzM&?!+CPD36=cGwHy6!D^vPEHG?rO`K>G|M z3FposX{yT132wuw1OR3Um_5JoKB#6?!QgBupIT;?YIr;WcpmuCE>S75mZid+ens#E zGPuYjiG0UNNVWu=f!Id^?9)34)eIpu-`j_~W0iAQzK(}XYc_!;87Tk~?4tq|h=2(! zuq0HCiNK)@+ocCKR3q1REdUju>HdYxd>JX@%oOibg+J~D+}rhz54D!NfC{h-OYk{M zkzmFtdrL@nL0bm8nF@pob1CeLC>12ef#in-Bzv2!wi)Iuwq24)`AH}|0QNQ^f$KHv z?5PBPo1*#GAuAk+Poe`?UJ>mP`@~d4a(103j0lwUx@_+$#B&VC%7r>#2$HIiD`KO8L|s3Yp%M}BT0;NJDzZtPnx=4%enhU zhW*pNN0t`^4%5MKAR+}=^Q?QeqQ`>bbK zf+-ji$Uz8V0?LpX@kh`k%DL)GCA2=@SJNKg56Wh>>pr=7{1PmHqG|~=AdLV3002ov JPDHLkV1ivgp)>#h literal 0 HcmV?d00001 diff --git a/e2e/start/basic-rsc/public/site.webmanifest b/e2e/start/basic-rsc/public/site.webmanifest new file mode 100644 index 0000000000..fa99de77db --- /dev/null +++ b/e2e/start/basic-rsc/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/e2e/start/basic-rsc/tailwind.config.cjs b/e2e/start/basic-rsc/tailwind.config.cjs new file mode 100644 index 0000000000..75fe25dbf7 --- /dev/null +++ b/e2e/start/basic-rsc/tailwind.config.cjs @@ -0,0 +1,4 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./app/**/*.{js,ts,jsx,tsx}'], +} diff --git a/e2e/start/basic-rsc/tsconfig.json b/e2e/start/basic-rsc/tsconfig.json new file mode 100644 index 0000000000..d1b5b77660 --- /dev/null +++ b/e2e/start/basic-rsc/tsconfig.json @@ -0,0 +1,22 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "target": "ES2022", + "allowJs": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "paths": { + "~/*": ["./app/*"] + }, + "noEmit": true + } +} diff --git a/e2e/start/basic/.gitignore b/e2e/start/basic/.gitignore new file mode 100644 index 0000000000..be342025da --- /dev/null +++ b/e2e/start/basic/.gitignore @@ -0,0 +1,22 @@ +node_modules +package-lock.json +yarn.lock + +.DS_Store +.cache +.env +.vercel +.output +.vinxi + +/build/ +/api/ +/server/build +/public/build +.vinxi +# Sentry Config File +.env.sentry-build-plugin +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/e2e/start/basic/.prettierignore b/e2e/start/basic/.prettierignore new file mode 100644 index 0000000000..fd1b50a539 --- /dev/null +++ b/e2e/start/basic/.prettierignore @@ -0,0 +1,5 @@ +**/api +**/build +**/public +pnpm-lock.yaml +routeTree.gen.ts \ No newline at end of file diff --git a/e2e/start/basic/.prettierrc b/e2e/start/basic/.prettierrc new file mode 100644 index 0000000000..aaf3357d4a --- /dev/null +++ b/e2e/start/basic/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "semi": false, + "trailingComma": "all" +} diff --git a/e2e/start/basic/app.config.ts b/e2e/start/basic/app.config.ts new file mode 100644 index 0000000000..d1d9b04ded --- /dev/null +++ b/e2e/start/basic/app.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from '@tanstack/start/config' +import tsConfigPaths from 'vite-tsconfig-paths' + +export default defineConfig({ + vite: { + plugins: () => [ + tsConfigPaths({ + projects: ['./tsconfig.json'], + }), + ], + }, +}) diff --git a/e2e/start/basic/app/api.ts b/e2e/start/basic/app/api.ts new file mode 100644 index 0000000000..0caf78bb9d --- /dev/null +++ b/e2e/start/basic/app/api.ts @@ -0,0 +1,6 @@ +import { + createStartAPIHandler, + defaultAPIFileRouteHandler, +} from '@tanstack/start/api' + +export default createStartAPIHandler(defaultAPIFileRouteHandler) diff --git a/e2e/start/basic/app/client.tsx b/e2e/start/basic/app/client.tsx new file mode 100644 index 0000000000..f16ba73f62 --- /dev/null +++ b/e2e/start/basic/app/client.tsx @@ -0,0 +1,7 @@ +import { hydrateRoot } from 'react-dom/client' +import { StartClient } from '@tanstack/start' +import { createRouter } from './router' + +const router = createRouter() + +hydrateRoot(document.getElementById('root')!, ) diff --git a/e2e/start/basic/app/components/DefaultCatchBoundary.tsx b/e2e/start/basic/app/components/DefaultCatchBoundary.tsx new file mode 100644 index 0000000000..f0ce51dc57 --- /dev/null +++ b/e2e/start/basic/app/components/DefaultCatchBoundary.tsx @@ -0,0 +1,53 @@ +import { + ErrorComponent, + ErrorComponentProps, + Link, + rootRouteId, + useMatch, + useRouter, +} from '@tanstack/react-router' + +export function DefaultCatchBoundary({ error }: ErrorComponentProps) { + const router = useRouter() + const isRoot = useMatch({ + strict: false, + select: (state) => state.id === rootRouteId, + }) + + console.error(error) + + return ( +
+ +
+ + {isRoot ? ( + + Home + + ) : ( + { + e.preventDefault() + window.history.back() + }} + > + Go Back + + )} +
+
+ ) +} diff --git a/e2e/start/basic/app/components/NotFound.tsx b/e2e/start/basic/app/components/NotFound.tsx new file mode 100644 index 0000000000..7b54fa5680 --- /dev/null +++ b/e2e/start/basic/app/components/NotFound.tsx @@ -0,0 +1,25 @@ +import { Link } from '@tanstack/react-router' + +export function NotFound({ children }: { children?: any }) { + return ( +
+
+ {children ||

The page you are looking for does not exist.

} +
+

+ + + Start Over + +

+
+ ) +} diff --git a/e2e/start/basic/app/routeTree.gen.ts b/e2e/start/basic/app/routeTree.gen.ts new file mode 100644 index 0000000000..d6df38d1bf --- /dev/null +++ b/e2e/start/basic/app/routeTree.gen.ts @@ -0,0 +1,460 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as UsersImport } from './routes/users' +import { Route as RedirectImport } from './routes/redirect' +import { Route as PostsImport } from './routes/posts' +import { Route as DeferredImport } from './routes/deferred' +import { Route as LayoutImport } from './routes/_layout' +import { Route as IndexImport } from './routes/index' +import { Route as UsersIndexImport } from './routes/users.index' +import { Route as PostsIndexImport } from './routes/posts.index' +import { Route as UsersUserIdImport } from './routes/users.$userId' +import { Route as PostsPostIdImport } from './routes/posts.$postId' +import { Route as LayoutLayout2Import } from './routes/_layout/_layout-2' +import { Route as PostsPostIdDeepImport } from './routes/posts_.$postId.deep' +import { Route as LayoutLayout2LayoutBImport } from './routes/_layout/_layout-2/layout-b' +import { Route as LayoutLayout2LayoutAImport } from './routes/_layout/_layout-2/layout-a' + +// Create/Update Routes + +const UsersRoute = UsersImport.update({ + path: '/users', + getParentRoute: () => rootRoute, +} as any) + +const RedirectRoute = RedirectImport.update({ + path: '/redirect', + getParentRoute: () => rootRoute, +} as any) + +const PostsRoute = PostsImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const DeferredRoute = DeferredImport.update({ + path: '/deferred', + getParentRoute: () => rootRoute, +} as any) + +const LayoutRoute = LayoutImport.update({ + id: '/_layout', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const UsersIndexRoute = UsersIndexImport.update({ + path: '/', + getParentRoute: () => UsersRoute, +} as any) + +const PostsIndexRoute = PostsIndexImport.update({ + path: '/', + getParentRoute: () => PostsRoute, +} as any) + +const UsersUserIdRoute = UsersUserIdImport.update({ + path: '/$userId', + getParentRoute: () => UsersRoute, +} as any) + +const PostsPostIdRoute = PostsPostIdImport.update({ + path: '/$postId', + getParentRoute: () => PostsRoute, +} as any) + +const LayoutLayout2Route = LayoutLayout2Import.update({ + id: '/_layout-2', + getParentRoute: () => LayoutRoute, +} as any) + +const PostsPostIdDeepRoute = PostsPostIdDeepImport.update({ + path: '/posts/$postId/deep', + getParentRoute: () => rootRoute, +} as any) + +const LayoutLayout2LayoutBRoute = LayoutLayout2LayoutBImport.update({ + path: '/layout-b', + getParentRoute: () => LayoutLayout2Route, +} as any) + +const LayoutLayout2LayoutARoute = LayoutLayout2LayoutAImport.update({ + path: '/layout-a', + getParentRoute: () => LayoutLayout2Route, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/_layout': { + id: '/_layout' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutImport + parentRoute: typeof rootRoute + } + '/deferred': { + id: '/deferred' + path: '/deferred' + fullPath: '/deferred' + preLoaderRoute: typeof DeferredImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsImport + parentRoute: typeof rootRoute + } + '/redirect': { + id: '/redirect' + path: '/redirect' + fullPath: '/redirect' + preLoaderRoute: typeof RedirectImport + parentRoute: typeof rootRoute + } + '/users': { + id: '/users' + path: '/users' + fullPath: '/users' + preLoaderRoute: typeof UsersImport + parentRoute: typeof rootRoute + } + '/_layout/_layout-2': { + id: '/_layout/_layout-2' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutLayout2Import + parentRoute: typeof LayoutImport + } + '/posts/$postId': { + id: '/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof PostsPostIdImport + parentRoute: typeof PostsImport + } + '/users/$userId': { + id: '/users/$userId' + path: '/$userId' + fullPath: '/users/$userId' + preLoaderRoute: typeof UsersUserIdImport + parentRoute: typeof UsersImport + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof PostsIndexImport + parentRoute: typeof PostsImport + } + '/users/': { + id: '/users/' + path: '/' + fullPath: '/users/' + preLoaderRoute: typeof UsersIndexImport + parentRoute: typeof UsersImport + } + '/_layout/_layout-2/layout-a': { + id: '/_layout/_layout-2/layout-a' + path: '/layout-a' + fullPath: '/layout-a' + preLoaderRoute: typeof LayoutLayout2LayoutAImport + parentRoute: typeof LayoutLayout2Import + } + '/_layout/_layout-2/layout-b': { + id: '/_layout/_layout-2/layout-b' + path: '/layout-b' + fullPath: '/layout-b' + preLoaderRoute: typeof LayoutLayout2LayoutBImport + parentRoute: typeof LayoutLayout2Import + } + '/posts/$postId/deep': { + id: '/posts/$postId/deep' + path: '/posts/$postId/deep' + fullPath: '/posts/$postId/deep' + preLoaderRoute: typeof PostsPostIdDeepImport + parentRoute: typeof rootRoute + } + } +} + +// Create and export the route tree + +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +interface UsersRouteChildren { + UsersUserIdRoute: typeof UsersUserIdRoute + UsersIndexRoute: typeof UsersIndexRoute +} + +const UsersRouteChildren: UsersRouteChildren = { + UsersUserIdRoute: UsersUserIdRoute, + UsersIndexRoute: UsersIndexRoute, +} + +const UsersRouteWithChildren = UsersRoute._addFileChildren(UsersRouteChildren) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/deferred': typeof DeferredRoute + '/posts': typeof PostsRouteWithChildren + '/redirect': typeof RedirectRoute + '/users': typeof UsersRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts/': typeof PostsIndexRoute + '/users/': typeof UsersIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/deferred': typeof DeferredRoute + '/redirect': typeof RedirectRoute + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts': typeof PostsIndexRoute + '/users': typeof UsersIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/deferred': typeof DeferredRoute + '/posts': typeof PostsRouteWithChildren + '/redirect': typeof RedirectRoute + '/users': typeof UsersRouteWithChildren + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts/': typeof PostsIndexRoute + '/users/': typeof UsersIndexRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/deferred' + | '/posts' + | '/redirect' + | '/users' + | '/posts/$postId' + | '/users/$userId' + | '/posts/' + | '/users/' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/deferred' + | '/redirect' + | '/posts/$postId' + | '/users/$userId' + | '/posts' + | '/users' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + id: + | '__root__' + | '/' + | '/_layout' + | '/deferred' + | '/posts' + | '/redirect' + | '/users' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/users/$userId' + | '/posts/' + | '/users/' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + | '/posts/$postId/deep' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + DeferredRoute: typeof DeferredRoute + PostsRoute: typeof PostsRouteWithChildren + RedirectRoute: typeof RedirectRoute + UsersRoute: typeof UsersRouteWithChildren + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + DeferredRoute: DeferredRoute, + PostsRoute: PostsRouteWithChildren, + RedirectRoute: RedirectRoute, + UsersRoute: UsersRouteWithChildren, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/_layout", + "/deferred", + "/posts", + "/redirect", + "/users", + "/posts/$postId/deep" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_layout": { + "filePath": "_layout.tsx", + "children": [ + "/_layout/_layout-2" + ] + }, + "/deferred": { + "filePath": "deferred.tsx" + }, + "/posts": { + "filePath": "posts.tsx", + "children": [ + "/posts/$postId", + "/posts/" + ] + }, + "/redirect": { + "filePath": "redirect.tsx" + }, + "/users": { + "filePath": "users.tsx", + "children": [ + "/users/$userId", + "/users/" + ] + }, + "/_layout/_layout-2": { + "filePath": "_layout/_layout-2.tsx", + "parent": "/_layout", + "children": [ + "/_layout/_layout-2/layout-a", + "/_layout/_layout-2/layout-b" + ] + }, + "/posts/$postId": { + "filePath": "posts.$postId.tsx", + "parent": "/posts" + }, + "/users/$userId": { + "filePath": "users.$userId.tsx", + "parent": "/users" + }, + "/posts/": { + "filePath": "posts.index.tsx", + "parent": "/posts" + }, + "/users/": { + "filePath": "users.index.tsx", + "parent": "/users" + }, + "/_layout/_layout-2/layout-a": { + "filePath": "_layout/_layout-2/layout-a.tsx", + "parent": "/_layout/_layout-2" + }, + "/_layout/_layout-2/layout-b": { + "filePath": "_layout/_layout-2/layout-b.tsx", + "parent": "/_layout/_layout-2" + }, + "/posts/$postId/deep": { + "filePath": "posts_.$postId.deep.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/e2e/start/basic/app/router.tsx b/e2e/start/basic/app/router.tsx new file mode 100644 index 0000000000..0886de701f --- /dev/null +++ b/e2e/start/basic/app/router.tsx @@ -0,0 +1,21 @@ +import { createRouter as createTanStackRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' +import { DefaultCatchBoundary } from './components/DefaultCatchBoundary' +import { NotFound } from './components/NotFound' + +export function createRouter() { + const router = createTanStackRouter({ + routeTree, + defaultPreload: 'intent', + defaultErrorComponent: DefaultCatchBoundary, + defaultNotFoundComponent: () => , + }) + + return router +} + +declare module '@tanstack/react-router' { + interface Register { + router: ReturnType + } +} diff --git a/e2e/start/basic/app/routes/__root.tsx b/e2e/start/basic/app/routes/__root.tsx new file mode 100644 index 0000000000..4ef88cfb27 --- /dev/null +++ b/e2e/start/basic/app/routes/__root.tsx @@ -0,0 +1,139 @@ +import { + Link, + Outlet, + ScrollRestoration, + createRootRoute, +} from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' +import { Body, Head, Html, Meta, Scripts } from '@tanstack/start' +import * as React from 'react' +import { DefaultCatchBoundary } from '~/components/DefaultCatchBoundary' +import { NotFound } from '~/components/NotFound' +// @ts-expect-error +import appCss from '~/styles/app.css?url' +import { seo } from '~/utils/seo' + +export const Route = createRootRoute({ + meta: () => [ + { + charSet: 'utf-8', + }, + { + name: 'viewport', + content: 'width=device-width, initial-scale=1', + }, + ...seo({ + title: + 'TanStack Start | Type-Safe, Client-First, Full-Stack React Framework', + description: `TanStack Start is a type-safe, client-first, full-stack React framework. `, + }), + ], + links: () => [ + { rel: 'stylesheet', href: appCss }, + { + rel: 'apple-touch-icon', + sizes: '180x180', + href: '/apple-touch-icon.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '32x32', + href: '/favicon-32x32.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '16x16', + href: '/favicon-16x16.png', + }, + { rel: 'manifest', href: '/site.webmanifest', color: '#fffff' }, + { rel: 'icon', href: '/favicon.ico' }, + ], + errorComponent: (props) => { + return ( + + + + ) + }, + notFoundComponent: () => , + component: RootComponent, +}) + +function RootComponent() { + return ( + + + + ) +} + +function RootDocument({ children }: { children: React.ReactNode }) { + return ( + + + + + +
+ + Home + {' '} + + Posts + {' '} + + Users + {' '} + + Layout + {' '} + + Deferred + {' '} + + This Route Does Not Exist + +
+
+ {children} + + + + + + ) +} diff --git a/e2e/start/basic/app/routes/_layout.tsx b/e2e/start/basic/app/routes/_layout.tsx new file mode 100644 index 0000000000..02ddbb1cd9 --- /dev/null +++ b/e2e/start/basic/app/routes/_layout.tsx @@ -0,0 +1,16 @@ +import { Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a layout
+
+ +
+
+ ) +} diff --git a/e2e/start/basic/app/routes/_layout/_layout-2.tsx b/e2e/start/basic/app/routes/_layout/_layout-2.tsx new file mode 100644 index 0000000000..3b7dbf2903 --- /dev/null +++ b/e2e/start/basic/app/routes/_layout/_layout-2.tsx @@ -0,0 +1,34 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a nested layout
+
+ + Layout A + + + Layout B + +
+
+ +
+
+ ) +} diff --git a/e2e/start/basic/app/routes/_layout/_layout-2/layout-a.tsx b/e2e/start/basic/app/routes/_layout/_layout-2/layout-a.tsx new file mode 100644 index 0000000000..61e19b4d9f --- /dev/null +++ b/e2e/start/basic/app/routes/_layout/_layout-2/layout-a.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-a')({ + component: LayoutAComponent, +}) + +function LayoutAComponent() { + return
I'm layout A!
+} diff --git a/e2e/start/basic/app/routes/_layout/_layout-2/layout-b.tsx b/e2e/start/basic/app/routes/_layout/_layout-2/layout-b.tsx new file mode 100644 index 0000000000..cceed1fb9a --- /dev/null +++ b/e2e/start/basic/app/routes/_layout/_layout-2/layout-b.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-b')({ + component: LayoutBComponent, +}) + +function LayoutBComponent() { + return
I'm layout B!
+} diff --git a/e2e/start/basic/app/routes/api.users.ts b/e2e/start/basic/app/routes/api.users.ts new file mode 100644 index 0000000000..3b11af9b9d --- /dev/null +++ b/e2e/start/basic/app/routes/api.users.ts @@ -0,0 +1,17 @@ +import { json } from '@tanstack/start' +import { createAPIFileRoute } from '@tanstack/start/api' +import axios from 'redaxios' +import type { User } from '../utils/users' + +export const Route = createAPIFileRoute('/api/users')({ + GET: async ({ request }) => { + console.info('Fetching users... @', request.url) + const res = await axios.get>( + 'https://jsonplaceholder.typicode.com/users', + ) + + const list = res.data.slice(0, 10) + + return json(list.map((u) => ({ id: u.id, name: u.name, email: u.email }))) + }, +}) diff --git a/e2e/start/basic/app/routes/api/users.$id.ts b/e2e/start/basic/app/routes/api/users.$id.ts new file mode 100644 index 0000000000..849d45e8d0 --- /dev/null +++ b/e2e/start/basic/app/routes/api/users.$id.ts @@ -0,0 +1,24 @@ +import { json } from '@tanstack/start' +import { createAPIFileRoute } from '@tanstack/start/api' +import axios from 'redaxios' +import type { User } from '../../utils/users' + +export const Route = createAPIFileRoute('/api/users/$id')({ + GET: async ({ request, params }) => { + console.info(`Fetching users by id=${params.id}... @`, request.url) + try { + const res = await axios.get( + 'https://jsonplaceholder.typicode.com/users/' + params.id, + ) + + return json({ + id: res.data.id, + name: res.data.name, + email: res.data.email, + }) + } catch (e) { + console.error(e) + return json({ error: 'User not found' }, { status: 404 }) + } + }, +}) diff --git a/e2e/start/basic/app/routes/deferred.tsx b/e2e/start/basic/app/routes/deferred.tsx new file mode 100644 index 0000000000..8627bc6ba6 --- /dev/null +++ b/e2e/start/basic/app/routes/deferred.tsx @@ -0,0 +1,60 @@ +import { Await, createFileRoute, defer } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' +import { Suspense, useState } from 'react' + +const personServerFn = createServerFn('GET', (name: string) => { + return { name, randomNumber: Math.floor(Math.random() * 100) } +}) + +const slowServerFn = createServerFn('GET', async (name: string) => { + await new Promise((r) => setTimeout(r, 1000)) + return { name, randomNumber: Math.floor(Math.random() * 100) } +}) + +export const Route = createFileRoute('/deferred')({ + loader: async () => { + return { + deferredStuff: defer( + new Promise((r) => + setTimeout(() => r('Hello deferred!'), 2000), + ), + ), + deferredPerson: defer(slowServerFn('Tanner Linsley')), + person: await personServerFn('John Doe'), + } + }, + component: Deferred, +}) + +function Deferred() { + const [count, setCount] = useState(0) + const { deferredStuff, deferredPerson, person } = Route.useLoaderData() + + return ( +
+
+ {person.name} - {person.randomNumber} +
+ Loading person...
}> + ( +
+ {data.name} - {data.randomNumber} +
+ )} + /> + + Loading stuff...}> +

{data}

} + /> +
+
Count: {count}
+
+ +
+ + ) +} diff --git a/e2e/start/basic/app/routes/index.tsx b/e2e/start/basic/app/routes/index.tsx new file mode 100644 index 0000000000..09a907cb18 --- /dev/null +++ b/e2e/start/basic/app/routes/index.tsx @@ -0,0 +1,13 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!!!

+
+ ) +} diff --git a/e2e/start/basic/app/routes/posts.$postId.tsx b/e2e/start/basic/app/routes/posts.$postId.tsx new file mode 100644 index 0000000000..ad8e267703 --- /dev/null +++ b/e2e/start/basic/app/routes/posts.$postId.tsx @@ -0,0 +1,38 @@ +import { ErrorComponent, Link, createFileRoute } from '@tanstack/react-router' +import { fetchPost } from '../utils/posts' +import type { ErrorComponentProps } from '@tanstack/react-router' +import { NotFound } from '~/components/NotFound' + +export const Route = createFileRoute('/posts/$postId')({ + loader: async ({ params: { postId } }) => fetchPost(postId), + errorComponent: PostErrorComponent as any, + component: PostComponent, + notFoundComponent: () => { + return Post not found + }, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const post = Route.useLoaderData() + + return ( +
+

{post.title}

+
{post.body}
+ + Deep View + +
+ ) +} diff --git a/e2e/start/basic/app/routes/posts.index.tsx b/e2e/start/basic/app/routes/posts.index.tsx new file mode 100644 index 0000000000..5b5f08f95b --- /dev/null +++ b/e2e/start/basic/app/routes/posts.index.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/e2e/start/basic/app/routes/posts.tsx b/e2e/start/basic/app/routes/posts.tsx new file mode 100644 index 0000000000..ae49032459 --- /dev/null +++ b/e2e/start/basic/app/routes/posts.tsx @@ -0,0 +1,38 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { fetchPosts } from '../utils/posts' + +export const Route = createFileRoute('/posts')({ + loader: async () => fetchPosts(), + component: PostsComponent, +}) + +function PostsComponent() { + const posts = Route.useLoaderData() + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+
+ +
+ ) +} diff --git a/e2e/start/basic/app/routes/posts_.$postId.deep.tsx b/e2e/start/basic/app/routes/posts_.$postId.deep.tsx new file mode 100644 index 0000000000..992a354d22 --- /dev/null +++ b/e2e/start/basic/app/routes/posts_.$postId.deep.tsx @@ -0,0 +1,26 @@ +import { Link, createFileRoute } from '@tanstack/react-router' +import { fetchPost } from '../utils/posts' +import { PostErrorComponent } from './posts.$postId' + +export const Route = createFileRoute('/posts/$postId/deep')({ + loader: async ({ params: { postId } }) => fetchPost(postId), + errorComponent: PostErrorComponent as any, + component: PostDeepComponent, +}) + +function PostDeepComponent() { + const post = Route.useLoaderData() + + return ( +
+ + ← All Posts + +

{post.title}

+
{post.body}
+
+ ) +} diff --git a/e2e/start/basic/app/routes/redirect.tsx b/e2e/start/basic/app/routes/redirect.tsx new file mode 100644 index 0000000000..c9286de13d --- /dev/null +++ b/e2e/start/basic/app/routes/redirect.tsx @@ -0,0 +1,9 @@ +import { createFileRoute, redirect } from '@tanstack/react-router' + +export const Route = createFileRoute('/redirect')({ + beforeLoad: async () => { + throw redirect({ + to: '/posts', + }) + }, +}) diff --git a/e2e/start/basic/app/routes/users.$userId.tsx b/e2e/start/basic/app/routes/users.$userId.tsx new file mode 100644 index 0000000000..573377c758 --- /dev/null +++ b/e2e/start/basic/app/routes/users.$userId.tsx @@ -0,0 +1,36 @@ +import { ErrorComponent, createFileRoute } from '@tanstack/react-router' +import axios from 'redaxios' +import type { ErrorComponentProps } from '@tanstack/react-router' +import { DEPLOY_URL, type User } from '~/utils/users' +import { NotFound } from '~/components/NotFound' + +export const Route = createFileRoute('/users/$userId')({ + loader: async ({ params: { userId } }) => { + return await axios + .get(DEPLOY_URL + '/api/users/' + userId) + .then((r) => r.data) + .catch(() => { + throw new Error('Failed to fetch user') + }) + }, + errorComponent: UserErrorComponent, + component: UserComponent, + notFoundComponent: () => { + return User not found + }, +}) + +export function UserErrorComponent({ error }: ErrorComponentProps) { + return +} + +function UserComponent() { + const user = Route.useLoaderData() + + return ( +
+

{user.name}

+
{user.email}
+
+ ) +} diff --git a/e2e/start/basic/app/routes/users.index.tsx b/e2e/start/basic/app/routes/users.index.tsx new file mode 100644 index 0000000000..b6b0ee67fb --- /dev/null +++ b/e2e/start/basic/app/routes/users.index.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/users/')({ + component: UsersIndexComponent, +}) + +function UsersIndexComponent() { + return
Select a user.
+} diff --git a/e2e/start/basic/app/routes/users.tsx b/e2e/start/basic/app/routes/users.tsx new file mode 100644 index 0000000000..77a6fbe864 --- /dev/null +++ b/e2e/start/basic/app/routes/users.tsx @@ -0,0 +1,47 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import axios from 'redaxios' +import { DEPLOY_URL, type User } from '../utils/users' + +export const Route = createFileRoute('/users')({ + loader: async () => { + return await axios + .get>(DEPLOY_URL + '/api/users') + .then((r) => r.data) + .catch(() => { + throw new Error('Failed to fetch users') + }) + }, + component: UsersComponent, +}) + +function UsersComponent() { + const users = Route.useLoaderData() + + return ( +
+
    + {[ + ...users, + { id: 'i-do-not-exist', name: 'Non-existent User', email: '' }, + ].map((user) => { + return ( +
  • + +
    {user.name}
    + +
  • + ) + })} +
+
+ +
+ ) +} diff --git a/e2e/start/basic/app/ssr.tsx b/e2e/start/basic/app/ssr.tsx new file mode 100644 index 0000000000..62572579ac --- /dev/null +++ b/e2e/start/basic/app/ssr.tsx @@ -0,0 +1,12 @@ +import { + createStartHandler, + defaultStreamHandler, +} from '@tanstack/start/server' +import { getRouterManifest } from '@tanstack/start/router-manifest' + +import { createRouter } from './router' + +export default createStartHandler({ + createRouter, + getRouterManifest, +})(defaultStreamHandler) diff --git a/e2e/start/basic/app/styles/app.css b/e2e/start/basic/app/styles/app.css new file mode 100644 index 0000000000..d6426ccb72 --- /dev/null +++ b/e2e/start/basic/app/styles/app.css @@ -0,0 +1,14 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + html, + body { + @apply text-gray-900 bg-gray-50 dark:bg-gray-950 dark:text-gray-200; + } + + .using-mouse * { + outline: none !important; + } +} diff --git a/e2e/start/basic/app/utils/posts.tsx b/e2e/start/basic/app/utils/posts.tsx new file mode 100644 index 0000000000..4bf4b8c564 --- /dev/null +++ b/e2e/start/basic/app/utils/posts.tsx @@ -0,0 +1,32 @@ +import { notFound } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPost = createServerFn('GET', async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + console.error(err) + if (err.status === 404) { + throw notFound() + } + throw err + }) + + return post +}) + +export const fetchPosts = createServerFn('GET', async () => { + console.info('Fetching posts...') + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +}) diff --git a/e2e/start/basic/app/utils/seo.ts b/e2e/start/basic/app/utils/seo.ts new file mode 100644 index 0000000000..d18ad84b74 --- /dev/null +++ b/e2e/start/basic/app/utils/seo.ts @@ -0,0 +1,33 @@ +export const seo = ({ + title, + description, + keywords, + image, +}: { + title: string + description?: string + image?: string + keywords?: string +}) => { + const tags = [ + { title }, + { name: 'description', content: description }, + { name: 'keywords', content: keywords }, + { name: 'twitter:title', content: title }, + { name: 'twitter:description', content: description }, + { name: 'twitter:creator', content: '@tannerlinsley' }, + { name: 'twitter:site', content: '@tannerlinsley' }, + { name: 'og:type', content: 'website' }, + { name: 'og:title', content: title }, + { name: 'og:description', content: description }, + ...(image + ? [ + { name: 'twitter:image', content: image }, + { name: 'twitter:card', content: 'summary_large_image' }, + { name: 'og:image', content: image }, + ] + : []), + ] + + return tags +} diff --git a/e2e/start/basic/app/utils/users.tsx b/e2e/start/basic/app/utils/users.tsx new file mode 100644 index 0000000000..b810f455fe --- /dev/null +++ b/e2e/start/basic/app/utils/users.tsx @@ -0,0 +1,7 @@ +export type User = { + id: number + name: string + email: string +} + +export const DEPLOY_URL = 'http://localhost:3000' diff --git a/e2e/start/basic/package.json b/e2e/start/basic/package.json new file mode 100644 index 0000000000..f133bdf6f0 --- /dev/null +++ b/e2e/start/basic/package.json @@ -0,0 +1,41 @@ +{ + "name": "tanstack-start-e2e-basic", + "private": true, + "sideEffects": false, + "type": "module", + "scripts": { + "dev": "vinxi dev", + "build": "vinxi build", + "start": "vinxi start", + "lint": "prettier --check '**/*' --ignore-unknown && eslint --ext .ts,.tsx ./app", + "format": "prettier --write '**/*' --ignore-unknown", + "test:e2e": "playwright test --project=chromium" + }, + "dependencies": { + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", + "@vitejs/plugin-react": "^4.3.1", + "isbot": "^5.1.17", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "redaxios": "^0.5.1", + "tailwind-merge": "^2.5.2", + "vinxi": "0.4.3" + }, + "devDependencies": { + "@playwright/test": "^1.47.1", + "@types/node": "^22.5.4", + "@types/react": "^18.2.65", + "@types/react-dom": "^18.2.21", + "@vitejs/plugin-react": "^4.3.1", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", + "prettier": "^3.3.3", + "tailwindcss": "^3.4.11", + "typescript": "^5.6.2", + "vite": "^5.4.5", + "vite-tsconfig-paths": "^5.0.1" + } +} diff --git a/examples/react/start-basic/playwright.config.ts b/e2e/start/basic/playwright.config.ts similarity index 100% rename from examples/react/start-basic/playwright.config.ts rename to e2e/start/basic/playwright.config.ts diff --git a/e2e/start/basic/postcss.config.cjs b/e2e/start/basic/postcss.config.cjs new file mode 100644 index 0000000000..8e638a6bcd --- /dev/null +++ b/e2e/start/basic/postcss.config.cjs @@ -0,0 +1,7 @@ +module.exports = { + plugins: [ + require('tailwindcss/nesting'), + require('tailwindcss'), + require('autoprefixer'), + ], +} diff --git a/e2e/start/basic/public/android-chrome-192x192.png b/e2e/start/basic/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..09c8324f8c6781bc90fcf5dd38e0702bd5f171f3 GIT binary patch literal 29964 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
-$E{6Mn6vA;gG82)4;e zhGGCFjJl#2EwBabi41ltsC;BfuH1nlv$4|qRTTK!cpC0y44#jBSE_QMLOLp;2x^El2&4=a1;&5>*gs=e zPrY|CmC5jR7U(m|4iDvqWrjHIOgf9I%-3;!bH%ss8XX0=;N$fUGHWCxZIKv1Ntk+2 zU4=>YUHH(6o6$6`HGUa!T920UCu)fi#Bm)-b5qxRpj1#R?L2#(WW2%P<3tzgF=ceCVJEq~kA3p=z z+b4J>63GjVWCg@M1!PxYZ^jsj2*m#=6P1K9j}j$m$5htsJ%PCNc79Dih( z?$oI^72p!=2|R>8i^>;9o%PYr4=i&W1ThGLk$X3I2ldi}WRwld!j#GAIs7(40R9tFlvvWPXKT9%1F(EhVZ*z zkXpp|n-oBYNrsost!haygWpfD3S~lBq-YV!7$_PWBlS{^Ri`!zZ>jitX$e)dP_k_Q zVDYjux-q+X)BEw`=M$D)5u!z+un-U2{)cje+vb|lRRHS2;*}?ff}~x!Pc(I?abi0b zo$_OhtLYmqQ}#~`1;DfrmCCT1phA@Jm+``*Xi!sfE$}p|Qq%&*L@6O}KN9=1_Vu7Q z7V6ltKMV@$1#}_rqI(|y`KgSWlpxE>yLddO-f7pqT3o;JgLt_$k}&+Obi@_daNCG7 zy-7+i`U*fh&ir=AJOS|lfKXn1Y)v0N^1jC~xjwuot+V?_9o}x30O!uES|TBIyF3Z2oAAwo)FX# z-f}E7xh5p|%AKocl)$#ONw{vqS=hTTyn`l@OA_)zoH+9tXgj(j33RF7kG=w^9$j$x z2L!}@0NlkV9Z|r$=KK!xj(HAg$6uJ14H6$z8tb_1q>krJ3{4!S)-9*;dacffx936u zo8UI#9NYN<0rs}U@kQ~D1rx?;Ta)GI_}|n%Rgu2h>BR;i(vJnk`GSM>PrMr&pE@4& zw|{g>$cwS@_Men0%;lVa;1qy*cfrbw1SHMboH?~&H_kfwr>L#=p^q>8?qIUNl}?nx z-CGHJobYfM;CD!Glf$GCI4O1J21A7xrRGlk=FgA5GNftRG&`k=GBNIcupoIc&J^qOLU&Hm>x^e>$ zvbr%a&)NXQDF+Y8b){n-Sv{}GE72SRfl$%sp@<<_%qBeER>kC@aR7iF2C{LiXA8OD_3CxW# zguxo~KB)F%VU;G(`nmcHuQ+P62zs%=-#C{-hhY&h2hAg(fSC3(2w<)E?6i{Eg)csi zXPcYdwYm=Y@rEgYdeY19#5+=XtOsx;mH5!-?rb;49@qrHy092urgFiiSz-$3YTiT- zFymam{#}SovS4iVV7lmDQHpPXEUqGzi1AI2IWur}RxB^foS9~9hsX<&CP8R~j8k&_jomDx!V$^0^R% zswk6^OA!JRMbqk;+o+07w?ACKlll?C>?jW#h3|`=J1GGf5#&?*B==M_*Rda2N8lbY z2A{v=6pTuFgN@*;a}Ejxpw4{!yQt4dTs@G*7mAWHN!e8cZK(&8dSXZkQBrXnFQVg$ z!=XmVO2!CgoZ$NosAx+hBczG*1SVsk*GDnv<-$%P8nknC15`9lmV|_&wW)ow{?G5i zSBG*~{fPyrcwt*9f`8B{fa=gC-@#%>;AR0#atR%idp9VA&YN=x6vFJjq?uqV6$Ak!}}UrKx(67Nl7Jak@O1=7Yuk}0FiUvjxgtc0?RI9@&}`x{C+ zSwfvC1&vIu`BLC2pjO%)OGH>Ir6cfECXLVacH+r-^H8zLER|4-gH8d|LoK@<(^5Hn z0uo;>MSwyIpb2IokIv7h0FqabYA@S%MwL;3H1;P+FgXJg8^Sdef?m{TWB!9N zb&14;@41~6zECp;-<>-P6`8|Z38Ck09JC5Rom_H1#$@*3qr$R$*MLu+obSztgu^n9TU{jb0B<7T*0?tcI=?h zHX-pJwGww7cN|8%dPAiJ|DcTlOb>eTw{en_!Zi-?AzFqpuuu_@h6_;CON|t+66ixy z(#I7#161M3EM364H;Ig0RGT)Hoe}wkI5-to>YNydg%zUP5qR85o8DR85Zn8+zS{pBSwJ8`hYWVwxezP95^Na!sY63+Vv9?MWu#FaJj z*?+n!-bh(VCCDbLsl0=pRV}jmNjp+n2A?`))L~qt zWlvDx5XuhbiGy_7sZ+cp2u&? zgu#vH#L=BvjFQOk#4U}Ulwgd4Jsw?38_})K3*5cv-6&~WqEdx)G|xYz6(CTAn=w5F zTrDJ)34tj>_=`iA!nd+0;o4YY>{wqnUGj61SZ>LDNVt&DM&U}L&m`?3+0Qg^|82~ zd#1STGLKV2gn@pK7zPZ$o|M2kIJo<~lMjA&$5t!fR0=>3z2pYepbFE|4n7HqzZJqQ zsR$R>vGNL|;6$9yIs6cgR|%q|wfPMkyD>ng^C$^tQOy|%f&6HkmsfB~I5Ckoob>8& z9NdwX_|72EvUEQBZH4PlIPXoT0DRCdy%95H2A`G^e(*Sf)Zna5Z>45;22h_*Aci45_jjS@#>2C*n21m@ksjmmQnzHpf0@yS4&E$ z0q=l7y#Q+BFm=ciBrz}SdplXPh9=?+A1|z#n7^ zkFH#R)guw2L;2dbv;w$6^ZiI=I`JNn!U;m+Q~|tC0CQqtPm=KKu*DX}Xu-6a$;RPY zqyllA?|Tof5Y$!*co_n}OgnhOaqxUyC!Srp6v=zk9?BA)(D%2z0`T$q==B&Y>d=4! zn&99ZDey4|I9!hxjI~6i;CLR0a!+B(C8z*BLh1D4JH3qA5!n9v4xV=k2S2PzVRugf zo!6X=-Z!yKm-J|VRe*%yqN$p>AuLS^EOZ3sN}$dWs1gDVuAw!sLvaeDmu+xQcWF#>S0Mzc>quTs{)iT*fd)$m&UO| zVv>}Y?>MNI67O~dY6LJ-3LN3?+rg6#S2#+WV5bH7~%td>R%OL1Vc`18*Q6}3AHJtvKiE*iB&4VK^i9jI0X`pzh`lS z^yt?KuGNmf`fO56mk@Z&5$L4uNr8eR@T*J;&%;3>okwp@pnnj^SN#rMZ`7JPBN)1a b=FG literal 0 HcmV?d00001 diff --git a/e2e/start/basic/public/android-chrome-512x512.png b/e2e/start/basic/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..11d626ea3d00fddd52861bf0af5554a92fc30d69 GIT binary patch literal 109271 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 Ef@mE(_W%F@ literal 0 HcmV?d00001 diff --git a/e2e/start/basic/public/apple-touch-icon.png b/e2e/start/basic/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9423cc02c40ea066d2a061cdcdf621c0718cb1 GIT binary patch literal 27246 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⪼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 N002ovPDHLkV1k;v<;Va4 literal 0 HcmV?d00001 diff --git a/e2e/start/basic/public/favicon-16x16.png b/e2e/start/basic/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..e3389b00443d602a249b48ae0e21e333971c9c1e GIT binary patch literal 832 zcmV-G1Hb%Px%`bk7VR5(v%lW%BSRTRK~=OuZ4FYhI3vvy^4t8t~UDHGBS#44K%hSiDal!9Nj zeb^RZ;3&cb72F3w6s4;uUA7>Cf>1=Z56;a$8wZ=NKHtq z33GDV=_|V0E(QPTEB1=edhG{{=-+C??RQi7*e9J7YBnZR+PppIKjA8EV+}Yt`zH<7 zGR%O5D3|Ef)99hUXu19=Cxaki@6toZIe&u-X0(oDFRl|x6P7Bwc^mB(i9|gOY)Jh6DaPkmt z8Wr!@TP1|RPlYRlJe^eRB0K(gn91{(=zi{HrkpHIflw8&q%;+U!V&dFPYDQAWJh@< zwcklN9VEX?vG;}75GqCepKC25M^xV%BcR%A8c!)S5k4P0$g}HS#lA6zy`~K@9&EX4 zOrvr%_1U2dp~gg6G*;&`Jag*?jZTJv+$S`*#)zme_SFWOCm*F4U&hJihqxAu;8z}x zWv7!u>YKRa3PUJQs55wC)i4QvFOAV0jW$?1cnUJJ7Vl?z_ge{9q!zpfCJxd8vJ>-ql@0&`Bttn1~4;s>8tax%hr(^q#A_*wqAv( zh(T&>hJD?OhiP$sxAzkd1W1^EHV1WL3xM&6$*HhG@|8}OjPpG{+!;GC>w;ha0000< KMNUMnLSTZGXp5cz literal 0 HcmV?d00001 diff --git a/e2e/start/basic/public/favicon-32x32.png b/e2e/start/basic/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..900c77d444c9b31e6144b6ac0bb1ab7bb7ca767f GIT binary patch literal 2115 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 literal 0 HcmV?d00001 diff --git a/e2e/start/basic/public/favicon.ico b/e2e/start/basic/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1a1751676f7e22811b1070572093996c93c87617 GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/e2e/start/basic/public/favicon.png b/e2e/start/basic/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e77bc06091ade4496525a09d8900675afcf03f0 GIT binary patch literal 1507 zcmV<91swW`P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$^O-V#SR9Fd>S3Qp$MHK9ro!#4$ zEP@L_hX|b@f=!*_42h6mKu7{)4)_U*>1>0bCkUj;Z1X!7 zHe(Ew^Oi(|bW3J~xu+)XbtFF?4>!7TH$>(D_atUQVEj(8fGvYu2NF33#JZX>)(Vj8 zIi@z>Glt?6t~;Lf(|C8F>;WF^8F<^s7Scr!sZc01uB?HMHoL5+FZ>B(g+r-)?Sn)#3Zal#?G@GAwO5U27MpGOlC2+_saA)rl zP-<@-n~;PQOlm|Hi<+W;NdR;5+=zADzM&?!+CPD36=cGwHy6!D^vPEHG?rO`K>G|M z3FposX{yT132wuw1OR3Um_5JoKB#6?!QgBupIT;?YIr;WcpmuCE>S75mZid+ens#E zGPuYjiG0UNNVWu=f!Id^?9)34)eIpu-`j_~W0iAQzK(}XYc_!;87Tk~?4tq|h=2(! zuq0HCiNK)@+ocCKR3q1REdUju>HdYxd>JX@%oOibg+J~D+}rhz54D!NfC{h-OYk{M zkzmFtdrL@nL0bm8nF@pob1CeLC>12ef#in-Bzv2!wi)Iuwq24)`AH}|0QNQ^f$KHv z?5PBPo1*#GAuAk+Poe`?UJ>mP`@~d4a(103j0lwUx@_+$#B&VC%7r>#2$HIiD`KO8L|s3Yp%M}BT0;NJDzZtPnx=4%enhU zhW*pNN0t`^4%5MKAR+}=^Q?QeqQ`>bbK zf+-ji$Uz8V0?LpX@kh`k%DL)GCA2=@SJNKg56Wh>>pr=7{1PmHqG|~=AdLV3002ov JPDHLkV1ivgp)>#h literal 0 HcmV?d00001 diff --git a/e2e/start/basic/public/site.webmanifest b/e2e/start/basic/public/site.webmanifest new file mode 100644 index 0000000000..fa99de77db --- /dev/null +++ b/e2e/start/basic/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/e2e/start/basic/tailwind.config.cjs b/e2e/start/basic/tailwind.config.cjs new file mode 100644 index 0000000000..75fe25dbf7 --- /dev/null +++ b/e2e/start/basic/tailwind.config.cjs @@ -0,0 +1,4 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./app/**/*.{js,ts,jsx,tsx}'], +} diff --git a/examples/react/start-basic/tests/app.spec.ts b/e2e/start/basic/tests/app.spec.ts similarity index 100% rename from examples/react/start-basic/tests/app.spec.ts rename to e2e/start/basic/tests/app.spec.ts diff --git a/e2e/start/basic/tsconfig.json b/e2e/start/basic/tsconfig.json new file mode 100644 index 0000000000..d1b5b77660 --- /dev/null +++ b/e2e/start/basic/tsconfig.json @@ -0,0 +1,22 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "target": "ES2022", + "allowJs": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "paths": { + "~/*": ["./app/*"] + }, + "noEmit": true + } +} diff --git a/e2e/start/clerk-basic/.env b/e2e/start/clerk-basic/.env new file mode 100644 index 0000000000..952a04d217 --- /dev/null +++ b/e2e/start/clerk-basic/.env @@ -0,0 +1,2 @@ +CLERK_PUBLISHABLE_KEY=[YOUR_CLERK_PUBLISHABLE_KEY] +CLERK_SECRET_KEY=[YOUR_CLERK_SECRET_KEY] \ No newline at end of file diff --git a/e2e/start/clerk-basic/.gitignore b/e2e/start/clerk-basic/.gitignore new file mode 100644 index 0000000000..b15fed94e2 --- /dev/null +++ b/e2e/start/clerk-basic/.gitignore @@ -0,0 +1,22 @@ +node_modules +package-lock.json +yarn.lock + +!.env +.DS_Store +.cache +.vercel +.output +.vinxi + +/build/ +/api/ +/server/build +/public/build +.vinxi +# Sentry Config File +.env.sentry-build-plugin +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/e2e/start/clerk-basic/.prettierignore b/e2e/start/clerk-basic/.prettierignore new file mode 100644 index 0000000000..fd1b50a539 --- /dev/null +++ b/e2e/start/clerk-basic/.prettierignore @@ -0,0 +1,5 @@ +**/api +**/build +**/public +pnpm-lock.yaml +routeTree.gen.ts \ No newline at end of file diff --git a/e2e/start/clerk-basic/.prettierrc b/e2e/start/clerk-basic/.prettierrc new file mode 100644 index 0000000000..aaf3357d4a --- /dev/null +++ b/e2e/start/clerk-basic/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "semi": false, + "trailingComma": "all" +} diff --git a/e2e/start/clerk-basic/app.config.ts b/e2e/start/clerk-basic/app.config.ts new file mode 100644 index 0000000000..d1d9b04ded --- /dev/null +++ b/e2e/start/clerk-basic/app.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from '@tanstack/start/config' +import tsConfigPaths from 'vite-tsconfig-paths' + +export default defineConfig({ + vite: { + plugins: () => [ + tsConfigPaths({ + projects: ['./tsconfig.json'], + }), + ], + }, +}) diff --git a/e2e/start/clerk-basic/app/client.tsx b/e2e/start/clerk-basic/app/client.tsx new file mode 100644 index 0000000000..f16ba73f62 --- /dev/null +++ b/e2e/start/clerk-basic/app/client.tsx @@ -0,0 +1,7 @@ +import { hydrateRoot } from 'react-dom/client' +import { StartClient } from '@tanstack/start' +import { createRouter } from './router' + +const router = createRouter() + +hydrateRoot(document.getElementById('root')!, ) diff --git a/e2e/start/clerk-basic/app/components/DefaultCatchBoundary.tsx b/e2e/start/clerk-basic/app/components/DefaultCatchBoundary.tsx new file mode 100644 index 0000000000..15f316681c --- /dev/null +++ b/e2e/start/clerk-basic/app/components/DefaultCatchBoundary.tsx @@ -0,0 +1,53 @@ +import { + ErrorComponent, + Link, + rootRouteId, + useMatch, + useRouter, +} from '@tanstack/react-router' +import type { ErrorComponentProps } from '@tanstack/react-router' + +export function DefaultCatchBoundary({ error }: ErrorComponentProps) { + const router = useRouter() + const isRoot = useMatch({ + strict: false, + select: (state) => state.id === rootRouteId, + }) + + console.error(error) + + return ( +
+ +
+ + {isRoot ? ( + + Home + + ) : ( + { + e.preventDefault() + window.history.back() + }} + > + Go Back + + )} +
+
+ ) +} diff --git a/e2e/start/clerk-basic/app/components/NotFound.tsx b/e2e/start/clerk-basic/app/components/NotFound.tsx new file mode 100644 index 0000000000..7b54fa5680 --- /dev/null +++ b/e2e/start/clerk-basic/app/components/NotFound.tsx @@ -0,0 +1,25 @@ +import { Link } from '@tanstack/react-router' + +export function NotFound({ children }: { children?: any }) { + return ( +
+
+ {children ||

The page you are looking for does not exist.

} +
+

+ + + Start Over + +

+
+ ) +} diff --git a/e2e/start/clerk-basic/app/routeTree.gen.ts b/e2e/start/clerk-basic/app/routeTree.gen.ts new file mode 100644 index 0000000000..833f1e4bc9 --- /dev/null +++ b/e2e/start/clerk-basic/app/routeTree.gen.ts @@ -0,0 +1,232 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as AuthedImport } from './routes/_authed' +import { Route as IndexImport } from './routes/index' +import { Route as AuthedPostsImport } from './routes/_authed/posts' +import { Route as AuthedPostsIndexImport } from './routes/_authed/posts.index' +import { Route as AuthedProfileSplatImport } from './routes/_authed/profile.$' +import { Route as AuthedPostsPostIdImport } from './routes/_authed/posts.$postId' + +// Create/Update Routes + +const AuthedRoute = AuthedImport.update({ + id: '/_authed', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const AuthedPostsRoute = AuthedPostsImport.update({ + path: '/posts', + getParentRoute: () => AuthedRoute, +} as any) + +const AuthedPostsIndexRoute = AuthedPostsIndexImport.update({ + path: '/', + getParentRoute: () => AuthedPostsRoute, +} as any) + +const AuthedProfileSplatRoute = AuthedProfileSplatImport.update({ + path: '/profile/$', + getParentRoute: () => AuthedRoute, +} as any) + +const AuthedPostsPostIdRoute = AuthedPostsPostIdImport.update({ + path: '/$postId', + getParentRoute: () => AuthedPostsRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/_authed': { + id: '/_authed' + path: '' + fullPath: '' + preLoaderRoute: typeof AuthedImport + parentRoute: typeof rootRoute + } + '/_authed/posts': { + id: '/_authed/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof AuthedPostsImport + parentRoute: typeof AuthedImport + } + '/_authed/posts/$postId': { + id: '/_authed/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof AuthedPostsPostIdImport + parentRoute: typeof AuthedPostsImport + } + '/_authed/profile/$': { + id: '/_authed/profile/$' + path: '/profile/$' + fullPath: '/profile/$' + preLoaderRoute: typeof AuthedProfileSplatImport + parentRoute: typeof AuthedImport + } + '/_authed/posts/': { + id: '/_authed/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof AuthedPostsIndexImport + parentRoute: typeof AuthedPostsImport + } + } +} + +// Create and export the route tree + +interface AuthedPostsRouteChildren { + AuthedPostsPostIdRoute: typeof AuthedPostsPostIdRoute + AuthedPostsIndexRoute: typeof AuthedPostsIndexRoute +} + +const AuthedPostsRouteChildren: AuthedPostsRouteChildren = { + AuthedPostsPostIdRoute: AuthedPostsPostIdRoute, + AuthedPostsIndexRoute: AuthedPostsIndexRoute, +} + +const AuthedPostsRouteWithChildren = AuthedPostsRoute._addFileChildren( + AuthedPostsRouteChildren, +) + +interface AuthedRouteChildren { + AuthedPostsRoute: typeof AuthedPostsRouteWithChildren + AuthedProfileSplatRoute: typeof AuthedProfileSplatRoute +} + +const AuthedRouteChildren: AuthedRouteChildren = { + AuthedPostsRoute: AuthedPostsRouteWithChildren, + AuthedProfileSplatRoute: AuthedProfileSplatRoute, +} + +const AuthedRouteWithChildren = + AuthedRoute._addFileChildren(AuthedRouteChildren) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof AuthedRouteWithChildren + '/posts': typeof AuthedPostsRouteWithChildren + '/posts/$postId': typeof AuthedPostsPostIdRoute + '/profile/$': typeof AuthedProfileSplatRoute + '/posts/': typeof AuthedPostsIndexRoute +} + +export interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof AuthedRouteWithChildren + '/posts/$postId': typeof AuthedPostsPostIdRoute + '/profile/$': typeof AuthedProfileSplatRoute + '/posts': typeof AuthedPostsIndexRoute +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof IndexRoute + '/_authed': typeof AuthedRouteWithChildren + '/_authed/posts': typeof AuthedPostsRouteWithChildren + '/_authed/posts/$postId': typeof AuthedPostsPostIdRoute + '/_authed/profile/$': typeof AuthedProfileSplatRoute + '/_authed/posts/': typeof AuthedPostsIndexRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '' | '/posts' | '/posts/$postId' | '/profile/$' | '/posts/' + fileRoutesByTo: FileRoutesByTo + to: '/' | '' | '/posts/$postId' | '/profile/$' | '/posts' + id: + | '__root__' + | '/' + | '/_authed' + | '/_authed/posts' + | '/_authed/posts/$postId' + | '/_authed/profile/$' + | '/_authed/posts/' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AuthedRoute: typeof AuthedRouteWithChildren +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AuthedRoute: AuthedRouteWithChildren, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/_authed" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_authed": { + "filePath": "_authed.tsx", + "children": [ + "/_authed/posts", + "/_authed/profile/$" + ] + }, + "/_authed/posts": { + "filePath": "_authed/posts.tsx", + "parent": "/_authed", + "children": [ + "/_authed/posts/$postId", + "/_authed/posts/" + ] + }, + "/_authed/posts/$postId": { + "filePath": "_authed/posts.$postId.tsx", + "parent": "/_authed/posts" + }, + "/_authed/profile/$": { + "filePath": "_authed/profile.$.tsx", + "parent": "/_authed" + }, + "/_authed/posts/": { + "filePath": "_authed/posts.index.tsx", + "parent": "/_authed/posts" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/e2e/start/clerk-basic/app/router.tsx b/e2e/start/clerk-basic/app/router.tsx new file mode 100644 index 0000000000..0886de701f --- /dev/null +++ b/e2e/start/clerk-basic/app/router.tsx @@ -0,0 +1,21 @@ +import { createRouter as createTanStackRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' +import { DefaultCatchBoundary } from './components/DefaultCatchBoundary' +import { NotFound } from './components/NotFound' + +export function createRouter() { + const router = createTanStackRouter({ + routeTree, + defaultPreload: 'intent', + defaultErrorComponent: DefaultCatchBoundary, + defaultNotFoundComponent: () => , + }) + + return router +} + +declare module '@tanstack/react-router' { + interface Register { + router: ReturnType + } +} diff --git a/e2e/start/clerk-basic/app/routes/__root.tsx b/e2e/start/clerk-basic/app/routes/__root.tsx new file mode 100644 index 0000000000..faf5f22ab7 --- /dev/null +++ b/e2e/start/clerk-basic/app/routes/__root.tsx @@ -0,0 +1,140 @@ +/// +import { + Link, + Outlet, + ScrollRestoration, + createRootRoute, +} from '@tanstack/react-router' +import { + ClerkProvider, + SignInButton, + SignedIn, + SignedOut, + UserButton, +} from '@clerk/tanstack-start' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' +import { + Body, + Head, + Html, + Meta, + Scripts, + createServerFn, +} from '@tanstack/start' +import * as React from 'react' +import { getAuth } from '@clerk/tanstack-start/server' +import { DefaultCatchBoundary } from '~/components/DefaultCatchBoundary.js' +import { NotFound } from '~/components/NotFound.js' +import appCss from '~/styles/app.css?url' + +const fetchClerkAuth = createServerFn('GET', async (_, ctx) => { + const user = await getAuth(ctx.request) + + return { + user, + } +}) + +export const Route = createRootRoute({ + meta: () => [ + { + charSet: 'utf-8', + }, + { + name: 'viewport', + content: 'width=device-width, initial-scale=1', + }, + ], + links: () => [ + { rel: 'stylesheet', href: appCss }, + { + rel: 'apple-touch-icon', + sizes: '180x180', + href: '/apple-touch-icon.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '32x32', + href: '/favicon-32x32.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '16x16', + href: '/favicon-16x16.png', + }, + { rel: 'manifest', href: '/site.webmanifest', color: '#fffff' }, + { rel: 'icon', href: '/favicon.ico' }, + ], + beforeLoad: async () => { + const { user } = await fetchClerkAuth() + + return { + user, + } + }, + errorComponent: (props) => { + return ( + + + + ) + }, + notFoundComponent: () => , + component: RootComponent, +}) + +function RootComponent() { + return ( + + + + + + ) +} + +function RootDocument({ children }: { children: React.ReactNode }) { + return ( + + + + + +
+ + Home + {' '} + + Posts + +
+ + + + + + +
+
+
+ {children} + + + + + + ) +} diff --git a/e2e/start/clerk-basic/app/routes/_authed.tsx b/e2e/start/clerk-basic/app/routes/_authed.tsx new file mode 100644 index 0000000000..9f133c47a0 --- /dev/null +++ b/e2e/start/clerk-basic/app/routes/_authed.tsx @@ -0,0 +1,21 @@ +import { createFileRoute } from '@tanstack/react-router' +import { SignIn } from '@clerk/tanstack-start' + +export const Route = createFileRoute('/_authed')({ + beforeLoad: ({ context }) => { + if (!context.user.userId) { + throw new Error('Not authenticated') + } + }, + errorComponent: ({ error }) => { + if (error.message === 'Not authenticated') { + return ( +
+ +
+ ) + } + + throw error + }, +}) diff --git a/e2e/start/clerk-basic/app/routes/_authed/posts.$postId.tsx b/e2e/start/clerk-basic/app/routes/_authed/posts.$postId.tsx new file mode 100644 index 0000000000..d6d12b3702 --- /dev/null +++ b/e2e/start/clerk-basic/app/routes/_authed/posts.$postId.tsx @@ -0,0 +1,28 @@ +import { ErrorComponent, createFileRoute } from '@tanstack/react-router' +import type { ErrorComponentProps } from '@tanstack/react-router' +import { NotFound } from '~/components/NotFound.js' +import { fetchPost } from '~/utils/posts.js' + +export const Route = createFileRoute('/_authed/posts/$postId')({ + loader: ({ params: { postId } }) => fetchPost(postId), + errorComponent: PostErrorComponent as any, + component: PostComponent, + notFoundComponent: () => { + return Post not found + }, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const post = Route.useLoaderData() + + return ( +
+

{post.title}

+
{post.body}
+
+ ) +} diff --git a/e2e/start/clerk-basic/app/routes/_authed/posts.index.tsx b/e2e/start/clerk-basic/app/routes/_authed/posts.index.tsx new file mode 100644 index 0000000000..ea9e667e54 --- /dev/null +++ b/e2e/start/clerk-basic/app/routes/_authed/posts.index.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_authed/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/e2e/start/clerk-basic/app/routes/_authed/posts.tsx b/e2e/start/clerk-basic/app/routes/_authed/posts.tsx new file mode 100644 index 0000000000..86c8ef4138 --- /dev/null +++ b/e2e/start/clerk-basic/app/routes/_authed/posts.tsx @@ -0,0 +1,38 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { fetchPosts } from '~/utils/posts.js' + +export const Route = createFileRoute('/_authed/posts')({ + loader: () => fetchPosts(), + component: PostsComponent, +}) + +function PostsComponent() { + const posts = Route.useLoaderData() + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+
+ +
+ ) +} diff --git a/e2e/start/clerk-basic/app/routes/_authed/profile.$.tsx b/e2e/start/clerk-basic/app/routes/_authed/profile.$.tsx new file mode 100644 index 0000000000..208a38e230 --- /dev/null +++ b/e2e/start/clerk-basic/app/routes/_authed/profile.$.tsx @@ -0,0 +1,38 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { fetchPosts } from '~/utils/posts.js' + +export const Route = createFileRoute('/_authed/profile/$')({ + loader: () => fetchPosts(), + component: PostsComponent, +}) + +function PostsComponent() { + const posts = Route.useLoaderData() + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+
+ +
+ ) +} diff --git a/e2e/start/clerk-basic/app/routes/index.tsx b/e2e/start/clerk-basic/app/routes/index.tsx new file mode 100644 index 0000000000..6ae388a178 --- /dev/null +++ b/e2e/start/clerk-basic/app/routes/index.tsx @@ -0,0 +1,13 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Hello Clerk!

+
+ ) +} diff --git a/e2e/start/clerk-basic/app/ssr.tsx b/e2e/start/clerk-basic/app/ssr.tsx new file mode 100644 index 0000000000..73d185feed --- /dev/null +++ b/e2e/start/clerk-basic/app/ssr.tsx @@ -0,0 +1,16 @@ +import { + createStartHandler, + defaultStreamHandler, +} from '@tanstack/start/server' +import { getRouterManifest } from '@tanstack/start/router-manifest' +import { createClerkHandler } from '@clerk/tanstack-start/server' +import { createRouter } from './router' + +const handler = createStartHandler({ + createRouter, + getRouterManifest, +}) + +const clerkHandler = createClerkHandler(handler) + +export default clerkHandler(defaultStreamHandler) diff --git a/e2e/start/clerk-basic/app/styles/app.css b/e2e/start/clerk-basic/app/styles/app.css new file mode 100644 index 0000000000..d6426ccb72 --- /dev/null +++ b/e2e/start/clerk-basic/app/styles/app.css @@ -0,0 +1,14 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + html, + body { + @apply text-gray-900 bg-gray-50 dark:bg-gray-950 dark:text-gray-200; + } + + .using-mouse * { + outline: none !important; + } +} diff --git a/e2e/start/clerk-basic/app/utils/posts.ts b/e2e/start/clerk-basic/app/utils/posts.ts new file mode 100644 index 0000000000..00fc9ae143 --- /dev/null +++ b/e2e/start/clerk-basic/app/utils/posts.ts @@ -0,0 +1,33 @@ +import { notFound } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/start' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPost = createServerFn('GET', async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + console.error(err) + if (err.status === 404) { + throw notFound() + } + throw err + }) + + return post +}) + +export const fetchPosts = createServerFn('GET', async () => { + console.info('Fetching posts...') + await new Promise((r) => setTimeout(r, 1000)) + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +}) diff --git a/e2e/start/clerk-basic/app/utils/seo.ts b/e2e/start/clerk-basic/app/utils/seo.ts new file mode 100644 index 0000000000..d18ad84b74 --- /dev/null +++ b/e2e/start/clerk-basic/app/utils/seo.ts @@ -0,0 +1,33 @@ +export const seo = ({ + title, + description, + keywords, + image, +}: { + title: string + description?: string + image?: string + keywords?: string +}) => { + const tags = [ + { title }, + { name: 'description', content: description }, + { name: 'keywords', content: keywords }, + { name: 'twitter:title', content: title }, + { name: 'twitter:description', content: description }, + { name: 'twitter:creator', content: '@tannerlinsley' }, + { name: 'twitter:site', content: '@tannerlinsley' }, + { name: 'og:type', content: 'website' }, + { name: 'og:title', content: title }, + { name: 'og:description', content: description }, + ...(image + ? [ + { name: 'twitter:image', content: image }, + { name: 'twitter:card', content: 'summary_large_image' }, + { name: 'og:image', content: image }, + ] + : []), + ] + + return tags +} diff --git a/e2e/start/clerk-basic/package.json b/e2e/start/clerk-basic/package.json new file mode 100644 index 0000000000..103ca03880 --- /dev/null +++ b/e2e/start/clerk-basic/package.json @@ -0,0 +1,44 @@ +{ + "name": "tanstack-start-e2e-clerk-basic", + "private": true, + "sideEffects": false, + "type": "module", + "scripts": { + "dev": "vinxi dev", + "build": "vinxi build", + "start": "vinxi start", + "lint": "prettier --check '**/*' --ignore-unknown && eslint --ext .ts,.tsx ./app", + "format": "prettier --write '**/*' --ignore-unknown", + "test:e2e": "exit 0; playwright test --project=chromium" + }, + "dependencies": { + "@clerk/tanstack-start": "0.4.1", + "@tanstack/react-router": "^1.57.15", + "@tanstack/router-devtools": "^1.57.15", + "@tanstack/router-plugin": "^1.57.15", + "@tanstack/start": "^1.57.15", + "@vitejs/plugin-react": "^4.3.1", + "dotenv": "^16.4.5", + "isbot": "^5.1.17", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "redaxios": "^0.5.1", + "remix-auth-form": "^1.5.0", + "tailwind-merge": "^2.5.2", + "vinxi": "0.4.3" + }, + "devDependencies": { + "@playwright/test": "^1.47.1", + "@types/node": "^22.5.4", + "@types/react": "^18.2.65", + "@types/react-dom": "^18.2.21", + "@vitejs/plugin-react": "^4.3.1", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", + "prettier": "^3.3.3", + "tailwindcss": "^3.4.11", + "typescript": "^5.6.2", + "vite": "^5.4.5", + "vite-tsconfig-paths": "^5.0.1" + } +} diff --git a/examples/react/start-clerk-basic/playwright.config.ts b/e2e/start/clerk-basic/playwright.config.ts similarity index 100% rename from examples/react/start-clerk-basic/playwright.config.ts rename to e2e/start/clerk-basic/playwright.config.ts diff --git a/e2e/start/clerk-basic/postcss.config.cjs b/e2e/start/clerk-basic/postcss.config.cjs new file mode 100644 index 0000000000..8e638a6bcd --- /dev/null +++ b/e2e/start/clerk-basic/postcss.config.cjs @@ -0,0 +1,7 @@ +module.exports = { + plugins: [ + require('tailwindcss/nesting'), + require('tailwindcss'), + require('autoprefixer'), + ], +} diff --git a/e2e/start/clerk-basic/public/android-chrome-192x192.png b/e2e/start/clerk-basic/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..09c8324f8c6781bc90fcf5dd38e0702bd5f171f3 GIT binary patch literal 29964 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
-$E{6Mn6vA;gG82)4;e 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 b=FG literal 0 HcmV?d00001 diff --git a/e2e/start/clerk-basic/public/android-chrome-512x512.png b/e2e/start/clerk-basic/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..11d626ea3d00fddd52861bf0af5554a92fc30d69 GIT binary patch literal 109271 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 Ef@mE(_W%F@ literal 0 HcmV?d00001 diff --git a/e2e/start/clerk-basic/public/apple-touch-icon.png b/e2e/start/clerk-basic/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9423cc02c40ea066d2a061cdcdf621c0718cb1 GIT binary patch literal 27246 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⪼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 N002ovPDHLkV1k;v<;Va4 literal 0 HcmV?d00001 diff --git a/e2e/start/clerk-basic/public/favicon-16x16.png b/e2e/start/clerk-basic/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..e3389b00443d602a249b48ae0e21e333971c9c1e GIT binary patch literal 832 zcmV-G1Hb%Px%`bk7VR5(v%lW%BSRTRK~=OuZ4FYhI3vvy^4t8t~UDHGBS#44K%hSiDal!9Nj zeb^RZ;3&cb72F3w6s4;uUA7>Cf>1=Z56;a$8wZ=NKHtq z33GDV=_|V0E(QPTEB1=edhG{{=-+C??RQi7*e9J7YBnZR+PppIKjA8EV+}Yt`zH<7 zGR%O5D3|Ef)99hUXu19=Cxaki@6toZIe&u-X0(oDFRl|x6P7Bwc^mB(i9|gOY)Jh6DaPkmt z8Wr!@TP1|RPlYRlJe^eRB0K(gn91{(=zi{HrkpHIflw8&q%;+U!V&dFPYDQAWJh@< zwcklN9VEX?vG;}75GqCepKC25M^xV%BcR%A8c!)S5k4P0$g}HS#lA6zy`~K@9&EX4 zOrvr%_1U2dp~gg6G*;&`Jag*?jZTJv+$S`*#)zme_SFWOCm*F4U&hJihqxAu;8z}x zWv7!u>YKRa3PUJQs55wC)i4QvFOAV0jW$?1cnUJJ7Vl?z_ge{9q!zpfCJxd8vJ>-ql@0&`Bttn1~4;s>8tax%hr(^q#A_*wqAv( zh(T&>hJD?OhiP$sxAzkd1W1^EHV1WL3xM&6$*HhG@|8}OjPpG{+!;GC>w;ha0000< KMNUMnLSTZGXp5cz literal 0 HcmV?d00001 diff --git a/e2e/start/clerk-basic/public/favicon-32x32.png b/e2e/start/clerk-basic/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..900c77d444c9b31e6144b6ac0bb1ab7bb7ca767f GIT binary patch literal 2115 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 literal 0 HcmV?d00001 diff --git a/e2e/start/clerk-basic/public/favicon.ico b/e2e/start/clerk-basic/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1a1751676f7e22811b1070572093996c93c87617 GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/e2e/start/clerk-basic/public/favicon.png b/e2e/start/clerk-basic/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e77bc06091ade4496525a09d8900675afcf03f0 GIT binary patch literal 1507 zcmV<91swW`P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$^O-V#SR9Fd>S3Qp$MHK9ro!#4$ zEP@L_hX|b@f=!*_42h6mKu7{)4)_U*>1>0bCkUj;Z1X!7 zHe(Ew^Oi(|bW3J~xu+)XbtFF?4>!7TH$>(D_atUQVEj(8fGvYu2NF33#JZX>)(Vj8 zIi@z>Glt?6t~;Lf(|C8F>;WF^8F<^s7Scr!sZc01uB?HMHoL5+FZ>B(g+r-)?Sn)#3Zal#?G@GAwO5U27MpGOlC2+_saA)rl zP-<@-n~;PQOlm|Hi<+W;NdR;5+=zADzM&?!+CPD36=cGwHy6!D^vPEHG?rO`K>G|M z3FposX{yT132wuw1OR3Um_5JoKB#6?!QgBupIT;?YIr;WcpmuCE>S75mZid+ens#E zGPuYjiG0UNNVWu=f!Id^?9)34)eIpu-`j_~W0iAQzK(}XYc_!;87Tk~?4tq|h=2(! zuq0HCiNK)@+ocCKR3q1REdUju>HdYxd>JX@%oOibg+J~D+}rhz54D!NfC{h-OYk{M zkzmFtdrL@nL0bm8nF@pob1CeLC>12ef#in-Bzv2!wi)Iuwq24)`AH}|0QNQ^f$KHv z?5PBPo1*#GAuAk+Poe`?UJ>mP`@~d4a(103j0lwUx@_+$#B&VC%7r>#2$HIiD`KO8L|s3Yp%M}BT0;NJDzZtPnx=4%enhU zhW*pNN0t`^4%5MKAR+}=^Q?QeqQ`>bbK zf+-ji$Uz8V0?LpX@kh`k%DL)GCA2=@SJNKg56Wh>>pr=7{1PmHqG|~=AdLV3002ov JPDHLkV1ivgp)>#h literal 0 HcmV?d00001 diff --git a/e2e/start/clerk-basic/public/site.webmanifest b/e2e/start/clerk-basic/public/site.webmanifest new file mode 100644 index 0000000000..fa99de77db --- /dev/null +++ b/e2e/start/clerk-basic/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/e2e/start/clerk-basic/tailwind.config.cjs b/e2e/start/clerk-basic/tailwind.config.cjs new file mode 100644 index 0000000000..75fe25dbf7 --- /dev/null +++ b/e2e/start/clerk-basic/tailwind.config.cjs @@ -0,0 +1,4 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./app/**/*.{js,ts,jsx,tsx}'], +} diff --git a/examples/react/start-clerk-basic/tests/app.spec.ts b/e2e/start/clerk-basic/tests/app.spec.ts similarity index 100% rename from examples/react/start-clerk-basic/tests/app.spec.ts rename to e2e/start/clerk-basic/tests/app.spec.ts diff --git a/e2e/start/clerk-basic/tsconfig.json b/e2e/start/clerk-basic/tsconfig.json new file mode 100644 index 0000000000..d1b5b77660 --- /dev/null +++ b/e2e/start/clerk-basic/tsconfig.json @@ -0,0 +1,22 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "target": "ES2022", + "allowJs": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "paths": { + "~/*": ["./app/*"] + }, + "noEmit": true + } +} diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index b6d446b5d4..88909e86fc 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -6,8 +6,7 @@ "dev": "vite --port=3001", "build": "vite build && tsc --noEmit", "serve": "vite preview", - "start": "vite", - "test:e2e": "playwright test --project=chromium" + "start": "vite" }, "dependencies": { "@tanstack/react-router": "^1.57.18", @@ -20,7 +19,6 @@ "zod": "^3.23.8" }, "devDependencies": { - "@playwright/test": "^1.47.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index b7e7bbba15..13f1c4070f 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -6,8 +6,7 @@ "dev": "vite --port=3001", "build": "vite build && tsc --noEmit", "serve": "vite preview", - "start": "vite", - "test:e2e": "playwright test --project=chromium" + "start": "vite" }, "dependencies": { "@tanstack/react-query": "^5.56.2", @@ -22,7 +21,6 @@ "zod": "^3.23.8" }, "devDependencies": { - "@playwright/test": "^1.47.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index b542f8ba7a..64691ec94d 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -6,8 +6,7 @@ "dev": "vite --port=3001", "build": "vite build && tsc --noEmit", "serve": "vite preview", - "start": "vite", - "test:e2e": "playwright test --project=chromium" + "start": "vite" }, "dependencies": { "@tanstack/react-query": "^5.56.2", @@ -19,7 +18,6 @@ "redaxios": "^0.5.1" }, "devDependencies": { - "@playwright/test": "^1.47.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 7c1f1a6ce1..ecb964282a 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -6,8 +6,7 @@ "dev": "vite --port=3001", "build": "vite build && tsc --noEmit", "serve": "vite preview", - "start": "vite", - "test:e2e": "playwright test --project=chromium" + "start": "vite" }, "dependencies": { "@tanstack/react-router": "^1.57.18", @@ -21,7 +20,6 @@ "zod": "^3.23.8" }, "devDependencies": { - "@playwright/test": "^1.47.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index eed1c50e79..8392d7b2c8 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -20,7 +20,6 @@ "zod": "^3.23.8" }, "devDependencies": { - "@playwright/test": "^1.47.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 281f0ed8d6..83f6834bde 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -6,8 +6,7 @@ "dev": "vite --port=3001", "build": "vite build && tsc --noEmit", "serve": "vite preview", - "start": "vite", - "test:e2e": "playwright test --project=chromium" + "start": "vite" }, "dependencies": { "@tanstack/react-router": "^1.57.18", @@ -17,7 +16,6 @@ "redaxios": "^0.5.1" }, "devDependencies": { - "@playwright/test": "^1.47.1", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.3.1", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index de6873770e..f2b7d6921b 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -1,5 +1,5 @@ { - "name": "tanstack-router-example-react-start-basic-auth", + "name": "tanstack-start-example-basic-auth", "private": true, "sideEffects": false, "type": "module", @@ -9,8 +9,7 @@ "start": "vinxi start", "lint": "prettier --check '**/*' --ignore-unknown && eslint --ext .ts,.tsx ./app", "format": "prettier --write '**/*' --ignore-unknown", - "prisma-generate": "prisma generate", - "test:e2e": "pnpm run prisma-generate && playwright test --project=chromium" + "prisma-generate": "prisma generate" }, "dependencies": { "@prisma/client": "5.19.1", @@ -30,8 +29,6 @@ "vinxi": "0.4.3" }, "devDependencies": { - "@playwright/test": "^1.47.1", - "@replayio/playwright": "^3.1.8", "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index c69bec7071..1a5fd41e9a 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -1,5 +1,5 @@ { - "name": "tanstack-router-example-react-start-basic-counter", + "name": "tanstack-start-example-basic-counter", "private": true, "sideEffects": false, "type": "module", diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 7b7fbabb16..6c2237adb3 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -1,5 +1,5 @@ { - "name": "tanstack-router-example-react-start-basic-react-query", + "name": "tanstack-start-example-basic-react-query", "private": true, "sideEffects": false, "type": "module", @@ -8,8 +8,7 @@ "build": "vinxi build", "start": "vinxi start", "lint": "prettier --check '**/*' --ignore-unknown && eslint --ext .ts,.tsx ./app", - "format": "prettier --write '**/*' --ignore-unknown", - "test:e2e": "playwright test --project=chromium" + "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { "@tanstack/react-query": "^5.56.2", @@ -28,7 +27,6 @@ "vinxi": "0.4.3" }, "devDependencies": { - "@playwright/test": "^1.47.1", "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 63e9164387..72207f62ed 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -1,5 +1,5 @@ { - "name": "tanstack-router-example-react-start-basic-rsc", + "name": "tanstack-start-example-basic-rsc", "private": true, "sideEffects": false, "type": "module", diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index f8d6539de1..79e7b65c49 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -1,5 +1,5 @@ { - "name": "tanstack-router-example-react-start-basic", + "name": "tanstack-start-example-basic", "private": true, "sideEffects": false, "type": "module", @@ -8,8 +8,7 @@ "build": "vinxi build", "start": "vinxi start", "lint": "prettier --check '**/*' --ignore-unknown && eslint --ext .ts,.tsx ./app", - "format": "prettier --write '**/*' --ignore-unknown", - "test:e2e": "playwright test --project=chromium" + "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { "@tanstack/react-router": "^1.57.18", @@ -25,7 +24,6 @@ "vinxi": "0.4.3" }, "devDependencies": { - "@playwright/test": "^1.47.1", "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 0830469e6e..49599a240a 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -1,5 +1,5 @@ { - "name": "tanstack-router-example-react-start-clerk-basic", + "name": "tanstack-start-example-clerk-basic", "private": true, "sideEffects": false, "type": "module", @@ -8,8 +8,7 @@ "build": "vinxi build", "start": "vinxi start", "lint": "prettier --check '**/*' --ignore-unknown && eslint --ext .ts,.tsx ./app", - "format": "prettier --write '**/*' --ignore-unknown", - "test:e2e": "exit 0; playwright test --project=chromium" + "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { "@clerk/tanstack-start": "0.4.1", @@ -28,8 +27,6 @@ "vinxi": "0.4.3" }, "devDependencies": { - "@playwright/test": "^1.47.1", - "@replayio/playwright": "^3.1.8", "@types/node": "^22.5.4", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.21", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index ef2473bbc9..88dce48db1 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -1,5 +1,5 @@ { - "name": "tanstack-router-example-react-start-trello-trellaux", + "name": "tanstack-start-example-convex-trellaux", "private": true, "sideEffects": false, "type": "module", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 6fc569cf86..86cf1636ba 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -1,5 +1,5 @@ { - "name": "tanstack-router-example-react-start-supabase-basic", + "name": "tanstack-start-example-supabase-basic", "version": "1.0.0", "description": "", "main": "index.js", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 19a0d75e66..a85b0446c4 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -1,5 +1,5 @@ { - "name": "tanstack-router-example-react-start-trellaux", + "name": "tanstack-start-example-trellaux", "private": true, "sideEffects": false, "type": "module", diff --git a/package.json b/package.json index b1d2f8d135..7d88a2f785 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,9 @@ "test": "pnpm run test:ci", "test:pr": "nx affected --targets=test:eslint,test:unit,test:e2e,test:types,test:build,build", "test:ci": "nx run-many --targets=test:eslint,test:unit,test:e2e,test:types,test:build,build", - "test:eslint": "nx affected --target=test:eslint --exclude=examples/**", + "test:eslint": "nx affected --target=test:eslint --exclude=examples/**,e2e/**", "test:format": "pnpm run prettier --check", - "test:unit": "nx affected --target=test:unit --exclude=examples/**", + "test:unit": "nx affected --target=test:unit --exclude=examples/**,e2e/**", "test:unit:dev": "pnpm run test:unit && nx watch --all -- pnpm run test:unit", "test:build": "nx affected --target=test:build --exclude=examples/**", "test:types": "nx affected --target=test:types --exclude=examples/**", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddf22ec1e7..fe3c63b82b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -108,6 +108,586 @@ importers: specifier: ^1.6.0 version: 1.6.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.31.1) + e2e/react-router/basic: + dependencies: + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + devDependencies: + '@playwright/test': + specifier: ^1.47.1 + version: 1.47.1 + '@types/react': + specifier: ^18.2.47 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.2.18 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + vite: + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) + + e2e/react-router/basic-file-based: + dependencies: + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../../../packages/router-plugin + immer: + specifier: ^10.1.1 + version: 10.1.1 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + zod: + specifier: ^3.23.8 + version: 3.23.8 + devDependencies: + '@playwright/test': + specifier: ^1.47.1 + version: 1.47.1 + '@types/react': + specifier: ^18.2.47 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.2.18 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + vite: + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) + + e2e/react-router/basic-react-query: + dependencies: + '@tanstack/react-query': + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) + '@tanstack/react-query-devtools': + specifier: ^5.56.2 + version: 5.56.2(@tanstack/react-query@5.56.2(react@18.3.1))(react@18.3.1) + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + devDependencies: + '@playwright/test': + specifier: ^1.47.1 + version: 1.47.1 + '@types/react': + specifier: ^18.2.47 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.2.18 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + vite: + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) + + e2e/react-router/basic-react-query-file-based: + dependencies: + '@tanstack/react-query': + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) + '@tanstack/react-query-devtools': + specifier: ^5.56.2 + version: 5.56.2(@tanstack/react-query@5.56.2(react@18.3.1))(react@18.3.1) + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../../../packages/router-plugin + immer: + specifier: ^10.1.1 + version: 10.1.1 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + zod: + specifier: ^3.23.8 + version: 3.23.8 + devDependencies: + '@playwright/test': + specifier: ^1.47.1 + version: 1.47.1 + '@types/react': + specifier: ^18.2.47 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.2.18 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + vite: + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) + + e2e/react-router/basic-virtual-file-based: + dependencies: + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../../../packages/router-plugin + '@tanstack/virtual-file-routes': + specifier: workspace:* + version: link:../../../packages/virtual-file-routes + immer: + specifier: ^10.1.1 + version: 10.1.1 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + zod: + specifier: ^3.23.8 + version: 3.23.8 + devDependencies: + '@playwright/test': + specifier: ^1.47.1 + version: 1.47.1 + '@types/react': + specifier: ^18.2.47 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.2.18 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + vite: + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) + + e2e/start/basic: + dependencies: + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../../../packages/router-plugin + '@tanstack/start': + specifier: workspace:* + version: link:../../../packages/start + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + isbot: + specifier: ^5.1.17 + version: 5.1.17 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + tailwind-merge: + specifier: ^2.5.2 + version: 2.5.2 + vinxi: + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + devDependencies: + '@playwright/test': + specifier: ^1.47.1 + version: 1.47.1 + '@types/node': + specifier: ^22.5.4 + version: 22.5.4 + '@types/react': + specifier: ^18.2.65 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.2.21 + version: 18.3.0 + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) + postcss: + specifier: ^8.4.47 + version: 8.4.47 + prettier: + specifier: ^3.3.3 + version: 3.3.3 + tailwindcss: + specifier: ^3.4.11 + version: 3.4.11 + typescript: + specifier: ^5.6.2 + version: 5.6.2 + vite: + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) + vite-tsconfig-paths: + specifier: ^5.0.1 + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + + e2e/start/basic-auth: + dependencies: + '@prisma/client': + specifier: 5.19.1 + version: 5.19.1(prisma@5.19.1) + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../../../packages/router-plugin + '@tanstack/start': + specifier: workspace:* + version: link:../../../packages/start + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + isbot: + specifier: ^5.1.17 + version: 5.1.17 + prisma: + specifier: ^5.19.1 + version: 5.19.1 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + remix-auth-form: + specifier: ^1.5.0 + version: 1.5.0(@remix-run/server-runtime@2.11.2(typescript@5.6.2))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2))(@remix-run/server-runtime@2.11.2(typescript@5.6.2))) + tailwind-merge: + specifier: ^2.5.2 + version: 2.5.2 + vinxi: + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + devDependencies: + '@playwright/test': + specifier: ^1.47.1 + version: 1.47.1 + '@types/node': + specifier: ^22.5.4 + version: 22.5.4 + '@types/react': + specifier: ^18.2.65 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.2.21 + version: 18.3.0 + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) + postcss: + specifier: ^8.4.47 + version: 8.4.47 + prettier: + specifier: ^3.3.3 + version: 3.3.3 + tailwindcss: + specifier: ^3.4.11 + version: 3.4.11 + typescript: + specifier: ^5.6.2 + version: 5.6.2 + vite: + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) + vite-tsconfig-paths: + specifier: ^5.0.1 + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + + e2e/start/basic-react-query: + dependencies: + '@tanstack/react-query': + specifier: ^5.56.2 + version: 5.56.2(react@18.3.1) + '@tanstack/react-query-devtools': + specifier: ^5.56.2 + version: 5.56.2(@tanstack/react-query@5.56.2(react@18.3.1))(react@18.3.1) + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/react-router-with-query': + specifier: workspace:* + version: link:../../../packages/react-router-with-query + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../../../packages/router-plugin + '@tanstack/start': + specifier: workspace:* + version: link:../../../packages/start + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + isbot: + specifier: ^5.1.17 + version: 5.1.17 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + tailwind-merge: + specifier: ^2.5.2 + version: 2.5.2 + vinxi: + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + devDependencies: + '@playwright/test': + specifier: ^1.47.1 + version: 1.47.1 + '@types/node': + specifier: ^22.5.4 + version: 22.5.4 + '@types/react': + specifier: ^18.2.65 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.2.21 + version: 18.3.0 + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) + postcss: + specifier: ^8.4.47 + version: 8.4.47 + prettier: + specifier: ^3.3.3 + version: 3.3.3 + tailwindcss: + specifier: ^3.4.11 + version: 3.4.11 + typescript: + specifier: ^5.6.2 + version: 5.6.2 + vite: + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) + vite-tsconfig-paths: + specifier: ^5.0.1 + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + + e2e/start/basic-rsc: + dependencies: + '@babel/plugin-syntax-typescript': + specifier: ^7.25.4 + version: 7.25.4(@babel/core@7.25.2) + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../../../packages/router-plugin + '@tanstack/start': + specifier: workspace:* + version: link:../../../packages/start + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + tailwind-merge: + specifier: ^2.5.2 + version: 2.5.2 + vinxi: + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + devDependencies: + '@types/react': + specifier: ^18.2.65 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.2.21 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) + postcss: + specifier: ^8.4.47 + version: 8.4.47 + prettier: + specifier: ^3.3.3 + version: 3.3.3 + tailwindcss: + specifier: ^3.4.11 + version: 3.4.11 + typescript: + specifier: ^5.6.2 + version: 5.6.2 + vite: + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) + vite-tsconfig-paths: + specifier: ^5.0.1 + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + + e2e/start/clerk-basic: + dependencies: + '@clerk/tanstack-start': + specifier: 0.4.1 + version: 0.4.1(@tanstack/react-router@packages+react-router)(@tanstack/start@packages+start)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../../../packages/router-plugin + '@tanstack/start': + specifier: workspace:* + version: link:../../../packages/start + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + isbot: + specifier: ^5.1.17 + version: 5.1.17 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + remix-auth-form: + specifier: ^1.5.0 + version: 1.5.0(@remix-run/server-runtime@2.11.2(typescript@5.6.2))(remix-auth@3.7.0(@remix-run/react@2.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2))(@remix-run/server-runtime@2.11.2(typescript@5.6.2))) + tailwind-merge: + specifier: ^2.5.2 + version: 2.5.2 + vinxi: + specifier: 0.4.3 + version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + devDependencies: + '@playwright/test': + specifier: ^1.47.1 + version: 1.47.1 + '@types/node': + specifier: ^22.5.4 + version: 22.5.4 + '@types/react': + specifier: ^18.2.65 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.2.21 + version: 18.3.0 + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) + postcss: + specifier: ^8.4.47 + version: 8.4.47 + prettier: + specifier: ^3.3.3 + version: 3.3.3 + tailwindcss: + specifier: ^3.4.11 + version: 3.4.11 + typescript: + specifier: ^5.6.2 + version: 5.6.2 + vite: + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) + vite-tsconfig-paths: + specifier: ^5.0.1 + version: 5.0.1(typescript@5.6.2)(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + examples/react/authenticated-routes: dependencies: '@tanstack/react-router': @@ -166,9 +746,6 @@ importers: specifier: ^0.5.1 version: 0.5.1 devDependencies: - '@playwright/test': - specifier: ^1.47.1 - version: 1.47.1 '@types/react': specifier: ^18.2.47 version: 18.3.5 @@ -246,9 +823,6 @@ importers: specifier: ^3.23.8 version: 3.23.8 devDependencies: - '@playwright/test': - specifier: ^1.47.1 - version: 1.47.1 '@types/react': specifier: ^18.2.47 version: 18.3.5 @@ -326,9 +900,6 @@ importers: specifier: ^0.5.1 version: 0.5.1 devDependencies: - '@playwright/test': - specifier: ^1.47.1 - version: 1.47.1 '@types/react': specifier: ^18.2.47 version: 18.3.5 @@ -375,9 +946,6 @@ importers: specifier: ^3.23.8 version: 3.23.8 devDependencies: - '@playwright/test': - specifier: ^1.47.1 - version: 1.47.1 '@types/react': specifier: ^18.2.47 version: 18.3.5 @@ -552,9 +1120,6 @@ importers: specifier: ^3.23.8 version: 3.23.8 devDependencies: - '@playwright/test': - specifier: ^1.47.1 - version: 1.47.1 '@types/react': specifier: ^18.2.47 version: 18.3.5 @@ -598,9 +1163,6 @@ importers: specifier: ^3.23.8 version: 3.23.8 devDependencies: - '@playwright/test': - specifier: ^1.47.1 - version: 1.47.1 '@types/react': specifier: ^18.2.47 version: 18.3.5 @@ -1198,9 +1760,6 @@ importers: specifier: 0.4.3 version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: - '@playwright/test': - specifier: ^1.47.1 - version: 1.47.1 '@types/node': specifier: ^22.5.4 version: 22.5.4 @@ -1280,12 +1839,6 @@ importers: specifier: 0.4.3 version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: - '@playwright/test': - specifier: ^1.47.1 - version: 1.47.1 - '@replayio/playwright': - specifier: ^3.1.8 - version: 3.1.8(@playwright/test@1.47.1) '@types/node': specifier: ^22.5.4 version: 22.5.4 @@ -1399,9 +1952,6 @@ importers: specifier: 0.4.3 version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: - '@playwright/test': - specifier: ^1.47.1 - version: 1.47.1 '@types/node': specifier: ^22.5.4 version: 22.5.4 @@ -1536,12 +2086,6 @@ importers: specifier: 0.4.3 version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) devDependencies: - '@playwright/test': - specifier: ^1.47.1 - version: 1.47.1 - '@replayio/playwright': - specifier: ^3.1.8 - version: 3.1.8(@playwright/test@1.47.1) '@types/node': specifier: ^22.5.4 version: 22.5.4 @@ -2581,10 +3125,6 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@colors/colors@1.6.0': - resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} - engines: {node: '>=0.1.90'} - '@commitlint/parse@19.0.3': resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} engines: {node: '>=v18'} @@ -2599,9 +3139,6 @@ packages: '@tanstack/react-query': ^5.0.0 convex: ^1.13.0 - '@dabh/diagnostics@2.0.3': - resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} - '@deno/shim-deno-test@0.5.0': resolution: {integrity: sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w==} @@ -3522,115 +4059,37 @@ packages: hasBin: true '@microsoft/api-extractor-model@7.29.4': - resolution: {integrity: sha512-LHOMxmT8/tU1IiiiHOdHFF83Qsi+V8d0kLfscG4EvQE9cafiR8blOYr8SfkQKWB1wgEilQgXJX3MIA4vetDLZw==} - - '@microsoft/api-extractor@7.47.4': - resolution: {integrity: sha512-HKm+P4VNzWwvq1Ey+Jfhhj/3MjsD+ka2hbt8L5AcRM95lu1MFOYnz3XlU7Gr79Q/ZhOb7W/imAKeYrOI0bFydg==} - hasBin: true - - '@microsoft/tsdoc-config@0.17.0': - resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} - - '@microsoft/tsdoc@0.15.0': - resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} - - '@module-federation/runtime-tools@0.5.1': - resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} - - '@module-federation/runtime@0.5.1': - resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==} - - '@module-federation/sdk@0.5.1': - resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==} - - '@module-federation/webpack-bundler-runtime@0.5.1': - resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==} - - '@mswjs/interceptors@0.27.2': - resolution: {integrity: sha512-mE6PhwcoW70EX8+h+Y/4dLfHk33GFt/y5PzDJz56ktMyaVGFXMJ5BYLbUjdmGEABfE0x5GgAGyKbrbkYww2s3A==} - engines: {node: '>=18'} - - '@mswjs/interceptors@0.35.6': - resolution: {integrity: sha512-PpD687w7qLxVMK176bpQjbzU9O0VC75QnBK5U1lKd29s4hIuxfTItUD6raNKyQ6BN8b64/8HE34RuYTkwH9uPQ==} - engines: {node: '>=18'} - - '@napi-rs/snappy-android-arm-eabi@7.2.2': - resolution: {integrity: sha512-H7DuVkPCK5BlAr1NfSU8bDEN7gYs+R78pSHhDng83QxRnCLmVIZk33ymmIwurmoA1HrdTxbkbuNl+lMvNqnytw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [android] - - '@napi-rs/snappy-android-arm64@7.2.2': - resolution: {integrity: sha512-2R/A3qok+nGtpVK8oUMcrIi5OMDckGYNoBLFyli3zp8w6IArPRfg1yOfVUcHvpUDTo9T7LOS1fXgMOoC796eQw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - - '@napi-rs/snappy-darwin-arm64@7.2.2': - resolution: {integrity: sha512-USgArHbfrmdbuq33bD5ssbkPIoT7YCXCRLmZpDS6dMDrx+iM7eD2BecNbOOo7/v1eu6TRmQ0xOzeQ6I/9FIi5g==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@napi-rs/snappy-darwin-x64@7.2.2': - resolution: {integrity: sha512-0APDu8iO5iT0IJKblk2lH0VpWSl9zOZndZKnBYIc+ei1npw2L5QvuErFOTeTdHBtzvUHASB+9bvgaWnQo4PvTQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@napi-rs/snappy-freebsd-x64@7.2.2': - resolution: {integrity: sha512-mRTCJsuzy0o/B0Hnp9CwNB5V6cOJ4wedDTWEthsdKHSsQlO7WU9W1yP7H3Qv3Ccp/ZfMyrmG98Ad7u7lG58WXA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] + resolution: {integrity: sha512-LHOMxmT8/tU1IiiiHOdHFF83Qsi+V8d0kLfscG4EvQE9cafiR8blOYr8SfkQKWB1wgEilQgXJX3MIA4vetDLZw==} - '@napi-rs/snappy-linux-arm-gnueabihf@7.2.2': - resolution: {integrity: sha512-v1uzm8+6uYjasBPcFkv90VLZ+WhLzr/tnfkZ/iD9mHYiULqkqpRuC8zvc3FZaJy5wLQE9zTDkTJN1IvUcZ+Vcg==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] + '@microsoft/api-extractor@7.47.4': + resolution: {integrity: sha512-HKm+P4VNzWwvq1Ey+Jfhhj/3MjsD+ka2hbt8L5AcRM95lu1MFOYnz3XlU7Gr79Q/ZhOb7W/imAKeYrOI0bFydg==} + hasBin: true - '@napi-rs/snappy-linux-arm64-gnu@7.2.2': - resolution: {integrity: sha512-LrEMa5pBScs4GXWOn6ZYXfQ72IzoolZw5txqUHVGs8eK4g1HR9HTHhb2oY5ySNaKakG5sOgMsb1rwaEnjhChmQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] + '@microsoft/tsdoc-config@0.17.0': + resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} - '@napi-rs/snappy-linux-arm64-musl@7.2.2': - resolution: {integrity: sha512-3orWZo9hUpGQcB+3aTLW7UFDqNCQfbr0+MvV67x8nMNYj5eAeUtMmUE/HxLznHO4eZ1qSqiTwLbVx05/Socdlw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] + '@microsoft/tsdoc@0.15.0': + resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} - '@napi-rs/snappy-linux-x64-gnu@7.2.2': - resolution: {integrity: sha512-jZt8Jit/HHDcavt80zxEkDpH+R1Ic0ssiVCoueASzMXa7vwPJeF4ZxZyqUw4qeSy7n8UUExomu8G8ZbP6VKhgw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] + '@module-federation/runtime-tools@0.5.1': + resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} - '@napi-rs/snappy-linux-x64-musl@7.2.2': - resolution: {integrity: sha512-Dh96IXgcZrV39a+Tej/owcd9vr5ihiZ3KRix11rr1v0MWtVb61+H1GXXlz6+Zcx9y8jM1NmOuiIuJwkV4vZ4WA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] + '@module-federation/runtime@0.5.1': + resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==} - '@napi-rs/snappy-win32-arm64-msvc@7.2.2': - resolution: {integrity: sha512-9No0b3xGbHSWv2wtLEn3MO76Yopn1U2TdemZpCaEgOGccz1V+a/1d16Piz3ofSmnA13HGFz3h9NwZH9EOaIgYA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] + '@module-federation/sdk@0.5.1': + resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==} - '@napi-rs/snappy-win32-ia32-msvc@7.2.2': - resolution: {integrity: sha512-QiGe+0G86J74Qz1JcHtBwM3OYdTni1hX1PFyLRo3HhQUSpmi13Bzc1En7APn+6Pvo7gkrcy81dObGLDSxFAkQQ==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] + '@module-federation/webpack-bundler-runtime@0.5.1': + resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==} - '@napi-rs/snappy-win32-x64-msvc@7.2.2': - resolution: {integrity: sha512-a43cyx1nK0daw6BZxVcvDEXxKMFLSBSDTAhsFD0VqSKcC7MGUBMaqyoWUcMiI7LBSz4bxUmxDWKfCYzpEmeb3w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] + '@mswjs/interceptors@0.27.2': + resolution: {integrity: sha512-mE6PhwcoW70EX8+h+Y/4dLfHk33GFt/y5PzDJz56ktMyaVGFXMJ5BYLbUjdmGEABfE0x5GgAGyKbrbkYww2s3A==} + engines: {node: '>=18'} + + '@mswjs/interceptors@0.35.6': + resolution: {integrity: sha512-PpD687w7qLxVMK176bpQjbzU9O0VC75QnBK5U1lKd29s4hIuxfTItUD6raNKyQ6BN8b64/8HE34RuYTkwH9uPQ==} + engines: {node: '>=18'} '@napi-rs/wasm-runtime@0.2.4': resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} @@ -3924,36 +4383,6 @@ packages: '@prisma/get-platform@5.19.1': resolution: {integrity: sha512-sCeoJ+7yt0UjnR+AXZL7vXlg5eNxaFOwC23h0KvW1YIXUoa7+W2ZcAUhoEQBmJTW4GrFqCuZ8YSP0mkDa4k3Zg==} - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@radix-ui/primitive@1.1.0': resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} @@ -4153,11 +4582,6 @@ packages: typescript: optional: true - '@replayio/playwright@3.1.8': - resolution: {integrity: sha512-hRAjdPeC7kJYqus0za02nApfH3/f1yccXcf9qeqdlNPTVGeKTfFunTJCWVBxavwW6nEamKvsqzEoBHSk7+jwVg==} - peerDependencies: - '@playwright/test': ^1.34.0 - '@rollup/plugin-alias@5.1.0': resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} engines: {node: '>=14.0.0'} @@ -4772,9 +5196,6 @@ packages: '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@types/triple-beam@1.3.5': - resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} - '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} @@ -5112,10 +5533,6 @@ packages: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - ajv-draft-04@1.0.0: resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} peerDependencies: @@ -5273,10 +5690,6 @@ packages: resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} hasBin: true - async-exit-hook@2.0.1: - resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} - engines: {node: '>=0.12.0'} - async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} @@ -5363,11 +5776,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - btoa@1.2.1: - resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} - engines: {node: '>= 0.4.0'} - hasBin: true - buffer-crc32@1.0.0: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} @@ -5481,10 +5889,6 @@ packages: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -5557,25 +5961,16 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true - color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - colorspace@1.1.4: - resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} - combinate@1.1.11: resolution: {integrity: sha512-+2MNAQ29HtNejOxkgaTQPC2Bm+pQvFuqf7o18uObl/Bx3daX06kjLUNY/qa9f+YSqzqm/ic3SdrlfN0fvTlw2g==} @@ -6054,9 +6449,6 @@ packages: emojilib@2.4.0: resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} - enabled@2.0.0: - resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -6147,10 +6539,6 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -6351,9 +6739,6 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} - fast-deep-equal@2.0.1: - resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -6381,9 +6766,6 @@ packages: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} - fecha@4.2.3: - resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -6441,9 +6823,6 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - fn.name@1.1.0: - resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - follow-redirects@1.15.6: resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} @@ -6776,10 +7155,6 @@ packages: resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - https-proxy-agent@5.0.0: - resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} - engines: {node: '>= 6'} - https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -6888,9 +7263,6 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -7030,9 +7402,6 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - is-uuid@1.0.2: - resolution: {integrity: sha512-tCByphFcJgf2qmiMo5hMCgNAquNSagOetVetDvBXswGkNfoyEMvGH1yDlF8cbZbKnbVBr4Y5/rlpMz9umxyBkQ==} - is-what@4.1.8: resolution: {integrity: sha512-yq8gMao5upkPoGEU9LsB2P+K3Kt8Q3fQFCGyNCWOAnJAMzEXVV9drYb0TXr42TTliLLhKIBvulgAXgtLLnwzGA==} engines: {node: '>=12.13'} @@ -7151,10 +7520,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsonata@1.8.7: - resolution: {integrity: sha512-tOW2/hZ+nR2bcQZs+0T62LVe5CHaNa3laFFWb/262r39utN6whJGBF7IR2Wq1QXrDbhftolk5gggW8uUJYlBTQ==} - engines: {node: '>= 8'} - jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} @@ -7188,9 +7553,6 @@ packages: kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - kuler@2.0.0: - resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - ky@1.7.2: resolution: {integrity: sha512-OzIvbHKKDpi60TnF9t7UUVAF1B4mcqc02z5PIvrm08Wyb+yOcz63GRvEuVxNT18a9E1SrNouhB4W2NNLeD7Ykg==} engines: {node: '>=18'} @@ -7198,17 +7560,6 @@ packages: launch-editor@2.8.0: resolution: {integrity: sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==} - launchdarkly-eventsource@2.0.3: - resolution: {integrity: sha512-VhFjppK7jXlcEKaS7bxdoibB5j01NKyeDR7a8XfssdDGNWCTsbF0/5IExSmPi44eDncPhkoPNxlSZhEZvrbD5w==} - engines: {node: '>=0.12.0'} - - launchdarkly-js-sdk-common@5.2.0: - resolution: {integrity: sha512-aLv2ZrUv229RIwLtFhdILu2aJS/fqGSJzTk4L/bCDZA8RuIh7PutI3ui/AJeNnzPzjKzdEQZw6wVhkVc84baog==} - - launchdarkly-node-client-sdk@3.2.1: - resolution: {integrity: sha512-vIn1kFCWSX83M2hHIQEw+TyEZFqcXn4DTKja2Vdt9NFgs0I2BA70ENA+zgz8OSt+VqvTciZV0l5X90Uyv+3vsQ==} - engines: {node: '>= 12.0.0'} - lazystream@1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} @@ -7281,13 +7632,6 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} - logform@2.6.1: - resolution: {integrity: sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==} - engines: {node: '>= 12.0.0'} - - long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -7469,10 +7813,6 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - mixpanel@0.18.0: - resolution: {integrity: sha512-VyUoiLB/S/7abYYHGD5x0LijeuJCUabG8Hb+FvYU3Y99xHf1Qh+s4/pH9lt50fRitAHncWbU1FE01EknUfVVjQ==} - engines: {node: '>=10.0'} - mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -7597,10 +7937,6 @@ packages: resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} hasBin: true - node-localstorage@1.3.1: - resolution: {integrity: sha512-NMWCSWWc6JbHT5PyWlNT2i8r7PgGYXVntmKawY83k/M0UJScZ5jirb61TLnqKwd815DfBQu+lR3sRw08SPzIaQ==} - engines: {node: '>=0.12'} - node-machine-id@1.1.12: resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} @@ -7723,9 +8059,6 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - one-time@1.0.0: - resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} - onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -7785,10 +8118,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - p-retry@6.2.0: resolution: {integrity: sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==} engines: {node: '>=16.17'} @@ -8179,10 +8508,6 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - protobufjs@7.3.2: - resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==} - engines: {node: '>=12.0.0'} - proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -8487,10 +8812,6 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} - engines: {node: '>=10'} - safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -8567,9 +8888,6 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - sha-1@1.0.0: - resolution: {integrity: sha512-qjFA/+LdT0Gvu/JcmYTGZMvVy6WXJOWv1KQuY7HvSr2oBrMxA8PnZu2mc1/ZS2EvLMokj7lIeQsNPjkRzXrImw==} - shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} @@ -8617,9 +8935,6 @@ packages: simple-git@3.25.0: resolution: {integrity: sha512-KIY5sBnzc4yEcJXW7Tdv4viEz8KyG+nU0hay+DWZasvdFOYKeUZ6Xc25LUHHjw0tinPT7O1eY6pzX7pRT1K8rw==} - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - skin-tone@2.0.0: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} @@ -8632,9 +8947,6 @@ packages: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} - slide@1.1.6: - resolution: {integrity: sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==} - smob@1.4.1: resolution: {integrity: sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==} @@ -8645,10 +8957,6 @@ packages: resolution: {integrity: sha512-YTywJG93yxwHLgrYLZjlC75moVEX04LZM4FHfihjHe1FCXm+QaLOFfSf535aXOAd0ArVQMWUAe8ZPm4VtWyXaA==} engines: {node: '>=12'} - snappy@7.2.2: - resolution: {integrity: sha512-iADMq1kY0v3vJmGTuKcFWSXt15qYUz7wFkArOrsSg0IFfI3nJqIJvK2/ZbEIndg7erIJLtAVX2nSOqPz7DcwbA==} - engines: {node: '>= 10'} - sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} @@ -8687,13 +8995,6 @@ packages: stable-hash@0.0.4: resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} - stack-trace@0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -8795,10 +9096,6 @@ packages: resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} engines: {node: '>=16'} - superstruct@1.0.4: - resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} - engines: {node: '>=14.0.0'} - supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -8894,9 +9191,6 @@ packages: resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} engines: {node: '>=8'} - text-hex@1.0.0: - resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -8977,10 +9271,6 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - triple-beam@1.4.1: - resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} - engines: {node: '>= 14.0.0'} - ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -9263,9 +9553,6 @@ packages: url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - url-polyfill@1.1.12: - resolution: {integrity: sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A==} - urlpattern-polyfill@8.0.2: resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} @@ -9575,17 +9862,6 @@ packages: wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - winston-loki@6.1.2: - resolution: {integrity: sha512-l1iqDDaEUt63Q8arDsiVCXIrK3jLjPOEc5UTs+WMVnWf8D+A8ZRErAAXKDOduT240aNGzpTbCwe5zfdqqLlzMg==} - - winston-transport@4.7.1: - resolution: {integrity: sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==} - engines: {node: '>= 12.0.0'} - - winston@3.14.2: - resolution: {integrity: sha512-CO8cdpBB2yqzEf8v895L+GNKYJiEq8eKlHU38af3snQBQ+sdAIUepjMSguOIJC7ICbzm0ZI+Af2If4vIJrtmOg==} - engines: {node: '>= 12.0.0'} - wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -9601,9 +9877,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@1.3.4: - resolution: {integrity: sha512-SdrHoC/yVBPpV0Xq/mUZQIpW2sWXAShb/V4pomcJXh92RuaO+f3UTWItiR3Px+pLnV2PvC2/bfn5cwr5X6Vfxw==} - ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} @@ -9931,8 +10204,6 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@colors/colors@1.6.0': {} - '@commitlint/parse@19.0.3': dependencies: '@commitlint/types': 19.0.3 @@ -9949,12 +10220,6 @@ snapshots: '@tanstack/react-query': 5.56.2(react@18.3.1) convex: 1.16.0(@clerk/clerk-react@5.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@dabh/diagnostics@2.0.3': - dependencies: - colorspace: 1.1.4 - enabled: 2.0.0 - kuler: 2.0.0 - '@deno/shim-deno-test@0.5.0': {} '@deno/shim-deno@0.19.1': @@ -10730,45 +10995,6 @@ snapshots: outvariant: 1.4.3 strict-event-emitter: 0.5.1 - '@napi-rs/snappy-android-arm-eabi@7.2.2': - optional: true - - '@napi-rs/snappy-android-arm64@7.2.2': - optional: true - - '@napi-rs/snappy-darwin-arm64@7.2.2': - optional: true - - '@napi-rs/snappy-darwin-x64@7.2.2': - optional: true - - '@napi-rs/snappy-freebsd-x64@7.2.2': - optional: true - - '@napi-rs/snappy-linux-arm-gnueabihf@7.2.2': - optional: true - - '@napi-rs/snappy-linux-arm64-gnu@7.2.2': - optional: true - - '@napi-rs/snappy-linux-arm64-musl@7.2.2': - optional: true - - '@napi-rs/snappy-linux-x64-gnu@7.2.2': - optional: true - - '@napi-rs/snappy-linux-x64-musl@7.2.2': - optional: true - - '@napi-rs/snappy-win32-arm64-msvc@7.2.2': - optional: true - - '@napi-rs/snappy-win32-ia32-msvc@7.2.2': - optional: true - - '@napi-rs/snappy-win32-x64-msvc@7.2.2': - optional: true - '@napi-rs/wasm-runtime@0.2.4': dependencies: '@emnapi/core': 1.2.0 @@ -11024,29 +11250,6 @@ snapshots: dependencies: '@prisma/debug': 5.19.1 - '@protobufjs/aspromise@1.1.2': {} - - '@protobufjs/base64@1.1.2': {} - - '@protobufjs/codegen@2.0.4': {} - - '@protobufjs/eventemitter@1.1.0': {} - - '@protobufjs/fetch@1.1.0': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 - - '@protobufjs/float@1.0.2': {} - - '@protobufjs/inquire@1.1.0': {} - - '@protobufjs/path@1.1.2': {} - - '@protobufjs/pool@1.1.0': {} - - '@protobufjs/utf8@1.1.0': {} - '@radix-ui/primitive@1.1.0': {} '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.5)(react@18.3.1)': @@ -11222,32 +11425,6 @@ snapshots: optionalDependencies: typescript: 5.6.2 - '@replayio/playwright@3.1.8(@playwright/test@1.47.1)': - dependencies: - '@playwright/test': 1.47.1 - chalk: 4.1.2 - debug: 4.3.6 - fs-extra: 11.2.0 - is-uuid: 1.0.2 - jsonata: 1.8.7 - launchdarkly-node-client-sdk: 3.2.1 - mixpanel: 0.18.0 - node-fetch: 2.7.0 - p-map: 4.0.0 - sha-1: 1.0.0 - stack-utils: 2.0.6 - superstruct: 1.0.4 - undici: 5.28.4 - uuid: 8.3.2 - winston: 3.14.2 - winston-loki: 6.1.2 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - '@rollup/plugin-alias@5.1.0(rollup@3.29.4)': dependencies: slash: 4.0.0 @@ -11928,8 +12105,6 @@ snapshots: '@types/tough-cookie@4.0.5': {} - '@types/triple-beam@1.3.5': {} - '@types/unist@3.0.2': {} '@types/validate-npm-package-name@4.0.2': {} @@ -12406,11 +12581,6 @@ snapshots: transitivePeerDependencies: - supports-color - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - ajv-draft-04@1.0.0(ajv@8.13.0): optionalDependencies: ajv: 8.13.0 @@ -12564,8 +12734,6 @@ snapshots: astring@1.8.6: {} - async-exit-hook@2.0.1: {} - async-sema@3.1.1: {} async@3.2.5: {} @@ -12685,8 +12853,6 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) - btoa@1.2.1: {} - buffer-crc32@1.0.0: {} buffer-from@1.1.2: {} @@ -12818,8 +12984,6 @@ snapshots: dependencies: source-map: 0.6.1 - clean-stack@2.2.0: {} - cli-boxes@3.0.0: {} cli-cursor@3.1.0: @@ -12891,27 +13055,12 @@ snapshots: color-name@1.1.4: {} - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - color-support@1.1.3: {} - color@3.2.1: - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 - colord@2.9.3: {} colorette@2.0.20: {} - colorspace@1.1.4: - dependencies: - color: 3.2.1 - text-hex: 1.0.0 - combinate@1.1.11: {} combined-stream@1.0.8: @@ -13344,8 +13493,6 @@ snapshots: emojilib@2.4.0: {} - enabled@2.0.0: {} - encodeurl@1.0.2: {} encodeurl@2.0.0: {} @@ -13528,8 +13675,6 @@ snapshots: escape-string-regexp@1.0.5: {} - escape-string-regexp@2.0.0: {} - escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} @@ -13869,8 +14014,6 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - fast-deep-equal@2.0.1: {} - fast-deep-equal@3.1.3: {} fast-fifo@1.3.2: {} @@ -13897,8 +14040,6 @@ snapshots: dependencies: websocket-driver: 0.7.4 - fecha@4.2.3: {} - fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -13968,8 +14109,6 @@ snapshots: flatted@3.3.1: {} - fn.name@1.1.0: {} - follow-redirects@1.15.6: {} for-each@0.3.3: @@ -14327,13 +14466,6 @@ snapshots: http-shutdown@1.2.2: {} - https-proxy-agent@5.0.0: - dependencies: - agent-base: 6.0.2 - debug: 4.3.6 - transitivePeerDependencies: - - supports-color - https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 @@ -14437,8 +14569,6 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 - is-arrayish@0.3.2: {} - is-binary-path@2.1.0: dependencies: binary-extensions: 2.2.0 @@ -14547,8 +14677,6 @@ snapshots: is-unicode-supported@0.1.0: {} - is-uuid@1.0.2: {} - is-what@4.1.8: {} is-windows@1.0.2: {} @@ -14659,8 +14787,6 @@ snapshots: json5@2.2.3: {} - jsonata@1.8.7: {} - jsonc-parser@3.2.0: {} jsonfile@4.0.0: @@ -14689,8 +14815,6 @@ snapshots: kolorist@1.8.0: {} - kuler@2.0.0: {} - ky@1.7.2: {} launch-editor@2.8.0: @@ -14698,20 +14822,6 @@ snapshots: picocolors: 1.1.0 shell-quote: 1.8.1 - launchdarkly-eventsource@2.0.3: {} - - launchdarkly-js-sdk-common@5.2.0: - dependencies: - base64-js: 1.5.1 - fast-deep-equal: 2.0.1 - uuid: 8.3.2 - - launchdarkly-node-client-sdk@3.2.1: - dependencies: - launchdarkly-eventsource: 2.0.3 - launchdarkly-js-sdk-common: 5.2.0 - node-localstorage: 1.3.1 - lazystream@1.0.1: dependencies: readable-stream: 2.3.8 @@ -14798,17 +14908,6 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 - logform@2.6.1: - dependencies: - '@colors/colors': 1.6.0 - '@types/triple-beam': 1.3.5 - fecha: 4.2.3 - ms: 2.1.3 - safe-stable-stringify: 2.4.3 - triple-beam: 1.4.1 - - long@5.2.3: {} - loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -14968,12 +15067,6 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - mixpanel@0.18.0: - dependencies: - https-proxy-agent: 5.0.0 - transitivePeerDependencies: - - supports-color - mkdirp@1.0.4: {} mkdist@1.5.7(typescript@5.6.2)(vue-tsc@2.0.29(typescript@5.6.2)): @@ -15177,10 +15270,6 @@ snapshots: node-gyp-build@4.8.1: {} - node-localstorage@1.3.1: - dependencies: - write-file-atomic: 1.3.4 - node-machine-id@1.1.12: {} node-releases@2.0.18: {} @@ -15341,10 +15430,6 @@ snapshots: dependencies: wrappy: 1.0.2 - one-time@1.0.0: - dependencies: - fn.name: 1.1.0 - onetime@5.1.2: dependencies: mimic-fn: 2.1.0 @@ -15421,10 +15506,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - p-retry@6.2.0: dependencies: '@types/retry': 0.12.2 @@ -15761,21 +15842,6 @@ snapshots: process@0.11.10: {} - protobufjs@7.3.2: - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 22.5.4 - long: 5.2.3 - proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -16091,8 +16157,6 @@ snapshots: safe-buffer@5.2.1: {} - safe-stable-stringify@2.4.3: {} - safer-buffer@2.1.2: {} saxes@6.0.0: @@ -16197,8 +16261,6 @@ snapshots: setprototypeof@1.2.0: {} - sha-1@1.0.0: {} - shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 @@ -16245,10 +16307,6 @@ snapshots: transitivePeerDependencies: - supports-color - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - skin-tone@2.0.0: dependencies: unicode-emoji-modifier-base: 1.0.0 @@ -16257,8 +16315,6 @@ snapshots: slash@5.1.0: {} - slide@1.1.6: {} - smob@1.4.1: {} snake-case@3.0.4: @@ -16272,23 +16328,6 @@ snapshots: snake-case: 3.0.4 type-fest: 2.19.0 - snappy@7.2.2: - optionalDependencies: - '@napi-rs/snappy-android-arm-eabi': 7.2.2 - '@napi-rs/snappy-android-arm64': 7.2.2 - '@napi-rs/snappy-darwin-arm64': 7.2.2 - '@napi-rs/snappy-darwin-x64': 7.2.2 - '@napi-rs/snappy-freebsd-x64': 7.2.2 - '@napi-rs/snappy-linux-arm-gnueabihf': 7.2.2 - '@napi-rs/snappy-linux-arm64-gnu': 7.2.2 - '@napi-rs/snappy-linux-arm64-musl': 7.2.2 - '@napi-rs/snappy-linux-x64-gnu': 7.2.2 - '@napi-rs/snappy-linux-x64-musl': 7.2.2 - '@napi-rs/snappy-win32-arm64-msvc': 7.2.2 - '@napi-rs/snappy-win32-ia32-msvc': 7.2.2 - '@napi-rs/snappy-win32-x64-msvc': 7.2.2 - optional: true - sockjs@0.3.24: dependencies: faye-websocket: 0.11.4 @@ -16335,12 +16374,6 @@ snapshots: stable-hash@0.0.4: {} - stack-trace@0.0.10: {} - - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 - stackback@0.0.2: {} stackframe@1.3.4: {} @@ -16440,8 +16473,6 @@ snapshots: dependencies: copy-anything: 3.0.2 - superstruct@1.0.4: {} - supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -16576,8 +16607,6 @@ snapshots: text-extensions@2.4.0: {} - text-hex@1.0.0: {} - text-table@0.2.0: {} thenify-all@1.6.0: @@ -16639,8 +16668,6 @@ snapshots: tree-kill@1.2.2: {} - triple-beam@1.4.1: {} - ts-api-utils@1.3.0(typescript@5.6.2): dependencies: typescript: 5.6.2 @@ -16905,8 +16932,6 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 - url-polyfill@1.1.12: {} - urlpattern-polyfill@8.0.2: {} use-callback-ref@1.3.0(@types/react@18.3.5)(react@18.3.1): @@ -17357,36 +17382,6 @@ snapshots: wildcard@2.0.1: {} - winston-loki@6.1.2: - dependencies: - async-exit-hook: 2.0.1 - btoa: 1.2.1 - protobufjs: 7.3.2 - url-polyfill: 1.1.12 - winston-transport: 4.7.1 - optionalDependencies: - snappy: 7.2.2 - - winston-transport@4.7.1: - dependencies: - logform: 2.6.1 - readable-stream: 3.6.2 - triple-beam: 1.4.1 - - winston@3.14.2: - dependencies: - '@colors/colors': 1.6.0 - '@dabh/diagnostics': 2.0.3 - async: 3.2.5 - is-stream: 2.0.1 - logform: 2.6.1 - one-time: 1.0.0 - readable-stream: 3.6.2 - safe-stable-stringify: 2.4.3 - stack-trace: 0.0.10 - triple-beam: 1.4.1 - winston-transport: 4.7.1 - wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -17407,12 +17402,6 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@1.3.4: - dependencies: - graceful-fs: 4.2.11 - imurmurhash: 0.1.4 - slide: 1.1.6 - ws@8.18.0: {} xml-name-validator@5.0.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index df6b37ce34..a48d64989f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,5 @@ packages: - 'packages/*' - 'examples/react/*' + - 'e2e/react-router/*' + - 'e2e/start/*' From d0a5638315737793c1e7b44062bf7e23d7f8d765 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Wed, 18 Sep 2024 19:51:15 +0200 Subject: [PATCH 132/154] fix(router-plugin): do not minify code in compiler (#2366) fixes #2361 --- packages/router-plugin/src/core/code-splitter/compilers.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/router-plugin/src/core/code-splitter/compilers.ts b/packages/router-plugin/src/core/code-splitter/compilers.ts index b7feabd10c..475932564d 100644 --- a/packages/router-plugin/src/core/code-splitter/compilers.ts +++ b/packages/router-plugin/src/core/code-splitter/compilers.ts @@ -236,7 +236,6 @@ export function compileCodeSplitReferenceRoute(opts: ParseAstOptions) { return generate(ast, { sourceMaps: true, - minified: process.env.NODE_ENV === 'production', }) } @@ -451,7 +450,6 @@ export function compileCodeSplitVirtualRoute(opts: ParseAstOptions) { return generate(ast, { sourceMaps: true, - minified: process.env.NODE_ENV === 'production', }) } From 9c0feb3808956d1764618c01e5d8161f5cfdfad3 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Wed, 18 Sep 2024 17:52:32 +0000 Subject: [PATCH 133/154] release: v1.57.19 --- examples/react/authenticated-routes/package.json | 2 +- examples/react/basic-file-based-codesplitting/package.json | 2 +- examples/react/basic-file-based/package.json | 2 +- examples/react/basic-react-query-file-based/package.json | 2 +- examples/react/basic-ssr-file-based/package.json | 4 ++-- examples/react/basic-ssr-streaming-file-based/package.json | 4 ++-- examples/react/basic-virtual-file-based/package.json | 2 +- examples/react/basic-virtual-inside-file-based/package.json | 2 +- examples/react/kitchen-sink-file-based/package.json | 2 +- .../react/kitchen-sink-react-query-file-based/package.json | 2 +- examples/react/large-file-based/package.json | 2 +- examples/react/quickstart-file-based/package.json | 2 +- examples/react/quickstart-rspack-file-based/package.json | 2 +- examples/react/quickstart-webpack-file-based/package.json | 2 +- examples/react/search-validator-adapters/package.json | 2 +- examples/react/start-basic-auth/package.json | 4 ++-- examples/react/start-basic-counter/package.json | 2 +- examples/react/start-basic-react-query/package.json | 4 ++-- examples/react/start-basic-rsc/package.json | 4 ++-- examples/react/start-basic/package.json | 4 ++-- examples/react/start-clerk-basic/package.json | 4 ++-- examples/react/start-convex-trellaux/package.json | 4 ++-- examples/react/start-supabase-basic/package.json | 4 ++-- examples/react/start-trellaux/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 2 +- examples/react/with-trpc/package.json | 2 +- packages/create-router/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/start/package.json | 2 +- 30 files changed, 40 insertions(+), 40 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index eca9aaa7fd..c757035599 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 9c9d911006..cc678bbb5e 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 88909e86fc..b883393af4 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 13f1c4070f..e05dbf22e3 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -13,7 +13,7 @@ "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 2e6b1357df..1371d6df80 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.18", + "@tanstack/router-plugin": "^1.57.19", + "@tanstack/start": "^1.57.19", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 3f1aaaaeeb..1541953ea3 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.18", + "@tanstack/router-plugin": "^1.57.19", + "@tanstack/start": "^1.57.19", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index ecb964282a..dd5875f1ca 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 8392d7b2c8..d8d37d972a 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index a088aa2545..64cdea54be 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 8bda23d13c..0c3dc293ee 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -13,7 +13,7 @@ "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index e17db5add6..30e23f63c8 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query": "^5.56.2", "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 37a5e96d37..3382afd3b6 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 46c378f493..342570ad3a 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@rsbuild/core": "1.0.4", "@rsbuild/plugin-react": "1.0.2", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.6.2" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 4d7e837e74..9a4a145dcb 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@swc/core": "^1.7.26", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 31bcf1a1c1..7e868306f4 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "@tanstack/router-zod-adapter": "^1.57.18", "@tanstack/router-valibot-adapter": "^1.57.18", "@tanstack/router-arktype-adapter": "^1.57.18", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index f2b7d6921b..7b682180a1 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -15,8 +15,8 @@ "@prisma/client": "5.19.1", "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.18", + "@tanstack/router-plugin": "^1.57.19", + "@tanstack/start": "^1.57.19", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 1a5fd41e9a..6eb442d268 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@tanstack/react-router": "^1.57.18", - "@tanstack/start": "^1.57.18", + "@tanstack/start": "^1.57.19", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.3" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 6c2237adb3..524bd3946c 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -16,8 +16,8 @@ "@tanstack/react-router": "^1.57.18", "@tanstack/react-router-with-query": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.18", + "@tanstack/router-plugin": "^1.57.19", + "@tanstack/start": "^1.57.19", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 72207f62ed..2e0162ac87 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -14,8 +14,8 @@ "@babel/plugin-syntax-typescript": "^7.25.4", "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.18", + "@tanstack/router-plugin": "^1.57.19", + "@tanstack/start": "^1.57.19", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.3" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 79e7b65c49..e4d3dc5835 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.18", + "@tanstack/router-plugin": "^1.57.19", + "@tanstack/start": "^1.57.19", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 49599a240a..b6c99ef633 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -14,8 +14,8 @@ "@clerk/tanstack-start": "0.4.1", "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.18", + "@tanstack/router-plugin": "^1.57.19", + "@tanstack/start": "^1.57.19", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 88dce48db1..4153883769 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -18,8 +18,8 @@ "@tanstack/react-router": "^1.57.18", "@tanstack/react-router-with-query": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.18", + "@tanstack/router-plugin": "^1.57.19", + "@tanstack/start": "^1.57.19", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 86cf1636ba..a8e40e5d06 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -16,9 +16,9 @@ "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.4", "@tanstack/react-router": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/start": "^1.57.18", + "@tanstack/start": "^1.57.19", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index a85b0446c4..c9d76a11ad 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -16,8 +16,8 @@ "@tanstack/react-router": "^1.57.18", "@tanstack/react-router-with-query": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", - "@tanstack/start": "^1.57.18", + "@tanstack/router-plugin": "^1.57.19", + "@tanstack/start": "^1.57.19", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "ky": "^1.7.2", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 774b2ea398..2b177e9782 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -12,7 +12,7 @@ "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "@trpc/client": "11.0.0-rc.502", "@trpc/react-query": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 558e05f3c3..8240e10340 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -10,7 +10,7 @@ "dependencies": { "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.15", + "@tanstack/router-plugin": "^1.57.19", "@trpc/client": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index d1adacb3d3..4df65c655b 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.18", + "version": "1.57.19", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index f87ed57367..66913b9551 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.57.15", + "version": "1.57.19", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 5987be2130..6647ebbb4e 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.57.15", + "version": "1.57.19", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index cf612cee34..f5e86a4d91 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.18", + "version": "1.57.19", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 1b2208735ad17ca3dc621722a9f088af1d8dcb87 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Wed, 18 Sep 2024 22:23:00 +0200 Subject: [PATCH 134/154] feat(eslint-plugin-router): add rule to ensure correct property order for createXXXRoute functions (#2362) --- docs/config.json | 13 ++ docs/eslint/create-route-property-order.md | 57 +++++++ docs/eslint/eslint-plugin-router.md | 96 +++++++++++ package.json | 1 + packages/eslint-plugin-router/.attw.json | 3 + .../eslint-plugin-router/eslint.config.js | 5 + packages/eslint-plugin-router/package.json | 65 ++++++++ .../create-route-property-order.rule.test.ts | 153 ++++++++++++++++++ .../create-route-property-order.utils.test.ts | 58 +++++++ .../src/__tests__/test-utils.test.ts | 104 ++++++++++++ .../src/__tests__/test-utils.ts | 108 +++++++++++++ packages/eslint-plugin-router/src/index.ts | 43 +++++ packages/eslint-plugin-router/src/rules.ts | 15 ++ .../create-route-property-order/constants.ts | 24 +++ .../create-route-property-order.rule.ts | 125 ++++++++++++++ .../create-route-property-order.utils.ts | 38 +++++ packages/eslint-plugin-router/src/types.ts | 3 + .../src/utils/detect-router-imports.ts | 94 +++++++++++ .../src/utils/get-docs-url.ts | 2 + packages/eslint-plugin-router/tsconfig.json | 7 + packages/eslint-plugin-router/vite.config.ts | 23 +++ pnpm-lock.yaml | 36 +++++ scripts/publish.js | 4 + 23 files changed, 1077 insertions(+) create mode 100644 docs/eslint/create-route-property-order.md create mode 100644 docs/eslint/eslint-plugin-router.md create mode 100644 packages/eslint-plugin-router/.attw.json create mode 100644 packages/eslint-plugin-router/eslint.config.js create mode 100644 packages/eslint-plugin-router/package.json create mode 100644 packages/eslint-plugin-router/src/__tests__/create-route-property-order.rule.test.ts create mode 100644 packages/eslint-plugin-router/src/__tests__/create-route-property-order.utils.test.ts create mode 100644 packages/eslint-plugin-router/src/__tests__/test-utils.test.ts create mode 100644 packages/eslint-plugin-router/src/__tests__/test-utils.ts create mode 100644 packages/eslint-plugin-router/src/index.ts create mode 100644 packages/eslint-plugin-router/src/rules.ts create mode 100644 packages/eslint-plugin-router/src/rules/create-route-property-order/constants.ts create mode 100644 packages/eslint-plugin-router/src/rules/create-route-property-order/create-route-property-order.rule.ts create mode 100644 packages/eslint-plugin-router/src/rules/create-route-property-order/create-route-property-order.utils.ts create mode 100644 packages/eslint-plugin-router/src/types.ts create mode 100644 packages/eslint-plugin-router/src/utils/detect-router-imports.ts create mode 100644 packages/eslint-plugin-router/src/utils/get-docs-url.ts create mode 100644 packages/eslint-plugin-router/tsconfig.json create mode 100644 packages/eslint-plugin-router/vite.config.ts diff --git a/docs/config.json b/docs/config.json index 2ba8d8f0f1..948508f6d9 100644 --- a/docs/config.json +++ b/docs/config.json @@ -238,6 +238,19 @@ } ] }, + { + "label": "ESLint", + "children": [ + { + "label": "ESLint Plugin Router", + "to": "eslint/eslint-plugin-router" + }, + { + "label": "Create Route Property Order", + "to": "eslint/create-route-property-order" + } + ] + }, { "label": "Router Examples", "children": [], diff --git a/docs/eslint/create-route-property-order.md b/docs/eslint/create-route-property-order.md new file mode 100644 index 0000000000..fa82f1dc57 --- /dev/null +++ b/docs/eslint/create-route-property-order.md @@ -0,0 +1,57 @@ +--- +id: create-route-property-order +title: Ensure correct order of inference sensitive properties for createRoute functions +--- + +For the following functions, the property order of the passed in object matters due to type inference: + +- `createRoute` +- `createFileRoute` +- `createRootRoute` +- `createRootRouteWithContext` + +The correct property order is as follows: + +- `params` +- `validateSearch` +- `context` +- `beforeLoad` +- `loaderDeps` +- `loader` + +All other properties are insensitive to the order as they do not depend on type inference. + +## Rule Details + +Examples of **incorrect** code for this rule: + +```tsx +/* eslint "@tanstack/router/create-route-property-order": "warn" */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/foo/bar/$id')({ + loader: async ({context}) => { + await context.queryClient.ensureQueryData(getQueryOptions(context.hello)), + }, + beforeLoad: () => ({hello: 'world'}) +}) +``` + +Examples of **correct** code for this rule: + +```tsx +/* eslint "@tanstack/router/create-route-property-order": "warn" */ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/foo/bar/$id')({ + beforeLoad: () => ({hello: 'world'}), + loader: async ({context}) => { + await context.queryClient.ensureQueryData(getQueryOptions(context.hello)), + } +}) +``` + +## Attributes + +- [x] ✅ Recommended +- [x] 🔧 Fixable diff --git a/docs/eslint/eslint-plugin-router.md b/docs/eslint/eslint-plugin-router.md new file mode 100644 index 0000000000..ccfd7d1572 --- /dev/null +++ b/docs/eslint/eslint-plugin-router.md @@ -0,0 +1,96 @@ +--- +id: eslint-plugin-router +title: ESLint Plugin Router +--- + +TanStack Router comes with its own ESLint plugin. This plugin is used to enforce best practices and to help you avoid common mistakes. + +## Installation + +The plugin is a separate package that you need to install: + +```bash +$ npm i -D @tanstack/eslint-plugin-router +``` + +or + +```bash +$ pnpm add -D @tanstack/eslint-plugin-router +``` + +or + +```bash +$ yarn add -D @tanstack/eslint-plugin-router +``` + +or + +```bash +$ bun add -D @tanstack/eslint-plugin-router +``` + +## Flat Config (`eslint.config.js`) + +### Recommended setup + +To enable all of the recommended rules for our plugin, add the following config: + +```js +import pluginRouter from '@tanstack/eslint-plugin-router' + +export default [ + ...pluginRouter.configs['flat/recommended'], + // Any other config... +] +``` + +### Custom setup + +Alternatively, you can load the plugin and configure only the rules you want to use: + +```js +import pluginRouter from '@tanstack/eslint-plugin-router' + +export default [ + { + plugins: { + '@tanstack/router': pluginRouter, + }, + rules: { + '@tanstack/router/create-route-property-order': 'error', + }, + }, + // Any other config... +] +``` + +## Legacy Config (`.eslintrc`) + +### Recommended setup + +To enable all of the recommended rules for our plugin, add `plugin:@tanstack/eslint-plugin-router/recommended` in extends: + +```json +{ + "extends": ["plugin:@tanstack/eslint-plugin-router/recommended"] +} +``` + +### Custom setup + +Alternatively, add `@tanstack/eslint-plugin-router` to the plugins section, and configure the rules you want to use: + +```json +{ + "plugins": ["@tanstack/eslint-plugin-router"], + "rules": { + "@tanstack/router/create-route-property-order": "error" + } +} +``` + +## Rules + +- [@tanstack/router/create-route-property-order](../create-route-property-order) diff --git a/package.json b/package.json index 7d88a2f785..ef88728386 100644 --- a/package.json +++ b/package.json @@ -79,6 +79,7 @@ "@tanstack/router-arktype-adapter": "workspace:*", "@tanstack/start": "workspace:*", "@tanstack/start-vite-plugin": "workspace:*", + "@tanstack/eslint-plugin-router": "workspace:*", "temp-react": "0.0.0-experimental-035a41c4e-20230704", "temp-react-dom": "0.0.0-experimental-035a41c4e-20230704" } diff --git a/packages/eslint-plugin-router/.attw.json b/packages/eslint-plugin-router/.attw.json new file mode 100644 index 0000000000..329bfe8343 --- /dev/null +++ b/packages/eslint-plugin-router/.attw.json @@ -0,0 +1,3 @@ +{ + "ignoreRules": ["false-export-default"] +} diff --git a/packages/eslint-plugin-router/eslint.config.js b/packages/eslint-plugin-router/eslint.config.js new file mode 100644 index 0000000000..8ce6ad05fc --- /dev/null +++ b/packages/eslint-plugin-router/eslint.config.js @@ -0,0 +1,5 @@ +// @ts-check + +import rootConfig from '../../eslint.config.js' + +export default [...rootConfig] diff --git a/packages/eslint-plugin-router/package.json b/packages/eslint-plugin-router/package.json new file mode 100644 index 0000000000..36339eccd7 --- /dev/null +++ b/packages/eslint-plugin-router/package.json @@ -0,0 +1,65 @@ +{ + "name": "@tanstack/eslint-plugin-router", + "version": "5.53.0", + "description": "ESLint plugin for TanStack Router", + "author": "Manuel Schiller", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/router.git", + "directory": "packages/eslint-plugin-router" + }, + "homepage": "https://tanstack.com/router", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "scripts": { + "clean": "rimraf ./dist ./coverage", + "test:eslint": "eslint ./src", + "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", + "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", + "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js", + "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", + "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", + "test:types:ts56": "tsc", + "test:unit": "vitest", + "test:unit:dev": "pnpm run test:unit --watch --typecheck", + "test:build": "publint --strict && attw --pack .", + "build": "vite build" + }, + "type": "module", + "types": "dist/esm/index.d.ts", + "main": "dist/cjs/index.cjs", + "module": "dist/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "files": [ + "dist", + "src" + ], + "dependencies": { + "@typescript-eslint/utils": "^8.3.0" + }, + "devDependencies": { + "@typescript-eslint/rule-tester": "^8.3.0", + "combinate": "^1.1.11", + "eslint": "^9.9.1" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } +} diff --git a/packages/eslint-plugin-router/src/__tests__/create-route-property-order.rule.test.ts b/packages/eslint-plugin-router/src/__tests__/create-route-property-order.rule.test.ts new file mode 100644 index 0000000000..139bd1710f --- /dev/null +++ b/packages/eslint-plugin-router/src/__tests__/create-route-property-order.rule.test.ts @@ -0,0 +1,153 @@ +import { RuleTester } from '@typescript-eslint/rule-tester' +import combinate from 'combinate' +import { + name, + rule, +} from '../rules/create-route-property-order/create-route-property-order.rule' +import { + checkedProperties, + createRouteFunctionsDirect, + createRouteFunctionsIndirect, +} from '../rules/create-route-property-order/constants' +import { + generateInterleavedCombinations, + generatePartialCombinations, + generatePermutations, + normalizeIndent, +} from './test-utils' + +const ruleTester = new RuleTester() + +// reduce the number of test cases by only testing a subset of the checked properties +const testedCheckedProperties = [ + checkedProperties[0], + checkedProperties[1], + checkedProperties[2], +] +type TestedCheckedProperties = (typeof testedCheckedProperties)[number] +const orderIndependentProps = ['gcTime', '...foo'] as const +type OrderIndependentProps = (typeof orderIndependentProps)[number] + +// reduce the number of test cases by only testing the first function of createRouteFunctionsDirect +const testedCreateRouteFunctions = [ + ...createRouteFunctionsIndirect, + createRouteFunctionsDirect[0], +] +type TestedCreateRouteFunction = (typeof testedCreateRouteFunctions)[number] + +interface TestCase { + createRouteFunction: TestedCreateRouteFunction + properties: Array +} + +const validTestMatrix = combinate({ + createRouteFunction: testedCreateRouteFunctions, + properties: generatePartialCombinations(testedCheckedProperties, 2), +}) + +export function generateInvalidPermutations( + arr: ReadonlyArray, +): Array<{ invalid: Array; valid: Array }> { + const combinations = generatePartialCombinations(arr, 2) + const allPermutations: Array<{ invalid: Array; valid: Array }> = [] + + for (const combination of combinations) { + const permutations = generatePermutations(combination) + // skip the first permutation as it matches the original combination + const invalidPermutations = permutations.slice(1) + allPermutations.push( + ...invalidPermutations.map((p) => ({ invalid: p, valid: combination })), + ) + } + + return allPermutations +} + +const invalidPermutations = generateInvalidPermutations(testedCheckedProperties) + +type Interleaved = TestedCheckedProperties | OrderIndependentProps +const interleavedInvalidPermutations: Array<{ + invalid: Array + valid: Array +}> = [] +for (const invalidPermutation of invalidPermutations) { + const invalid = generateInterleavedCombinations( + invalidPermutation.invalid, + orderIndependentProps, + ) + const valid = generateInterleavedCombinations( + invalidPermutation.valid, + orderIndependentProps, + ) + + for (let i = 0; i < invalid.length; i++) { + interleavedInvalidPermutations.push({ + invalid: invalid[i]!, + valid: valid[i]!, + }) + } +} + +const invalidTestMatrix = combinate({ + createRouteFunction: testedCreateRouteFunctions, + properties: interleavedInvalidPermutations, +}) + +function getCode({ createRouteFunction, properties }: TestCase) { + let invocation = '' + switch (createRouteFunction) { + case 'createFileRoute': { + invocation = `('/_layout/hello/foo/$id')` + break + } + case 'createRootRouteWithContext': { + invocation = normalizeIndent` + <{ + queryClient: QueryClient + }>()` + break + } + } + function getPropertyCode( + property: TestedCheckedProperties | OrderIndependentProps, + ) { + if (property.startsWith('...')) { + return property + } + return `${property}: () => null` + } + return ` + import { ${createRouteFunction} } from '@tanstack/react-router' + + const Route = ${createRouteFunction}${invocation}({ + ${properties.map(getPropertyCode).join(',\n ')} + }) + ` +} + +const validTestCases = validTestMatrix.map( + ({ createRouteFunction, properties }) => ({ + name: `should pass when order is correct for ${createRouteFunction} with order: ${properties.join(', ')}`, + code: getCode({ createRouteFunction, properties }), + }), +) + +const invalidTestCases = invalidTestMatrix.map( + ({ createRouteFunction, properties }) => ({ + name: `incorrect property order is detected for ${createRouteFunction} with order: ${properties.invalid.join(', ')}`, + code: getCode({ + createRouteFunction, + properties: properties.invalid, + }), + errors: [{ messageId: 'invalidOrder' }], + output: getCode({ + createRouteFunction, + properties: properties.valid, + }), + }), +) + +ruleTester.run(name, rule, { + valid: validTestCases, + invalid: invalidTestCases, +}) diff --git a/packages/eslint-plugin-router/src/__tests__/create-route-property-order.utils.test.ts b/packages/eslint-plugin-router/src/__tests__/create-route-property-order.utils.test.ts new file mode 100644 index 0000000000..b375ebe3e1 --- /dev/null +++ b/packages/eslint-plugin-router/src/__tests__/create-route-property-order.utils.test.ts @@ -0,0 +1,58 @@ +import { describe, expect, test } from 'vitest' +import { sortDataByOrder } from '../rules/create-route-property-order/create-route-property-order.utils' + +describe('create-route-property-order utils', () => { + describe('sortDataByOrder', () => { + const testCases = [ + { + data: [{ key: 'a' }, { key: 'c' }, { key: 'b' }], + orderArray: ['a', 'b', 'c'], + key: 'key', + expected: [{ key: 'a' }, { key: 'b' }, { key: 'c' }], + }, + { + data: [{ key: 'b' }, { key: 'a' }, { key: 'c' }], + orderArray: ['a', 'b', 'c'], + key: 'key', + expected: [{ key: 'a' }, { key: 'b' }, { key: 'c' }], + }, + { + data: [{ key: 'a' }, { key: 'b' }, { key: 'c' }], + orderArray: ['a', 'b', 'c'], + key: 'key', + expected: null, + }, + { + data: [{ key: 'a' }, { key: 'b' }, { key: 'c' }, { key: 'd' }], + orderArray: ['a', 'b', 'c'], + key: 'key', + expected: null, + }, + { + data: [{ key: 'a' }, { key: 'b' }, { key: 'd' }, { key: 'c' }], + orderArray: ['a', 'b', 'c'], + key: 'key', + expected: null, + }, + { + data: [{ key: 'd' }, { key: 'a' }, { key: 'b' }, { key: 'c' }], + orderArray: ['a', 'b', 'c'], + key: 'key', + expected: null, + }, + { + data: [{ key: 'd' }, { key: 'b' }, { key: 'a' }, { key: 'c' }], + orderArray: ['a', 'b', 'c'], + key: 'key', + expected: [{ key: 'd' }, { key: 'a' }, { key: 'b' }, { key: 'c' }], + }, + ] as const + test.each(testCases)( + '$data $orderArray $key $expected', + ({ data, orderArray, key, expected }) => { + const sortedData = sortDataByOrder(data, orderArray, key) + expect(sortedData).toEqual(expected) + }, + ) + }) +}) diff --git a/packages/eslint-plugin-router/src/__tests__/test-utils.test.ts b/packages/eslint-plugin-router/src/__tests__/test-utils.test.ts new file mode 100644 index 0000000000..aac231ebd3 --- /dev/null +++ b/packages/eslint-plugin-router/src/__tests__/test-utils.test.ts @@ -0,0 +1,104 @@ +import { describe, expect, test } from 'vitest' +import { + expectArrayEqualIgnoreOrder, + generateInterleavedCombinations, + generatePartialCombinations, + generatePermutations, +} from './test-utils' + +describe('test-utils', () => { + describe('generatePermutations', () => { + const testCases = [ + { + input: ['a', 'b', 'c'], + expected: [ + ['a', 'b', 'c'], + ['a', 'c', 'b'], + ['b', 'a', 'c'], + ['b', 'c', 'a'], + ['c', 'a', 'b'], + ['c', 'b', 'a'], + ], + }, + { + input: ['a', 'b'], + expected: [ + ['a', 'b'], + ['b', 'a'], + ], + }, + { + input: ['a'], + expected: [['a']], + }, + ] + test.each(testCases)('$input $expected', ({ input, expected }) => { + const permutations = generatePermutations(input) + expect(permutations).toEqual(expected) + }) + }) + + describe('generatePartialCombinations', () => { + const testCases = [ + { + input: ['a', 'b', 'c'], + minLength: 2, + expected: [ + ['a', 'b'], + ['a', 'c'], + ['b', 'c'], + ['a', 'b', 'c'], + ], + }, + { + input: ['a', 'b'], + expected: [['a', 'b']], + minLength: 2, + }, + { + input: ['a'], + expected: [], + minLength: 2, + }, + { + input: ['a'], + expected: [['a']], + minLength: 1, + }, + { + input: ['a'], + expected: [[], ['a']], + minLength: 0, + }, + ] + test.each(testCases)( + '$input $minLength $expected ', + ({ input, minLength, expected }) => { + const combinations = generatePartialCombinations(input, minLength) + expectArrayEqualIgnoreOrder(combinations, expected) + }, + ) + }) + + describe('generateInterleavedCombinations', () => { + const testCases = [ + { + data: ['a', 'b'], + additional: ['x'], + expected: [ + ['a', 'b'], + ['x', 'a', 'b'], + ['a', 'x', 'b'], + ['a', 'b', 'x'], + ], + }, + ] + test.each(testCases)( + '$input $expected', + ({ data, additional, expected }) => { + const combinations = generateInterleavedCombinations(data, additional) + expectArrayEqualIgnoreOrder(combinations, expected) + }, + ) + }) +}) diff --git a/packages/eslint-plugin-router/src/__tests__/test-utils.ts b/packages/eslint-plugin-router/src/__tests__/test-utils.ts new file mode 100644 index 0000000000..63a2f514fc --- /dev/null +++ b/packages/eslint-plugin-router/src/__tests__/test-utils.ts @@ -0,0 +1,108 @@ +import { expect } from 'vitest' + +export function generatePermutations(arr: Array): Array> { + if (arr.length <= 1) { + return [arr] + } + + const result: Array> = [] + for (let i = 0; i < arr.length; i++) { + const rest = arr.slice(0, i).concat(arr.slice(i + 1)) + const restPermutations = generatePermutations(rest) + for (const perm of restPermutations) { + result.push([arr[i]!, ...perm]) + } + } + + return result +} + +export function generatePartialCombinations( + arr: ReadonlyArray, + minLength: number, +): Array> { + const result: Array> = [] + + function backtrack(start: number, current: Array) { + if (current.length > minLength - 1) { + result.push([...current]) + } + for (let i = start; i < arr.length; i++) { + current.push(arr[i]!) + backtrack(i + 1, current) + current.pop() + } + } + backtrack(0, []) + return result +} + +export function expectArrayEqualIgnoreOrder(a: Array, b: Array) { + expect([...a].sort()).toEqual([...b].sort()) +} + +export function normalizeIndent(template: TemplateStringsArray) { + const codeLines = template[0]?.split('\n') ?? [''] + const leftPadding = codeLines[1]?.match(/\s+/)?.[0] ?? '' + return codeLines.map((line) => line.slice(leftPadding.length)).join('\n') +} + +export function generateInterleavedCombinations< + TData, + TAdditional, + TResult extends TData | TAdditional, +>( + data: Array | ReadonlyArray, + additional: Array | ReadonlyArray, +): Array> { + const result: Array> = [] + + function getSubsets(array: Array): Array> { + return array.reduce( + (subsets, value) => { + return subsets.concat(subsets.map((set) => [...set, value])) + }, + [[]] as Array>, + ) + } + + function insertAtPositions( + data: Array, + subset: Array, + ): Array> { + const combinations: Array> = [] + + const recurse = ( + currentData: Array, + currentSubset: Array, + start: number, + ): void => { + if (currentSubset.length === 0) { + combinations.push([...currentData]) + return + } + + for (let i = start; i <= currentData.length; i++) { + const newData = [ + ...currentData.slice(0, i), + currentSubset[0]!, + ...currentData.slice(i), + ] + recurse(newData, currentSubset.slice(1), i + 1) + } + } + + recurse(data, subset, 0) + return combinations + } + + const subsets = getSubsets(additional as Array) + + subsets.forEach((subset) => { + result.push( + ...insertAtPositions(data as Array, subset as Array), + ) + }) + + return result +} diff --git a/packages/eslint-plugin-router/src/index.ts b/packages/eslint-plugin-router/src/index.ts new file mode 100644 index 0000000000..f02ea5a000 --- /dev/null +++ b/packages/eslint-plugin-router/src/index.ts @@ -0,0 +1,43 @@ +import { rules } from './rules' +import type { ESLint, Linter } from 'eslint' +import type { RuleModule } from '@typescript-eslint/utils/ts-eslint' + +type RuleKey = keyof typeof rules + +interface Plugin extends Omit { + rules: Record> + configs: { + recommended: ESLint.ConfigData + 'flat/recommended': Array + } +} + +const plugin: Plugin = { + meta: { + name: '@tanstack/eslint-plugin-router', + }, + configs: {} as Plugin['configs'], + rules, +} + +// Assign configs here so we can reference `plugin` +Object.assign(plugin.configs, { + recommended: { + plugins: ['@tanstack/eslint-plugin-router'], + rules: { + '@tanstack/router/create-route-property-order': 'warn', + }, + }, + 'flat/recommended': [ + { + plugins: { + '@tanstack/router': plugin, + }, + rules: { + '@tanstack/router/create-route-property-order': 'warn', + }, + }, + ], +}) + +export default plugin diff --git a/packages/eslint-plugin-router/src/rules.ts b/packages/eslint-plugin-router/src/rules.ts new file mode 100644 index 0000000000..73219d401e --- /dev/null +++ b/packages/eslint-plugin-router/src/rules.ts @@ -0,0 +1,15 @@ +import * as createRoutePropertyOrder from './rules/create-route-property-order/create-route-property-order.rule' +import type { ESLintUtils } from '@typescript-eslint/utils' +import type { ExtraRuleDocs } from './types' + +export const rules: Record< + string, + ESLintUtils.RuleModule< + string, + ReadonlyArray, + ExtraRuleDocs, + ESLintUtils.RuleListener + > +> = { + [createRoutePropertyOrder.name]: createRoutePropertyOrder.rule, +} diff --git a/packages/eslint-plugin-router/src/rules/create-route-property-order/constants.ts b/packages/eslint-plugin-router/src/rules/create-route-property-order/constants.ts new file mode 100644 index 0000000000..9cee806177 --- /dev/null +++ b/packages/eslint-plugin-router/src/rules/create-route-property-order/constants.ts @@ -0,0 +1,24 @@ +export const createRouteFunctionsIndirect = [ + 'createFileRoute', + 'createRootRouteWithContext', +] as const +export const createRouteFunctionsDirect = [ + 'createRootRoute', + 'createRoute', +] as const + +export const createRouteFunctions = [ + ...createRouteFunctionsDirect, + ...createRouteFunctionsIndirect, +] as const + +export type CreateRouteFunction = (typeof createRouteFunctions)[number] + +export const checkedProperties = [ + 'params', + 'validateSearch', + 'context', + 'beforeLoad', + 'loaderDeps', + 'loader', +] as const diff --git a/packages/eslint-plugin-router/src/rules/create-route-property-order/create-route-property-order.rule.ts b/packages/eslint-plugin-router/src/rules/create-route-property-order/create-route-property-order.rule.ts new file mode 100644 index 0000000000..4a33cd9391 --- /dev/null +++ b/packages/eslint-plugin-router/src/rules/create-route-property-order/create-route-property-order.rule.ts @@ -0,0 +1,125 @@ +import { AST_NODE_TYPES, ESLintUtils } from '@typescript-eslint/utils' + +import { getDocsUrl } from '../../utils/get-docs-url' +import { detectTanstackRouterImports } from '../../utils/detect-router-imports' +import { sortDataByOrder } from './create-route-property-order.utils' +import { + checkedProperties, + createRouteFunctions, + createRouteFunctionsIndirect, +} from './constants' +import type { CreateRouteFunction } from './constants' +import type { ExtraRuleDocs } from '../../types' + +const createRule = ESLintUtils.RuleCreator(getDocsUrl) + +const createRouteFunctionSet = new Set(createRouteFunctions) +function isCreateRouteFunction(node: any): node is CreateRouteFunction { + return createRouteFunctionSet.has(node) +} + +export const name = 'create-route-property-order' + +export const rule = createRule({ + name, + meta: { + type: 'problem', + docs: { + description: + 'Ensure correct order of inference sensitive properties for createRoute functions', + recommended: 'error', + }, + messages: { + invalidOrder: 'Invalid order of properties for `{{function}}`.', + }, + schema: [], + hasSuggestions: true, + fixable: 'code', + }, + defaultOptions: [], + + create: detectTanstackRouterImports((context) => { + return { + CallExpression(node) { + if (node.callee.type !== AST_NODE_TYPES.Identifier) { + return + } + const createRouteFunction = node.callee.name + if (!isCreateRouteFunction(createRouteFunction)) { + return + } + let args = node.arguments + if (createRouteFunctionsIndirect.includes(createRouteFunction as any)) { + if (node.parent.type === AST_NODE_TYPES.CallExpression) { + args = node.parent.arguments + } else { + return + } + } + + const argument = args[0] + if (argument === undefined || argument.type !== 'ObjectExpression') { + return + } + + const allProperties = argument.properties + + // TODO we need to support spread elements, they would be discarded here + const properties = allProperties.flatMap((p) => { + if ( + p.type === AST_NODE_TYPES.Property && + p.key.type === AST_NODE_TYPES.Identifier + ) { + return { name: p.key.name, property: p } + } else if (p.type === AST_NODE_TYPES.SpreadElement) { + if (p.argument.type === AST_NODE_TYPES.Identifier) { + return { name: p.argument.name, property: p } + } else { + throw new Error('Unsupported spread element') + } + } + return [] + }) + + const sortedProperties = sortDataByOrder( + properties, + checkedProperties, + 'name', + ) + if (sortedProperties === null) { + return + } + context.report({ + node: argument, + data: { function: node.callee.name }, + messageId: 'invalidOrder', + fix(fixer) { + const sourceCode = context.sourceCode + + const text = sortedProperties.reduce( + (sourceText, specifier, index) => { + let text = '' + if (index < allProperties.length - 1) { + text = sourceCode + .getText() + .slice( + allProperties[index]!.range[1], + allProperties[index + 1]!.range[0], + ) + } + return ( + sourceText + sourceCode.getText(specifier.property) + text + ) + }, + '', + ) + return fixer.replaceTextRange( + [allProperties[0]!.range[0], allProperties.at(-1)!.range[1]], + text, + ) + }, + }) + }, + } + }), +}) diff --git a/packages/eslint-plugin-router/src/rules/create-route-property-order/create-route-property-order.utils.ts b/packages/eslint-plugin-router/src/rules/create-route-property-order/create-route-property-order.utils.ts new file mode 100644 index 0000000000..0f7d54a743 --- /dev/null +++ b/packages/eslint-plugin-router/src/rules/create-route-property-order/create-route-property-order.utils.ts @@ -0,0 +1,38 @@ +export function sortDataByOrder( + data: Array | ReadonlyArray, + orderArray: Array | ReadonlyArray, + key: TKey, +): Array | null { + const orderMap = new Map(orderArray.map((item, index) => [item, index])) + + // Separate items that are in orderArray from those that are not + const inOrderArray = data + .filter((item) => orderMap.has(item[key])) + .sort((a, b) => { + const indexA = orderMap.get(a[key])! + const indexB = orderMap.get(b[key])! + + return indexA - indexB + }) + + const inOrderIterator = inOrderArray.values() + + // `as boolean` is needed to avoid TS incorrectly inferring that wasResorted is always `true` + let wasResorted = false as boolean + + const result = data.map((item) => { + if (orderMap.has(item[key])) { + const sortedItem = inOrderIterator.next().value! + if (sortedItem[key] !== item[key]) { + wasResorted = true + } + return sortedItem + } + return item + }) + + if (!wasResorted) { + return null + } + return result +} diff --git a/packages/eslint-plugin-router/src/types.ts b/packages/eslint-plugin-router/src/types.ts new file mode 100644 index 0000000000..74c3053188 --- /dev/null +++ b/packages/eslint-plugin-router/src/types.ts @@ -0,0 +1,3 @@ +export type ExtraRuleDocs = { + recommended: 'strict' | 'error' | 'warn' +} diff --git a/packages/eslint-plugin-router/src/utils/detect-router-imports.ts b/packages/eslint-plugin-router/src/utils/detect-router-imports.ts new file mode 100644 index 0000000000..1e9e047dac --- /dev/null +++ b/packages/eslint-plugin-router/src/utils/detect-router-imports.ts @@ -0,0 +1,94 @@ +import { TSESTree } from '@typescript-eslint/utils' +import type { ESLintUtils, TSESLint } from '@typescript-eslint/utils' + +type Create = Parameters< + ReturnType +>[0]['create'] + +type Context = Parameters[0] +type Options = Parameters[1] +type Helpers = { + isSpecificTanstackRouterImport: ( + node: TSESTree.Identifier, + source: string, + ) => boolean + isTanstackRouterImport: (node: TSESTree.Identifier) => boolean +} + +type EnhancedCreate = ( + context: Context, + options: Options, + helpers: Helpers, +) => ReturnType + +export function detectTanstackRouterImports(create: EnhancedCreate): Create { + return (context, optionsWithDefault) => { + const tanstackRouterImportSpecifiers: Array = [] + + const helpers: Helpers = { + isSpecificTanstackRouterImport(node, source) { + return !!tanstackRouterImportSpecifiers.find((specifier) => { + if ( + specifier.type === TSESTree.AST_NODE_TYPES.ImportSpecifier && + specifier.parent.type === + TSESTree.AST_NODE_TYPES.ImportDeclaration && + specifier.parent.source.value === source + ) { + return node.name === specifier.local.name + } + + return false + }) + }, + isTanstackRouterImport(node) { + return !!tanstackRouterImportSpecifiers.find((specifier) => { + if (specifier.type === TSESTree.AST_NODE_TYPES.ImportSpecifier) { + return node.name === specifier.local.name + } + + return false + }) + }, + } + + const detectionInstructions: TSESLint.RuleListener = { + ImportDeclaration(node) { + if ( + node.specifiers.length > 0 && + node.importKind === 'value' && + node.source.value.startsWith('@tanstack/') && + node.source.value.endsWith('-router') + ) { + tanstackRouterImportSpecifiers.push(...node.specifiers) + } + }, + } + + // Call original rule definition + const ruleInstructions = create(context, optionsWithDefault, helpers) + const enhancedRuleInstructions: TSESLint.RuleListener = {} + + const allKeys = new Set( + Object.keys(detectionInstructions).concat(Object.keys(ruleInstructions)), + ) + + // Iterate over ALL instructions keys so we can override original rule instructions + // to prevent their execution if conditions to report errors are not met. + allKeys.forEach((instruction) => { + enhancedRuleInstructions[instruction] = (node) => { + if (instruction in detectionInstructions) { + detectionInstructions[instruction]?.(node) + } + + const ruleFunction = ruleInstructions[instruction] + if (ruleFunction !== undefined) { + return ruleFunction(node) + } + + return undefined + } + }) + + return enhancedRuleInstructions + } +} diff --git a/packages/eslint-plugin-router/src/utils/get-docs-url.ts b/packages/eslint-plugin-router/src/utils/get-docs-url.ts new file mode 100644 index 0000000000..8e82192cdc --- /dev/null +++ b/packages/eslint-plugin-router/src/utils/get-docs-url.ts @@ -0,0 +1,2 @@ +export const getDocsUrl = (ruleName: string): string => + `https://tanstack.com/router/latest/docs/eslint/${ruleName}` diff --git a/packages/eslint-plugin-router/tsconfig.json b/packages/eslint-plugin-router/tsconfig.json new file mode 100644 index 0000000000..cbceff3f8b --- /dev/null +++ b/packages/eslint-plugin-router/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "moduleResolution": "Bundler" + }, + "include": ["src", "eslint.config.js", "vite.config.ts"] +} diff --git a/packages/eslint-plugin-router/vite.config.ts b/packages/eslint-plugin-router/vite.config.ts new file mode 100644 index 0000000000..e0de55875e --- /dev/null +++ b/packages/eslint-plugin-router/vite.config.ts @@ -0,0 +1,23 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { tanstackViteConfig } from '@tanstack/config/vite' +import packageJson from './package.json' + +const config = defineConfig({ + test: { + name: packageJson.name, + dir: './src', + watch: false, + globals: true, + typecheck: { enabled: true }, + restoreMocks: true, + }, +}) + +export default mergeConfig( + config, + tanstackViteConfig({ + entry: './src/index.ts', + srcDir: './src', + exclude: ['./src/__tests__'], + }), +) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fe3c63b82b..ca268d31f3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,6 +22,7 @@ overrides: '@tanstack/router-arktype-adapter': workspace:* '@tanstack/start': workspace:* '@tanstack/start-vite-plugin': workspace:* + '@tanstack/eslint-plugin-router': workspace:* temp-react: 0.0.0-experimental-035a41c4e-20230704 temp-react-dom: 0.0.0-experimental-035a41c4e-20230704 @@ -2577,6 +2578,22 @@ importers: specifier: ^0.1.0 version: 0.1.0 + packages/eslint-plugin-router: + dependencies: + '@typescript-eslint/utils': + specifier: ^8.3.0 + version: 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + devDependencies: + '@typescript-eslint/rule-tester': + specifier: ^8.3.0 + version: 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + combinate: + specifier: ^1.1.11 + version: 1.1.11 + eslint: + specifier: ^9.10.0 + version: 9.10.0(jiti@1.21.6) + packages/history: {} packages/react-cross-context: @@ -5235,6 +5252,12 @@ packages: typescript: optional: true + '@typescript-eslint/rule-tester@8.5.0': + resolution: {integrity: sha512-ySLDyc7rktaTLcAICIKf5MG6tjc20g9e6oud4oG1OlsBLZlV9Yl4iuCnmBILojjST8/iYs5o1qebYhF1r97EfA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + '@typescript-eslint/scope-manager@8.3.0': resolution: {integrity: sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -12152,6 +12175,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/rule-tester@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': + dependencies: + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + ajv: 6.12.6 + eslint: 9.10.0(jiti@1.21.6) + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + - typescript + '@typescript-eslint/scope-manager@8.3.0': dependencies: '@typescript-eslint/types': 8.3.0 diff --git a/scripts/publish.js b/scripts/publish.js index 83381f3a89..3f2f8b10c7 100644 --- a/scripts/publish.js +++ b/scripts/publish.js @@ -72,6 +72,10 @@ await publish({ name: '@tanstack/create-router', packageDir: 'packages/create-router', }, + { + name: '@tanstack/eslint-plugin-router', + packageDir: 'packages/eslint-plugin-router', + }, ], branchConfigs: { main: { From 2018e1d509ea0764654ea4ee2f8ec2d1c5ae496d Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Wed, 18 Sep 2024 20:27:24 +0000 Subject: [PATCH 135/154] release: v1.58.0 --- packages/eslint-plugin-router/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-plugin-router/package.json b/packages/eslint-plugin-router/package.json index 36339eccd7..7e0cbdd51f 100644 --- a/packages/eslint-plugin-router/package.json +++ b/packages/eslint-plugin-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/eslint-plugin-router", - "version": "5.53.0", + "version": "1.58.0", "description": "ESLint plugin for TanStack Router", "author": "Manuel Schiller", "license": "MIT", From 032787a08c6cb7d5b7fe66b0efc8384c6e903cc1 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Wed, 18 Sep 2024 22:35:00 +0200 Subject: [PATCH 136/154] fix(react-router): correctly preload split routes without loaders (#2365) --- .../.gitignore | 10 + .../index.html | 24 ++ .../package.json | 27 ++ .../playwright.config.ts | 29 ++ .../src/main.tsx | 25 ++ .../src/posts.tsx | 32 ++ .../src/routeTree.gen.ts | 325 ++++++++++++++++++ .../src/routes/__root.tsx | 70 ++++ .../src/routes/_layout.tsx | 16 + .../src/routes/_layout/_layout-2.tsx | 34 ++ .../src/routes/_layout/_layout-2/layout-a.tsx | 9 + .../src/routes/_layout/_layout-2/layout-b.tsx | 9 + .../src/routes/index.tsx | 14 + .../src/routes/posts.$postId.tsx | 28 ++ .../src/routes/posts.index.tsx | 10 + .../src/routes/posts.tsx | 39 +++ .../src/routes/without-loader.tsx | 5 + .../tests/app.spec.ts | 34 ++ .../tests/preload.test.ts | 21 ++ .../tsconfig.json | 11 + .../vite.config.ts | 8 + .../basic-file-based/package.json | 1 - .../basic-react-query-file-based/package.json | 1 - .../basic-virtual-file-based/package.json | 1 - .../react/authenticated-routes/package.json | 1 - .../package.json | 1 - examples/react/basic-file-based/package.json | 1 - examples/react/deferred-data/package.json | 1 - examples/react/large-file-based/package.json | 1 - .../react/quickstart-file-based/package.json | 1 - .../react/with-framer-motion/package.json | 1 - package.json | 4 +- packages/react-router/src/router.ts | 14 +- packages/router-generator/package.json | 1 + .../file-modification/snapshot/empty.lazy.tsx | 48 --- .../file-modification/snapshot/empty.tsx | 48 --- pnpm-lock.yaml | 67 ++-- 37 files changed, 833 insertions(+), 139 deletions(-) create mode 100644 e2e/react-router/basic-file-based-code-splitting/.gitignore create mode 100644 e2e/react-router/basic-file-based-code-splitting/index.html create mode 100644 e2e/react-router/basic-file-based-code-splitting/package.json create mode 100644 e2e/react-router/basic-file-based-code-splitting/playwright.config.ts create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/main.tsx create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/posts.tsx create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/routeTree.gen.ts create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/routes/__root.tsx create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/routes/_layout.tsx create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/routes/_layout/_layout-2.tsx create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/routes/_layout/_layout-2/layout-a.tsx create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/routes/_layout/_layout-2/layout-b.tsx create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/routes/index.tsx create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/routes/posts.$postId.tsx create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/routes/posts.index.tsx create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/routes/posts.tsx create mode 100644 e2e/react-router/basic-file-based-code-splitting/src/routes/without-loader.tsx create mode 100644 e2e/react-router/basic-file-based-code-splitting/tests/app.spec.ts create mode 100644 e2e/react-router/basic-file-based-code-splitting/tests/preload.test.ts create mode 100644 e2e/react-router/basic-file-based-code-splitting/tsconfig.json create mode 100644 e2e/react-router/basic-file-based-code-splitting/vite.config.ts delete mode 100644 packages/router-generator/tests/generator/file-modification/snapshot/empty.lazy.tsx delete mode 100644 packages/router-generator/tests/generator/file-modification/snapshot/empty.tsx diff --git a/e2e/react-router/basic-file-based-code-splitting/.gitignore b/e2e/react-router/basic-file-based-code-splitting/.gitignore new file mode 100644 index 0000000000..a6ea47e508 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/.gitignore @@ -0,0 +1,10 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local + +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/e2e/react-router/basic-file-based-code-splitting/index.html b/e2e/react-router/basic-file-based-code-splitting/index.html new file mode 100644 index 0000000000..a4b3349437 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/index.html @@ -0,0 +1,24 @@ + + + + + + Vite App + + + + +
+ + + diff --git a/e2e/react-router/basic-file-based-code-splitting/package.json b/e2e/react-router/basic-file-based-code-splitting/package.json new file mode 100644 index 0000000000..f6fec0dbc9 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/package.json @@ -0,0 +1,27 @@ +{ + "name": "tanstack-router-e2e-react-basic-file-based-code-splitting", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --port=3001", + "build": "vite build && tsc --noEmit", + "serve": "vite preview", + "start": "vite", + "test:e2e": "playwright test --project=chromium" + }, + "dependencies": { + "@tanstack/react-router": "workspace:^", + "@tanstack/router-devtools": "workspace:^", + "@tanstack/router-plugin": "workspace:^", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "zod": "^3.23.8" + }, + "devDependencies": { + "@playwright/test": "^1.47.1", + "@types/react": "^18.2.47", + "@types/react-dom": "^18.2.18", + "@vitejs/plugin-react": "^4.3.1", + "vite": "^5.4.5" + } +} diff --git a/e2e/react-router/basic-file-based-code-splitting/playwright.config.ts b/e2e/react-router/basic-file-based-code-splitting/playwright.config.ts new file mode 100644 index 0000000000..f83eacf129 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/playwright.config.ts @@ -0,0 +1,29 @@ +import { defineConfig, devices } from '@playwright/test' + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './tests', + + reporter: [['line']], + + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL: 'http://localhost:3001/', + }, + + webServer: { + command: 'pnpm run dev', + url: 'http://localhost:3001', + reuseExistingServer: !process.env.CI, + stdout: 'pipe', + }, + + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + ], +}) diff --git a/e2e/react-router/basic-file-based-code-splitting/src/main.tsx b/e2e/react-router/basic-file-based-code-splitting/src/main.tsx new file mode 100644 index 0000000000..18b1b603f8 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/main.tsx @@ -0,0 +1,25 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import { RouterProvider, createRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' + +// Set up a Router instance +const router = createRouter({ + routeTree, + defaultPreload: 'intent', + defaultStaleTime: 5000, +}) + +// Register things for typesafety +declare module '@tanstack/react-router' { + interface Register { + router: typeof router + } +} + +const rootElement = document.getElementById('app')! + +if (!rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement) + root.render() +} diff --git a/e2e/react-router/basic-file-based-code-splitting/src/posts.tsx b/e2e/react-router/basic-file-based-code-splitting/src/posts.tsx new file mode 100644 index 0000000000..3ccf1ff421 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/posts.tsx @@ -0,0 +1,32 @@ +import { notFound } from '@tanstack/react-router' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPost = async (postId: string) => { + console.info(`Fetching post with id ${postId}...`) + await new Promise((r) => setTimeout(r, 500)) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + if (err.status === 404) { + throw notFound() + } + throw err + }) + + return post +} + +export const fetchPosts = async () => { + console.info('Fetching posts...') + await new Promise((r) => setTimeout(r, 500)) + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) +} diff --git a/e2e/react-router/basic-file-based-code-splitting/src/routeTree.gen.ts b/e2e/react-router/basic-file-based-code-splitting/src/routeTree.gen.ts new file mode 100644 index 0000000000..b5bbbfc90b --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/routeTree.gen.ts @@ -0,0 +1,325 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as WithoutLoaderImport } from './routes/without-loader' +import { Route as PostsImport } from './routes/posts' +import { Route as LayoutImport } from './routes/_layout' +import { Route as IndexImport } from './routes/index' +import { Route as PostsIndexImport } from './routes/posts.index' +import { Route as PostsPostIdImport } from './routes/posts.$postId' +import { Route as LayoutLayout2Import } from './routes/_layout/_layout-2' +import { Route as LayoutLayout2LayoutBImport } from './routes/_layout/_layout-2/layout-b' +import { Route as LayoutLayout2LayoutAImport } from './routes/_layout/_layout-2/layout-a' + +// Create/Update Routes + +const WithoutLoaderRoute = WithoutLoaderImport.update({ + path: '/without-loader', + getParentRoute: () => rootRoute, +} as any) + +const PostsRoute = PostsImport.update({ + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const LayoutRoute = LayoutImport.update({ + id: '/_layout', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const PostsIndexRoute = PostsIndexImport.update({ + path: '/', + getParentRoute: () => PostsRoute, +} as any) + +const PostsPostIdRoute = PostsPostIdImport.update({ + path: '/$postId', + getParentRoute: () => PostsRoute, +} as any) + +const LayoutLayout2Route = LayoutLayout2Import.update({ + id: '/_layout-2', + getParentRoute: () => LayoutRoute, +} as any) + +const LayoutLayout2LayoutBRoute = LayoutLayout2LayoutBImport.update({ + path: '/layout-b', + getParentRoute: () => LayoutLayout2Route, +} as any) + +const LayoutLayout2LayoutARoute = LayoutLayout2LayoutAImport.update({ + path: '/layout-a', + getParentRoute: () => LayoutLayout2Route, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/_layout': { + id: '/_layout' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsImport + parentRoute: typeof rootRoute + } + '/without-loader': { + id: '/without-loader' + path: '/without-loader' + fullPath: '/without-loader' + preLoaderRoute: typeof WithoutLoaderImport + parentRoute: typeof rootRoute + } + '/_layout/_layout-2': { + id: '/_layout/_layout-2' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutLayout2Import + parentRoute: typeof LayoutImport + } + '/posts/$postId': { + id: '/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof PostsPostIdImport + parentRoute: typeof PostsImport + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof PostsIndexImport + parentRoute: typeof PostsImport + } + '/_layout/_layout-2/layout-a': { + id: '/_layout/_layout-2/layout-a' + path: '/layout-a' + fullPath: '/layout-a' + preLoaderRoute: typeof LayoutLayout2LayoutAImport + parentRoute: typeof LayoutLayout2Import + } + '/_layout/_layout-2/layout-b': { + id: '/_layout/_layout-2/layout-b' + path: '/layout-b' + fullPath: '/layout-b' + preLoaderRoute: typeof LayoutLayout2LayoutBImport + parentRoute: typeof LayoutLayout2Import + } + } +} + +// Create and export the route tree + +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/without-loader': typeof WithoutLoaderRoute + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute +} + +export interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/without-loader': typeof WithoutLoaderRoute + '/posts/$postId': typeof PostsPostIdRoute + '/posts': typeof PostsIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/posts': typeof PostsRouteWithChildren + '/without-loader': typeof WithoutLoaderRoute + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/posts/': typeof PostsIndexRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/posts' + | '/without-loader' + | '/posts/$postId' + | '/posts/' + | '/layout-a' + | '/layout-b' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/without-loader' + | '/posts/$postId' + | '/posts' + | '/layout-a' + | '/layout-b' + id: + | '__root__' + | '/' + | '/_layout' + | '/posts' + | '/without-loader' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/posts/' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + PostsRoute: typeof PostsRouteWithChildren + WithoutLoaderRoute: typeof WithoutLoaderRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + PostsRoute: PostsRouteWithChildren, + WithoutLoaderRoute: WithoutLoaderRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/_layout", + "/posts", + "/without-loader" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_layout": { + "filePath": "_layout.tsx", + "children": [ + "/_layout/_layout-2" + ] + }, + "/posts": { + "filePath": "posts.tsx", + "children": [ + "/posts/$postId", + "/posts/" + ] + }, + "/without-loader": { + "filePath": "without-loader.tsx" + }, + "/_layout/_layout-2": { + "filePath": "_layout/_layout-2.tsx", + "parent": "/_layout", + "children": [ + "/_layout/_layout-2/layout-a", + "/_layout/_layout-2/layout-b" + ] + }, + "/posts/$postId": { + "filePath": "posts.$postId.tsx", + "parent": "/posts" + }, + "/posts/": { + "filePath": "posts.index.tsx", + "parent": "/posts" + }, + "/_layout/_layout-2/layout-a": { + "filePath": "_layout/_layout-2/layout-a.tsx", + "parent": "/_layout/_layout-2" + }, + "/_layout/_layout-2/layout-b": { + "filePath": "_layout/_layout-2/layout-b.tsx", + "parent": "/_layout/_layout-2" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/e2e/react-router/basic-file-based-code-splitting/src/routes/__root.tsx b/e2e/react-router/basic-file-based-code-splitting/src/routes/__root.tsx new file mode 100644 index 0000000000..f4dca5da2c --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/routes/__root.tsx @@ -0,0 +1,70 @@ +import * as React from 'react' +import { Link, Outlet, createRootRoute } from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/router-devtools' + +export const Route = createRootRoute({ + component: RootComponent, + notFoundComponent: () => { + return ( +
+

This is the notFoundComponent configured on root route

+ Start Over +
+ ) + }, +}) + +function RootComponent() { + return ( + <> +
+ + Home + {' '} + + Posts + {' '} + + Layout + {' '} + + without-loader + {' '} + + This Route Does Not Exist + +
+
+ + {/* Start rendering router matches */} + + + ) +} diff --git a/e2e/react-router/basic-file-based-code-splitting/src/routes/_layout.tsx b/e2e/react-router/basic-file-based-code-splitting/src/routes/_layout.tsx new file mode 100644 index 0000000000..02ddbb1cd9 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/routes/_layout.tsx @@ -0,0 +1,16 @@ +import { Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a layout
+
+ +
+
+ ) +} diff --git a/e2e/react-router/basic-file-based-code-splitting/src/routes/_layout/_layout-2.tsx b/e2e/react-router/basic-file-based-code-splitting/src/routes/_layout/_layout-2.tsx new file mode 100644 index 0000000000..3b7dbf2903 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/routes/_layout/_layout-2.tsx @@ -0,0 +1,34 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a nested layout
+
+ + Layout A + + + Layout B + +
+
+ +
+
+ ) +} diff --git a/e2e/react-router/basic-file-based-code-splitting/src/routes/_layout/_layout-2/layout-a.tsx b/e2e/react-router/basic-file-based-code-splitting/src/routes/_layout/_layout-2/layout-a.tsx new file mode 100644 index 0000000000..61e19b4d9f --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/routes/_layout/_layout-2/layout-a.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-a')({ + component: LayoutAComponent, +}) + +function LayoutAComponent() { + return
I'm layout A!
+} diff --git a/e2e/react-router/basic-file-based-code-splitting/src/routes/_layout/_layout-2/layout-b.tsx b/e2e/react-router/basic-file-based-code-splitting/src/routes/_layout/_layout-2/layout-b.tsx new file mode 100644 index 0000000000..cceed1fb9a --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/routes/_layout/_layout-2/layout-b.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-b')({ + component: LayoutBComponent, +}) + +function LayoutBComponent() { + return
I'm layout B!
+} diff --git a/e2e/react-router/basic-file-based-code-splitting/src/routes/index.tsx b/e2e/react-router/basic-file-based-code-splitting/src/routes/index.tsx new file mode 100644 index 0000000000..eac82a9174 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/routes/index.tsx @@ -0,0 +1,14 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!

+
+ ) +} diff --git a/e2e/react-router/basic-file-based-code-splitting/src/routes/posts.$postId.tsx b/e2e/react-router/basic-file-based-code-splitting/src/routes/posts.$postId.tsx new file mode 100644 index 0000000000..febb02ab2f --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/routes/posts.$postId.tsx @@ -0,0 +1,28 @@ +import * as React from 'react' +import { ErrorComponent, createFileRoute } from '@tanstack/react-router' +import { fetchPost } from '../posts' +import type { ErrorComponentProps } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/$postId')({ + loader: async ({ params: { postId } }) => fetchPost(postId), + errorComponent: PostErrorComponent as any, + notFoundComponent: () => { + return

Post not found

+ }, + component: PostComponent, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const post = Route.useLoaderData() + + return ( +
+

{post.title}

+
{post.body}
+
+ ) +} diff --git a/e2e/react-router/basic-file-based-code-splitting/src/routes/posts.index.tsx b/e2e/react-router/basic-file-based-code-splitting/src/routes/posts.index.tsx new file mode 100644 index 0000000000..056433ca0a --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/routes/posts.index.tsx @@ -0,0 +1,10 @@ +import * as React from 'react' +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/e2e/react-router/basic-file-based-code-splitting/src/routes/posts.tsx b/e2e/react-router/basic-file-based-code-splitting/src/routes/posts.tsx new file mode 100644 index 0000000000..c7a09ed7f8 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/routes/posts.tsx @@ -0,0 +1,39 @@ +import * as React from 'react' +import { Link, Outlet, createFileRoute } from '@tanstack/react-router' +import { fetchPosts } from '../posts' + +export const Route = createFileRoute('/posts')({ + loader: fetchPosts, + component: PostsComponent, +}) + +function PostsComponent() { + const posts = Route.useLoaderData() + + return ( +
+
    + {[...posts, { id: 'i-do-not-exist', title: 'Non-existent Post' }].map( + (post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + }, + )} +
+
+ +
+ ) +} diff --git a/e2e/react-router/basic-file-based-code-splitting/src/routes/without-loader.tsx b/e2e/react-router/basic-file-based-code-splitting/src/routes/without-loader.tsx new file mode 100644 index 0000000000..9dddcfe5f4 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/src/routes/without-loader.tsx @@ -0,0 +1,5 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/without-loader')({ + component: () =>
Hello /without-loader!
, +}) diff --git a/e2e/react-router/basic-file-based-code-splitting/tests/app.spec.ts b/e2e/react-router/basic-file-based-code-splitting/tests/app.spec.ts new file mode 100644 index 0000000000..f19a88b569 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/tests/app.spec.ts @@ -0,0 +1,34 @@ +import { expect, test } from '@playwright/test' + +test.beforeEach(async ({ page }) => { + await page.goto('/') +}) + +test('Navigating to a post page', async ({ page }) => { + await page.getByRole('link', { name: 'Posts' }).click() + await page.getByRole('link', { name: 'sunt aut facere repe' }).click() + await expect(page.getByRole('heading')).toContainText('sunt aut facere') +}) + +test('Navigating nested layouts', async ({ page }) => { + await page.goto('/') + await page.getByRole('link', { name: 'Layout', exact: true }).click() + + await expect(page.locator('#app')).toContainText("I'm a layout") + await expect(page.locator('#app')).toContainText("I'm a nested layout") + + await page.getByRole('link', { name: 'Layout A' }).click() + await expect(page.locator('#app')).toContainText("I'm layout A!") + + await page.getByRole('link', { name: 'Layout B' }).click() + await expect(page.locator('#app')).toContainText("I'm layout B!") +}) + +test('Navigating to a not-found route', async ({ page }) => { + await page.getByRole('link', { name: 'This Route Does Not Exist' }).click() + await expect(page.getByRole('paragraph')).toContainText( + 'This is the notFoundComponent configured on root route', + ) + await page.getByRole('link', { name: 'Start Over' }).click() + await expect(page.getByRole('heading')).toContainText('Welcome Home!') +}) diff --git a/e2e/react-router/basic-file-based-code-splitting/tests/preload.test.ts b/e2e/react-router/basic-file-based-code-splitting/tests/preload.test.ts new file mode 100644 index 0000000000..e1334df0d2 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/tests/preload.test.ts @@ -0,0 +1,21 @@ +import { expect, test } from '@playwright/test' + +test.beforeEach(async ({ page }) => { + await page.goto('/') +}) + +test('hovering a link with preload=intent to a route without a loader should preload route', async ({ + page, +}) => { + await page.waitForLoadState('networkidle') + + const requestPromise = new Promise((resolve) => { + page.on('request', (request) => { + resolve(request.url()) + }) + }) + + await page.getByRole('link', { name: 'without-loader' }).hover() + const url = await requestPromise + expect(url).toContain('without-loader.tsx?tsr-split') +}) diff --git a/e2e/react-router/basic-file-based-code-splitting/tsconfig.json b/e2e/react-router/basic-file-based-code-splitting/tsconfig.json new file mode 100644 index 0000000000..3435721cc4 --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", + "noEmit": true, + "skipLibCheck": true + } +} diff --git a/e2e/react-router/basic-file-based-code-splitting/vite.config.ts b/e2e/react-router/basic-file-based-code-splitting/vite.config.ts new file mode 100644 index 0000000000..3cc73e272d --- /dev/null +++ b/e2e/react-router/basic-file-based-code-splitting/vite.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import { TanStackRouterVite } from '@tanstack/router-plugin/vite' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [TanStackRouterVite({ autoCodeSplitting: true }), react()], +}) diff --git a/e2e/react-router/basic-file-based/package.json b/e2e/react-router/basic-file-based/package.json index baccfe13d1..76f565d77f 100644 --- a/e2e/react-router/basic-file-based/package.json +++ b/e2e/react-router/basic-file-based/package.json @@ -13,7 +13,6 @@ "@tanstack/react-router": "workspace:^", "@tanstack/router-devtools": "workspace:^", "@tanstack/router-plugin": "workspace:^", - "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/e2e/react-router/basic-react-query-file-based/package.json b/e2e/react-router/basic-react-query-file-based/package.json index 184ac95ac6..1476b96c28 100644 --- a/e2e/react-router/basic-react-query-file-based/package.json +++ b/e2e/react-router/basic-react-query-file-based/package.json @@ -15,7 +15,6 @@ "@tanstack/react-router": "workspace:^", "@tanstack/router-devtools": "workspace:^", "@tanstack/router-plugin": "workspace:^", - "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/e2e/react-router/basic-virtual-file-based/package.json b/e2e/react-router/basic-virtual-file-based/package.json index b7857ce83a..b05ac20371 100644 --- a/e2e/react-router/basic-virtual-file-based/package.json +++ b/e2e/react-router/basic-virtual-file-based/package.json @@ -14,7 +14,6 @@ "@tanstack/router-devtools": "workspace:^", "@tanstack/router-plugin": "workspace:^", "@tanstack/virtual-file-routes": "workspace:^", - "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index c757035599..b1b71e9c75 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -12,7 +12,6 @@ "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.19", - "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index cc678bbb5e..a747267634 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -12,7 +12,6 @@ "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.19", - "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index b883393af4..a49b51328f 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -12,7 +12,6 @@ "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.19", - "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 6837bed846..c97f3d3820 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -12,7 +12,6 @@ "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", "redaxios": "^0.5.1", - "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "zod": "^3.23.8" diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 30e23f63c8..557361f1bd 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -15,7 +15,6 @@ "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.19", - "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 3382afd3b6..56ea4384d0 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -12,7 +12,6 @@ "@tanstack/react-router": "^1.57.18", "@tanstack/router-devtools": "^1.57.18", "@tanstack/router-plugin": "^1.57.19", - "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 2d2ea4df51..103cb0d7df 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -13,7 +13,6 @@ "@tanstack/router-devtools": "^1.57.18", "redaxios": "^0.5.1", "framer-motion": "^11.5.4", - "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "zod": "^3.23.8" diff --git a/package.json b/package.json index ef88728386..034e85df36 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,8 @@ "test:build": "nx affected --target=test:build --exclude=examples/**", "test:types": "nx affected --target=test:types --exclude=examples/**", "test:e2e": "nx run-many --target=test:e2e", - "build": "nx affected --target=build --exclude=examples/**", - "build:all": "nx run-many --target=build --exclude=examples/**", + "build": "nx affected --target=build --exclude=e2e/** --exclude=examples/**", + "build:all": "nx run-many --target=build --exclude=examples/** --exclude=e2e/** ", "watch": "pnpm run build:all && nx watch --all -- pnpm run build:all", "dev": "pnpm run watch", "prettier": "prettier --ignore-unknown '**/*'", diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index c279a6d7d1..387cd97c3f 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -532,6 +532,15 @@ export const componentTypes = [ 'notFoundComponent', ] as const +function routeNeedsPreload(route: AnyRoute) { + for (const componentType of componentTypes) { + if ((route.options[componentType] as any)?.preload) { + return true + } + } + return false +} + export type RouterEvents = { onBeforeNavigate: { type: 'onBeforeNavigate' @@ -1179,7 +1188,10 @@ export class Router< } } else { const status = - route.options.loader || route.options.beforeLoad || route.lazyFn + route.options.loader || + route.options.beforeLoad || + route.lazyFn || + routeNeedsPreload(route) ? 'pending' : 'success' diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 82fb4c861d..2e3c0673db 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -25,6 +25,7 @@ ], "scripts": { "clean": "rimraf ./dist && rimraf ./coverage", + "clean:snapshots": "rimraf **/*snapshot* --glob", "test:eslint": "eslint ./src", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js", diff --git a/packages/router-generator/tests/generator/file-modification/snapshot/empty.lazy.tsx b/packages/router-generator/tests/generator/file-modification/snapshot/empty.lazy.tsx deleted file mode 100644 index d8a6feca9b..0000000000 --- a/packages/router-generator/tests/generator/file-modification/snapshot/empty.lazy.tsx +++ /dev/null @@ -1,48 +0,0 @@ -// @ts-nocheck - -import * as React from 'react' -import { - ErrorComponent, - ErrorComponentProps, - Link, - createFileRoute, -} from '@tanstack/react-router' - -export const Route = createFileRoute('/(test)/foo')({ - loader: async ({ params: { postId } }) => ({ - postId, - title: 'title', - body: 'body', - id: 'id', - }), - errorComponent: PostErrorComponent as any, - notFoundComponent: () => { - return

Post not found

- }, - component: PostComponent, -}) - -export function PostErrorComponent({ error }: ErrorComponentProps) { - return -} - -function PostComponent() { - const post = Route.useLoaderData() - - return ( -
-

{post.title}

-
{post.body}
- - Deep View - -
- ) -} diff --git a/packages/router-generator/tests/generator/file-modification/snapshot/empty.tsx b/packages/router-generator/tests/generator/file-modification/snapshot/empty.tsx deleted file mode 100644 index d8a6feca9b..0000000000 --- a/packages/router-generator/tests/generator/file-modification/snapshot/empty.tsx +++ /dev/null @@ -1,48 +0,0 @@ -// @ts-nocheck - -import * as React from 'react' -import { - ErrorComponent, - ErrorComponentProps, - Link, - createFileRoute, -} from '@tanstack/react-router' - -export const Route = createFileRoute('/(test)/foo')({ - loader: async ({ params: { postId } }) => ({ - postId, - title: 'title', - body: 'body', - id: 'id', - }), - errorComponent: PostErrorComponent as any, - notFoundComponent: () => { - return

Post not found

- }, - component: PostComponent, -}) - -export function PostErrorComponent({ error }: ErrorComponentProps) { - return -} - -function PostComponent() { - const post = Route.useLoaderData() - - return ( -
-

{post.title}

-
{post.body}
- - Deep View - -
- ) -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ca268d31f3..a0a64400f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -154,9 +154,6 @@ importers: '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin - immer: - specifier: ^10.1.1 - version: 10.1.1 react: specifier: ^18.2.0 version: 18.3.1 @@ -186,6 +183,43 @@ importers: specifier: ^5.4.5 version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) + e2e/react-router/basic-file-based-code-splitting: + dependencies: + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/router-devtools': + specifier: workspace:* + version: link:../../../packages/router-devtools + '@tanstack/router-plugin': + specifier: workspace:* + version: link:../../../packages/router-plugin + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + zod: + specifier: ^3.23.8 + version: 3.23.8 + devDependencies: + '@playwright/test': + specifier: ^1.47.1 + version: 1.47.1 + '@types/react': + specifier: ^18.2.47 + version: 18.3.5 + '@types/react-dom': + specifier: ^18.2.18 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) + vite: + specifier: ^5.4.5 + version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) + e2e/react-router/basic-react-query: dependencies: '@tanstack/react-query': @@ -243,9 +277,6 @@ importers: '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin - immer: - specifier: ^10.1.1 - version: 10.1.1 react: specifier: ^18.2.0 version: 18.3.1 @@ -289,9 +320,6 @@ importers: '@tanstack/virtual-file-routes': specifier: workspace:* version: link:../../../packages/virtual-file-routes - immer: - specifier: ^10.1.1 - version: 10.1.1 react: specifier: ^18.2.0 version: 18.3.1 @@ -700,9 +728,6 @@ importers: '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin - immer: - specifier: ^10.1.1 - version: 10.1.1 react: specifier: ^18.2.0 version: 18.3.1 @@ -808,9 +833,6 @@ importers: '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin - immer: - specifier: ^10.1.1 - version: 10.1.1 react: specifier: ^18.2.0 version: 18.3.1 @@ -848,9 +870,6 @@ importers: '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin - immer: - specifier: ^10.1.1 - version: 10.1.1 react: specifier: ^18.2.0 version: 18.3.1 @@ -1185,9 +1204,6 @@ importers: '@tanstack/router-devtools': specifier: workspace:* version: link:../../../packages/router-devtools - immer: - specifier: ^10.1.1 - version: 10.1.1 react: specifier: ^18.2.0 version: 18.3.1 @@ -1394,9 +1410,6 @@ importers: '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin - immer: - specifier: ^10.1.1 - version: 10.1.1 react: specifier: ^18.2.0 version: 18.3.1 @@ -1533,9 +1546,6 @@ importers: '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin - immer: - specifier: ^10.1.1 - version: 10.1.1 react: specifier: ^18.2.0 version: 18.3.1 @@ -2366,9 +2376,6 @@ importers: framer-motion: specifier: ^11.5.4 version: 11.5.4(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - immer: - specifier: ^10.1.1 - version: 10.1.1 react: specifier: ^18.2.0 version: 18.3.1 From c17982ebed92b4d9c7f5785dce9d3a7accfcfa60 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Wed, 18 Sep 2024 20:39:48 +0000 Subject: [PATCH 137/154] release: v1.58.1 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic-virtual-file-based/package.json | 6 +++--- .../basic-virtual-inside-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-supabase-basic/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-cli/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-generator/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 49 files changed, 127 insertions(+), 127 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index b1b71e9c75..636a5a7809 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index d9865b4f83..3b498289f4 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index a747267634..1c5c5a9929 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index a49b51328f..4896df7470 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index e05dbf22e3..10edf4a153 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 64691ec94d..f716b2af84 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 1371d6df80..64389f963e 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", - "@tanstack/start": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", + "@tanstack/start": "^1.58.1", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 1541953ea3..c2eb75fb76 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", - "@tanstack/start": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", + "@tanstack/start": "^1.58.1", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index dd5875f1ca..1169437a6e 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index d8d37d972a..a6d7778bdc 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 83f6834bde..c50693c23c 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index c97f3d3820..91d6528e52 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 64cdea54be..eadd6cac6b 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 0c3dc293ee..277240dfc4 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 50f253b474..302bf39898 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 6a9055099a..252f0bc4e5 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 557361f1bd..1434d659e3 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 1cb66a4a9f..84688ba7b6 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index c7890b93fb..855b0fdd62 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 56ea4384d0..d18be8f107 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 342570ad3a..cf116d84a7 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.4", "@rsbuild/plugin-react": "1.0.2", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/router-plugin": "^1.58.1", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.6.2" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 9a4a145dcb..10a2d1c613 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.26", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/router-plugin": "^1.58.1", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index c2b31dc4ac..1dd4ccd895 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index d37290f44a..c3dbbfa4f2 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", + "@tanstack/react-router": "^1.58.1", "@tanstack/react-virtual": "^3.10.7", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/router-devtools": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 7e868306f4..222526f778 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", - "@tanstack/router-zod-adapter": "^1.57.18", - "@tanstack/router-valibot-adapter": "^1.57.18", - "@tanstack/router-arktype-adapter": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", + "@tanstack/router-zod-adapter": "^1.58.1", + "@tanstack/router-valibot-adapter": "^1.58.1", + "@tanstack/router-arktype-adapter": "^1.58.1", "@tanstack/react-query": "^5.56.2", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 7b682180a1..c9a8eba438 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@prisma/client": "5.19.1", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", - "@tanstack/start": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", + "@tanstack/start": "^1.58.1", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 6eb442d268..543bb52b8f 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/start": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/start": "^1.58.1", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.3" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 524bd3946c..0fbbdf0e02 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.18", - "@tanstack/react-router-with-query": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", - "@tanstack/start": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/react-router-with-query": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", + "@tanstack/start": "^1.58.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 2e0162ac87..74ea300581 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.25.4", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", - "@tanstack/start": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", + "@tanstack/start": "^1.58.1", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.3" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index e4d3dc5835..5ce1db752d 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -11,10 +11,10 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", - "@tanstack/start": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", + "@tanstack/start": "^1.58.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index b6c99ef633..4e658c586a 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.4.1", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", - "@tanstack/start": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", + "@tanstack/start": "^1.58.1", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 4153883769..4324cabd6a 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.18", - "@tanstack/react-router-with-query": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", - "@tanstack/start": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/react-router-with-query": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", + "@tanstack/start": "^1.58.1", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index a8e40e5d06..6f284bac3a 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.4", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/start": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/start": "^1.58.1", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index c9d76a11ad..c3f793912d 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.18", - "@tanstack/react-router-with-query": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", - "@tanstack/start": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/react-router-with-query": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", + "@tanstack/start": "^1.58.1", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "ky": "^1.7.2", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 103cb0d7df..db8957be39 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", "redaxios": "^0.5.1", "framer-motion": "^11.5.4", "react": "^18.2.0", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 2b177e9782..cc48e4846a 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", "@trpc/client": "11.0.0-rc.502", "@trpc/react-query": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 8240e10340..96e6ecd8ec 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.57.18", - "@tanstack/router-devtools": "^1.57.18", - "@tanstack/router-plugin": "^1.57.19", + "@tanstack/react-router": "^1.58.1", + "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-plugin": "^1.58.1", "@trpc/client": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 4df65c655b..1e3f8ecb7a 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.57.19", + "version": "1.58.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 7e33506886..4ef4f56148 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.57.18", + "version": "1.58.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 64ffe53e3c..a8490db9da 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.57.18", + "version": "1.58.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index f8b7e5725c..f69278da3c 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.57.18", + "version": "1.58.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json index 5d6eb1df1c..1c7fc76c2d 100644 --- a/packages/router-cli/package.json +++ b/packages/router-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-cli", - "version": "1.57.15", + "version": "1.58.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 17f87b5d07..42093e3ff8 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.57.18", + "version": "1.58.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json index 2e3c0673db..c07273e816 100644 --- a/packages/router-generator/package.json +++ b/packages/router-generator/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-generator", - "version": "1.57.15", + "version": "1.58.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 66913b9551..0f78162bfd 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.57.19", + "version": "1.58.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 79261ebea2..2912707ae1 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.57.18", + "version": "1.58.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 6647ebbb4e..94b015915a 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.57.19", + "version": "1.58.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index fc4661ef32..d5a2919248 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.57.18", + "version": "1.58.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index f5e86a4d91..e799e69cbb 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.57.19", + "version": "1.58.1", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 4e6e66f81bcb9418497462e383d2a5e7960ba853 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Wed, 18 Sep 2024 23:44:31 +0200 Subject: [PATCH 138/154] fix(react-router): kick off loader early (#2368) --- packages/react-router/src/router.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index 387cd97c3f..5044c95694 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -2275,11 +2275,6 @@ export class Router< componentsPromise, })) - // Lazy option can modify the route options, - // so we need to wait for it to resolve before - // we can use the options - await route._lazyPromise - // Kick off the loader! let loaderData = await route.options.loader?.(getLoaderContext()) @@ -2300,6 +2295,11 @@ export class Router< loaderData, ) + // Lazy option can modify the route options, + // so we need to wait for it to resolve before + // we can use the options + await route._lazyPromise + await potentialPendingMinPromise() const meta = route.options.meta?.({ From 60164463e65e4f6e0fdf9e439e4a449aba35f858 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Wed, 18 Sep 2024 21:47:02 +0000 Subject: [PATCH 139/154] release: v1.58.2 --- examples/react/authenticated-routes/package.json | 4 ++-- .../react/basic-default-search-params/package.json | 4 ++-- .../react/basic-file-based-codesplitting/package.json | 4 ++-- examples/react/basic-file-based/package.json | 4 ++-- .../react/basic-react-query-file-based/package.json | 4 ++-- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 6 +++--- .../react/basic-ssr-streaming-file-based/package.json | 6 +++--- examples/react/basic-virtual-file-based/package.json | 4 ++-- .../react/basic-virtual-inside-file-based/package.json | 4 ++-- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 4 ++-- .../kitchen-sink-react-query-file-based/package.json | 4 ++-- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 4 ++-- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 4 ++-- .../react/quickstart-rspack-file-based/package.json | 4 ++-- .../react/quickstart-webpack-file-based/package.json | 4 ++-- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- examples/react/search-validator-adapters/package.json | 10 +++++----- examples/react/start-basic-auth/package.json | 6 +++--- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 8 ++++---- examples/react/start-basic-rsc/package.json | 6 +++--- examples/react/start-basic/package.json | 6 +++--- examples/react/start-clerk-basic/package.json | 6 +++--- examples/react/start-convex-trellaux/package.json | 8 ++++---- examples/react/start-supabase-basic/package.json | 6 +++--- examples/react/start-trellaux/package.json | 8 ++++---- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 4 ++-- examples/react/with-trpc/package.json | 4 ++-- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 45 files changed, 98 insertions(+), 98 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 636a5a7809..14c4515ab4 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 3b498289f4..1e0b022bc9 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 1c5c5a9929..5ab8337070 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 4896df7470..8871c9c99e 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 10edf4a153..1f9fbeb845 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index f716b2af84..0bd0e5330c 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 64389f963e..8fa70beac4 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.1", + "@tanstack/start": "^1.58.2", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index c2eb75fb76..c2cce14665 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.1", + "@tanstack/start": "^1.58.2", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 1169437a6e..596e0cdd45 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index a6d7778bdc..cacbd507f4 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index c50693c23c..c60fde1398 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 91d6528e52..4c49385c9b 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index eadd6cac6b..7247de0c90 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 277240dfc4..8af94ab5e1 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 302bf39898..23d8a8b51b 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 252f0bc4e5..73dbfd09be 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 1434d659e3..e4e827236e 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 84688ba7b6..70123f9b48 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 855b0fdd62..87e719d1e0 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index d18be8f107..d55c688198 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index cf116d84a7..aaac3e9c65 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 10a2d1c613..5b6b517bae 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,8 +7,8 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 1dd4ccd895..06ebc2f81b 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index c3dbbfa4f2..92cffe9eca 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", + "@tanstack/react-router": "^1.58.2", "@tanstack/react-virtual": "^3.10.7", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/router-devtools": "^1.58.2", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 222526f778..62c708a04f 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", - "@tanstack/router-zod-adapter": "^1.58.1", - "@tanstack/router-valibot-adapter": "^1.58.1", - "@tanstack/router-arktype-adapter": "^1.58.1", + "@tanstack/router-zod-adapter": "^1.58.2", + "@tanstack/router-valibot-adapter": "^1.58.2", + "@tanstack/router-arktype-adapter": "^1.58.2", "@tanstack/react-query": "^5.56.2", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index c9a8eba438..76ff17e462 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@prisma/client": "5.19.1", - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.1", + "@tanstack/start": "^1.58.2", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 543bb52b8f..8373dbd400 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/start": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/start": "^1.58.2", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.3" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 0fbbdf0e02..dad3293a19 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.1", - "@tanstack/react-router-with-query": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/react-router-with-query": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.1", + "@tanstack/start": "^1.58.2", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 74ea300581..5ae0302d0b 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.25.4", - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.1", + "@tanstack/start": "^1.58.2", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.3" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 5ce1db752d..4e80792260 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -11,10 +11,10 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.1", + "@tanstack/start": "^1.58.2", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 4e658c586a..507137f764 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.4.1", - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.1", + "@tanstack/start": "^1.58.2", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 4324cabd6a..7041f6e5a6 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.1", - "@tanstack/react-router-with-query": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/react-router-with-query": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.1", + "@tanstack/start": "^1.58.2", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 6f284bac3a..71a96bf43a 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.4", - "@tanstack/react-router": "^1.58.1", + "@tanstack/react-router": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", - "@tanstack/start": "^1.58.1", + "@tanstack/router-devtools": "^1.58.2", + "@tanstack/start": "^1.58.2", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index c3f793912d..deacacbedf 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.1", - "@tanstack/react-router-with-query": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/react-router-with-query": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.1", + "@tanstack/start": "^1.58.2", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "ky": "^1.7.2", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index db8957be39..64d9faf772 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "redaxios": "^0.5.1", "framer-motion": "^11.5.4", "react": "^18.2.0", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index cc48e4846a..8acad91635 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,8 +10,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", "@trpc/client": "11.0.0-rc.502", "@trpc/react-query": "11.0.0-rc.502", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 96e6ecd8ec..f48407d494 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,8 +8,8 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.58.1", - "@tanstack/router-devtools": "^1.58.1", + "@tanstack/react-router": "^1.58.2", + "@tanstack/router-devtools": "^1.58.2", "@tanstack/router-plugin": "^1.58.1", "@trpc/client": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 1e3f8ecb7a..bd38cc43e5 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.58.1", + "version": "1.58.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 4ef4f56148..3fe2bdccff 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.58.1", + "version": "1.58.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index a8490db9da..b27ccddc87 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.58.1", + "version": "1.58.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index f69278da3c..a695e2feaf 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.58.1", + "version": "1.58.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index 42093e3ff8..b2c6db0891 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.58.1", + "version": "1.58.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 2912707ae1..756587758d 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.58.1", + "version": "1.58.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index d5a2919248..98930cff39 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.58.1", + "version": "1.58.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index e799e69cbb..66d7b793e2 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.58.1", + "version": "1.58.2", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From db02bef77d062d29901e7253b344a64a09ef92d2 Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Thu, 19 Sep 2024 00:28:18 +0200 Subject: [PATCH 140/154] chore: lint (#2369) --- package.json | 2 +- .../{eslint.config.js => eslint.config.ts} | 13 +++---------- packages/react-router/package.json | 2 +- packages/react-router/src/ScriptOnce.tsx | 1 - packages/react-router/src/useNavigate.tsx | 1 - packages/react-router/tests/Matches.test-d.tsx | 3 +-- packages/react-router/tests/Matches.test.tsx | 6 +++--- packages/react-router/tests/link.test-d.tsx | 9 ++------- packages/react-router/tests/link.test.tsx | 16 ++++++++-------- packages/react-router/tests/navigate.test.tsx | 4 ++-- packages/react-router/tests/route.test-d.tsx | 10 +++++----- .../react-router/tests/routeContext.test.tsx | 2 +- .../react-router/tests/useLoaderData.test-d.tsx | 2 +- .../react-router/tests/useLocation.test-d.tsx | 10 ++-------- packages/react-router/tests/useParams.test-d.tsx | 9 ++------- .../tests/useRouteContext.test-d.tsx | 2 +- packages/react-router/tests/useSearch.test-d.tsx | 10 ++-------- packages/react-router/tsconfig.json | 1 + pnpm-lock.yaml | 2 +- 19 files changed, 37 insertions(+), 68 deletions(-) rename packages/react-router/{eslint.config.js => eslint.config.ts} (73%) diff --git a/package.json b/package.json index 034e85df36..f405581ea6 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "eslint": "^9.10.0", - "eslint-plugin-react-hooks": "^5.1.0-rc-fb9a90fa48-20240614", + "eslint-plugin-react-hooks": "^5.1.0-rc-5dcb0097-20240918", "glob": "^10.4.5", "jsdom": "^25.0.0", "nx": "^19.7.3", diff --git a/packages/react-router/eslint.config.js b/packages/react-router/eslint.config.ts similarity index 73% rename from packages/react-router/eslint.config.js rename to packages/react-router/eslint.config.ts index 076c5ee394..a2f1715667 100644 --- a/packages/react-router/eslint.config.js +++ b/packages/react-router/eslint.config.ts @@ -1,18 +1,17 @@ -// @ts-check - import pluginReact from '@eslint-react/eslint-plugin' +// @ts-expect-error import pluginReactHooks from 'eslint-plugin-react-hooks' import rootConfig from '../../eslint.config.js' export default [ ...rootConfig, { - files: ['**/*.{ts,tsx}'], - ...pluginReact.configs.recommended, + files: ['src/**/*.{ts,tsx}', 'tests/**/*.{ts,tsx}'], }, { plugins: { 'react-hooks': pluginReactHooks, + '@eslint-react': pluginReact, }, rules: { '@eslint-react/no-unstable-context-value': 'off', @@ -22,10 +21,4 @@ export default [ 'react-hooks/rules-of-hooks': 'error', }, }, - { - files: ['**/__tests__/**'], - rules: { - '@typescript-eslint/no-unnecessary-condition': 'off', - }, - }, ] diff --git a/packages/react-router/package.json b/packages/react-router/package.json index b27ccddc87..76e33b7d22 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -25,7 +25,7 @@ ], "scripts": { "clean": "rimraf ./dist && rimraf ./coverage", - "test:eslint": "eslint ./src", + "test:eslint": "eslint", "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js -p tsconfig.legacy.json", "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js -p tsconfig.legacy.json", diff --git a/packages/react-router/src/ScriptOnce.tsx b/packages/react-router/src/ScriptOnce.tsx index b1630ddcb2..998c675b3c 100644 --- a/packages/react-router/src/ScriptOnce.tsx +++ b/packages/react-router/src/ScriptOnce.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @eslint-react/dom/no-dangerously-set-innerhtml */ export function ScriptOnce({ className, children, diff --git a/packages/react-router/src/useNavigate.tsx b/packages/react-router/src/useNavigate.tsx index 6427e88f98..a9701db874 100644 --- a/packages/react-router/src/useNavigate.tsx +++ b/packages/react-router/src/useNavigate.tsx @@ -61,7 +61,6 @@ export function Navigate< navigate({ ...props, } as any) - // eslint-disable-next-line react-hooks/exhaustive-deps }, []) return null diff --git a/packages/react-router/tests/Matches.test-d.tsx b/packages/react-router/tests/Matches.test-d.tsx index 044dc051d9..00f8734d86 100644 --- a/packages/react-router/tests/Matches.test-d.tsx +++ b/packages/react-router/tests/Matches.test-d.tsx @@ -1,8 +1,6 @@ import { expectTypeOf, test } from 'vitest' import { - type AnyRouteMatch, MatchRoute, - type RouteMatch, createRootRoute, createRoute, createRouter, @@ -10,6 +8,7 @@ import { useMatchRoute, useMatches, } from '../src' +import type { AnyRouteMatch, RouteMatch } from '../src' const rootRoute = createRootRoute() diff --git a/packages/react-router/tests/Matches.test.tsx b/packages/react-router/tests/Matches.test.tsx index fe6b86f0db..61fb2461bd 100644 --- a/packages/react-router/tests/Matches.test.tsx +++ b/packages/react-router/tests/Matches.test.tsx @@ -1,13 +1,13 @@ import { expect, test } from 'vitest' import { fireEvent, render, screen } from '@testing-library/react' import { + Link, + Outlet, + RouterProvider, createRootRoute, createRoute, createRouter, - Outlet, isMatch, - Link, - RouterProvider, useMatches, } from '../src' diff --git a/packages/react-router/tests/link.test-d.tsx b/packages/react-router/tests/link.test-d.tsx index 6751180657..065df188af 100644 --- a/packages/react-router/tests/link.test-d.tsx +++ b/packages/react-router/tests/link.test-d.tsx @@ -1,11 +1,6 @@ import { expectTypeOf, test } from 'vitest' -import { - Link, - type SearchSchemaInput, - createRootRoute, - createRoute, - createRouter, -} from '../src' +import { Link, createRootRoute, createRoute, createRouter } from '../src' +import type { SearchSchemaInput } from '../src' const rootRoute = createRootRoute({ validateSearch: (): { rootPage?: number } => ({ rootPage: 0 }), diff --git a/packages/react-router/tests/link.test.tsx b/packages/react-router/tests/link.test.tsx index 770caac8ec..76ca8fa9b7 100644 --- a/packages/react-router/tests/link.test.tsx +++ b/packages/react-router/tests/link.test.tsx @@ -663,8 +663,6 @@ describe('Link', () => { const postsRoute = createRoute({ getParentRoute: () => rootRoute, path: 'posts', - loaderDeps: (opts) => ({ page: opts.search }), - loader: loader, validateSearch: (input: Record) => { const page = Number(input.page) @@ -674,6 +672,8 @@ describe('Link', () => { page, } }, + loaderDeps: (opts) => ({ page: opts.search }), + loader: loader, component: PostsComponent, }) @@ -726,12 +726,6 @@ describe('Link', () => { const postsRoute = createRoute({ getParentRoute: () => rootRoute, path: 'posts', - loaderDeps: (opts) => ({ page: opts.search }), - loader: () => { - throw new Error() - }, - onError, - errorComponent: () => Something went wrong!, validateSearch: (input: Record) => { const page = Number(input.page) @@ -741,6 +735,12 @@ describe('Link', () => { page, } }, + loaderDeps: (opts) => ({ page: opts.search }), + onError, + errorComponent: () => Something went wrong!, + loader: () => { + throw new Error() + }, component: PostsComponent, }) diff --git a/packages/react-router/tests/navigate.test.tsx b/packages/react-router/tests/navigate.test.tsx index 27886f2a22..21f4865bb4 100644 --- a/packages/react-router/tests/navigate.test.tsx +++ b/packages/react-router/tests/navigate.test.tsx @@ -1,12 +1,12 @@ import { afterEach, describe, expect, it, vi } from 'vitest' import { - type RouterHistory, createMemoryHistory, createRootRoute, createRoute, createRouter, } from '../src' +import type { RouterHistory } from '../src' afterEach(() => { vi.clearAllMocks() @@ -397,7 +397,7 @@ describe('router.navigate navigation using multiple path params - function synta }) }) -describe('router.navigate navigation using layout routes resolves correctly', async () => { +describe('router.navigate navigation using layout routes resolves correctly', () => { it('should resolve "/u/tanner" in "/u/_layout/$username" to "/u/tkdodo"', async () => { const { router } = createTestRouter( createMemoryHistory({ initialEntries: ['/u/tanner'] }), diff --git a/packages/react-router/tests/route.test-d.tsx b/packages/react-router/tests/route.test-d.tsx index 9f42bd5bb1..9becb50205 100644 --- a/packages/react-router/tests/route.test-d.tsx +++ b/packages/react-router/tests/route.test-d.tsx @@ -365,7 +365,7 @@ test('when creating a child route with a loader from the root route', () => { const invoicesRoute = createRoute({ path: 'invoices', getParentRoute: () => rootRoute, - loader: async (opt) => { + loader: (opt) => { expectTypeOf(opt).toEqualTypeOf<{ abortController: AbortController preload: boolean @@ -407,7 +407,7 @@ test('when creating a child route with a loader from the root route with context const invoicesRoute = createRoute({ path: 'invoices', getParentRoute: () => rootRoute, - loader: async (opts) => { + loader: (opts) => { expectTypeOf(opts).toEqualTypeOf<{ abortController: AbortController preload: boolean @@ -841,7 +841,7 @@ test('when creating a child route with beforeLoad from a parent with beforeLoad' const invoicesRoute = createRoute({ path: 'invoices', getParentRoute: () => rootRoute, - beforeLoad: async (opt) => { + beforeLoad: (opt) => { expectTypeOf(opt).toEqualTypeOf<{ abortController: AbortController preload: boolean @@ -861,7 +861,7 @@ test('when creating a child route with beforeLoad from a parent with beforeLoad' const detailsRoute = createRoute({ path: 'details', getParentRoute: () => invoicesRoute, - beforeLoad: async (opt) => { + beforeLoad: (opt) => { expectTypeOf(opt).toEqualTypeOf<{ abortController: AbortController preload: boolean @@ -1125,11 +1125,11 @@ test('when creating a child route with context, search, params, loader, loaderDe createRoute({ path: '$detailId', getParentRoute: () => detailsRoute, + beforeLoad: () => ({ detailPermission: true }), loaderDeps: (deps) => ({ detailPage: deps.search.detailPage, invoicePage: deps.search.page, }), - beforeLoad: () => ({ detailPermission: true }), loader: () => ({ detailLoader: 'detailResult' }) as const, onEnter: (match) => expectTypeOf(match).toMatchTypeOf(), onStay: (match) => expectTypeOf(match).toMatchTypeOf(), diff --git a/packages/react-router/tests/routeContext.test.tsx b/packages/react-router/tests/routeContext.test.tsx index 02be38c195..ed2d06d474 100644 --- a/packages/react-router/tests/routeContext.test.tsx +++ b/packages/react-router/tests/routeContext.test.tsx @@ -2170,7 +2170,7 @@ describe('useRouteContext in the component', () => { path: '/', component: () => { const context = indexRoute.useRouteContext() - // eslint-disable-next-line ts/no-unnecessary-condition + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (context === undefined) { throw new Error('context is undefined') } diff --git a/packages/react-router/tests/useLoaderData.test-d.tsx b/packages/react-router/tests/useLoaderData.test-d.tsx index 2332d70cac..b38d58bb9d 100644 --- a/packages/react-router/tests/useLoaderData.test-d.tsx +++ b/packages/react-router/tests/useLoaderData.test-d.tsx @@ -5,7 +5,7 @@ import { createRouter, useLoaderData, } from '../src' -import { type MakeRouteMatch } from '../src/Matches' +import type { MakeRouteMatch } from '../src/Matches' test('when there is no loaders', () => { const rootRoute = createRootRoute() diff --git a/packages/react-router/tests/useLocation.test-d.tsx b/packages/react-router/tests/useLocation.test-d.tsx index 8643f3a60d..c09e8025d0 100644 --- a/packages/react-router/tests/useLocation.test-d.tsx +++ b/packages/react-router/tests/useLocation.test-d.tsx @@ -1,12 +1,6 @@ import { expectTypeOf, test } from 'vitest' -import { - createRootRoute, - createRoute, - createRouter, - useLocation, - type ParsedLocation, - type RouterState, -} from '../src' +import { createRootRoute, createRoute, createRouter, useLocation } from '../src' +import type { ParsedLocation, RouterState } from '../src' const rootRoute = createRootRoute() diff --git a/packages/react-router/tests/useParams.test-d.tsx b/packages/react-router/tests/useParams.test-d.tsx index cf1e940800..4be82a8f6c 100644 --- a/packages/react-router/tests/useParams.test-d.tsx +++ b/packages/react-router/tests/useParams.test-d.tsx @@ -1,11 +1,6 @@ import { expectTypeOf, test } from 'vitest' -import { - type FullSearchSchema, - createRootRoute, - createRoute, - createRouter, - useParams, -} from '../src' +import { createRootRoute, createRoute, createRouter, useParams } from '../src' +import type { FullSearchSchema } from '../src' test('when there are no params', () => { const rootRoute = createRootRoute() diff --git a/packages/react-router/tests/useRouteContext.test-d.tsx b/packages/react-router/tests/useRouteContext.test-d.tsx index f29713def1..e94a588668 100644 --- a/packages/react-router/tests/useRouteContext.test-d.tsx +++ b/packages/react-router/tests/useRouteContext.test-d.tsx @@ -1,12 +1,12 @@ import { expectTypeOf, test } from 'vitest' import { - type FullSearchSchema, createRootRoute, createRootRouteWithContext, createRoute, createRouter, useRouteContext, } from '../src' +import type { FullSearchSchema } from '../src' test('when there is no context', () => { const rootRoute = createRootRoute() diff --git a/packages/react-router/tests/useSearch.test-d.tsx b/packages/react-router/tests/useSearch.test-d.tsx index 2fa578b788..0828614b3b 100644 --- a/packages/react-router/tests/useSearch.test-d.tsx +++ b/packages/react-router/tests/useSearch.test-d.tsx @@ -1,12 +1,6 @@ import { expectTypeOf, test } from 'vitest' -import { - type FullSearchSchema, - SearchSchemaInput, - createRootRoute, - createRoute, - createRouter, - useSearch, -} from '../src' +import { createRootRoute, createRoute, createRouter, useSearch } from '../src' +import type { FullSearchSchema, SearchSchemaInput } from '../src' test('when there are no search params', () => { const rootRoute = createRootRoute() diff --git a/packages/react-router/tsconfig.json b/packages/react-router/tsconfig.json index aad3c58492..2c71ee70f6 100644 --- a/packages/react-router/tsconfig.json +++ b/packages/react-router/tsconfig.json @@ -8,6 +8,7 @@ "src", "tests", "vite.config.ts", + "eslint.config.ts", "../start/src/client/DehydrateRouter.tsx" ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0a64400f6..84400ff398 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -55,7 +55,7 @@ importers: specifier: ^9.10.0 version: 9.10.0(jiti@1.21.6) eslint-plugin-react-hooks: - specifier: ^5.1.0-rc-fb9a90fa48-20240614 + specifier: ^5.1.0-rc-5dcb0097-20240918 version: 5.1.0-rc-fb9a90fa48-20240614(eslint@9.10.0(jiti@1.21.6)) glob: specifier: ^10.4.5 From df6701841b14b2b04dbc1842ed71cf848dd58feb Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Thu, 19 Sep 2024 10:52:12 +1200 Subject: [PATCH 141/154] fix(router-plugin): do not split if known ident is exported (#2334) --- .../src/core/code-splitter/compilers.ts | 278 ++++++++++++++---- .../snapshots/retain-export-component.tsx | 27 ++ .../retain-export-component@split.tsx | 4 + .../snapshots/retain-exports-const.tsx | 30 ++ .../snapshots/retain-exports-const@split.tsx | 1 + .../snapshots/retain-exports-function.tsx | 30 ++ .../retain-exports-function@split.tsx | 1 + .../snapshots/retain-exports-loader.tsx | 14 + .../snapshots/retain-exports-loader@split.tsx | 22 ++ .../test-files/retain-export-component.tsx | 34 +++ .../test-files/retain-exports-const.tsx | 40 +++ .../test-files/retain-exports-function.tsx | 40 +++ .../test-files/retain-exports-loader.tsx | 35 +++ 13 files changed, 491 insertions(+), 65 deletions(-) create mode 100644 packages/router-plugin/tests/code-splitter/snapshots/retain-export-component.tsx create mode 100644 packages/router-plugin/tests/code-splitter/snapshots/retain-export-component@split.tsx create mode 100644 packages/router-plugin/tests/code-splitter/snapshots/retain-exports-const.tsx create mode 100644 packages/router-plugin/tests/code-splitter/snapshots/retain-exports-const@split.tsx create mode 100644 packages/router-plugin/tests/code-splitter/snapshots/retain-exports-function.tsx create mode 100644 packages/router-plugin/tests/code-splitter/snapshots/retain-exports-function@split.tsx create mode 100644 packages/router-plugin/tests/code-splitter/snapshots/retain-exports-loader.tsx create mode 100644 packages/router-plugin/tests/code-splitter/snapshots/retain-exports-loader@split.tsx create mode 100644 packages/router-plugin/tests/code-splitter/test-files/retain-export-component.tsx create mode 100644 packages/router-plugin/tests/code-splitter/test-files/retain-exports-const.tsx create mode 100644 packages/router-plugin/tests/code-splitter/test-files/retain-exports-function.tsx create mode 100644 packages/router-plugin/tests/code-splitter/test-files/retain-exports-loader.tsx diff --git a/packages/router-plugin/src/core/code-splitter/compilers.ts b/packages/router-plugin/src/core/code-splitter/compilers.ts index 475932564d..79382d59b3 100644 --- a/packages/router-plugin/src/core/code-splitter/compilers.ts +++ b/packages/router-plugin/src/core/code-splitter/compilers.ts @@ -98,6 +98,8 @@ export function compileCodeSplitReferenceRoute(opts: ParseAstOptions) { if (prop.key.name === 'component') { const value = prop.value + let shouldSplit = true + if (t.isIdentifier(value)) { existingCompImportPath = getImportSpecifierAndPathFromLocalName( @@ -105,51 +107,63 @@ export function compileCodeSplitReferenceRoute(opts: ParseAstOptions) { value.name, ).path - removeIdentifierLiteral(path, value) - } - - // Prepend the import statement to the program along with the importer function - // Check to see if lazyRouteComponent is already imported before attempting - // to import it again + // exported identifiers should not be split + // since they are already being imported + // and need to be retained in the compiled file + const isExported = hasExport(ast, value) + shouldSplit = !isExported - if ( - !hasImportedOrDefinedIdentifier( - 'lazyRouteComponent', - ) - ) { - programPath.unshiftContainer('body', [ - template.statement( - `import { lazyRouteComponent } from '@tanstack/react-router'`, - )(), - ]) + if (shouldSplit) { + removeIdentifierLiteral(path, value) + } } - if ( - !hasImportedOrDefinedIdentifier( - '$$splitComponentImporter', - ) - ) { - programPath.unshiftContainer('body', [ + if (shouldSplit) { + // Prepend the import statement to the program along with the importer function + // Check to see if lazyRouteComponent is already imported before attempting + // to import it again + + if ( + !hasImportedOrDefinedIdentifier( + 'lazyRouteComponent', + ) + ) { + programPath.unshiftContainer('body', [ + template.statement( + `import { lazyRouteComponent } from '@tanstack/react-router'`, + )(), + ]) + } + + if ( + !hasImportedOrDefinedIdentifier( + '$$splitComponentImporter', + ) + ) { + programPath.unshiftContainer('body', [ + template.statement( + `const $$splitComponentImporter = () => import('${splitUrl}')`, + )(), + ]) + } + + prop.value = template.expression( + `lazyRouteComponent($$splitComponentImporter, 'component')`, + )() + + programPath.pushContainer('body', [ template.statement( - `const $$splitComponentImporter = () => import('${splitUrl}')`, + `function DummyComponent() { return null }`, )(), ]) - } - - prop.value = template.expression( - `lazyRouteComponent($$splitComponentImporter, 'component')`, - )() - - programPath.pushContainer('body', [ - template.statement( - `function DummyComponent() { return null }`, - )(), - ]) - found = true + found = true + } } else if (prop.key.name === 'loader') { const value = prop.value + let shouldSplit = true + if (t.isIdentifier(value)) { existingLoaderImportPath = getImportSpecifierAndPathFromLocalName( @@ -157,36 +171,45 @@ export function compileCodeSplitReferenceRoute(opts: ParseAstOptions) { value.name, ).path - removeIdentifierLiteral(path, value) - } - - // Prepend the import statement to the program along with the importer function + // exported identifiers should not be split + // since they are already being imported + // and need to be retained in the compiled file + const isExported = hasExport(ast, value) + shouldSplit = !isExported - if (!hasImportedOrDefinedIdentifier('lazyFn')) { - programPath.unshiftContainer('body', [ - template.smart( - `import { lazyFn } from '@tanstack/react-router'`, - )() as t.Statement, - ]) + if (shouldSplit) { + removeIdentifierLiteral(path, value) + } } - if ( - !hasImportedOrDefinedIdentifier( - '$$splitLoaderImporter', - ) - ) { - programPath.unshiftContainer('body', [ - template.statement( - `const $$splitLoaderImporter = () => import('${splitUrl}')`, - )(), - ]) + if (shouldSplit) { + // Prepend the import statement to the program along with the importer function + if (!hasImportedOrDefinedIdentifier('lazyFn')) { + programPath.unshiftContainer('body', [ + template.smart( + `import { lazyFn } from '@tanstack/react-router'`, + )() as t.Statement, + ]) + } + + if ( + !hasImportedOrDefinedIdentifier( + '$$splitLoaderImporter', + ) + ) { + programPath.unshiftContainer('body', [ + template.statement( + `const $$splitLoaderImporter = () => import('${splitUrl}')`, + )(), + ]) + } + + prop.value = template.expression( + `lazyFn($$splitLoaderImporter, 'loader')`, + )() + + found = true } - - prop.value = template.expression( - `lazyFn($$splitLoaderImporter, 'loader')`, - )() - - found = true } } } @@ -251,6 +274,8 @@ export function compileCodeSplitVirtualRoute(opts: ParseAstOptions) { ) } + const knownExportedIdents = new Set() + babel.traverse(ast, { Program: { enter(programPath, programState) { @@ -287,12 +312,31 @@ export function compileCodeSplitVirtualRoute(opts: ParseAstOptions) { if (t.isObjectExpression(options)) { options.properties.forEach((prop) => { if (t.isObjectProperty(prop)) { - splitNodeTypes.forEach((type) => { - if (t.isIdentifier(prop.key)) { - if (prop.key.name === type) { - splitNodesByType[type] = prop.value + splitNodeTypes.forEach((splitType) => { + if ( + !t.isIdentifier(prop.key) || + prop.key.name !== splitType + ) { + return + } + + const value = prop.value + + let isExported = false + if (t.isIdentifier(value)) { + isExported = hasExport(ast, value) + if (isExported) { + knownExportedIdents.add(value.name) } } + + // If the node is exported, we need to remove + // the export from the split file + if (isExported && t.isIdentifier(value)) { + removeExports(ast, value) + } else { + splitNodesByType[splitType] = prop.value + } }) } }) @@ -448,6 +492,28 @@ export function compileCodeSplitVirtualRoute(opts: ParseAstOptions) { deadCodeElimination(ast) + // if there are exported identifiers, then we need to add a warning + // to the file to let the user know that the exported identifiers + // will not in the split file but in the original file, therefore + // increasing the bundle size + if (knownExportedIdents.size > 0) { + const list = Array.from(knownExportedIdents).reduce((str, ident) => { + str += `\n- ${ident}` + return str + }, '') + + const warningMessage = `These exports from "${opts.filename.replace('?' + splitPrefix, '')}" are not being code-split and will increase your bundle size: ${list}\nThese should either have their export statements removed or be imported from another file that is not a route.` + console.warn(warningMessage) + + // append this warning to the file using a template + if (process.env.NODE_ENV !== 'production') { + const warningTemplate = template.statement( + `console.warn(${JSON.stringify(warningMessage)})`, + )() + ast.program.body.unshift(warningTemplate) + } + } + return generate(ast, { sourceMaps: true, }) @@ -515,3 +581,85 @@ function removeIdentifierLiteral(path: any, node: any) { } } } + +function hasExport(ast: t.File, node: t.Identifier): boolean { + let found = false + + babel.traverse(ast, { + ExportNamedDeclaration(path) { + if (path.node.declaration) { + // declared as `const loaderFn = () => {}` + if (t.isVariableDeclaration(path.node.declaration)) { + path.node.declaration.declarations.forEach((decl) => { + if (t.isVariableDeclarator(decl)) { + if (t.isIdentifier(decl.id)) { + if (decl.id.name === node.name) { + found = true + } + } + } + }) + } + + // declared as `function loaderFn() {}` + if (t.isFunctionDeclaration(path.node.declaration)) { + if (t.isIdentifier(path.node.declaration.id)) { + if (path.node.declaration.id.name === node.name) { + found = true + } + } + } + } + }, + ExportDefaultDeclaration(path) { + if (t.isIdentifier(path.node.declaration)) { + if (path.node.declaration.name === node.name) { + found = true + } + } + }, + }) + + return found +} + +function removeExports(ast: t.File, node: t.Identifier): boolean { + let removed = false + + babel.traverse(ast, { + ExportNamedDeclaration(path) { + if (path.node.declaration) { + // declared as `const loaderFn = () => {}` + if (t.isVariableDeclaration(path.node.declaration)) { + path.node.declaration.declarations.forEach((decl) => { + if (t.isVariableDeclarator(decl)) { + if (t.isIdentifier(decl.id)) { + if (decl.id.name === node.name) { + path.remove() + removed = true + } + } + } + }) + } else if (t.isFunctionDeclaration(path.node.declaration)) { + if (t.isIdentifier(path.node.declaration.id)) { + if (path.node.declaration.id.name === node.name) { + path.remove() + removed = true + } + } + } + } + }, + ExportDefaultDeclaration(path) { + if (t.isIdentifier(path.node.declaration)) { + if (path.node.declaration.name === node.name) { + path.remove() + removed = true + } + } + }, + }) + + return removed +} diff --git a/packages/router-plugin/tests/code-splitter/snapshots/retain-export-component.tsx b/packages/router-plugin/tests/code-splitter/snapshots/retain-export-component.tsx new file mode 100644 index 0000000000..886cad2399 --- /dev/null +++ b/packages/router-plugin/tests/code-splitter/snapshots/retain-export-component.tsx @@ -0,0 +1,27 @@ +const $$splitLoaderImporter = () => import('tsr-split:retain-export-component.tsx?tsr-split'); +import { lazyFn } from '@tanstack/react-router'; +import { createFileRoute, Outlet } from '@tanstack/react-router'; +import { importedComponent as ImportedComponent } from '../shared/imported'; +export function Layout() { + return
; +} +export const Route = createFileRoute('/_layout')({ + component: Layout, + loader: lazyFn($$splitLoaderImporter, 'loader') +}); +const HEADER_HEIGHT = '63px'; +export const SIDEBAR_WIDTH = '150px'; \ No newline at end of file diff --git a/packages/router-plugin/tests/code-splitter/snapshots/retain-export-component@split.tsx b/packages/router-plugin/tests/code-splitter/snapshots/retain-export-component@split.tsx new file mode 100644 index 0000000000..b53badb34f --- /dev/null +++ b/packages/router-plugin/tests/code-splitter/snapshots/retain-export-component@split.tsx @@ -0,0 +1,4 @@ +console.warn("These exports from \"retain-export-component.tsx\" are not being code-split and will increase your bundle size: \n- Layout\nThese should either have their export statements removed or be imported from another file that is not a route."); +import { importedLoader } from '../shared/imported'; +const loader = importedLoader; +export { loader }; \ No newline at end of file diff --git a/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-const.tsx b/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-const.tsx new file mode 100644 index 0000000000..69e27260d4 --- /dev/null +++ b/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-const.tsx @@ -0,0 +1,30 @@ +import { createFileRoute, Outlet } from '@tanstack/react-router'; +import { importedComponent as ImportedComponent, importedLoader } from '../shared/imported'; +export const loaderFn = () => { + return importedLoader(); +}; +const Layout = () => { + return
+
+ +
+ + +
; +}; +export const Route = createFileRoute('/_layout')({ + component: Layout, + loader: loaderFn +}); +const HEADER_HEIGHT = '63px'; +export const SIDEBAR_WIDTH = '150px'; +export const SIDEBAR_MINI_WIDTH = '80px'; +export default Layout; \ No newline at end of file diff --git a/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-const@split.tsx b/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-const@split.tsx new file mode 100644 index 0000000000..7d4c85634d --- /dev/null +++ b/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-const@split.tsx @@ -0,0 +1 @@ +console.warn("These exports from \"retain-exports-const.tsx\" are not being code-split and will increase your bundle size: \n- Layout\n- loaderFn\nThese should either have their export statements removed or be imported from another file that is not a route."); \ No newline at end of file diff --git a/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-function.tsx b/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-function.tsx new file mode 100644 index 0000000000..8162228c27 --- /dev/null +++ b/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-function.tsx @@ -0,0 +1,30 @@ +import { createFileRoute, Outlet } from '@tanstack/react-router'; +import { importedComponent as ImportedComponent, importedLoader } from '../shared/imported'; +export function loaderFn() { + return importedLoader(); +} +function Layout() { + return
+
+ +
+ + +
; +} +export const Route = createFileRoute('/_layout')({ + component: Layout, + loader: loaderFn +}); +const HEADER_HEIGHT = '63px'; +export const SIDEBAR_WIDTH = '150px'; +export const SIDEBAR_MINI_WIDTH = '80px'; +export default Layout; \ No newline at end of file diff --git a/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-function@split.tsx b/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-function@split.tsx new file mode 100644 index 0000000000..f54a3bd29e --- /dev/null +++ b/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-function@split.tsx @@ -0,0 +1 @@ +console.warn("These exports from \"retain-exports-function.tsx\" are not being code-split and will increase your bundle size: \n- Layout\n- loaderFn\nThese should either have their export statements removed or be imported from another file that is not a route."); \ No newline at end of file diff --git a/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-loader.tsx b/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-loader.tsx new file mode 100644 index 0000000000..d514b8fd86 --- /dev/null +++ b/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-loader.tsx @@ -0,0 +1,14 @@ +const $$splitComponentImporter = () => import('tsr-split:retain-exports-loader.tsx?tsr-split'); +import { lazyRouteComponent } from '@tanstack/react-router'; +import { createFileRoute } from '@tanstack/react-router'; +export function loaderFn() { + return { + foo: 'bar' + }; +} +export const Route = createFileRoute('/_layout')({ + component: lazyRouteComponent($$splitComponentImporter, 'component'), + loader: loaderFn +}); +export const SIDEBAR_WIDTH = '150px'; +export const SIDEBAR_MINI_WIDTH = '80px'; \ No newline at end of file diff --git a/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-loader@split.tsx b/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-loader@split.tsx new file mode 100644 index 0000000000..f74980eee1 --- /dev/null +++ b/packages/router-plugin/tests/code-splitter/snapshots/retain-exports-loader@split.tsx @@ -0,0 +1,22 @@ +console.warn("These exports from \"retain-exports-loader.tsx\" are not being code-split and will increase your bundle size: \n- loaderFn\nThese should either have their export statements removed or be imported from another file that is not a route."); +import { Outlet } from '@tanstack/react-router'; +import { importedComponent as ImportedComponent } from '../shared/imported'; +const HEADER_HEIGHT = '63px'; +const component = function Layout() { + return
+
+ +
+ + +
; +}; +export { component }; \ No newline at end of file diff --git a/packages/router-plugin/tests/code-splitter/test-files/retain-export-component.tsx b/packages/router-plugin/tests/code-splitter/test-files/retain-export-component.tsx new file mode 100644 index 0000000000..4ad35a3f5d --- /dev/null +++ b/packages/router-plugin/tests/code-splitter/test-files/retain-export-component.tsx @@ -0,0 +1,34 @@ +import * as React from 'react' +import { createFileRoute, Outlet } from '@tanstack/react-router' +import { + importedComponent as ImportedComponent, + importedLoader, +} from '../shared/imported' + +export function Layout() { + return ( +
+
+ +
+ + +
+ ) +} + +export const Route = createFileRoute('/_layout')({ + component: Layout, + loader: importedLoader, +}) + +const HEADER_HEIGHT = '63px' +export const SIDEBAR_WIDTH = '150px' +const SIDEBAR_MINI_WIDTH = '80px' +const ASIDE_WIDTH = '250px' diff --git a/packages/router-plugin/tests/code-splitter/test-files/retain-exports-const.tsx b/packages/router-plugin/tests/code-splitter/test-files/retain-exports-const.tsx new file mode 100644 index 0000000000..c055a3702f --- /dev/null +++ b/packages/router-plugin/tests/code-splitter/test-files/retain-exports-const.tsx @@ -0,0 +1,40 @@ +import * as React from 'react' +import { createFileRoute, Outlet } from '@tanstack/react-router' +import { + importedComponent as ImportedComponent, + importedLoader, +} from '../shared/imported' + +export const loaderFn = () => { + return importedLoader() +} + +const Layout = () => { + return ( +
+
+ +
+ + +
+ ) +} + +export const Route = createFileRoute('/_layout')({ + component: Layout, + loader: loaderFn, +}) + +const HEADER_HEIGHT = '63px' +export const SIDEBAR_WIDTH = '150px' +export const SIDEBAR_MINI_WIDTH = '80px' +const ASIDE_WIDTH = '250px' + +export default Layout diff --git a/packages/router-plugin/tests/code-splitter/test-files/retain-exports-function.tsx b/packages/router-plugin/tests/code-splitter/test-files/retain-exports-function.tsx new file mode 100644 index 0000000000..f68a6cf422 --- /dev/null +++ b/packages/router-plugin/tests/code-splitter/test-files/retain-exports-function.tsx @@ -0,0 +1,40 @@ +import * as React from 'react' +import { createFileRoute, Outlet } from '@tanstack/react-router' +import { + importedComponent as ImportedComponent, + importedLoader, +} from '../shared/imported' + +export function loaderFn() { + return importedLoader() +} + +function Layout() { + return ( +
+
+ +
+ + +
+ ) +} + +export const Route = createFileRoute('/_layout')({ + component: Layout, + loader: loaderFn, +}) + +const HEADER_HEIGHT = '63px' +export const SIDEBAR_WIDTH = '150px' +export const SIDEBAR_MINI_WIDTH = '80px' +const ASIDE_WIDTH = '250px' + +export default Layout diff --git a/packages/router-plugin/tests/code-splitter/test-files/retain-exports-loader.tsx b/packages/router-plugin/tests/code-splitter/test-files/retain-exports-loader.tsx new file mode 100644 index 0000000000..d6c88f19f7 --- /dev/null +++ b/packages/router-plugin/tests/code-splitter/test-files/retain-exports-loader.tsx @@ -0,0 +1,35 @@ +import * as React from 'react' +import { createFileRoute, Outlet } from '@tanstack/react-router' +import { importedComponent as ImportedComponent } from '../shared/imported' + +export function loaderFn() { + return { foo: 'bar' } +} + +function Layout() { + return ( +
+
+ +
+ + +
+ ) +} + +export const Route = createFileRoute('/_layout')({ + component: Layout, + loader: loaderFn, +}) + +const HEADER_HEIGHT = '63px' +export const SIDEBAR_WIDTH = '150px' +export const SIDEBAR_MINI_WIDTH = '80px' +const ASIDE_WIDTH = '250px' From fbad1b4dd8e2855b2c1645dbfe66d96b8cbb5e6e Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Wed, 18 Sep 2024 22:56:02 +0000 Subject: [PATCH 142/154] release: v1.58.3 --- examples/react/authenticated-routes/package.json | 6 +++--- .../react/basic-default-search-params/package.json | 4 ++-- .../basic-file-based-codesplitting/package.json | 6 +++--- examples/react/basic-file-based/package.json | 6 +++--- .../react/basic-react-query-file-based/package.json | 6 +++--- examples/react/basic-react-query/package.json | 4 ++-- examples/react/basic-ssr-file-based/package.json | 8 ++++---- .../basic-ssr-streaming-file-based/package.json | 8 ++++---- examples/react/basic-virtual-file-based/package.json | 6 +++--- .../basic-virtual-inside-file-based/package.json | 6 +++--- examples/react/basic/package.json | 4 ++-- examples/react/deferred-data/package.json | 4 ++-- examples/react/kitchen-sink-file-based/package.json | 6 +++--- .../kitchen-sink-react-query-file-based/package.json | 6 +++--- examples/react/kitchen-sink-react-query/package.json | 4 ++-- examples/react/kitchen-sink/package.json | 4 ++-- examples/react/large-file-based/package.json | 6 +++--- examples/react/location-masking/package.json | 4 ++-- examples/react/navigation-blocking/package.json | 4 ++-- examples/react/quickstart-file-based/package.json | 6 +++--- .../react/quickstart-rspack-file-based/package.json | 6 +++--- .../react/quickstart-webpack-file-based/package.json | 6 +++--- examples/react/quickstart/package.json | 4 ++-- examples/react/scroll-restoration/package.json | 4 ++-- .../react/search-validator-adapters/package.json | 12 ++++++------ examples/react/start-basic-auth/package.json | 8 ++++---- examples/react/start-basic-counter/package.json | 4 ++-- examples/react/start-basic-react-query/package.json | 10 +++++----- examples/react/start-basic-rsc/package.json | 8 ++++---- examples/react/start-basic/package.json | 8 ++++---- examples/react/start-clerk-basic/package.json | 8 ++++---- examples/react/start-convex-trellaux/package.json | 10 +++++----- examples/react/start-supabase-basic/package.json | 8 ++++---- examples/react/start-trellaux/package.json | 10 +++++----- examples/react/with-framer-motion/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 6 +++--- examples/react/with-trpc/package.json | 6 +++--- packages/create-router/package.json | 2 +- packages/react-router-with-query/package.json | 2 +- packages/react-router/package.json | 2 +- packages/router-arktype-adapter/package.json | 2 +- packages/router-devtools/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-valibot-adapter/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/router-zod-adapter/package.json | 2 +- packages/start/package.json | 2 +- 47 files changed, 125 insertions(+), 125 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index 14c4515ab4..ecd10d5931 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json index 1e0b022bc9..6db624ecf4 100644 --- a/examples/react/basic-default-search-params/package.json +++ b/examples/react/basic-default-search-params/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index 5ab8337070..a9ca86bb4a 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 8871c9c99e..896b1d4e1b 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index 1f9fbeb845..aaa64d7cdb 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json index 0bd0e5330c..63228935ec 100644 --- a/examples/react/basic-react-query/package.json +++ b/examples/react/basic-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 8fa70beac4..012518dacd 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", + "@tanstack/start": "^1.58.3", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index c2cce14665..4890cb0c86 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -11,10 +11,10 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", + "@tanstack/start": "^1.58.3", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 596e0cdd45..0d3d845704 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index cacbd507f4..50de942199 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index c60fde1398..c0262b9af4 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1" diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json index 4c49385c9b..aeb5f0d4a6 100644 --- a/examples/react/deferred-data/package.json +++ b/examples/react/deferred-data/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index 7247de0c90..c2fbc721dc 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 8af94ab5e1..59ca27360c 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -11,9 +11,9 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json index 23d8a8b51b..22332d37b5 100644 --- a/examples/react/kitchen-sink-react-query/package.json +++ b/examples/react/kitchen-sink-react-query/package.json @@ -11,8 +11,8 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 73dbfd09be..2869e9e43a 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", "redaxios": "^0.5.1", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index e4e827236e..14791c0bb4 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json index 70123f9b48..9c30a580f7 100644 --- a/examples/react/location-masking/package.json +++ b/examples/react/location-masking/package.json @@ -11,8 +11,8 @@ "dependencies": { "@radix-ui/react-dialog": "^1.1.1", "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json index 87e719d1e0..691c842ead 100644 --- a/examples/react/navigation-blocking/package.json +++ b/examples/react/navigation-blocking/package.json @@ -10,8 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.56.2", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", "redaxios": "^0.5.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index d55c688198..9892fbe7ba 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index aaac3e9c65..28701eca83 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -8,15 +8,15 @@ "preview": "rsbuild preview" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@rsbuild/core": "1.0.4", "@rsbuild/plugin-react": "1.0.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/router-plugin": "^1.58.3", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.6.2" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 5b6b517bae..92af9de5cd 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -7,14 +7,14 @@ "build": "webpack build && tsc --noEmit" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@swc/core": "^1.7.26", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/router-plugin": "^1.58.3", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json index 06ebc2f81b..28cb0ef746 100644 --- a/examples/react/quickstart/package.json +++ b/examples/react/quickstart/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json index 92cffe9eca..e71ea0a200 100644 --- a/examples/react/scroll-restoration/package.json +++ b/examples/react/scroll-restoration/package.json @@ -9,9 +9,9 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", + "@tanstack/react-router": "^1.58.3", "@tanstack/react-virtual": "^3.10.7", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/router-devtools": "^1.58.3", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 62c708a04f..6c69d07e39 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -9,12 +9,12 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", - "@tanstack/router-zod-adapter": "^1.58.2", - "@tanstack/router-valibot-adapter": "^1.58.2", - "@tanstack/router-arktype-adapter": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-zod-adapter": "^1.58.3", + "@tanstack/router-valibot-adapter": "^1.58.3", + "@tanstack/router-arktype-adapter": "^1.58.3", "@tanstack/react-query": "^5.56.2", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 76ff17e462..2a7bb3e86d 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "@prisma/client": "5.19.1", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", + "@tanstack/start": "^1.58.3", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 8373dbd400..b1909db4ce 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -11,8 +11,8 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/start": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/start": "^1.58.3", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.3" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index dad3293a19..e156b0fba8 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.2", - "@tanstack/react-router-with-query": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/react-router-with-query": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", + "@tanstack/start": "^1.58.3", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 5ae0302d0b..ad62094c2e 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@babel/plugin-syntax-typescript": "^7.25.4", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", + "@tanstack/start": "^1.58.3", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.3" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 4e80792260..478f592fe3 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -11,10 +11,10 @@ "format": "prettier --write '**/*' --ignore-unknown" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", + "@tanstack/start": "^1.58.3", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 507137f764..8643fda4ca 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -12,10 +12,10 @@ }, "dependencies": { "@clerk/tanstack-start": "0.4.1", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", + "@tanstack/start": "^1.58.3", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 7041f6e5a6..d860e010d8 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -15,11 +15,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.2", - "@tanstack/react-router-with-query": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/react-router-with-query": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", + "@tanstack/start": "^1.58.3", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 71a96bf43a..09acb863a0 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -15,10 +15,10 @@ "dependencies": { "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.4", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/start": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/start": "^1.58.3", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index deacacbedf..c165b4c250 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -13,11 +13,11 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.2", - "@tanstack/react-router-with-query": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", - "@tanstack/start": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/react-router-with-query": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", + "@tanstack/start": "^1.58.3", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "ky": "^1.7.2", diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json index 64d9faf772..1b545444d2 100644 --- a/examples/react/with-framer-motion/package.json +++ b/examples/react/with-framer-motion/package.json @@ -9,8 +9,8 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", "redaxios": "^0.5.1", "framer-motion": "^11.5.4", "react": "^18.2.0", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index 8acad91635..a55c4a1606 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -10,9 +10,9 @@ "dependencies": { "@tanstack/react-query": "^5.56.2", "@tanstack/react-query-devtools": "^5.56.2", - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", "@trpc/client": "11.0.0-rc.502", "@trpc/react-query": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index f48407d494..04eeca2585 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -8,9 +8,9 @@ "start": "vinxi start" }, "dependencies": { - "@tanstack/react-router": "^1.58.2", - "@tanstack/router-devtools": "^1.58.2", - "@tanstack/router-plugin": "^1.58.1", + "@tanstack/react-router": "^1.58.3", + "@tanstack/router-devtools": "^1.58.3", + "@tanstack/router-plugin": "^1.58.3", "@trpc/client": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index bd38cc43e5..3efa2e848e 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.58.2", + "version": "1.58.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json index 3fe2bdccff..5d1acfdf80 100644 --- a/packages/react-router-with-query/package.json +++ b/packages/react-router-with-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router-with-query", - "version": "1.58.2", + "version": "1.58.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 76e33b7d22..b4fad0972e 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-router", - "version": "1.58.2", + "version": "1.58.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json index a695e2feaf..a460b82648 100644 --- a/packages/router-arktype-adapter/package.json +++ b/packages/router-arktype-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-arktype-adapter", - "version": "1.58.2", + "version": "1.58.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json index b2c6db0891..b6f8423925 100644 --- a/packages/router-devtools/package.json +++ b/packages/router-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-devtools", - "version": "1.58.2", + "version": "1.58.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 0f78162bfd..42a1953fc9 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.58.1", + "version": "1.58.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json index 756587758d..f4a3e0dde9 100644 --- a/packages/router-valibot-adapter/package.json +++ b/packages/router-valibot-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-valibot-adapter", - "version": "1.58.2", + "version": "1.58.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 94b015915a..2bc12417c4 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.58.1", + "version": "1.58.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json index 98930cff39..9fd1519490 100644 --- a/packages/router-zod-adapter/package.json +++ b/packages/router-zod-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-zod-adapter", - "version": "1.58.2", + "version": "1.58.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index 66d7b793e2..e7af748525 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.58.2", + "version": "1.58.3", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From ecefcfccaec7d89f29f240e1d3f3c1dad6e131fa Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Thu, 19 Sep 2024 01:19:52 +0200 Subject: [PATCH 143/154] tests: regression test for #2290 (#2370) --- e2e/start/basic/app/routeTree.gen.ts | 25 ++++++++++++++++++ e2e/start/basic/app/routes/search-params.tsx | 27 ++++++++++++++++++++ e2e/start/basic/package.json | 3 ++- e2e/start/basic/tests/app.spec.ts | 18 +++++++++++++ pnpm-lock.yaml | 3 +++ 5 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 e2e/start/basic/app/routes/search-params.tsx diff --git a/e2e/start/basic/app/routeTree.gen.ts b/e2e/start/basic/app/routeTree.gen.ts index d6df38d1bf..cebc80abed 100644 --- a/e2e/start/basic/app/routeTree.gen.ts +++ b/e2e/start/basic/app/routeTree.gen.ts @@ -12,6 +12,7 @@ import { Route as rootRoute } from './routes/__root' import { Route as UsersImport } from './routes/users' +import { Route as SearchParamsImport } from './routes/search-params' import { Route as RedirectImport } from './routes/redirect' import { Route as PostsImport } from './routes/posts' import { Route as DeferredImport } from './routes/deferred' @@ -33,6 +34,11 @@ const UsersRoute = UsersImport.update({ getParentRoute: () => rootRoute, } as any) +const SearchParamsRoute = SearchParamsImport.update({ + path: '/search-params', + getParentRoute: () => rootRoute, +} as any) + const RedirectRoute = RedirectImport.update({ path: '/redirect', getParentRoute: () => rootRoute, @@ -137,6 +143,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof RedirectImport parentRoute: typeof rootRoute } + '/search-params': { + id: '/search-params' + path: '/search-params' + fullPath: '/search-params' + preLoaderRoute: typeof SearchParamsImport + parentRoute: typeof rootRoute + } '/users': { id: '/users' path: '/users' @@ -260,6 +273,7 @@ export interface FileRoutesByFullPath { '/deferred': typeof DeferredRoute '/posts': typeof PostsRouteWithChildren '/redirect': typeof RedirectRoute + '/search-params': typeof SearchParamsRoute '/users': typeof UsersRouteWithChildren '/posts/$postId': typeof PostsPostIdRoute '/users/$userId': typeof UsersUserIdRoute @@ -275,6 +289,7 @@ export interface FileRoutesByTo { '': typeof LayoutLayout2RouteWithChildren '/deferred': typeof DeferredRoute '/redirect': typeof RedirectRoute + '/search-params': typeof SearchParamsRoute '/posts/$postId': typeof PostsPostIdRoute '/users/$userId': typeof UsersUserIdRoute '/posts': typeof PostsIndexRoute @@ -291,6 +306,7 @@ export interface FileRoutesById { '/deferred': typeof DeferredRoute '/posts': typeof PostsRouteWithChildren '/redirect': typeof RedirectRoute + '/search-params': typeof SearchParamsRoute '/users': typeof UsersRouteWithChildren '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren '/posts/$postId': typeof PostsPostIdRoute @@ -310,6 +326,7 @@ export interface FileRouteTypes { | '/deferred' | '/posts' | '/redirect' + | '/search-params' | '/users' | '/posts/$postId' | '/users/$userId' @@ -324,6 +341,7 @@ export interface FileRouteTypes { | '' | '/deferred' | '/redirect' + | '/search-params' | '/posts/$postId' | '/users/$userId' | '/posts' @@ -338,6 +356,7 @@ export interface FileRouteTypes { | '/deferred' | '/posts' | '/redirect' + | '/search-params' | '/users' | '/_layout/_layout-2' | '/posts/$postId' @@ -356,6 +375,7 @@ export interface RootRouteChildren { DeferredRoute: typeof DeferredRoute PostsRoute: typeof PostsRouteWithChildren RedirectRoute: typeof RedirectRoute + SearchParamsRoute: typeof SearchParamsRoute UsersRoute: typeof UsersRouteWithChildren PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute } @@ -366,6 +386,7 @@ const rootRouteChildren: RootRouteChildren = { DeferredRoute: DeferredRoute, PostsRoute: PostsRouteWithChildren, RedirectRoute: RedirectRoute, + SearchParamsRoute: SearchParamsRoute, UsersRoute: UsersRouteWithChildren, PostsPostIdDeepRoute: PostsPostIdDeepRoute, } @@ -387,6 +408,7 @@ export const routeTree = rootRoute "/deferred", "/posts", "/redirect", + "/search-params", "/users", "/posts/$postId/deep" ] @@ -413,6 +435,9 @@ export const routeTree = rootRoute "/redirect": { "filePath": "redirect.tsx" }, + "/search-params": { + "filePath": "search-params.tsx" + }, "/users": { "filePath": "users.tsx", "children": [ diff --git a/e2e/start/basic/app/routes/search-params.tsx b/e2e/start/basic/app/routes/search-params.tsx new file mode 100644 index 0000000000..8ebe45bc34 --- /dev/null +++ b/e2e/start/basic/app/routes/search-params.tsx @@ -0,0 +1,27 @@ +import { createFileRoute, redirect } from '@tanstack/react-router' +import { z } from 'zod' + +export const Route = createFileRoute('/search-params')({ + component: () => { + const search = Route.useSearch() + return ( +
+

SearchParams

+
{search.step}
+
+ ) + }, + validateSearch: z.object({ + step: z.enum(['a', 'b', 'c']).optional(), + }), + loaderDeps: ({ search: { step } }) => ({ step }), + loader: ({ deps: { step } }) => { + if (step === undefined) { + throw redirect({ + to: '/search-params', + from: '/search-params', + search: { step: 'a' }, + }) + } + }, +}) diff --git a/e2e/start/basic/package.json b/e2e/start/basic/package.json index f133bdf6f0..273200e63d 100644 --- a/e2e/start/basic/package.json +++ b/e2e/start/basic/package.json @@ -22,7 +22,8 @@ "react-dom": "^18.3.1", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", - "vinxi": "0.4.3" + "vinxi": "0.4.3", + "zod": "^3.23.8" }, "devDependencies": { "@playwright/test": "^1.47.1", diff --git a/e2e/start/basic/tests/app.spec.ts b/e2e/start/basic/tests/app.spec.ts index 381255a8d8..225205b4ba 100644 --- a/e2e/start/basic/tests/app.spec.ts +++ b/e2e/start/basic/tests/app.spec.ts @@ -60,3 +60,21 @@ test('Directly visiting the deferred route', async ({ page }) => { 'Hello deferred!', ) }) + +test('Directly visiting the search-params route without search param set', async ({ + page, +}) => { + await page.goto('/search-params') + await new Promise((r) => setTimeout(r, 500)) + await expect(page.getByTestId('search-param')).toContainText('a') + expect(page.url().endsWith('/search-params?step=a')) +}) + +test('Directly visiting the search-params route with search param set', async ({ + page, +}) => { + await page.goto('/search-params?step=b') + await new Promise((r) => setTimeout(r, 500)) + await expect(page.getByTestId('search-param')).toContainText('b') + expect(page.url().endsWith('/search-params?step=b')) +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 84400ff398..48bd3d1f76 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -384,6 +384,9 @@ importers: vinxi: specifier: 0.4.3 version: 0.4.3(@opentelemetry/api@1.8.0)(@types/node@22.5.4)(ioredis@5.4.1)(terser@5.31.1) + zod: + specifier: ^3.23.8 + version: 3.23.8 devDependencies: '@playwright/test': specifier: ^1.47.1 From 6c1294ed40e9b8f43be3fc3e9442dc2ed1734fbb Mon Sep 17 00:00:00 2001 From: Jonson Petard <41122242+greenhat616@users.noreply.github.com> Date: Thu, 19 Sep 2024 09:37:05 +0800 Subject: [PATCH 144/154] fix(router-plugin): normalize file path in `fileIsInRoutesDirectory` to ensure windows compatibility (#2367) * fix: fileIsInRoutesDirectory wrong in windows * chore: update * fix(router-plugin): review comments --------- Co-authored-by: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> --- .../src/core/router-code-splitter-plugin.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/router-plugin/src/core/router-code-splitter-plugin.ts b/packages/router-plugin/src/core/router-code-splitter-plugin.ts index 6498eab428..c9de306416 100644 --- a/packages/router-plugin/src/core/router-code-splitter-plugin.ts +++ b/packages/router-plugin/src/core/router-code-splitter-plugin.ts @@ -1,4 +1,4 @@ -import { isAbsolute, join } from 'node:path' +import { isAbsolute, join, normalize } from 'node:path' import { fileURLToPath, pathToFileURL } from 'node:url' import { getConfig } from './config' @@ -15,12 +15,17 @@ function capitalizeFirst(str: string): string { return str.charAt(0).toUpperCase() + str.slice(1) } -function fileIsInRoutesDirectory(filePath: string, routesDirectory: string) { +function fileIsInRoutesDirectory( + filePath: string, + routesDirectory: string, +): boolean { const routesDirectoryPath = isAbsolute(routesDirectory) ? routesDirectory : join(process.cwd(), routesDirectory) - return filePath.startsWith(routesDirectoryPath) + const path = normalize(filePath) + + return path.startsWith(routesDirectoryPath) } type BannedBeforeExternalPlugin = { From e6d5eb14c18a2b065b561081ee8d1f69db3a028d Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 19 Sep 2024 01:41:10 +0000 Subject: [PATCH 145/154] release: v1.58.4 --- examples/react/authenticated-routes/package.json | 2 +- examples/react/basic-file-based-codesplitting/package.json | 2 +- examples/react/basic-file-based/package.json | 2 +- examples/react/basic-react-query-file-based/package.json | 2 +- examples/react/basic-ssr-file-based/package.json | 4 ++-- examples/react/basic-ssr-streaming-file-based/package.json | 4 ++-- examples/react/basic-virtual-file-based/package.json | 2 +- examples/react/basic-virtual-inside-file-based/package.json | 2 +- examples/react/kitchen-sink-file-based/package.json | 2 +- .../react/kitchen-sink-react-query-file-based/package.json | 2 +- examples/react/large-file-based/package.json | 2 +- examples/react/quickstart-file-based/package.json | 2 +- examples/react/quickstart-rspack-file-based/package.json | 2 +- examples/react/quickstart-webpack-file-based/package.json | 2 +- examples/react/search-validator-adapters/package.json | 2 +- examples/react/start-basic-auth/package.json | 4 ++-- examples/react/start-basic-counter/package.json | 2 +- examples/react/start-basic-react-query/package.json | 4 ++-- examples/react/start-basic-rsc/package.json | 4 ++-- examples/react/start-basic/package.json | 4 ++-- examples/react/start-clerk-basic/package.json | 4 ++-- examples/react/start-convex-trellaux/package.json | 4 ++-- examples/react/start-supabase-basic/package.json | 4 ++-- examples/react/start-trellaux/package.json | 4 ++-- examples/react/with-trpc-react-query/package.json | 2 +- examples/react/with-trpc/package.json | 2 +- packages/create-router/package.json | 2 +- packages/router-plugin/package.json | 2 +- packages/router-vite-plugin/package.json | 2 +- packages/start/package.json | 2 +- 30 files changed, 40 insertions(+), 40 deletions(-) diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json index ecd10d5931..7644d760c9 100644 --- a/examples/react/authenticated-routes/package.json +++ b/examples/react/authenticated-routes/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json index a9ca86bb4a..0001f4e9da 100644 --- a/examples/react/basic-file-based-codesplitting/package.json +++ b/examples/react/basic-file-based-codesplitting/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json index 896b1d4e1b..b03fa6a81c 100644 --- a/examples/react/basic-file-based/package.json +++ b/examples/react/basic-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json index aaa64d7cdb..c61e79740c 100644 --- a/examples/react/basic-react-query-file-based/package.json +++ b/examples/react/basic-react-query-file-based/package.json @@ -13,7 +13,7 @@ "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index 012518dacd..ae3659ac51 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", - "@tanstack/start": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", + "@tanstack/start": "^1.58.4", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 4890cb0c86..0ff451eb32 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", - "@tanstack/start": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", + "@tanstack/start": "^1.58.4", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json index 0d3d845704..e1fa3ec352 100644 --- a/examples/react/basic-virtual-file-based/package.json +++ b/examples/react/basic-virtual-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json index 50de942199..4ce76abd94 100644 --- a/examples/react/basic-virtual-inside-file-based/package.json +++ b/examples/react/basic-virtual-inside-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "@tanstack/virtual-file-routes": "^1.56.0", "immer": "^10.1.1", "react": "^18.2.0", diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json index c2fbc721dc..cfe09a91c5 100644 --- a/examples/react/kitchen-sink-file-based/package.json +++ b/examples/react/kitchen-sink-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json index 59ca27360c..f7098eb21e 100644 --- a/examples/react/kitchen-sink-react-query-file-based/package.json +++ b/examples/react/kitchen-sink-react-query-file-based/package.json @@ -13,7 +13,7 @@ "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "immer": "^10.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json index 14791c0bb4..91e1ce2eb8 100644 --- a/examples/react/large-file-based/package.json +++ b/examples/react/large-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-query": "^5.56.2", "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json index 9892fbe7ba..caad9208ba 100644 --- a/examples/react/quickstart-file-based/package.json +++ b/examples/react/quickstart-file-based/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "react": "^18.2.0", "react-dom": "^18.2.0", "redaxios": "^0.5.1", diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json index 28701eca83..e3fbcf67db 100644 --- a/examples/react/quickstart-rspack-file-based/package.json +++ b/examples/react/quickstart-rspack-file-based/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@rsbuild/core": "1.0.4", "@rsbuild/plugin-react": "1.0.2", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "^5.6.2" diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json index 92af9de5cd..05ee3d9549 100644 --- a/examples/react/quickstart-webpack-file-based/package.json +++ b/examples/react/quickstart-webpack-file-based/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@swc/core": "^1.7.26", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "html-webpack-plugin": "^5.6.0", diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json index 6c69d07e39..6699ff5e2c 100644 --- a/examples/react/search-validator-adapters/package.json +++ b/examples/react/search-validator-adapters/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "@tanstack/router-zod-adapter": "^1.58.3", "@tanstack/router-valibot-adapter": "^1.58.3", "@tanstack/router-arktype-adapter": "^1.58.3", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 2a7bb3e86d..2243d89a10 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -15,8 +15,8 @@ "@prisma/client": "5.19.1", "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", - "@tanstack/start": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", + "@tanstack/start": "^1.58.4", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index b1909db4ce..858cfc29b3 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@tanstack/react-router": "^1.58.3", - "@tanstack/start": "^1.58.3", + "@tanstack/start": "^1.58.4", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.3" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index e156b0fba8..29e03225fb 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -16,8 +16,8 @@ "@tanstack/react-router": "^1.58.3", "@tanstack/react-router-with-query": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", - "@tanstack/start": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", + "@tanstack/start": "^1.58.4", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index ad62094c2e..2dc2e8404a 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -14,8 +14,8 @@ "@babel/plugin-syntax-typescript": "^7.25.4", "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", - "@tanstack/start": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", + "@tanstack/start": "^1.58.4", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.3" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 478f592fe3..e0e79d4c81 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -13,8 +13,8 @@ "dependencies": { "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", - "@tanstack/start": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", + "@tanstack/start": "^1.58.4", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 8643fda4ca..16b8e1607d 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -14,8 +14,8 @@ "@clerk/tanstack-start": "0.4.1", "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", - "@tanstack/start": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", + "@tanstack/start": "^1.58.4", "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index d860e010d8..97a778e052 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -18,8 +18,8 @@ "@tanstack/react-router": "^1.58.3", "@tanstack/react-router-with-query": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", - "@tanstack/start": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", + "@tanstack/start": "^1.58.4", "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 09acb863a0..32ea1db95b 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -16,9 +16,9 @@ "@supabase/ssr": "^0.5.1", "@supabase/supabase-js": "^2.45.4", "@tanstack/react-router": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/start": "^1.58.3", + "@tanstack/start": "^1.58.4", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index c165b4c250..63a852fbed 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -16,8 +16,8 @@ "@tanstack/react-router": "^1.58.3", "@tanstack/react-router-with-query": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", - "@tanstack/start": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", + "@tanstack/start": "^1.58.4", "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "ky": "^1.7.2", diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json index a55c4a1606..3b83fdc242 100644 --- a/examples/react/with-trpc-react-query/package.json +++ b/examples/react/with-trpc-react-query/package.json @@ -12,7 +12,7 @@ "@tanstack/react-query-devtools": "^5.56.2", "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "@trpc/client": "11.0.0-rc.502", "@trpc/react-query": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json index 04eeca2585..9746432176 100644 --- a/examples/react/with-trpc/package.json +++ b/examples/react/with-trpc/package.json @@ -10,7 +10,7 @@ "dependencies": { "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/router-plugin": "^1.58.3", + "@tanstack/router-plugin": "^1.58.4", "@trpc/client": "11.0.0-rc.502", "@trpc/server": "11.0.0-rc.502", "react": "^18.2.0", diff --git a/packages/create-router/package.json b/packages/create-router/package.json index 3efa2e848e..c614950fa6 100644 --- a/packages/create-router/package.json +++ b/packages/create-router/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/create-router", - "version": "1.58.3", + "version": "1.58.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json index 42a1953fc9..2bd0e172da 100644 --- a/packages/router-plugin/package.json +++ b/packages/router-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-plugin", - "version": "1.58.3", + "version": "1.58.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json index 2bc12417c4..d892105a08 100644 --- a/packages/router-vite-plugin/package.json +++ b/packages/router-vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/router-vite-plugin", - "version": "1.58.3", + "version": "1.58.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/start/package.json b/packages/start/package.json index e7af748525..d335c5c9b4 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.58.3", + "version": "1.58.4", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT", From 8c2fda4d70a92e7603d444cf57f29b1211f12260 Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Thu, 19 Sep 2024 14:27:09 +1200 Subject: [PATCH 146/154] docs(start): guide on configuring path aliases (#2371) * docs(start): add documentation on configuring path aliases * chore: add the new doc into the `config.json` file * docs: update verbiage --- docs/config.json | 4 ++ docs/framework/react/start/path-aliases.md | 57 ++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 docs/framework/react/start/path-aliases.md diff --git a/docs/config.json b/docs/config.json index 948508f6d9..e36001d3a7 100644 --- a/docs/config.json +++ b/docs/config.json @@ -218,6 +218,10 @@ { "label": "Static Prerendering", "to": "framework/react/start/static-prerendering" + }, + { + "label": "Path Aliases", + "to": "framework/react/start/path-aliases" } ] } diff --git a/docs/framework/react/start/path-aliases.md b/docs/framework/react/start/path-aliases.md new file mode 100644 index 0000000000..c1e74af096 --- /dev/null +++ b/docs/framework/react/start/path-aliases.md @@ -0,0 +1,57 @@ +--- +id: path-aliases +title: Path Aliases +--- + +Path aliases are a useful feature of TypeScript that allows you to define a shortcut for a path that could be distant in your project's directory structure. This can help you avoid long relative imports in your code and make it easier to refactor your project's structure. This is especially useful for avoiding long relative imports in your code. + +By default, TanStack Start does not include path aliases. However, you can easily add them to your project by updating your `tsconfig.json` file in the root of your project and adding the following configuration: + +```json +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "~/*": ["app/*"] + } + } +} +``` + +In this example, we've defined the path alias `~/*` that maps to the `app/*` directory. This means that you can now import files from the `app` directory using the `~` prefix. + +After updating your `tsconfig.json` file, you'll need to install the `vite-tsconfig-paths` plugin to enable path aliases in your TanStack Start project. You can do this by running the following command: + +```sh +npm install -D vite-tsconfig-paths +``` + +Now, you'll need to update your `app.config.ts` file to include the following: + +```ts +// app.config.ts +import { defineConfig } from '@tanstack/start/config' +import viteTsConfigPaths from 'vite-tsconfig-paths' + +export default defineConfig({ + vite: { + plugins: () => [ + // this is the plugin that enables path aliases + viteTsConfigPaths({ + projects: ['./tsconfig.json'], + }), + ], + }, +}) +``` + +Once this configuration has completed, you'll now be able to import files using the path alias like so: + +```ts +// app/routes/posts/$postId/edit.tsx +import { Input } from '~/components/ui/input' + +// instead of + +import { Input } from '../../../components/ui/input' +``` From b2b2a2359b361e037526bba4946e9e64523d6e8b Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Thu, 19 Sep 2024 15:17:23 +1200 Subject: [PATCH 147/154] docs(start): fix invalid syntax in the server-functions guide (#2372) --- docs/framework/react/start/server-functions.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/framework/react/start/server-functions.md b/docs/framework/react/start/server-functions.md index 461c165ad6..33721e8ff6 100644 --- a/docs/framework/react/start/server-functions.md +++ b/docs/framework/react/start/server-functions.md @@ -159,11 +159,11 @@ import { createServerFn } from '@tanstack/start' import { getWebRequest } from 'vinxi/http' export const getServerTime = createServerFn('GET', async () => { - const { method } = getWebRequest() + const request = getWebRequest() - console.log(method) // GET + console.log(request.method) // GET - console.log(context.request.headers.get('User-Agent')) // Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3 + console.log(request.headers.get('User-Agent')) // Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3 }) ``` From 5eff36110353404e7e1acfa244ef74e9ba04e186 Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Thu, 19 Sep 2024 16:20:47 +1200 Subject: [PATCH 148/154] docs(router): route-tree setup instructions for code-based routing (#2373) --- docs/framework/react/guide/code-based-routing.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/framework/react/guide/code-based-routing.md b/docs/framework/react/guide/code-based-routing.md index 4d361b1b2d..41ad6d415e 100644 --- a/docs/framework/react/guide/code-based-routing.md +++ b/docs/framework/react/guide/code-based-routing.md @@ -302,6 +302,12 @@ const layoutBRoute = createRoute({ getParentRoute: () => layoutRoute, path: 'layout-b', }) + +const routeTree = rootRoute.addChildren([ + // The layout route has no path, only an id + // So its children will be nested under the layout route + layoutRoute.addChildren([layoutARoute, layoutBRoute]), +]) ``` Now both `/layout-a` and `/layout-b` will render the their contents inside of the `LayoutComponent`: From e73a748b3f12cba1497d59b859208c8897960e39 Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Fri, 20 Sep 2024 07:05:22 +1200 Subject: [PATCH 149/154] docs(router): broken links on the file-based routing guide (#2381) --- docs/framework/react/guide/file-based-routing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/framework/react/guide/file-based-routing.md b/docs/framework/react/guide/file-based-routing.md index 52a8518274..02acb404b8 100644 --- a/docs/framework/react/guide/file-based-routing.md +++ b/docs/framework/react/guide/file-based-routing.md @@ -2,7 +2,7 @@ title: File-Based Routing --- -Most of the TanStack Router documentation is written for file-based routing and is intended to help you understand in more detail how to configure file-based routing and the technical details behind how it works. While file-based routing is the preferred and recommended way to configure TanStack Router, you can also use [code-based routing](./code-based-routing) if you prefer. +Most of the TanStack Router documentation is written for file-based routing and is intended to help you understand in more detail how to configure file-based routing and the technical details behind how it works. While file-based routing is the preferred and recommended way to configure TanStack Router, you can also use [code-based routing](./code-based-routing.md) if you prefer. ## What is File-Based Routing? @@ -134,7 +134,7 @@ Dynamic path params can be used in both flat and directory routes to create rout | ... | ... | ... | | ʦ `posts.$postId.tsx` | `/posts/$postId` | `` | -We'll learn more about dynamic path params in the [Path Params](./path-params) guide. +We'll learn more about dynamic path params in the [Path Params](./path-params.md) guide. ## Pathless Routes From 409b21c21d8435366e9c70225f329a59b3bd902a Mon Sep 17 00:00:00 2001 From: Haziq Khairi Date: Fri, 20 Sep 2024 03:13:44 +0800 Subject: [PATCH 150/154] chore(deps): remove duplicate `@vitejs/plugin-react` from dependencies (#2377) * chore(deps): remove duplicate @vitejs/plugin-react from dependencies * regenerate the lockfile --------- Co-authored-by: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> --- e2e/start/basic-auth/package.json | 1 - e2e/start/basic-react-query/package.json | 1 - e2e/start/basic/package.json | 1 - e2e/start/clerk-basic/package.json | 1 - examples/react/start-basic-auth/package.json | 1 - .../start-basic-react-query/package.json | 1 - examples/react/start-basic/package.json | 1 - examples/react/start-clerk-basic/package.json | 1 - .../react/start-convex-trellaux/package.json | 1 - examples/react/start-trellaux/package.json | 1 - pnpm-lock.yaml | 88 +++++++++---------- 11 files changed, 44 insertions(+), 54 deletions(-) diff --git a/e2e/start/basic-auth/package.json b/e2e/start/basic-auth/package.json index 783ba1ac6e..3fe1190a80 100644 --- a/e2e/start/basic-auth/package.json +++ b/e2e/start/basic-auth/package.json @@ -18,7 +18,6 @@ "@tanstack/router-devtools": "^1.57.15", "@tanstack/router-plugin": "^1.57.15", "@tanstack/start": "^1.57.15", - "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", "prisma": "^5.19.1", diff --git a/e2e/start/basic-react-query/package.json b/e2e/start/basic-react-query/package.json index f1a4557d10..f4eab453c5 100644 --- a/e2e/start/basic-react-query/package.json +++ b/e2e/start/basic-react-query/package.json @@ -19,7 +19,6 @@ "@tanstack/router-devtools": "^1.57.15", "@tanstack/router-plugin": "^1.57.15", "@tanstack/start": "^1.57.15", - "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/e2e/start/basic/package.json b/e2e/start/basic/package.json index 273200e63d..45893f3d14 100644 --- a/e2e/start/basic/package.json +++ b/e2e/start/basic/package.json @@ -16,7 +16,6 @@ "@tanstack/router-devtools": "^1.57.15", "@tanstack/router-plugin": "^1.57.15", "@tanstack/start": "^1.57.15", - "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/e2e/start/clerk-basic/package.json b/e2e/start/clerk-basic/package.json index 103ca03880..6049e30f99 100644 --- a/e2e/start/clerk-basic/package.json +++ b/e2e/start/clerk-basic/package.json @@ -17,7 +17,6 @@ "@tanstack/router-devtools": "^1.57.15", "@tanstack/router-plugin": "^1.57.15", "@tanstack/start": "^1.57.15", - "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 2243d89a10..5f5fb0ea73 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -17,7 +17,6 @@ "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", "@tanstack/start": "^1.58.4", - "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", "prisma": "^5.19.1", diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 29e03225fb..1a2b7a90d5 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -18,7 +18,6 @@ "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", "@tanstack/start": "^1.58.4", - "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index e0e79d4c81..1f5416b853 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -15,7 +15,6 @@ "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", "@tanstack/start": "^1.58.4", - "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 16b8e1607d..7661ad11f5 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -16,7 +16,6 @@ "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", "@tanstack/start": "^1.58.4", - "@vitejs/plugin-react": "^4.3.1", "dotenv": "^16.4.5", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 97a778e052..765b43abc4 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -20,7 +20,6 @@ "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", "@tanstack/start": "^1.58.4", - "@vitejs/plugin-react": "^4.3.1", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", "convex": "^1.16.0", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index 63a852fbed..fc6bce4792 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -18,7 +18,6 @@ "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", "@tanstack/start": "^1.58.4", - "@vitejs/plugin-react": "^4.3.1", "isbot": "^5.1.17", "ky": "^1.7.2", "msw": "^2.4.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48bd3d1f76..9a68d56fc1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,7 +65,7 @@ importers: version: 25.0.0 nx: specifier: ^19.7.3 - version: 19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)) + version: 19.7.3(@swc/core@1.7.26) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -363,9 +363,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) isbot: specifier: ^5.1.17 version: 5.1.17 @@ -400,6 +397,9 @@ importers: '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -439,9 +439,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -482,6 +479,9 @@ importers: '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -527,9 +527,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) isbot: specifier: ^5.1.17 version: 5.1.17 @@ -561,6 +558,9 @@ importers: '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -658,9 +658,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -698,6 +695,9 @@ importers: '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -1752,9 +1752,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) isbot: specifier: ^5.1.17 version: 5.1.17 @@ -1783,6 +1780,9 @@ importers: '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -1822,9 +1822,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -1862,6 +1859,9 @@ importers: '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -1944,9 +1944,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) isbot: specifier: ^5.1.17 version: 5.1.17 @@ -1975,6 +1972,9 @@ importers: '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -2072,9 +2072,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -2109,6 +2106,9 @@ importers: '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -2157,9 +2157,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -2206,6 +2203,9 @@ importers: '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -2303,9 +2303,6 @@ importers: '@tanstack/start': specifier: workspace:* version: link:../../../packages/start - '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) isbot: specifier: ^5.1.17 version: 5.1.17 @@ -2346,6 +2343,9 @@ importers: '@types/react-dom': specifier: ^18.2.21 version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.4.5(@types/node@22.5.4)(terser@5.31.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -2805,7 +2805,7 @@ importers: version: 5.4.5(@types/node@22.5.4)(terser@5.31.1) webpack: specifier: '>=5.92.0' - version: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1) + version: 5.94.0(@swc/core@1.7.26)(esbuild@0.23.1) zod: specifier: ^3.23.8 version: 3.23.8 @@ -11067,9 +11067,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/tao@19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13))': + '@nrwl/tao@19.7.3(@swc/core@1.7.26)': dependencies: - nx: 19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)) + nx: 19.7.3(@swc/core@1.7.26) tslib: 2.7.0 transitivePeerDependencies: - '@swc-node/register' @@ -15366,10 +15366,10 @@ snapshots: nwsapi@2.2.12: {} - nx@19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)): + nx@19.7.3(@swc/core@1.7.26): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.7.3(@swc/core@1.7.26(@swc/helpers@0.5.13)) + '@nrwl/tao': 19.7.3(@swc/core@1.7.26) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -16632,14 +16632,14 @@ snapshots: '@swc/core': 1.7.26(@swc/helpers@0.5.13) esbuild: 0.23.1 - terser-webpack-plugin@5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.26)(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26)(esbuild@0.23.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1) + webpack: 5.94.0(@swc/core@1.7.26)(esbuild@0.23.1) optionalDependencies: '@swc/core': 1.7.26(@swc/helpers@0.5.13) esbuild: 0.23.1 @@ -17307,7 +17307,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1): + webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4): dependencies: '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 @@ -17329,15 +17329,17 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4): + webpack@5.94.0(@swc/core@1.7.26)(esbuild@0.23.1): dependencies: '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 @@ -17359,11 +17361,9 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.26)(esbuild@0.23.1)) watchpack: 2.4.1 webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.1.0)(webpack@5.94.0) transitivePeerDependencies: - '@swc/core' - esbuild From 230c460f4d4e4889bb0ac946874f30cff9aa54e8 Mon Sep 17 00:00:00 2001 From: willenleal <152920520+willenleal@users.noreply.github.com> Date: Thu, 19 Sep 2024 15:57:17 -0400 Subject: [PATCH 151/154] docs(start): better info on hosting (#2380) * docs(start): clarify running builds locally * docs: improve upon the base --------- Co-authored-by: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> --- docs/framework/react/start/getting-started.md | 2 + docs/framework/react/start/hosting.md | 130 +++++++++++++++++- 2 files changed, 130 insertions(+), 2 deletions(-) diff --git a/docs/framework/react/start/getting-started.md b/docs/framework/react/start/getting-started.md index 240e6b2fa7..9f9c3058ff 100644 --- a/docs/framework/react/start/getting-started.md +++ b/docs/framework/react/start/getting-started.md @@ -285,3 +285,5 @@ function Home() { That's it! 🤯 You've now set up a TanStack Start project and written your first route. 🎉 You can now run `npm run dev` to start your server and navigate to `http://localhost:3000` to see your route in action. + +You want to deploy your application? Check out the [hosting guide](./hosting.md). diff --git a/docs/framework/react/start/hosting.md b/docs/framework/react/start/hosting.md index 9016d5225d..273c56a302 100644 --- a/docs/framework/react/start/hosting.md +++ b/docs/framework/react/start/hosting.md @@ -26,6 +26,132 @@ Vercel is a leading hosting platform that provides a fast, secure, and reliable - To learn more about Vercel, visit the [Vercel website](https://vercel.com?utm_source=tanstack) - To sign up, visit the [Vercel dashboard](https://vercel.com/signup?utm_source=tanstack) -## Documentation & APIs +## Deployment -Documentation for deploying your application with different hosting providers is coming soon! +> [!WARNING] +> The page is still a work in progress. We'll keep updating this page with guides on deployment to different hosting providers soon! + +When a TanStack Start application is being deployed, the `deployment.preset` value in the `app.config.ts` file determines the deployment target. The deployment target can be set to one of the following values: + +- [`vercel`](#vercel): Deploy to Vercel +- [`cloudflare-pages`](#cloudflare-pages): Deploy to Cloudflare Pages +- [`netlify`](#netlify): Deploy to Netlify +- [`node-server`](#nodejs): Deploy to a Node.js server +- [`bun`](#bun): Deploy to a Bun server +- ... and more to come! + +Choose the deployment target that best suits your needs and follow the deployment guidelines below to deploy your TanStack Start application to your preferred hosting provider. + +### Vercel + +Deploying your TanStack Start application to Vercel is easy and straightforward. Just set the `deployment.preset` value to `vercel` in your `app.config.ts` file, and you're ready to deploy your application to Vercel. + +```ts +// app.config.ts +import { defineConfig } from '@tanstack/start/config' + +export default defineConfig({ + deployment: { + preset: 'vercel', + }, +}) +``` + +Deploy you application to Vercel and you're ready to go! + +### Cloudflare Pages + +Deploying your TanStack Start application to Cloudflare Pages is easy and straightforward. Just set the `deployment.preset` value to `cf-pages` in your `app.config.ts` file, and you're ready to deploy your application to Cloudflare Pages. + +```ts +// app.config.ts +import { defineConfig } from '@tanstack/start/config' + +export default defineConfig({ + deployment: { + preset: 'cloudflare-pages', + }, +}) +``` + +Deploy you application to Cloudflare Pages and you're ready to go! + +### Netlify + +Deploying your TanStack Start application to Vercel is easy and straightforward. Just set the `deployment.preset` value to `netlify` in your `app.config.ts` file, and you're ready to deploy your application to Vercel. + +```ts +// app.config.ts +import { defineConfig } from '@tanstack/start/config' + +export default defineConfig({ + deployment: { + preset: 'netlify', + }, +}) +``` + +Deploy you application to Netlify and you're ready to go! + +### Node.js + +Deploying your TanStack Start application to a Bun server is easy and straightforward. Just set the `deployment.preset` value to `node-server` in your `app.config.ts` file, and you're ready to deploy your application to a Node.js server. + +```ts +// app.config.ts +import { defineConfig } from '@tanstack/start/config' + +export default defineConfig({ + deployment: { + preset: 'node-server', + }, +}) +``` + +Then you can run the following command to build and start your application: + +```sh +npm run build +``` + +Once the build is complete, you can start your application by running: + +```sh +node .output/server/index.mjs +``` + +### Bun + +> [!IMPORTANT] +> Currently, the Bun specific deployment guidelines only work with React 19. If you are using React 18, please refer to the [Node.js](#nodejs) deployment guidelines. + +Make sure that your `react` and `react-dom` packages are set to version 19.0.0 or higher in your `package.json` file. If not, run the following command to upgrade the packages: + +```sh +npm install react@rc react-dom@rc +``` + +Set the `deployment.preset` value to `bun` in your `app.config.ts` file, and you're ready to deploy your application to a Node.js server. + +```ts +// app.config.ts +import { defineConfig } from '@tanstack/start/config' + +export default defineConfig({ + deployment: { + preset: 'bun', + }, +}) +``` + +Then you can run the following command to build and start your application: + +```sh +bun run build +``` + +Once the build is complete, you can start your application by running: + +```sh +bun run .output/server/index.mjs +``` From 1a64daa5fbc70a2b770b3789bde7d437fb17a156 Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Fri, 20 Sep 2024 10:25:34 +1200 Subject: [PATCH 152/154] docs(start): mention using the cli for hosting (#2383) * docs(start): mention using the cli for hosting * bit more updates --- docs/framework/react/start/hosting.md | 46 +++++++++++++++++++++------ 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/docs/framework/react/start/hosting.md b/docs/framework/react/start/hosting.md index 273c56a302..ee4ec6658c 100644 --- a/docs/framework/react/start/hosting.md +++ b/docs/framework/react/start/hosting.md @@ -40,7 +40,7 @@ When a TanStack Start application is being deployed, the `deployment.preset` val - [`bun`](#bun): Deploy to a Bun server - ... and more to come! -Choose the deployment target that best suits your needs and follow the deployment guidelines below to deploy your TanStack Start application to your preferred hosting provider. +Once you've chosen a deployment target, you can follow the deployment guidelines below to deploy your TanStack Start application to the hosting provider of your choice. ### Vercel @@ -57,11 +57,17 @@ export default defineConfig({ }) ``` -Deploy you application to Vercel and you're ready to go! +Or you can use the `--preset` flag with the `build` command to specify the deployment target when building the application: + +```sh +npm run build --preset vercel +``` + +Deploy you application to Vercel using their one-click deployment process, and you're ready to go! ### Cloudflare Pages -Deploying your TanStack Start application to Cloudflare Pages is easy and straightforward. Just set the `deployment.preset` value to `cf-pages` in your `app.config.ts` file, and you're ready to deploy your application to Cloudflare Pages. +Set the `deployment.preset` value to `cloudflare-pages` in your `app.config.ts` file. ```ts // app.config.ts @@ -74,11 +80,17 @@ export default defineConfig({ }) ``` -Deploy you application to Cloudflare Pages and you're ready to go! +Or you can use the `--preset` flag with the `build` command to specify the deployment target when building the application: + +```sh +npm run build --preset cloudflare-pages +``` + +Deploy you application to Cloudflare Pages using their one-click deployment process, and you're ready to go! ### Netlify -Deploying your TanStack Start application to Vercel is easy and straightforward. Just set the `deployment.preset` value to `netlify` in your `app.config.ts` file, and you're ready to deploy your application to Vercel. +Set the `deployment.preset` value to `netlify` in your `app.config.ts` file. ```ts // app.config.ts @@ -91,11 +103,17 @@ export default defineConfig({ }) ``` -Deploy you application to Netlify and you're ready to go! +Or you can use the `--preset` flag with the `build` command to specify the deployment target when building the application: + +```sh +npm run build --preset netlify +``` + +Deploy you application to Netlify using their one-click deployment process, and you're ready to go! ### Node.js -Deploying your TanStack Start application to a Bun server is easy and straightforward. Just set the `deployment.preset` value to `node-server` in your `app.config.ts` file, and you're ready to deploy your application to a Node.js server. +Set the `deployment.preset` value to `node-server` in your `app.config.ts` file. ```ts // app.config.ts @@ -106,6 +124,10 @@ export default defineConfig({ preset: 'node-server', }, }) + +// Or you can use the --preset flag with the build command +// to specify the deployment target when building the application: +// npm run build --preset node-server ``` Then you can run the following command to build and start your application: @@ -114,7 +136,7 @@ Then you can run the following command to build and start your application: npm run build ``` -Once the build is complete, you can start your application by running: +You're now ready to deploy your application to a Node.js server. You can start your application by running: ```sh node .output/server/index.mjs @@ -131,7 +153,7 @@ Make sure that your `react` and `react-dom` packages are set to version 19.0.0 o npm install react@rc react-dom@rc ``` -Set the `deployment.preset` value to `bun` in your `app.config.ts` file, and you're ready to deploy your application to a Node.js server. +Set the `deployment.preset` value to `bun` in your `app.config.ts` file. ```ts // app.config.ts @@ -142,6 +164,10 @@ export default defineConfig({ preset: 'bun', }, }) + +// Or you can use the --preset flag with the build command +// to specify the deployment target when building the application: +// npm run build --preset bun ``` Then you can run the following command to build and start your application: @@ -150,7 +176,7 @@ Then you can run the following command to build and start your application: bun run build ``` -Once the build is complete, you can start your application by running: +You're now ready to deploy your application to a Bun server. You can start your application by running: ```sh bun run .output/server/index.mjs From 4c6c88a5a18e71cb984e4acf6bdc9807780de0de Mon Sep 17 00:00:00 2001 From: Sean Cassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Fri, 20 Sep 2024 10:27:01 +1200 Subject: [PATCH 153/154] fix(start): decouple deployment static option from the deployment preset (#2382) --- packages/start/src/config/index.ts | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/packages/start/src/config/index.ts b/packages/start/src/config/index.ts index 10c6e33f54..bae58dd30a 100644 --- a/packages/start/src/config/index.ts +++ b/packages/start/src/config/index.ts @@ -94,13 +94,6 @@ const testedDeploymentPresets: Array = [ 'cloudflare-pages', 'node-server', ] -const staticDeploymentPresets: Array = [ - 'cloudflare-pages-static', - 'netlify-static', - 'static', - 'vercel-static', - 'zeabur-static', -] function checkDeploymentPresetInput(preset: string): DeploymentPreset { if (!vinxiDeploymentPresets.includes(preset as any)) { @@ -223,9 +216,6 @@ export function defineConfig( const deploymentPreset = checkDeploymentPresetInput( configDeploymentPreset || 'vercel', ) - const isStaticDeployment = - deploymentOptions.static ?? - staticDeploymentPresets.includes(deploymentPreset) const tsrConfig = getConfig(setTsrDefaults(opts.tsr)) @@ -242,7 +232,7 @@ export function defineConfig( return createApp({ server: { ...deploymentOptions, - static: isStaticDeployment, + static: deploymentOptions.static, preset: deploymentPreset, experimental: { asyncContext: true, From 84dbdd8dd2ca938cf68a22aea4134fdba6312337 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 19 Sep 2024 22:28:16 +0000 Subject: [PATCH 154/154] release: v1.58.5 --- examples/react/basic-ssr-file-based/package.json | 2 +- examples/react/basic-ssr-streaming-file-based/package.json | 2 +- examples/react/start-basic-auth/package.json | 2 +- examples/react/start-basic-counter/package.json | 2 +- examples/react/start-basic-react-query/package.json | 2 +- examples/react/start-basic-rsc/package.json | 2 +- examples/react/start-basic/package.json | 2 +- examples/react/start-clerk-basic/package.json | 2 +- examples/react/start-convex-trellaux/package.json | 2 +- examples/react/start-supabase-basic/package.json | 2 +- examples/react/start-trellaux/package.json | 2 +- packages/start/package.json | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json index ae3659ac51..6d0f5d438a 100644 --- a/examples/react/basic-ssr-file-based/package.json +++ b/examples/react/basic-ssr-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", - "@tanstack/start": "^1.58.4", + "@tanstack/start": "^1.58.5", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json index 0ff451eb32..e2092dd389 100644 --- a/examples/react/basic-ssr-streaming-file-based/package.json +++ b/examples/react/basic-ssr-streaming-file-based/package.json @@ -14,7 +14,7 @@ "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", - "@tanstack/start": "^1.58.4", + "@tanstack/start": "^1.58.5", "get-port": "^7.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json index 5f5fb0ea73..bf495cda89 100644 --- a/examples/react/start-basic-auth/package.json +++ b/examples/react/start-basic-auth/package.json @@ -16,7 +16,7 @@ "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", - "@tanstack/start": "^1.58.4", + "@tanstack/start": "^1.58.5", "dotenv": "^16.4.5", "isbot": "^5.1.17", "prisma": "^5.19.1", diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json index 858cfc29b3..2a32d39810 100644 --- a/examples/react/start-basic-counter/package.json +++ b/examples/react/start-basic-counter/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@tanstack/react-router": "^1.58.3", - "@tanstack/start": "^1.58.4", + "@tanstack/start": "^1.58.5", "react": "^18.3.1", "react-dom": "^18.3.1", "vinxi": "0.4.3" diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json index 1a2b7a90d5..6e8d42ca25 100644 --- a/examples/react/start-basic-react-query/package.json +++ b/examples/react/start-basic-react-query/package.json @@ -17,7 +17,7 @@ "@tanstack/react-router-with-query": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", - "@tanstack/start": "^1.58.4", + "@tanstack/start": "^1.58.5", "isbot": "^5.1.17", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json index 2dc2e8404a..bc54ab11ce 100644 --- a/examples/react/start-basic-rsc/package.json +++ b/examples/react/start-basic-rsc/package.json @@ -15,7 +15,7 @@ "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", - "@tanstack/start": "^1.58.4", + "@tanstack/start": "^1.58.5", "redaxios": "^0.5.1", "tailwind-merge": "^2.5.2", "vinxi": "0.4.3" diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json index 1f5416b853..31a8dfd74a 100644 --- a/examples/react/start-basic/package.json +++ b/examples/react/start-basic/package.json @@ -14,7 +14,7 @@ "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", - "@tanstack/start": "^1.58.4", + "@tanstack/start": "^1.58.5", "isbot": "^5.1.17", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json index 7661ad11f5..c70833219e 100644 --- a/examples/react/start-clerk-basic/package.json +++ b/examples/react/start-clerk-basic/package.json @@ -15,7 +15,7 @@ "@tanstack/react-router": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", - "@tanstack/start": "^1.58.4", + "@tanstack/start": "^1.58.5", "dotenv": "^16.4.5", "isbot": "^5.1.17", "react": "^18.3.1", diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json index 765b43abc4..90814bce80 100644 --- a/examples/react/start-convex-trellaux/package.json +++ b/examples/react/start-convex-trellaux/package.json @@ -19,7 +19,7 @@ "@tanstack/react-router-with-query": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", - "@tanstack/start": "^1.58.4", + "@tanstack/start": "^1.58.5", "@convex-dev/react-query": "0.0.0-alpha.5", "concurrently": "^8.2.2", "convex": "^1.16.0", diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json index 32ea1db95b..92efdeecbc 100644 --- a/examples/react/start-supabase-basic/package.json +++ b/examples/react/start-supabase-basic/package.json @@ -18,7 +18,7 @@ "@tanstack/react-router": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", "@tanstack/router-devtools": "^1.58.3", - "@tanstack/start": "^1.58.4", + "@tanstack/start": "^1.58.5", "@vitejs/plugin-react": "^4.3.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json index fc6bce4792..2a8c9bf1eb 100644 --- a/examples/react/start-trellaux/package.json +++ b/examples/react/start-trellaux/package.json @@ -17,7 +17,7 @@ "@tanstack/react-router-with-query": "^1.58.3", "@tanstack/router-devtools": "^1.58.3", "@tanstack/router-plugin": "^1.58.4", - "@tanstack/start": "^1.58.4", + "@tanstack/start": "^1.58.5", "isbot": "^5.1.17", "ky": "^1.7.2", "msw": "^2.4.7", diff --git a/packages/start/package.json b/packages/start/package.json index d335c5c9b4..647a37721e 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/start", - "version": "1.58.4", + "version": "1.58.5", "description": "Modern and scalable routing for React applications", "author": "Tanner Linsley", "license": "MIT",
+
+ +
+ + +