diff --git a/.github/workflows/bump_publish.yml b/.github/workflows/bump_publish.yml
index c8e5c0255..84304b5a4 100644
--- a/.github/workflows/bump_publish.yml
+++ b/.github/workflows/bump_publish.yml
@@ -82,21 +82,21 @@ jobs:
- name: Publish canary
if: ${{ (github.event.inputs.mode == 'bump_and_publish' || github.event.inputs.mode == 'publish') && github.event.inputs.release == 'canary' }}
- run: pnpm publish --filter create-vitnode-app --filter @vitnode/core --filter @vitnode/config --filter @vitnode/blog --tag canary --no-git-checks --access public
+ run: pnpm publish --filter create-vitnode-app --filter @vitnode/core --filter @vitnode/config --filter @vitnode/blog --filter @vitnode/nodemailer --filter @vitnode/resend --filter @vitnode/node-cron --tag canary --no-git-checks --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: true
- name: Publish release candidate
if: ${{ (github.event.inputs.mode == 'bump_and_publish' || github.event.inputs.mode == 'publish') && github.event.inputs.release == 'release-candidate' }}
- run: pnpm publish --filter create-vitnode-app --filter @vitnode/core --filter @vitnode/config --filter @vitnode/blog --tag rc --no-git-checks --access public
+ run: pnpm publish --filter create-vitnode-app --filter @vitnode/core --filter @vitnode/config --filter @vitnode/blog --filter @vitnode/nodemailer --filter @vitnode/resend --filter @vitnode/node-cron --tag rc --no-git-checks --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: true
- name: Publish stable
if: ${{ (github.event.inputs.mode == 'bump_and_publish' || github.event.inputs.mode == 'publish') && github.event.inputs.release == 'stable' }}
- run: pnpm publish --filter create-vitnode-app --filter @vitnode/core --filter @vitnode/config --filter @vitnode/blog --tag latest --no-git-checks --access public
+ run: pnpm publish --filter create-vitnode-app --filter @vitnode/core --filter @vitnode/config --filter @vitnode/blog --filter @vitnode/nodemailer --filter @vitnode/resend --filter @vitnode/node-cron --tag latest --no-git-checks --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: true
diff --git a/apps/api/package.json b/apps/api/package.json
index 7c4099122..3d2e54ae8 100644
--- a/apps/api/package.json
+++ b/apps/api/package.json
@@ -1,6 +1,6 @@
{
"name": "api",
- "version": "1.2.0-canary.60",
+ "version": "1.2.0-canary.68",
"private": true,
"type": "module",
"scripts": {
@@ -19,20 +19,21 @@
"@vitnode/core": "workspace:*",
"drizzle-kit": "^0.31.6",
"drizzle-orm": "^0.44.7",
- "hono": "^4.10.4",
- "next-intl": "^4.5.0",
+ "hono": "^4.10.5",
+ "next-intl": "^4.5.1",
"react": "^19.2.0",
"react-dom": "^19.2.0",
- "use-intl": "^4.5.0",
+ "use-intl": "^4.5.1",
"zod": "^4.1.12"
},
"devDependencies": {
"@hono/node-server": "^1.19.6",
"@react-email/components": "^1.0.0",
"@types/node": "^24.10.0",
- "@types/react": "^19.2.2",
+ "@types/react": "^19.2.3",
"@types/react-dom": "^19.2.2",
"@vitnode/config": "workspace:*",
+ "@vitnode/nodemailer": "workspace:*",
"dotenv": "^17.2.3",
"eslint": "^9.39.1",
"react-email": "^5.0.1",
diff --git a/apps/api/src/vitnode.api.config.ts b/apps/api/src/vitnode.api.config.ts
index 533a84faf..29274f43b 100644
--- a/apps/api/src/vitnode.api.config.ts
+++ b/apps/api/src/vitnode.api.config.ts
@@ -1,5 +1,5 @@
-import { NodemailerEmailAdapter } from "@vitnode/core/api/adapters/email/nodemailer";
import { buildApiConfig } from "@vitnode/core/vitnode.config";
+import { NodemailerEmailAdapter } from "@vitnode/nodemailer";
import { config } from "dotenv";
import { drizzle } from "drizzle-orm/postgres-js";
diff --git a/apps/docs/content/docs/dev/captcha/captcha_preview.png b/apps/docs/content/docs/dev/captcha/captcha_preview.png
new file mode 100644
index 000000000..b7d68a5ab
Binary files /dev/null and b/apps/docs/content/docs/dev/captcha/captcha_preview.png differ
diff --git a/apps/docs/content/docs/dev/captcha/custom-adapter.mdx b/apps/docs/content/docs/dev/captcha/custom-adapter.mdx
new file mode 100644
index 000000000..0cc0e0f74
--- /dev/null
+++ b/apps/docs/content/docs/dev/captcha/custom-adapter.mdx
@@ -0,0 +1,116 @@
+---
+title: Custom Adapter
+description: Create your own custom captcha adapter for VitNode.
+---
+
+If you want to use captcha in your custom form or somewhere else, follow these steps.
+
+## Usage
+
+
+
+
+### Activate captcha in route
+
+```ts title="plugins/{plugin_name}/src/routes/example.ts"
+import { buildRoute } from "@vitnode/core/api/lib/route";
+
+export const exampleRoute = buildRoute({
+ pluginId: CONFIG_PLUGIN.pluginId,
+ route: {
+ method: "post",
+ description: "Create a new user",
+ path: "/sign_up",
+ withCaptcha: true, // [!code ++]
+ },
+ handler: async c => {},
+});
+```
+
+
+
+
+### Get config from middleware API
+
+```tsx title="plugins/{plugin_name}/src/app/sing_up/page.tsx"
+import { getMiddlewareApi } from "@vitnode/core/lib/api/get-middleware-api"; // [!code ++]
+
+export const SignUpView = async () => {
+ const { captcha } = await getMiddlewareApi(); // [!code ++]
+
+ return ;
+};
+```
+
+
+
+
+### Use `useCaptcha` hook
+
+Inside your client component, use the `useCaptcha` hook to handle captcha rendering and validation. Remember to add `div` with `id="vitnode_captcha"` where you want the captcha widget to appear.
+
+```tsx title="plugins/{plugin_name}/src/components/form/sign-up/sign-up.tsx"
+"use client";
+
+import { AutoForm } from "@vitnode/core/components/form/auto-form";
+
+export const FormSignUp = ({
+ captcha, // [!code ++]
+}: {
+ captcha: z.infer["captcha"]; // [!code ++]
+}) => {
+ // [!code ++]
+ const { isReady, getToken, onReset } = useCaptcha(captcha);
+
+ const onSubmit = async () => {
+ await mutationApi({
+ // ...other values,
+ captchaToken: await getToken(), // [!code ++]
+ });
+
+ // Handle success or error
+ // [!code ++]
+ onReset(); // Reset captcha after submission
+ };
+
+ return (
+
+ );
+};
+```
+
+
+
+
+### Submit form with captcha
+
+```tsx title="plugins/{plugin_name}/src/components/form/sign-up/mutation-api.ts"
+"use server";
+
+import type { z } from "zod";
+
+import { fetcher } from "@vitnode/core/lib/fetcher";
+
+export const mutationApi = async ({
+ captchaToken, // [!code ++]
+}: {
+ // [!code ++]
+ captchaToken;
+}) => {
+ await fetcher(usersModule, {
+ path: "/test",
+ method: "post",
+ module: "blog",
+ captchaToken, // [!code ++]
+ });
+};
+```
+
+
+
diff --git a/apps/docs/content/docs/dev/captcha/index.mdx b/apps/docs/content/docs/dev/captcha/index.mdx
index 0967d5b84..8841d9655 100644
--- a/apps/docs/content/docs/dev/captcha/index.mdx
+++ b/apps/docs/content/docs/dev/captcha/index.mdx
@@ -3,7 +3,13 @@ title: Captcha
description: Protect your forms and API call with captcha validation.
---
-## Support
+import captchaPreview from "./captcha_preview.png";
+
+import { ImgDocs } from "@/components/fumadocs/img";
+
+
+
+## Providers
VitNode supports multiple captcha providers. You can choose the one that fits your needs. Currently, we support:
@@ -13,7 +19,11 @@ VitNode supports multiple captcha providers. You can choose the one that fits yo
description="By Cloudflare"
href="/docs/guides/captcha/cloudflare"
/>
-
+
If you need more providers, feel free to open a **Feature Request** on our [GitHub repository](https://github.com/aXenDeveloper/vitnode/issues) :)
@@ -38,9 +48,9 @@ export const exampleRoute = buildRoute({
method: "post",
description: "Create a new user",
path: "/sign_up",
- withCaptcha: true // [!code ++]
+ withCaptcha: true, // [!code ++]
},
- handler: async (c) => {}
+ handler: async c => {},
});
```
@@ -74,7 +84,7 @@ Get the `captcha` config from the props and pass it to the `AutoForm` component.
import { AutoForm } from "@vitnode/core/components/form/auto-form";
export const FormSignUp = ({
- captcha // [!code ++]
+ captcha, // [!code ++]
}: {
captcha: z.infer["captcha"]; // [!code ++]
}) => {
@@ -106,23 +116,23 @@ In your form submission handler, you can get the `captchaToken` from the form su
import {
AutoForm,
- type AutoFormOnSubmit // [!code ++]
+ type AutoFormOnSubmit, // [!code ++]
} from "@vitnode/core/components/form/auto-form";
export const FormSignUp = ({
- captcha
+ captcha,
}: {
captcha: z.infer["captcha"];
}) => {
const onSubmit: AutoFormOnSubmit = async (
values,
form,
- { captchaToken } // [!code ++]
+ { captchaToken }, // [!code ++]
) => {
// Call your mutation API with captcha token
await mutationApi({
...values,
- captchaToken // [!code ++]
+ captchaToken, // [!code ++]
});
// Handle success or error
@@ -159,8 +169,8 @@ z.infer & { captchaToken: string }) => {
module: "users",
captchaToken, // [!code ++]
args: {
- body: input
- }
+ body: input,
+ },
});
if (res.status !== 201) {
@@ -175,115 +185,3 @@ z.infer & { captchaToken: string }) => {
-
-## Custom Usage
-
-If you want to use captcha in your custom form or somewhere else, follow these steps.
-
-
-
-
-### Activate captcha in route
-
-```ts title="plugins/{plugin_name}/src/routes/example.ts"
-import { buildRoute } from "@vitnode/core/api/lib/route";
-
-export const exampleRoute = buildRoute({
- pluginId: CONFIG_PLUGIN.pluginId,
- route: {
- method: "post",
- description: "Create a new user",
- path: "/sign_up",
- withCaptcha: true // [!code ++]
- },
- handler: async (c) => {}
-});
-```
-
-
-
-
-### Get config from middleware API
-
-```tsx title="plugins/{plugin_name}/src/app/sing_up/page.tsx"
-import { getMiddlewareApi } from "@vitnode/core/lib/api/get-middleware-api"; // [!code ++]
-
-export const SignUpView = async () => {
- const { captcha } = await getMiddlewareApi(); // [!code ++]
-
- return ;
-};
-```
-
-
-
-
-### Use `useCaptcha` hook
-
-Inside your client component, use the `useCaptcha` hook to handle captcha rendering and validation. Remember to add `div` with `id="vitnode_captcha"` where you want the captcha widget to appear.
-
-```tsx title="plugins/{plugin_name}/src/components/form/sign-up/sign-up.tsx"
-"use client";
-
-import { AutoForm } from "@vitnode/core/components/form/auto-form";
-
-export const FormSignUp = ({
- captcha // [!code ++]
-}: {
- captcha: z.infer["captcha"]; // [!code ++]
-}) => {
- // [!code ++]
- const { isReady, getToken, onReset } = useCaptcha(captcha);
-
- const onSubmit = async () => {
- await mutationApi({
- // ...other values,
- captchaToken: await getToken() // [!code ++]
- });
-
- // Handle success or error
- // [!code ++]
- onReset(); // Reset captcha after submission
- };
-
- return (
-
- );
-};
-```
-
-
-
-
-### Submit form with captcha
-
-```tsx title="plugins/{plugin_name}/src/components/form/sign-up/mutation-api.ts"
-"use server";
-
-import type { z } from "zod";
-
-import { fetcher } from "@vitnode/core/lib/fetcher";
-
-export const mutationApi = async ({
- captchaToken // [!code ++]
-}: {
- // [!code ++]
- captchaToken;
-}) => {
- await fetcher(usersModule, {
- path: "/test",
- method: "post",
- module: "blog",
- captchaToken // [!code ++]
- });
-};
-```
-
-
-
diff --git a/apps/docs/content/docs/dev/captcha/meta.json b/apps/docs/content/docs/dev/captcha/meta.json
new file mode 100644
index 000000000..f9977456b
--- /dev/null
+++ b/apps/docs/content/docs/dev/captcha/meta.json
@@ -0,0 +1,4 @@
+{
+ "title": "Captcha",
+ "pages": ["...", "custom-adapter"]
+}
diff --git a/apps/docs/content/docs/dev/cron/custom-adapter.mdx b/apps/docs/content/docs/dev/cron/custom-adapter.mdx
new file mode 100644
index 000000000..14c461303
--- /dev/null
+++ b/apps/docs/content/docs/dev/cron/custom-adapter.mdx
@@ -0,0 +1,83 @@
+---
+title: Custom Adapter
+description: Create your own custom cron adapter for VitNode.
+---
+
+VitNode supports custom cron adapters, allowing you to integrate with various scheduling libraries or services.
+
+## Usage
+
+
+
+
+### Create your custom adapter
+
+As an example we will create a custom adapter using the popular `node-cron` library.
+
+```ts
+import { schedule } from "node-cron";
+import { type CronAdapter, handleCronJobs } from "@/api/lib/cron";
+
+export const NodeCronAdapter = (): CronAdapter => {
+ return {
+ schedule() {
+ schedule("*/1 * * * *", async () => {
+ await handleCronJobs(); // [!code ++]
+ });
+ },
+ };
+};
+```
+
+
+
+
+
+### Integrate the adapter into your application
+
+```ts title="src/vitnode.api.config.ts"
+import { NodeCronAdapter } from "./path/to/your/custom/node-cron.adapter";
+
+export const vitNodeApiConfig = buildApiConfig({
+ cronAdapter: NodeCronAdapter(),
+});
+```
+
+
+
+
+
+### Restart server
+
+After making these changes, stop your server (if it's running) and restart it to apply the new configuration.
+
+import { Tab, Tabs } from "fumadocs-ui/components/tabs";
+
+
+
+```bash tab="bun"
+bun dev
+```
+
+```bash tab="pnpm"
+pnpm dev
+```
+
+```bash tab="npm"
+npm run dev
+```
+
+
+
+That's it — your app now has a built-in task scheduler, ready to handle cron jobs with standard cron expressions.
+
+
+
+
+### Check Your Cron Jobs
+
+You can check your cron jobs in AdminCP under `Core` => `Advanced` => `Cron Jobs`.
+
+
+
+
diff --git a/apps/docs/content/docs/dev/cron/index.mdx b/apps/docs/content/docs/dev/cron/index.mdx
index 5be6d1c73..8b0dacb25 100644
--- a/apps/docs/content/docs/dev/cron/index.mdx
+++ b/apps/docs/content/docs/dev/cron/index.mdx
@@ -20,80 +20,52 @@ Before you can use cron functionality, you need to provide an adapter to your ap
/>
-## Custom adapter
-
-VitNode supports custom cron adapters, allowing you to integrate with various scheduling libraries or services.
+## Usage
-
-### Create your custom adapter
-
-As an example we will create a custom adapter using the popular `node-cron` library.
-
-```ts
-import { schedule } from "node-cron";
-import { type CronAdapter, handleCronJobs } from "@/api/lib/cron";
-
-export const NodeCronAdapter = (): CronAdapter => {
- return {
- schedule() {
- schedule("*/1 * * * *", async () => {
- await handleCronJobs(); // [!code ++]
- });
- }
- };
-};
-```
-
-
-
-
-
-### Integrate the adapter into your application
-
-```ts title="src/vitnode.api.config.ts"
-import { NodeCronAdapter } from "./path/to/your/custom/node-cron.adapter";
-
-export const vitNodeApiConfig = buildApiConfig({
- cronAdapter: NodeCronAdapter()
+### Create CRON file
+
+```ts title="cron/clean.cron.ts"
+import { buildCron } from "@vitnode/core/api/lib/cron";
+
+export const cleanCron = buildCron({
+ name: "clean",
+ description: "Clean up expired sessions and tokens",
+ // Run every 1 hour
+ schedule: "0 * * * *",
+ handler: async c => {
+ console.log("Running cleanup cron job...");
+ },
});
```
-
+### Register CRON in module
-## Restart server
-
-After making these changes, stop your server (if it's running) and restart it to apply the new configuration.
+```ts title="modules/clean/clean.module.ts"
+import { buildModule } from "@vitnode/core/api/lib/module";
+import { CONFIG_PLUGIN } from "@/config";
-import { Tab, Tabs } from "fumadocs-ui/components/tabs";
-
-
-
-```bash tab="bun"
-bun dev
-```
+// [!code ++]
+import { cleanCron } from "./cron/clean.cron";
-```bash tab="pnpm"
-pnpm dev
-```
-
-```bash tab="npm"
-npm run dev
+export const cronModule = buildModule({
+ pluginId: CONFIG_PLUGIN.pluginId,
+ name: "clean",
+ routes: [],
+ // [!code ++]
+ cronJobs: [cleanCron],
+});
```
-
-
-That's it — your app now has a built-in task scheduler, ready to handle cron jobs with standard cron expressions.
-
-## Check Your Cron Jobs
+### Check Your Cron Job
-You can check your cron jobs in AdminCP under **Core => Advanced => Cron Jobs**.
+When your CRON job will run first time, you should see your job in AdminCP under `Core` => `Advanced` => `Cron Jobs`.
diff --git a/apps/docs/content/docs/dev/cron/meta.json b/apps/docs/content/docs/dev/cron/meta.json
index f5df12b36..42ae35c6f 100644
--- a/apps/docs/content/docs/dev/cron/meta.json
+++ b/apps/docs/content/docs/dev/cron/meta.json
@@ -1,4 +1,4 @@
{
"title": "CRON Jobs",
- "pages": ["rest-api", "..."]
+ "pages": ["rest-api", "...", "custom-adapter"]
}
diff --git a/apps/docs/content/docs/dev/cron/node-cron.mdx b/apps/docs/content/docs/dev/cron/node-cron.mdx
index cfe76f380..2a5f75706 100644
--- a/apps/docs/content/docs/dev/cron/node-cron.mdx
+++ b/apps/docs/content/docs/dev/cron/node-cron.mdx
@@ -5,10 +5,9 @@ description: In-memory tiny task scheduler in pure JavaScript for node.js based
This adapter lets you run scheduled jobs directly inside your Node.js app. It's simple, lightweight, and doesn't require any external services — great for when you just need cron tasks running locally or in memory.
-
- This documentation is for self-hosted VitNode instances only. You cannot use this if you are
- planning to deploy your application to the cloud.
-
+| Cloud | Self-Hosted | Links |
+| ---------------- | ------------ | ------------------------------------------------------ |
+| ❌ Not Supported | ✅ Supported | [NPM Package](https://www.npmjs.com/package/node-cron) |
@@ -16,18 +15,18 @@ This adapter lets you run scheduled jobs directly inside your Node.js app. It's
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
-
+
```bash tab="bun"
-bun i node-cron
+bun i @vitnode/node-cron -D
```
```bash tab="pnpm"
-pnpm i node-cron
+pnpm i @vitnode/node-cron -D
```
```bash tab="npm"
-npm i node-cron
+npm i @vitnode/node-cron -D
```
@@ -37,12 +36,13 @@ npm i node-cron
## Usage
```ts title="src/vitnode.api.config.ts"
-import { NodeCronAdapter } from "@vitnode/core/api/adapters/cron/node-cron.adapter";
-```
+// [!code ++]
+import { NodeCronAdapter } from "@vitnode/node-cron";
+import { buildApiConfig } from "@vitnode/core/vitnode.config";
-```ts title="src/vitnode.api.config.ts"
export const vitNodeApiConfig = buildApiConfig({
- cronAdapter: NodeCronAdapter()
+ // [!code ++]
+ cronAdapter: NodeCronAdapter(),
});
```
@@ -54,7 +54,7 @@ export const vitNodeApiConfig = buildApiConfig({
After making these changes, stop your server (if it's running) and restart it to apply the new configuration.
-
+
```bash tab="bun"
bun dev
@@ -77,7 +77,7 @@ That's it — your app now has a built-in task scheduler, ready to handle cron j
## Check Your Cron Jobs
-You can check your cron jobs in AdminCP under **Core => Advanced => Cron Jobs**.
+You can check your cron jobs in AdminCP under `Core` => `Advanced` => `Cron Jobs`.
diff --git a/apps/docs/content/docs/dev/cron/rest-api.mdx b/apps/docs/content/docs/dev/cron/rest-api.mdx
index e4d6e1b95..515e9041b 100644
--- a/apps/docs/content/docs/dev/cron/rest-api.mdx
+++ b/apps/docs/content/docs/dev/cron/rest-api.mdx
@@ -5,6 +5,10 @@ description: Run cron jobs by triggering REST API endpoints from an external sch
This method lets you use external services to manage and run your cron jobs through simple HTTP requests. It's flexible and works with many providers, so you can pick the scheduling tool that best fits your infrastructure.
+| Cloud | Self-Hosted |
+| ------------ | ------------ |
+| ✅ Supported | ✅ Supported |
+
## Add a Secret Key
@@ -18,7 +22,8 @@ CRON_SECRET=your_secret_key
```
- We recommend using a random string of at least **16 characters** for better security.
+ We recommend using a random string of at least **16 characters** for better
+ security.
@@ -34,11 +39,16 @@ Next, configure a scheduler that will send HTTP requests to your cron endpoint.
- [Google Cloud Functions with Cloud Scheduler](https://cloud.google.com/scheduler/docs/tut-pub-sub)
- [EasyCron](https://www.easycron.com/)
-
- You need to set schedule for every minute to ensure that your cron jobs are executed on time.
-
-Make sure to include the `Authorization` header with the value `Bearer {your_key}` in your requests, where `{your_key}` is the value of the `CRON_SECRET` variable you set in your `.env` file.
+
+ You need to set schedule for every minute to ensure that your cron jobs are
+ executed on time. Some schedulers may have limitations on minimum intervals,
+ so choose one that fits your needs.
+
+
+ Make sure to include the `Authorization` header with the value `Bearer{" "}
+ {your_key}` in your requests, where `{your_key}` is the value of the
+ `CRON_SECRET` variable you set in your `.env` file.
@@ -61,7 +71,7 @@ Replace `https://your-domain.com/api/cron` with your actual domain and `{{your_k
## Check Your Cron Jobs
-You can check your cron jobs in AdminCP under **Core => Advanced => Cron Jobs**.
+You can check your cron jobs in AdminCP under `Core` => `Advanced` => `Cron Jobs`.
diff --git a/apps/docs/content/docs/dev/email/custom-adapter.mdx b/apps/docs/content/docs/dev/email/custom-adapter.mdx
new file mode 100644
index 000000000..109eabe40
--- /dev/null
+++ b/apps/docs/content/docs/dev/email/custom-adapter.mdx
@@ -0,0 +1,95 @@
+---
+title: Custom Adapter
+description: Create your own custom email adapter for VitNode.
+---
+
+Want to create your own email adapter? You can do it by implementing the `EmailApiPlugin` interface. This allows you to define how emails are sent in your application.
+
+## Usage
+
+
+
+### Create adapter
+
+Here is your template for a custom email adapter.
+
+```ts title="src/utils/email/mailer.ts"
+import type { EmailApiPlugin } from "@vitnode/core/api/models/email";
+
+export const MailerEmailAdapter = (): EmailApiPlugin => {};
+```
+
+
+
+
+### Add config
+
+If you want to provide config for you adapter, you can do it like this:
+
+```ts title="src/utils/email/mailer.ts"
+import type { EmailApiPlugin } from "@vitnode/core/api/models/email";
+
+export const MailerEmailAdapter = ({
+ // [!code ++:13]
+ host = "",
+ port = 587,
+ secure = false,
+ user = "",
+ password = "",
+ from = "",
+}: {
+ from: string | undefined;
+ host: string | undefined;
+ password: string | undefined;
+ port?: number;
+ secure?: boolean;
+ user: string | undefined;
+}): EmailApiPlugin => {};
+```
+
+
+
+
+
+### Add `sendEmail()` method
+
+Implement the `sendEmail()` method to send emails using your custom logic. You can use any email sending library or service.
+
+```ts title="src/utils/email/mailer.ts"
+import type { EmailApiPlugin } from "@vitnode/core/api/models/email";
+
+export const MailerEmailAdapter = ({
+ host = "",
+ port = 587,
+ secure = false,
+ user = "",
+ password = "",
+ from = "",
+}: {
+ from: string | undefined;
+ host: string | undefined;
+ password: string | undefined;
+ port?: number;
+ secure?: boolean;
+ user: string | undefined;
+}): EmailApiPlugin => {
+ // [!code ++:3]
+ return {
+ sendEmail: async ({ metadata, to, subject, html, replyTo, text }) => {},
+ };
+};
+```
+
+
+
+
+## Publish to NPM
+
+If you want to share your custom adapter with the community, you can publish it as an NPM package.
+
+Example source code for NPM packages:
+
+- [Resend Adapter](https://github.com/aXenDeveloper/vitnode/tree/canary/packages/resend),
+- [Nodemailer Adapter](https://github.com/aXenDeveloper/vitnode/tree/canary/packages/nodemailer)
+
+Make sure to follow best practices for package development and include proper documentation.
diff --git a/apps/docs/content/docs/dev/email/index.mdx b/apps/docs/content/docs/dev/email/index.mdx
index b63e75607..7e132717c 100644
--- a/apps/docs/content/docs/dev/email/index.mdx
+++ b/apps/docs/content/docs/dev/email/index.mdx
@@ -9,10 +9,10 @@ Before you can use email functionality, you need to provide an adapter to your a
-
+
-or create your own [custom email adapter](/docs/dev/email/overview#custom-email-adapter)...
+or create your own [custom email adapter](/docs/dev/email/custom-adapter).
## Usage
@@ -24,10 +24,10 @@ import { buildRoute } from "@vitnode/core/api/lib/route";
import { UserModel } from "@vitnode/core/api/models/user";
export const testRoute = buildRoute({
- handler: async (c) => {
+ handler: async c => {
const user = await new UserModel().getUserById({
id: 3,
- c
+ c,
});
if (!user) throw new Error("User not found");
@@ -36,11 +36,11 @@ export const testRoute = buildRoute({
await c.get("email").send({
subject: "Test Email",
content: () => "This is a test email.",
- user
+ user,
});
return c.text("test");
- }
+ },
});
```
@@ -51,96 +51,16 @@ import { z } from "zod";
import { buildRoute } from "@vitnode/core/api/lib/route";
export const testRoute = buildRoute({
- handler: async (c) => {
+ handler: async c => {
// [!code ++:6]
await c.get("email").send({
to: "test@test.com",
subject: "Test Email",
content: () => "This is a test email.",
- locale: "en"
+ locale: "en",
});
return c.text("test");
- }
+ },
});
```
-
-## Custom Email Adapter
-
-Want to create your own email adapter? You can do it by implementing the `EmailApiPlugin` interface. This allows you to define how emails are sent in your application.
-
-
-
-### Create adapter
-
-Here is your template for a custom email adapter.
-
-```ts title="src/utils/email/mailer.ts"
-import type { EmailApiPlugin } from "@vitnode/core/api/models/email";
-
-export const MailerEmailAdapter = (): EmailApiPlugin => {};
-```
-
-
-
-
-### Add config
-
-If you want to provide config for you adapter, you can do it like this:
-
-```ts title="src/utils/email/mailer.ts"
-import type { EmailApiPlugin } from "@vitnode/core/api/models/email";
-
-export const MailerEmailAdapter = ({
- // [!code ++:13]
- host = "",
- port = 587,
- secure = false,
- user = "",
- password = "",
- from = ""
-}: {
- from: string | undefined;
- host: string | undefined;
- password: string | undefined;
- port?: number;
- secure?: boolean;
- user: string | undefined;
-}): EmailApiPlugin => {};
-```
-
-
-
-
-
-### Add `sendEmail()` method
-
-Implement the `sendEmail()` method to send emails using your custom logic. You can use any email sending library or service.
-
-```ts title="src/utils/email/mailer.ts"
-import type { EmailApiPlugin } from "@vitnode/core/api/models/email";
-
-export const MailerEmailAdapter = ({
- host = "",
- port = 587,
- secure = false,
- user = "",
- password = "",
- from = ""
-}: {
- from: string | undefined;
- host: string | undefined;
- password: string | undefined;
- port?: number;
- secure?: boolean;
- user: string | undefined;
-}): EmailApiPlugin => {
- // [!code ++:3]
- return {
- sendEmail: async ({ metadata, to, subject, html, replyTo, text }) => {}
- };
-};
-```
-
-
-
diff --git a/apps/docs/content/docs/dev/email/meta.json b/apps/docs/content/docs/dev/email/meta.json
index 7d2940a6b..a0d3641b4 100644
--- a/apps/docs/content/docs/dev/email/meta.json
+++ b/apps/docs/content/docs/dev/email/meta.json
@@ -1,4 +1,10 @@
{
"title": "Email",
- "pages": ["templates", "components", "---Adapters---", "..."]
+ "pages": [
+ "templates",
+ "components",
+ "---Adapters---",
+ "...",
+ "custom-adapter"
+ ]
}
diff --git a/apps/docs/content/docs/dev/email/nodemailer.mdx b/apps/docs/content/docs/dev/email/nodemailer.mdx
new file mode 100644
index 000000000..5cb348ad7
--- /dev/null
+++ b/apps/docs/content/docs/dev/email/nodemailer.mdx
@@ -0,0 +1,71 @@
+---
+title: Nodemailer (SMTP)
+description: Send emails using SMTP with the Nodemailer adapter.
+---
+
+| Cloud | Self-Hosted | Links |
+| ---------------- | ------------ | ------------------------------------------------------- |
+| ❌ Not Supported | ✅ Supported | [NPM Package](https://www.npmjs.com/package/nodemailer) |
+
+## Usage
+
+
+
+### Installation
+
+import { Tab, Tabs } from "fumadocs-ui/components/tabs";
+
+
+
+```bash tab="bun"
+bun i @vitnode/nodemailer -D
+```
+
+```bash tab="pnpm"
+pnpm i @vitnode/nodemailer -D
+```
+
+```bash tab="npm"
+npm i @vitnode/nodemailer -D
+```
+
+
+
+
+
+### Import the adapter
+
+```ts title="vitnode.api.config.ts"
+// [!code ++]
+import { NodemailerEmailAdapter } from "@vitnode/nodemailer";
+import { buildApiConfig } from "@vitnode/core/vitnode.config";
+
+export const vitNodeApiConfig = buildApiConfig({
+ email: {
+ // [!code ++:6]
+ adapter: NodemailerEmailAdapter({
+ from: process.env.NODE_MAILER_FROM,
+ host: process.env.NODE_MAILER_HOST,
+ password: process.env.NODE_MAILER_PASSWORD,
+ user: process.env.NOD_EMAILER_USER,
+ }),
+ },
+});
+```
+
+
+
+
+### Environment Variables
+
+Add the following environment variables to your `.env` file:
+
+```bash title=".env"
+NODE_MAILER_FROM=your_verified_email
+NODE_MAILER_HOST=smtp.your-email-provider.com
+NODE_MAILER_PASSWORD=your_email_password
+NOD_EMAILER_USER=your_email_username
+```
+
+
+
diff --git a/apps/docs/content/docs/dev/email/resend.mdx b/apps/docs/content/docs/dev/email/resend.mdx
index 2355f7c04..abe8a3b84 100644
--- a/apps/docs/content/docs/dev/email/resend.mdx
+++ b/apps/docs/content/docs/dev/email/resend.mdx
@@ -1,8 +1,67 @@
---
title: Resend
-description: How to use Resend for sending emails in your application.
+description: Send emails using Resend with the Resend adapter.
---
-
- We're working hard to bring you the best documentation experience.
-
+| Cloud | Self-Hosted | Links |
+| ------------ | ------------ | --------------------------------------------------- |
+| ✅ Supported | ✅ Supported | [NPM Package](https://www.npmjs.com/package/resend) |
+
+## Usage
+
+
+
+### Installation
+
+import { Tab, Tabs } from "fumadocs-ui/components/tabs";
+
+
+
+```bash tab="bun"
+bun i @vitnode/resend -D
+```
+
+```bash tab="pnpm"
+pnpm i @vitnode/resend -D
+```
+
+```bash tab="npm"
+npm i @vitnode/resend -D
+```
+
+
+
+
+
+### Import the adapter
+
+```ts title="vitnode.api.config.ts"
+// [!code ++]
+import { ResendEmailAdapter } from "@vitnode/resend";
+import { buildApiConfig } from "@vitnode/core/vitnode.config";
+
+export const vitNodeApiConfig = buildApiConfig({
+ email: {
+ // [!code ++:4]
+ adapter: ResendEmailAdapter({
+ apiKey: process.env.RESEND_API_KEY,
+ from: process.env.RESEND_FROM_EMAIL,
+ }),
+ },
+});
+```
+
+
+
+
+### Environment Variables
+
+Add the following environment variables to your `.env` file:
+
+```bash title=".env"
+RESEND_API_KEY=your_resend_api_key
+RESEND_FROM_EMAIL=your_verified_resend_email
+```
+
+
+
diff --git a/apps/docs/content/docs/dev/email/smtp.mdx b/apps/docs/content/docs/dev/email/smtp.mdx
deleted file mode 100644
index a1386ec4a..000000000
--- a/apps/docs/content/docs/dev/email/smtp.mdx
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: SMTP
-description: SMTP configuration for sending emails
----
-
-
- This documentation is for self-hosted VitNode instances only. You cannot use
- this if you are planning to deploy your application to the cloud.
-
-
-
- We're working hard to bring you the best documentation experience.
-
diff --git a/apps/docs/content/docs/dev/sso/custom-adapter.mdx b/apps/docs/content/docs/dev/sso/custom-adapter.mdx
new file mode 100644
index 000000000..45a8feeb3
--- /dev/null
+++ b/apps/docs/content/docs/dev/sso/custom-adapter.mdx
@@ -0,0 +1,352 @@
+---
+title: Custom Adapter
+description: Create your own custom SSO adapter for VitNode.
+---
+
+Want to let your users sign in with their favorite services? Let's build a custom SSO adapter! We'll use Discord as an example, but you can adapt this guide for any OAuth2 provider.
+
+## Usage
+
+import { Callout } from "fumadocs-ui/components/callout";
+
+
+
+ ### Create Your SSO Plugin
+
+Let's start with the basics. Create a new file for your SSO provider:
+
+```ts title="src/utils/sso/discord_api.ts"
+import { SSOApiPlugin, getRedirectUri } from "@vitnode/core/api/models/sso";
+
+export const DiscordSSOApiPlugin = ({
+ clientId,
+ clientSecret,
+}: {
+ clientId: string;
+ clientSecret: string;
+}): SSOApiPlugin => {
+ const id = "discord";
+ const redirectUri = getRedirectUri(id);
+
+ return { id, name: "Discord" };
+};
+```
+
+This is like creating a blueprint for your SSO provider. The `id` will be used in URLs and the `name` is what users will see.
+
+
+
+
+### Add Authentication URL Generator
+
+Now let's add the magic that sends users to Discord for login:
+
+```ts title="src/utils/sso/discord_api.ts"
+import { SSOApiPlugin, getRedirectUri } from "@vitnode/core/api/models/sso";
+
+export const DiscordSSOApiPlugin = ({
+ clientId,
+ clientSecret,
+}: {
+ clientId: string;
+ clientSecret: string;
+}): SSOApiPlugin => {
+ const id = "discord";
+ const redirectUri = getRedirectUri(id);
+
+ return {
+ id,
+ name: "Discord",
+ // [!code ++]
+ getUrl: ({ state }) => {
+ // [!code ++]
+ const url = new URL("https://discord.com/oauth2/authorize");
+ // [!code ++]
+ url.searchParams.set("client_id", clientId);
+ // [!code ++]
+ url.searchParams.set("redirect_uri", redirectUri);
+ // [!code ++]
+ url.searchParams.set("response_type", "code");
+ // [!code ++]
+ url.searchParams.set("scope", "identify email");
+ // [!code ++]
+ url.searchParams.set("state", state);
+ // [!code ++]
+ return url.toString();
+ // [!code ++]
+ },
+ };
+};
+```
+
+
+ Always include the `state` parameter - it's your security guard against CSRF
+ attacks. Don't worry, VitNode handles this automatically!
+
+
+
+
+
+
+### Handle Token Exchange
+
+After the user approves access, Discord sends us a code. Let's exchange it for an access token:
+
+```ts title="src/utils/sso/discord_api.ts"
+import { SSOApiPlugin, getRedirectUri } from "@vitnode/core/api/models/sso";
+import { HTTPException } from "hono/http-exception";
+import { ContentfulStatusCode } from "hono/utils/http-status";
+import { z } from "zod";
+
+const tokenSchema = z.object({
+ access_token: z.string(),
+ token_type: z.string(),
+});
+
+export const DiscordSSOApiPlugin = ({
+ clientId,
+ clientSecret,
+}: {
+ clientId: string;
+ clientSecret: string;
+}): SSOApiPlugin => {
+ const id = "discord";
+ const redirectUri = getRedirectUri(id);
+
+ return {
+ id,
+ name: "Discord",
+ // [!code ++]
+ fetchToken: async code => {
+ // [!code ++]
+ const res = await fetch("https://discord.com/api/oauth2/token", {
+ // [!code ++]
+ method: "POST",
+ // [!code ++]
+ headers: {
+ // [!code ++]
+ "Content-Type": "application/x-www-form-urlencoded",
+ // [!code ++]
+ Accept: "application/json",
+ // [!code ++]
+ },
+ // [!code ++]
+ body: new URLSearchParams({
+ // [!code ++]
+ code,
+ // [!code ++]
+ redirect_uri: redirectUri,
+ // [!code ++]
+ grant_type: "authorization_code",
+ // [!code ++]
+ client_id: clientId,
+ // [!code ++]
+ client_secret: clientSecret,
+ // [!code ++]
+ }),
+ // [!code ++]
+ });
+
+ // [!code ++]
+ if (!res.ok) {
+ // [!code ++]
+ throw new HTTPException(
+ // [!code ++]
+ +res.status.toString() as ContentfulStatusCode,
+ // [!code ++]
+ {
+ // [!code ++]
+ message: "Internal error requesting token",
+ // [!code ++]
+ },
+ // [!code ++]
+ );
+ // [!code ++]
+ }
+
+ // [!code ++]
+ const { data, error } = tokenSchema.safeParse(await res.json());
+ // [!code ++]
+ if (error ?? !data) {
+ // [!code ++]
+ throw new HTTPException(400, {
+ // [!code ++]
+ message: "Invalid token response",
+ // [!code ++]
+ });
+ // [!code ++]
+ }
+
+ // [!code ++]
+ return data;
+ // [!code ++]
+ },
+ getUrl: ({ state }) => {
+ const url = new URL("https://discord.com/oauth2/authorize");
+ url.searchParams.set("client_id", clientId);
+ url.searchParams.set("redirect_uri", redirectUri);
+ url.searchParams.set("response_type", "code");
+ url.searchParams.set("scope", "identify email");
+ url.searchParams.set("state", state);
+
+ return url.toString();
+ },
+ };
+};
+```
+
+
+
+
+
+### Get User Information
+
+Finally, let's get the user's profile data using our shiny new access token:
+
+```ts title="src/utils/sso/discord_api.ts"
+import { SSOApiPlugin, getRedirectUri } from "@vitnode/core/api/models/sso";
+import { HTTPException } from "hono/http-exception";
+import { ContentfulStatusCode } from "hono/utils/http-status";
+import { z } from "zod";
+
+const userSchema = z.object({
+ id: z.number(),
+ email: z.string(),
+ username: z.string(),
+});
+
+export const DiscordSSOApiPlugin = ({
+ clientId,
+ clientSecret,
+}: {
+ clientId: string;
+ clientSecret: string;
+}): SSOApiPlugin => {
+ const id = "discord";
+ const redirectUri = getRedirectUri(id);
+
+ return {
+ id,
+ name: "Discord",
+ // [!code ++]
+ fetchUser: async ({ token_type, access_token }) => {
+ // [!code ++]
+ const res = await fetch("https://discord.com/api/users/@me", {
+ // [!code ++]
+ headers: {
+ // [!code ++]
+ Authorization: `${token_type} ${access_token}`,
+ // [!code ++]
+ },
+ // [!code ++]
+ });
+
+ // [!code ++]
+ const { data, error } = userSchema.safeParse(await res.json());
+ // [!code ++]
+ if (error ?? !data) {
+ // [!code ++]
+ throw new HTTPException(400, {
+ // [!code ++]
+ message: "Invalid user response",
+ // [!code ++]
+ });
+ // [!code ++]
+ }
+
+ // [!code ++]
+ return data;
+ // [!code ++]
+ },
+ fetchToken: async code => {
+ const res = await fetch("https://discord.com/api/oauth2/token", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/x-www-form-urlencoded",
+ Accept: "application/json",
+ },
+ body: new URLSearchParams({
+ code,
+ redirect_uri: redirectUri,
+ grant_type: "authorization_code",
+ client_id: clientId,
+ client_secret: clientSecret,
+ }),
+ });
+
+ if (!res.ok) {
+ throw new HTTPException(
+ +res.status.toString() as ContentfulStatusCode,
+ {
+ message: "Internal error requesting token",
+ },
+ );
+ }
+
+ const { data, error } = tokenSchema.safeParse(await res.json());
+ if (error ?? !data) {
+ throw new HTTPException(400, {
+ message: "Invalid token response",
+ });
+ }
+
+ return data;
+ },
+ getUrl: ({ state }) => {
+ const url = new URL("https://discord.com/oauth2/authorize");
+ url.searchParams.set("client_id", clientId);
+ url.searchParams.set("redirect_uri", redirectUri);
+ url.searchParams.set("response_type", "code");
+ url.searchParams.set("scope", "identify email");
+ url.searchParams.set("state", state);
+
+ return url.toString();
+ },
+ };
+};
+```
+
+
+ Pro tip: Some OAuth providers might return unverified email addresses. If your
+ provider gives you an email verification status, add it to your validation to
+ keep things secure!
+
+
+
+
+
+
+## Connect Everything Together
+
+Last step! Let's plug your new SSO provider into your app:
+
+```ts title="src/app/api/[...route]/route.ts"
+import { OpenAPIHono } from "@hono/zod-openapi";
+import { handle } from "hono/vercel";
+import { VitNodeAPI } from "@vitnode/core/api/config";
+import { DiscordSSOApiPlugin } from "@/utils/sso/discord_api";
+
+const app = new OpenAPIHono().basePath("/api");
+VitNodeAPI({
+ app,
+ plugins: [],
+ authorization: {
+ // [!code ++]
+ ssoAdapters: [
+ // [!code ++]
+ DiscordSSOApiPlugin({
+ // [!code ++]
+ clientId: process.env.DISCORD_CLIENT_ID,
+ // [!code ++]
+ clientSecret: process.env.DISCORD_CLIENT_SECRET,
+ // [!code ++]
+ }),
+ // [!code ++]
+ ],
+ },
+});
+```
+
+
+
+
diff --git a/apps/docs/content/docs/dev/sso/index.mdx b/apps/docs/content/docs/dev/sso/index.mdx
index 4c2fa1875..5372ccb1e 100644
--- a/apps/docs/content/docs/dev/sso/index.mdx
+++ b/apps/docs/content/docs/dev/sso/index.mdx
@@ -22,347 +22,3 @@ Before you can use SSO, you need to provide an adapter to your application.
or create your own custom SSO adapter...
-
-## Custom SSO Adapter
-
-Want to let your users sign in with their favorite services? Let's build a custom SSO adapter! We'll use Discord as an example, but you can adapt this guide for any OAuth2 provider.
-
-import { Callout } from "fumadocs-ui/components/callout";
-
-
-
- ### Create Your SSO Plugin
-
-Let's start with the basics. Create a new file for your SSO provider:
-
-```ts title="src/utils/sso/discord_api.ts"
-import { SSOApiPlugin, getRedirectUri } from "@vitnode/core/api/models/sso";
-
-export const DiscordSSOApiPlugin = ({
- clientId,
- clientSecret,
-}: {
- clientId: string;
- clientSecret: string;
-}): SSOApiPlugin => {
- const id = "discord";
- const redirectUri = getRedirectUri(id);
-
- return { id, name: "Discord" };
-};
-```
-
-This is like creating a blueprint for your SSO provider. The `id` will be used in URLs and the `name` is what users will see.
-
-
-
-
-### Add Authentication URL Generator
-
-Now let's add the magic that sends users to Discord for login:
-
-```ts title="src/utils/sso/discord_api.ts"
-import { SSOApiPlugin, getRedirectUri } from "@vitnode/core/api/models/sso";
-
-export const DiscordSSOApiPlugin = ({
- clientId,
- clientSecret,
-}: {
- clientId: string;
- clientSecret: string;
-}): SSOApiPlugin => {
- const id = "discord";
- const redirectUri = getRedirectUri(id);
-
- return {
- id,
- name: "Discord",
- // [!code ++]
- getUrl: ({ state }) => {
- // [!code ++]
- const url = new URL("https://discord.com/oauth2/authorize");
- // [!code ++]
- url.searchParams.set("client_id", clientId);
- // [!code ++]
- url.searchParams.set("redirect_uri", redirectUri);
- // [!code ++]
- url.searchParams.set("response_type", "code");
- // [!code ++]
- url.searchParams.set("scope", "identify email");
- // [!code ++]
- url.searchParams.set("state", state);
- // [!code ++]
- return url.toString();
- // [!code ++]
- },
- };
-};
-```
-
-
- Always include the `state` parameter - it's your security guard against CSRF
- attacks. Don't worry, VitNode handles this automatically!
-
-
-
-
-
-
-### Handle Token Exchange
-
-After the user approves access, Discord sends us a code. Let's exchange it for an access token:
-
-```ts title="src/utils/sso/discord_api.ts"
-import { SSOApiPlugin, getRedirectUri } from "@vitnode/core/api/models/sso";
-import { HTTPException } from "hono/http-exception";
-import { ContentfulStatusCode } from "hono/utils/http-status";
-import { z } from "zod";
-
-const tokenSchema = z.object({
- access_token: z.string(),
- token_type: z.string(),
-});
-
-export const DiscordSSOApiPlugin = ({
- clientId,
- clientSecret,
-}: {
- clientId: string;
- clientSecret: string;
-}): SSOApiPlugin => {
- const id = "discord";
- const redirectUri = getRedirectUri(id);
-
- return {
- id,
- name: "Discord",
- // [!code ++]
- fetchToken: async code => {
- // [!code ++]
- const res = await fetch("https://discord.com/api/oauth2/token", {
- // [!code ++]
- method: "POST",
- // [!code ++]
- headers: {
- // [!code ++]
- "Content-Type": "application/x-www-form-urlencoded",
- // [!code ++]
- Accept: "application/json",
- // [!code ++]
- },
- // [!code ++]
- body: new URLSearchParams({
- // [!code ++]
- code,
- // [!code ++]
- redirect_uri: redirectUri,
- // [!code ++]
- grant_type: "authorization_code",
- // [!code ++]
- client_id: clientId,
- // [!code ++]
- client_secret: clientSecret,
- // [!code ++]
- }),
- // [!code ++]
- });
-
- // [!code ++]
- if (!res.ok) {
- // [!code ++]
- throw new HTTPException(
- // [!code ++]
- +res.status.toString() as ContentfulStatusCode,
- // [!code ++]
- {
- // [!code ++]
- message: "Internal error requesting token",
- // [!code ++]
- },
- // [!code ++]
- );
- // [!code ++]
- }
-
- // [!code ++]
- const { data, error } = tokenSchema.safeParse(await res.json());
- // [!code ++]
- if (error ?? !data) {
- // [!code ++]
- throw new HTTPException(400, {
- // [!code ++]
- message: "Invalid token response",
- // [!code ++]
- });
- // [!code ++]
- }
-
- // [!code ++]
- return data;
- // [!code ++]
- },
- getUrl: ({ state }) => {
- const url = new URL("https://discord.com/oauth2/authorize");
- url.searchParams.set("client_id", clientId);
- url.searchParams.set("redirect_uri", redirectUri);
- url.searchParams.set("response_type", "code");
- url.searchParams.set("scope", "identify email");
- url.searchParams.set("state", state);
-
- return url.toString();
- },
- };
-};
-```
-
-
-
-
-
-### Get User Information
-
-Finally, let's get the user's profile data using our shiny new access token:
-
-```ts title="src/utils/sso/discord_api.ts"
-import { SSOApiPlugin, getRedirectUri } from "@vitnode/core/api/models/sso";
-import { HTTPException } from "hono/http-exception";
-import { ContentfulStatusCode } from "hono/utils/http-status";
-import { z } from "zod";
-
-const userSchema = z.object({
- id: z.number(),
- email: z.string(),
- username: z.string(),
-});
-
-export const DiscordSSOApiPlugin = ({
- clientId,
- clientSecret,
-}: {
- clientId: string;
- clientSecret: string;
-}): SSOApiPlugin => {
- const id = "discord";
- const redirectUri = getRedirectUri(id);
-
- return {
- id,
- name: "Discord",
- // [!code ++]
- fetchUser: async ({ token_type, access_token }) => {
- // [!code ++]
- const res = await fetch("https://discord.com/api/users/@me", {
- // [!code ++]
- headers: {
- // [!code ++]
- Authorization: `${token_type} ${access_token}`,
- // [!code ++]
- },
- // [!code ++]
- });
-
- // [!code ++]
- const { data, error } = userSchema.safeParse(await res.json());
- // [!code ++]
- if (error ?? !data) {
- // [!code ++]
- throw new HTTPException(400, {
- // [!code ++]
- message: "Invalid user response",
- // [!code ++]
- });
- // [!code ++]
- }
-
- // [!code ++]
- return data;
- // [!code ++]
- },
- fetchToken: async code => {
- const res = await fetch("https://discord.com/api/oauth2/token", {
- method: "POST",
- headers: {
- "Content-Type": "application/x-www-form-urlencoded",
- Accept: "application/json",
- },
- body: new URLSearchParams({
- code,
- redirect_uri: redirectUri,
- grant_type: "authorization_code",
- client_id: clientId,
- client_secret: clientSecret,
- }),
- });
-
- if (!res.ok) {
- throw new HTTPException(
- +res.status.toString() as ContentfulStatusCode,
- {
- message: "Internal error requesting token",
- },
- );
- }
-
- const { data, error } = tokenSchema.safeParse(await res.json());
- if (error ?? !data) {
- throw new HTTPException(400, {
- message: "Invalid token response",
- });
- }
-
- return data;
- },
- getUrl: ({ state }) => {
- const url = new URL("https://discord.com/oauth2/authorize");
- url.searchParams.set("client_id", clientId);
- url.searchParams.set("redirect_uri", redirectUri);
- url.searchParams.set("response_type", "code");
- url.searchParams.set("scope", "identify email");
- url.searchParams.set("state", state);
-
- return url.toString();
- },
- };
-};
-```
-
-
- Pro tip: Some OAuth providers might return unverified email addresses. If your
- provider gives you an email verification status, add it to your validation to
- keep things secure!
-
-
-
-
-
-
-## Connect Everything Together
-
-Last step! Let's plug your new SSO provider into your app:
-
-```ts title="src/app/api/[...route]/route.ts"
-import { OpenAPIHono } from "@hono/zod-openapi";
-import { handle } from "hono/vercel";
-import { VitNodeAPI } from "@vitnode/core/api/config";
-import { DiscordSSOApiPlugin } from "@/utils/sso/discord_api";
-
-const app = new OpenAPIHono().basePath("/api");
-VitNodeAPI({
- app,
- plugins: [],
- authorization: {
- // [!code ++]
- ssoAdapters: [
- // [!code ++]
- DiscordSSOApiPlugin({
- // [!code ++]
- clientId: process.env.DISCORD_CLIENT_ID,
- // [!code ++]
- clientSecret: process.env.DISCORD_CLIENT_SECRET,
- // [!code ++]
- }),
- // [!code ++]
- ],
- },
-});
-```
diff --git a/apps/docs/content/docs/dev/sso/meta.json b/apps/docs/content/docs/dev/sso/meta.json
new file mode 100644
index 000000000..c4b976e82
--- /dev/null
+++ b/apps/docs/content/docs/dev/sso/meta.json
@@ -0,0 +1,4 @@
+{
+ "title": "Single Sign-On (SSO)",
+ "pages": ["...", "custom-adapter"]
+}
diff --git a/apps/docs/eslint.config.mjs b/apps/docs/eslint.config.mjs
index ca0cefa60..d190aca3c 100644
--- a/apps/docs/eslint.config.mjs
+++ b/apps/docs/eslint.config.mjs
@@ -1,4 +1,5 @@
import eslintVitNode from "@vitnode/config/eslint";
+import eslintVitNodeReact from "@vitnode/config/eslint.react";
import { fileURLToPath } from "node:url";
import { dirname } from "node:path";
@@ -6,6 +7,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
export default [
...eslintVitNode,
+ ...eslintVitNodeReact,
{
ignores: [".source"],
},
diff --git a/apps/docs/next.config.ts b/apps/docs/next.config.ts
index a7954fecc..d2a506bcc 100644
--- a/apps/docs/next.config.ts
+++ b/apps/docs/next.config.ts
@@ -9,6 +9,8 @@ const withBundleAnalyzer = nextAnalyzer({
enabled: process.env.ANALYZE === "true",
});
-const nextConfig: NextConfig = {};
+const nextConfig: NextConfig = {
+ reactCompiler: true,
+};
export default withBundleAnalyzer(withMDX(vitNodeNextConfig(nextConfig)));
diff --git a/apps/docs/package.json b/apps/docs/package.json
index 4beccb768..45875a602 100644
--- a/apps/docs/package.json
+++ b/apps/docs/package.json
@@ -1,6 +1,6 @@
{
"name": "docs",
- "version": "1.2.0-canary.60",
+ "version": "1.2.0-canary.68",
"type": "module",
"private": true,
"scripts": {
@@ -28,14 +28,14 @@
"@vitnode/core": "workspace:*",
"drizzle-kit": "^0.31.6",
"drizzle-orm": "^0.44.7",
- "fumadocs-core": "^16.0.8",
- "fumadocs-mdx": "^13.0.5",
- "fumadocs-ui": "^16.0.8",
- "hono": "^4.10.4",
+ "fumadocs-core": "^16.0.10",
+ "fumadocs-mdx": "^13.0.7",
+ "fumadocs-ui": "^16.0.10",
+ "hono": "^4.10.5",
"lucide-react": "^0.553.0",
"motion": "^12.23.24",
"next": "^16.0.1",
- "next-intl": "^4.5.0",
+ "next-intl": "^4.5.1",
"node-cron": "^4.2.1",
"react": "^19.2.0",
"react-dom": "^19.2.0",
@@ -50,9 +50,13 @@
"@tailwindcss/postcss": "^4.1.17",
"@types/mdx": "^2.0.13",
"@types/node": "^24.10.0",
- "@types/react": "^19.2.2",
+ "@types/react": "^19.2.3",
"@types/react-dom": "^19.2.2",
"@vitnode/config": "workspace:*",
+ "@vitnode/node-cron": "workspace:*",
+ "@vitnode/nodemailer": "workspace:*",
+ "@vitnode/resend": "workspace:*",
+ "babel-plugin-react-compiler": "^1.0.0",
"class-variance-authority": "^0.7.1",
"eslint": "^9.39.1",
"postcss": "^8.5.6",
@@ -61,7 +65,7 @@
"tailwindcss": "^4.1.17",
"tw-animate-css": "^1.4.0",
"typescript": "^5.9.3",
- "use-intl": "^4.5.0",
+ "use-intl": "^4.5.1",
"zod": "^4.1.12"
}
}
diff --git a/apps/docs/src/app/layout.tsx b/apps/docs/src/app/layout.tsx
index 0e88c6de1..ef3b6627d 100644
--- a/apps/docs/src/app/layout.tsx
+++ b/apps/docs/src/app/layout.tsx
@@ -1,7 +1,5 @@
import "./global.css";
-export const experimental_ppr = true;
-
export default async function RootLayout({
children,
}: {
diff --git a/apps/docs/src/vitnode.api.config.ts b/apps/docs/src/vitnode.api.config.ts
index 1b654bc54..49cb91b54 100644
--- a/apps/docs/src/vitnode.api.config.ts
+++ b/apps/docs/src/vitnode.api.config.ts
@@ -1,10 +1,11 @@
import { blogApiPlugin } from "@vitnode/blog/config.api";
-import { NodeCronAdapter } from "@vitnode/core/api/adapters/cron/node-cron.adapter";
-import { NodemailerEmailAdapter } from "@vitnode/core/api/adapters/email/nodemailer";
import { DiscordSSOApiPlugin } from "@vitnode/core/api/adapters/sso/discord";
+// import { ResendEmailAdapter } from "@vitnode/resend";
import { FacebookSSOApiPlugin } from "@vitnode/core/api/adapters/sso/facebook";
import { GoogleSSOApiPlugin } from "@vitnode/core/api/adapters/sso/google";
import { buildApiConfig } from "@vitnode/core/vitnode.config";
+import { NodeCronAdapter } from "@vitnode/node-cron";
+import { NodemailerEmailAdapter } from "@vitnode/nodemailer";
import { drizzle } from "drizzle-orm/postgres-js";
export const POSTGRES_URL =
@@ -38,6 +39,10 @@ export const vitNodeApiConfig = buildApiConfig({
password: process.env.NODE_MAILER_PASSWORD,
user: process.env.NOD_EMAILER_USER,
}),
+ // adapter: ResendEmailAdapter({
+ // apiKey: process.env.RESEND_API_KEY,
+ // from: process.env.RESEND_FROM_EMAIL,
+ // }),
logo: {
text: "VitNode Email Test",
src: "http://localhost:3000/logo_vitnode_dark.png",
diff --git a/package.json b/package.json
index 2735bbe21..00b6843ec 100644
--- a/package.json
+++ b/package.json
@@ -22,7 +22,7 @@
"prettier": "^3.6.2",
"prettier-plugin-tailwindcss": "^0.7.1",
"tsx": "^4.20.6",
- "turbo": "^2.6.0",
+ "turbo": "^2.6.1",
"typescript": "^5.9.3",
"zod": "^4.1.12"
},
diff --git a/packages/config/eslint.config.mjs b/packages/config/eslint.config.mjs
index b5db2b41d..119f92706 100644
--- a/packages/config/eslint.config.mjs
+++ b/packages/config/eslint.config.mjs
@@ -1,21 +1,11 @@
// @ts-check
-import { dirname } from "node:path";
-import { fileURLToPath } from "node:url";
import eslint from "@eslint/js";
-import eslintReact from "@eslint-react/eslint-plugin";
-import jsxA11y from "eslint-plugin-jsx-a11y";
import perfectionist from "eslint-plugin-perfectionist";
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";
-import reactPlugin from "eslint-plugin-react";
-import hooksPlugin from "eslint-plugin-react-hooks";
import tsEslint from "typescript-eslint";
-import reactYouMightNotNeedAnEffect from "eslint-plugin-react-you-might-not-need-an-effect";
-
-const __dirname = dirname(fileURLToPath(import.meta.url));
export default [
- reactYouMightNotNeedAnEffect.configs.recommended,
{
ignores: [
"next-env.d.ts",
@@ -36,43 +26,13 @@ export default [
],
},
eslint.configs.recommended,
- eslintReact.configs.recommended,
...tsEslint.configs.stylisticTypeChecked,
...tsEslint.configs.strictTypeChecked,
eslintPluginPrettierRecommended,
- jsxA11y.flatConfigs.recommended,
- reactPlugin.configs.flat.recommended,
perfectionist.configs["recommended-natural"],
- {
- files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"],
- settings: {
- react: {
- version: "detect",
- },
- },
- languageOptions: {
- parserOptions: {
- ecmaFeatures: {
- jsx: true,
- },
- },
- },
- },
- {
- plugins: {
- "react-hooks": hooksPlugin,
- },
- rules: {
- "react/react-in-jsx-scope": "off",
- ...hooksPlugin.configs.recommended.rules,
- },
- },
{ files: ["**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}"] },
{
rules: {
- "react-hooks/exhaustive-deps": "off",
- "@eslint-react/no-context-provider": "off",
- "@eslint-react/no-unstable-default-props": "off",
"perfectionist/sort-array-includes": "warn",
"@typescript-eslint/consistent-type-imports": "error",
"@typescript-eslint/no-confusing-void-expression": "off",
@@ -143,30 +103,10 @@ export default [
"newline-before-return": "warn",
"no-restricted-imports": [
"error",
- {
- name: "next/link",
- message: "Please import from `vitnode-frontend/navigation` instead.",
- },
{
name: "drizzle-orm/mysql-core",
message: "Please import from `drizzle-orm/pg-core` instead.",
},
- {
- name: "next/navigation",
- importNames: [
- "redirect",
- "permanentRedirect",
- "useRouter",
- "usePathname",
- ],
- message: "Please import from `vitnode-frontend/navigation` instead.",
- },
- {
- name: "next/router",
- importNames: ["useRouter"],
- message:
- "This import is from Page router. Please import from `vitnode-frontend/navigation` instead.",
- },
],
},
},
diff --git a/packages/config/eslint.react.config.mjs b/packages/config/eslint.react.config.mjs
new file mode 100644
index 000000000..330937bad
--- /dev/null
+++ b/packages/config/eslint.react.config.mjs
@@ -0,0 +1,67 @@
+// @ts-check
+
+import eslintReact from "@eslint-react/eslint-plugin";
+import reactPlugin from "eslint-plugin-react";
+import hooksPlugin from "eslint-plugin-react-hooks";
+import reactYouMightNotNeedAnEffect from "eslint-plugin-react-you-might-not-need-an-effect";
+
+export default [
+ reactYouMightNotNeedAnEffect.configs.recommended,
+ eslintReact.configs.recommended,
+ reactPlugin.configs.flat.recommended,
+ {
+ files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"],
+ settings: {
+ react: {
+ version: "detect",
+ },
+ },
+ languageOptions: {
+ parserOptions: {
+ ecmaFeatures: {
+ jsx: true,
+ },
+ },
+ },
+ },
+ {
+ plugins: {
+ "react-hooks": hooksPlugin,
+ },
+ rules: {
+ "react/react-in-jsx-scope": "off",
+ ...hooksPlugin.configs.recommended.rules,
+ },
+ },
+ { files: ["**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}"] },
+ {
+ rules: {
+ "react-hooks/exhaustive-deps": "off",
+ "@eslint-react/no-context-provider": "off",
+ "@eslint-react/no-unstable-default-props": "off",
+ "no-restricted-imports": [
+ "error",
+ {
+ name: "next/link",
+ message: "Please import from `vitnode-frontend/navigation` instead.",
+ },
+ {
+ name: "next/navigation",
+ importNames: [
+ "redirect",
+ "permanentRedirect",
+ "useRouter",
+ "usePathname",
+ ],
+ message: "Please import from `vitnode-frontend/navigation` instead.",
+ },
+ {
+ name: "next/router",
+ importNames: ["useRouter"],
+ message:
+ "This import is from Page router. Please import from `vitnode-frontend/navigation` instead.",
+ },
+ ],
+ },
+ },
+];
diff --git a/packages/config/package.json b/packages/config/package.json
index 144bbc12e..fcb0c9b79 100644
--- a/packages/config/package.json
+++ b/packages/config/package.json
@@ -1,6 +1,6 @@
{
"name": "@vitnode/config",
- "version": "1.2.0-canary.60",
+ "version": "1.2.0-canary.68",
"description": "ESLint, Prettier, TypeScript (TSConfig) config for VitNode",
"author": "VitNode Team",
"license": "MIT",
@@ -23,6 +23,10 @@
"import": "./eslint.config.mjs",
"default": "./eslint.config.mjs"
},
+ "./eslint.react": {
+ "import": "./eslint.react.config.mjs",
+ "default": "./eslint.react.config.mjs"
+ },
"./tsconfig": {
"import": "./tsconfig.json",
"default": "./tsconfig.json"
@@ -41,7 +45,7 @@
"typescript": "^5.9.3"
},
"dependencies": {
- "@eslint-react/eslint-plugin": "^2.3.1",
+ "@eslint-react/eslint-plugin": "^2.3.4",
"@eslint/js": "^9.39.1",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-jsx-a11y": "^6.10.2",
@@ -51,6 +55,6 @@
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-you-might-not-need-an-effect": "^0.7.0",
"prettier-plugin-tailwindcss": "^0.7.1",
- "typescript-eslint": "^8.46.3"
+ "typescript-eslint": "^8.46.4"
}
}
diff --git a/packages/create-vitnode-app/copy-of-vitnode-app/eslint-react/eslint.config.mjs b/packages/create-vitnode-app/copy-of-vitnode-app/eslint-react/eslint.config.mjs
new file mode 100644
index 000000000..b1ce26beb
--- /dev/null
+++ b/packages/create-vitnode-app/copy-of-vitnode-app/eslint-react/eslint.config.mjs
@@ -0,0 +1,19 @@
+import eslintVitNode from "@vitnode/config/eslint";
+import eslintVitNodeReact from "@vitnode/config/eslint.react";
+import { fileURLToPath } from "node:url";
+import { dirname } from "node:path";
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
+
+export default [
+ ...eslintVitNode,
+ ...eslintVitNodeReact,
+ {
+ languageOptions: {
+ parserOptions: {
+ project: "./tsconfig.json",
+ tsconfigRootDir: __dirname,
+ },
+ },
+ },
+];
diff --git a/packages/create-vitnode-app/copy-of-vitnode-app/eslint/eslint.config.mjs b/packages/create-vitnode-app/copy-of-vitnode-app/eslint/eslint.config.mjs
index 8c0f6171d..b1ce26beb 100644
--- a/packages/create-vitnode-app/copy-of-vitnode-app/eslint/eslint.config.mjs
+++ b/packages/create-vitnode-app/copy-of-vitnode-app/eslint/eslint.config.mjs
@@ -1,4 +1,5 @@
import eslintVitNode from "@vitnode/config/eslint";
+import eslintVitNodeReact from "@vitnode/config/eslint.react";
import { fileURLToPath } from "node:url";
import { dirname } from "node:path";
@@ -6,6 +7,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
export default [
...eslintVitNode,
+ ...eslintVitNodeReact,
{
languageOptions: {
parserOptions: {
diff --git a/packages/create-vitnode-app/copy-of-vitnode-app/root/next.config.ts b/packages/create-vitnode-app/copy-of-vitnode-app/root/next.config.ts
index 41f04fdd0..d8063ae7f 100644
--- a/packages/create-vitnode-app/copy-of-vitnode-app/root/next.config.ts
+++ b/packages/create-vitnode-app/copy-of-vitnode-app/root/next.config.ts
@@ -2,10 +2,7 @@ import { vitNodeNextConfig } from "@vitnode/core/config/next.config";
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
- experimental: {
- inlineCss: true,
- ppr: "incremental",
- },
+ reactCompiler: true,
};
export default vitNodeNextConfig(nextConfig);
diff --git a/packages/create-vitnode-app/copy-of-vitnode-plugin/root/.swcrc b/packages/create-vitnode-app/copy-of-vitnode-plugin/root/.swcrc
new file mode 100644
index 000000000..eba97079c
--- /dev/null
+++ b/packages/create-vitnode-app/copy-of-vitnode-plugin/root/.swcrc
@@ -0,0 +1,25 @@
+{
+ "$schema": "https://swc.rs/schema.json",
+ "minify": true,
+ "jsc": {
+ "baseUrl": "./",
+ "target": "esnext",
+ "paths": {
+ "@/*": ["./src/*"]
+ },
+ "parser": {
+ "syntax": "typescript",
+ "tsx": true
+ },
+ "transform": {
+ "react": {
+ "runtime": "automatic"
+ }
+ }
+ },
+ "module": {
+ "type": "nodenext",
+ "strict": true,
+ "resolveFully": true
+ }
+}
diff --git a/packages/create-vitnode-app/copy-of-vitnode-plugin/root/global.d.ts b/packages/create-vitnode-app/copy-of-vitnode-plugin/root/global.d.ts
new file mode 100644
index 000000000..a57ec4757
--- /dev/null
+++ b/packages/create-vitnode-app/copy-of-vitnode-plugin/root/global.d.ts
@@ -0,0 +1,10 @@
+///
+
+import core from "@vitnode/core/locales/en.json" with { type: "json" };
+import plugin from "./src/locales/en.json" with { type: "json" };
+
+declare module "next-intl" {
+ interface AppConfig {
+ Messages: typeof plugin & typeof core;
+ }
+}
diff --git a/packages/create-vitnode-app/copy-of-vitnode-plugin/root/npmignore.template b/packages/create-vitnode-app/copy-of-vitnode-plugin/root/npmignore.template
new file mode 100644
index 000000000..af72c3549
--- /dev/null
+++ b/packages/create-vitnode-app/copy-of-vitnode-plugin/root/npmignore.template
@@ -0,0 +1,19 @@
+/src/*
+!/src/app
+!/src/app/**
+!/src/app_admin
+!/src/app_admin/**
+!/src/locales
+!/src/locales/**
+
+/node_modules
+/.turbo
+/tsconfig.json
+/.swcrc
+/components.json
+/global.d.ts
+/tsup.config.ts
+/vitest.config.ts
+/tsconfig.json
+/scripts
+/config
diff --git a/packages/create-vitnode-app/copy-of-vitnode-plugin/root/tsconfig.json b/packages/create-vitnode-app/copy-of-vitnode-plugin/root/tsconfig.json
new file mode 100644
index 000000000..7ee719d7a
--- /dev/null
+++ b/packages/create-vitnode-app/copy-of-vitnode-plugin/root/tsconfig.json
@@ -0,0 +1,25 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "extends": "@vitnode/config/tsconfig",
+ "compilerOptions": {
+ "target": "ESNext",
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "rootDir": "./",
+ "outDir": "./dist",
+ "jsx": "react-jsx",
+ "emitDeclarationOnly": true,
+ "declaration": true,
+ "declarationMap": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+ "exclude": ["node_modules"],
+ "include": ["src", "global.d.ts"]
+}
diff --git a/packages/create-vitnode-app/eslint.config.mjs b/packages/create-vitnode-app/eslint.config.mjs
index 609e6ba68..eafa42383 100644
--- a/packages/create-vitnode-app/eslint.config.mjs
+++ b/packages/create-vitnode-app/eslint.config.mjs
@@ -12,7 +12,7 @@ export default [
},
},
{
- ignores: ["copy-of-vitnode-app"],
+ ignores: ["copy-of-vitnode-app", "copy-of-vitnode-plugin"],
},
{
languageOptions: {
diff --git a/packages/create-vitnode-app/package.json b/packages/create-vitnode-app/package.json
index 2892579ae..dfa90766e 100644
--- a/packages/create-vitnode-app/package.json
+++ b/packages/create-vitnode-app/package.json
@@ -1,6 +1,6 @@
{
"name": "create-vitnode-app",
- "version": "1.2.0-canary.60",
+ "version": "1.2.0-canary.68",
"description": "Create a new VitNode app in seconds.",
"author": "VitNode Team",
"license": "MIT",
@@ -14,6 +14,14 @@
"bin": {
"create-vitnode-app": "dist/src/index.js"
},
+ "files": [
+ "dist",
+ "copy-of-vitnode-app",
+ "copy-of-vitnode-plugin",
+ "README.md",
+ "eslint",
+ "eslint-react"
+ ],
"scripts": {
"build:scripts": "tsc && node dist/src/prepare/prepare.js",
"start:scripts": "node dist/src/index.js",
diff --git a/packages/create-vitnode-app/src/create/create-package-json.ts b/packages/create-vitnode-app/src/create/create-package-json.ts
index 32d3097f3..ded8bdf35 100644
--- a/packages/create-vitnode-app/src/create/create-package-json.ts
+++ b/packages/create-vitnode-app/src/create/create-package-json.ts
@@ -1,14 +1,13 @@
-import { readFile, writeFile } from "fs/promises";
-import { dirname, join } from "path";
-import { fileURLToPath } from "url";
+import { writeFile } from "fs/promises";
+import { join } from "path";
import type { PackageJSON } from "../helpers/packages-json.js";
import type { CreateCliReturn } from "../questions.js";
import { getAvailablePackageManagers } from "../helpers/get-available-package-managers.js";
-
-const __filename = fileURLToPath(import.meta.url);
-const __dirname = dirname(__filename);
+import { getVitnodePackageVersion } from "../helpers/get-vitnode-package-version.js";
+import { withIf } from "../helpers/with-If.js";
+import { versionsPackageJson } from "./package-versions.js";
type Mode = CreateCliReturn["mode"];
@@ -21,52 +20,6 @@ const paths = (root: string) => ({
web: join(root, "apps", "web"),
});
-const withIf = >(cond: boolean, obj: T) =>
- (cond ? obj : {}) as Partial;
-
-const versions = {
- typesNode: "^24",
- typesReact: "^19.2",
- typesReactDom: "^19.2",
- typesBun: "latest",
-
- turbo: "^2.5",
- typescript: "^5.9",
- tsx: "^4.20.6",
- tscAlias: "^1.8.16",
- eslint: "^9.39.1",
- prettier: "^3.6.2",
- prettierTailwind: "^0.6.14",
- tailwind: "^4.1.17",
- tailwindPostcss: "^4.1.17",
- postcss: "^8.5.6",
- twAnimateCss: "^1.4.0",
-
- react: "^19.2",
- reactDom: "^19.2",
- nextSingle: "^16.0.1",
- nextWebInMonorepo: "^15.4.6",
- nextIntl: "^4.5.0",
- useIntl: "^4.5.0",
- rhf: "^7.66.0",
- rhfResolvers: "^5.1.1",
- lucide: "^0.553.0",
- sonner: "^2.0.7",
- dotenv: "^17.2.2",
-
- drizzleKit: "^0.31.6",
- drizzleOrm: "^0.44.7",
-
- hono: "^4.10.4",
- honoZodOpenapi: "^1.1.4",
- honoZodValidator: "^0.7.4",
- reactEmail: "^5.0.1",
- reactEmailComponents: "^1.0.0",
- zod: "^4.1.12",
-
- cva: "^0.7.1",
-};
-
/**
* Shared blocks
*/
@@ -148,120 +101,122 @@ const webScripts = (eslint: boolean) => ({
* Dependency builders
*/
const baseDevDeps = (eslint: boolean, includePrettier: boolean) => ({
- "@types/node": versions.typesNode,
+ "@types/node": versionsPackageJson.typesNode,
"@vitnode/config": "", // filled with local version dynamically
...withIf(eslint, {
- eslint: versions.eslint,
+ eslint: versionsPackageJson.eslint,
...withIf(includePrettier, {
- prettier: versions.prettier,
- "prettier-plugin-tailwindcss": versions.prettierTailwind,
+ prettier: versionsPackageJson.prettier,
+ "prettier-plugin-tailwindcss": versionsPackageJson.prettierTailwind,
}),
}),
});
const rootDevDeps = (eslint: boolean) => ({
...baseDevDeps(eslint, true),
- turbo: versions.turbo,
- typescript: versions.typescript,
- zod: versions.zod,
+ turbo: versionsPackageJson.turbo,
+ typescript: versionsPackageJson.typescript,
+ zod: versionsPackageJson.zod,
});
const apiDeps = {
- "@hono/zod-openapi": versions.honoZodOpenapi,
- "@hono/zod-validator": versions.honoZodValidator,
- "@react-email/components": versions.reactEmailComponents,
+ "@hono/zod-openapi": versionsPackageJson.honoZodOpenapi,
+ "@hono/zod-validator": versionsPackageJson.honoZodValidator,
+ "@react-email/components": versionsPackageJson.reactEmailComponents,
"@vitnode/core": "", // filled dynamically
- "drizzle-kit": versions.drizzleKit,
- "drizzle-orm": versions.drizzleOrm,
- hono: versions.hono,
- "next-intl": versions.nextIntl,
- react: versions.react,
- "react-dom": versions.reactDom,
- "use-intl": versions.useIntl,
- zod: versions.zod,
+ "drizzle-kit": versionsPackageJson.drizzleKit,
+ "drizzle-orm": versionsPackageJson.drizzleOrm,
+ hono: versionsPackageJson.hono,
+ "next-intl": versionsPackageJson.nextIntl,
+ react: versionsPackageJson.react,
+ "react-dom": versionsPackageJson.reactDom,
+ "use-intl": versionsPackageJson.useIntl,
+ zod: versionsPackageJson.zod,
};
const apiDevDeps = (pm: string, eslint: boolean) => ({
"@hono/node-server": "^1.19",
- ...(pm === "bun" ? { "@types/bun": versions.typesBun } : {}),
- "@types/node": versions.typesNode,
- "@types/react": versions.typesReact,
- "@types/react-dom": versions.typesReactDom,
+ ...(pm === "bun" ? { "@types/bun": versionsPackageJson.typesBun } : {}),
+ "@types/node": versionsPackageJson.typesNode,
+ "@types/react": versionsPackageJson.typesReact,
+ "@types/react-dom": versionsPackageJson.typesReactDom,
"@vitnode/config": "",
- dotenv: versions.dotenv,
+ dotenv: versionsPackageJson.dotenv,
...withIf(eslint, {
- eslint: versions.eslint,
+ eslint: versionsPackageJson.eslint,
// Prettier in API only when onlyApi + eslint in original code – we'll preserve by passing include later if needed
}),
- "react-email": versions.reactEmail,
- "tsc-alias": versions.tscAlias,
- tsx: versions.tsx,
- typescript: versions.typescript,
+ "react-email": versionsPackageJson.reactEmail,
+ "tsc-alias": versionsPackageJson.tscAlias,
+ tsx: versionsPackageJson.tsx,
+ typescript: versionsPackageJson.typescript,
});
const singleAppDeps = {
- "@hono/zod-openapi": versions.honoZodOpenapi,
- "@hono/zod-validator": versions.honoZodValidator,
- "@hookform/resolvers": versions.rhfResolvers,
- "@react-email/components": versions.reactEmailComponents,
+ "@hono/zod-openapi": versionsPackageJson.honoZodOpenapi,
+ "@hono/zod-validator": versionsPackageJson.honoZodValidator,
+ "@hookform/resolvers": versionsPackageJson.rhfResolvers,
+ "@react-email/components": versionsPackageJson.reactEmailComponents,
"@vitnode/core": "",
- "drizzle-kit": versions.drizzleKit,
- "drizzle-orm": versions.drizzleOrm,
- hono: versions.hono,
- "lucide-react": versions.lucide,
- next: versions.nextSingle,
- "next-intl": versions.nextIntl,
- react: versions.react,
- "react-dom": versions.reactDom,
- "react-hook-form": versions.rhf,
- sonner: versions.sonner,
- "use-intl": versions.useIntl,
- zod: versions.zod,
+ "drizzle-kit": versionsPackageJson.drizzleKit,
+ "drizzle-orm": versionsPackageJson.drizzleOrm,
+ hono: versionsPackageJson.hono,
+ "lucide-react": versionsPackageJson.lucide,
+ next: versionsPackageJson.nextSingle,
+ "next-intl": versionsPackageJson.nextIntl,
+ react: versionsPackageJson.react,
+ "react-dom": versionsPackageJson.reactDom,
+ "react-hook-form": versionsPackageJson.rhf,
+ sonner: versionsPackageJson.sonner,
+ "use-intl": versionsPackageJson.useIntl,
+ zod: versionsPackageJson.zod,
};
const singleAppDevDeps = (eslint: boolean) => ({
- "@tailwindcss/postcss": versions.tailwindPostcss,
- "@types/node": versions.typesNode,
- "@types/react": versions.typesReact,
- "@types/react-dom": versions.typesReactDom,
+ "@tailwindcss/postcss": versionsPackageJson.tailwindPostcss,
+ "@types/node": versionsPackageJson.typesNode,
+ "@types/react": versionsPackageJson.typesReact,
+ "@types/react-dom": versionsPackageJson.typesReactDom,
"@vitnode/config": "",
+ "babel-plugin-react-compiler": versionsPackageJson.babelPluginReactCompiler,
...withIf(eslint, {
- eslint: versions.eslint,
- prettier: versions.prettier,
- "prettier-plugin-tailwindcss": versions.prettierTailwind,
+ eslint: versionsPackageJson.eslint,
+ prettier: versionsPackageJson.prettier,
+ "prettier-plugin-tailwindcss": versionsPackageJson.prettierTailwind,
}),
- "react-email": versions.reactEmail,
- turbo: versions.turbo,
- tailwindcss: versions.tailwind,
- "tw-animate-css": versions.twAnimateCss,
- typescript: versions.typescript,
+ "react-email": versionsPackageJson.reactEmail,
+ turbo: versionsPackageJson.turbo,
+ tailwindcss: versionsPackageJson.tailwind,
+ "tw-animate-css": versionsPackageJson.twAnimateCss,
+ typescript: versionsPackageJson.typescript,
});
const webDeps = {
"@vitnode/core": "",
- "lucide-react": versions.lucide,
- next: versions.nextWebInMonorepo,
- "next-intl": versions.nextIntl,
- react: versions.react,
- "react-dom": versions.reactDom,
- "react-hook-form": versions.rhf,
- sonner: versions.sonner,
+ "lucide-react": versionsPackageJson.lucide,
+ next: versionsPackageJson.nextWebInMonorepo,
+ "next-intl": versionsPackageJson.nextIntl,
+ react: versionsPackageJson.react,
+ "react-dom": versionsPackageJson.reactDom,
+ "react-hook-form": versionsPackageJson.rhf,
+ sonner: versionsPackageJson.sonner,
};
const webDevDeps = (eslint: boolean) => ({
- "@hookform/resolvers": versions.rhfResolvers,
- "@tailwindcss/postcss": versions.tailwindPostcss,
- "@types/node": versions.typesNode,
- "@types/react": versions.typesReact,
- "@types/react-dom": versions.typesReactDom,
+ "@hookform/resolvers": versionsPackageJson.rhfResolvers,
+ "@tailwindcss/postcss": versionsPackageJson.tailwindPostcss,
+ "@types/node": versionsPackageJson.typesNode,
+ "@types/react": versionsPackageJson.typesReact,
+ "@types/react-dom": versionsPackageJson.typesReactDom,
"@vitnode/config": "",
- "class-variance-authority": versions.cva,
- ...withIf(eslint, { eslint: versions.eslint }),
- postcss: versions.postcss,
- tailwindcss: versions.tailwind,
- "tw-animate-css": versions.twAnimateCss,
- typescript: versions.typescript,
- zod: versions.zod,
+ "babel-plugin-react-compiler": versionsPackageJson.babelPluginReactCompiler,
+ "class-variance-authority": versionsPackageJson.cva,
+ ...withIf(eslint, { eslint: versionsPackageJson.eslint }),
+ postcss: versionsPackageJson.postcss,
+ tailwindcss: versionsPackageJson.tailwind,
+ "tw-animate-css": versionsPackageJson.twAnimateCss,
+ typescript: versionsPackageJson.typescript,
+ zod: versionsPackageJson.zod,
});
/**
@@ -284,12 +239,7 @@ export const createPackageJSON = async ({
packageManager: string;
root: string;
}) => {
- // Resolve local version of @vitnode/* based on this CLI's package.json
- const cliPkg: PackageJSON = JSON.parse(
- await readFile(join(__dirname, "..", "..", "..", "package.json"), "utf-8"),
- );
- const vitnodeVersionRange = `^${cliPkg.version}`;
-
+ const vitnodeVersionRange = await getVitnodePackageVersion();
const pmVersions = await getAvailablePackageManagers();
const pmSpec = `${packageManager}@${pmVersions[packageManager]}`;
const p = paths(root);
@@ -337,8 +287,8 @@ export const createPackageJSON = async ({
"@vitnode/config": vitnodeVersionRange,
...(eslint && mode === "onlyApi"
? {
- prettier: versions.prettier,
- "prettier-plugin-tailwindcss": versions.prettierTailwind,
+ prettier: versionsPackageJson.prettier,
+ "prettier-plugin-tailwindcss": versionsPackageJson.prettierTailwind,
}
: {}),
// TS pipeline pieces when not using Bun for dev
diff --git a/packages/create-vitnode-app/src/create/package-versions.ts b/packages/create-vitnode-app/src/create/package-versions.ts
new file mode 100644
index 000000000..1b6d96738
--- /dev/null
+++ b/packages/create-vitnode-app/src/create/package-versions.ts
@@ -0,0 +1,47 @@
+export const versionsPackageJson = {
+ typesNode: "^24",
+ typesReact: "^19.2",
+ typesReactDom: "^19.2",
+ typesBun: "latest",
+
+ turbo: "^2.6",
+ typescript: "^5.9",
+ tsx: "^4.20.6",
+ tscAlias: "^1.8.16",
+ eslint: "^9.39.1",
+ prettier: "^3.6.2",
+ prettierTailwind: "^0.6.14",
+ tailwind: "^4.1.17",
+ tailwindPostcss: "^4.1.17",
+ postcss: "^8.5.6",
+ twAnimateCss: "^1.4.0",
+
+ react: "^19.2",
+ reactDom: "^19.2",
+ nextSingle: "^16.0.1",
+ nextWebInMonorepo: "^15.4.6",
+ nextIntl: "^4.5",
+ useIntl: "^4.5",
+ rhf: "^7.66.0",
+ rhfResolvers: "^5.1.1",
+ lucide: "^0.553.0",
+ sonner: "^2.0.7",
+ dotenv: "^17.2.2",
+
+ drizzleKit: "^0.31.6",
+ drizzleOrm: "^0.44.7",
+
+ hono: "^4.10",
+ honoZodOpenapi: "^1.1.4",
+ honoZodValidator: "^0.7.4",
+ reactEmail: "^5.0.1",
+ reactEmailComponents: "^1.0.0",
+ zod: "^4.1.12",
+
+ cva: "^0.7.1",
+ babelPluginReactCompiler: "^1.0.0",
+
+ swcCli: "^0.7.9",
+ swcCore: "^1.15.1",
+ concurrently: "^9.2.1",
+};
diff --git a/packages/create-vitnode-app/src/helpers/get-vitnode-package-version.ts b/packages/create-vitnode-app/src/helpers/get-vitnode-package-version.ts
new file mode 100644
index 000000000..209d756a9
--- /dev/null
+++ b/packages/create-vitnode-app/src/helpers/get-vitnode-package-version.ts
@@ -0,0 +1,17 @@
+import { readFile } from "fs/promises";
+import { dirname, join } from "path";
+import { fileURLToPath } from "url";
+
+import type { PackageJSON } from "./packages-json.js";
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = dirname(__filename);
+
+export const getVitnodePackageVersion = async () => {
+ // Resolve local version of @vitnode/* based on this CLI's package.json
+ const cliPkg: PackageJSON = JSON.parse(
+ await readFile(join(__dirname, "..", "..", "..", "package.json"), "utf-8"),
+ );
+
+ return `^${cliPkg.version}`;
+};
diff --git a/packages/create-vitnode-app/src/helpers/with-If.ts b/packages/create-vitnode-app/src/helpers/with-If.ts
new file mode 100644
index 000000000..5d6c0af57
--- /dev/null
+++ b/packages/create-vitnode-app/src/helpers/with-If.ts
@@ -0,0 +1,4 @@
+export const withIf = >(
+ cond: boolean,
+ obj: T,
+) => (cond ? obj : {}) as Partial;
diff --git a/packages/create-vitnode-app/src/plugin/create/add-plugin-to-workspace.ts b/packages/create-vitnode-app/src/plugin/create/add-plugin-to-workspace.ts
new file mode 100644
index 000000000..079989df1
--- /dev/null
+++ b/packages/create-vitnode-app/src/plugin/create/add-plugin-to-workspace.ts
@@ -0,0 +1,144 @@
+import { readdir, readFile, writeFile } from "fs/promises";
+import { dirname, join } from "path";
+
+import type { PackageJSON } from "../../helpers/packages-json.js";
+
+const writeJson = async (path: string, data: unknown) =>
+ writeFile(path, JSON.stringify(data, null, 2) + "\n");
+
+interface AddPluginToWorkspaceArgs {
+ packageManager: string;
+ pluginName: string;
+ pluginPath: string;
+ rootPath: string;
+}
+
+/**
+ * Recursively find all package.json files in a directory
+ * @param dir - The directory to search in
+ * @param results - Array to accumulate results (used internally)
+ * @returns Array of absolute paths to package.json files
+ */
+const findPackageJsonFiles = async (
+ dir: string,
+ results: string[] = [],
+): Promise => {
+ try {
+ const entries = await readdir(dir, { withFileTypes: true });
+
+ for (const entry of entries) {
+ const fullPath = join(dir, entry.name);
+
+ // Skip node_modules and dist folders
+ if (entry.name === "node_modules" || entry.name === "dist") {
+ continue;
+ }
+
+ if (entry.isDirectory()) {
+ await findPackageJsonFiles(fullPath, results);
+ } else if (entry.name === "package.json") {
+ results.push(fullPath);
+ }
+ }
+ } catch {
+ // Ignore permission errors or inaccessible directories
+ }
+
+ return results;
+};
+
+/**
+ * Adds the newly created plugin to all workspace packages that depend on @vitnode/core.
+ * This function:
+ * 1. Finds all package.json files in the workspace (excluding node_modules and dist)
+ * 2. Identifies packages that have @vitnode/core as a dependency
+ * 3. Adds the new plugin as a dependency with the appropriate workspace reference
+ * 4. Skips other packages in the same parent directory as the plugin (e.g., other plugins)
+ * 5. Works with any folder structure (apps/, applications/, sandbox/, etc.)
+ * 6. Respects the package manager's workspace protocol
+ *
+ * @param packageManager - The package manager being used (pnpm, npm, yarn, bun)
+ * @param pluginName - The name of the plugin to add (e.g., "@my-org/my-plugin")
+ * @param pluginPath - The absolute path to the plugin directory
+ * @param rootPath - The absolute path to the monorepo root (where turbo.json is located)
+ */
+
+export const addPluginToWorkspace = async ({
+ packageManager,
+ pluginName,
+ pluginPath,
+ rootPath,
+}: AddPluginToWorkspaceArgs) => {
+ // Find all package.json files in the workspace
+ const packageJsonFiles = await findPackageJsonFiles(rootPath);
+
+ // Get the parent directory of the plugin (e.g., "plugins", "packages", etc.)
+ const pluginParentDir = dirname(pluginPath);
+
+ for (const packageJsonPath of packageJsonFiles) {
+ // Skip if this is the plugin's own package.json
+ if (packageJsonPath === join(pluginPath, "package.json")) {
+ continue;
+ }
+
+ // Skip other packages in the same parent directory as the plugin
+ // (e.g., if plugin is in "plugins/my-plugin", skip "plugins/other-plugin")
+ const packageDir = dirname(dirname(packageJsonPath)); // Get parent of package folder
+ if (packageDir === pluginParentDir) {
+ continue;
+ }
+
+ try {
+ const content = await readFile(packageJsonPath, "utf-8");
+ const pkg: PackageJSON = JSON.parse(content);
+
+ // Check if this package has @vitnode/core
+ const hasVitnodeCore =
+ pkg.dependencies?.["@vitnode/core"] ??
+ pkg.devDependencies?.["@vitnode/core"];
+
+ if (!hasVitnodeCore) {
+ continue;
+ }
+
+ // Determine the workspace reference based on package manager
+ let workspaceReference: string;
+
+ switch (packageManager) {
+ case "bun":
+ workspaceReference = "workspace:*";
+ break;
+ case "npm":
+ workspaceReference = "*";
+ break;
+ case "pnpm":
+ workspaceReference = "workspace:*";
+ break;
+ case "yarn":
+ workspaceReference = "workspace:*";
+ break;
+ default:
+ workspaceReference = "workspace:*";
+ }
+
+ // Add the plugin to dependencies
+ pkg.dependencies ??= {};
+
+ pkg.dependencies[pluginName] = workspaceReference;
+
+ // Sort dependencies alphabetically
+ pkg.dependencies = Object.keys(pkg.dependencies)
+ .sort()
+ .reduce>((acc, key) => {
+ acc[key] = pkg.dependencies?.[key] ?? "";
+
+ return acc;
+ }, {});
+
+ await writeJson(packageJsonPath, pkg);
+ } catch {
+ // Skip files that can't be read or parsed
+ continue;
+ }
+ }
+};
diff --git a/packages/create-vitnode-app/src/plugin/create/create-package-json.ts b/packages/create-vitnode-app/src/plugin/create/create-package-json.ts
new file mode 100644
index 000000000..ace3ac1b2
--- /dev/null
+++ b/packages/create-vitnode-app/src/plugin/create/create-package-json.ts
@@ -0,0 +1,79 @@
+import { writeFile } from "fs/promises";
+
+import type { PackageJSON } from "../../helpers/packages-json.js";
+
+import { versionsPackageJson } from "../../create/package-versions.js";
+import { getVitnodePackageVersion } from "../../helpers/get-vitnode-package-version.js";
+import { withIf } from "../../helpers/with-If.js";
+
+const writeJson = async (path: string, data: unknown) =>
+ writeFile(path, JSON.stringify(data, null, 2));
+
+export const createPluginPackageJSON = async ({
+ pluginName,
+ pluginPath,
+ eslint,
+}: {
+ eslint: boolean;
+ pluginName: string;
+ pluginPath: string;
+}) => {
+ const vitnodeVersionRange = await getVitnodePackageVersion();
+
+ const pluginPkg: PackageJSON = {
+ name: pluginName,
+ version: "0.1.0",
+ private: true,
+ type: "module",
+ scripts: {
+ "build:plugins":
+ "tsc && swc src -d dist --config-file .swcrc && tsc-alias -p tsconfig.json",
+ dev: 'concurrently "tsc -w --preserveWatchOutput" "swc src -d dist --config-file .swcrc -w" "tsc-alias -w" "vitnode plugin --w"',
+ "dev:email": "email dev --dir src/emails",
+ ...withIf(eslint, {
+ lint: "turbo lint",
+ "lint:fix": "turbo lint:fix",
+ }),
+ },
+ exports: {
+ "./*": {
+ import: "./dist/src/*.js",
+ types: "./dist/src/*.d.ts",
+ default: "./dist/src/*.js",
+ },
+ },
+ dependencies: {
+ "@hono/zod-openapi": versionsPackageJson.honoZodOpenapi,
+ "@vitnode/core": vitnodeVersionRange,
+ "drizzle-kit": versionsPackageJson.drizzleKit,
+ "drizzle-orm": versionsPackageJson.drizzleOrm,
+ hono: versionsPackageJson.hono,
+ "lucide-react": versionsPackageJson.lucide,
+ next: versionsPackageJson.nextSingle,
+ "next-intl": versionsPackageJson.nextIntl,
+ react: versionsPackageJson.react,
+ "react-dom": versionsPackageJson.reactDom,
+ "react-email": versionsPackageJson.reactEmail,
+ "react-hook-form": versionsPackageJson.rhf,
+ sonner: versionsPackageJson.sonner,
+ "use-intl": versionsPackageJson.useIntl,
+ zod: versionsPackageJson.zod,
+ },
+ devDependencies: {
+ "@react-email/components": versionsPackageJson.reactEmailComponents,
+ "@swc/cli": versionsPackageJson.swcCli,
+ "@swc/core": versionsPackageJson.swcCore,
+ "@types/react": versionsPackageJson.typesReact,
+ "@types/react-dom": versionsPackageJson.typesReactDom,
+ "@vitnode/config": vitnodeVersionRange,
+ concurrently: versionsPackageJson.concurrently,
+ ...withIf(eslint, {
+ eslint: versionsPackageJson.eslint,
+ }),
+ "tsc-alias": versionsPackageJson.tscAlias,
+ typescript: versionsPackageJson.typescript,
+ },
+ };
+
+ await writeJson(`${pluginPath}/package.json`, pluginPkg);
+};
diff --git a/packages/create-vitnode-app/src/plugin/create/create-plugin-vitnode.ts b/packages/create-vitnode-app/src/plugin/create/create-plugin-vitnode.ts
index 89dc3f3b5..dfd223048 100644
--- a/packages/create-vitnode-app/src/plugin/create/create-plugin-vitnode.ts
+++ b/packages/create-vitnode-app/src/plugin/create/create-plugin-vitnode.ts
@@ -1,5 +1,5 @@
import { existsSync } from "fs";
-import { mkdir } from "fs/promises";
+import { cp, mkdir, rename } from "fs/promises";
import ora from "ora";
import { dirname, join } from "path";
import color from "picocolors";
@@ -10,16 +10,18 @@ import type { CreatePluginCliReturn } from "../questions.js";
import { getPackageManagerFromRoot } from "../../helpers/get-package-manager-from-root.js";
import { installDependencies } from "../../helpers/install-dependencies.js";
import { isFolderEmpty } from "../../helpers/is-folder-empty.js";
+import { addPluginToWorkspace } from "./add-plugin-to-workspace.js";
+import { createPluginPackageJSON } from "./create-package-json.js";
export const createPluginVitNode = async ({
pluginPath,
pluginName,
install,
- root,
+ eslint,
}: CreatePluginCliReturn & {
+ eslint: boolean;
pluginName: string;
pluginPath: string;
- root: string;
}) => {
const packageManager = getPackageManagerFromRoot(process.cwd());
@@ -34,7 +36,9 @@ export const createPluginVitNode = async ({
"..",
"..",
"..",
+ "..",
"copy-of-vitnode-plugin",
+ "root",
);
if (!existsSync(templatePath)) {
spinner.fail(
@@ -50,15 +54,70 @@ export const createPluginVitNode = async ({
}
spinner.text = "Preparing the plugin structure...";
+ await cp(templatePath, pluginPath, { recursive: true });
+
+ // Rename template npmignore to .npmignore in the generated plugin
+ const npmIgnoreTemplatePath = join(pluginPath, "npmignore.template");
+ const dotNpmIgnorePath = join(pluginPath, ".npmignore");
+ if (existsSync(npmIgnoreTemplatePath)) {
+ await rename(npmIgnoreTemplatePath, dotNpmIgnorePath);
+ }
spinner.text = "Creating package.json...";
- // Create package.json for the plugin
+ await createPluginPackageJSON({
+ pluginName,
+ pluginPath,
+ eslint,
+ });
+
+ if (eslint) {
+ spinner.text = "Setting up ESLint...";
+ const templateEslintPath = join(
+ __dirname,
+ "..",
+ "..",
+ "..",
+ "..",
+ "copy-of-vitnode-app",
+ "eslint-react",
+ );
+
+ if (!existsSync(templateEslintPath)) {
+ spinner.fail(
+ `\n${color.red("Error!")} ESLint template path ${color.cyan(
+ templateEslintPath,
+ )} does not exist.`,
+ );
+ process.exit(1);
+ }
+
+ await cp(templateEslintPath, pluginPath, { recursive: true });
+ }
+
+ // Find the root of the monorepo (where turbo.json is located)
+ let rootPath = process.cwd();
+ let currentDir = rootPath;
+ while (currentDir !== dirname(currentDir)) {
+ if (existsSync(join(currentDir, "turbo.json"))) {
+ rootPath = currentDir;
+ break;
+ }
+ currentDir = dirname(currentDir);
+ }
+
+ spinner.text = "Adding plugin to workspace packages...";
+ await addPluginToWorkspace({
+ packageManager,
+ pluginName,
+ pluginPath,
+ rootPath,
+ });
if (install) {
spinner.text = "Installing dependencies...";
await installDependencies({
packageManager,
- cwd: root,
+ cwd: pluginPath,
});
}
diff --git a/packages/create-vitnode-app/src/plugin/index.ts b/packages/create-vitnode-app/src/plugin/index.ts
index 3651c606a..d2e4ca81b 100644
--- a/packages/create-vitnode-app/src/plugin/index.ts
+++ b/packages/create-vitnode-app/src/plugin/index.ts
@@ -29,12 +29,13 @@ export const createPlugin = async ({
});
}
- const { pluginName, pluginPath } = await validationProjectForPlugin(name);
+ const { pluginName, pluginPath, eslint } =
+ await validationProjectForPlugin(name);
const options = await createPluginQuestionsCli(program);
await createPluginVitNode({
pluginName,
pluginPath,
- root: projectPath,
+ eslint,
...options,
});
};
diff --git a/packages/create-vitnode-app/src/plugin/validation.ts b/packages/create-vitnode-app/src/plugin/validation.ts
index 479faa44f..77e2ea44b 100644
--- a/packages/create-vitnode-app/src/plugin/validation.ts
+++ b/packages/create-vitnode-app/src/plugin/validation.ts
@@ -53,6 +53,8 @@ export const validationProjectForPlugin = async (projectPath: string) => {
process.exit(1);
}
+ let eslint = false;
+
try {
const packageJson: PackageJSON = JSON.parse(
await readFile(packageJsonPath, "utf-8"),
@@ -70,6 +72,12 @@ export const validationProjectForPlugin = async (projectPath: string) => {
);
process.exit(1);
}
+
+ eslint = !!(
+ packageJson.dependencies?.eslint ??
+ packageJson.devDependencies?.eslint ??
+ false
+ );
} catch (error) {
console.error(
`${color.red("Error:")} Failed to read or parse ${color.cyan("package.json")}.`,
@@ -124,5 +132,5 @@ export const validationProjectForPlugin = async (projectPath: string) => {
process.exit(1);
}
- return { pluginName, pluginPath };
+ return { pluginName, pluginPath, eslint };
};
diff --git a/packages/create-vitnode-app/src/prepare/prepare.ts b/packages/create-vitnode-app/src/prepare/prepare.ts
index b5cf406d8..38271ea9b 100644
--- a/packages/create-vitnode-app/src/prepare/prepare.ts
+++ b/packages/create-vitnode-app/src/prepare/prepare.ts
@@ -3,10 +3,16 @@ import { mkdir } from "node:fs/promises";
import { join } from "node:path";
const prepare = async () => {
- const toRootPath = join(process.cwd(), "copy-of-vitnode-app");
- if (!existsSync(toRootPath)) {
- await mkdir(toRootPath);
- }
+ const toRootPaths = ["copy-of-vitnode-app", "copy-of-vitnode-plugin"];
+ await Promise.all(
+ toRootPaths.map(async path => {
+ const toRootPath = join(process.cwd(), path);
+ if (!existsSync(toRootPath)) {
+ await mkdir(toRootPath);
+ }
+ }),
+ );
+
const fromRootPath = join(process.cwd(), "..", "..", "apps", "docs");
if (!existsSync(fromRootPath)) {
console.error(
diff --git a/packages/node-cron/.npmignore b/packages/node-cron/.npmignore
new file mode 100644
index 000000000..10004b73c
--- /dev/null
+++ b/packages/node-cron/.npmignore
@@ -0,0 +1,6 @@
+/.turbo
+/src
+/node_modules
+/tsconfig.json
+/.swcrc
+/eslint.config.mjs
\ No newline at end of file
diff --git a/packages/node-cron/.swcrc b/packages/node-cron/.swcrc
new file mode 100644
index 000000000..eba97079c
--- /dev/null
+++ b/packages/node-cron/.swcrc
@@ -0,0 +1,25 @@
+{
+ "$schema": "https://swc.rs/schema.json",
+ "minify": true,
+ "jsc": {
+ "baseUrl": "./",
+ "target": "esnext",
+ "paths": {
+ "@/*": ["./src/*"]
+ },
+ "parser": {
+ "syntax": "typescript",
+ "tsx": true
+ },
+ "transform": {
+ "react": {
+ "runtime": "automatic"
+ }
+ }
+ },
+ "module": {
+ "type": "nodenext",
+ "strict": true,
+ "resolveFully": true
+ }
+}
diff --git a/packages/node-cron/README.md b/packages/node-cron/README.md
new file mode 100644
index 000000000..a68ff4bab
--- /dev/null
+++ b/packages/node-cron/README.md
@@ -0,0 +1,20 @@
+# (VitNode) Node-cron Adapter
+
+This package provides the Node-cron adapter for VitNode, enabling cron job scheduling and management within your VitNode applications.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+| Cloud | Self-Hosted | Links | Documentation |
+| ---------------- | ------------ | ------------------------------------------------------ | --------------------------------------------------- |
+| ❌ Not Supported | ✅ Supported | [NPM Package](https://www.npmjs.com/package/node-cron) | [Docs](https://vitnode.com/docs/dev/cron/node-cron) |
diff --git a/packages/node-cron/eslint.config.mjs b/packages/node-cron/eslint.config.mjs
new file mode 100644
index 000000000..8c0f6171d
--- /dev/null
+++ b/packages/node-cron/eslint.config.mjs
@@ -0,0 +1,17 @@
+import eslintVitNode from "@vitnode/config/eslint";
+import { fileURLToPath } from "node:url";
+import { dirname } from "node:path";
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
+
+export default [
+ ...eslintVitNode,
+ {
+ languageOptions: {
+ parserOptions: {
+ project: "./tsconfig.json",
+ tsconfigRootDir: __dirname,
+ },
+ },
+ },
+];
diff --git a/packages/node-cron/package.json b/packages/node-cron/package.json
new file mode 100644
index 000000000..962571251
--- /dev/null
+++ b/packages/node-cron/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "@vitnode/node-cron",
+ "version": "1.2.0-canary.68",
+ "description": "Node-cron adapter for VitNode, enabling cron job scheduling and management.",
+ "author": "VitNode Team",
+ "license": "MIT",
+ "homepage": "https://vitnode.com",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/aXenDeveloper/vitnode.git",
+ "directory": "packages/node-cron"
+ },
+ "keywords": [
+ "vitnode",
+ "node-cron",
+ "cron",
+ "scheduler"
+ ],
+ "type": "module",
+ "exports": {
+ ".": {
+ "import": "./dist/src/index.js",
+ "types": "./dist/src/index.d.ts",
+ "default": "./dist/src/index.js"
+ }
+ },
+ "scripts": {
+ "build:plugins": "tsc && swc src -d dist --config-file .swcrc && tsc-alias -p tsconfig.json",
+ "dev:plugins": "concurrently \"tsc -w --preserveWatchOutput\" \"swc src -d dist --config-file .swcrc -w\" \"tsc-alias -w\"",
+ "lint": "eslint .",
+ "lint:fix": "eslint . --fix"
+ },
+ "dependencies": {
+ "node-cron": "^4.2.1"
+ },
+ "devDependencies": {
+ "@swc/cli": "^0.7.9",
+ "@swc/core": "^1.15.1",
+ "@vitnode/config": "workspace:*",
+ "@vitnode/core": "workspace:*",
+ "concurrently": "^9.2.1",
+ "eslint": "^9.39.1",
+ "tsc-alias": "^1.8.16",
+ "typescript": "^5.9.3"
+ }
+}
diff --git a/packages/vitnode/src/api/adapters/cron/node-cron.adapter.ts b/packages/node-cron/src/index.ts
similarity index 73%
rename from packages/vitnode/src/api/adapters/cron/node-cron.adapter.ts
rename to packages/node-cron/src/index.ts
index de2606ecb..d51d24d85 100644
--- a/packages/vitnode/src/api/adapters/cron/node-cron.adapter.ts
+++ b/packages/node-cron/src/index.ts
@@ -1,7 +1,6 @@
+import { type CronAdapter, handleCronJobs } from "@vitnode/core/api/lib/cron";
import { schedule } from "node-cron";
-import { type CronAdapter, handleCronJobs } from "@/api/lib/cron";
-
export const NodeCronAdapter = (): CronAdapter => {
return {
schedule() {
diff --git a/packages/node-cron/tsconfig.json b/packages/node-cron/tsconfig.json
new file mode 100644
index 000000000..7593a944f
--- /dev/null
+++ b/packages/node-cron/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "extends": "@vitnode/config/tsconfig",
+ "compilerOptions": {
+ "target": "ESNext",
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "rootDir": "./",
+ "outDir": "./dist",
+ "emitDeclarationOnly": true,
+ "declaration": true,
+ "declarationMap": true,
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+ "exclude": ["node_modules"],
+ "include": ["src"]
+}
diff --git a/packages/nodemailer/.npmignore b/packages/nodemailer/.npmignore
new file mode 100644
index 000000000..10004b73c
--- /dev/null
+++ b/packages/nodemailer/.npmignore
@@ -0,0 +1,6 @@
+/.turbo
+/src
+/node_modules
+/tsconfig.json
+/.swcrc
+/eslint.config.mjs
\ No newline at end of file
diff --git a/packages/nodemailer/.swcrc b/packages/nodemailer/.swcrc
new file mode 100644
index 000000000..eba97079c
--- /dev/null
+++ b/packages/nodemailer/.swcrc
@@ -0,0 +1,25 @@
+{
+ "$schema": "https://swc.rs/schema.json",
+ "minify": true,
+ "jsc": {
+ "baseUrl": "./",
+ "target": "esnext",
+ "paths": {
+ "@/*": ["./src/*"]
+ },
+ "parser": {
+ "syntax": "typescript",
+ "tsx": true
+ },
+ "transform": {
+ "react": {
+ "runtime": "automatic"
+ }
+ }
+ },
+ "module": {
+ "type": "nodenext",
+ "strict": true,
+ "resolveFully": true
+ }
+}
diff --git a/packages/nodemailer/README.md b/packages/nodemailer/README.md
new file mode 100644
index 000000000..57add38dc
--- /dev/null
+++ b/packages/nodemailer/README.md
@@ -0,0 +1,20 @@
+# (VitNode) Nodemailer (SMTP) Adapter
+
+This package provides a Nodemailer email adapter for VitNode, enabling email sending capabilities using SMTP.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+| Cloud | Self-Hosted | Links | Documentation |
+| ---------------- | ------------ | ------------------------------------------------------- | ----------------------------------------------------- |
+| ❌ Not Supported | ✅ Supported | [NPM Package](https://www.npmjs.com/package/nodemailer) | [Docs](https://vitnode.com/docs/dev/email/nodemailer) |
diff --git a/packages/nodemailer/eslint.config.mjs b/packages/nodemailer/eslint.config.mjs
new file mode 100644
index 000000000..8c0f6171d
--- /dev/null
+++ b/packages/nodemailer/eslint.config.mjs
@@ -0,0 +1,17 @@
+import eslintVitNode from "@vitnode/config/eslint";
+import { fileURLToPath } from "node:url";
+import { dirname } from "node:path";
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
+
+export default [
+ ...eslintVitNode,
+ {
+ languageOptions: {
+ parserOptions: {
+ project: "./tsconfig.json",
+ tsconfigRootDir: __dirname,
+ },
+ },
+ },
+];
diff --git a/packages/nodemailer/package.json b/packages/nodemailer/package.json
new file mode 100644
index 000000000..be41a69f6
--- /dev/null
+++ b/packages/nodemailer/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "@vitnode/nodemailer",
+ "version": "1.2.0-canary.68",
+ "description": "Nodemailer integration package for VitNode, enabling email functionalities.",
+ "author": "VitNode Team",
+ "license": "MIT",
+ "homepage": "https://vitnode.com",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/aXenDeveloper/vitnode.git",
+ "directory": "packages/nodemailer"
+ },
+ "keywords": [
+ "vitnode",
+ "nodemailer",
+ "smtp"
+ ],
+ "type": "module",
+ "exports": {
+ ".": {
+ "import": "./dist/src/index.js",
+ "types": "./dist/src/index.d.ts",
+ "default": "./dist/src/index.js"
+ }
+ },
+ "scripts": {
+ "build:plugins": "tsc && swc src -d dist --config-file .swcrc && tsc-alias -p tsconfig.json",
+ "dev:plugins": "concurrently \"tsc -w --preserveWatchOutput\" \"swc src -d dist --config-file .swcrc -w\" \"tsc-alias -w\"",
+ "lint": "eslint .",
+ "lint:fix": "eslint . --fix"
+ },
+ "dependencies": {
+ "nodemailer": "^7.0.10"
+ },
+ "devDependencies": {
+ "@swc/cli": "^0.7.9",
+ "@swc/core": "^1.15.1",
+ "@types/nodemailer": "^7.0.3",
+ "@vitnode/config": "workspace:*",
+ "@vitnode/core": "workspace:*",
+ "concurrently": "^9.2.1",
+ "eslint": "^9.39.1",
+ "tsc-alias": "^1.8.16",
+ "typescript": "^5.9.3"
+ }
+}
diff --git a/packages/vitnode/src/api/adapters/email/nodemailer.ts b/packages/nodemailer/src/index.ts
similarity index 93%
rename from packages/vitnode/src/api/adapters/email/nodemailer.ts
rename to packages/nodemailer/src/index.ts
index 7f00ecfec..1a218d18e 100644
--- a/packages/vitnode/src/api/adapters/email/nodemailer.ts
+++ b/packages/nodemailer/src/index.ts
@@ -1,6 +1,6 @@
-import { createTransport } from "nodemailer";
+import type { EmailApiPlugin } from "@vitnode/core/api/models/email";
-import type { EmailApiPlugin } from "@/api/models/email";
+import { createTransport } from "nodemailer";
export const NodemailerEmailAdapter = ({
host = "",
diff --git a/packages/nodemailer/tsconfig.json b/packages/nodemailer/tsconfig.json
new file mode 100644
index 000000000..7593a944f
--- /dev/null
+++ b/packages/nodemailer/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "extends": "@vitnode/config/tsconfig",
+ "compilerOptions": {
+ "target": "ESNext",
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "rootDir": "./",
+ "outDir": "./dist",
+ "emitDeclarationOnly": true,
+ "declaration": true,
+ "declarationMap": true,
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+ "exclude": ["node_modules"],
+ "include": ["src"]
+}
diff --git a/packages/resend/.npmignore b/packages/resend/.npmignore
new file mode 100644
index 000000000..10004b73c
--- /dev/null
+++ b/packages/resend/.npmignore
@@ -0,0 +1,6 @@
+/.turbo
+/src
+/node_modules
+/tsconfig.json
+/.swcrc
+/eslint.config.mjs
\ No newline at end of file
diff --git a/packages/resend/.swcrc b/packages/resend/.swcrc
new file mode 100644
index 000000000..eba97079c
--- /dev/null
+++ b/packages/resend/.swcrc
@@ -0,0 +1,25 @@
+{
+ "$schema": "https://swc.rs/schema.json",
+ "minify": true,
+ "jsc": {
+ "baseUrl": "./",
+ "target": "esnext",
+ "paths": {
+ "@/*": ["./src/*"]
+ },
+ "parser": {
+ "syntax": "typescript",
+ "tsx": true
+ },
+ "transform": {
+ "react": {
+ "runtime": "automatic"
+ }
+ }
+ },
+ "module": {
+ "type": "nodenext",
+ "strict": true,
+ "resolveFully": true
+ }
+}
diff --git a/packages/resend/README.md b/packages/resend/README.md
new file mode 100644
index 000000000..8fdbcee2c
--- /dev/null
+++ b/packages/resend/README.md
@@ -0,0 +1,20 @@
+# (VitNode) Resend Adapter
+
+This package provides an adapter for integrating Resend email services into VitNode applications, enabling seamless email sending capabilities.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+| Cloud | Self-Hosted | Links | Documentation |
+| ------------ | ------------ | --------------------------------------------------- | ------------------------------------------------- |
+| ✅ Supported | ✅ Supported | [NPM Package](https://www.npmjs.com/package/resend) | [Docs](https://vitnode.com/docs/dev/email/resend) |
diff --git a/packages/resend/eslint.config.mjs b/packages/resend/eslint.config.mjs
new file mode 100644
index 000000000..8c0f6171d
--- /dev/null
+++ b/packages/resend/eslint.config.mjs
@@ -0,0 +1,17 @@
+import eslintVitNode from "@vitnode/config/eslint";
+import { fileURLToPath } from "node:url";
+import { dirname } from "node:path";
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
+
+export default [
+ ...eslintVitNode,
+ {
+ languageOptions: {
+ parserOptions: {
+ project: "./tsconfig.json",
+ tsconfigRootDir: __dirname,
+ },
+ },
+ },
+];
diff --git a/packages/resend/package.json b/packages/resend/package.json
new file mode 100644
index 000000000..ed45660e7
--- /dev/null
+++ b/packages/resend/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "@vitnode/resend",
+ "version": "1.2.0-canary.68",
+ "description": "Resend adapter for VitNode, enabling email sending capabilities through the Resend service.",
+ "author": "VitNode Team",
+ "license": "MIT",
+ "homepage": "https://vitnode.com",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/aXenDeveloper/vitnode.git",
+ "directory": "packages/resend"
+ },
+ "keywords": [
+ "vitnode",
+ "resend"
+ ],
+ "type": "module",
+ "exports": {
+ ".": {
+ "import": "./dist/src/index.js",
+ "types": "./dist/src/index.d.ts",
+ "default": "./dist/src/index.js"
+ }
+ },
+ "scripts": {
+ "build:plugins": "tsc && swc src -d dist --config-file .swcrc && tsc-alias -p tsconfig.json",
+ "dev:plugins": "concurrently \"tsc -w --preserveWatchOutput\" \"swc src -d dist --config-file .swcrc -w\" \"tsc-alias -w\"",
+ "lint": "eslint .",
+ "lint:fix": "eslint . --fix"
+ },
+ "dependencies": {
+ "resend": "^6.4.2"
+ },
+ "devDependencies": {
+ "@swc/cli": "^0.7.9",
+ "@swc/core": "^1.15.1",
+ "@vitnode/config": "workspace:*",
+ "@vitnode/core": "workspace:*",
+ "concurrently": "^9.2.1",
+ "eslint": "^9.39.1",
+ "tsc-alias": "^1.8.16",
+ "typescript": "^5.9.3"
+ }
+}
diff --git a/packages/vitnode/src/api/adapters/email/resend.ts b/packages/resend/src/index.ts
similarity index 90%
rename from packages/vitnode/src/api/adapters/email/resend.ts
rename to packages/resend/src/index.ts
index 8c2f3cf3a..9ecadf5d6 100644
--- a/packages/vitnode/src/api/adapters/email/resend.ts
+++ b/packages/resend/src/index.ts
@@ -1,6 +1,6 @@
-import { Resend } from "resend";
+import type { EmailApiPlugin } from "@vitnode/core/api/models/email";
-import type { EmailApiPlugin } from "@/api/models/email";
+import { Resend } from "resend";
export const ResendEmailAdapter = ({
apiKey,
diff --git a/packages/resend/tsconfig.json b/packages/resend/tsconfig.json
new file mode 100644
index 000000000..7593a944f
--- /dev/null
+++ b/packages/resend/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "extends": "@vitnode/config/tsconfig",
+ "compilerOptions": {
+ "target": "ESNext",
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "rootDir": "./",
+ "outDir": "./dist",
+ "emitDeclarationOnly": true,
+ "declaration": true,
+ "declarationMap": true,
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+ "exclude": ["node_modules"],
+ "include": ["src"]
+}
diff --git a/packages/vitnode/.swcrc b/packages/vitnode/.swcrc
index c9903f975..eba97079c 100644
--- a/packages/vitnode/.swcrc
+++ b/packages/vitnode/.swcrc
@@ -1,6 +1,6 @@
{
"$schema": "https://swc.rs/schema.json",
- "minify": false,
+ "minify": true,
"jsc": {
"baseUrl": "./",
"target": "esnext",
diff --git a/packages/vitnode/eslint.config.mjs b/packages/vitnode/eslint.config.mjs
index 8c0f6171d..b1ce26beb 100644
--- a/packages/vitnode/eslint.config.mjs
+++ b/packages/vitnode/eslint.config.mjs
@@ -1,4 +1,5 @@
import eslintVitNode from "@vitnode/config/eslint";
+import eslintVitNodeReact from "@vitnode/config/eslint.react";
import { fileURLToPath } from "node:url";
import { dirname } from "node:path";
@@ -6,6 +7,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
export default [
...eslintVitNode,
+ ...eslintVitNodeReact,
{
languageOptions: {
parserOptions: {
diff --git a/packages/vitnode/package.json b/packages/vitnode/package.json
index 97d58edee..51fcf3479 100644
--- a/packages/vitnode/package.json
+++ b/packages/vitnode/package.json
@@ -1,6 +1,6 @@
{
"name": "@vitnode/core",
- "version": "1.2.0-canary.60",
+ "version": "1.2.0-canary.68",
"description": "Core package for VitNode, providing essential functionalities and configurations.",
"author": "VitNode Team",
"license": "MIT",
@@ -20,8 +20,8 @@
],
"peerDependencies": {
"@hono/zod-openapi": "^1.0.x",
- "@swc/cli": "0.6.x",
- "@swc/core": "1.12.x",
+ "@swc/cli": "0.7.x",
+ "@swc/core": "1.x.x",
"@types/react": "^19.1.x",
"@types/react-dom": "^19.1.x",
"drizzle-kit": "^0.31.x",
@@ -41,29 +41,26 @@
"@hono/zod-validator": "^0.7.4",
"@hookform/resolvers": "^5.2.2",
"@react-email/components": "^1.0.0",
- "@swc/cli": "0.6.0",
- "@swc/core": "^1.13.5",
+ "@swc/cli": "^0.7.9",
+ "@swc/core": "^1.15.1",
"@testing-library/dom": "^10.4.1",
"@testing-library/react": "^16.3.0",
"@types/node": "^24.10.0",
- "@types/nodemailer": "^7.0.3",
- "@types/react": "^19.2.2",
+ "@types/react": "^19.2.3",
"@types/react-dom": "^19.2.2",
"@vitejs/plugin-react": "^5.1.0",
"@vitest/coverage-v8": "^4.0.8",
"@vitnode/config": "workspace:*",
"chokidar": "^4.0.3",
"concurrently": "^9.2.1",
- "dotenv": "^17.2.3",
"drizzle-kit": "^0.31.6",
"drizzle-orm": "^0.44.7",
"eslint": "^9.39.1",
- "hono": "^4.10.4",
+ "hono": "^4.10.5",
"jsdom": "^27.1.0",
"lucide-react": "^0.553.0",
"next": "^16.0.1",
- "next-intl": "^4.5.0",
- "node-cron": "^4.2.1",
+ "next-intl": "^4.5.1",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"react-email": "^5.0.1",
@@ -115,26 +112,25 @@
"@hono/swagger-ui": "^0.5.2",
"@react-email/preview-server": "^5.0.1",
"@tanstack/react-query": "^5.90.7",
- "@tiptap/extension-text-align": "^3.10.4",
- "@tiptap/pm": "^3.10.4",
- "@tiptap/react": "^3.10.4",
- "@tiptap/starter-kit": "^3.10.4",
+ "@tiptap/extension-text-align": "^3.10.5",
+ "@tiptap/pm": "^3.10.5",
+ "@tiptap/react": "^3.10.5",
+ "@tiptap/starter-kit": "^3.10.5",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"cron-parser": "^5.4.0",
+ "dotenv": "^17.2.3",
"input-otp": "^1.4.2",
"motion": "^12.23.24",
"next-themes": "^0.4.6",
- "nodemailer": "^7.0.10",
"postgres": "^3.4.7",
"radix-ui": "^1.4.3",
"rate-limiter-flexible": "^8.2.0",
"react-scan": "^0.4.3",
- "resend": "^6.4.2",
"tailwind-merge": "^3.4.0",
"use-debounce": "^10.0.6",
- "use-intl": "^4.5.0",
+ "use-intl": "^4.5.1",
"vaul": "^1.1.2"
}
}
diff --git a/packages/vitnode/scripts/get-config.ts b/packages/vitnode/scripts/get-config.ts
index a8618c850..3de8fbed6 100644
--- a/packages/vitnode/scripts/get-config.ts
+++ b/packages/vitnode/scripts/get-config.ts
@@ -2,7 +2,7 @@
import { join } from "node:path";
import { pathToFileURL } from "node:url";
-import type { VitNodeApiConfig, VitNodeConfig } from "../src/vitnode.config";
+import type { VitNodeApiConfig, VitNodeConfig } from "../src/vitnode.config.js";
type ConfigType = T extends "config"
? VitNodeConfig
diff --git a/packages/vitnode/scripts/plugin.ts b/packages/vitnode/scripts/plugin.ts
index cc74a107f..45cf35518 100644
--- a/packages/vitnode/scripts/plugin.ts
+++ b/packages/vitnode/scripts/plugin.ts
@@ -18,7 +18,7 @@ import {
isDirectoryEmpty,
routeKey,
type SourceConfig,
-} from "./shared/file-utils";
+} from "./shared/file-utils.js";
/**
* Helper: detect if an app path is web, api, or null
diff --git a/packages/vitnode/scripts/prepare-plugins-files.ts b/packages/vitnode/scripts/prepare-plugins-files.ts
index 7da8b0840..f7768bbd3 100644
--- a/packages/vitnode/scripts/prepare-plugins-files.ts
+++ b/packages/vitnode/scripts/prepare-plugins-files.ts
@@ -3,7 +3,7 @@ import { existsSync, readdirSync } from "node:fs";
import { readFile } from "node:fs/promises";
import { join, relative } from "node:path";
-import { getConfig } from "./get-config";
+import { getConfig } from "./get-config.js";
import {
buildInitialRouteMap,
copyDirectoryRecursive,
@@ -11,7 +11,7 @@ import {
findRepoRoot,
isDirectoryEmpty,
type SourceConfig,
-} from "./shared/file-utils";
+} from "./shared/file-utils.js";
export const preparePluginsFiles = async (flag?: string) => {
// Detect which config file to load based on flag or auto-detection
diff --git a/packages/vitnode/src/api/modules/cron/helpers/process-cron-jobs.ts b/packages/vitnode/src/api/modules/cron/helpers/process-cron-jobs.ts
index 6d2ef8ffd..c7916f627 100644
--- a/packages/vitnode/src/api/modules/cron/helpers/process-cron-jobs.ts
+++ b/packages/vitnode/src/api/modules/cron/helpers/process-cron-jobs.ts
@@ -1,12 +1,12 @@
import type { drizzle } from "drizzle-orm/postgres-js";
import { eq, inArray } from "drizzle-orm";
-import { validate } from "node-cron";
import type { CronJobConfig } from "@/api/lib/cron";
import { core_cron } from "@/database/cron";
import { shouldCronJobRun } from "@/lib/api/should-cron-job-run";
+import { validateCronSchedule } from "@/lib/api/validate-cron-schedule";
interface CronJobFromDb {
createdAt: Date;
@@ -82,7 +82,7 @@ export function processCronJobs(
);
for (const job of cronJobs) {
- if (!validate(job.schedule)) {
+ if (!validateCronSchedule(job.schedule)) {
// eslint-disable-next-line no-console
console.warn(
`\x1b[34m[VitNode]\x1b[0m \x1b[33mInvalid cron schedule for job "${job.pluginId}:${job.module}:${job.name}"\x1b[0m: ${job.schedule}`,
diff --git a/packages/vitnode/src/lib/api/validate-cron-schedule.test.ts b/packages/vitnode/src/lib/api/validate-cron-schedule.test.ts
new file mode 100644
index 000000000..d944b6d73
--- /dev/null
+++ b/packages/vitnode/src/lib/api/validate-cron-schedule.test.ts
@@ -0,0 +1,171 @@
+import { describe, expect, it } from "vitest";
+
+import { validateCronSchedule } from "./validate-cron-schedule";
+
+describe("validateCronSchedule", () => {
+ describe("valid 5-field cron expressions", () => {
+ it("should validate wildcard expression", () => {
+ expect(validateCronSchedule("* * * * *")).toBe(true);
+ });
+
+ it("should validate specific time expressions", () => {
+ expect(validateCronSchedule("0 0 * * *")).toBe(true); // Daily at midnight
+ expect(validateCronSchedule("30 14 * * 1")).toBe(true); // Every Monday at 14:30
+ expect(validateCronSchedule("0 0 1 * *")).toBe(true); // First day of month at midnight
+ expect(validateCronSchedule("0 0 1 1 *")).toBe(true); // January 1st at midnight
+ expect(validateCronSchedule("15 10 * * 5")).toBe(true); // Every Friday at 10:15
+ });
+
+ it("should validate step expressions", () => {
+ expect(validateCronSchedule("*/5 * * * *")).toBe(true); // Every 5 minutes
+ expect(validateCronSchedule("*/15 * * * *")).toBe(true); // Every 15 minutes
+ expect(validateCronSchedule("0 */2 * * *")).toBe(true); // Every 2 hours
+ expect(validateCronSchedule("0 0 */3 * *")).toBe(true); // Every 3 days
+ expect(validateCronSchedule("0-30/5 * * * *")).toBe(true); // Every 5 minutes from 0 to 30
+ });
+
+ it("should validate range expressions", () => {
+ expect(validateCronSchedule("0 9-17 * * *")).toBe(true); // Every hour from 9am to 5pm
+ expect(validateCronSchedule("0 0 1-15 * *")).toBe(true); // First 15 days of month
+ expect(validateCronSchedule("0 0 * 1-6 *")).toBe(true); // First 6 months
+ expect(validateCronSchedule("0 0 * * 1-5")).toBe(true); // Monday to Friday
+ });
+
+ it("should validate list expressions", () => {
+ expect(validateCronSchedule("0 0,12 * * *")).toBe(true); // At midnight and noon
+ expect(validateCronSchedule("0 0 1,15 * *")).toBe(true); // 1st and 15th of month
+ expect(validateCronSchedule("0 0 * * 1,3,5")).toBe(true); // Monday, Wednesday, Friday
+ expect(validateCronSchedule("0 9,12,15 * * *")).toBe(true); // At 9am, noon, 3pm
+ });
+
+ it("should validate complex expressions", () => {
+ expect(validateCronSchedule("0-30/5 9-17 * * 1-5")).toBe(true); // Every 5 minutes from 0-30, 9am-5pm, Monday-Friday
+ expect(validateCronSchedule("0 0,12 1,15 * *")).toBe(true); // Midnight and noon on 1st and 15th
+ expect(validateCronSchedule("*/10 */2 * * *")).toBe(true); // Every 10 minutes, every 2 hours
+ });
+
+ it("should validate weekday 0 and 7 (both Sunday)", () => {
+ expect(validateCronSchedule("0 0 * * 0")).toBe(true); // Sunday
+ expect(validateCronSchedule("0 0 * * 7")).toBe(true); // Sunday (alternative)
+ });
+
+ it("should validate edge cases", () => {
+ expect(validateCronSchedule("59 23 31 12 7")).toBe(true); // Max values
+ expect(validateCronSchedule("0 0 1 1 0")).toBe(true); // Min values (except minute/hour)
+ });
+ });
+
+ describe("valid 6-field cron expressions (with seconds)", () => {
+ it("should validate wildcard expression with seconds", () => {
+ expect(validateCronSchedule("* * * * * *")).toBe(true);
+ });
+
+ it("should validate specific time expressions with seconds", () => {
+ expect(validateCronSchedule("0 0 0 * * *")).toBe(true); // Daily at midnight
+ expect(validateCronSchedule("30 30 14 * * 1")).toBe(true); // Every Monday at 14:30:30
+ expect(validateCronSchedule("0 0 0 1 * *")).toBe(true); // First day of month at midnight
+ });
+
+ it("should validate step expressions with seconds", () => {
+ expect(validateCronSchedule("*/5 * * * * *")).toBe(true); // Every 5 seconds
+ expect(validateCronSchedule("0 */5 * * * *")).toBe(true); // Every 5 minutes
+ expect(validateCronSchedule("*/30 0 * * * *")).toBe(true); // Every 30 seconds at minute 0
+ });
+
+ it("should validate range expressions with seconds", () => {
+ expect(validateCronSchedule("0-30 0 9-17 * * *")).toBe(true); // Seconds 0-30, minute 0, 9am-5pm
+ });
+
+ it("should validate list expressions with seconds", () => {
+ expect(validateCronSchedule("0,30 0 0,12 * * *")).toBe(true); // At 0 and 30 seconds, midnight and noon
+ });
+ });
+
+ describe("invalid cron expressions", () => {
+ it("should reject empty or non-string input", () => {
+ expect(validateCronSchedule("")).toBe(false);
+ expect(validateCronSchedule(" ")).toBe(false);
+ // @ts-expect-error - Testing invalid input
+ expect(validateCronSchedule(null)).toBe(false);
+ // @ts-expect-error - Testing invalid input
+ expect(validateCronSchedule(undefined)).toBe(false);
+ // @ts-expect-error - Testing invalid input
+ expect(validateCronSchedule(123)).toBe(false);
+ });
+
+ it("should reject wrong number of fields", () => {
+ expect(validateCronSchedule("* * *")).toBe(false); // Too few
+ expect(validateCronSchedule("* * * *")).toBe(false); // Too few
+ expect(validateCronSchedule("* * * * * * *")).toBe(false); // Too many
+ expect(validateCronSchedule("* * * * * * * *")).toBe(false); // Too many
+ });
+
+ it("should reject invalid characters", () => {
+ expect(validateCronSchedule("a * * * *")).toBe(false);
+ expect(validateCronSchedule("* b * * *")).toBe(false);
+ expect(validateCronSchedule("* * c * *")).toBe(false);
+ expect(validateCronSchedule("@ # $ % ^")).toBe(false);
+ expect(validateCronSchedule("invalid cron")).toBe(false);
+ });
+
+ it("should reject out-of-range values", () => {
+ expect(validateCronSchedule("60 * * * *")).toBe(false); // Minute > 59
+ expect(validateCronSchedule("* 24 * * *")).toBe(false); // Hour > 23
+ expect(validateCronSchedule("* * 32 * *")).toBe(false); // Day > 31
+ expect(validateCronSchedule("* * 0 * *")).toBe(false); // Day < 1
+ expect(validateCronSchedule("* * * 13 *")).toBe(false); // Month > 12
+ expect(validateCronSchedule("* * * 0 *")).toBe(false); // Month < 1
+ expect(validateCronSchedule("* * * * 8")).toBe(false); // Weekday > 7
+ expect(validateCronSchedule("-1 * * * *")).toBe(false); // Negative minute
+ });
+
+ it("should reject out-of-range values in 6-field format", () => {
+ expect(validateCronSchedule("60 * * * * *")).toBe(false); // Second > 59
+ expect(validateCronSchedule("-1 * * * * *")).toBe(false); // Negative second
+ });
+
+ it("should reject invalid ranges", () => {
+ expect(validateCronSchedule("10-5 * * * *")).toBe(false); // Start > end
+ expect(validateCronSchedule("* 20-10 * * *")).toBe(false); // Start > end
+ expect(validateCronSchedule("* * 60-70 * *")).toBe(false); // Out of range
+ expect(validateCronSchedule("0-60 * * * *")).toBe(false); // End out of range
+ });
+
+ it("should reject invalid steps", () => {
+ expect(validateCronSchedule("*/0 * * * *")).toBe(false); // Step of 0
+ expect(validateCronSchedule("*/-1 * * * *")).toBe(false); // Negative step
+ expect(validateCronSchedule("*/60 * * * *")).toBe(false); // Step > max
+ expect(validateCronSchedule("*/abc * * * *")).toBe(false); // Non-numeric step
+ expect(validateCronSchedule("* */25 * * *")).toBe(false); // Step > max for hour
+ });
+
+ it("should reject invalid lists", () => {
+ expect(validateCronSchedule("0,60 * * * *")).toBe(false); // Out of range in list
+ expect(validateCronSchedule("* 0,24 * * *")).toBe(false); // Out of range in list
+ expect(validateCronSchedule("a,b,c * * * *")).toBe(false); // Non-numeric list
+ expect(validateCronSchedule(",, * * * *")).toBe(false); // Empty list items
+ });
+
+ it("should reject malformed expressions", () => {
+ expect(validateCronSchedule("1--5 * * * *")).toBe(false); // Double dash
+ expect(validateCronSchedule("1//5 * * * *")).toBe(false); // Double slash
+ expect(validateCronSchedule("1- * * * *")).toBe(false); // Incomplete range
+ expect(validateCronSchedule("-5 * * * *")).toBe(false); // Invalid start
+ expect(validateCronSchedule("1/ * * * *")).toBe(false); // Incomplete step
+ expect(validateCronSchedule("/5 * * * *")).toBe(false); // Missing base for step
+ });
+ });
+
+ describe("edge cases", () => {
+ it("should handle extra whitespace", () => {
+ expect(validateCronSchedule(" * * * * * ")).toBe(true);
+ expect(validateCronSchedule("0 0 * * *")).toBe(true);
+ });
+
+ it("should reject mixed valid and invalid fields", () => {
+ expect(validateCronSchedule("0 0 * * invalid")).toBe(false);
+ expect(validateCronSchedule("0 25 * * *")).toBe(false); // Invalid hour
+ expect(validateCronSchedule("* * * * * 60")).toBe(false); // Invalid second in 6-field
+ });
+ });
+});
diff --git a/packages/vitnode/src/lib/api/validate-cron-schedule.ts b/packages/vitnode/src/lib/api/validate-cron-schedule.ts
new file mode 100644
index 000000000..d0655bb5c
--- /dev/null
+++ b/packages/vitnode/src/lib/api/validate-cron-schedule.ts
@@ -0,0 +1,128 @@
+/**
+ * Validates a cron schedule expression
+ * Supports standard cron format: minute hour day month weekday
+ * Also supports extended format with seconds (6 fields): second minute hour day month weekday
+ *
+ * @param schedule - The cron schedule string to validate
+ * @returns true if the schedule is valid, false otherwise
+ *
+ * @example
+ * ```typescript
+ * validateCronSchedule("0 0 * * *") // true - runs at midnight every day
+ * validateCronSchedule("*\/5 * * * *") // true - runs every 5 minutes
+ * validateCronSchedule("0 0 1 * *") // true - runs at midnight on the first day of each month
+ * validateCronSchedule("invalid") // false
+ * ```
+ */
+export function validateCronSchedule(schedule: string): boolean {
+ if (!schedule || typeof schedule !== "string") {
+ return false;
+ }
+
+ const trimmedSchedule = schedule.trim();
+ if (!trimmedSchedule) {
+ return false;
+ }
+
+ const parts = trimmedSchedule.split(/\s+/);
+
+ // Support both 5-field (minute hour day month weekday) and 6-field (second minute hour day month weekday) formats
+ if (parts.length !== 5 && parts.length !== 6) {
+ return false;
+ }
+
+ // Define field configurations
+ const fieldConfigs =
+ parts.length === 6
+ ? [
+ { name: "second", min: 0, max: 59 },
+ { name: "minute", min: 0, max: 59 },
+ { name: "hour", min: 0, max: 23 },
+ { name: "day", min: 1, max: 31 },
+ { name: "month", min: 1, max: 12 },
+ { name: "weekday", min: 0, max: 7 }, // 0 and 7 both represent Sunday
+ ]
+ : [
+ { name: "minute", min: 0, max: 59 },
+ { name: "hour", min: 0, max: 23 },
+ { name: "day", min: 1, max: 31 },
+ { name: "month", min: 1, max: 12 },
+ { name: "weekday", min: 0, max: 7 }, // 0 and 7 both represent Sunday
+ ];
+
+ // Validate each field
+ for (let i = 0; i < parts.length; i++) {
+ const part = parts[i];
+ const config = fieldConfigs[i];
+
+ if (!validateCronField(part, config.min, config.max)) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+/**
+ * Validates a single cron field
+ * Supports: asterisk, numbers, ranges (1-5), steps (star/5, 1-10/2), and lists (1,2,3)
+ */
+function validateCronField(field: string, min: number, max: number): boolean {
+ if (field === "*") {
+ return true;
+ }
+
+ // Handle lists (e.g., "1,2,3,5")
+ if (field.includes(",")) {
+ const listItems = field.split(",");
+
+ return listItems.every(item => validateCronField(item.trim(), min, max));
+ }
+
+ // Handle steps (e.g., "*/5" or "1-10/2")
+ if (field.includes("/")) {
+ const [range, step] = field.split("/");
+ const stepNum = parseInt(step, 10);
+
+ if (isNaN(stepNum) || stepNum <= 0 || stepNum > max) {
+ return false;
+ }
+
+ // If range is "*", it's valid
+ if (range === "*") {
+ return true;
+ }
+
+ // Otherwise, validate the range part
+ return validateCronField(range, min, max);
+ }
+
+ // Handle ranges (e.g., "1-5")
+ if (field.includes("-")) {
+ const [start, end] = field.split("-");
+ const startNum = parseInt(start, 10);
+ const endNum = parseInt(end, 10);
+
+ if (
+ isNaN(startNum) ||
+ isNaN(endNum) ||
+ startNum < min ||
+ startNum > max ||
+ endNum < min ||
+ endNum > max ||
+ startNum > endNum
+ ) {
+ return false;
+ }
+
+ return true;
+ }
+
+ // Handle single numbers
+ const num = parseInt(field, 10);
+ if (isNaN(num) || num < min || num > max) {
+ return false;
+ }
+
+ return true;
+}
diff --git a/packages/vitnode/tsconfig.json b/packages/vitnode/tsconfig.json
index ad865484f..de0976d61 100644
--- a/packages/vitnode/tsconfig.json
+++ b/packages/vitnode/tsconfig.json
@@ -8,7 +8,7 @@
"rootDir": "./",
"outDir": "./dist",
"jsx": "react-jsx",
- "emitDeclarationOnly": true,
+ "emitDeclarationOnly": false,
"declaration": true,
"declarationMap": true,
"plugins": [
diff --git a/packages/vitnode/vitest.config.ts b/packages/vitnode/vitest.config.ts
index 3a3574d48..237c1132e 100644
--- a/packages/vitnode/vitest.config.ts
+++ b/packages/vitnode/vitest.config.ts
@@ -9,6 +9,20 @@ export default defineConfig({
globals: true,
environment: "jsdom",
setupFiles: ["./src/tests/setup.ts"],
+ exclude: [
+ "**/node_modules/**",
+ "**/dist/**",
+ "**/build/**",
+ "**/.next/**",
+ "**/.turbo/**",
+ "**/coverage/**",
+ "**/src/tests/**", // Assuming setup files aren't tests
+ "**/src/emails/**",
+ "**/config/**",
+ "**/scripts/**",
+ "**/*.config.*",
+ "**/*.d.ts",
+ ],
coverage: {
provider: "v8",
reporter: ["text", "json", "html"],
diff --git a/plugins/blog/eslint.config.mjs b/plugins/blog/eslint.config.mjs
index 8c0f6171d..b1ce26beb 100644
--- a/plugins/blog/eslint.config.mjs
+++ b/plugins/blog/eslint.config.mjs
@@ -1,4 +1,5 @@
import eslintVitNode from "@vitnode/config/eslint";
+import eslintVitNodeReact from "@vitnode/config/eslint.react";
import { fileURLToPath } from "node:url";
import { dirname } from "node:path";
@@ -6,6 +7,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
export default [
...eslintVitNode,
+ ...eslintVitNodeReact,
{
languageOptions: {
parserOptions: {
diff --git a/plugins/blog/package.json b/plugins/blog/package.json
index e56bb0252..fb4d340ae 100644
--- a/plugins/blog/package.json
+++ b/plugins/blog/package.json
@@ -1,6 +1,6 @@
{
"name": "@vitnode/blog",
- "version": "1.2.0-canary.60",
+ "version": "1.2.0-canary.68",
"description": "Blog plugin for VitNode, providing a blogging platform with Next.js and Hono.js.",
"author": "VitNode Team",
"license": "MIT",
@@ -38,23 +38,23 @@
"@vitnode/core": "workspace:*",
"drizzle-kit": "^0.31.6",
"drizzle-orm": "^0.44.7",
- "hono": "^4.10.4",
+ "hono": "^4.10.5",
"lucide-react": "^0.553.0",
"next": "^16.0.1",
- "next-intl": "^4.5.0",
+ "next-intl": "^4.5.1",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"react-email": "^5.0.1",
"react-hook-form": "^7.66.0",
"sonner": "^2.0.7",
- "use-intl": "^4.5.0",
+ "use-intl": "^4.5.1",
"zod": "^4.1.12"
},
"devDependencies": {
"@react-email/components": "^1.0.0",
- "@swc/cli": "0.6.0",
+ "@swc/cli": "^0.7.9",
"@swc/core": "^1.15.1",
- "@types/react": "^19.2.2",
+ "@types/react": "^19.2.3",
"@types/react-dom": "^19.2.2",
"@vitnode/config": "workspace:*",
"concurrently": "^9.2.1",
diff --git a/plugins/blog/src/api/modules/categories/test.route.ts b/plugins/blog/src/api/modules/categories/test.route.ts
index d3260901b..be8151267 100644
--- a/plugins/blog/src/api/modules/categories/test.route.ts
+++ b/plugins/blog/src/api/modules/categories/test.route.ts
@@ -32,7 +32,7 @@ export const testRoute = buildRoute({
},
handler: async c => {
const user = await new UserModel().getUserById({
- id: 3,
+ id: 2,
c,
});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 81059afa8..9aee26b08 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -24,8 +24,8 @@ importers:
specifier: ^4.20.6
version: 4.20.6
turbo:
- specifier: ^2.6.0
- version: 2.6.0
+ specifier: ^2.6.1
+ version: 2.6.1
typescript:
specifier: ^5.9.3
version: 5.9.3
@@ -37,10 +37,10 @@ importers:
dependencies:
'@hono/zod-openapi':
specifier: ^1.1.4
- version: 1.1.4(hono@4.10.4)(zod@4.1.12)
+ version: 1.1.4(hono@4.10.5)(zod@4.1.12)
'@hono/zod-validator':
specifier: ^0.7.4
- version: 0.7.4(hono@4.10.4)(zod@4.1.12)
+ version: 0.7.4(hono@4.10.5)(zod@4.1.12)
'@vitnode/core':
specifier: workspace:*
version: link:../../packages/vitnode
@@ -51,11 +51,11 @@ importers:
specifier: ^0.44.7
version: 0.44.7(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7)
hono:
- specifier: ^4.10.4
- version: 4.10.4
+ specifier: ^4.10.5
+ version: 4.10.5
next-intl:
- specifier: ^4.5.0
- version: 4.5.0(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3)
+ specifier: ^4.5.1
+ version: 4.5.1(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -63,15 +63,15 @@ importers:
specifier: ^19.2.0
version: 19.2.0(react@19.2.0)
use-intl:
- specifier: ^4.5.0
- version: 4.5.0(react@19.2.0)
+ specifier: ^4.5.1
+ version: 4.5.1(react@19.2.0)
zod:
specifier: ^4.1.12
version: 4.1.12
devDependencies:
'@hono/node-server':
specifier: ^1.19.6
- version: 1.19.6(hono@4.10.4)
+ version: 1.19.6(hono@4.10.5)
'@react-email/components':
specifier: ^1.0.0
version: 1.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
@@ -79,14 +79,17 @@ importers:
specifier: ^24.10.0
version: 24.10.0
'@types/react':
- specifier: ^19.2.2
- version: 19.2.2
+ specifier: ^19.2.3
+ version: 19.2.3
'@types/react-dom':
specifier: ^19.2.2
- version: 19.2.2(@types/react@19.2.2)
+ version: 19.2.2(@types/react@19.2.3)
'@vitnode/config':
specifier: workspace:*
version: link:../../packages/config
+ '@vitnode/nodemailer':
+ specifier: workspace:*
+ version: link:../../packages/nodemailer
dotenv:
specifier: ^17.2.3
version: 17.2.3
@@ -110,10 +113,10 @@ importers:
dependencies:
'@hono/zod-openapi':
specifier: ^1.1.4
- version: 1.1.4(hono@4.10.4)(zod@4.1.12)
+ version: 1.1.4(hono@4.10.5)(zod@4.1.12)
'@hono/zod-validator':
specifier: ^0.7.4
- version: 0.7.4(hono@4.10.4)(zod@4.1.12)
+ version: 0.7.4(hono@4.10.5)(zod@4.1.12)
'@vitnode/blog':
specifier: workspace:*
version: link:../../plugins/blog
@@ -127,17 +130,17 @@ importers:
specifier: ^0.44.7
version: 0.44.7(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7)
fumadocs-core:
- specifier: ^16.0.8
- version: 16.0.8(@types/react@19.2.2)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ specifier: ^16.0.10
+ version: 16.0.10(@types/react@19.2.3)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
fumadocs-mdx:
- specifier: ^13.0.5
- version: 13.0.5(fumadocs-core@16.0.8(@types/react@19.2.2)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))
+ specifier: ^13.0.7
+ version: 13.0.7(fumadocs-core@16.0.10(@types/react@19.2.3)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))
fumadocs-ui:
- specifier: ^16.0.8
- version: 16.0.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(tailwindcss@4.1.17)
+ specifier: ^16.0.10
+ version: 16.0.10(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(tailwindcss@4.1.17)
hono:
- specifier: ^4.10.4
- version: 4.10.4
+ specifier: ^4.10.5
+ version: 4.10.5
lucide-react:
specifier: ^0.553.0
version: 0.553.0(react@19.2.0)
@@ -146,10 +149,10 @@ importers:
version: 12.23.24(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
next:
specifier: ^16.0.1
- version: 16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
next-intl:
- specifier: ^4.5.0
- version: 4.5.0(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3)
+ specifier: ^4.5.1
+ version: 4.5.1(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3)
node-cron:
specifier: ^4.2.1
version: 4.2.1
@@ -188,14 +191,26 @@ importers:
specifier: ^24.10.0
version: 24.10.0
'@types/react':
- specifier: ^19.2.2
- version: 19.2.2
+ specifier: ^19.2.3
+ version: 19.2.3
'@types/react-dom':
specifier: ^19.2.2
- version: 19.2.2(@types/react@19.2.2)
+ version: 19.2.2(@types/react@19.2.3)
'@vitnode/config':
specifier: workspace:*
version: link:../../packages/config
+ '@vitnode/node-cron':
+ specifier: workspace:*
+ version: link:../../packages/node-cron
+ '@vitnode/nodemailer':
+ specifier: workspace:*
+ version: link:../../packages/nodemailer
+ '@vitnode/resend':
+ specifier: workspace:*
+ version: link:../../packages/resend
+ babel-plugin-react-compiler:
+ specifier: ^1.0.0
+ version: 1.0.0
class-variance-authority:
specifier: ^0.7.1
version: 0.7.1
@@ -221,8 +236,8 @@ importers:
specifier: ^5.9.3
version: 5.9.3
use-intl:
- specifier: ^4.5.0
- version: 4.5.0(react@19.2.0)
+ specifier: ^4.5.1
+ version: 4.5.1(react@19.2.0)
zod:
specifier: ^4.1.12
version: 4.1.12
@@ -230,8 +245,8 @@ importers:
packages/config:
dependencies:
'@eslint-react/eslint-plugin':
- specifier: ^2.3.1
- version: 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ specifier: ^2.3.4
+ version: 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
'@eslint/js':
specifier: ^9.39.1
version: 9.39.1
@@ -266,8 +281,8 @@ importers:
specifier: ^0.7.1
version: 0.7.1(prettier@3.6.2)
typescript-eslint:
- specifier: ^8.46.3
- version: 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ specifier: ^8.46.4
+ version: 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
devDependencies:
typescript:
specifier: ^5.9.3
@@ -310,6 +325,102 @@ importers:
specifier: ^5.9.3
version: 5.9.3
+ packages/node-cron:
+ dependencies:
+ node-cron:
+ specifier: ^4.2.1
+ version: 4.2.1
+ devDependencies:
+ '@swc/cli':
+ specifier: ^0.7.9
+ version: 0.7.9(@swc/core@1.15.1)(chokidar@4.0.3)
+ '@swc/core':
+ specifier: ^1.15.1
+ version: 1.15.1
+ '@vitnode/config':
+ specifier: workspace:*
+ version: link:../config
+ '@vitnode/core':
+ specifier: workspace:*
+ version: link:../vitnode
+ concurrently:
+ specifier: ^9.2.1
+ version: 9.2.1
+ eslint:
+ specifier: ^9.39.1
+ version: 9.39.1(jiti@2.6.1)
+ tsc-alias:
+ specifier: ^1.8.16
+ version: 1.8.16
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
+
+ packages/nodemailer:
+ dependencies:
+ nodemailer:
+ specifier: ^7.0.10
+ version: 7.0.10
+ devDependencies:
+ '@swc/cli':
+ specifier: ^0.7.9
+ version: 0.7.9(@swc/core@1.15.1)(chokidar@4.0.3)
+ '@swc/core':
+ specifier: ^1.15.1
+ version: 1.15.1
+ '@types/nodemailer':
+ specifier: ^7.0.3
+ version: 7.0.3
+ '@vitnode/config':
+ specifier: workspace:*
+ version: link:../config
+ '@vitnode/core':
+ specifier: workspace:*
+ version: link:../vitnode
+ concurrently:
+ specifier: ^9.2.1
+ version: 9.2.1
+ eslint:
+ specifier: ^9.39.1
+ version: 9.39.1(jiti@2.6.1)
+ tsc-alias:
+ specifier: ^1.8.16
+ version: 1.8.16
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
+
+ packages/resend:
+ dependencies:
+ resend:
+ specifier: ^6.4.2
+ version: 6.4.2(@react-email/render@2.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
+ devDependencies:
+ '@swc/cli':
+ specifier: ^0.7.9
+ version: 0.7.9(@swc/core@1.15.1)(chokidar@4.0.3)
+ '@swc/core':
+ specifier: ^1.15.1
+ version: 1.15.1
+ '@vitnode/config':
+ specifier: workspace:*
+ version: link:../config
+ '@vitnode/core':
+ specifier: workspace:*
+ version: link:../vitnode
+ concurrently:
+ specifier: ^9.2.1
+ version: 9.2.1
+ eslint:
+ specifier: ^9.39.1
+ version: 9.39.1(jiti@2.6.1)
+ tsc-alias:
+ specifier: ^1.8.16
+ version: 1.8.16
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
+
packages/vitnode:
dependencies:
'@dnd-kit/core':
@@ -317,25 +428,25 @@ importers:
version: 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@hono/swagger-ui':
specifier: ^0.5.2
- version: 0.5.2(hono@4.10.4)
+ version: 0.5.2(hono@4.10.5)
'@react-email/preview-server':
specifier: ^5.0.1
- version: 5.0.1(@playwright/test@1.56.1)(@react-email/body@0.2.0(react@19.2.0))(@react-email/button@0.2.0(react@19.2.0))(@react-email/code-block@0.2.0(react@19.2.0))(@react-email/code-inline@0.0.5(react@19.2.0))(@react-email/container@0.0.15(react@19.2.0))(@react-email/heading@0.0.15(react@19.2.0))(@react-email/hr@0.0.11(react@19.2.0))(@react-email/img@0.0.11(react@19.2.0))(@react-email/link@0.0.12(react@19.2.0))(@react-email/preview@0.0.13(react@19.2.0))(@react-email/render@2.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@react-email/text@0.1.5(react@19.2.0))(@swc/core@1.15.1)(postcss@8.5.6)
+ version: 5.0.1(@playwright/test@1.56.1)(@react-email/body@0.2.0(react@19.2.0))(@react-email/button@0.2.0(react@19.2.0))(@react-email/code-block@0.2.0(react@19.2.0))(@react-email/code-inline@0.0.5(react@19.2.0))(@react-email/container@0.0.15(react@19.2.0))(@react-email/heading@0.0.15(react@19.2.0))(@react-email/hr@0.0.11(react@19.2.0))(@react-email/img@0.0.11(react@19.2.0))(@react-email/link@0.0.12(react@19.2.0))(@react-email/preview@0.0.13(react@19.2.0))(@react-email/render@2.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@react-email/text@0.1.5(react@19.2.0))(@swc/core@1.15.1)(babel-plugin-react-compiler@1.0.0)(postcss@8.5.6)
'@tanstack/react-query':
specifier: ^5.90.7
version: 5.90.7(react@19.2.0)
'@tiptap/extension-text-align':
- specifier: ^3.10.4
- version: 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))
+ specifier: ^3.10.5
+ version: 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))
'@tiptap/pm':
- specifier: ^3.10.4
- version: 3.10.4
+ specifier: ^3.10.5
+ version: 3.10.5
'@tiptap/react':
- specifier: ^3.10.4
- version: 3.10.4(@floating-ui/dom@1.7.4)(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ specifier: ^3.10.5
+ version: 3.10.5(@floating-ui/dom@1.7.4)(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@tiptap/starter-kit':
- specifier: ^3.10.4
- version: 3.10.4
+ specifier: ^3.10.5
+ version: 3.10.5
class-variance-authority:
specifier: ^0.7.1
version: 0.7.1
@@ -344,10 +455,13 @@ importers:
version: 2.1.1
cmdk:
specifier: ^1.1.1
- version: 1.1.1(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 1.1.1(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
cron-parser:
specifier: ^5.4.0
version: 5.4.0
+ dotenv:
+ specifier: ^17.2.3
+ version: 17.2.3
input-otp:
specifier: ^1.4.2
version: 1.4.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
@@ -357,24 +471,18 @@ importers:
next-themes:
specifier: ^0.4.6
version: 0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- nodemailer:
- specifier: ^7.0.10
- version: 7.0.10
postgres:
specifier: ^3.4.7
version: 3.4.7
radix-ui:
specifier: ^1.4.3
- version: 1.4.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 1.4.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
rate-limiter-flexible:
specifier: ^8.2.0
version: 8.2.0
react-scan:
specifier: ^0.4.3
- version: 0.4.3(@types/react@19.2.2)(next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.1)
- resend:
- specifier: ^6.4.2
- version: 6.4.2(@react-email/render@2.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
+ version: 0.4.3(@types/react@19.2.3)(next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.2)
tailwind-merge:
specifier: ^3.4.0
version: 3.4.0
@@ -382,18 +490,18 @@ importers:
specifier: ^10.0.6
version: 10.0.6(react@19.2.0)
use-intl:
- specifier: ^4.5.0
- version: 4.5.0(react@19.2.0)
+ specifier: ^4.5.1
+ version: 4.5.1(react@19.2.0)
vaul:
specifier: ^1.1.2
- version: 1.1.2(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 1.1.2(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
devDependencies:
'@hono/zod-openapi':
specifier: ^1.1.4
- version: 1.1.4(hono@4.10.4)(zod@4.1.12)
+ version: 1.1.4(hono@4.10.5)(zod@4.1.12)
'@hono/zod-validator':
specifier: ^0.7.4
- version: 0.7.4(hono@4.10.4)(zod@4.1.12)
+ version: 0.7.4(hono@4.10.5)(zod@4.1.12)
'@hookform/resolvers':
specifier: ^5.2.2
version: 5.2.2(react-hook-form@7.66.0(react@19.2.0))
@@ -401,29 +509,26 @@ importers:
specifier: ^1.0.0
version: 1.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@swc/cli':
- specifier: 0.6.0
- version: 0.6.0(@swc/core@1.15.1)(chokidar@4.0.3)
+ specifier: ^0.7.9
+ version: 0.7.9(@swc/core@1.15.1)(chokidar@4.0.3)
'@swc/core':
- specifier: ^1.13.5
+ specifier: ^1.15.1
version: 1.15.1
'@testing-library/dom':
specifier: ^10.4.1
version: 10.4.1
'@testing-library/react':
specifier: ^16.3.0
- version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@types/node':
specifier: ^24.10.0
version: 24.10.0
- '@types/nodemailer':
- specifier: ^7.0.3
- version: 7.0.3
'@types/react':
- specifier: ^19.2.2
- version: 19.2.2
+ specifier: ^19.2.3
+ version: 19.2.3
'@types/react-dom':
specifier: ^19.2.2
- version: 19.2.2(@types/react@19.2.2)
+ version: 19.2.2(@types/react@19.2.3)
'@vitejs/plugin-react':
specifier: ^5.1.0
version: 5.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))
@@ -439,9 +544,6 @@ importers:
concurrently:
specifier: ^9.2.1
version: 9.2.1
- dotenv:
- specifier: ^17.2.3
- version: 17.2.3
drizzle-kit:
specifier: ^0.31.6
version: 0.31.6
@@ -452,8 +554,8 @@ importers:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
hono:
- specifier: ^4.10.4
- version: 4.10.4
+ specifier: ^4.10.5
+ version: 4.10.5
jsdom:
specifier: ^27.1.0
version: 27.1.0
@@ -462,13 +564,10 @@ importers:
version: 0.553.0(react@19.2.0)
next:
specifier: ^16.0.1
- version: 16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
next-intl:
- specifier: ^4.5.0
- version: 4.5.0(next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3)
- node-cron:
- specifier: ^4.2.1
- version: 4.2.1
+ specifier: ^4.5.1
+ version: 4.5.1(next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -516,7 +615,7 @@ importers:
dependencies:
'@hono/zod-openapi':
specifier: ^1.1.4
- version: 1.1.4(hono@4.10.4)(zod@4.1.12)
+ version: 1.1.4(hono@4.10.5)(zod@4.1.12)
'@vitnode/core':
specifier: workspace:*
version: link:../../packages/vitnode
@@ -527,17 +626,17 @@ importers:
specifier: ^0.44.7
version: 0.44.7(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7)
hono:
- specifier: ^4.10.4
- version: 4.10.4
+ specifier: ^4.10.5
+ version: 4.10.5
lucide-react:
specifier: ^0.553.0
version: 0.553.0(react@19.2.0)
next:
specifier: ^16.0.1
- version: 16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
next-intl:
- specifier: ^4.5.0
- version: 4.5.0(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3)
+ specifier: ^4.5.1
+ version: 4.5.1(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -554,8 +653,8 @@ importers:
specifier: ^2.0.7
version: 2.0.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
use-intl:
- specifier: ^4.5.0
- version: 4.5.0(react@19.2.0)
+ specifier: ^4.5.1
+ version: 4.5.1(react@19.2.0)
zod:
specifier: ^4.1.12
version: 4.1.12
@@ -564,17 +663,17 @@ importers:
specifier: ^1.0.0
version: 1.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@swc/cli':
- specifier: 0.6.0
- version: 0.6.0(@swc/core@1.15.1)(chokidar@4.0.3)
+ specifier: ^0.7.9
+ version: 0.7.9(@swc/core@1.15.1)(chokidar@4.0.3)
'@swc/core':
specifier: ^1.15.1
version: 1.15.1
'@types/react':
- specifier: ^19.2.2
- version: 19.2.2
+ specifier: ^19.2.3
+ version: 19.2.3
'@types/react-dom':
specifier: ^19.2.2
- version: 19.2.2(@types/react@19.2.2)
+ version: 19.2.2(@types/react@19.2.3)
'@vitnode/config':
specifier: workspace:*
version: link:../../packages/config
@@ -880,8 +979,8 @@ packages:
peerDependencies:
'@csstools/css-tokenizer': ^3.0.4
- '@csstools/css-syntax-patches-for-csstree@1.0.15':
- resolution: {integrity: sha512-q0p6zkVq2lJnmzZVPR33doA51G7YOja+FBvRdp5ISIthL0MtFCgYHHhR563z9WFGxcOn0WfjSkPDJ5Qig3H3Sw==}
+ '@csstools/css-syntax-patches-for-csstree@1.0.16':
+ resolution: {integrity: sha512-2SpS4/UaWQaGpBINyG5ZuCHnUDeVByOhvbkARwfmnfxDvTaj80yOI1cD8Tw93ICV5Fx4fnyDKWQZI1CDtcWyUg==}
engines: {node: '>=18'}
'@csstools/css-tokenizer@3.0.4':
@@ -1376,31 +1475,31 @@ packages:
resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint-react/ast@2.3.1':
- resolution: {integrity: sha512-jB/P72HVbZcC7DtUvjna8tjPSageAS6L9x5muMsBRQxEXkfv2J6CPX47sSpaPu1mMJn1Zzpn9m5z4aTPbfV6Ug==}
+ '@eslint-react/ast@2.3.4':
+ resolution: {integrity: sha512-wueu2vBRwKqnrgOuz1JmEefhn5dgfa1NgvFtDMfefePfICTYFtwkTuOJNGJI77TUnqV9inp9ZNDB1nyAMmlZMg==}
engines: {node: '>=20.19.0'}
- '@eslint-react/core@2.3.1':
- resolution: {integrity: sha512-R0gXjIqHqqYSeHxNMbXblnlwzmZ2gD32aVPmrJB+SrLP0rItzo/WgVSvstjOK5+N5KExdM87hopFcqnlZS3ONg==}
+ '@eslint-react/core@2.3.4':
+ resolution: {integrity: sha512-1ve3pSjAhd4PKcTpZd0bQwkAgWOAJjfgAixTfOvJ7QhWi3gPKq0Wn0vi78XcFO8K0IL3EcOfX2g2JhZJzSRnWQ==}
engines: {node: '>=20.19.0'}
- '@eslint-react/eff@2.3.1':
- resolution: {integrity: sha512-k58lxHmhzatRZXVFzWdLZwfRwPgI5Thhf7BNVJ9F+NI2G1fFypclSVFRPqjGmI5jQ8bqB+5UVt9Rh49rZGZPzw==}
+ '@eslint-react/eff@2.3.4':
+ resolution: {integrity: sha512-/SXI23DpQCutSXPdAPdSvErfsBFYwaqbgQy5dLmnde4wHivk/eD9O/rA/Xu1c4j9tLJG/sZBQ9DzN/UXHizjag==}
engines: {node: '>=20.19.0'}
- '@eslint-react/eslint-plugin@2.3.1':
- resolution: {integrity: sha512-ThWx+AWI3Tl/6g+L1Cq/kTQrrZ4NXWMxRN92iBswYMW7bPaolh/8WBdiLAVZldqnlm+l6LZriia89jyr0CeTHA==}
+ '@eslint-react/eslint-plugin@2.3.4':
+ resolution: {integrity: sha512-fcLZNQRbzjBK510a2oqLcsvdCSMK169x3CGfi1E3JvdMPyLICM+KZ8wNnhULZPey7BnEFVWC7dQfz5Dct60C7g==}
engines: {node: '>=20.19.0'}
peerDependencies:
eslint: ^9.38.0
typescript: ^5.9.3
- '@eslint-react/shared@2.3.1':
- resolution: {integrity: sha512-UiTbPi1i7UPdsIT2Z7mKZ3zzrgAm1GLeexkKe4QwvZJ1LLeEJmgMwHUw852+VzlDeV8stcQmZ9zWqFX2L0CmGg==}
+ '@eslint-react/shared@2.3.4':
+ resolution: {integrity: sha512-FN3X4jA0kksFO9cjXwRaFHA6wbc7AgHjYkczdfwm0dOr/uUVv3Sc/F3kUNJ6KFOSoDCfNGybRCICu9DZbanhWA==}
engines: {node: '>=20.19.0'}
- '@eslint-react/var@2.3.1':
- resolution: {integrity: sha512-1rC9dbuKKMq77pPoODGT91VTA3ReivIAfdFJePEjscPSRAUhCy7QPA/yK8MPe9nTsG89IDV+hilCGKiLZW8vNQ==}
+ '@eslint-react/var@2.3.4':
+ resolution: {integrity: sha512-hT2TvusBcEfFLFGfwZRstkQv9lp+079DEba5F6Dr53g3f+gBvLNDcayb5zDgwNP5+hQRd8lY8goEOfA8PWyaJQ==}
engines: {node: '>=20.19.0'}
'@eslint/config-array@0.21.1':
@@ -3046,113 +3145,113 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.53.1':
- resolution: {integrity: sha512-bxZtughE4VNVJlL1RdoSE545kc4JxL7op57KKoi59/gwuU5rV6jLWFXXc8jwgFoT6vtj+ZjO+Z2C5nrY0Cl6wA==}
+ '@rollup/rollup-android-arm-eabi@4.53.2':
+ resolution: {integrity: sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.53.1':
- resolution: {integrity: sha512-44a1hreb02cAAfAKmZfXVercPFaDjqXCK+iKeVOlJ9ltvnO6QqsBHgKVPTu+MJHSLLeMEUbeG2qiDYgbFPU48g==}
+ '@rollup/rollup-android-arm64@4.53.2':
+ resolution: {integrity: sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.53.1':
- resolution: {integrity: sha512-usmzIgD0rf1syoOZ2WZvy8YpXK5G1V3btm3QZddoGSa6mOgfXWkkv+642bfUUldomgrbiLQGrPryb7DXLovPWQ==}
+ '@rollup/rollup-darwin-arm64@4.53.2':
+ resolution: {integrity: sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.53.1':
- resolution: {integrity: sha512-is3r/k4vig2Gt8mKtTlzzyaSQ+hd87kDxiN3uDSDwggJLUV56Umli6OoL+/YZa/KvtdrdyNfMKHzL/P4siOOmg==}
+ '@rollup/rollup-darwin-x64@4.53.2':
+ resolution: {integrity: sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.53.1':
- resolution: {integrity: sha512-QJ1ksgp/bDJkZB4daldVmHaEQkG4r8PUXitCOC2WRmRaSaHx5RwPoI3DHVfXKwDkB+Sk6auFI/+JHacTekPRSw==}
+ '@rollup/rollup-freebsd-arm64@4.53.2':
+ resolution: {integrity: sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.53.1':
- resolution: {integrity: sha512-J6ma5xgAzvqsnU6a0+jgGX/gvoGokqpkx6zY4cWizRrm0ffhHDpJKQgC8dtDb3+MqfZDIqs64REbfHDMzxLMqQ==}
+ '@rollup/rollup-freebsd-x64@4.53.2':
+ resolution: {integrity: sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.53.1':
- resolution: {integrity: sha512-JzWRR41o2U3/KMNKRuZNsDUAcAVUYhsPuMlx5RUldw0E4lvSIXFUwejtYz1HJXohUmqs/M6BBJAUBzKXZVddbg==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.53.2':
+ resolution: {integrity: sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.53.1':
- resolution: {integrity: sha512-L8kRIrnfMrEoHLHtHn+4uYA52fiLDEDyezgxZtGUTiII/yb04Krq+vk3P2Try+Vya9LeCE9ZHU8CXD6J9EhzHQ==}
+ '@rollup/rollup-linux-arm-musleabihf@4.53.2':
+ resolution: {integrity: sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.53.1':
- resolution: {integrity: sha512-ysAc0MFRV+WtQ8li8hi3EoFi7us6d1UzaS/+Dp7FYZfg3NdDljGMoVyiIp6Ucz7uhlYDBZ/zt6XI0YEZbUO11Q==}
+ '@rollup/rollup-linux-arm64-gnu@4.53.2':
+ resolution: {integrity: sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.53.1':
- resolution: {integrity: sha512-UV6l9MJpDbDZZ/fJvqNcvO1PcivGEf1AvKuTcHoLjVZVFeAMygnamCTDikCVMRnA+qJe+B3pSbgX2+lBMqgBhA==}
+ '@rollup/rollup-linux-arm64-musl@4.53.2':
+ resolution: {integrity: sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loong64-gnu@4.53.1':
- resolution: {integrity: sha512-UDUtelEprkA85g95Q+nj3Xf0M4hHa4DiJ+3P3h4BuGliY4NReYYqwlc0Y8ICLjN4+uIgCEvaygYlpf0hUj90Yg==}
+ '@rollup/rollup-linux-loong64-gnu@4.53.2':
+ resolution: {integrity: sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-ppc64-gnu@4.53.1':
- resolution: {integrity: sha512-vrRn+BYhEtNOte/zbc2wAUQReJXxEx2URfTol6OEfY2zFEUK92pkFBSXRylDM7aHi+YqEPJt9/ABYzmcrS4SgQ==}
+ '@rollup/rollup-linux-ppc64-gnu@4.53.2':
+ resolution: {integrity: sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.53.1':
- resolution: {integrity: sha512-gto/1CxHyi4A7YqZZNznQYrVlPSaodOBPKM+6xcDSCMVZN/Fzb4K+AIkNz/1yAYz9h3Ng+e2fY9H6bgawVq17w==}
+ '@rollup/rollup-linux-riscv64-gnu@4.53.2':
+ resolution: {integrity: sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-riscv64-musl@4.53.1':
- resolution: {integrity: sha512-KZ6Vx7jAw3aLNjFR8eYVcQVdFa/cvBzDNRFM3z7XhNNunWjA03eUrEwJYPk0G8V7Gs08IThFKcAPS4WY/ybIrQ==}
+ '@rollup/rollup-linux-riscv64-musl@4.53.2':
+ resolution: {integrity: sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.53.1':
- resolution: {integrity: sha512-HvEixy2s/rWNgpwyKpXJcHmE7om1M89hxBTBi9Fs6zVuLU4gOrEMQNbNsN/tBVIMbLyysz/iwNiGtMOpLAOlvA==}
+ '@rollup/rollup-linux-s390x-gnu@4.53.2':
+ resolution: {integrity: sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.53.1':
- resolution: {integrity: sha512-E/n8x2MSjAQgjj9IixO4UeEUeqXLtiA7pyoXCFYLuXpBA/t2hnbIdxHfA7kK9BFsYAoNU4st1rHYdldl8dTqGA==}
+ '@rollup/rollup-linux-x64-gnu@4.53.2':
+ resolution: {integrity: sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.53.1':
- resolution: {integrity: sha512-IhJ087PbLOQXCN6Ui/3FUkI9pWNZe/Z7rEIVOzMsOs1/HSAECCvSZ7PkIbkNqL/AZn6WbZvnoVZw/qwqYMo4/w==}
+ '@rollup/rollup-linux-x64-musl@4.53.2':
+ resolution: {integrity: sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-openharmony-arm64@4.53.1':
- resolution: {integrity: sha512-0++oPNgLJHBblreu0SFM7b3mAsBJBTY0Ksrmu9N6ZVrPiTkRgda52mWR7TKhHAsUb9noCjFvAw9l6ZO1yzaVbA==}
+ '@rollup/rollup-openharmony-arm64@4.53.2':
+ resolution: {integrity: sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==}
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.53.1':
- resolution: {integrity: sha512-VJXivz61c5uVdbmitLkDlbcTk9Or43YC2QVLRkqp86QoeFSqI81bNgjhttqhKNMKnQMWnecOCm7lZz4s+WLGpQ==}
+ '@rollup/rollup-win32-arm64-msvc@4.53.2':
+ resolution: {integrity: sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.53.1':
- resolution: {integrity: sha512-NmZPVTUOitCXUH6erJDzTQ/jotYw4CnkMDjCYRxNHVD9bNyfrGoIse684F9okwzKCV4AIHRbUkeTBc9F2OOH5Q==}
+ '@rollup/rollup-win32-ia32-msvc@4.53.2':
+ resolution: {integrity: sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-gnu@4.53.1':
- resolution: {integrity: sha512-2SNj7COIdAf6yliSpLdLG8BEsp5lgzRehgfkP0Av8zKfQFKku6JcvbobvHASPJu4f3BFxej5g+HuQPvqPhHvpQ==}
+ '@rollup/rollup-win32-x64-gnu@4.53.2':
+ resolution: {integrity: sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==}
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.53.1':
- resolution: {integrity: sha512-rLarc1Ofcs3DHtgSzFO31pZsCh8g05R2azN1q3fF+H423Co87My0R+tazOEvYVKXSLh8C4LerMK41/K7wlklcg==}
+ '@rollup/rollup-win32-x64-msvc@4.53.2':
+ resolution: {integrity: sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==}
cpu: [x64]
os: [win32]
@@ -3377,8 +3476,8 @@ packages:
'@standard-schema/utils@0.3.0':
resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==}
- '@swc/cli@0.6.0':
- resolution: {integrity: sha512-Q5FsI3Cw0fGMXhmsg7c08i4EmXCrcl+WnAxb6LYOLHw4JFFC3yzmx9LaXZ7QMbA+JZXbigU2TirI7RAfO0Qlnw==}
+ '@swc/cli@0.7.9':
+ resolution: {integrity: sha512-AFQu3ZZ9IcdClTknxbug08S9ed/q8F3aYkO5NoZ+6IjQ5UEo1s2HN1GRKNvUslYx2EoVYxd+6xGcp6C7wwtxyQ==}
engines: {node: '>= 16.14.0'}
hasBin: true
peerDependencies:
@@ -3585,159 +3684,159 @@ packages:
'@types/react-dom':
optional: true
- '@tiptap/core@3.10.4':
- resolution: {integrity: sha512-/jT0NAOvNPHn9x2TmJE2lWe81qTOE4wdRD+OEE+NJUsOtRPEvEP/CEPpT3cT9/mfPBC/U80EvVeUn7bjc2USOw==}
+ '@tiptap/core@3.10.5':
+ resolution: {integrity: sha512-JvvgWrQMP+yEhw20Q2+N62k+G8tspko7oLQxBktnN3PLlP67nKb1qOBzcrnEGsaiASjSu25myUmxY+ZpOmP+MQ==}
peerDependencies:
- '@tiptap/pm': ^3.10.4
+ '@tiptap/pm': ^3.10.5
- '@tiptap/extension-blockquote@3.10.4':
- resolution: {integrity: sha512-YCKObg614/y4YsMMU/AjZ+YrdpnCpW1Ym75540mrB3DllmImj22F3xsAAgCHyYIQvtwDM6f6ilqfx5FD8tPEmw==}
+ '@tiptap/extension-blockquote@3.10.5':
+ resolution: {integrity: sha512-vuqqnFgbcKK0pXIASDpiZV33cZho9eq3TMBpIFQ1Kcfmy1DVsfq++AvukiPY/eSa9ciVRNApPp99+v8PDg8RmA==}
peerDependencies:
- '@tiptap/core': ^3.10.4
+ '@tiptap/core': ^3.10.5
- '@tiptap/extension-bold@3.10.4':
- resolution: {integrity: sha512-fgyfmY3bTsCLOyQo8YZGX0qioJ0+DzCdlmrXx8sFkhcdCeOCr9PI0+XKyWW0MY6A8VV17tdKRgODp3n1Ru7R3A==}
+ '@tiptap/extension-bold@3.10.5':
+ resolution: {integrity: sha512-YvslsSF4oSwBXMc9tDAUfqr8VmmQ8W/TJVdfdai+gwHSkCWtaqsojUmnAFSiMIyHg5ACVPYMdoThP3aqScNrWQ==}
peerDependencies:
- '@tiptap/core': ^3.10.4
+ '@tiptap/core': ^3.10.5
- '@tiptap/extension-bubble-menu@3.10.4':
- resolution: {integrity: sha512-Ougck8UgMRziy2wq/6S39q5WqkmcMxg3K0dIOxkOQqe9oSRcwA/fWA0Gq4VZd69SMCNzAOgjwIl6znZDxBoXiA==}
+ '@tiptap/extension-bubble-menu@3.10.5':
+ resolution: {integrity: sha512-Kc71uAonSNCYoY+0oxLkxqk846ZgDYy8D28iKUp8Fc+0s6efpwbXLNVma5ooLlOKEz8vKeZNYVOKphTg/0xdZw==}
peerDependencies:
- '@tiptap/core': ^3.10.4
- '@tiptap/pm': ^3.10.4
+ '@tiptap/core': ^3.10.5
+ '@tiptap/pm': ^3.10.5
- '@tiptap/extension-bullet-list@3.10.4':
- resolution: {integrity: sha512-7Di4QLW4Ri5xDD4sYNXI1gmM8wIALRlIBP8fOL7veBTenT1CVqawVl/wZuPLnoXsj3j8wtzop3fwFiyv8jEnAA==}
+ '@tiptap/extension-bullet-list@3.10.5':
+ resolution: {integrity: sha512-ohysgT2p17h8ARyzB7z0nX/Pk7Lyilr/ruT0n5JXNO4pbgw9r6WYFyyiNJCkeFIjJEu7a4C3HBPH/r1EhDu6YA==}
peerDependencies:
- '@tiptap/extension-list': ^3.10.4
+ '@tiptap/extension-list': ^3.10.5
- '@tiptap/extension-code-block@3.10.4':
- resolution: {integrity: sha512-dkqeZRGhwDobKfrZmRXojU/8s11gaMj+Bb5oUjhzmnWoS2Y3UwesdrAUcBwZd+fgV7/hAud5rt7oX4hJqCjgtw==}
+ '@tiptap/extension-code-block@3.10.5':
+ resolution: {integrity: sha512-6YEyASCT7UhzkWDfJ3Snajgy2XzYV7lPZxx9En2G9F/dqorGw1Kr45Gv3T6r46mJHXayGyb6OAN9AamVlOyk/Q==}
peerDependencies:
- '@tiptap/core': ^3.10.4
- '@tiptap/pm': ^3.10.4
+ '@tiptap/core': ^3.10.5
+ '@tiptap/pm': ^3.10.5
- '@tiptap/extension-code@3.10.4':
- resolution: {integrity: sha512-33L3HlD2fb+LqwUKndbwf2IRiGR8P3EzkcDwpHysE0C5VY13Fb0YkeIXV8CyWShrzIYCOK8btjIeNf0T0HSphg==}
+ '@tiptap/extension-code@3.10.5':
+ resolution: {integrity: sha512-zt7w+AQ5El5rERY8QsiDlpCmaw951hLORUeI6p7HjgnA6KQoBJXxz750W8bfqEYnLFJ9uOXQka/Ds37/IyijGA==}
peerDependencies:
- '@tiptap/core': ^3.10.4
+ '@tiptap/core': ^3.10.5
- '@tiptap/extension-document@3.10.4':
- resolution: {integrity: sha512-w1ZNDyafoq+J6cmerVisDTiD9imKfVpvNqxz5D8PvVo1vvNqtLxzMbkGjGedewQIZzwxAPu46czyVAk7Jxp7Cg==}
+ '@tiptap/extension-document@3.10.5':
+ resolution: {integrity: sha512-5Q/BSc9BubVSQFqPvn6fJ/0KFzt6FgyEIeXAEGKhvEwvFJlHRKS+afypi0DWLVFBQ7lona9vJmhEX18XMIHMrw==}
peerDependencies:
- '@tiptap/core': ^3.10.4
+ '@tiptap/core': ^3.10.5
- '@tiptap/extension-dropcursor@3.10.4':
- resolution: {integrity: sha512-9llL60Gl+ExEuSPlwh4/kd3ivMoKnbXOC1ac5gZfbxz4wY3me5Ql2kqZrtn7ibeZcocjA2DG9febNBgY0VVQ4g==}
+ '@tiptap/extension-dropcursor@3.10.5':
+ resolution: {integrity: sha512-39VkdbWwD2yDVYDeeQKfGINouhViK4n465CDR5etFfBNG3lj28dHDvFmZn81SfwcYlpUOVS7GdczNVLHVjqrfA==}
peerDependencies:
- '@tiptap/extensions': ^3.10.4
+ '@tiptap/extensions': ^3.10.5
- '@tiptap/extension-floating-menu@3.10.4':
- resolution: {integrity: sha512-bmSolrXs0xeOwJzSaclayR8sTnsdsA1gNM52KpsUIM6uJoklX6OVsPcgUv6qPGNsUaDI0XVn5xONeXcuzaFVHg==}
+ '@tiptap/extension-floating-menu@3.10.5':
+ resolution: {integrity: sha512-N9qxP37s+gpOCBBrwoVaK1e61wuYY/KnEkhhodmYxMS/zuRHQ79ics7i1B18CJFfcT6+USHB6HzNxLLrlmpt4w==}
peerDependencies:
'@floating-ui/dom': ^1.0.0
- '@tiptap/core': ^3.10.4
- '@tiptap/pm': ^3.10.4
+ '@tiptap/core': ^3.10.5
+ '@tiptap/pm': ^3.10.5
- '@tiptap/extension-gapcursor@3.10.4':
- resolution: {integrity: sha512-IS9aFIpU6fODfya/q7lDjJRRpmpF1aqkuqjltlBXa2tzg2rdJNNJWiySamijj12DG2D6K2r/Kwt7FxCjsbQl2w==}
+ '@tiptap/extension-gapcursor@3.10.5':
+ resolution: {integrity: sha512-/C13mvMGmQ3/8T9jg5KiT1/kMM9rFOXzsI2x0KO6IImTMBke6v259qEJyUCfG+Q90ttf95Muymp4I5FbFqJPww==}
peerDependencies:
- '@tiptap/extensions': ^3.10.4
+ '@tiptap/extensions': ^3.10.5
- '@tiptap/extension-hard-break@3.10.4':
- resolution: {integrity: sha512-2fTSe5F0NuWTOSaShcjA871GODVec4ieKK9RHpHmrl98D0FJ6rJKE/6hUe+RFizW8S0j//fjnTTkcSu+YrNcMg==}
+ '@tiptap/extension-hard-break@3.10.5':
+ resolution: {integrity: sha512-qYouFEvxmWQ5258IHt0D2AmI66gpY5b3zCTgc+EMv/Vj+O2ViJ0/3Sq/fwxqmGRAM5o3R/aEr5Ctk2M/qUjz1A==}
peerDependencies:
- '@tiptap/core': ^3.10.4
+ '@tiptap/core': ^3.10.5
- '@tiptap/extension-heading@3.10.4':
- resolution: {integrity: sha512-DT3kuQbVquZccM8s7H9FFSYtafb/LmmhfNzCLFxBHHHdZQNSWs1nExxlSiCX7NkQSkcnUeqHfEsbOmREnbqUqg==}
+ '@tiptap/extension-heading@3.10.5':
+ resolution: {integrity: sha512-sJBdtoCUcB9xmiAhg+OztrfQi1FpB9DUQO2IpbedYPixextK3cX8ntQ4NJelT7kBsdOrW3jmWccbjzvK0wZ7Eg==}
peerDependencies:
- '@tiptap/core': ^3.10.4
+ '@tiptap/core': ^3.10.5
- '@tiptap/extension-horizontal-rule@3.10.4':
- resolution: {integrity: sha512-AaO+teMVWHec3XRaC5Jj5iZzMjas+bx+MHPfXTw0KIcn+4wlHV/0bkcWH31E+fbSswH4MnVFET6RmTkzXpEGhw==}
+ '@tiptap/extension-horizontal-rule@3.10.5':
+ resolution: {integrity: sha512-okzBJVm68QMb9mwYM74az5bzHuXV6NSuoSb32dRwt3zx8zVdNUK0z585SxlQGDJ3ksB+1UR5tGlcst6sT05esw==}
peerDependencies:
- '@tiptap/core': ^3.10.4
- '@tiptap/pm': ^3.10.4
+ '@tiptap/core': ^3.10.5
+ '@tiptap/pm': ^3.10.5
- '@tiptap/extension-italic@3.10.4':
- resolution: {integrity: sha512-SlvKzL/oUxZ0s+1idv4ZdKmr4tS6m8jbXZYVZlzlRHxSfmt85SqUa2hMxmeNXySrHxURQNP6F+KyI6Z26ddFzA==}
+ '@tiptap/extension-italic@3.10.5':
+ resolution: {integrity: sha512-f4RI0KGmtkZgVQlthrSm0dEIwx6Vw1ppbQevJecaaXLQTBoS9jAhqRrZbWkqWnof2fTyO2KK23wAMHAjXOKvmg==}
peerDependencies:
- '@tiptap/core': ^3.10.4
+ '@tiptap/core': ^3.10.5
- '@tiptap/extension-link@3.10.4':
- resolution: {integrity: sha512-ccwROcKdqFnDDSKw1hsp06kDZCjjjnThIDg7Mku9RnXAYcJw7nmjCkIdzPYjggpzlpxZPsfhmX4No1sG3G3J9g==}
+ '@tiptap/extension-link@3.10.5':
+ resolution: {integrity: sha512-6lb8SZSi2+N37/BzkOwFaHHSbloZ3CG5OT0J+h9MULdH0/X8d8fvK/Kxtfa0NgxYWP446u62HJkjvAk234k/Jw==}
peerDependencies:
- '@tiptap/core': ^3.10.4
- '@tiptap/pm': ^3.10.4
+ '@tiptap/core': ^3.10.5
+ '@tiptap/pm': ^3.10.5
- '@tiptap/extension-list-item@3.10.4':
- resolution: {integrity: sha512-Q2sQvo5NJcEMEI+IVeAlBM4ArBCJBUhH0Gyex6rJPxwiZYVK2VMezLHCQXNVoQMXCDEZuB37E54U/QapDVlBEg==}
+ '@tiptap/extension-list-item@3.10.5':
+ resolution: {integrity: sha512-BklqZIig3c/PiQoivmqXd25lqyC8VbRLMMDkAeJlOljG7oAielYIbFV76lnaoiGsEt4sK7z75qpZ/E6sbXDQMw==}
peerDependencies:
- '@tiptap/extension-list': ^3.10.4
+ '@tiptap/extension-list': ^3.10.5
- '@tiptap/extension-list-keymap@3.10.4':
- resolution: {integrity: sha512-t8PYkgp5avFRZaeOxO+UMGDZPnUrLzLaTVbmrMobO1UVnVEmsT6PlTt0klKVziE12OzDOMCYHwpfZwVnCIBxPw==}
+ '@tiptap/extension-list-keymap@3.10.5':
+ resolution: {integrity: sha512-FdGwnULYnuH+F+2u9OElBTky2kRA6S9P9w2Pi4i0FHuB9rMb10R5rIjwunjrkYvAQfnsTEdwJo8YWaPvz+TJIA==}
peerDependencies:
- '@tiptap/extension-list': ^3.10.4
+ '@tiptap/extension-list': ^3.10.5
- '@tiptap/extension-list@3.10.4':
- resolution: {integrity: sha512-4e4vX0co9qDZ9TFpm/zDzQAFrX43XUGeNvQMJzfHz+QINjUj4fKUPTQnTfYp8ce3w0VgFnHgQ8lriE9tVxElbA==}
+ '@tiptap/extension-list@3.10.5':
+ resolution: {integrity: sha512-0aW7gIiho0DpJyG0bT/RL0ZofH89Og0sIGgJG4SQqzgsba1EYfcPlaauugA473G8SnN5FslG5D0k9ZC+TYXNpw==}
peerDependencies:
- '@tiptap/core': ^3.10.4
- '@tiptap/pm': ^3.10.4
+ '@tiptap/core': ^3.10.5
+ '@tiptap/pm': ^3.10.5
- '@tiptap/extension-ordered-list@3.10.4':
- resolution: {integrity: sha512-qdOGKsUMniyfbglJZMSDCPqwlbk5h0jSHfrLAz/dYdhLUAK6NgBXxNdIeZhfdTHbkog/7lcajYU0zzpsuoMCfA==}
+ '@tiptap/extension-ordered-list@3.10.5':
+ resolution: {integrity: sha512-sqhA6IzcS/mlcABEUeYX0ZD+jtb5ga01ATz+b5xYAqOQlB7xHRQ5TdZTB/rKwJxaKxdevFXCenAwJA3d1B5O1g==}
peerDependencies:
- '@tiptap/extension-list': ^3.10.4
+ '@tiptap/extension-list': ^3.10.5
- '@tiptap/extension-paragraph@3.10.4':
- resolution: {integrity: sha512-N3Y54hUcwMdrIWIxSEtrGLJRCtRe2FpbIVY3eIsEf/FysLZKgtLLifQg4Xf7oWSMP5Rxkr8sCx7ajG1skvg36w==}
+ '@tiptap/extension-paragraph@3.10.5':
+ resolution: {integrity: sha512-YCXFJiWC2w3Q62Q+nAf0SYWNysbQYpBA+fNyczaz+9vJYUBPcuu1WB0kdIGg/07RsUsg0U0txBnx+GuDuWXh2A==}
peerDependencies:
- '@tiptap/core': ^3.10.4
+ '@tiptap/core': ^3.10.5
- '@tiptap/extension-strike@3.10.4':
- resolution: {integrity: sha512-Y+M2TrlQKAIbP4XR8TQ1ZUpfnEWVKCFvVvh740MTgJRiAtLPdQz37XeT0pIWGkY0XRyFRssKYgiozJGuxU2TpQ==}
+ '@tiptap/extension-strike@3.10.5':
+ resolution: {integrity: sha512-tyJs3ArYGaYi/cy79NWKfkb7nIcWocFmou3JW229mZ+lFH1jNy9jGnIITN8BG8aizC6QkXBaeEy8+uBUJ+5Tkw==}
peerDependencies:
- '@tiptap/core': ^3.10.4
+ '@tiptap/core': ^3.10.5
- '@tiptap/extension-text-align@3.10.4':
- resolution: {integrity: sha512-GR8+50U4usFGofk/tpCMQcilcG4P9cWCOCW1+0PGAQrc9Q2hnzmzPDDQCmCaWEZ/LeQaOeIms+hRCbLO5uwf2g==}
+ '@tiptap/extension-text-align@3.10.5':
+ resolution: {integrity: sha512-TX888f1SPnAFYxPF7HGjU55RopaTZwdIviqVF+/jfUc59KXWwXbGZph3HexHl1rKVYiVrCazOr6eqx7LBkXtyQ==}
peerDependencies:
- '@tiptap/core': ^3.10.4
+ '@tiptap/core': ^3.10.5
- '@tiptap/extension-text@3.10.4':
- resolution: {integrity: sha512-5HCdDPzyjBljfSitP5AEScAiovt3m8OyMBmqOW64ZnJwBkZW7BUh/DpLYpYireLspu76kDNNhJ4/2Ca+l795dw==}
+ '@tiptap/extension-text@3.10.5':
+ resolution: {integrity: sha512-anLb/bJ9TfjVjOAdqQGQTDYsvI5Tgid1RgRokpK6vOxVhukBW7q8RnIsyWYj/uV6UefS6YtVOl5H9DAnpCVfvg==}
peerDependencies:
- '@tiptap/core': ^3.10.4
+ '@tiptap/core': ^3.10.5
- '@tiptap/extension-underline@3.10.4':
- resolution: {integrity: sha512-FlDxgTr8NSPOYJFB5jD+WzLUn1fGhZumm8q9fvYJqYvZ62pRBacsU4pilHbG+Wf8DFl+4zjmNq4yWmTnqSCwCQ==}
+ '@tiptap/extension-underline@3.10.5':
+ resolution: {integrity: sha512-2SUQTsD5CYwTAdEFIifGHW/N363B9x5qxdzz2wrzn1mbJB4yG6QKyYY0uAGHmSOeC8iHS8scWDFiU09NlAhoew==}
peerDependencies:
- '@tiptap/core': ^3.10.4
+ '@tiptap/core': ^3.10.5
- '@tiptap/extensions@3.10.4':
- resolution: {integrity: sha512-DO/72X2AVhuVbcghBRvHNwb9tHmKQvERax1XKX9D9AuJyL/s8x9F0CXbbuBjdSkEeIFrFxQMLxH0NBak3upW4A==}
+ '@tiptap/extensions@3.10.5':
+ resolution: {integrity: sha512-odZ9tXRBOj1PdpoMILBZ1DoTgXb+30jR0HMLtML5E8JqE3sDRSh1PgUAVXKmzRX/IytRabiKnhP4L8ZwrJAFaA==}
peerDependencies:
- '@tiptap/core': ^3.10.4
- '@tiptap/pm': ^3.10.4
+ '@tiptap/core': ^3.10.5
+ '@tiptap/pm': ^3.10.5
- '@tiptap/pm@3.10.4':
- resolution: {integrity: sha512-tNGAXSLq5l/G72EPTBUNRHkRmiQoU2ODpIvqXZWFjymaW+8x1nzU3oZwinfvCdwNPrsZJv4x7pfX5EA6pbnW8w==}
+ '@tiptap/pm@3.10.5':
+ resolution: {integrity: sha512-yILFuY8nyZbfbJQh1aZfwT/E4o5dHrKXnWsGDiljdr+6NryaU+hcmlwlbz6Q+0550Ik0B2oQoRxAnhzz7qH3Hg==}
- '@tiptap/react@3.10.4':
- resolution: {integrity: sha512-F/5mGXgd9Cer9QZibE4XJ+ooCDqfIk1kGLvsmrKLdnIVWWvZBDuqRD7jqIzKgIWLKc8BTjbi2gqp7cu8v1USzA==}
+ '@tiptap/react@3.10.5':
+ resolution: {integrity: sha512-HP5qn4tMNlAGieTO4ChzbJ/QrGZPrEvF31vRqDQYMre0aSwIHsClQ0fOhOs2YM2wYQgX5dKwymoE7n+9MxJ6Pw==}
peerDependencies:
- '@tiptap/core': ^3.10.4
- '@tiptap/pm': ^3.10.4
+ '@tiptap/core': ^3.10.5
+ '@tiptap/pm': ^3.10.5
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
'@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
- '@tiptap/starter-kit@3.10.4':
- resolution: {integrity: sha512-4Re887ExOwVz51UsBES/qTpLmiUiFKD/KOtzLMUDz+08Ikc5XLD47H9GaqYrf1yCgSXHCCfpf7FxGk6BwKerfQ==}
+ '@tiptap/starter-kit@3.10.5':
+ resolution: {integrity: sha512-CdFlqKGboxKgFHLqLkvtUtvavfxXpWKq7o5i9P9xntaooFq1nucB6ME/axJgua6lJamltrQ90ddS1/pMwAmfrg==}
'@tokenizer/inflate@0.2.7':
resolution: {integrity: sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==}
@@ -3863,8 +3962,8 @@ packages:
'@types/react@19.0.10':
resolution: {integrity: sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==}
- '@types/react@19.2.2':
- resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==}
+ '@types/react@19.2.3':
+ resolution: {integrity: sha512-k5dJVszUiNr1DSe8Cs+knKR6IrqhqdhpUwzqhkS8ecQTSf3THNtbfIp/umqHMpX2bv+9dkx3fwDv/86LcSfvSg==}
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
@@ -3881,63 +3980,63 @@ packages:
'@types/webpack@5.28.5':
resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==}
- '@typescript-eslint/eslint-plugin@8.46.3':
- resolution: {integrity: sha512-sbaQ27XBUopBkRiuY/P9sWGOWUW4rl8fDoHIUmLpZd8uldsTyB4/Zg6bWTegPoTLnKj9Hqgn3QD6cjPNB32Odw==}
+ '@typescript-eslint/eslint-plugin@8.46.4':
+ resolution: {integrity: sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.46.3
+ '@typescript-eslint/parser': ^8.46.4
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/parser@8.46.3':
- resolution: {integrity: sha512-6m1I5RmHBGTnUGS113G04DMu3CpSdxCAU/UvtjNWL4Nuf3MW9tQhiJqRlHzChIkhy6kZSAQmc+I1bcGjE3yNKg==}
+ '@typescript-eslint/parser@8.46.4':
+ resolution: {integrity: sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/project-service@8.46.3':
- resolution: {integrity: sha512-Fz8yFXsp2wDFeUElO88S9n4w1I4CWDTXDqDr9gYvZgUpwXQqmZBr9+NTTql5R3J7+hrJZPdpiWaB9VNhAKYLuQ==}
+ '@typescript-eslint/project-service@8.46.4':
+ resolution: {integrity: sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/scope-manager@8.46.3':
- resolution: {integrity: sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg==}
+ '@typescript-eslint/scope-manager@8.46.4':
+ resolution: {integrity: sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.46.3':
- resolution: {integrity: sha512-GLupljMniHNIROP0zE7nCcybptolcH8QZfXOpCfhQDAdwJ/ZTlcaBOYebSOZotpti/3HrHSw7D3PZm75gYFsOA==}
+ '@typescript-eslint/tsconfig-utils@8.46.4':
+ resolution: {integrity: sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/type-utils@8.46.3':
- resolution: {integrity: sha512-ZPCADbr+qfz3aiTTYNNkCbUt+cjNwI/5McyANNrFBpVxPt7GqpEYz5ZfdwuFyGUnJ9FdDXbGODUu6iRCI6XRXw==}
+ '@typescript-eslint/type-utils@8.46.4':
+ resolution: {integrity: sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/types@8.46.3':
- resolution: {integrity: sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA==}
+ '@typescript-eslint/types@8.46.4':
+ resolution: {integrity: sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.46.3':
- resolution: {integrity: sha512-f/NvtRjOm80BtNM5OQtlaBdM5BRFUv7gf381j9wygDNL+qOYSNOgtQ/DCndiYi80iIOv76QqaTmp4fa9hwI0OA==}
+ '@typescript-eslint/typescript-estree@8.46.4':
+ resolution: {integrity: sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/utils@8.46.3':
- resolution: {integrity: sha512-VXw7qmdkucEx9WkmR3ld/u6VhRyKeiF1uxWwCy/iuNfokjJ7VhsgLSOTjsol8BunSw190zABzpwdNsze2Kpo4g==}
+ '@typescript-eslint/utils@8.46.4':
+ resolution: {integrity: sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/visitor-keys@8.46.3':
- resolution: {integrity: sha512-uk574k8IU0rOF/AjniX8qbLSGURJVUCeM5e4MIMKBFFi8weeiLrG1fyQejyLXQpRZbU/1BuQasleV/RfHC3hHg==}
+ '@typescript-eslint/visitor-keys@8.46.4':
+ resolution: {integrity: sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@ungap/structured-clone@1.3.0':
@@ -4263,6 +4362,9 @@ packages:
react-native-b4a:
optional: true
+ babel-plugin-react-compiler@1.0.0:
+ resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==}
+
bail@2.0.2:
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
@@ -4284,8 +4386,8 @@ packages:
resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==}
engines: {node: ^4.5.0 || >= 5.9}
- baseline-browser-mapping@2.8.25:
- resolution: {integrity: sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==}
+ baseline-browser-mapping@2.8.26:
+ resolution: {integrity: sha512-73lC1ugzwoaWCLJ1LvOgrR5xsMLTqSKIEoMHVtL9E/HNk0PXtTM76ZIm84856/SF7Nv8mPZxKoBsgpm0tR1u1Q==}
hasBin: true
bidi-js@1.0.3:
@@ -4330,8 +4432,8 @@ packages:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
- browserslist@4.27.0:
- resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==}
+ browserslist@4.28.0:
+ resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
@@ -4388,8 +4490,8 @@ packages:
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
- chai@6.2.0:
- resolution: {integrity: sha512-aUTnJc/JipRzJrNADXVvpVqi6CO0dn3nx4EVPxijri+fj3LUUDyZQOgVeW54Ob3Y1Xh9Iz8f+CgaCl8v0mn9bA==}
+ chai@6.2.1:
+ resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==}
engines: {node: '>=18'}
chalk@4.1.2:
@@ -4850,8 +4952,8 @@ packages:
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
- electron-to-chromium@1.5.249:
- resolution: {integrity: sha512-5vcfL3BBe++qZ5kuFhD/p8WOM1N9m3nwvJPULJx+4xf2usSlZFJ0qoNYO2fOX4hi3ocuDcmDobtA+5SFr4OmBg==}
+ electron-to-chromium@1.5.250:
+ resolution: {integrity: sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==}
emoji-regex@10.6.0:
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
@@ -5000,15 +5102,15 @@ packages:
eslint-config-prettier:
optional: true
- eslint-plugin-react-dom@2.3.1:
- resolution: {integrity: sha512-Zuvb8iDYRbi8s7mYzvjHKD+i+loHjF6TKJiLGYM/t9F42OWU7V7b4sjIM7pXueukl0o8BSJXDVrQ+9sHOOmxBA==}
+ eslint-plugin-react-dom@2.3.4:
+ resolution: {integrity: sha512-xAetOWwrfYnqU0Vd6LjEQi1paAwU7Tgoa+jHUb7QCKxdILDV618yPrMigWpY+438cg6oXTYE/awFI/Rv+dOFCw==}
engines: {node: '>=20.19.0'}
peerDependencies:
eslint: ^9.38.0
typescript: ^5.9.3
- eslint-plugin-react-hooks-extra@2.3.1:
- resolution: {integrity: sha512-2t4xQYhUEgPNq1SDQJEXuH3doT+h5spVmerX4rPnBFx0zG2sYfaJV1Gz6z40pI1L3CtBrZag5nFJ44AF/BEg0w==}
+ eslint-plugin-react-hooks-extra@2.3.4:
+ resolution: {integrity: sha512-widwgbMP3cC3sjmHidryg2McYqnzoIWcpsQ4JYnaXmRMMTem+Sp7a3+fkWvAUfWQBQIbigPT9O2+VhlvC+xlPg==}
engines: {node: '>=20.0.0'}
peerDependencies:
eslint: ^9.38.0
@@ -5020,22 +5122,22 @@ packages:
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
- eslint-plugin-react-naming-convention@2.3.1:
- resolution: {integrity: sha512-Ghh1o++3XDk3zNKF7DXy3kIN1kJYFiH7wvl4aJF5m9LytQGFrJKTA5kygAaWgR7iL8o4mjk5Ty6Be3OKskpHwA==}
+ eslint-plugin-react-naming-convention@2.3.4:
+ resolution: {integrity: sha512-KP6d3WxiLmTnm245VK1lLI4Pzu/tkJLNOsmAetDm0kPfamD71msZMerp4VYFsFtqk0km9rbRKE7Cdd27tL43Ow==}
engines: {node: '>=20.19.0'}
peerDependencies:
eslint: ^9.38.0
typescript: ^5.9.3
- eslint-plugin-react-web-api@2.3.1:
- resolution: {integrity: sha512-rb7AYR9SCJkCDkFdqnD6JHNLKF1o29o6tZLSaPdzA1Ssxh7/VKgJ8GpTrgl3Rv+Gnyn+w+3w4XE14d7T1Db9nA==}
+ eslint-plugin-react-web-api@2.3.4:
+ resolution: {integrity: sha512-NQMVDVIOiU+vJ98hkrIZeNdIwmO54UOjB8EfiHkgDWk69QBJrBtrn5AguFBuUlBUdZR/9vp4yKdQFtzBbRcDTw==}
engines: {node: '>=20.19.0'}
peerDependencies:
eslint: ^9.38.0
typescript: ^5.9.3
- eslint-plugin-react-x@2.3.1:
- resolution: {integrity: sha512-7zfi297NfkoEtqaz2W953gdK4J9nJD5okVhJVxgrcrP+9FVertkGqpbWtMZLpQuWJ216FncY8P6t1U+af8KNOA==}
+ eslint-plugin-react-x@2.3.4:
+ resolution: {integrity: sha512-6rW/CALxGCO9M2wuIUMNKuepSf5uW+Sg+AaQtLpsfs+B6fmDVHFrxIgg9wYk2aRrI6MMQcjDUMEYPUX9eOg2wQ==}
engines: {node: '>=20.19.0'}
peerDependencies:
eslint: ^9.38.0
@@ -5155,8 +5257,8 @@ packages:
resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==}
engines: {node: '>=12.0.0'}
- exsolve@1.0.7:
- resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
+ exsolve@1.0.8:
+ resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==}
ext-list@2.2.2:
resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==}
@@ -5310,8 +5412,8 @@ packages:
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
- fumadocs-core@16.0.8:
- resolution: {integrity: sha512-nWWwEfcHxn4tmx/knvDlbRUUkbGc6ChNEpLymV5cmQCSAazG0FkgksF5aOxoDq1wPG0THoEMBVD320spe4QWHw==}
+ fumadocs-core@16.0.10:
+ resolution: {integrity: sha512-6DQLpJ7ETvSuGZ4TnK6z1wGwnbqht0lK8BcKc3ergWjc8u2XTsPZP3i3tMgOUsKCG0cr9s8fLYz3FGEMOkDuFw==}
peerDependencies:
'@mixedbread/sdk': ^0.19.0
'@orama/core': 1.x.x
@@ -5348,8 +5450,8 @@ packages:
waku:
optional: true
- fumadocs-mdx@13.0.5:
- resolution: {integrity: sha512-ERhPxQzoTwEdtuel5dN5OmUItOhGGXTLR1uCjiGPABYeVkc57vAexyTRQSYZMxGlcfjkJaYqt3qY1p5j7i4g7A==}
+ fumadocs-mdx@13.0.7:
+ resolution: {integrity: sha512-sbGbqOgfPVZdDWCiSgLXy7gBbu4hXHH+r53Faq6oreXI5QMbKp8/xfEiuqwEldUqD1em1fGvwfhpYrR264Q72Q==}
hasBin: true
peerDependencies:
'@fumadocs/mdx-remote': ^1.4.0
@@ -5367,8 +5469,8 @@ packages:
vite:
optional: true
- fumadocs-ui@16.0.8:
- resolution: {integrity: sha512-NyqAiYJnseXYy6ah/rI67Luy5mssSOwOMv03Xy2SHaDrH588Xjtbx84DwnaJXDlu2L/evHMJ+Bvt5/WIdBQbWQ==}
+ fumadocs-ui@16.0.10:
+ resolution: {integrity: sha512-XqQU1vFcbl7i3QiRKqRAWGDAmkKTwSSJSSKOoBNk0HGvk1s4wmNJiEH66YwGJFWrvWwGrrSleyuvVS9i3q3seg==}
peerDependencies:
'@types/react': '*'
next: 16.x.x
@@ -5547,8 +5649,8 @@ packages:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
- hono@4.10.4:
- resolution: {integrity: sha512-YG/fo7zlU3KwrBL5vDpWKisLYiM+nVstBQqfr7gCPbSYURnNEP9BDxEMz8KfsDR9JX0lJWDRNc6nXX31v7ZEyg==}
+ hono@4.10.5:
+ resolution: {integrity: sha512-h/MXuTkoAK8NG1EfDp0jI1YLf6yGdDnfkebRO2pwEh5+hE3RAJFXkCsnD0vamSiARK4ZrB6MY+o3E/hCnOyHrQ==}
engines: {node: '>=16.9.0'}
html-encoding-sniffer@4.0.0:
@@ -6430,8 +6532,8 @@ packages:
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
- next-intl@4.5.0:
- resolution: {integrity: sha512-XglGmbs38smaN/QedFVzsypdI4l5tRMpjdU3UL2TtZ3d412oLmmM6enSnHSn0/P59b0ksIp+HlgoLjvHREj1EQ==}
+ next-intl@4.5.1:
+ resolution: {integrity: sha512-irtCL71cYJrnleHFpELhlYqb7LIqNiXBssijNVjxUU7hShUFuLYDvYFMbQA0Ocy1WTwSasgmysUHo/bWuKXpRA==}
peerDependencies:
next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0
@@ -7003,8 +7105,8 @@ packages:
prosemirror-state: ^1.4.2
prosemirror-view: ^1.33.8
- prosemirror-transform@1.10.4:
- resolution: {integrity: sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==}
+ prosemirror-transform@1.10.5:
+ resolution: {integrity: sha512-RPDQCxIDhIBb1o36xxwsaeAvivO8VLJcgBtzmOwQ64bMtsVFh5SSuJ6dWSxO1UsHTiTXPCgQm3PDJt7p6IOLbw==}
prosemirror-view@1.41.3:
resolution: {integrity: sha512-SqMiYMUQNNBP9kfPhLO8WXEk/fon47vc52FQsUiJzTBuyjKgEcoAwMyF04eQ4WZ2ArMn7+ReypYL60aKngbACQ==}
@@ -7295,8 +7397,8 @@ packages:
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- rollup@4.53.1:
- resolution: {integrity: sha512-n2I0V0lN3E9cxxMqBCT3opWOiQBzRN7UG60z/WDKqdX2zHUS/39lezBcsckZFsV6fUTSnfqI7kHf60jDAPGKug==}
+ rollup@4.53.2:
+ resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -7882,38 +7984,38 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
- turbo-darwin-64@2.6.0:
- resolution: {integrity: sha512-6vHnLAubHj8Ib45Knu+oY0ZVCLO7WcibzAvt5b1E72YHqAs4y8meMAGMZM0jLqWPh/9maHDc16/qBCMxtW4pXg==}
+ turbo-darwin-64@2.6.1:
+ resolution: {integrity: sha512-Dm0HwhyZF4J0uLqkhUyCVJvKM9Rw7M03v3J9A7drHDQW0qAbIGBrUijQ8g4Q9Cciw/BXRRd8Uzkc3oue+qn+ZQ==}
cpu: [x64]
os: [darwin]
- turbo-darwin-arm64@2.6.0:
- resolution: {integrity: sha512-IU+gWMEXNBw8H0pxvE7nPEa5p6yahxbN8g/Q4Bf0AHymsAFqsScgV0peeNbWybdmY9jk1LPbALOsF2kY1I7ZiQ==}
+ turbo-darwin-arm64@2.6.1:
+ resolution: {integrity: sha512-U0PIPTPyxdLsrC3jN7jaJUwgzX5sVUBsKLO7+6AL+OASaa1NbT1pPdiZoTkblBAALLP76FM0LlnsVQOnmjYhyw==}
cpu: [arm64]
os: [darwin]
- turbo-linux-64@2.6.0:
- resolution: {integrity: sha512-CKoiJ2ZFJLCDsWdRlZg+ew1BkGn8iCEGdePhISVpjsGwkJwSVhVu49z2zKdBeL1IhcSKS2YALwp9ellNZANJxw==}
+ turbo-linux-64@2.6.1:
+ resolution: {integrity: sha512-eM1uLWgzv89bxlK29qwQEr9xYWBhmO/EGiH22UGfq+uXr+QW1OvNKKMogSN65Ry8lElMH4LZh0aX2DEc7eC0Mw==}
cpu: [x64]
os: [linux]
- turbo-linux-arm64@2.6.0:
- resolution: {integrity: sha512-WroVCdCvJbrhNxNdw7XB7wHAfPPJPV+IXY+ZKNed+9VdfBu/2mQNfKnvqTuFTH7n+Pdpv8to9qwhXRTJe26upg==}
+ turbo-linux-arm64@2.6.1:
+ resolution: {integrity: sha512-MFFh7AxAQAycXKuZDrbeutfWM5Ep0CEZ9u7zs4Hn2FvOViTCzIfEhmuJou3/a5+q5VX1zTxQrKGy+4Lf5cdpsA==}
cpu: [arm64]
os: [linux]
- turbo-windows-64@2.6.0:
- resolution: {integrity: sha512-7pZo5aGQPR+A7RMtWCZHusarJ6y15LQ+o3jOmpMxTic/W6Bad+jSeqo07TWNIseIWjCVzrSv27+0odiYRYtQdA==}
+ turbo-windows-64@2.6.1:
+ resolution: {integrity: sha512-buq7/VAN7KOjMYi4tSZT5m+jpqyhbRU2EUTTvp6V0Ii8dAkY2tAAjQN1q5q2ByflYWKecbQNTqxmVploE0LVwQ==}
cpu: [x64]
os: [win32]
- turbo-windows-arm64@2.6.0:
- resolution: {integrity: sha512-1Ty+NwIksQY7AtFUCPrTpcKQE7zmd/f7aRjdT+qkqGFQjIjFYctEtN7qo4vpQPBgCfS1U3ka83A2u/9CfJQ3wQ==}
+ turbo-windows-arm64@2.6.1:
+ resolution: {integrity: sha512-7w+AD5vJp3R+FB0YOj1YJcNcOOvBior7bcHTodqp90S3x3bLgpr7tE6xOea1e8JkP7GK6ciKVUpQvV7psiwU5Q==}
cpu: [arm64]
os: [win32]
- turbo@2.6.0:
- resolution: {integrity: sha512-kC5VJqOXo50k0/0jnJDDjibLAXalqT9j7PQ56so0pN+81VR4Fwb2QgIE9dTzT3phqOTQuEXkPh3sCpnv5Isz2g==}
+ turbo@2.6.1:
+ resolution: {integrity: sha512-qBwXXuDT3rA53kbNafGbT5r++BrhRgx3sAo0cHoDAeG9g1ItTmUMgltz3Hy7Hazy1ODqNpR+C7QwqL6DYB52yA==}
hasBin: true
tw-animate-css@1.4.0:
@@ -7947,8 +8049,8 @@ packages:
resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
engines: {node: '>= 0.4'}
- typescript-eslint@8.46.3:
- resolution: {integrity: sha512-bAfgMavTuGo+8n6/QQDVQz4tZ4f7Soqg53RbrlZQEoAltYop/XR4RAts/I0BrO3TTClTSTFJ0wYbla+P8cEWJA==}
+ typescript-eslint@8.46.4:
+ resolution: {integrity: sha512-KALyxkpYV5Ix7UhvjTwJXZv76VWsHG+NjNlt/z+a17SOQSiOcBdUXdbJdyXi7RPxrBFECtFOiPwUJQusJuCqrg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -8044,8 +8146,8 @@ packages:
peerDependencies:
react: '*'
- use-intl@4.5.0:
- resolution: {integrity: sha512-H0w/sWilzbd1y0+fve2o6EnJ8B7bDwpI+pd1o/zjO717FVSi1clYe6dCmIyPc8NEKOS9BGm1IK9ipSY7OZAqZg==}
+ use-intl@4.5.1:
+ resolution: {integrity: sha512-a9wVAuIofJuoD3wQazNuCr2B04rStdgUzILHNXHuogyOx2h0RabnfrRfFlGJnmrZDwN6JtPqD2aHLh4Naa8M0Q==}
peerDependencies:
react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0
@@ -8808,9 +8910,9 @@ snapshots:
'@babel/helper-compilation-targets': 7.27.2
'@babel/helper-module-transforms': 7.28.3(@babel/core@7.26.10)
'@babel/helpers': 7.28.4
- '@babel/parser': 7.28.5
+ '@babel/parser': 7.27.0
'@babel/template': 7.27.2
- '@babel/traverse': 7.28.5
+ '@babel/traverse': 7.27.0
'@babel/types': 7.28.5
convert-source-map: 2.0.0
debug: 4.4.3
@@ -8852,7 +8954,7 @@ snapshots:
dependencies:
'@babel/compat-data': 7.28.5
'@babel/helper-validator-option': 7.27.1
- browserslist: 4.27.0
+ browserslist: 4.28.0
lru-cache: 5.1.1
semver: 6.3.1
@@ -8926,7 +9028,7 @@ snapshots:
dependencies:
'@babel/code-frame': 7.27.1
'@babel/generator': 7.28.5
- '@babel/parser': 7.28.5
+ '@babel/parser': 7.27.0
'@babel/template': 7.27.2
'@babel/types': 7.28.5
debug: 4.4.3
@@ -8984,7 +9086,7 @@ snapshots:
dependencies:
'@csstools/css-tokenizer': 3.0.4
- '@csstools/css-syntax-patches-for-csstree@1.0.15': {}
+ '@csstools/css-syntax-patches-for-csstree@1.0.16': {}
'@csstools/css-tokenizer@3.0.4': {}
@@ -9254,27 +9356,27 @@ snapshots:
'@eslint-community/regexpp@4.12.2': {}
- '@eslint-react/ast@2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@eslint-react/ast@2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@eslint-react/eff': 2.3.1
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3)
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.3.4
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
string-ts: 2.2.1
transitivePeerDependencies:
- eslint
- supports-color
- typescript
- '@eslint-react/core@2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@eslint-react/core@2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@eslint-react/ast': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 2.3.1
- '@eslint-react/shared': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.46.3
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/ast': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.3.4
+ '@eslint-react/shared': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.46.4
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
birecord: 0.1.1
ts-pattern: 5.9.0
transitivePeerDependencies:
@@ -9282,31 +9384,31 @@ snapshots:
- supports-color
- typescript
- '@eslint-react/eff@2.3.1': {}
+ '@eslint-react/eff@2.3.4': {}
- '@eslint-react/eslint-plugin@2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@eslint-react/eslint-plugin@2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@eslint-react/eff': 2.3.1
- '@eslint-react/shared': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.46.3
- '@typescript-eslint/type-utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.3.4
+ '@eslint-react/shared': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.46.4
+ '@typescript-eslint/type-utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1)
- eslint-plugin-react-dom: 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-hooks-extra: 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-naming-convention: 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-web-api: 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-x: 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-dom: 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-hooks-extra: 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-naming-convention: 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-web-api: 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-x: 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
ts-api-utils: 2.1.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@eslint-react/shared@2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@eslint-react/shared@2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@eslint-react/eff': 2.3.1
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.3.4
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
ts-pattern: 5.9.0
zod: 4.1.12
transitivePeerDependencies:
@@ -9314,13 +9416,13 @@ snapshots:
- supports-color
- typescript
- '@eslint-react/var@2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@eslint-react/var@2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@eslint-react/ast': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 2.3.1
- '@typescript-eslint/scope-manager': 8.46.3
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/ast': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.3.4
+ '@typescript-eslint/scope-manager': 8.46.4
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
ts-pattern: 5.9.0
transitivePeerDependencies:
- eslint
@@ -9419,25 +9521,25 @@ snapshots:
dependencies:
tslib: 2.8.1
- '@hono/node-server@1.19.6(hono@4.10.4)':
+ '@hono/node-server@1.19.6(hono@4.10.5)':
dependencies:
- hono: 4.10.4
+ hono: 4.10.5
- '@hono/swagger-ui@0.5.2(hono@4.10.4)':
+ '@hono/swagger-ui@0.5.2(hono@4.10.5)':
dependencies:
- hono: 4.10.4
+ hono: 4.10.5
- '@hono/zod-openapi@1.1.4(hono@4.10.4)(zod@4.1.12)':
+ '@hono/zod-openapi@1.1.4(hono@4.10.5)(zod@4.1.12)':
dependencies:
'@asteasolutions/zod-to-openapi': 8.1.0(zod@4.1.12)
- '@hono/zod-validator': 0.7.4(hono@4.10.4)(zod@4.1.12)
- hono: 4.10.4
+ '@hono/zod-validator': 0.7.4(hono@4.10.5)(zod@4.1.12)
+ hono: 4.10.5
openapi3-ts: 4.5.0
zod: 4.1.12
- '@hono/zod-validator@0.7.4(hono@4.10.4)(zod@4.1.12)':
+ '@hono/zod-validator@0.7.4(hono@4.10.5)(zod@4.1.12)':
dependencies:
- hono: 4.10.4
+ hono: 4.10.5
zod: 4.1.12
'@hookform/resolvers@5.2.2(react-hook-form@7.66.0(react@19.2.0))':
@@ -9995,45 +10097,45 @@ snapshots:
'@radix-ui/primitive@1.1.3': {}
- '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-arrow@1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10044,52 +10146,52 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10107,21 +10209,21 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-collection@1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10135,17 +10237,17 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-compose-refs@1.1.2(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -10153,25 +10255,25 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.3)(react@19.2.0)':
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
- '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-context@1.1.2(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -10179,33 +10281,33 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-context@1.1.2(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-context@1.1.2(@types/react@19.2.3)(react@19.2.0)':
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
- '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
aria-hidden: 1.2.6
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
- react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0)
+ react-remove-scroll: 2.7.1(@types/react@19.2.3)(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-direction@1.1.1(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -10213,11 +10315,11 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-direction@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-direction@1.1.1(@types/react@19.2.3)(react@19.2.0)':
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
'@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10232,18 +10334,18 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10260,20 +10362,20 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-focus-guards@1.1.3(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -10281,11 +10383,11 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.3)(react@19.2.0)':
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
'@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10298,47 +10400,47 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-form@0.1.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-form@0.1.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-id@1.1.1(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -10347,21 +10449,21 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-id@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-id@1.1.1(@types/react@19.2.3)(react@19.2.0)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
- '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-menu@2.1.16(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10389,107 +10491,107 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
aria-hidden: 1.2.6
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
- react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0)
+ react-remove-scroll: 2.7.1(@types/react@19.2.3)(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/number': 1.1.1
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-popover@1.1.15(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10514,28 +10616,28 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
aria-hidden: 1.2.6
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
- react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0)
+ react-remove-scroll: 2.7.1(@types/react@19.2.3)(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-popper@1.2.8(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10555,23 +10657,23 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@floating-ui/react-dom': 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.0)
'@radix-ui/rect': 1.1.1
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-portal@1.1.9(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10583,15 +10685,15 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-presence@1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10603,15 +10705,15 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-primitive@2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10622,51 +10724,51 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-slot': 1.2.4(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-slot': 1.2.4(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10685,96 +10787,96 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/number': 1.1.1
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/number': 1.1.1
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
aria-hidden: 1.2.6
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
- react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0)
+ react-remove-scroll: 2.7.1(@types/react@19.2.3)(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/number': 1.1.1
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-slot@1.2.3(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -10783,34 +10885,34 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-slot@1.2.3(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-slot@1.2.3(@types/react@19.2.3)(react@19.2.0)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
- '@radix-ui/react-slot@1.2.4(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-slot@1.2.4(@types/react@19.2.3)(react@19.2.0)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
- '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-tabs@1.1.13(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10828,41 +10930,41 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10879,20 +10981,20 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-toggle@1.1.10(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10905,31 +11007,31 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -10951,25 +11053,25 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -10977,11 +11079,11 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.3)(react@19.2.0)':
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
'@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -10991,13 +11093,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.3)(react@19.2.0)':
dependencies:
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
'@radix-ui/react-use-effect-event@0.0.2(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -11006,12 +11108,12 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.3)(react@19.2.0)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
'@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -11020,19 +11122,19 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.3)(react@19.2.0)':
dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
- '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.3)(react@19.2.0)':
dependencies:
react: 19.2.0
use-sync-external-store: 1.6.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
'@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -11040,17 +11142,17 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.3)(react@19.2.0)':
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
- '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.3)(react@19.2.0)':
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
'@radix-ui/react-use-rect@1.1.1(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -11059,12 +11161,12 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.3)(react@19.2.0)':
dependencies:
'@radix-ui/rect': 1.1.1
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
'@radix-ui/react-use-size@1.1.1(@types/react@19.0.10)(react@19.0.0)':
dependencies:
@@ -11073,12 +11175,12 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- '@radix-ui/react-use-size@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ '@radix-ui/react-use-size@1.1.1(@types/react@19.2.3)(react@19.2.0)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
'@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
@@ -11089,14 +11191,14 @@ snapshots:
'@types/react': 19.0.10
'@types/react-dom': 19.0.4(@types/react@19.0.10)
- '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@radix-ui/rect@1.1.1': {}
@@ -11184,7 +11286,7 @@ snapshots:
marked: 15.0.12
react: 19.2.0
- '@react-email/preview-server@5.0.1(@playwright/test@1.56.1)(@react-email/body@0.2.0(react@19.2.0))(@react-email/button@0.2.0(react@19.2.0))(@react-email/code-block@0.2.0(react@19.2.0))(@react-email/code-inline@0.0.5(react@19.2.0))(@react-email/container@0.0.15(react@19.2.0))(@react-email/heading@0.0.15(react@19.2.0))(@react-email/hr@0.0.11(react@19.2.0))(@react-email/img@0.0.11(react@19.2.0))(@react-email/link@0.0.12(react@19.2.0))(@react-email/preview@0.0.13(react@19.2.0))(@react-email/render@2.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@react-email/text@0.1.5(react@19.2.0))(@swc/core@1.15.1)(postcss@8.5.6)':
+ '@react-email/preview-server@5.0.1(@playwright/test@1.56.1)(@react-email/body@0.2.0(react@19.2.0))(@react-email/button@0.2.0(react@19.2.0))(@react-email/code-block@0.2.0(react@19.2.0))(@react-email/code-inline@0.0.5(react@19.2.0))(@react-email/container@0.0.15(react@19.2.0))(@react-email/heading@0.0.15(react@19.2.0))(@react-email/hr@0.0.11(react@19.2.0))(@react-email/img@0.0.11(react@19.2.0))(@react-email/link@0.0.12(react@19.2.0))(@react-email/preview@0.0.13(react@19.2.0))(@react-email/render@2.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@react-email/text@0.1.5(react@19.2.0))(@swc/core@1.15.1)(babel-plugin-react-compiler@1.0.0)(postcss@8.5.6)':
dependencies:
'@babel/core': 7.26.10
'@babel/parser': 7.27.0
@@ -11213,8 +11315,8 @@ snapshots:
json5: 2.2.3
log-symbols: 4.1.0
module-punycode: punycode@2.3.1
- next: 16.0.1(@babel/core@7.26.10)(@playwright/test@1.56.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- next-safe-action: 8.0.11(next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ next: 16.0.1(@babel/core@7.26.10)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ next-safe-action: 8.0.11(next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
node-html-parser: 7.0.1
ora: 5.4.1
pretty-bytes: 6.1.1
@@ -11321,78 +11423,78 @@ snapshots:
'@rolldown/pluginutils@1.0.0-beta.43': {}
- '@rollup/pluginutils@5.3.0(rollup@4.53.1)':
+ '@rollup/pluginutils@5.3.0(rollup@4.53.2)':
dependencies:
'@types/estree': 1.0.8
estree-walker: 2.0.2
picomatch: 4.0.3
optionalDependencies:
- rollup: 4.53.1
+ rollup: 4.53.2
- '@rollup/rollup-android-arm-eabi@4.53.1':
+ '@rollup/rollup-android-arm-eabi@4.53.2':
optional: true
- '@rollup/rollup-android-arm64@4.53.1':
+ '@rollup/rollup-android-arm64@4.53.2':
optional: true
- '@rollup/rollup-darwin-arm64@4.53.1':
+ '@rollup/rollup-darwin-arm64@4.53.2':
optional: true
- '@rollup/rollup-darwin-x64@4.53.1':
+ '@rollup/rollup-darwin-x64@4.53.2':
optional: true
- '@rollup/rollup-freebsd-arm64@4.53.1':
+ '@rollup/rollup-freebsd-arm64@4.53.2':
optional: true
- '@rollup/rollup-freebsd-x64@4.53.1':
+ '@rollup/rollup-freebsd-x64@4.53.2':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.53.1':
+ '@rollup/rollup-linux-arm-gnueabihf@4.53.2':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.53.1':
+ '@rollup/rollup-linux-arm-musleabihf@4.53.2':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.53.1':
+ '@rollup/rollup-linux-arm64-gnu@4.53.2':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.53.1':
+ '@rollup/rollup-linux-arm64-musl@4.53.2':
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.53.1':
+ '@rollup/rollup-linux-loong64-gnu@4.53.2':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.53.1':
+ '@rollup/rollup-linux-ppc64-gnu@4.53.2':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.53.1':
+ '@rollup/rollup-linux-riscv64-gnu@4.53.2':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.53.1':
+ '@rollup/rollup-linux-riscv64-musl@4.53.2':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.53.1':
+ '@rollup/rollup-linux-s390x-gnu@4.53.2':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.53.1':
+ '@rollup/rollup-linux-x64-gnu@4.53.2':
optional: true
- '@rollup/rollup-linux-x64-musl@4.53.1':
+ '@rollup/rollup-linux-x64-musl@4.53.2':
optional: true
- '@rollup/rollup-openharmony-arm64@4.53.1':
+ '@rollup/rollup-openharmony-arm64@4.53.2':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.53.1':
+ '@rollup/rollup-win32-arm64-msvc@4.53.2':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.53.1':
+ '@rollup/rollup-win32-ia32-msvc@4.53.2':
optional: true
- '@rollup/rollup-win32-x64-gnu@4.53.1':
+ '@rollup/rollup-win32-x64-gnu@4.53.2':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.53.1':
+ '@rollup/rollup-win32-x64-msvc@4.53.2':
optional: true
'@schummar/icu-type-parser@1.21.5': {}
@@ -11733,18 +11835,18 @@ snapshots:
'@standard-schema/utils@0.3.0': {}
- '@swc/cli@0.6.0(@swc/core@1.15.1)(chokidar@4.0.3)':
+ '@swc/cli@0.7.9(@swc/core@1.15.1)(chokidar@4.0.3)':
dependencies:
'@swc/core': 1.15.1
'@swc/counter': 0.1.3
'@xhmikosr/bin-wrapper': 13.2.0
commander: 8.3.0
- fast-glob: 3.3.3
minimatch: 9.0.5
piscina: 4.9.2
semver: 7.7.3
slash: 3.0.0
source-map: 0.7.6
+ tinyglobby: 0.2.15
optionalDependencies:
chokidar: 4.0.3
transitivePeerDependencies:
@@ -11899,133 +12001,133 @@ snapshots:
picocolors: 1.1.1
pretty-format: 27.5.1
- '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@babel/runtime': 7.28.4
'@testing-library/dom': 10.4.1
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
- '@tiptap/core@3.10.4(@tiptap/pm@3.10.4)':
+ '@tiptap/core@3.10.5(@tiptap/pm@3.10.5)':
dependencies:
- '@tiptap/pm': 3.10.4
+ '@tiptap/pm': 3.10.5
- '@tiptap/extension-blockquote@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-blockquote@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
- '@tiptap/extension-bold@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-bold@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
- '@tiptap/extension-bubble-menu@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)':
+ '@tiptap/extension-bubble-menu@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)':
dependencies:
'@floating-ui/dom': 1.7.4
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
- '@tiptap/pm': 3.10.4
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
+ '@tiptap/pm': 3.10.5
optional: true
- '@tiptap/extension-bullet-list@3.10.4(@tiptap/extension-list@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-bullet-list@3.10.5(@tiptap/extension-list@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/extension-list': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
+ '@tiptap/extension-list': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
- '@tiptap/extension-code-block@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)':
+ '@tiptap/extension-code-block@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
- '@tiptap/pm': 3.10.4
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
+ '@tiptap/pm': 3.10.5
- '@tiptap/extension-code@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-code@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
- '@tiptap/extension-document@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-document@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
- '@tiptap/extension-dropcursor@3.10.4(@tiptap/extensions@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-dropcursor@3.10.5(@tiptap/extensions@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/extensions': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
+ '@tiptap/extensions': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
- '@tiptap/extension-floating-menu@3.10.4(@floating-ui/dom@1.7.4)(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)':
+ '@tiptap/extension-floating-menu@3.10.5(@floating-ui/dom@1.7.4)(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)':
dependencies:
'@floating-ui/dom': 1.7.4
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
- '@tiptap/pm': 3.10.4
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
+ '@tiptap/pm': 3.10.5
optional: true
- '@tiptap/extension-gapcursor@3.10.4(@tiptap/extensions@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-gapcursor@3.10.5(@tiptap/extensions@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/extensions': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
+ '@tiptap/extensions': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
- '@tiptap/extension-hard-break@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-hard-break@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
- '@tiptap/extension-heading@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-heading@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
- '@tiptap/extension-horizontal-rule@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)':
+ '@tiptap/extension-horizontal-rule@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
- '@tiptap/pm': 3.10.4
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
+ '@tiptap/pm': 3.10.5
- '@tiptap/extension-italic@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-italic@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
- '@tiptap/extension-link@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)':
+ '@tiptap/extension-link@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
- '@tiptap/pm': 3.10.4
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
+ '@tiptap/pm': 3.10.5
linkifyjs: 4.3.2
- '@tiptap/extension-list-item@3.10.4(@tiptap/extension-list@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-list-item@3.10.5(@tiptap/extension-list@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/extension-list': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
+ '@tiptap/extension-list': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
- '@tiptap/extension-list-keymap@3.10.4(@tiptap/extension-list@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-list-keymap@3.10.5(@tiptap/extension-list@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/extension-list': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
+ '@tiptap/extension-list': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
- '@tiptap/extension-list@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)':
+ '@tiptap/extension-list@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
- '@tiptap/pm': 3.10.4
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
+ '@tiptap/pm': 3.10.5
- '@tiptap/extension-ordered-list@3.10.4(@tiptap/extension-list@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-ordered-list@3.10.5(@tiptap/extension-list@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/extension-list': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
+ '@tiptap/extension-list': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
- '@tiptap/extension-paragraph@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-paragraph@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
- '@tiptap/extension-strike@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-strike@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
- '@tiptap/extension-text-align@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-text-align@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
- '@tiptap/extension-text@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-text@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
- '@tiptap/extension-underline@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))':
+ '@tiptap/extension-underline@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
- '@tiptap/extensions@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)':
+ '@tiptap/extensions@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
- '@tiptap/pm': 3.10.4
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
+ '@tiptap/pm': 3.10.5
- '@tiptap/pm@3.10.4':
+ '@tiptap/pm@3.10.5':
dependencies:
prosemirror-changeset: 2.3.1
prosemirror-collab: 1.3.1
@@ -12043,52 +12145,52 @@ snapshots:
prosemirror-state: 1.4.4
prosemirror-tables: 1.8.1
prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.3)
- prosemirror-transform: 1.10.4
+ prosemirror-transform: 1.10.5
prosemirror-view: 1.41.3
- '@tiptap/react@3.10.4(@floating-ui/dom@1.7.4)(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@tiptap/react@3.10.5(@floating-ui/dom@1.7.4)(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
- '@tiptap/pm': 3.10.4
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
+ '@tiptap/pm': 3.10.5
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
'@types/use-sync-external-store': 0.0.6
fast-deep-equal: 3.1.3
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
use-sync-external-store: 1.6.0(react@19.2.0)
optionalDependencies:
- '@tiptap/extension-bubble-menu': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
- '@tiptap/extension-floating-menu': 3.10.4(@floating-ui/dom@1.7.4)(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
+ '@tiptap/extension-bubble-menu': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
+ '@tiptap/extension-floating-menu': 3.10.5(@floating-ui/dom@1.7.4)(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
transitivePeerDependencies:
- '@floating-ui/dom'
- '@tiptap/starter-kit@3.10.4':
- dependencies:
- '@tiptap/core': 3.10.4(@tiptap/pm@3.10.4)
- '@tiptap/extension-blockquote': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))
- '@tiptap/extension-bold': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))
- '@tiptap/extension-bullet-list': 3.10.4(@tiptap/extension-list@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4))
- '@tiptap/extension-code': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))
- '@tiptap/extension-code-block': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
- '@tiptap/extension-document': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))
- '@tiptap/extension-dropcursor': 3.10.4(@tiptap/extensions@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4))
- '@tiptap/extension-gapcursor': 3.10.4(@tiptap/extensions@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4))
- '@tiptap/extension-hard-break': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))
- '@tiptap/extension-heading': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))
- '@tiptap/extension-horizontal-rule': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
- '@tiptap/extension-italic': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))
- '@tiptap/extension-link': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
- '@tiptap/extension-list': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
- '@tiptap/extension-list-item': 3.10.4(@tiptap/extension-list@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4))
- '@tiptap/extension-list-keymap': 3.10.4(@tiptap/extension-list@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4))
- '@tiptap/extension-ordered-list': 3.10.4(@tiptap/extension-list@3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4))
- '@tiptap/extension-paragraph': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))
- '@tiptap/extension-strike': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))
- '@tiptap/extension-text': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))
- '@tiptap/extension-underline': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))
- '@tiptap/extensions': 3.10.4(@tiptap/core@3.10.4(@tiptap/pm@3.10.4))(@tiptap/pm@3.10.4)
- '@tiptap/pm': 3.10.4
+ '@tiptap/starter-kit@3.10.5':
+ dependencies:
+ '@tiptap/core': 3.10.5(@tiptap/pm@3.10.5)
+ '@tiptap/extension-blockquote': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))
+ '@tiptap/extension-bold': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))
+ '@tiptap/extension-bullet-list': 3.10.5(@tiptap/extension-list@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5))
+ '@tiptap/extension-code': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))
+ '@tiptap/extension-code-block': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
+ '@tiptap/extension-document': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))
+ '@tiptap/extension-dropcursor': 3.10.5(@tiptap/extensions@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5))
+ '@tiptap/extension-gapcursor': 3.10.5(@tiptap/extensions@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5))
+ '@tiptap/extension-hard-break': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))
+ '@tiptap/extension-heading': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))
+ '@tiptap/extension-horizontal-rule': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
+ '@tiptap/extension-italic': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))
+ '@tiptap/extension-link': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
+ '@tiptap/extension-list': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
+ '@tiptap/extension-list-item': 3.10.5(@tiptap/extension-list@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5))
+ '@tiptap/extension-list-keymap': 3.10.5(@tiptap/extension-list@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5))
+ '@tiptap/extension-ordered-list': 3.10.5(@tiptap/extension-list@3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5))
+ '@tiptap/extension-paragraph': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))
+ '@tiptap/extension-strike': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))
+ '@tiptap/extension-text': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))
+ '@tiptap/extension-underline': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))
+ '@tiptap/extensions': 3.10.5(@tiptap/core@3.10.5(@tiptap/pm@3.10.5))(@tiptap/pm@3.10.5)
+ '@tiptap/pm': 3.10.5
'@tokenizer/inflate@0.2.7':
dependencies:
@@ -12231,19 +12333,19 @@ snapshots:
dependencies:
'@types/react': 19.0.10
- '@types/react-dom@19.2.2(@types/react@19.2.2)':
+ '@types/react-dom@19.2.2(@types/react@19.2.3)':
dependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
- '@types/react-reconciler@0.28.9(@types/react@19.2.2)':
+ '@types/react-reconciler@0.28.9(@types/react@19.2.3)':
dependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
'@types/react@19.0.10':
dependencies:
csstype: 3.1.3
- '@types/react@19.2.2':
+ '@types/react@19.2.3':
dependencies:
csstype: 3.1.3
@@ -12266,14 +12368,14 @@ snapshots:
- uglify-js
- webpack-cli
- '@typescript-eslint/eslint-plugin@8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.46.3
- '@typescript-eslint/type-utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.46.3
+ '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.46.4
+ '@typescript-eslint/type-utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.46.4
eslint: 9.39.1(jiti@2.6.1)
graphemer: 1.4.0
ignore: 7.0.5
@@ -12283,41 +12385,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.46.3
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.46.3
+ '@typescript-eslint/scope-manager': 8.46.4
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.46.4
debug: 4.4.3
eslint: 9.39.1(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.46.3(typescript@5.9.3)':
+ '@typescript-eslint/project-service@8.46.4(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3)
- '@typescript-eslint/types': 8.46.3
+ '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.4
debug: 4.4.3
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.46.3':
+ '@typescript-eslint/scope-manager@8.46.4':
dependencies:
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/visitor-keys': 8.46.3
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/visitor-keys': 8.46.4
- '@typescript-eslint/tsconfig-utils@8.46.3(typescript@5.9.3)':
+ '@typescript-eslint/tsconfig-utils@8.46.4(typescript@5.9.3)':
dependencies:
typescript: 5.9.3
- '@typescript-eslint/type-utils@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/type-utils@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3)
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
debug: 4.4.3
eslint: 9.39.1(jiti@2.6.1)
ts-api-utils: 2.1.0(typescript@5.9.3)
@@ -12325,14 +12427,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.46.3': {}
+ '@typescript-eslint/types@8.46.4': {}
- '@typescript-eslint/typescript-estree@8.46.3(typescript@5.9.3)':
+ '@typescript-eslint/typescript-estree@8.46.4(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/project-service': 8.46.3(typescript@5.9.3)
- '@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3)
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/visitor-keys': 8.46.3
+ '@typescript-eslint/project-service': 8.46.4(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/visitor-keys': 8.46.4
debug: 4.4.3
fast-glob: 3.3.3
is-glob: 4.0.3
@@ -12343,20 +12445,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/utils@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
- '@typescript-eslint/scope-manager': 8.46.3
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.46.4
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.46.3':
+ '@typescript-eslint/visitor-keys@8.46.4':
dependencies:
- '@typescript-eslint/types': 8.46.3
+ '@typescript-eslint/types': 8.46.4
eslint-visitor-keys: 4.2.1
'@ungap/structured-clone@1.3.0': {}
@@ -12396,7 +12498,7 @@ snapshots:
'@types/chai': 5.2.3
'@vitest/spy': 4.0.8
'@vitest/utils': 4.0.8
- chai: 6.2.0
+ chai: 6.2.1
tinyrainbow: 3.0.3
'@vitest/mocker@4.0.8(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))':
@@ -12769,7 +12871,7 @@ snapshots:
autoprefixer@10.4.21(postcss@8.5.6):
dependencies:
- browserslist: 4.27.0
+ browserslist: 4.28.0
caniuse-lite: 1.0.30001754
fraction.js: 4.3.7
normalize-range: 0.1.2
@@ -12787,6 +12889,10 @@ snapshots:
b4a@1.7.3: {}
+ babel-plugin-react-compiler@1.0.0:
+ dependencies:
+ '@babel/types': 7.28.5
+
bail@2.0.2: {}
balanced-match@1.0.2: {}
@@ -12797,7 +12903,7 @@ snapshots:
base64id@2.0.0: {}
- baseline-browser-mapping@2.8.25: {}
+ baseline-browser-mapping@2.8.26: {}
bidi-js@1.0.3:
dependencies:
@@ -12816,9 +12922,9 @@ snapshots:
binary-extensions@2.3.0: {}
- bippy@0.3.34(@types/react@19.2.2)(react@19.2.0):
+ bippy@0.3.34(@types/react@19.2.3)(react@19.2.0):
dependencies:
- '@types/react-reconciler': 0.28.9(@types/react@19.2.2)
+ '@types/react-reconciler': 0.28.9(@types/react@19.2.3)
react: 19.2.0
transitivePeerDependencies:
- '@types/react'
@@ -12848,13 +12954,13 @@ snapshots:
dependencies:
fill-range: 7.1.1
- browserslist@4.27.0:
+ browserslist@4.28.0:
dependencies:
- baseline-browser-mapping: 2.8.25
+ baseline-browser-mapping: 2.8.26
caniuse-lite: 1.0.30001754
- electron-to-chromium: 1.5.249
+ electron-to-chromium: 1.5.250
node-releases: 2.0.27
- update-browserslist-db: 1.1.4(browserslist@4.27.0)
+ update-browserslist-db: 1.1.4(browserslist@4.28.0)
buffer-crc32@0.2.13: {}
@@ -12909,7 +13015,7 @@ snapshots:
ccount@2.0.1: {}
- chai@6.2.0: {}
+ chai@6.2.1: {}
chalk@4.1.2:
dependencies:
@@ -12980,12 +13086,12 @@ snapshots:
clsx@2.1.1: {}
- cmdk@1.1.1(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ cmdk@1.1.1(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
transitivePeerDependencies:
@@ -13111,7 +13217,7 @@ snapshots:
cssstyle@5.3.3:
dependencies:
'@asamuzakjp/css-color': 4.0.5
- '@csstools/css-syntax-patches-for-csstree': 1.0.15
+ '@csstools/css-syntax-patches-for-csstree': 1.0.16
css-tree: 3.1.0
csstype@3.1.3: {}
@@ -13266,7 +13372,7 @@ snapshots:
eastasianwidth@0.2.0: {}
- electron-to-chromium@1.5.249: {}
+ electron-to-chromium@1.5.250: {}
emoji-regex@10.6.0: {}
@@ -13559,8 +13665,8 @@ snapshots:
eslint-plugin-perfectionist@4.15.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1)
natural-orderby: 5.0.0
transitivePeerDependencies:
@@ -13577,16 +13683,16 @@ snapshots:
'@types/eslint': 9.6.1
eslint-config-prettier: 10.1.8(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-react-dom@2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
+ eslint-plugin-react-dom@2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@eslint-react/ast': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 2.3.1
- '@eslint-react/shared': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.46.3
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/ast': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/core': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.3.4
+ '@eslint-react/shared': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.46.4
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
compare-versions: 6.1.1
eslint: 9.39.1(jiti@2.6.1)
string-ts: 2.2.1
@@ -13595,17 +13701,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-hooks-extra@2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@eslint-react/ast': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 2.3.1
- '@eslint-react/shared': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.46.3
- '@typescript-eslint/type-utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-hooks-extra@2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
+ dependencies:
+ '@eslint-react/ast': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/core': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.3.4
+ '@eslint-react/shared': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.46.4
+ '@typescript-eslint/type-utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1)
string-ts: 2.2.1
ts-pattern: 5.9.0
@@ -13617,17 +13723,17 @@ snapshots:
dependencies:
eslint: 9.39.1(jiti@2.6.1)
- eslint-plugin-react-naming-convention@2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@eslint-react/ast': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 2.3.1
- '@eslint-react/shared': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.46.3
- '@typescript-eslint/type-utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-naming-convention@2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
+ dependencies:
+ '@eslint-react/ast': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/core': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.3.4
+ '@eslint-react/shared': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.46.4
+ '@typescript-eslint/type-utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1)
string-ts: 2.2.1
ts-pattern: 5.9.0
@@ -13635,16 +13741,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-web-api@2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
+ eslint-plugin-react-web-api@2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@eslint-react/ast': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 2.3.1
- '@eslint-react/shared': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.46.3
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/ast': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/core': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.3.4
+ '@eslint-react/shared': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.46.4
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1)
string-ts: 2.2.1
ts-pattern: 5.9.0
@@ -13652,17 +13758,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-x@2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@eslint-react/ast': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 2.3.1
- '@eslint-react/shared': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 2.3.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.46.3
- '@typescript-eslint/type-utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.46.3
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-x@2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
+ dependencies:
+ '@eslint-react/ast': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/core': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.3.4
+ '@eslint-react/shared': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.3.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.46.4
+ '@typescript-eslint/type-utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.4
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
compare-versions: 6.1.1
eslint: 9.39.1(jiti@2.6.1)
is-immutable-type: 5.0.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
@@ -13844,7 +13950,7 @@ snapshots:
expect-type@1.2.2: {}
- exsolve@1.0.7: {}
+ exsolve@1.0.8: {}
ext-list@2.2.2:
dependencies:
@@ -13933,7 +14039,7 @@ snapshots:
dependencies:
magic-string: 0.30.21
mlly: 1.8.0
- rollup: 4.53.1
+ rollup: 4.53.2
flat-cache@4.0.1:
dependencies:
@@ -13979,7 +14085,7 @@ snapshots:
fsevents@2.3.3:
optional: true
- fumadocs-core@16.0.8(@types/react@19.2.2)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ fumadocs-core@16.0.10(@types/react@19.2.3)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
'@formatjs/intl-localematcher': 0.6.2
'@orama/orama': 3.1.16
@@ -14000,22 +14106,22 @@ snapshots:
shiki: 3.15.0
unist-util-visit: 5.0.0
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
lucide-react: 0.553.0(react@19.2.0)
- next: 16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ next: 16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
transitivePeerDependencies:
- supports-color
- fumadocs-mdx@13.0.5(fumadocs-core@16.0.8(@types/react@19.2.2)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)):
+ fumadocs-mdx@13.0.7(fumadocs-core@16.0.10(@types/react@19.2.3)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
'@mdx-js/mdx': 3.1.1
'@standard-schema/spec': 1.0.0
chokidar: 4.0.3
esbuild: 0.25.12
estree-util-value-to-estree: 3.5.0
- fumadocs-core: 16.0.8(@types/react@19.2.2)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ fumadocs-core: 16.0.10(@types/react@19.2.3)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
js-yaml: 4.1.0
lru-cache: 11.2.2
mdast-util-to-markdown: 2.1.2
@@ -14029,26 +14135,26 @@ snapshots:
unist-util-visit: 5.0.0
zod: 4.1.12
optionalDependencies:
- next: 16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ next: 16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
- fumadocs-ui@16.0.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(tailwindcss@4.1.17):
- dependencies:
- '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.4(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ fumadocs-ui@16.0.10(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(tailwindcss@4.1.17):
+ dependencies:
+ '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-slot': 1.2.4(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
class-variance-authority: 0.7.1
- fumadocs-core: 16.0.8(@types/react@19.2.2)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ fumadocs-core: 16.0.10(@types/react@19.2.3)(lucide-react@0.553.0(react@19.2.0))(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
lodash.merge: 4.6.2
next-themes: 0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
postcss-selector-parser: 7.1.0
@@ -14058,8 +14164,8 @@ snapshots:
scroll-into-view-if-needed: 3.1.0
tailwind-merge: 3.4.0
optionalDependencies:
- '@types/react': 19.2.2
- next: 16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@types/react': 19.2.3
+ next: 16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
tailwindcss: 4.1.17
transitivePeerDependencies:
- '@mixedbread/sdk'
@@ -14300,7 +14406,7 @@ snapshots:
he@1.2.0: {}
- hono@4.10.4: {}
+ hono@4.10.5: {}
html-encoding-sniffer@4.0.0:
dependencies:
@@ -14480,7 +14586,7 @@ snapshots:
is-immutable-type@5.0.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@typescript-eslint/type-utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/type-utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1)
ts-api-utils: 2.1.0(typescript@5.9.3)
ts-declaration-location: 1.0.7(typescript@5.9.3)
@@ -15385,35 +15491,35 @@ snapshots:
neo-async@2.6.2: {}
- next-intl@4.5.0(next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3):
+ next-intl@4.5.1(next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3):
dependencies:
'@formatjs/intl-localematcher': 0.5.10
'@swc/core': 1.15.1
negotiator: 1.0.0
- next: 16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ next: 16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
- use-intl: 4.5.0(react@19.2.0)
+ use-intl: 4.5.1(react@19.2.0)
optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
- '@swc/helpers'
- next-intl@4.5.0(next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3):
+ next-intl@4.5.1(next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3):
dependencies:
'@formatjs/intl-localematcher': 0.5.10
'@swc/core': 1.15.1
negotiator: 1.0.0
- next: 16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ next: 16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
- use-intl: 4.5.0(react@19.2.0)
+ use-intl: 4.5.1(react@19.2.0)
optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
- '@swc/helpers'
- next-safe-action@8.0.11(next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
+ next-safe-action@8.0.11(next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
dependencies:
- next: 16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ next: 16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
@@ -15422,7 +15528,7 @@ snapshots:
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
- next@16.0.1(@babel/core@7.26.10)(@playwright/test@1.56.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
+ next@16.0.1(@babel/core@7.26.10)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
dependencies:
'@next/env': 16.0.1
'@swc/helpers': 0.5.15
@@ -15441,12 +15547,13 @@ snapshots:
'@next/swc-win32-arm64-msvc': 16.0.1
'@next/swc-win32-x64-msvc': 16.0.1
'@playwright/test': 1.56.1
+ babel-plugin-react-compiler: 1.0.0
sharp: 0.34.5
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
- next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
'@next/env': 16.0.1
'@swc/helpers': 0.5.15
@@ -15465,12 +15572,13 @@ snapshots:
'@next/swc-win32-arm64-msvc': 16.0.1
'@next/swc-win32-x64-msvc': 16.0.1
'@playwright/test': 1.56.1
+ babel-plugin-react-compiler: 1.0.0
sharp: 0.34.5
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
- next@16.0.1(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ next@16.0.1(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
'@next/env': 16.0.1
'@swc/helpers': 0.5.15
@@ -15489,6 +15597,7 @@ snapshots:
'@next/swc-win32-arm64-msvc': 16.0.1
'@next/swc-win32-x64-msvc': 16.0.1
'@playwright/test': 1.56.1
+ babel-plugin-react-compiler: 1.0.0
sharp: 0.34.5
transitivePeerDependencies:
- '@babel/core'
@@ -15785,7 +15894,7 @@ snapshots:
pkg-types@2.3.0:
dependencies:
confbox: 0.2.2
- exsolve: 1.0.7
+ exsolve: 1.0.8
pathe: 2.0.3
playwright-core@1.56.1: {}
@@ -15937,7 +16046,7 @@ snapshots:
prosemirror-changeset@2.3.1:
dependencies:
- prosemirror-transform: 1.10.4
+ prosemirror-transform: 1.10.5
prosemirror-collab@1.3.1:
dependencies:
@@ -15947,12 +16056,12 @@ snapshots:
dependencies:
prosemirror-model: 1.25.4
prosemirror-state: 1.4.4
- prosemirror-transform: 1.10.4
+ prosemirror-transform: 1.10.5
prosemirror-dropcursor@1.8.2:
dependencies:
prosemirror-state: 1.4.4
- prosemirror-transform: 1.10.4
+ prosemirror-transform: 1.10.5
prosemirror-view: 1.41.3
prosemirror-gapcursor@1.4.0:
@@ -15965,14 +16074,14 @@ snapshots:
prosemirror-history@1.4.1:
dependencies:
prosemirror-state: 1.4.4
- prosemirror-transform: 1.10.4
+ prosemirror-transform: 1.10.5
prosemirror-view: 1.41.3
rope-sequence: 1.3.4
prosemirror-inputrules@1.5.1:
dependencies:
prosemirror-state: 1.4.4
- prosemirror-transform: 1.10.4
+ prosemirror-transform: 1.10.5
prosemirror-keymap@1.2.3:
dependencies:
@@ -16004,12 +16113,12 @@ snapshots:
dependencies:
prosemirror-model: 1.25.4
prosemirror-state: 1.4.4
- prosemirror-transform: 1.10.4
+ prosemirror-transform: 1.10.5
prosemirror-state@1.4.4:
dependencies:
prosemirror-model: 1.25.4
- prosemirror-transform: 1.10.4
+ prosemirror-transform: 1.10.5
prosemirror-view: 1.41.3
prosemirror-tables@1.8.1:
@@ -16017,7 +16126,7 @@ snapshots:
prosemirror-keymap: 1.2.3
prosemirror-model: 1.25.4
prosemirror-state: 1.4.4
- prosemirror-transform: 1.10.4
+ prosemirror-transform: 1.10.5
prosemirror-view: 1.41.3
prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.3):
@@ -16028,7 +16137,7 @@ snapshots:
prosemirror-state: 1.4.4
prosemirror-view: 1.41.3
- prosemirror-transform@1.10.4:
+ prosemirror-transform@1.10.5:
dependencies:
prosemirror-model: 1.25.4
@@ -16036,7 +16145,7 @@ snapshots:
dependencies:
prosemirror-model: 1.25.4
prosemirror-state: 1.4.4
- prosemirror-transform: 1.10.4
+ prosemirror-transform: 1.10.5
punycode.js@2.3.1: {}
@@ -16050,68 +16159,68 @@ snapshots:
quick-lru@5.1.1: {}
- radix-ui@1.4.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ radix-ui@1.4.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-avatar': 1.1.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-form': 0.1.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-progress': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-avatar': 1.1.10(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-form': 0.1.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-progress': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.0)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ '@types/react': 19.2.3
+ '@types/react-dom': 19.2.2(@types/react@19.2.3)
randombytes@2.1.0:
dependencies:
@@ -16176,13 +16285,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- react-remove-scroll-bar@2.3.8(@types/react@19.2.2)(react@19.2.0):
+ react-remove-scroll-bar@2.3.8(@types/react@19.2.3)(react@19.2.0):
dependencies:
react: 19.2.0
- react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.0)
+ react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.2.0)
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
react-remove-scroll@2.7.1(@types/react@19.0.10)(react@19.0.0):
dependencies:
@@ -16195,18 +16304,18 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- react-remove-scroll@2.7.1(@types/react@19.2.2)(react@19.2.0):
+ react-remove-scroll@2.7.1(@types/react@19.2.3)(react@19.2.0):
dependencies:
react: 19.2.0
- react-remove-scroll-bar: 2.3.8(@types/react@19.2.2)(react@19.2.0)
- react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.0)
+ react-remove-scroll-bar: 2.3.8(@types/react@19.2.3)(react@19.2.0)
+ react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.2.0)
tslib: 2.8.1
- use-callback-ref: 1.3.3(@types/react@19.2.2)(react@19.2.0)
- use-sidecar: 1.1.3(@types/react@19.2.2)(react@19.2.0)
+ use-callback-ref: 1.3.3(@types/react@19.2.3)(react@19.2.0)
+ use-sidecar: 1.1.3(@types/react@19.2.3)(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
- react-scan@0.4.3(@types/react@19.2.2)(next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.1):
+ react-scan@0.4.3(@types/react@19.2.3)(next@16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.2):
dependencies:
'@babel/core': 7.28.5
'@babel/generator': 7.28.5
@@ -16215,9 +16324,9 @@ snapshots:
'@clack/prompts': 0.8.2
'@pivanov/utils': 0.0.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@preact/signals': 1.3.2(preact@10.27.2)
- '@rollup/pluginutils': 5.3.0(rollup@4.53.1)
+ '@rollup/pluginutils': 5.3.0(rollup@4.53.2)
'@types/node': 20.19.24
- bippy: 0.3.34(@types/react@19.2.2)(react@19.2.0)
+ bippy: 0.3.34(@types/react@19.2.3)(react@19.2.0)
esbuild: 0.25.12
estree-walker: 3.0.3
kleur: 4.1.5
@@ -16228,7 +16337,7 @@ snapshots:
react-dom: 19.2.0(react@19.2.0)
tsx: 4.20.6
optionalDependencies:
- next: 16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ next: 16.0.1(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
unplugin: 2.1.0
transitivePeerDependencies:
- '@types/react'
@@ -16243,13 +16352,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- react-style-singleton@2.2.3(@types/react@19.2.2)(react@19.2.0):
+ react-style-singleton@2.2.3(@types/react@19.2.3)(react@19.2.0):
dependencies:
get-nonce: 1.0.1
react: 19.2.0
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
react-universal-interface@0.6.2(react@19.2.0)(tslib@2.8.1):
dependencies:
@@ -16468,32 +16577,32 @@ snapshots:
reusify@1.1.0: {}
- rollup@4.53.1:
+ rollup@4.53.2:
dependencies:
'@types/estree': 1.0.8
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.53.1
- '@rollup/rollup-android-arm64': 4.53.1
- '@rollup/rollup-darwin-arm64': 4.53.1
- '@rollup/rollup-darwin-x64': 4.53.1
- '@rollup/rollup-freebsd-arm64': 4.53.1
- '@rollup/rollup-freebsd-x64': 4.53.1
- '@rollup/rollup-linux-arm-gnueabihf': 4.53.1
- '@rollup/rollup-linux-arm-musleabihf': 4.53.1
- '@rollup/rollup-linux-arm64-gnu': 4.53.1
- '@rollup/rollup-linux-arm64-musl': 4.53.1
- '@rollup/rollup-linux-loong64-gnu': 4.53.1
- '@rollup/rollup-linux-ppc64-gnu': 4.53.1
- '@rollup/rollup-linux-riscv64-gnu': 4.53.1
- '@rollup/rollup-linux-riscv64-musl': 4.53.1
- '@rollup/rollup-linux-s390x-gnu': 4.53.1
- '@rollup/rollup-linux-x64-gnu': 4.53.1
- '@rollup/rollup-linux-x64-musl': 4.53.1
- '@rollup/rollup-openharmony-arm64': 4.53.1
- '@rollup/rollup-win32-arm64-msvc': 4.53.1
- '@rollup/rollup-win32-ia32-msvc': 4.53.1
- '@rollup/rollup-win32-x64-gnu': 4.53.1
- '@rollup/rollup-win32-x64-msvc': 4.53.1
+ '@rollup/rollup-android-arm-eabi': 4.53.2
+ '@rollup/rollup-android-arm64': 4.53.2
+ '@rollup/rollup-darwin-arm64': 4.53.2
+ '@rollup/rollup-darwin-x64': 4.53.2
+ '@rollup/rollup-freebsd-arm64': 4.53.2
+ '@rollup/rollup-freebsd-x64': 4.53.2
+ '@rollup/rollup-linux-arm-gnueabihf': 4.53.2
+ '@rollup/rollup-linux-arm-musleabihf': 4.53.2
+ '@rollup/rollup-linux-arm64-gnu': 4.53.2
+ '@rollup/rollup-linux-arm64-musl': 4.53.2
+ '@rollup/rollup-linux-loong64-gnu': 4.53.2
+ '@rollup/rollup-linux-ppc64-gnu': 4.53.2
+ '@rollup/rollup-linux-riscv64-gnu': 4.53.2
+ '@rollup/rollup-linux-riscv64-musl': 4.53.2
+ '@rollup/rollup-linux-s390x-gnu': 4.53.2
+ '@rollup/rollup-linux-x64-gnu': 4.53.2
+ '@rollup/rollup-linux-x64-musl': 4.53.2
+ '@rollup/rollup-openharmony-arm64': 4.53.2
+ '@rollup/rollup-win32-arm64-msvc': 4.53.2
+ '@rollup/rollup-win32-ia32-msvc': 4.53.2
+ '@rollup/rollup-win32-x64-gnu': 4.53.2
+ '@rollup/rollup-win32-x64-msvc': 4.53.2
fsevents: 2.3.3
rope-sequence@1.3.4: {}
@@ -17208,7 +17317,7 @@ snapshots:
picocolors: 1.1.1
postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.20.6)(yaml@2.8.1)
resolve-from: 5.0.0
- rollup: 4.53.1
+ rollup: 4.53.2
source-map: 0.8.0-beta.0
sucrase: 3.35.0
tinyexec: 0.3.2
@@ -17231,32 +17340,32 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
- turbo-darwin-64@2.6.0:
+ turbo-darwin-64@2.6.1:
optional: true
- turbo-darwin-arm64@2.6.0:
+ turbo-darwin-arm64@2.6.1:
optional: true
- turbo-linux-64@2.6.0:
+ turbo-linux-64@2.6.1:
optional: true
- turbo-linux-arm64@2.6.0:
+ turbo-linux-arm64@2.6.1:
optional: true
- turbo-windows-64@2.6.0:
+ turbo-windows-64@2.6.1:
optional: true
- turbo-windows-arm64@2.6.0:
+ turbo-windows-arm64@2.6.1:
optional: true
- turbo@2.6.0:
+ turbo@2.6.1:
optionalDependencies:
- turbo-darwin-64: 2.6.0
- turbo-darwin-arm64: 2.6.0
- turbo-linux-64: 2.6.0
- turbo-linux-arm64: 2.6.0
- turbo-windows-64: 2.6.0
- turbo-windows-arm64: 2.6.0
+ turbo-darwin-64: 2.6.1
+ turbo-darwin-arm64: 2.6.1
+ turbo-linux-64: 2.6.1
+ turbo-linux-arm64: 2.6.1
+ turbo-windows-64: 2.6.1
+ turbo-windows-arm64: 2.6.1
tw-animate-css@1.4.0: {}
@@ -17303,12 +17412,12 @@ snapshots:
possible-typed-array-names: 1.1.0
reflect.getprototypeof: 1.0.10
- typescript-eslint@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
+ typescript-eslint@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/parser': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3)
- '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/eslint-plugin': 8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
@@ -17386,9 +17495,9 @@ snapshots:
webpack-virtual-modules: 0.6.2
optional: true
- update-browserslist-db@1.1.4(browserslist@4.27.0):
+ update-browserslist-db@1.1.4(browserslist@4.28.0):
dependencies:
- browserslist: 4.27.0
+ browserslist: 4.28.0
escalade: 3.2.0
picocolors: 1.1.1
@@ -17408,12 +17517,12 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- use-callback-ref@1.3.3(@types/react@19.2.2)(react@19.2.0):
+ use-callback-ref@1.3.3(@types/react@19.2.3)(react@19.2.0):
dependencies:
react: 19.2.0
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
use-debounce@10.0.4(react@19.0.0):
dependencies:
@@ -17423,7 +17532,7 @@ snapshots:
dependencies:
react: 19.2.0
- use-intl@4.5.0(react@19.2.0):
+ use-intl@4.5.1(react@19.2.0):
dependencies:
'@formatjs/fast-memoize': 2.2.7
'@schummar/icu-type-parser': 1.21.5
@@ -17438,13 +17547,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.10
- use-sidecar@1.1.3(@types/react@19.2.2)(react@19.2.0):
+ use-sidecar@1.1.3(@types/react@19.2.3)(react@19.2.0):
dependencies:
detect-node-es: 1.1.0
react: 19.2.0
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.3
use-sync-external-store@1.6.0(react@19.2.0):
dependencies:
@@ -17458,9 +17567,9 @@ snapshots:
vary@1.1.2: {}
- vaul@1.1.2(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ vaul@1.1.2(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
transitivePeerDependencies:
@@ -17494,7 +17603,7 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
- rollup: 4.53.1
+ rollup: 4.53.2
tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 24.10.0
@@ -17598,7 +17707,7 @@ snapshots:
'@webassemblyjs/wasm-parser': 1.14.1
acorn: 8.15.0
acorn-import-phases: 1.0.4(acorn@8.15.0)
- browserslist: 4.27.0
+ browserslist: 4.28.0
chrome-trace-event: 1.0.4
enhanced-resolve: 5.18.3
es-module-lexer: 1.7.0
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 1882b9677..9b30c1038 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -5,4 +5,5 @@ packages:
ignoredBuiltDependencies:
- '@swc/core'
+ - esbuild
- sharp