From a2d0eafcc492fe606dee9c0940c8d57f74b88067 Mon Sep 17 00:00:00 2001
From: Bayu Darmawan <40495581+gorillaworkout@users.noreply.github.com>
Date: Mon, 2 Mar 2026 17:14:50 +0700
Subject: [PATCH 1/6] fix(docs): replace deprecated getSession with getClaims
in Refine tutorial (#43203)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## What kind of change does this PR introduce?
Documentation update
## What is the current behavior?
The Refine tutorial uses `supabaseClient.auth.getSession()` in the
`authProvider.check` method to verify authentication. `getSession` is
deprecated and not recommended for auth verification.
## What is the new behavior?
Replaced `getSession()` with `getClaims()` which reads claims from the
locally cached JWT. This is the recommended approach as mentioned in the
issue.
## Files changed
- `apps/docs/content/guides/getting-started/tutorials/with-refine.mdx` —
Updated `check` method in the authProvider code example
-
`examples/user-management/refine-user-management/src/providers/auth-provider.ts`
— Updated the corresponding example code to match
Closes #42193
---------
Co-authored-by: gorillaworkout
Co-authored-by: Chris Chinchilla
---
.../getting-started/tutorials/with-refine.mdx | 539 +-----
.../refine-user-management/package-lock.json | 1498 ++++++++++-------
.../refine-user-management/package.json | 28 +-
.../refine-user-management/src/App.tsx | 73 +-
.../auth-provider.ts => authProvider.ts} | 11 +-
.../src/components/avatar.tsx | 2 +-
.../src/providers/supabase-client.ts | 17 -
.../src/utility/index.ts | 1 +
.../src/utility/supabaseClient.ts | 13 +
9 files changed, 983 insertions(+), 1199 deletions(-)
rename examples/user-management/refine-user-management/src/{providers/auth-provider.ts => authProvider.ts} (87%)
delete mode 100644 examples/user-management/refine-user-management/src/providers/supabase-client.ts
create mode 100644 examples/user-management/refine-user-management/src/utility/index.ts
create mode 100644 examples/user-management/refine-user-management/src/utility/supabaseClient.ts
diff --git a/apps/docs/content/guides/getting-started/tutorials/with-refine.mdx b/apps/docs/content/guides/getting-started/tutorials/with-refine.mdx
index 2f7b929dd28b2..553d0f02105c3 100644
--- a/apps/docs/content/guides/getting-started/tutorials/with-refine.mdx
+++ b/apps/docs/content/guides/getting-started/tutorials/with-refine.mdx
@@ -15,91 +15,60 @@ If you get stuck while working through this guide, refer to the [full example on
## About Refine
-[Refine](https://github.com/refinedev/refine) is a React-based framework used to rapidly build data-heavy applications like admin panels, dashboards, storefronts and any type of CRUD apps. It separates app concerns into individual layers, each backed by a React context and respective provider object. For example, the auth layer represents a context served by a specific set of [`authProvider`](https://refine.dev/docs/tutorial/understanding-authprovider/index/) methods that carry out authentication and authorization actions such as logging in, logging out, getting roles data, etc. Similarly, the data layer offers another level of abstraction that is equipped with [`dataProvider`](https://refine.dev/docs/tutorial/understanding-dataprovider/index/) methods to handle CRUD operations at appropriate backend API endpoints.
+[Refine](https://github.com/refinedev/refine) is a React-based framework used to rapidly build data-heavy applications like admin panels, dashboards, storefronts and any type of CRUD apps. It separates app concerns into individual layers, each backed by a React context and respective provider object. For example, the auth layer represents a context served by a specific set of [`authProvider`](https://refine.dev/docs/tutorial/understanding-authprovider/index/) methods that carry out authentication and authorization actions such as logging in, logging out, getting roles data, etc. Similarly, the data layer offers another level of abstraction equipped with [`dataProvider`](https://refine.dev/docs/tutorial/understanding-dataprovider/index/) methods to handle CRUD operations at appropriate backend API endpoints.
-Refine provides hassle-free integration with Supabase backend with its supplementary [`@refinedev/supabase`](https://github.com/refinedev/refine/tree/main/packages/supabase) package. It generates `authProvider` and `dataProvider` methods at project initialization, so we don't need to expend much effort to define them ourselves. We just need to choose Supabase as our backend service while creating the app with `create refine-app`.
-
-
-
-It is possible to customize the `authProvider` for Supabase and as we'll see below, it can be tweaked from `src/authProvider.ts` file. In contrast, the Supabase `dataProvider` is part of `node_modules` and therefore is not subject to modification.
-
-
+Refine provides hassle-free integration with a Supabase backend with its supplementary [`@refinedev/supabase`](https://github.com/refinedev/refine/tree/main/packages/supabase) package. It generates `authProvider` and `dataProvider` methods at project initialization, so you don't need to spend much effort defining them yourself, choose Supabase as the backend service while creating the app with `create refine-app`.
<$Partial path="project_setup.mdx" variables={{ "framework": "refine", "tab": "frameworks" }} />
## Building the app
-Let's start building the Refine app from scratch.
+Start building the Refine app from scratch.
### Initialize a Refine app
-We can use [create refine-app](https://refine.dev/docs/tutorial/getting-started/headless/create-project/#launch-the-refine-cli-setup) command to initialize
+Use [create refine-app](https://refine.dev/docs/tutorial/getting-started/headless/create-project/#launch-the-refine-cli-setup) command to initialize
an app. Run the following in the terminal:
```bash
npm create refine-app@latest -- --preset refine-supabase
```
-In the above command, we are using the `refine-supabase` preset which chooses the Supabase supplementary package for our app. We are not using any UI framework, so we'll have a headless UI with plain React and CSS styling.
+The command above uses the `refine-supabase` preset which chooses the Supabase supplementary package for the app. There's no UI framework, so the app has a headless UI with plain React and CSS styling.
The `refine-supabase` preset installs the `@refinedev/supabase` package which out-of-the-box includes the Supabase dependency: [supabase-js](https://github.com/supabase/supabase-js).
-We also need to install `@refinedev/react-hook-form` and `react-hook-form` packages that allow us to use [React Hook Form](https://react-hook-form.com) inside Refine apps. Run:
+Install the `@refinedev/react-hook-form` and `react-hook-form` packages that to use [React Hook Form](https://react-hook-form.com) inside Refine apps. Run:
```bash
npm install @refinedev/react-hook-form react-hook-form
```
-With the app initialized and packages installed, at this point before we begin discussing Refine concepts, let's try running the app:
-
-```bash
-cd app-name
-npm run dev
-```
-
-We should have a running instance of the app with a Welcome page at `http://localhost:5173`.
-
-Let's move ahead to understand the generated code now.
-
### Refine `supabaseClient`
-The `create refine-app` generated a Supabase client for us in the `src/utility/supabaseClient.ts` file. It has two constants: `SUPABASE_URL` and `SUPABASE_KEY`. We want to replace them as `supabaseUrl` and `supabasePublishableKey` respectively and assign them our own Supabase server's values.
-
-We'll update it with environment variables managed by Vite:
+The `create refine-app` generated a Supabase client in the `src/utility/supabaseClient.ts` file. It has two constants: `SUPABASE_URL` and `SUPABASE_KEY`. Replace them as `supabaseUrl` and `supabasePublishableKey` respectively and assign them your Supabase server's values.
-<$CodeTabs>
-
-```ts name=src/utility/supabaseClient.ts
-import { createClient } from '@refinedev/supabase'
+Update it with environment variables managed by Vite:
-const supabaseUrl = import.meta.env.VITE_SUPABASE_URL
-const supabasePublishableKey = import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY
+<$CodeSample
+path="/user-management/refine-user-management/src/utility/supabaseClient.ts"
+lines={[[1, -1]]}
+meta="name=src/utility/supabaseClient.ts"
+/>
-export const supabaseClient = createClient(supabaseUrl, supabasePublishableKey, {
- db: {
- schema: 'public',
- },
- auth: {
- persistSession: true,
- },
-})
-```
-
-$CodeTabs>
-
-And then, we want to save the environment variables in a `.env.local` file. All you need are the API URL and the key that you copied [earlier](#get-api-details).
+Save the environment variables in a `.env.local` file. All you need are the API URL and the key that you copied [earlier](#get-api-details).
```bash .env.local
VITE_SUPABASE_URL=YOUR_SUPABASE_URL
VITE_SUPABASE_PUBLISHABLE_KEY=YOUR_SUPABASE_PUBLISHABLE_KEY
```
-The `supabaseClient` will be used in fetch calls to Supabase endpoints from our app. As we'll see below, the client is instrumental in implementing authentication using Refine's auth provider methods and CRUD actions with appropriate data provider methods.
+The `supabaseClient` fetches calls to Supabase endpoints from the app. The client is instrumental in implementing authentication using Refine's auth provider methods and CRUD actions with appropriate data provider methods.
One optional step is to update the CSS file `src/App.css` to make the app look nice.
You can find the full contents of this file [here](https://raw.githubusercontent.com/supabase/supabase/master/examples/user-management/refine-user-management/src/App.css).
-In order for us to add login and user profile pages in this App, we have to tweak the ` ` component inside `App.tsx`.
+In order to add login and user profile pages in this App, tweak the ` ` component inside `App.tsx`.
### The ` ` component
@@ -151,13 +120,13 @@ export default App
$CodeTabs>
-We'd like to focus on the [` `](https://refine.dev/docs/api-reference/core/components/refine-config/) component, which comes with several props passed to it. Notice the `dataProvider` prop. It uses a `dataProvider()` function with `supabaseClient` passed as argument to generate the data provider object. The `authProvider` object also uses `supabaseClient` in implementing its methods. You can look it up in `src/authProvider.ts` file.
+Focus on the [` `](https://refine.dev/docs/api-reference/core/components/refine-config/) component, which comes with props passed to it. Notice the `dataProvider` prop. It uses a `dataProvider()` function with `supabaseClient` passed as argument to generate the data provider object. The `authProvider` object also uses `supabaseClient` in implementing its methods. You can look it up in `src/authProvider.ts` file.
## Customize `authProvider`
-If you examine the `authProvider` object you can notice that it has a `login` method that implements a OAuth and Email / Password strategy for authentication. We'll, however, remove them and use Magic Links to allow users sign in with their email without using passwords.
+If you examine the `authProvider` object you can notice that it has a `login` method that implements an OAuth and Email / Password strategy for authentication. This tutorial instead removes them and use Magic Links to allow users sign in with their email without using passwords.
-We want to use `supabaseClient` auth's `signInWithOtp` method inside `authProvider.login` method:
+Use `supabaseClient` auth's `signInWithOtp` method inside `authProvider.login` method:
```ts name=src/authProvider.ts
login: async ({ email }) => {
@@ -182,320 +151,63 @@ login: async ({ email }) => {
},
```
-We also want to remove `register`, `updatePassword`, `forgotPassword` and `getPermissions` properties, which are optional type members and also not necessary for our app. The final `authProvider` object looks like this:
-
-<$CodeTabs>
-
-```ts name=src/authProvider.ts
-import { AuthProvider } from '@refinedev/core'
-
-import { supabaseClient } from './utility'
-
-const authProvider: AuthProvider = {
- login: async ({ email }) => {
- try {
- const { error } = await supabaseClient.auth.signInWithOtp({ email })
-
- if (!error) {
- alert('Check your email for the login link!')
- return {
- success: true,
- }
- }
-
- throw error
- } catch (e: any) {
- alert(e.message)
- return {
- success: false,
- e,
- }
- }
- },
- logout: async () => {
- const { error } = await supabaseClient.auth.signOut()
-
- if (error) {
- return {
- success: false,
- error,
- }
- }
-
- return {
- success: true,
- redirectTo: '/',
- }
- },
- onError: async (error) => {
- console.error(error)
- return { error }
- },
- check: async () => {
- try {
- const { data } = await supabaseClient.auth.getSession()
- const { session } = data
-
- if (!session) {
- return {
- authenticated: false,
- error: {
- message: 'Check failed',
- name: 'Session not found',
- },
- logout: true,
- redirectTo: '/login',
- }
- }
- } catch (error: any) {
- return {
- authenticated: false,
- error: error || {
- message: 'Check failed',
- name: 'Not authenticated',
- },
- logout: true,
- redirectTo: '/login',
- }
- }
+Remove `register`, `updatePassword`, `forgotPassword` and `getPermissions` properties, which are optional type members and also not necessary for the app. The final `authProvider` object looks like this:
- return {
- authenticated: true,
- }
- },
- getIdentity: async () => {
- const { data } = await supabaseClient.auth.getUser()
-
- if (data?.user) {
- return {
- ...data.user,
- name: data.user.email,
- }
- }
-
- return null
- },
-}
-
-export default authProvider
-```
-
-$CodeTabs>
+<$CodeSample
+path="/user-management/refine-user-management/src/authProvider.ts"
+lines={[[1, -1]]}
+meta="name=src/authProvider.ts"
+/>
### Set up a login component
-We have chosen to use the headless Refine core package that comes with no supported UI framework. So, let's set up a plain React component to manage logins and sign ups.
+As the app uses the headless Refine core package that comes with no supported UI framework set up a plain React component to manage logins and sign ups.
Create and edit `src/components/auth.tsx`:
-<$CodeTabs>
-
-```ts name=src/components/auth.tsx
-import { useState } from 'react'
-import { useLogin } from '@refinedev/core'
-
-export default function Auth() {
- const [email, setEmail] = useState('')
- const { isPending, mutate: login } = useLogin()
-
- const handleLogin = async (event: { preventDefault: () => void }) => {
- event.preventDefault()
- login({ email })
- }
-
- return (
-
-
-
Supabase + Refine
-
Sign in via magic link with your email below
-
-
-
- )
-}
-```
-
-$CodeTabs>
+<$CodeSample
+path="/user-management/refine-user-management/src/components/auth.tsx"
+lines={[[1, -1]]}
+meta="name=src/components/auth.tsx"
+/>
-Notice we are using the [`useLogin()`](https://refine.dev/docs/api-reference/core/hooks/authentication/useLogin/) Refine auth hook to grab the `mutate: login` method to use inside `handleLogin()` function and `isLoading` state for our form submission. The `useLogin()` hook conveniently offers us access to `authProvider.login` method for authenticating the user with OTP.
+The [`useLogin()`](https://refine.dev/docs/api-reference/core/hooks/authentication/useLogin/) Refine auth hook to grab the `mutate: login` method to use inside `handleLogin()` function and `isLoading` state for the form submission. The `useLogin()` hook conveniently offers access to `authProvider.login` method for authenticating the user with OTP.
### Account page
-After a user is signed in we can allow them to edit their profile details and manage their account.
-
-Let's create a new component for that in `src/components/account.tsx`.
-
-<$CodeTabs>
-
-```tsx name=src/components/account.tsx
-import { BaseKey, useGetIdentity, useLogout } from '@refinedev/core'
-import { useForm } from '@refinedev/react-hook-form'
-
-interface IUserIdentity {
- id?: BaseKey
- username: string
- name: string
-}
-
-export interface IProfile {
- id?: string
- username?: string
- website?: string
- avatar_url?: string
-}
-
-export default function Account() {
- const { data: userIdentity } = useGetIdentity()
-
- const { mutate: logOut } = useLogout()
-
- const {
- refineCore: { formLoading, query, onFinish },
- register,
- control,
- handleSubmit,
- } = useForm({
- refineCoreProps: {
- resource: 'profiles',
- action: 'edit',
- id: userIdentity?.id,
- redirect: false,
- onMutationError: (data) => alert(data?.message),
- },
- })
+After a user is signed in, allow them to edit their profile details and manage their account.
- return (
-
- )
-}
-```
+Create a new component for that in `src/components/account.tsx`.
-$CodeTabs>
+<$CodeSample
+path="/user-management/refine-user-management/src/components/account.tsx"
+lines={[[1, 3], [8, 43], [69, -1]]}
+meta="name=src/components/account.tsx"
+/>
-Notice above that, we are using three Refine hooks, namely the [`useGetIdentity()`](https://refine.dev/docs/api-reference/core/hooks/authentication/useGetIdentity/), [`useLogOut()`](https://refine.dev/docs/api-reference/core/hooks/authentication/useLogout/) and [`useForm()`](https://refine.dev/docs/packages/documentation/react-hook-form/useForm/) hooks.
+This uses three Refine hooks, namely the [`useGetIdentity()`](https://refine.dev/docs/api-reference/core/hooks/authentication/useGetIdentity/), [`useLogOut()`](https://refine.dev/docs/api-reference/core/hooks/authentication/useLogout/) and [`useForm()`](https://refine.dev/docs/packages/documentation/react-hook-form/useForm/) hooks.
`useGetIdentity()` is a auth hook that gets the identity of the authenticated user. It grabs the current user by invoking the `authProvider.getIdentity` method under the hood.
`useLogOut()` is also an auth hook. It calls the `authProvider.logout` method to end the session.
-`useForm()`, in contrast, is a data hook that exposes a series of useful objects that serve the edit form. For example, we are grabbing the `onFinish` function to submit the form with the `handleSubmit` event handler. We are also using `formLoading` property to present state changes of the submitted form.
+`useForm()`, in contrast, is a data hook that exposes a series of useful objects that serve the edit form. For example, grabbing the `onFinish` function to submit the form with the `handleSubmit` event handler. It also uses `formLoading` property to present state changes of the submitted form.
-The `useForm()` hook is a higher-level hook built on top of Refine's `useForm()` core hook. It fully supports form state management, field validation and submission using React Hook Form. Behind the scenes, it invokes the `dataProvider.getOne` method to get the user profile data from our Supabase `/profiles` endpoint and also invokes `dataProvider.update` method when `onFinish()` is called.
+The `useForm()` hook is a higher-level hook built on top of Refine's `useForm()` core hook. It fully supports form state management, field validation and submission using React Hook Form. Behind the scenes, it invokes the `dataProvider.getOne` method to get the user profile data from the Supabase `/profiles` endpoint and also invokes `dataProvider.update` method when `onFinish()` is called.
### Launch!
-Now that we have all the components in place, let's define the routes for the pages in which they should be rendered.
+Now that you have all the components in place, define the routes for the pages in which they should be rendered.
Add the routes for `/login` with the ` ` component and the routes for `index` path with the ` ` component. So, the final `App.tsx`:
-<$CodeTabs>
+<$CodeSample
+path="/user-management/refine-user-management/src/App.tsx"
+lines={[[1, -1]]}
+meta="name=src/App.tsx"
+/>
-```tsx name=src/App.tsx
-import { Authenticated, Refine } from '@refinedev/core'
-import { RefineKbar, RefineKbarProvider } from '@refinedev/kbar'
-import routerProvider, {
- CatchAllNavigate,
- DocumentTitleHandler,
- UnsavedChangesNotifier,
-} from '@refinedev/react-router'
-import { dataProvider, liveProvider } from '@refinedev/supabase'
-import { BrowserRouter, Outlet, Route, Routes } from 'react-router'
-
-import './App.css'
-import authProvider from './authProvider'
-import { supabaseClient } from './utility'
-import Account from './components/account'
-import Auth from './components/auth'
-
-function App() {
- return (
-
-
-
-
- }
- >
-
-
- }
- >
- } />
-
- } />}>
- } />
-
-
-
-
-
-
-
-
- )
-}
-
-export default App
-```
-
-$CodeTabs>
-
-Let's test the App by running the server again:
+Test the App by running the server again:
```bash
npm run dev
@@ -511,153 +223,24 @@ Every Supabase project is configured with [Storage](/docs/guides/storage) for ma
### Create an upload widget
-Let's create an avatar for the user so that they can upload a profile photo. We can start by creating a new component:
+Create an avatar for the user so that they can upload a profile photo. Add a new component:
Create and edit `src/components/avatar.tsx`:
-<$CodeTabs>
-
-```tsx name=src/components/avatar.tsx
-import { useEffect, useState } from 'react'
-import { supabaseClient } from '../utility/supabaseClient'
-
-type TAvatarProps = {
- url?: string
- size: number
- onUpload: (filePath: string) => void
-}
-
-export default function Avatar({ url, size, onUpload }: TAvatarProps) {
- const [avatarUrl, setAvatarUrl] = useState('')
- const [uploading, setUploading] = useState(false)
-
- useEffect(() => {
- if (url) downloadImage(url)
- }, [url])
-
- async function downloadImage(path: string) {
- try {
- const { data, error } = await supabaseClient.storage.from('avatars').download(path)
- if (error) {
- throw error
- }
- const url = URL.createObjectURL(data)
- setAvatarUrl(url)
- } catch (error: any) {
- console.log('Error downloading image: ', error?.message)
- }
- }
-
- async function uploadAvatar(event: React.ChangeEvent) {
- try {
- setUploading(true)
-
- if (!event.target.files || event.target.files.length === 0) {
- throw new Error('You must select an image to upload.')
- }
-
- const file = event.target.files[0]
- const fileExt = file.name.split('.').pop()
- const fileName = `${Math.random()}.${fileExt}`
- const filePath = `${fileName}`
-
- const { error: uploadError } = await supabaseClient.storage
- .from('avatars')
- .upload(filePath, file)
-
- if (uploadError) {
- throw uploadError
- }
- onUpload(filePath)
- } catch (error: any) {
- alert(error.message)
- } finally {
- setUploading(false)
- }
- }
-
- return (
-
- {avatarUrl ? (
-
- ) : (
-
- )}
-
-
- {uploading ? 'Uploading ...' : 'Upload'}
-
-
-
-
- )
-}
-```
-
-$CodeTabs>
+<$CodeSample
+path="/user-management/refine-user-management/src/components/avatar.tsx"
+lines={[[1, -1]]}
+meta="name=src/components/avatar.tsx"
+/>
### Add the new widget
-And then we can add the widget to the Account page at `src/components/account.tsx`:
-
-<$CodeTabs>
-
-```tsx name=src/components/account.tsx
-// Import the new components
-import { Controller } from 'react-hook-form'
-import Avatar from './avatar'
-
-// ...
-
-return (
-
-)
-```
+And then add the widget to the Account page at `src/components/account.tsx`:
-$CodeTabs>
+<$CodeSample
+path="/user-management/refine-user-management/src/components/account.tsx"
+lines={[[1, -1]]}
+meta="name=src/components/account.tsx"
+/>
At this stage, you have a fully functional application!
diff --git a/examples/user-management/refine-user-management/package-lock.json b/examples/user-management/refine-user-management/package-lock.json
index 89ccd8b4a63e8..cc4c20eb61c76 100644
--- a/examples/user-management/refine-user-management/package-lock.json
+++ b/examples/user-management/refine-user-management/package-lock.json
@@ -8,34 +8,34 @@
"name": "refine-user-management",
"version": "0.1.0",
"dependencies": {
- "@refinedev/cli": "^2.16.50",
- "@refinedev/core": "^5.0.5",
- "@refinedev/inferencer": "^6.0.2",
+ "@refinedev/cli": "^2.16.51",
+ "@refinedev/core": "^5.0.9",
+ "@refinedev/inferencer": "^7.0.0",
"@refinedev/kbar": "^2.0.1",
- "@refinedev/react-hook-form": "^5.0.2",
+ "@refinedev/react-hook-form": "^5.0.4",
"@refinedev/react-router": "^2.0.3",
"@refinedev/supabase": "^6.0.1",
- "react": "^19.1.0",
- "react-dom": "^19.1.0",
- "react-hook-form": "^7.57.0",
- "react-router": "^7.0.2"
+ "react": "^19.2.4",
+ "react-dom": "^19.2.4",
+ "react-hook-form": "^7.71.2",
+ "react-router": "^7.13.1"
},
"devDependencies": {
- "@types/node": "^20",
- "@types/react": "^19.1.0",
- "@types/react-dom": "^19.1.0",
- "@vitejs/plugin-react": "^4.2.1",
- "typescript": "^5.8.3",
- "vite": "^5.4.15"
+ "@types/node": "^25.3.1",
+ "@types/react": "^19.2.14",
+ "@types/react-dom": "^19.2.3",
+ "@vitejs/plugin-react": "^5.1.4",
+ "typescript": "^5.9.3",
+ "vite": "^7.3.1"
}
},
"node_modules/@babel/code-frame": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
- "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5",
"js-tokens": "^4.0.0",
"picocolors": "^1.1.1"
},
@@ -44,29 +44,29 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz",
- "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
+ "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
- "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.5",
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-module-transforms": "^7.28.3",
- "@babel/helpers": "^7.28.4",
- "@babel/parser": "^7.28.5",
- "@babel/template": "^7.27.2",
- "@babel/traverse": "^7.28.5",
- "@babel/types": "^7.28.5",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
+ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-compilation-targets": "^7.28.6",
+ "@babel/helper-module-transforms": "^7.28.6",
+ "@babel/helpers": "^7.28.6",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/traverse": "^7.29.0",
+ "@babel/types": "^7.29.0",
"@jridgewell/remapping": "^2.3.5",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
@@ -92,13 +92,13 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
- "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
+ "version": "7.29.1",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
+ "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.5",
- "@babel/types": "^7.28.5",
+ "@babel/parser": "^7.29.0",
+ "@babel/types": "^7.29.0",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -120,12 +120,12 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
- "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
+ "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.27.2",
+ "@babel/compat-data": "^7.28.6",
"@babel/helper-validator-option": "^7.27.1",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
@@ -154,17 +154,17 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz",
- "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz",
+ "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==",
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.27.3",
"@babel/helper-member-expression-to-functions": "^7.28.5",
"@babel/helper-optimise-call-expression": "^7.27.1",
- "@babel/helper-replace-supers": "^7.27.1",
+ "@babel/helper-replace-supers": "^7.28.6",
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/traverse": "^7.28.5",
+ "@babel/traverse": "^7.28.6",
"semver": "^6.3.1"
},
"engines": {
@@ -206,27 +206,27 @@
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
- "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
+ "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
- "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
+ "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.28.3"
+ "@babel/helper-module-imports": "^7.28.6",
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/traverse": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -248,23 +248,23 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
- "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
+ "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz",
- "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz",
+ "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-member-expression-to-functions": "^7.27.1",
+ "@babel/helper-member-expression-to-functions": "^7.28.5",
"@babel/helper-optimise-call-expression": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/traverse": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -314,25 +314,25 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
- "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz",
+ "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==",
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.4"
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
- "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
+ "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.28.5"
+ "@babel/types": "^7.29.0"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -342,12 +342,12 @@
}
},
"node_modules/@babel/plugin-syntax-flow": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz",
- "integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz",
+ "integrity": "sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -357,12 +357,12 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz",
- "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz",
+ "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -372,12 +372,12 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz",
- "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz",
+ "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -387,13 +387,13 @@
}
},
"node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz",
- "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz",
+ "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-class-features-plugin": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -419,13 +419,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz",
- "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz",
+ "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-module-transforms": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -435,12 +435,12 @@
}
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz",
- "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz",
+ "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -450,12 +450,12 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz",
- "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz",
+ "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.28.6",
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
},
"engines": {
@@ -466,13 +466,13 @@
}
},
"node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz",
- "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz",
+ "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-class-features-plugin": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -514,16 +514,16 @@
}
},
"node_modules/@babel/plugin-transform-typescript": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz",
- "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz",
+ "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==",
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.27.3",
- "@babel/helper-create-class-features-plugin": "^7.28.5",
- "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-create-class-features-plugin": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/plugin-syntax-typescript": "^7.27.1"
+ "@babel/plugin-syntax-typescript": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -569,9 +569,9 @@
}
},
"node_modules/@babel/register": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.28.3.tgz",
- "integrity": "sha512-CieDOtd8u208eI49bYl4z1J22ySFw87IGwE+IswFEExH7e3rLgKb0WNQeumnacQ1+VoDJLYI5QFA3AJZuyZQfA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.28.6.tgz",
+ "integrity": "sha512-pgcbbEl/dWQYb6L6Yew6F94rdwygfuv+vJ/tXfwIOYAfPB6TNWpXUMEtEq3YuTeHRdvMIhvz13bkT9CNaS+wqA==",
"license": "MIT",
"dependencies": {
"clone-deep": "^4.0.1",
@@ -588,31 +588,31 @@
}
},
"node_modules/@babel/template": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
- "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
+ "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/parser": "^7.27.2",
- "@babel/types": "^7.27.1"
+ "@babel/code-frame": "^7.28.6",
+ "@babel/parser": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
- "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
+ "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.5",
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
"@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.28.5",
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.5",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.29.0",
"debug": "^4.3.1"
},
"engines": {
@@ -620,9 +620,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
- "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
+ "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
@@ -643,9 +643,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz",
+ "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==",
"cpu": [
"ppc64"
],
@@ -656,13 +656,13 @@
"aix"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz",
+ "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==",
"cpu": [
"arm"
],
@@ -673,13 +673,13 @@
"android"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz",
+ "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==",
"cpu": [
"arm64"
],
@@ -690,13 +690,13 @@
"android"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz",
+ "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==",
"cpu": [
"x64"
],
@@ -707,13 +707,13 @@
"android"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz",
+ "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==",
"cpu": [
"arm64"
],
@@ -724,13 +724,13 @@
"darwin"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz",
+ "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==",
"cpu": [
"x64"
],
@@ -741,13 +741,13 @@
"darwin"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz",
+ "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==",
"cpu": [
"arm64"
],
@@ -758,13 +758,13 @@
"freebsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz",
+ "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==",
"cpu": [
"x64"
],
@@ -775,13 +775,13 @@
"freebsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz",
+ "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==",
"cpu": [
"arm"
],
@@ -792,13 +792,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz",
+ "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==",
"cpu": [
"arm64"
],
@@ -809,13 +809,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz",
+ "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==",
"cpu": [
"ia32"
],
@@ -826,13 +826,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz",
+ "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==",
"cpu": [
"loong64"
],
@@ -843,13 +843,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz",
+ "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==",
"cpu": [
"mips64el"
],
@@ -860,13 +860,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz",
+ "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==",
"cpu": [
"ppc64"
],
@@ -877,13 +877,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz",
+ "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==",
"cpu": [
"riscv64"
],
@@ -894,13 +894,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz",
+ "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==",
"cpu": [
"s390x"
],
@@ -911,13 +911,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz",
+ "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==",
"cpu": [
"x64"
],
@@ -928,13 +928,30 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz",
+ "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz",
+ "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==",
"cpu": [
"x64"
],
@@ -945,13 +962,30 @@
"netbsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz",
+ "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz",
+ "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==",
"cpu": [
"x64"
],
@@ -962,13 +996,30 @@
"openbsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz",
+ "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz",
+ "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==",
"cpu": [
"x64"
],
@@ -979,13 +1030,13 @@
"sunos"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz",
+ "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==",
"cpu": [
"arm64"
],
@@ -996,13 +1047,13 @@
"win32"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz",
+ "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==",
"cpu": [
"ia32"
],
@@ -1013,13 +1064,13 @@
"win32"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz",
+ "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==",
"cpu": [
"x64"
],
@@ -1030,7 +1081,7 @@
"win32"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@inquirer/external-editor": {
@@ -1055,9 +1106,9 @@
}
},
"node_modules/@inquirer/external-editor/node_modules/iconv-lite": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
- "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
+ "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
@@ -1285,9 +1336,9 @@
}
},
"node_modules/@npmcli/package-json/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -1420,13 +1471,13 @@
"license": "MIT"
},
"node_modules/@refinedev/cli": {
- "version": "2.16.50",
- "resolved": "https://registry.npmjs.org/@refinedev/cli/-/cli-2.16.50.tgz",
- "integrity": "sha512-cPxCUB6vjYKbBbEQqY2JLENmPE9fneqTB7ZQRv7Hy1teF+hn4Q0iNH24C07JHZ5LSXnH98SXhgnUeUvNLRXPFQ==",
+ "version": "2.16.51",
+ "resolved": "https://registry.npmjs.org/@refinedev/cli/-/cli-2.16.51.tgz",
+ "integrity": "sha512-Hxm1fZP9wkXN+DIj/zzeOcANhMh/veljYXOkVbv5pLwap4olzlNhbRT3CPc4KyMgSf17YftqMmlmKKEdMXjqGQ==",
"license": "MIT",
"dependencies": {
"@npmcli/package-json": "^5.2.0",
- "@refinedev/devtools-server": "2.0.1",
+ "@refinedev/devtools-server": "2.0.2",
"boxen": "^5.1.2",
"camelcase": "^6.2.0",
"cardinal": "^2.1.1",
@@ -1470,12 +1521,12 @@
}
},
"node_modules/@refinedev/core": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/@refinedev/core/-/core-5.0.5.tgz",
- "integrity": "sha512-JpvqfrX/1Zob4QRO6BxrI0gYL7dCeIMTeTWTjgTVF3vyJjCrsl1U1j5fS9L70PbWwYYerqdSVQ/yRwzd3CrDKg==",
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/@refinedev/core/-/core-5.0.9.tgz",
+ "integrity": "sha512-aN7zIgpaLaOztjudYe7J5WK+CC4GsE6n+sex+ihYxshnNoNJGbteRkWo+TbIRRmntBssnCcpr0BP79U5lqJGdg==",
"license": "MIT",
"dependencies": {
- "@refinedev/devtools-internal": "2.0.1",
+ "@refinedev/devtools-internal": "2.0.2",
"@tanstack/react-query": "^5.81.5",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
@@ -1497,12 +1548,12 @@
}
},
"node_modules/@refinedev/devtools-internal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@refinedev/devtools-internal/-/devtools-internal-2.0.1.tgz",
- "integrity": "sha512-B28TrwJoQ+afm2jC74r96jgaAQXhc4SHYnpenJSyMrv0nxL3Trnr+QnuRxSIjOaYm7y9pACpX8lqbzIouWPCfg==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@refinedev/devtools-internal/-/devtools-internal-2.0.2.tgz",
+ "integrity": "sha512-1YYizOW1lyy9ep8eQ7TcUPBooKXIlvzTLjLdDArsQwx7P33cn2uXdqM7So5VhlNFXhjOjAKFgrH5c1jleRF8Jg==",
"license": "MIT",
"dependencies": {
- "@refinedev/devtools-shared": "2.0.1",
+ "@refinedev/devtools-shared": "2.0.2",
"@tanstack/react-query": "^5.81.5",
"error-stack-parser": "^2.1.4"
},
@@ -1517,12 +1568,12 @@
}
},
"node_modules/@refinedev/devtools-server": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@refinedev/devtools-server/-/devtools-server-2.0.1.tgz",
- "integrity": "sha512-BgP0A+Ag4njZ5I2GKCEYaLbYZ5AvDBBaL5xhlDnYxSwVQI7yMi5tH5vFsr2cveW5MyuLZBn7KDTyKYUVO3EnAQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@refinedev/devtools-server/-/devtools-server-2.0.2.tgz",
+ "integrity": "sha512-xiS9ROvwws/iqDykGps4hliPROYkgJMTZTHEt4llwJ7rlXxRpXyF316n2wWZUakWSBXRYxgIkIvdDeAE7Uu1Tg==",
"license": "MIT",
"dependencies": {
- "@refinedev/devtools-shared": "2.0.1",
+ "@refinedev/devtools-shared": "2.0.2",
"body-parser": "^1.20.2",
"boxen": "^5.1.2",
"chalk": "^4.1.2",
@@ -1560,9 +1611,9 @@
}
},
"node_modules/@refinedev/devtools-shared": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@refinedev/devtools-shared/-/devtools-shared-2.0.1.tgz",
- "integrity": "sha512-x9Eg7wdwx8AB9LgN9Gg/bW4icpdIYCoJLCXZA2kOoY77+CHmUY6Uv78RgimvkIGEHZucbchJLCFoLdZkvx5ceQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@refinedev/devtools-shared/-/devtools-shared-2.0.2.tgz",
+ "integrity": "sha512-3cTjR1mEWn0tHFZBfPD5aVpBGLUhpAkfjqYCwKrijIicr1Utp/j0BqiPRnNqTf+W71HTng3znBpUhnR83u+tuA==",
"license": "MIT",
"dependencies": {
"@tanstack/react-query": "^5.81.5",
@@ -1579,9 +1630,9 @@
}
},
"node_modules/@refinedev/inferencer": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/@refinedev/inferencer/-/inferencer-6.0.2.tgz",
- "integrity": "sha512-/BgZ1FKrykYNtDa+EaKVQyXhhf7LGTZk6oJjc7+Ta3G9nb+7BeVuNFxEnf+qH25lU9koZ7pJ9bvvO67iy2fVyg==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@refinedev/inferencer/-/inferencer-7.0.0.tgz",
+ "integrity": "sha512-kF1GBp8mzNkbvMZ/7A8hYfPU5awNW3pmudu0t8ji53gquNJDOLEUuz4lPRFZaeUFLFT3NiNBQVvBEUeG5V6Xsw==",
"license": "MIT",
"dependencies": {
"@refinedev/core": "^5.0.5",
@@ -1617,7 +1668,7 @@
"@refinedev/chakra-ui": "^3.0.0",
"@refinedev/core": "^5.0.0",
"@refinedev/mantine": "^3.0.0",
- "@refinedev/mui": "^7.0.0",
+ "@refinedev/mui": "^8.0.0",
"@refinedev/react-hook-form": "^5.0.0",
"@refinedev/react-table": "^6.0.0",
"@tanstack/react-table": "^8.2.6",
@@ -1710,9 +1761,9 @@
}
},
"node_modules/@refinedev/react-hook-form": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@refinedev/react-hook-form/-/react-hook-form-5.0.2.tgz",
- "integrity": "sha512-GPuJPj36xQzyZktucVfcWOVUyMGQte+UmQNTf3ZimTMl9B/FxeGykoWG/UwhmtdXG2Atm/9Ao71rGvXA59JXVQ==",
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@refinedev/react-hook-form/-/react-hook-form-5.0.4.tgz",
+ "integrity": "sha512-JT4Wsr9ovVt0t06TYqUT/VeevfRRTLv6cr3zAsDE2e4IoDnZfG+Rz4YGzSIbn/WxBpveY6oSPd9UfXaOfffvXg==",
"license": "MIT",
"dependencies": {
"lodash": "^4.17.21",
@@ -1769,16 +1820,16 @@
}
},
"node_modules/@rolldown/pluginutils": {
- "version": "1.0.0-beta.27",
- "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
- "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==",
+ "version": "1.0.0-rc.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz",
+ "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==",
"dev": true,
"license": "MIT"
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz",
- "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz",
+ "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==",
"cpu": [
"arm"
],
@@ -1790,9 +1841,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz",
- "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz",
+ "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==",
"cpu": [
"arm64"
],
@@ -1804,9 +1855,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz",
- "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz",
+ "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==",
"cpu": [
"arm64"
],
@@ -1818,9 +1869,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz",
- "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz",
+ "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==",
"cpu": [
"x64"
],
@@ -1832,9 +1883,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz",
- "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz",
+ "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==",
"cpu": [
"arm64"
],
@@ -1846,9 +1897,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz",
- "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz",
+ "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==",
"cpu": [
"x64"
],
@@ -1860,9 +1911,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz",
- "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz",
+ "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==",
"cpu": [
"arm"
],
@@ -1874,9 +1925,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz",
- "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz",
+ "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==",
"cpu": [
"arm"
],
@@ -1888,9 +1939,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz",
- "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz",
+ "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==",
"cpu": [
"arm64"
],
@@ -1902,9 +1953,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz",
- "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz",
+ "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==",
"cpu": [
"arm64"
],
@@ -1916,9 +1967,23 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz",
- "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz",
+ "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-musl": {
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz",
+ "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==",
"cpu": [
"loong64"
],
@@ -1930,9 +1995,23 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz",
- "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz",
+ "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-musl": {
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz",
+ "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==",
"cpu": [
"ppc64"
],
@@ -1944,9 +2023,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz",
- "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz",
+ "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==",
"cpu": [
"riscv64"
],
@@ -1958,9 +2037,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz",
- "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz",
+ "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==",
"cpu": [
"riscv64"
],
@@ -1972,9 +2051,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz",
- "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz",
+ "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==",
"cpu": [
"s390x"
],
@@ -1986,9 +2065,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz",
- "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz",
+ "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==",
"cpu": [
"x64"
],
@@ -2000,9 +2079,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz",
- "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz",
+ "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==",
"cpu": [
"x64"
],
@@ -2013,10 +2092,24 @@
"linux"
]
},
+ "node_modules/@rollup/rollup-openbsd-x64": {
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz",
+ "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ]
+ },
"node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz",
- "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz",
+ "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==",
"cpu": [
"arm64"
],
@@ -2028,9 +2121,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz",
- "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz",
+ "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==",
"cpu": [
"arm64"
],
@@ -2042,9 +2135,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz",
- "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz",
+ "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==",
"cpu": [
"ia32"
],
@@ -2056,9 +2149,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz",
- "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz",
+ "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==",
"cpu": [
"x64"
],
@@ -2070,9 +2163,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz",
- "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz",
+ "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==",
"cpu": [
"x64"
],
@@ -2096,9 +2189,9 @@
}
},
"node_modules/@supabase/auth-js": {
- "version": "2.81.1",
- "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.81.1.tgz",
- "integrity": "sha512-K20GgiSm9XeRLypxYHa5UCnybWc2K0ok0HLbqCej/wRxDpJxToXNOwKt0l7nO8xI1CyQ+GrNfU6bcRzvdbeopQ==",
+ "version": "2.97.0",
+ "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.97.0.tgz",
+ "integrity": "sha512-2Og/1lqp+AIavr8qS2X04aSl8RBY06y4LrtIAGxat06XoXYiDxKNQMQzWDAKm1EyZFZVRNH48DO5YvIZ7la5fQ==",
"license": "MIT",
"dependencies": {
"tslib": "2.8.1"
@@ -2108,9 +2201,9 @@
}
},
"node_modules/@supabase/functions-js": {
- "version": "2.81.1",
- "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.81.1.tgz",
- "integrity": "sha512-sYgSO3mlgL0NvBFS3oRfCK4OgKGQwuOWJLzfPyWg0k8MSxSFSDeN/JtrDJD5GQrxskP6c58+vUzruBJQY78AqQ==",
+ "version": "2.97.0",
+ "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.97.0.tgz",
+ "integrity": "sha512-fSaA0ZeBUS9hMgpGZt5shIZvfs3Mvx2ZdajQT4kv/whubqDBAp3GU5W8iIXy21MRvKmO2NpAj8/Q6y+ZkZyF/w==",
"license": "MIT",
"dependencies": {
"tslib": "2.8.1"
@@ -2120,9 +2213,9 @@
}
},
"node_modules/@supabase/postgrest-js": {
- "version": "2.81.1",
- "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.81.1.tgz",
- "integrity": "sha512-DePpUTAPXJyBurQ4IH2e42DWoA+/Qmr5mbgY4B6ZcxVc/ZUKfTVK31BYIFBATMApWraFc8Q/Sg+yxtfJ3E0wSg==",
+ "version": "2.97.0",
+ "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.97.0.tgz",
+ "integrity": "sha512-g4Ps0eaxZZurvfv/KGoo2XPZNpyNtjth9aW8eho9LZWM0bUuBtxPZw3ZQ6ERSpEGogshR+XNgwlSPIwcuHCNww==",
"license": "MIT",
"dependencies": {
"tslib": "2.8.1"
@@ -2132,9 +2225,9 @@
}
},
"node_modules/@supabase/realtime-js": {
- "version": "2.81.1",
- "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.81.1.tgz",
- "integrity": "sha512-ViQ+Kxm8BuUP/TcYmH9tViqYKGSD1LBjdqx2p5J+47RES6c+0QHedM0PPAjthMdAHWyb2LGATE9PD2++2rO/tw==",
+ "version": "2.97.0",
+ "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.97.0.tgz",
+ "integrity": "sha512-37Jw0NLaFP0CZd7qCan97D1zWutPrTSpgWxAw6Yok59JZoxp4IIKMrPeftJ3LZHmf+ILQOPy3i0pRDHM9FY36Q==",
"license": "MIT",
"dependencies": {
"@types/phoenix": "^1.6.6",
@@ -2147,11 +2240,12 @@
}
},
"node_modules/@supabase/storage-js": {
- "version": "2.81.1",
- "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.81.1.tgz",
- "integrity": "sha512-UNmYtjnZnhouqnbEMC1D5YJot7y0rIaZx7FG2Fv8S3hhNjcGVvO+h9We/tggi273BFkiahQPS/uRsapo1cSapw==",
+ "version": "2.97.0",
+ "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.97.0.tgz",
+ "integrity": "sha512-9f6NniSBfuMxOWKwEFb+RjJzkfMdJUwv9oHuFJKfe/5VJR8cd90qw68m6Hn0ImGtwG37TUO+QHtoOechxRJ1Yg==",
"license": "MIT",
"dependencies": {
+ "iceberg-js": "^0.8.1",
"tslib": "2.8.1"
},
"engines": {
@@ -2159,25 +2253,25 @@
}
},
"node_modules/@supabase/supabase-js": {
- "version": "2.81.1",
- "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.81.1.tgz",
- "integrity": "sha512-KSdY7xb2L0DlLmlYzIOghdw/na4gsMcqJ8u4sD6tOQJr+x3hLujU9s4R8N3ob84/1bkvpvlU5PYKa1ae+OICnw==",
+ "version": "2.97.0",
+ "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.97.0.tgz",
+ "integrity": "sha512-kTD91rZNO4LvRUHv4x3/4hNmsEd2ofkYhuba2VMUPRVef1RCmnHtm7rIws38Fg0yQnOSZOplQzafn0GSiy6GVg==",
"license": "MIT",
"dependencies": {
- "@supabase/auth-js": "2.81.1",
- "@supabase/functions-js": "2.81.1",
- "@supabase/postgrest-js": "2.81.1",
- "@supabase/realtime-js": "2.81.1",
- "@supabase/storage-js": "2.81.1"
+ "@supabase/auth-js": "2.97.0",
+ "@supabase/functions-js": "2.97.0",
+ "@supabase/postgrest-js": "2.97.0",
+ "@supabase/realtime-js": "2.97.0",
+ "@supabase/storage-js": "2.97.0"
},
"engines": {
"node": ">=20.0.0"
}
},
"node_modules/@tabler/icons": {
- "version": "3.35.0",
- "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.35.0.tgz",
- "integrity": "sha512-yYXe+gJ56xlZFiXwV9zVoe3FWCGuZ/D7/G4ZIlDtGxSx5CGQK110wrnT29gUj52kEZoxqF7oURTk97GQxELOFQ==",
+ "version": "3.37.1",
+ "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.37.1.tgz",
+ "integrity": "sha512-neLCWkuyNHEPXCyYu6nbN4S3g/59BTa4qyITAugYVpq1YzYNDOZooW7/vRWH98ZItXAudxdKU8muFT7y1PqzuA==",
"license": "MIT",
"funding": {
"type": "github",
@@ -2185,12 +2279,12 @@
}
},
"node_modules/@tabler/icons-react": {
- "version": "3.35.0",
- "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-3.35.0.tgz",
- "integrity": "sha512-XG7t2DYf3DyHT5jxFNp5xyLVbL4hMJYJhiSdHADzAjLRYfL7AnjlRfiHDHeXxkb2N103rEIvTsBRazxXtAUz2g==",
+ "version": "3.37.1",
+ "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-3.37.1.tgz",
+ "integrity": "sha512-R7UE71Jji7i4Su56Y9zU1uYEBakUejuDJvyuYVmBuUoqp/x3Pn4cv2huarexR3P0GJ2eHg4rUj9l5zccqS6K/Q==",
"license": "MIT",
"dependencies": {
- "@tabler/icons": "3.35.0"
+ "@tabler/icons": ""
},
"funding": {
"type": "github",
@@ -2201,9 +2295,9 @@
}
},
"node_modules/@tanstack/query-core": {
- "version": "5.90.7",
- "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.7.tgz",
- "integrity": "sha512-6PN65csiuTNfBMXqQUxQhCNdtm1rV+9kC9YwWAIKcaxAauq3Wu7p18j3gQY3YIBJU70jT/wzCCZ2uqto/vQgiQ==",
+ "version": "5.90.20",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz",
+ "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==",
"license": "MIT",
"funding": {
"type": "github",
@@ -2211,12 +2305,12 @@
}
},
"node_modules/@tanstack/react-query": {
- "version": "5.90.7",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.7.tgz",
- "integrity": "sha512-wAHc/cgKzW7LZNFloThyHnV/AX9gTg3w5yAv0gvQHPZoCnepwqCMtzbuPbb2UvfvO32XZ46e8bPOYbfZhzVnnQ==",
+ "version": "5.90.21",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz",
+ "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==",
"license": "MIT",
"dependencies": {
- "@tanstack/query-core": "5.90.7"
+ "@tanstack/query-core": "5.90.20"
},
"funding": {
"type": "github",
@@ -2306,28 +2400,28 @@
}
},
"node_modules/@types/node": {
- "version": "20.19.25",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz",
- "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
+ "version": "25.3.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.1.tgz",
+ "integrity": "sha512-hj9YIJimBCipHVfHKRMnvmHg+wfhKc0o4mTtXh9pKBjC8TLJzz0nzGmLi5UJsYAUgSvXFHgb0V2oY10DUFtImw==",
"license": "MIT",
"dependencies": {
- "undici-types": "~6.21.0"
+ "undici-types": "~7.18.0"
}
},
"node_modules/@types/phoenix": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz",
- "integrity": "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==",
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.7.tgz",
+ "integrity": "sha512-oN9ive//QSBkf19rfDv45M7eZPi0eEXylht2OLEXicu5b4KoQ1OzXIw+xDSGWxSxe1JmepRR/ZH283vsu518/Q==",
"license": "MIT"
},
"node_modules/@types/react": {
- "version": "19.2.3",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.3.tgz",
- "integrity": "sha512-k5dJVszUiNr1DSe8Cs+knKR6IrqhqdhpUwzqhkS8ecQTSf3THNtbfIp/umqHMpX2bv+9dkx3fwDv/86LcSfvSg==",
+ "version": "19.2.14",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz",
+ "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "csstype": "^3.0.2"
+ "csstype": "^3.2.2"
}
},
"node_modules/@types/react-dom": {
@@ -2356,21 +2450,21 @@
}
},
"node_modules/@vitejs/plugin-react": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
- "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==",
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.4.tgz",
+ "integrity": "sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/core": "^7.28.0",
+ "@babel/core": "^7.29.0",
"@babel/plugin-transform-react-jsx-self": "^7.27.1",
"@babel/plugin-transform-react-jsx-source": "^7.27.1",
- "@rolldown/pluginutils": "1.0.0-beta.27",
+ "@rolldown/pluginutils": "1.0.0-rc.3",
"@types/babel__core": "^7.20.5",
- "react-refresh": "^0.17.0"
+ "react-refresh": "^0.18.0"
},
"engines": {
- "node": "^14.18.0 || >=16.0.0"
+ "node": "^20.19.0 || >=22.12.0"
},
"peerDependencies": {
"vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
@@ -2390,9 +2484,9 @@
}
},
"node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
@@ -2558,10 +2652,13 @@
}
},
"node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "license": "MIT"
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
},
"node_modules/base64-js": {
"version": "1.5.1",
@@ -2584,12 +2681,15 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
- "version": "2.8.26",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.26.tgz",
- "integrity": "sha512-73lC1ugzwoaWCLJ1LvOgrR5xsMLTqSKIEoMHVtL9E/HNk0PXtTM76ZIm84856/SF7Nv8mPZxKoBsgpm0tR1u1Q==",
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz",
+ "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==",
"license": "Apache-2.0",
"bin": {
- "baseline-browser-mapping": "dist/cli.js"
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
"node_modules/bl": {
@@ -2604,23 +2704,23 @@
}
},
"node_modules/body-parser": {
- "version": "1.20.3",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
- "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "version": "1.20.4",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz",
+ "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==",
"license": "MIT",
"dependencies": {
- "bytes": "3.1.2",
+ "bytes": "~3.1.2",
"content-type": "~1.0.5",
"debug": "2.6.9",
"depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.13.0",
- "raw-body": "2.5.2",
+ "destroy": "~1.2.0",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "on-finished": "~2.4.1",
+ "qs": "~6.14.0",
+ "raw-body": "~2.5.3",
"type-is": "~1.6.18",
- "unpipe": "1.0.0"
+ "unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8",
@@ -2643,12 +2743,12 @@
"license": "MIT"
},
"node_modules/body-parser/node_modules/qs": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
- "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "version": "6.14.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz",
+ "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==",
"license": "BSD-3-Clause",
"dependencies": {
- "side-channel": "^1.0.6"
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">=0.6"
@@ -2680,12 +2780,15 @@
}
},
"node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz",
+ "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==",
"license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
}
},
"node_modules/braces": {
@@ -2701,9 +2804,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.28.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz",
- "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
+ "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
"funding": [
{
"type": "opencollective",
@@ -2720,11 +2823,11 @@
],
"license": "MIT",
"dependencies": {
- "baseline-browser-mapping": "^2.8.25",
- "caniuse-lite": "^1.0.30001754",
- "electron-to-chromium": "^1.5.249",
+ "baseline-browser-mapping": "^2.9.0",
+ "caniuse-lite": "^1.0.30001759",
+ "electron-to-chromium": "^1.5.263",
"node-releases": "^2.0.27",
- "update-browserslist-db": "^1.1.4"
+ "update-browserslist-db": "^1.2.0"
},
"bin": {
"browserslist": "cli.js"
@@ -2814,9 +2917,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001754",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz",
- "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==",
+ "version": "1.0.30001774",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz",
+ "integrity": "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==",
"funding": [
{
"type": "opencollective",
@@ -3141,18 +3244,18 @@
"license": "MIT"
},
"node_modules/cookie": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
- "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz",
+ "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==",
"license": "MIT"
},
"node_modules/cross-spawn": {
@@ -3191,9 +3294,9 @@
}
},
"node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
"dev": true,
"license": "MIT"
},
@@ -3414,9 +3517,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.250",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz",
- "integrity": "sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==",
+ "version": "1.5.302",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz",
+ "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==",
"license": "ISC"
},
"node_modules/emoji-regex": {
@@ -3462,9 +3565,9 @@
}
},
"node_modules/envinfo": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.20.0.tgz",
- "integrity": "sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg==",
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz",
+ "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==",
"license": "MIT",
"bin": {
"envinfo": "dist/cli.js"
@@ -3519,9 +3622,9 @@
}
},
"node_modules/esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz",
+ "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -3529,32 +3632,35 @@
"esbuild": "bin/esbuild"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
+ "@esbuild/aix-ppc64": "0.27.3",
+ "@esbuild/android-arm": "0.27.3",
+ "@esbuild/android-arm64": "0.27.3",
+ "@esbuild/android-x64": "0.27.3",
+ "@esbuild/darwin-arm64": "0.27.3",
+ "@esbuild/darwin-x64": "0.27.3",
+ "@esbuild/freebsd-arm64": "0.27.3",
+ "@esbuild/freebsd-x64": "0.27.3",
+ "@esbuild/linux-arm": "0.27.3",
+ "@esbuild/linux-arm64": "0.27.3",
+ "@esbuild/linux-ia32": "0.27.3",
+ "@esbuild/linux-loong64": "0.27.3",
+ "@esbuild/linux-mips64el": "0.27.3",
+ "@esbuild/linux-ppc64": "0.27.3",
+ "@esbuild/linux-riscv64": "0.27.3",
+ "@esbuild/linux-s390x": "0.27.3",
+ "@esbuild/linux-x64": "0.27.3",
+ "@esbuild/netbsd-arm64": "0.27.3",
+ "@esbuild/netbsd-x64": "0.27.3",
+ "@esbuild/openbsd-arm64": "0.27.3",
+ "@esbuild/openbsd-x64": "0.27.3",
+ "@esbuild/openharmony-arm64": "0.27.3",
+ "@esbuild/sunos-x64": "0.27.3",
+ "@esbuild/win32-arm64": "0.27.3",
+ "@esbuild/win32-ia32": "0.27.3",
+ "@esbuild/win32-x64": "0.27.3"
}
},
"node_modules/escalade": {
@@ -3633,39 +3739,39 @@
}
},
"node_modules/express": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
- "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "version": "4.22.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz",
+ "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==",
"license": "MIT",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.3",
- "content-disposition": "0.5.4",
+ "body-parser": "~1.20.3",
+ "content-disposition": "~0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.7.1",
- "cookie-signature": "1.0.6",
+ "cookie": "~0.7.1",
+ "cookie-signature": "~1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "1.3.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
+ "finalhandler": "~1.3.1",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.0",
"merge-descriptors": "1.0.3",
"methods": "~1.1.2",
- "on-finished": "2.4.1",
+ "on-finished": "~2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.12",
+ "path-to-regexp": "~0.1.12",
"proxy-addr": "~2.0.7",
- "qs": "6.13.0",
+ "qs": "~6.14.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.19.0",
- "serve-static": "1.16.2",
+ "send": "~0.19.0",
+ "serve-static": "~1.16.2",
"setprototypeof": "1.2.0",
- "statuses": "2.0.1",
+ "statuses": "~2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
@@ -3694,12 +3800,12 @@
"license": "MIT"
},
"node_modules/express/node_modules/qs": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
- "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "version": "6.14.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz",
+ "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==",
"license": "BSD-3-Clause",
"dependencies": {
- "side-channel": "^1.0.6"
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">=0.6"
@@ -3771,18 +3877,36 @@
"license": "BSD-3-Clause"
},
"node_modules/fastq": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
- "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
"license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
}
},
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
"node_modules/figlet": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.9.3.tgz",
- "integrity": "sha512-majPgOpVtrZN1iyNGbsUP6bOtZ6eaJgg5HHh0vFvm5DJhh8dc+FJpOC4GABvMZ/A7XHAJUuJujhgUY/2jPWgMA==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.10.0.tgz",
+ "integrity": "sha512-aktIwEZZ6Gp9AWdMXW4YCi0J2Ahuxo67fNJRUIWD81w8pQ0t9TS8FFpbl27ChlTLF06VkwjDesZSzEVzN75rzA==",
"license": "MIT",
"dependencies": {
"commander": "^14.0.0"
@@ -3795,9 +3919,9 @@
}
},
"node_modules/figlet/node_modules/commander": {
- "version": "14.0.2",
- "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz",
- "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==",
+ "version": "14.0.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz",
+ "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==",
"license": "MIT",
"engines": {
"node": ">=20"
@@ -3831,17 +3955,17 @@
}
},
"node_modules/finalhandler": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
- "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz",
+ "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==",
"license": "MIT",
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
- "on-finished": "2.4.1",
+ "on-finished": "~2.4.1",
"parseurl": "~1.3.3",
- "statuses": "2.0.1",
+ "statuses": "~2.0.2",
"unpipe": "~1.0.0"
},
"engines": {
@@ -3958,9 +4082,9 @@
}
},
"node_modules/flow-parser": {
- "version": "0.291.0",
- "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.291.0.tgz",
- "integrity": "sha512-MLqjFn72Dvndqrkjy280HaIs4AV9Z6nxVRmNPO3TjbYcipg4hR7QX7tEYZYsVvaaZWZPGe6Mithluk2aPGlDOw==",
+ "version": "0.302.0",
+ "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.302.0.tgz",
+ "integrity": "sha512-Y7AMBG/MTixQ/sTSCSGtXrYtqocpWbu6YbsScv0icWSmllxz8hIYaJUMK6WopAW1x/rMD0dhihcsWnXJlpYphg==",
"license": "MIT",
"engines": {
"node": ">=0.4.0"
@@ -4135,9 +4259,10 @@
}
},
"node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
@@ -4338,19 +4463,23 @@
}
},
"node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
"license": "MIT",
"dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
},
"engines": {
"node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/http-proxy": {
@@ -4393,6 +4522,15 @@
"node": ">=10.17.0"
}
},
+ "node_modules/iceberg-js": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz",
+ "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
"node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -4719,12 +4857,12 @@
}
},
"node_modules/isexe": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
- "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
- "license": "ISC",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz",
+ "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==",
+ "license": "BlueOak-1.0.0",
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/isobject": {
@@ -4758,9 +4896,9 @@
"license": "MIT"
},
"node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
"license": "MIT",
"dependencies": {
"argparse": "^1.0.7",
@@ -4922,15 +5060,15 @@
}
},
"node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "version": "4.17.23",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
+ "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
"license": "MIT"
},
"node_modules/lodash-es": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
- "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
+ "version": "4.17.23",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz",
+ "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==",
"license": "MIT"
},
"node_modules/log-symbols": {
@@ -5467,12 +5605,12 @@
}
},
"node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "version": "9.0.8",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.8.tgz",
+ "integrity": "sha512-reYkDYtj/b19TeqbNZCV4q9t+Yxylf/rYBsLb42SXJatTv4/ylq5lEiAmhA/IToxO7NI2UzNMghHoHuaqDkAjw==",
"license": "ISC",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "brace-expansion": "^5.0.2"
},
"engines": {
"node": ">=16 || 14 >=14.17"
@@ -5491,10 +5629,10 @@
}
},
"node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "license": "ISC",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "license": "BlueOak-1.0.0",
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -6195,9 +6333,9 @@
}
},
"node_modules/qs": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
- "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz",
+ "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==",
"license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.1.0"
@@ -6239,45 +6377,45 @@
}
},
"node_modules/raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
+ "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
"license": "MIT",
"dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
+ "bytes": "~3.1.2",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/react": {
- "version": "19.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz",
- "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==",
+ "version": "19.2.4",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz",
+ "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
- "version": "19.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz",
- "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==",
+ "version": "19.2.4",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz",
+ "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==",
"license": "MIT",
"dependencies": {
"scheduler": "^0.27.0"
},
"peerDependencies": {
- "react": "^19.2.0"
+ "react": "^19.2.4"
}
},
"node_modules/react-hook-form": {
- "version": "7.66.0",
- "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.66.0.tgz",
- "integrity": "sha512-xXBqsWGKrY46ZqaHDo+ZUYiMUgi8suYu5kdrS20EG8KiL7VRQitEbNjm+UcrDYrNi1YLyfpmAeGjCZYXLT9YBw==",
+ "version": "7.71.2",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.71.2.tgz",
+ "integrity": "sha512-1CHvcDYzuRUNOflt4MOq3ZM46AronNJtQ1S7tnX6YN4y72qhgiUItpacZUAQ0TyWYci3yz1X+rXaSxiuEm86PA==",
"license": "MIT",
"engines": {
"node": ">=18.0.0"
@@ -6326,9 +6464,9 @@
}
},
"node_modules/react-refresh": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
- "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz",
+ "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6336,9 +6474,9 @@
}
},
"node_modules/react-router": {
- "version": "7.9.5",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.9.5.tgz",
- "integrity": "sha512-JmxqrnBZ6E9hWmf02jzNn9Jm3UqyeimyiwzD69NjxGySG6lIz/1LVPsoTCwN7NBX2XjCEa1LIX5EMz1j2b6u6A==",
+ "version": "7.13.1",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.1.tgz",
+ "integrity": "sha512-td+xP4X2/6BJvZoX6xw++A2DdEi++YypA69bJUV5oVvqf6/9/9nNlD70YO1e9d3MyamJEBQFEzk6mbfDYbqrSA==",
"license": "MIT",
"dependencies": {
"cookie": "^1.0.1",
@@ -6358,12 +6496,16 @@
}
},
"node_modules/react-router/node_modules/cookie": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
- "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz",
+ "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==",
"license": "MIT",
"engines": {
"node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/react-virtual": {
@@ -6529,6 +6671,12 @@
"rimraf": "bin.js"
}
},
+ "node_modules/rimraf/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
"node_modules/rimraf/node_modules/brace-expansion": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
@@ -6543,7 +6691,7 @@
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
@@ -6561,9 +6709,9 @@
}
},
"node_modules/rimraf/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -6573,9 +6721,9 @@
}
},
"node_modules/rollup": {
- "version": "4.53.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz",
- "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz",
+ "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6589,28 +6737,31 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@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",
+ "@rollup/rollup-android-arm-eabi": "4.59.0",
+ "@rollup/rollup-android-arm64": "4.59.0",
+ "@rollup/rollup-darwin-arm64": "4.59.0",
+ "@rollup/rollup-darwin-x64": "4.59.0",
+ "@rollup/rollup-freebsd-arm64": "4.59.0",
+ "@rollup/rollup-freebsd-x64": "4.59.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.59.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.59.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.59.0",
+ "@rollup/rollup-linux-arm64-musl": "4.59.0",
+ "@rollup/rollup-linux-loong64-gnu": "4.59.0",
+ "@rollup/rollup-linux-loong64-musl": "4.59.0",
+ "@rollup/rollup-linux-ppc64-gnu": "4.59.0",
+ "@rollup/rollup-linux-ppc64-musl": "4.59.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.59.0",
+ "@rollup/rollup-linux-riscv64-musl": "4.59.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.59.0",
+ "@rollup/rollup-linux-x64-gnu": "4.59.0",
+ "@rollup/rollup-linux-x64-musl": "4.59.0",
+ "@rollup/rollup-openbsd-x64": "4.59.0",
+ "@rollup/rollup-openharmony-arm64": "4.59.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.59.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.59.0",
+ "@rollup/rollup-win32-x64-gnu": "4.59.0",
+ "@rollup/rollup-win32-x64-msvc": "4.59.0",
"fsevents": "~2.3.2"
}
},
@@ -6682,9 +6833,9 @@
"license": "MIT"
},
"node_modules/sanitize-html": {
- "version": "2.17.0",
- "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.0.tgz",
- "integrity": "sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==",
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.1.tgz",
+ "integrity": "sha512-ehFCW+q1a4CSOWRAdX97BX/6/PDEkCqw7/0JXZAGQV57FQB3YOkTa/rrzHPeJ+Aghy4vZAFfWMYyfxIiB7F/gw==",
"license": "MIT",
"dependencies": {
"deepmerge": "^4.2.2",
@@ -6790,24 +6941,24 @@
"license": "ISC"
},
"node_modules/send": {
- "version": "0.19.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
- "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz",
+ "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==",
"license": "MIT",
"dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
"destroy": "1.2.0",
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.1",
"mime": "1.6.0",
"ms": "2.1.3",
- "on-finished": "2.4.1",
+ "on-finished": "~2.4.1",
"range-parser": "~1.2.1",
- "statuses": "2.0.1"
+ "statuses": "~2.0.2"
},
"engines": {
"node": ">= 0.8.0"
@@ -6828,25 +6979,16 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
},
- "node_modules/send/node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/serve-static": {
- "version": "1.16.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
- "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "version": "1.16.3",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz",
+ "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==",
"license": "MIT",
"dependencies": {
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
- "send": "0.19.0"
+ "send": "~0.19.1"
},
"engines": {
"node": ">= 0.8.0"
@@ -7070,9 +7212,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.22",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz",
- "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
+ "version": "3.0.23",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz",
+ "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==",
"license": "CC0-1.0"
},
"node_modules/sprintf-js": {
@@ -7088,9 +7230,9 @@
"license": "MIT"
},
"node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
"license": "MIT",
"engines": {
"node": ">= 0.8"
@@ -7248,6 +7390,36 @@
"integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==",
"license": "MIT"
},
+ "node_modules/tinyglobby": {
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/tmp": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz",
@@ -7353,9 +7525,9 @@
}
},
"node_modules/undici-types": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
- "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "version": "7.18.2",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
+ "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
"license": "MIT"
},
"node_modules/unicode-emoji-modifier-base": {
@@ -7486,9 +7658,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz",
- "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
"funding": [
{
"type": "opencollective",
@@ -7589,21 +7761,24 @@
}
},
"node_modules/vite": {
- "version": "5.4.21",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz",
- "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz",
+ "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "esbuild": "^0.21.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
+ "esbuild": "^0.27.0",
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3",
+ "postcss": "^8.5.6",
+ "rollup": "^4.43.0",
+ "tinyglobby": "^0.2.15"
},
"bin": {
"vite": "bin/vite.js"
},
"engines": {
- "node": "^18.0.0 || >=20.0.0"
+ "node": "^20.19.0 || >=22.12.0"
},
"funding": {
"url": "https://github.com/vitejs/vite?sponsor=1"
@@ -7612,19 +7787,25 @@
"fsevents": "~2.3.3"
},
"peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
+ "@types/node": "^20.19.0 || >=22.12.0",
+ "jiti": ">=1.21.0",
+ "less": "^4.0.0",
"lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
+ "sass": "^1.70.0",
+ "sass-embedded": "^1.70.0",
+ "stylus": ">=0.54.8",
+ "sugarss": "^5.0.0",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
},
"peerDependenciesMeta": {
"@types/node": {
"optional": true
},
+ "jiti": {
+ "optional": true
+ },
"less": {
"optional": true
},
@@ -7645,9 +7826,28 @@
},
"terser": {
"optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
}
}
},
+ "node_modules/vite/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/warn-once": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz",
@@ -7801,9 +8001,9 @@
}
},
"node_modules/ws": {
- "version": "8.18.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
- "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+ "version": "8.19.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz",
+ "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
diff --git a/examples/user-management/refine-user-management/package.json b/examples/user-management/refine-user-management/package.json
index dc17e87c34d6c..e82c6c1139fb5 100644
--- a/examples/user-management/refine-user-management/package.json
+++ b/examples/user-management/refine-user-management/package.json
@@ -4,25 +4,25 @@
"private": true,
"type": "module",
"dependencies": {
- "@refinedev/cli": "^2.16.50",
- "@refinedev/core": "^5.0.5",
- "@refinedev/inferencer": "^6.0.2",
+ "@refinedev/cli": "^2.16.51",
+ "@refinedev/core": "^5.0.9",
+ "@refinedev/inferencer": "^7.0.0",
"@refinedev/kbar": "^2.0.1",
- "@refinedev/react-hook-form": "^5.0.2",
+ "@refinedev/react-hook-form": "^5.0.4",
"@refinedev/react-router": "^2.0.3",
"@refinedev/supabase": "^6.0.1",
- "react": "^19.1.0",
- "react-dom": "^19.1.0",
- "react-hook-form": "^7.57.0",
- "react-router": "^7.0.2"
+ "react": "^19.2.4",
+ "react-dom": "^19.2.4",
+ "react-hook-form": "^7.71.2",
+ "react-router": "^7.13.1"
},
"devDependencies": {
- "@types/node": "^20",
- "@types/react": "^19.1.0",
- "@types/react-dom": "^19.1.0",
- "@vitejs/plugin-react": "^4.2.1",
- "typescript": "^5.8.3",
- "vite": "^5.4.15"
+ "@types/node": "^25.3.1",
+ "@types/react": "^19.2.14",
+ "@types/react-dom": "^19.2.3",
+ "@vitejs/plugin-react": "^5.1.4",
+ "typescript": "^5.9.3",
+ "vite": "^7.3.1"
},
"scripts": {
"dev": "refine dev",
diff --git a/examples/user-management/refine-user-management/src/App.tsx b/examples/user-management/refine-user-management/src/App.tsx
index 48e3f0d979010..88fb34ffe58a8 100644
--- a/examples/user-management/refine-user-management/src/App.tsx
+++ b/examples/user-management/refine-user-management/src/App.tsx
@@ -1,5 +1,5 @@
import { Authenticated, Refine } from "@refinedev/core";
-
+import { RefineKbar, RefineKbarProvider } from "@refinedev/kbar";
import routerProvider, {
CatchAllNavigate,
DocumentTitleHandler,
@@ -7,9 +7,9 @@ import routerProvider, {
} from "@refinedev/react-router";
import { BrowserRouter, Outlet, Route, Routes } from "react-router";
-import { supabaseClient } from "./providers/supabase-client";
-import { authProvider } from "./providers/auth-provider";
import { dataProvider, liveProvider } from "@refinedev/supabase";
+import authProvider from "./authProvider";
+import { supabaseClient } from "./utility";
import Account from "./components/account";
import Auth from "./components/auth";
@@ -19,38 +19,41 @@ import "./App.css";
function App() {
return (
-
-
- }
- >
-
-
- }
- >
- } />
-
- } />}
- >
- } />
-
-
-
-
-
+
+
+
+ }
+ >
+
+
+ }
+ >
+ } />
+
+ } />}
+ >
+ } />
+
+
+
+
+
+
+
);
}
diff --git a/examples/user-management/refine-user-management/src/providers/auth-provider.ts b/examples/user-management/refine-user-management/src/authProvider.ts
similarity index 87%
rename from examples/user-management/refine-user-management/src/providers/auth-provider.ts
rename to examples/user-management/refine-user-management/src/authProvider.ts
index 3e8ce4eba2eb0..c5f290b073d17 100644
--- a/examples/user-management/refine-user-management/src/providers/auth-provider.ts
+++ b/examples/user-management/refine-user-management/src/authProvider.ts
@@ -1,8 +1,8 @@
import { AuthProvider } from "@refinedev/core";
-import { supabaseClient } from "./supabase-client";
+import { supabaseClient } from "./utility";
-export const authProvider: AuthProvider = {
+const authProvider: AuthProvider = {
login: async ({ email }) => {
try {
const { error } = await supabaseClient.auth.signInWithOtp({ email });
@@ -44,10 +44,9 @@ export const authProvider: AuthProvider = {
},
check: async () => {
try {
- const { data } = await supabaseClient.auth.getSession();
- const { session } = data;
+ const { data, error } = await supabaseClient.auth.getClaims();
- if (!session) {
+ if (error || !data) {
return {
authenticated: false,
error: {
@@ -87,3 +86,5 @@ export const authProvider: AuthProvider = {
return null;
},
};
+
+export default authProvider;
diff --git a/examples/user-management/refine-user-management/src/components/avatar.tsx b/examples/user-management/refine-user-management/src/components/avatar.tsx
index 6299ae63181e3..0ac7be652389c 100644
--- a/examples/user-management/refine-user-management/src/components/avatar.tsx
+++ b/examples/user-management/refine-user-management/src/components/avatar.tsx
@@ -1,6 +1,6 @@
import { useEffect, useState } from "react";
-import { supabaseClient } from "../providers/supabase-client";
+import { supabaseClient } from "../utility/supabaseClient";
type TAvatarProps = {
url?: string;
diff --git a/examples/user-management/refine-user-management/src/providers/supabase-client.ts b/examples/user-management/refine-user-management/src/providers/supabase-client.ts
deleted file mode 100644
index 9d0f3b455ffa7..0000000000000
--- a/examples/user-management/refine-user-management/src/providers/supabase-client.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { createClient } from "@refinedev/supabase";
-
-const supabaseUrl = import.meta.env.VITE_SUPABASE_URL;
-const supabasePublishableKey = import.meta.env.VITE_SUPABASE_ANON_KEY;
-
-export const supabaseClient = createClient(
- supabaseUrl,
- supabasePublishableKey,
- {
- db: {
- schema: "public",
- },
- auth: {
- persistSession: true,
- },
- },
-);
diff --git a/examples/user-management/refine-user-management/src/utility/index.ts b/examples/user-management/refine-user-management/src/utility/index.ts
new file mode 100644
index 0000000000000..fbd0a15072b97
--- /dev/null
+++ b/examples/user-management/refine-user-management/src/utility/index.ts
@@ -0,0 +1 @@
+export { supabaseClient } from "./supabaseClient";
diff --git a/examples/user-management/refine-user-management/src/utility/supabaseClient.ts b/examples/user-management/refine-user-management/src/utility/supabaseClient.ts
new file mode 100644
index 0000000000000..6d78e56ff0ec8
--- /dev/null
+++ b/examples/user-management/refine-user-management/src/utility/supabaseClient.ts
@@ -0,0 +1,13 @@
+import { createClient } from "@refinedev/supabase";
+
+const supabaseUrl = import.meta.env.VITE_SUPABASE_URL;
+const supabaseKey = import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY;
+
+export const supabaseClient = createClient(supabaseUrl, supabaseKey, {
+ db: {
+ schema: "public",
+ },
+ auth: {
+ persistSession: true,
+ },
+});
From d41ab5b4ff185308b5f815b9304e2786ff30cd92 Mon Sep 17 00:00:00 2001
From: Riccardo Busetti
Date: Mon, 2 Mar 2026 16:01:44 +0100
Subject: [PATCH 2/6] ref(etl): Update configuration and add new parameters
(#43126)
---
.../DestinationForm/AdvancedSettings.tsx | 165 +++++++++++++-----
.../DestinationForm/DestinationForm.schema.ts | 2 +
.../DestinationForm/DestinationForm.utils.ts | 79 ++++++++-
.../DestinationForm/index.tsx | 150 ++++------------
.../create-destination-pipeline-mutation.ts | 48 ++---
.../update-destination-pipeline-mutation.ts | 44 ++---
.../validate-destination-mutation.ts | 10 +-
.../replication/validate-pipeline-mutation.ts | 18 +-
.../storage/s3-access-key-create-mutation.ts | 8 +-
packages/api-types/types/platform.d.ts | 112 ++++++++----
10 files changed, 382 insertions(+), 254 deletions(-)
diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/AdvancedSettings.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/AdvancedSettings.tsx
index 3971a14d673ce..475b47d824622 100644
--- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/AdvancedSettings.tsx
+++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/AdvancedSettings.tsx
@@ -1,6 +1,5 @@
import type { ChangeEvent } from 'react'
import type { UseFormReturn } from 'react-hook-form'
-
import {
Accordion_Shadcn_,
AccordionContent_Shadcn_,
@@ -11,8 +10,13 @@ import {
FormField_Shadcn_,
Input_Shadcn_,
PrePostTab,
+ Select_Shadcn_,
+ SelectContent_Shadcn_,
+ SelectItem_Shadcn_,
+ SelectTrigger_Shadcn_,
} from 'ui'
import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout'
+
import { DestinationType } from '../DestinationPanel.types'
import { type DestinationPanelSchemaType } from './DestinationForm.schema'
@@ -53,11 +57,11 @@ export const AdvancedSettings = ({
description={
<>
- Maximum time the pipeline waits to collect additional changes before
- flushing a batch.
+ Maximum time pipeline waits to collect additional changes before flushing a
+ batch.
- Lower values reduce replication latency; higher values improve batching
+ Lower values reduce replication latency, higher values improve batching
efficiency.
>
@@ -122,7 +126,7 @@ export const AdvancedSettings = ({
Number of parallel connections each table copy can use during initial sync.
- Higher values can copy large tables faster, but consume more database
+ More connections speed up large table copies, but use more database
connections.
>
@@ -143,47 +147,118 @@ export const AdvancedSettings = ({
)}
/>
- {/* BigQuery-specific: Max staleness */}
+ (
+
+
+
+
+ {field.value ?? 'error'}
+
+
+
+ Error
+
+ Blocks startup for manual recovery
+
+
+
+ Recreate
+
+ Rebuilds the slot and restarts replication from scratch
+
+
+
+
+
+
+ )}
+ />
+
{type === 'BigQuery' && (
- (
-
- Maximum staleness
- BigQuery only
-
- }
- layout="horizontal"
- description={
- <>
-
- Maximum allowed age for BigQuery cached metadata before reading base
- tables.
-
-
- Lower values improve freshness; higher values can reduce query cost and
- latency.
-
- >
- }
- >
-
-
-
-
-
-
- )}
- />
+ <>
+ (
+
+ Connection pool size
+ BigQuery only
+
+ }
+ layout="horizontal"
+ description={
+ <>
+ Size of the BigQuery Storage Write API connection pool.
+
+ More connections allow more parallel writes, but consume more resources.
+
+ >
+ }
+ >
+
+
+
+
+
+
+ )}
+ />
+
+ (
+
+ Maximum staleness
+ BigQuery only
+
+ }
+ layout="horizontal"
+ description={
+ <>
+
+ Maximum allowed age for BigQuery cached metadata before reading base
+ tables.
+
+
+ Lower values improve freshness, higher values can reduce query cost and
+ latency.
+
+ >
+ }
+ >
+
+
+
+
+
+
+ )}
+ />
+ >
)}
diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/DestinationForm.schema.ts b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/DestinationForm.schema.ts
index a8949f277292c..d2ff933585db7 100644
--- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/DestinationForm.schema.ts
+++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/DestinationForm.schema.ts
@@ -17,10 +17,12 @@ export const DestinationPanelFormSchema = z.object({
.int()
.min(1, 'Max copy connections per table should be greater than 0')
.optional(),
+ invalidatedSlotBehavior: z.enum(['error', 'recreate']).optional(),
// BigQuery fields
projectId: z.string().optional(),
datasetId: z.string().optional(),
serviceAccountKey: z.string().optional(),
+ connectionPoolSize: z.number().int().min(1).optional(),
maxStalenessMins: z.number().nonnegative().optional(),
// Analytics Bucket fields, only warehouse name and namespace are visible + editable fields
warehouseName: z.string().optional(),
diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/DestinationForm.utils.ts b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/DestinationForm.utils.ts
index 77a95a7cc4d75..e9801c0f20210 100644
--- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/DestinationForm.utils.ts
+++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/DestinationForm.utils.ts
@@ -1,8 +1,20 @@
+import { UseMutateAsyncFunction } from '@tanstack/react-query'
+import { snakeCase } from 'lodash'
import z from 'zod'
import { DestinationType } from '../DestinationPanel.types'
import { CREATE_NEW_KEY, CREATE_NEW_NAMESPACE } from './DestinationForm.constants'
import { DestinationPanelFormSchema } from './DestinationForm.schema'
+import {
+ BigQueryDestinationConfig,
+ DestinationConfig,
+ IcebergDestinationConfig,
+} from '@/data/replication/create-destination-pipeline-mutation'
+import {
+ type CreateS3AccessKeyCredentialVariables,
+ type S3AccessKeyCreateData,
+} from '@/data/storage/s3-access-key-create-mutation'
+import { ResponseError } from '@/types'
// Helper function to build destination config for validation
export const buildDestinationConfigForValidation = ({
@@ -22,7 +34,8 @@ export const buildDestinationConfigForValidation = ({
projectId: data.projectId ?? '',
datasetId: data.datasetId ?? '',
serviceAccountKey: data.serviceAccountKey ?? '',
- ...(data.maxStalenessMins !== undefined ? { maxStalenessMins: data.maxStalenessMins } : {}),
+ connectionPoolSize: data.connectionPoolSize,
+ maxStalenessMins: data.maxStalenessMins,
},
}
} else if (selectedType === 'Analytics Bucket') {
@@ -54,3 +67,67 @@ export const buildDestinationConfigForValidation = ({
throw new Error('Invalid destination type')
}
}
+
+export const buildDestinationConfig = async ({
+ projectRef,
+ selectedType,
+ data,
+ warehouseName,
+ createS3AccessKey,
+ resolveNamespace,
+}: {
+ projectRef?: string
+ selectedType: DestinationType
+ data: z.infer
+ warehouseName?: string
+ createS3AccessKey: UseMutateAsyncFunction<
+ S3AccessKeyCreateData,
+ ResponseError,
+ CreateS3AccessKeyCredentialVariables,
+ unknown
+ >
+ resolveNamespace: (
+ data: z.infer
+ ) => Promise
+}) => {
+ if (!projectRef) throw new Error('Project ref is required')
+
+ let destinationConfig: DestinationConfig | undefined = undefined
+
+ if (selectedType === 'BigQuery') {
+ const bigQueryConfig: BigQueryDestinationConfig = {
+ projectId: data.projectId ?? '',
+ datasetId: data.datasetId ?? '',
+ serviceAccountKey: data.serviceAccountKey ?? '',
+ connectionPoolSize: data.connectionPoolSize,
+ maxStalenessMins: data.maxStalenessMins,
+ }
+ destinationConfig = { bigQuery: bigQueryConfig }
+ } else if (selectedType === 'Analytics Bucket') {
+ let s3Keys = { accessKey: data.s3AccessKeyId, secretKey: data.s3SecretAccessKey }
+
+ if (data.s3AccessKeyId === CREATE_NEW_KEY) {
+ const newKeys = await createS3AccessKey({
+ projectRef,
+ description: `Autogenerated key for replication to ${snakeCase(warehouseName)}`,
+ })
+ s3Keys = { accessKey: newKeys.access_key, secretKey: newKeys.secret_key }
+ }
+
+ // Resolve namespace (create if needed)
+ const finalNamespace = await resolveNamespace(data)
+
+ const icebergConfig: IcebergDestinationConfig = {
+ projectRef: projectRef,
+ warehouseName: data.warehouseName ?? '',
+ namespace: finalNamespace,
+ catalogToken: data.catalogToken ?? '',
+ s3AccessKeyId: s3Keys.accessKey ?? '',
+ s3SecretAccessKey: s3Keys.secretKey ?? '',
+ s3Region: data.s3Region ?? '',
+ }
+ destinationConfig = { iceberg: icebergConfig }
+ }
+
+ return destinationConfig
+}
diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/index.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/index.tsx
index 8d99386278eac..f9291d4db11b0 100644
--- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/index.tsx
+++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/index.tsx
@@ -6,9 +6,6 @@ import { getKeys, useAPIKeysQuery } from 'data/api-keys/api-keys-query'
import { useProjectSettingsV2Query } from 'data/config/project-settings-v2-query'
import {
BatchConfig,
- BigQueryDestinationConfig,
- DestinationConfig,
- IcebergDestinationConfig,
useCreateDestinationPipelineMutation,
} from 'data/replication/create-destination-pipeline-mutation'
import { useReplicationDestinationByIdQuery } from 'data/replication/destination-by-id-query'
@@ -27,7 +24,6 @@ import { useIcebergNamespaceCreateMutation } from 'data/storage/iceberg-namespac
import { useS3AccessKeyCreateMutation } from 'data/storage/s3-access-key-create-mutation'
import { AnimatePresence, motion } from 'framer-motion'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
-import { snakeCase } from 'lodash'
import { Loader2 } from 'lucide-react'
import { useEffect, useMemo, useRef, useState } from 'react'
import { useForm } from 'react-hook-form'
@@ -41,9 +37,12 @@ import * as z from 'zod'
import { DestinationType } from '../DestinationPanel.types'
import { AdvancedSettings } from './AdvancedSettings'
-import { CREATE_NEW_KEY, CREATE_NEW_NAMESPACE } from './DestinationForm.constants'
+import { CREATE_NEW_NAMESPACE } from './DestinationForm.constants'
import { DestinationPanelFormSchema as FormSchema } from './DestinationForm.schema'
-import { buildDestinationConfigForValidation } from './DestinationForm.utils'
+import {
+ buildDestinationConfig,
+ buildDestinationConfigForValidation,
+} from './DestinationForm.utils'
import { DestinationNameInput } from './DestinationNameInput'
import { AnalyticsBucketFields, BigQueryFields } from './DestinationPanelFields'
import { NewPublicationPanel } from './NewPublicationPanel'
@@ -176,10 +175,16 @@ export const DestinationForm = ({
maxFillMs: pipelineData?.config?.batch?.max_fill_ms ?? undefined,
maxTableSyncWorkers: pipelineData?.config?.max_table_sync_workers ?? undefined,
maxCopyConnectionsPerTable: pipelineData?.config?.max_copy_connections_per_table ?? undefined,
+ invalidatedSlotBehavior:
+ (pipelineData?.config as { invalidated_slot_behavior?: 'error' | 'recreate' } | undefined)
+ ?.invalidated_slot_behavior ?? undefined,
// BigQuery fields
projectId: isBigQueryConfig ? config.big_query.project_id : '',
datasetId: isBigQueryConfig ? config.big_query.dataset_id : '',
serviceAccountKey: isBigQueryConfig ? config.big_query.service_account_key : '',
+ connectionPoolSize:
+ (config as { big_query?: { connection_pool_size?: number } } | undefined)?.big_query
+ ?.connection_pool_size ?? undefined,
maxStalenessMins: isBigQueryConfig ? config.big_query.max_staleness_mins : undefined, // Default: null
// Analytics Bucket fields
warehouseName: isIcebergConfig ? config.iceberg.supabase.warehouse_name : '',
@@ -305,6 +310,7 @@ export const DestinationForm = ({
maxFillMs: data.maxFillMs,
maxTableSyncWorkers: data.maxTableSyncWorkers,
maxCopyConnectionsPerTable: data.maxCopyConnectionsPerTable,
+ invalidatedSlotBehavior: data.invalidatedSlotBehavior,
}),
])
@@ -349,10 +355,6 @@ export const DestinationForm = ({
return !hasCriticalFailures
}
- // [Joshen] I reckon this function can be refactored to be a bit more modular, it's currently pretty
- // complicated with 4 different types of flows -> edit bigquery/analytics, and create bigquery/analytics
- // At first glance we could try grouping as edit / create bigquery, edit / create analytics
- // since the destination config seems rather similar between edit and create for the same type
const submitPipeline = async (data: z.infer) => {
if (!projectRef) return console.error('Project ref is required')
if (!sourceId) return console.error('Source id is required')
@@ -361,56 +363,31 @@ export const DestinationForm = ({
}
try {
- if (editMode && existingDestination) {
- if (!existingDestination.pipelineId) return console.error('Pipeline id is required')
+ const destinationConfig = await buildDestinationConfig({
+ projectRef,
+ selectedType,
+ warehouseName,
+ data,
+ createS3AccessKey,
+ resolveNamespace,
+ })
- let destinationConfig: DestinationConfig | undefined = undefined
+ if (!destinationConfig) throw new Error('Destination configuration is missing')
- if (selectedType === 'BigQuery') {
- const bigQueryConfig: BigQueryDestinationConfig = {
- projectId: data.projectId ?? '',
- datasetId: data.datasetId ?? '',
- serviceAccountKey: data.serviceAccountKey ?? '',
- }
- if (!!data.maxStalenessMins) {
- bigQueryConfig.maxStalenessMins = data.maxStalenessMins
- }
- destinationConfig = { bigQuery: bigQueryConfig }
- } else if (selectedType === 'Analytics Bucket') {
- let s3Keys = { accessKey: data.s3AccessKeyId, secretKey: data.s3SecretAccessKey }
-
- if (data.s3AccessKeyId === CREATE_NEW_KEY) {
- const newKeys = await createS3AccessKey({
- projectRef,
- description: `Autogenerated key for replication to ${snakeCase(warehouseName)}`,
- })
- s3Keys = { accessKey: newKeys.access_key, secretKey: newKeys.secret_key }
- }
+ const batchConfig: BatchConfig | undefined =
+ data.maxFillMs !== undefined ? { maxFillMs: data.maxFillMs } : undefined
+ const hasBatchFields = batchConfig !== undefined
- // Resolve namespace (create if needed)
- const finalNamespace = await resolveNamespace(data)
-
- const icebergConfig: IcebergDestinationConfig = {
- projectRef: projectRef,
- warehouseName: data.warehouseName ?? '',
- namespace: finalNamespace,
- catalogToken: data.catalogToken ?? '',
- s3AccessKeyId: s3Keys.accessKey ?? '',
- s3SecretAccessKey: s3Keys.secretKey ?? '',
- s3Region: data.s3Region ?? '',
- }
- destinationConfig = { iceberg: icebergConfig }
- }
-
- const batchConfig: BatchConfig | undefined =
- data.maxFillMs !== undefined
- ? {
- ...(data.maxFillMs !== undefined ? { maxFillMs: data.maxFillMs } : {}),
- }
- : undefined
- const hasBatchFields = batchConfig !== undefined
+ const pipelineConfig = {
+ publicationName: data.publicationName,
+ maxTableSyncWorkers: data.maxTableSyncWorkers,
+ maxCopyConnectionsPerTable: data.maxCopyConnectionsPerTable,
+ invalidatedSlotBehavior: data.invalidatedSlotBehavior,
+ ...(hasBatchFields ? { batch: batchConfig } : {}),
+ }
- if (!destinationConfig) throw new Error('Destination configuration is missing')
+ if (editMode && existingDestination) {
+ if (!existingDestination.pipelineId) return console.error('Pipeline id is required')
await updateDestinationPipeline({
destinationId: existingDestination.destinationId,
@@ -418,12 +395,7 @@ export const DestinationForm = ({
projectRef,
destinationName: data.name,
destinationConfig,
- pipelineConfig: {
- publicationName: data.publicationName,
- maxTableSyncWorkers: data.maxTableSyncWorkers,
- maxCopyConnectionsPerTable: data.maxCopyConnectionsPerTable,
- ...(hasBatchFields ? { batch: batchConfig } : {}),
- },
+ pipelineConfig,
sourceId,
})
// Set request status only right before starting, then fire and close
@@ -448,64 +420,12 @@ export const DestinationForm = ({
}
onClose()
} else {
- let destinationConfig: DestinationConfig | undefined = undefined
-
- if (selectedType === 'BigQuery') {
- const bigQueryConfig: BigQueryDestinationConfig = {
- projectId: data.projectId ?? '',
- datasetId: data.datasetId ?? '',
- serviceAccountKey: data.serviceAccountKey ?? '',
- }
- if (!!data.maxStalenessMins) {
- bigQueryConfig.maxStalenessMins = data.maxStalenessMins
- }
- destinationConfig = { bigQuery: bigQueryConfig }
- } else if (selectedType === 'Analytics Bucket') {
- let s3Keys = { accessKey: data.s3AccessKeyId, secretKey: data.s3SecretAccessKey }
-
- if (data.s3AccessKeyId === CREATE_NEW_KEY) {
- const newKeys = await createS3AccessKey({
- projectRef,
- description: `Autogenerated key for replication to ${snakeCase(warehouseName)}`,
- })
- s3Keys = { accessKey: newKeys.access_key, secretKey: newKeys.secret_key }
- }
-
- // Resolve namespace (create if needed)
- const finalNamespace = await resolveNamespace(data)
-
- const icebergConfig: IcebergDestinationConfig = {
- projectRef: projectRef,
- warehouseName: data.warehouseName ?? '',
- namespace: finalNamespace,
- catalogToken: data.catalogToken ?? '',
- s3AccessKeyId: s3Keys.accessKey ?? '',
- s3SecretAccessKey: s3Keys.secretKey ?? '',
- s3Region: data.s3Region ?? '',
- }
- destinationConfig = { iceberg: icebergConfig }
- }
- const batchConfig: BatchConfig | undefined =
- data.maxFillMs !== undefined
- ? {
- ...(data.maxFillMs !== undefined ? { maxFillMs: data.maxFillMs } : {}),
- }
- : undefined
- const hasBatchFields = batchConfig !== undefined
-
- if (!destinationConfig) throw new Error('Destination configuration is missing')
-
const { pipeline_id: pipelineId } = await createDestinationPipeline({
projectRef,
destinationName: data.name,
destinationConfig,
+ pipelineConfig,
sourceId,
- pipelineConfig: {
- publicationName: data.publicationName,
- maxTableSyncWorkers: data.maxTableSyncWorkers,
- maxCopyConnectionsPerTable: data.maxCopyConnectionsPerTable,
- ...(hasBatchFields ? { batch: batchConfig } : {}),
- },
})
// Set request status only right before starting, then fire and close
setRequestStatus(pipelineId, PipelineStatusRequestStatus.StartRequested, undefined)
diff --git a/apps/studio/data/replication/create-destination-pipeline-mutation.ts b/apps/studio/data/replication/create-destination-pipeline-mutation.ts
index 8a0cd04291ca1..96e81175306f8 100644
--- a/apps/studio/data/replication/create-destination-pipeline-mutation.ts
+++ b/apps/studio/data/replication/create-destination-pipeline-mutation.ts
@@ -18,6 +18,7 @@ export type BigQueryDestinationConfig = {
projectId: string
datasetId: string
serviceAccountKey: string
+ connectionPoolSize?: number
maxStalenessMins?: number
}
@@ -45,6 +46,7 @@ export type CreateDestinationPipelineParams = {
batch?: BatchConfig
maxTableSyncWorkers?: number
maxCopyConnectionsPerTable?: number
+ invalidatedSlotBehavior?: 'error' | 'recreate'
}
}
@@ -53,7 +55,13 @@ async function createDestinationPipeline(
projectRef,
destinationName: destinationName,
destinationConfig,
- pipelineConfig: { publicationName, batch, maxTableSyncWorkers, maxCopyConnectionsPerTable },
+ pipelineConfig: {
+ publicationName,
+ batch,
+ maxTableSyncWorkers,
+ maxCopyConnectionsPerTable,
+ invalidatedSlotBehavior,
+ },
sourceId,
}: CreateDestinationPipelineParams,
signal?: AbortSignal
@@ -64,16 +72,18 @@ async function createDestinationPipeline(
let destination_config: components['schemas']['CreateReplicationDestinationPipelineBody']['destination_config']
if ('bigQuery' in destinationConfig) {
- const { projectId, datasetId, serviceAccountKey, maxStalenessMins } = destinationConfig.bigQuery
+ const { projectId, datasetId, serviceAccountKey, connectionPoolSize, maxStalenessMins } =
+ destinationConfig.bigQuery
destination_config = {
big_query: {
project_id: projectId,
dataset_id: datasetId,
service_account_key: serviceAccountKey,
- ...(maxStalenessMins !== null ? { max_staleness_mins: maxStalenessMins } : {}),
+ connection_pool_size: connectionPoolSize,
+ max_staleness_mins: maxStalenessMins,
},
- }
+ } as components['schemas']['CreateReplicationDestinationPipelineBody']['destination_config']
} else if ('iceberg' in destinationConfig) {
const {
projectRef: icebergProjectRef,
@@ -102,35 +112,27 @@ async function createDestinationPipeline(
throw new Error('Invalid destination config: must specify either bigQuery or iceberg')
}
+ const pipeline_config = {
+ publication_name: publicationName,
+ max_table_sync_workers: maxTableSyncWorkers,
+ max_copy_connections_per_table: maxCopyConnectionsPerTable,
+ invalidated_slot_behavior: invalidatedSlotBehavior,
+ batch: batch ? { max_fill_ms: batch.maxFillMs } : undefined,
+ }
+
const { data, error } = await post('/platform/replication/{ref}/destinations-pipelines', {
params: { path: { ref: projectRef } },
body: {
source_id: sourceId,
destination_name: destinationName,
destination_config,
- pipeline_config: {
- publication_name: publicationName,
- ...(maxTableSyncWorkers !== undefined
- ? { max_table_sync_workers: maxTableSyncWorkers }
- : {}),
- ...(maxCopyConnectionsPerTable !== undefined
- ? { max_copy_connections_per_table: maxCopyConnectionsPerTable }
- : {}),
- ...(batch
- ? {
- batch: {
- ...(batch.maxFillMs !== undefined ? { max_fill_ms: batch.maxFillMs } : {}),
- },
- }
- : {}),
- },
+ pipeline_config:
+ pipeline_config as components['schemas']['CreateReplicationDestinationPipelineBody']['pipeline_config'],
},
signal,
})
- if (error) {
- handleError(error)
- }
+ if (error) handleError(error)
return data
}
diff --git a/apps/studio/data/replication/update-destination-pipeline-mutation.ts b/apps/studio/data/replication/update-destination-pipeline-mutation.ts
index a48f475357cf4..d86f1287d6ae2 100644
--- a/apps/studio/data/replication/update-destination-pipeline-mutation.ts
+++ b/apps/studio/data/replication/update-destination-pipeline-mutation.ts
@@ -19,6 +19,7 @@ export type UpdateDestinationPipelineParams = {
batch?: BatchConfig
maxTableSyncWorkers?: number
maxCopyConnectionsPerTable?: number
+ invalidatedSlotBehavior?: 'error' | 'recreate'
}
}
@@ -29,7 +30,13 @@ async function updateDestinationPipeline(
projectRef,
destinationName: destinationName,
destinationConfig,
- pipelineConfig: { publicationName, batch, maxTableSyncWorkers, maxCopyConnectionsPerTable },
+ pipelineConfig: {
+ publicationName,
+ batch,
+ maxTableSyncWorkers,
+ maxCopyConnectionsPerTable,
+ invalidatedSlotBehavior,
+ },
sourceId,
}: UpdateDestinationPipelineParams,
signal?: AbortSignal
@@ -40,15 +47,17 @@ async function updateDestinationPipeline(
let destination_config: components['schemas']['UpdateReplicationDestinationPipelineBody']['destination_config']
if ('bigQuery' in destinationConfig) {
- const { projectId, datasetId, serviceAccountKey, maxStalenessMins } = destinationConfig.bigQuery
+ const { projectId, datasetId, serviceAccountKey, connectionPoolSize, maxStalenessMins } =
+ destinationConfig.bigQuery
destination_config = {
big_query: {
project_id: projectId,
dataset_id: datasetId,
service_account_key: serviceAccountKey,
- ...(maxStalenessMins !== null ? { max_staleness_mins: maxStalenessMins } : {}),
+ connection_pool_size: connectionPoolSize,
+ max_staleness_mins: maxStalenessMins,
},
- }
+ } as components['schemas']['UpdateReplicationDestinationPipelineBody']['destination_config']
} else if ('iceberg' in destinationConfig) {
const {
projectRef: icebergProjectRef,
@@ -76,6 +85,14 @@ async function updateDestinationPipeline(
throw new Error('Invalid destination config: must specify either bigQuery or iceberg')
}
+ const pipeline_config = {
+ publication_name: publicationName,
+ max_table_sync_workers: maxTableSyncWorkers,
+ max_copy_connections_per_table: maxCopyConnectionsPerTable,
+ invalidated_slot_behavior: invalidatedSlotBehavior,
+ batch: batch ? { max_fill_ms: batch.maxFillMs } : undefined,
+ }
+
const { data, error } = await post(
'/platform/replication/{ref}/destinations-pipelines/{destination_id}/{pipeline_id}',
{
@@ -84,26 +101,13 @@ async function updateDestinationPipeline(
destination_config,
source_id: sourceId,
destination_name: destinationName,
- pipeline_config: {
- publication_name: publicationName,
- ...(maxTableSyncWorkers !== undefined
- ? { max_table_sync_workers: maxTableSyncWorkers }
- : {}),
- ...(maxCopyConnectionsPerTable !== undefined
- ? { max_copy_connections_per_table: maxCopyConnectionsPerTable }
- : {}),
- ...(batch
- ? {
- batch: {
- ...(batch.maxFillMs !== undefined ? { max_fill_ms: batch.maxFillMs } : {}),
- },
- }
- : {}),
- },
+ pipeline_config:
+ pipeline_config as components['schemas']['UpdateReplicationDestinationPipelineBody']['pipeline_config'],
},
signal,
}
)
+
if (error) handleError(error)
return data
}
diff --git a/apps/studio/data/replication/validate-destination-mutation.ts b/apps/studio/data/replication/validate-destination-mutation.ts
index f9468b2ae3a97..37c59fafde9a2 100644
--- a/apps/studio/data/replication/validate-destination-mutation.ts
+++ b/apps/studio/data/replication/validate-destination-mutation.ts
@@ -1,8 +1,8 @@
import { useMutation } from '@tanstack/react-query'
-
import type { components } from 'api-types'
import { handleError, post } from 'data/fetchers'
import type { ResponseError, UseCustomMutationOptions } from 'types'
+
import { DestinationConfig } from './create-destination-pipeline-mutation'
type ValidateDestinationParams = {
@@ -23,16 +23,18 @@ async function validateDestination(
let config: components['schemas']['ValidateReplicationDestinationBody']['config']
if ('bigQuery' in destinationConfig) {
- const { projectId, datasetId, serviceAccountKey, maxStalenessMins } = destinationConfig.bigQuery
+ const { projectId, datasetId, serviceAccountKey, connectionPoolSize, maxStalenessMins } =
+ destinationConfig.bigQuery
config = {
big_query: {
project_id: projectId,
dataset_id: datasetId,
service_account_key: serviceAccountKey,
- ...(maxStalenessMins !== undefined ? { max_staleness_mins: maxStalenessMins } : {}),
+ connection_pool_size: connectionPoolSize,
+ max_staleness_mins: maxStalenessMins,
},
- }
+ } as components['schemas']['ValidateReplicationDestinationBody']['config']
} else if ('iceberg' in destinationConfig) {
const {
projectRef: icebergProjectRef,
diff --git a/apps/studio/data/replication/validate-pipeline-mutation.ts b/apps/studio/data/replication/validate-pipeline-mutation.ts
index af822a5bd0702..a248559aecfc5 100644
--- a/apps/studio/data/replication/validate-pipeline-mutation.ts
+++ b/apps/studio/data/replication/validate-pipeline-mutation.ts
@@ -1,6 +1,5 @@
import { useMutation } from '@tanstack/react-query'
import { components } from 'api-types'
-
import { handleError, post } from 'data/fetchers'
import type { ResponseError, UseCustomMutationOptions } from 'types'
@@ -11,6 +10,7 @@ type ValidatePipelineParams = {
maxFillMs?: number
maxTableSyncWorkers?: number
maxCopyConnectionsPerTable?: number
+ invalidatedSlotBehavior?: 'error' | 'recreate'
}
type ValidatePipelineResponse = components['schemas']['ValidatePipelineResponse']
@@ -22,6 +22,7 @@ async function validatePipeline(
maxFillMs,
maxTableSyncWorkers,
maxCopyConnectionsPerTable,
+ invalidatedSlotBehavior,
}: ValidatePipelineParams,
signal?: AbortSignal
): Promise {
@@ -30,16 +31,19 @@ async function validatePipeline(
const batchConfig = maxFillMs !== undefined ? { max_fill_ms: maxFillMs } : undefined
+ const config = {
+ publication_name: publicationName,
+ max_table_sync_workers: maxTableSyncWorkers,
+ max_copy_connections_per_table: maxCopyConnectionsPerTable,
+ invalidated_slot_behavior: invalidatedSlotBehavior,
+ batch: batchConfig,
+ }
+
const { data, error } = await post('/platform/replication/{ref}/pipelines/validate', {
params: { path: { ref: projectRef } },
body: {
source_id: sourceId,
- config: {
- publication_name: publicationName,
- max_table_sync_workers: maxTableSyncWorkers,
- max_copy_connections_per_table: maxCopyConnectionsPerTable,
- batch: batchConfig,
- },
+ config: config as components['schemas']['ValidateReplicationPipelineBody']['config'],
},
signal,
})
diff --git a/apps/studio/data/storage/s3-access-key-create-mutation.ts b/apps/studio/data/storage/s3-access-key-create-mutation.ts
index 362d47ef557df..2536773648ec2 100644
--- a/apps/studio/data/storage/s3-access-key-create-mutation.ts
+++ b/apps/studio/data/storage/s3-access-key-create-mutation.ts
@@ -1,11 +1,11 @@
import { useMutation, useQueryClient } from '@tanstack/react-query'
-import { toast } from 'sonner'
-
import { handleError, post } from 'data/fetchers'
+import { toast } from 'sonner'
import type { ResponseError, UseCustomMutationOptions } from 'types'
+
import { storageCredentialsKeys } from './s3-access-key-keys'
-type CreateS3AccessKeyCredentialVariables = {
+export type CreateS3AccessKeyCredentialVariables = {
description: string
projectRef?: string
}
@@ -25,7 +25,7 @@ const createS3AccessKeyCredential = async ({
return data
}
-type S3AccessKeyCreateData = Awaited>
+export type S3AccessKeyCreateData = Awaited>
export function useS3AccessKeyCreateMutation({
onSuccess,
diff --git a/packages/api-types/types/platform.d.ts b/packages/api-types/types/platform.d.ts
index 9d917f93f37cf..2915887577f9f 100644
--- a/packages/api-types/types/platform.d.ts
+++ b/packages/api-types/types/platform.d.ts
@@ -5296,16 +5296,16 @@ export interface components {
config:
| {
big_query: {
+ /**
+ * @description Number of concurrent BigQuery Storage Write API connections.
+ * @example 8
+ */
+ connection_pool_size?: number
/**
* @description BigQuery dataset id
* @example analytics
*/
dataset_id: string
- /**
- * @description Maximum number of concurrent write streams
- * @example 8
- */
- max_concurrent_streams?: number
/**
* @description Maximum data staleness in minutes
* @example 5
@@ -5372,16 +5372,16 @@ export interface components {
destination_config:
| {
big_query: {
+ /**
+ * @description Number of concurrent BigQuery Storage Write API connections.
+ * @example 8
+ */
+ connection_pool_size?: number
/**
* @description BigQuery dataset id
* @example analytics
*/
dataset_id: string
- /**
- * @description Maximum number of concurrent write streams
- * @example 8
- */
- max_concurrent_streams?: number
/**
* @description Maximum data staleness in minutes
* @example 5
@@ -5452,6 +5452,12 @@ export interface components {
*/
max_fill_ms?: number
}
+ /**
+ * @description Behavior when the replication slot is invalidated
+ * @example error
+ * @enum {string}
+ */
+ invalidated_slot_behavior?: 'error' | 'recreate'
/** @description Maximum number of copy connections per table */
max_copy_connections_per_table?: number
/** @description Maximum number of table sync workers */
@@ -5479,6 +5485,12 @@ export interface components {
*/
max_fill_ms?: number
}
+ /**
+ * @description Behavior when the replication slot is invalidated
+ * @example error
+ * @enum {string}
+ */
+ invalidated_slot_behavior?: 'error' | 'recreate'
/** @description Maximum number of copy connections per table */
max_copy_connections_per_table?: number
/** @description Maximum number of table sync workers */
@@ -8461,16 +8473,16 @@ export interface components {
config:
| {
big_query: {
+ /**
+ * @description Number of concurrent BigQuery Storage Write API connections.
+ * @example 8
+ */
+ connection_pool_size?: number
/**
* @description BigQuery dataset id
* @example analytics
*/
dataset_id: string
- /**
- * @description Maximum number of concurrent write streams
- * @example 8
- */
- max_concurrent_streams?: number
/**
* @description Maximum data staleness in minutes
* @example 5
@@ -8549,16 +8561,16 @@ export interface components {
config:
| {
big_query: {
+ /**
+ * @description Number of concurrent BigQuery Storage Write API connections.
+ * @example 8
+ */
+ connection_pool_size?: number
/**
* @description BigQuery dataset id
* @example analytics
*/
dataset_id: string
- /**
- * @description Maximum number of concurrent write streams
- * @example 8
- */
- max_concurrent_streams?: number
/**
* @description Maximum data staleness in minutes
* @example 5
@@ -8761,6 +8773,12 @@ export interface components {
*/
max_fill_ms?: number
}
+ /**
+ * @description Behavior when the replication slot is invalidated
+ * @example error
+ * @enum {string}
+ */
+ invalidated_slot_behavior?: 'error' | 'recreate'
/** @description Maximum number of copy connections per table */
max_copy_connections_per_table?: number
/** @description Maximum number of table sync workers */
@@ -8820,6 +8838,12 @@ export interface components {
*/
max_fill_ms?: number
}
+ /**
+ * @description Behavior when the replication slot is invalidated
+ * @example error
+ * @enum {string}
+ */
+ invalidated_slot_behavior?: 'error' | 'recreate'
/** @description Maximum number of copy connections per table */
max_copy_connections_per_table?: number
/** @description Maximum number of table sync workers */
@@ -10198,16 +10222,16 @@ export interface components {
config:
| {
big_query: {
+ /**
+ * @description Number of concurrent BigQuery Storage Write API connections.
+ * @example 8
+ */
+ connection_pool_size?: number
/**
* @description BigQuery dataset id
* @example analytics
*/
dataset_id: string
- /**
- * @description Maximum number of concurrent write streams
- * @example 8
- */
- max_concurrent_streams?: number
/**
* @description Maximum data staleness in minutes
* @example 5
@@ -10274,16 +10298,16 @@ export interface components {
destination_config:
| {
big_query: {
+ /**
+ * @description Number of concurrent BigQuery Storage Write API connections.
+ * @example 8
+ */
+ connection_pool_size?: number
/**
* @description BigQuery dataset id
* @example analytics
*/
dataset_id: string
- /**
- * @description Maximum number of concurrent write streams
- * @example 8
- */
- max_concurrent_streams?: number
/**
* @description Maximum data staleness in minutes
* @example 5
@@ -10354,6 +10378,12 @@ export interface components {
*/
max_fill_ms?: number
}
+ /**
+ * @description Behavior when the replication slot is invalidated
+ * @example error
+ * @enum {string}
+ */
+ invalidated_slot_behavior?: 'error' | 'recreate'
/** @description Maximum number of copy connections per table */
max_copy_connections_per_table?: number
/** @description Maximum number of table sync workers */
@@ -10381,6 +10411,12 @@ export interface components {
*/
max_fill_ms?: number
}
+ /**
+ * @description Behavior when the replication slot is invalidated
+ * @example error
+ * @enum {string}
+ */
+ invalidated_slot_behavior?: 'error' | 'recreate'
/** @description Maximum number of copy connections per table */
max_copy_connections_per_table?: number
/** @description Maximum number of table sync workers */
@@ -10712,16 +10748,16 @@ export interface components {
config:
| {
big_query: {
+ /**
+ * @description Number of concurrent BigQuery Storage Write API connections.
+ * @example 8
+ */
+ connection_pool_size?: number
/**
* @description BigQuery dataset id
* @example analytics
*/
dataset_id: string
- /**
- * @description Maximum number of concurrent write streams
- * @example 8
- */
- max_concurrent_streams?: number
/**
* @description Maximum data staleness in minutes
* @example 5
@@ -10789,6 +10825,12 @@ export interface components {
*/
max_fill_ms?: number
}
+ /**
+ * @description Behavior when the replication slot is invalidated
+ * @example error
+ * @enum {string}
+ */
+ invalidated_slot_behavior?: 'error' | 'recreate'
/** @description Maximum number of copy connections per table */
max_copy_connections_per_table?: number
/** @description Maximum number of table sync workers */
From 91bb0c9b8d882232a7ac315513758ea2455343b0 Mon Sep 17 00:00:00 2001
From: Jordi Enric <37541088+jordienr@users.noreply.github.com>
Date: Mon, 2 Mar 2026 16:23:46 +0100
Subject: [PATCH 3/6] chore(sentry): set tracesSampleRate to 1.0 in studio
configs (#43243)
Increase traces sampling rate to 100%
---
apps/studio/instrumentation-client.ts | 2 +-
apps/studio/sentry.edge.config.ts | 2 +-
apps/studio/sentry.server.config.ts | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/apps/studio/instrumentation-client.ts b/apps/studio/instrumentation-client.ts
index 055ca24acab1f..cb96b35ad931c 100644
--- a/apps/studio/instrumentation-client.ts
+++ b/apps/studio/instrumentation-client.ts
@@ -96,7 +96,7 @@ Sentry.init({
debug: false,
// Enable performance monitoring
- tracesSampleRate: 0.001, // Capture 0.1% of transactions for performance monitoring
+ tracesSampleRate: 1.0, // Capture 100% of transactions for performance monitoring
integrations: (() => {
const thirdPartyErrorFilterIntegration = (Sentry as any).thirdPartyErrorFilterIntegration
diff --git a/apps/studio/sentry.edge.config.ts b/apps/studio/sentry.edge.config.ts
index edac95e2056c0..6b676515883eb 100644
--- a/apps/studio/sentry.edge.config.ts
+++ b/apps/studio/sentry.edge.config.ts
@@ -14,7 +14,7 @@ Sentry.init({
debug: false,
// Enable performance monitoring
- tracesSampleRate: 0.001, // Capture 0.1% of transactions for performance monitoring
+ tracesSampleRate: 1.0, // Capture 100% of transactions for performance monitoring
ignoreErrors: [
'NEXT_NOT_FOUND',
'NEXT_REDIRECT',
diff --git a/apps/studio/sentry.server.config.ts b/apps/studio/sentry.server.config.ts
index f4fee2dd10455..fa1dc65179ee1 100644
--- a/apps/studio/sentry.server.config.ts
+++ b/apps/studio/sentry.server.config.ts
@@ -13,7 +13,7 @@ Sentry.init({
debug: false,
// Enable performance monitoring
- tracesSampleRate: 0.001, // Capture 0.1% of transactions for performance monitoring
+ tracesSampleRate: 1.0, // Capture 100% of transactions for performance monitoring
ignoreErrors: [
'ResizeObserver',
'Failed to load Stripe.js',
From 1b5e47234098ed2417667e5b44fc2f485abb64f3 Mon Sep 17 00:00:00 2001
From: Joshen Lim
Date: Mon, 2 Mar 2026 23:34:57 +0800
Subject: [PATCH 4/6] Attempt to fix coveralls upload step (#43285)
---
.github/workflows/studio-unit-tests.yml | 4 ++++
.../interfaces/Auth/Policies/PolicyEditorModal/index.tsx | 2 +-
.../components/interfaces/Auth/Policies/PolicyReview.tsx | 3 ++-
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/studio-unit-tests.yml b/.github/workflows/studio-unit-tests.yml
index 3c8db2064e9f6..f7e96718d5e67 100644
--- a/.github/workflows/studio-unit-tests.yml
+++ b/.github/workflows/studio-unit-tests.yml
@@ -79,6 +79,10 @@ jobs:
continue-on-error: true
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
+ - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ with:
+ sparse-checkout: |
+ apps/studio
- name: Download coverage artifact
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
diff --git a/apps/studio/components/interfaces/Auth/Policies/PolicyEditorModal/index.tsx b/apps/studio/components/interfaces/Auth/Policies/PolicyEditorModal/index.tsx
index 96de1a741d866..8460189bed375 100644
--- a/apps/studio/components/interfaces/Auth/Policies/PolicyEditorModal/index.tsx
+++ b/apps/studio/components/interfaces/Auth/Policies/PolicyEditorModal/index.tsx
@@ -19,7 +19,7 @@ import {
createSQLPolicy,
} from '../Policies.utils'
import PolicyEditor from '../PolicyEditor'
-import PolicyReview from '../PolicyReview'
+import { PolicyReview } from '../PolicyReview'
import PolicySelection from '../PolicySelection'
import PolicyTemplates from '../PolicyTemplates'
import { PolicyTemplate } from '../PolicyTemplates/PolicyTemplates.constants'
diff --git a/apps/studio/components/interfaces/Auth/Policies/PolicyReview.tsx b/apps/studio/components/interfaces/Auth/Policies/PolicyReview.tsx
index 69d3e94d0d378..f6cdc8f45ecad 100644
--- a/apps/studio/components/interfaces/Auth/Policies/PolicyReview.tsx
+++ b/apps/studio/components/interfaces/Auth/Policies/PolicyReview.tsx
@@ -2,6 +2,7 @@ import SqlEditor from 'components/ui/SqlEditor'
import { isEmpty, noop } from 'lodash'
import { useState } from 'react'
import { Button, Modal } from 'ui'
+
import type { PolicyForReview } from './Policies.types'
interface PolicyReviewProps {
@@ -10,7 +11,7 @@ interface PolicyReviewProps {
onSelectSave: () => void
}
-const PolicyReview = ({
+export const PolicyReview = ({
policy = {},
onSelectBack = noop,
onSelectSave = noop,
From 82c5ffb19fe6e6110bfe34088b3ce2ba516eaae7 Mon Sep 17 00:00:00 2001
From: Gildas Garcia <1122076+djhi@users.noreply.github.com>
Date: Mon, 2 Mar 2026 16:43:47 +0100
Subject: [PATCH 5/6] Configure sharding for Studio e2e tests (#43211)
## Problem
The e2e test suite for Studio takes around 20min. Feedback loop is too
long
## Solution
Try enabling [playwright
sharding](https://playwright.dev/docs/test-sharding#merge-reports-cli).
Only 2 shards for now
## Results
Before:
After:
## Next steps
In future dedicated PRs, improve the tests themselves.
---------
Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>
---
.github/workflows/studio-e2e-test.yml | 83 +++++++++++++++++--
.../features/realtime-inspector.spec.ts | 4 +-
e2e/studio/playwright.config.ts | 13 +--
e2e/studio/playwright.merge.config.ts | 7 ++
package.json | 11 ++-
5 files changed, 102 insertions(+), 16 deletions(-)
create mode 100644 e2e/studio/playwright.merge.config.ts
diff --git a/.github/workflows/studio-e2e-test.yml b/.github/workflows/studio-e2e-test.yml
index e7f0cbb39b7db..c2a31de86b032 100644
--- a/.github/workflows/studio-e2e-test.yml
+++ b/.github/workflows/studio-e2e-test.yml
@@ -15,8 +15,16 @@ permissions:
jobs:
test:
+ name: 'E2E tests'
timeout-minutes: 60
runs-on: blacksmith-4vcpu-ubuntu-2404
+ strategy:
+ fail-fast: false
+ matrix:
+ shardIndex: [1, 2]
+ shardTotal: [2]
+ outputs:
+ tests_ran: ${{ steps.filter.outputs.studio == 'true' }}
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
@@ -55,13 +63,65 @@ jobs:
if: steps.filter.outputs.studio == 'true'
run: pnpm -C e2e/studio exec playwright install chromium --with-deps --only-shell
+ - name: Set up NextJS/Turbo cache
+ if: steps.filter.outputs.studio == 'true'
+ uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
+ with:
+ # See here for caching with `yarn`, `bun` or other package managers https://github.com/actions/cache/blob/main/examples.md or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
+ path: |
+ .turbo/cache
+ apps/studio/.next/build
+ apps/studio/.next/cache
+ # Generate a new cache whenever packages or source files change.
+ key: ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('apps/studio/**/*.js', 'apps/studio/**/*.jsx', 'apps/studio/**/*.ts', 'apps/studio/**/*.tsx') }}
+ # If source files changed but packages didn't, rebuild from a prior cache.
+ restore-keys: |
+ ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml') }}-
+
- name: 🚀 Run Playwright tests against Vercel Preview
if: steps.filter.outputs.studio == 'true'
id: playwright
- run: pnpm e2e
+ run: pnpm e2e --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
- - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ - name: Upload blob report to GitHub Actions Artifacts
if: always() && steps.filter.outputs.studio == 'true'
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ with:
+ name: blob-report-${{ matrix.shardIndex }}
+ path: e2e/studio/blob-report
+ retention-days: 7
+
+ - name: Fail job if tests failed
+ if: steps.filter.outputs.studio == 'true' && steps.playwright.outcome != 'success'
+ run: |
+ echo "E2E tests failed" >&2
+ exit 1
+
+ merge-reports:
+ name: 'E2E reports'
+ # Merge reports after playwright-tests, even if some shards have failed
+ if: ${{ !cancelled() && needs.test.outputs.tests_ran == 'true' }}
+ needs: [test]
+ runs-on: blacksmith-4vcpu-ubuntu-2404
+ steps:
+ - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+
+ - name: Use Node.js
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ with:
+ node-version-file: '.nvmrc'
+
+ - name: Download blob reports from GitHub Actions Artifacts
+ uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v 5.0.0
+ with:
+ path: e2e/studio/blob-report
+ pattern: blob-report-*
+ merge-multiple: true
+
+ - name: Merge Playwright reports
+ run: npx playwright merge-reports --config=e2e/studio/playwright.merge.config.ts -- e2e/studio/blob-report
+
+ - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: playwright-artifacts
path: |
@@ -70,14 +130,21 @@ jobs:
retention-days: 7
- name: Comment Playwright test results on PR
+ if: always() && github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork
uses: daun/playwright-report-comment@be9e270edd5ad86038604d3caa84a819a6ff6fed # v3.10.0
- if: always() && steps.filter.outputs.studio == 'true' && github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork
with:
report-file: e2e/studio/test-results/test-results.json
comment-title: '🎭 Playwright Test Results'
- - name: Fail job if tests failed
- if: steps.filter.outputs.studio == 'true' && (steps.playwright.outcome != 'success' || steps.summarize.outputs.flaky_count > 0)
- run: |
- echo "E2E tests failed" >&2
- exit 1
+ merge-results:
+ name: 'E2E results'
+ runs-on: ubuntu-latest
+ needs: [test]
+ if: ${{ !cancelled() && needs.test.outputs.tests_ran == 'true' }}
+ steps:
+ - name: All tests ok
+ if: ${{ !(contains(needs.*.result, 'failure')) }}
+ run: exit 0
+ - name: Some tests failed
+ if: ${{ contains(needs.*.result, 'failure') }}
+ run: exit 1
diff --git a/e2e/studio/features/realtime-inspector.spec.ts b/e2e/studio/features/realtime-inspector.spec.ts
index 64737faa4a7dd..e14ae749e1930 100644
--- a/e2e/studio/features/realtime-inspector.spec.ts
+++ b/e2e/studio/features/realtime-inspector.spec.ts
@@ -1,5 +1,5 @@
import { expect } from '@playwright/test'
-import { test } from '../utils/test.js'
+
import {
getMessageCount,
joinChannel,
@@ -10,6 +10,7 @@ import {
stopListening,
waitForRealtimeMessage,
} from '../utils/realtime-helpers.js'
+import { test } from '../utils/test.js'
const testChannelName = 'pw_realtime_test_channel'
@@ -116,6 +117,7 @@ test.describe('Realtime Inspector', () => {
await openBroadcastModal(page)
const codeEditor = page.getByRole('textbox', { name: /Editor content/i })
+ await expect(codeEditor).toBeInViewport({ timeout: 5000 })
await codeEditor.click({ force: true })
await page.keyboard.press('ControlOrMeta+KeyA')
await page.keyboard.type('{ invalid json }')
diff --git a/e2e/studio/playwright.config.ts b/e2e/studio/playwright.config.ts
index 72d0e4e8f04f9..2d7fe40971776 100644
--- a/e2e/studio/playwright.config.ts
+++ b/e2e/studio/playwright.config.ts
@@ -1,4 +1,5 @@
import { defineConfig } from '@playwright/test'
+
import { env, STORAGE_STATE_PATH } from './env.config.js'
const IS_CI = !!process.env.CI
@@ -132,10 +133,12 @@ export default defineConfig({
},
},
],
- reporter: [
- ['list'],
- ['html', { open: 'never' }],
- ['json', { outputFile: 'test-results/test-results.json' }],
- ],
+ reporter: IS_CI
+ ? [['list'], ['blob']]
+ : [
+ ['list'],
+ ['html', { open: 'never' }],
+ ['json', { outputFile: 'test-results/test-results.json' }],
+ ],
webServer: createWebServerConfig(),
})
diff --git a/e2e/studio/playwright.merge.config.ts b/e2e/studio/playwright.merge.config.ts
new file mode 100644
index 0000000000000..bcfc8d05bf1ba
--- /dev/null
+++ b/e2e/studio/playwright.merge.config.ts
@@ -0,0 +1,7 @@
+export default {
+ testDir: './features',
+ reporter: [
+ ['html', { open: 'never' }],
+ ['json', { outputFile: 'test-results/test-results.json' }],
+ ],
+}
diff --git a/package.json b/package.json
index 2968550a6cf16..6719ded886e89 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
"test:ui-patterns": "turbo run test --filter=ui-patterns",
"test:studio": "turbo run test --filter=studio",
"test:studio:watch": "turbo run test --filter=studio -- watch",
- "e2e:setup:cli": "supabase stop --all --no-backup ; supabase start --exclude studio && supabase db reset && supabase status --output json > keys.json && node scripts/generateLocalEnv.js",
+ "e2e:setup:cli": "supabase stop --all --no-backup ; supabase start --exclude studio && if [ -z \"${CI}\" ]; then supabase db reset; fi && supabase status --output json > keys.json && node scripts/generateLocalEnv.js",
"e2e:setup:selfhosted": "SKIP_ASSET_UPLOAD=1 pnpm e2e:setup:cli && NODE_ENV=test NODE_OPTIONS=\"--max-old-space-size=4096\" pnpm run build:studio && NODE_ENV=test pnpm --prefix ./apps/studio start",
"e2e:setup:platform": "SKIP_ASSET_UPLOAD=1 NODE_OPTIONS=\"--max-old-space-size=4096\" pnpm run build:studio && pnpm --prefix ./apps/studio start",
"e2e": "pnpm --prefix e2e/studio run e2e",
@@ -65,6 +65,13 @@
"pnpm": "10.24",
"node": ">=22"
},
- "keywords": ["postgres", "firebase", "storage", "functions", "database", "auth"],
+ "keywords": [
+ "postgres",
+ "firebase",
+ "storage",
+ "functions",
+ "database",
+ "auth"
+ ],
"packageManager": "pnpm@10.24.0"
}
From b03866f02361ff53e7250761ae2084fea8f40b97 Mon Sep 17 00:00:00 2001
From: Ivan Vasilov
Date: Mon, 2 Mar 2026 17:07:55 +0100
Subject: [PATCH 6/6] chore: Bump vulnerable dependencies (#43148)
This pull request primarily updates dependencies across the project to
their latest versions, improving compatibility, security, and
performance. It also modifies configuration files to align with the
current package management setup.
Dependency upgrades (core libraries and tools):
Bumps dependencies to solve the following issues:
- https://github.com/supabase/supabase/security/dependabot/2855
- https://github.com/supabase/supabase/security/dependabot/2844
- https://github.com/supabase/supabase/security/dependabot/2860
- https://github.com/supabase/supabase/security/dependabot/2815
- https://github.com/supabase/supabase/security/dependabot/2774
- https://github.com/supabase/supabase/security/dependabot/2836
- https://github.com/supabase/supabase/security/dependabot/2816
- https://github.com/supabase/supabase/security/dependabot/2778
- https://github.com/supabase/supabase/security/dependabot/2790
- https://github.com/supabase/supabase/security/dependabot/2793
Configuration and lock file updates:
* Changed `.prettierignore` to ignore `pnpm-lock.yaml` instead of
`package-lock.json`, reflecting the switch to pnpm as the package
manager.
* Updated dependency overrides in `pnpm-lock.yaml` for `tar` and
`fast-xml-parser` to ensure consistent versions across the workspace.
These updates collectively ensure the project stays current with its
dependencies, reduces potential vulnerabilities, and improves overall
stability and maintainability.
---
.prettierignore | 2 +-
apps/www/package.json | 2 +-
package.json | 2 +-
pnpm-lock.yaml | 310 ++++++++++++-----------------
pnpm-workspace.yaml | 7 +-
scripts/fix-audit-vulnerability.ts | 299 ++++++++++++++++++++++++++++
6 files changed, 440 insertions(+), 182 deletions(-)
create mode 100644 scripts/fix-audit-vulnerability.ts
diff --git a/.prettierignore b/.prettierignore
index e65459c8c023e..e0cec2dda8056 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1,7 +1,7 @@
.expo
.next
node_modules
-package-lock.json
+pnpm-lock.yaml
docker*
apps/**/out
# prettier-plugin-sql-cst only supports sqlite syntax
diff --git a/apps/www/package.json b/apps/www/package.json
index 7affd1ea62bea..be6323d3a36ae 100644
--- a/apps/www/package.json
+++ b/apps/www/package.json
@@ -83,7 +83,7 @@
"remark": "^15.0.1",
"remark-gfm": "^4.0.0",
"shared-data": "workspace:*",
- "swiper": "^11.0.7",
+ "swiper": "^12.1.2",
"typed.js": "^2.0.16",
"typescript": "catalog:",
"ui": "workspace:*",
diff --git a/package.json b/package.json
index 6719ded886e89..dfc41e721ae9e 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
"prettier-plugin-sql-cst": "^0.11.0",
"rimraf": "^6.0.0",
"sass": "^1.72.0",
- "supabase": "^2.65.6",
+ "supabase": "^2.76.10",
"supports-color": "^8.0.0",
"tailwindcss": "catalog:",
"tsx": "catalog:",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8fc7135cb2ae4..c425f8e4bb805 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -73,8 +73,12 @@ overrides:
lodash: ^4.17.23
payload>undici: ^7.18.2
refractor>prismjs: ^1.30.0
- tar: ^7.5.7
+ cacache>tar: ^7.5.8
+ node-gyp>tar: ^7.5.8
+ '@mapbox/node-pre-gyp>tar': ^7.5.8
tmp: ^0.2.4
+ '@aws-sdk/core>fast-xml-parser': ^5.3.5
+ openapi-sampler>fast-xml-parser: ^5.3.5
importers:
@@ -105,8 +109,8 @@ importers:
specifier: ^1.72.0
version: 1.72.0
supabase:
- specifier: ^2.65.6
- version: 2.67.1(supports-color@8.1.1)
+ specifier: ^2.76.10
+ version: 2.76.14(supports-color@8.1.1)
supports-color:
specifier: ^8.0.0
version: 8.1.1
@@ -208,7 +212,7 @@ importers:
version: 1.2.0
remark-gfm:
specifier: ^4.0.0
- version: 4.0.0(supports-color@8.1.1)
+ version: 4.0.1(supports-color@8.1.1)
sonner:
specifier: ^1.5.0
version: 1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -467,7 +471,7 @@ importers:
version: 17.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
rehype-katex:
specifier: ^7.0.0
- version: 7.0.0
+ version: 7.0.1
rehype-slug:
specifier: ^5.1.0
version: 5.1.0
@@ -796,7 +800,7 @@ importers:
version: 0.10.1
'@modelcontextprotocol/sdk':
specifier: ^1.25.2
- version: 1.25.3(hono@4.11.7)(supports-color@8.1.1)(zod@3.25.76)
+ version: 1.27.0(supports-color@8.1.1)(zod@3.25.76)
'@monaco-editor/react':
specifier: ^4.6.0
version: 4.6.0(monaco-editor@0.52.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -832,10 +836,10 @@ importers:
version: 2.98.0
'@supabase/mcp-server-supabase':
specifier: ^0.6.3
- version: 0.6.3(@modelcontextprotocol/sdk@1.25.3(hono@4.11.7)(supports-color@8.1.1)(zod@3.25.76))(zod@3.25.76)
+ version: 0.6.3(@modelcontextprotocol/sdk@1.27.0(supports-color@8.1.1)(zod@3.25.76))(zod@3.25.76)
'@supabase/mcp-utils':
specifier: ^0.3.2
- version: 0.3.2(@modelcontextprotocol/sdk@1.25.3(hono@4.11.7)(supports-color@8.1.1)(zod@3.25.76))(zod@3.25.76)
+ version: 0.3.2(@modelcontextprotocol/sdk@1.27.0(supports-color@8.1.1)(zod@3.25.76))(zod@3.25.76)
'@supabase/pg-meta':
specifier: workspace:*
version: link:../../packages/pg-meta
@@ -1379,7 +1383,7 @@ importers:
version: 5.83.0(react@18.3.1)
axios:
specifier: ^1.12.0
- version: 1.12.2
+ version: 1.13.5
class-variance-authority:
specifier: '*'
version: 0.6.1
@@ -1460,7 +1464,7 @@ importers:
version: 1.2.0
remark-gfm:
specifier: ^4.0.0
- version: 4.0.0(supports-color@8.1.1)
+ version: 4.0.1(supports-color@8.1.1)
sonner:
specifier: ^1.5.0
version: 1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -1748,8 +1752,8 @@ importers:
specifier: workspace:*
version: link:../../packages/shared-data
swiper:
- specifier: ^11.0.7
- version: 11.0.7
+ specifier: ^12.1.2
+ version: 12.1.2
typed.js:
specifier: ^2.0.16
version: 2.0.16
@@ -1975,7 +1979,7 @@ importers:
version: 15.2.0(encoding@0.1.13)(supports-color@8.1.1)
mdast-util-from-markdown:
specifier: ^2.0.0
- version: 2.0.0(supports-color@8.1.1)
+ version: 2.0.2(supports-color@8.1.1)
sql-formatter:
specifier: ^15.0.0
version: 15.4.9
@@ -2675,7 +2679,7 @@ importers:
version: 15.0.1(supports-color@8.1.1)
remark-gfm:
specifier: ^4.0.0
- version: 4.0.0(supports-color@8.1.1)
+ version: 4.0.1(supports-color@8.1.1)
scroll-into-view-if-needed:
specifier: ^3.1.0
version: 3.1.0
@@ -4441,8 +4445,8 @@ packages:
resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==}
engines: {node: 20 || >=22}
- '@isaacs/brace-expansion@5.0.0':
- resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==}
+ '@isaacs/brace-expansion@5.0.1':
+ resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==}
engines: {node: 20 || >=22}
'@isaacs/cliui@8.0.2':
@@ -4606,8 +4610,8 @@ packages:
'@mjackson/node-fetch-server@0.2.0':
resolution: {integrity: sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng==}
- '@modelcontextprotocol/sdk@1.25.3':
- resolution: {integrity: sha512-vsAMBMERybvYgKbg/l4L1rhS7VXV1c0CtyJg72vwxONVX0l4ZfKVAnZEWTQixJGTzKnELjQ59e4NbdFDALRiAQ==}
+ '@modelcontextprotocol/sdk@1.27.0':
+ resolution: {integrity: sha512-qOdO524oPMkUsOJTrsH9vz/HN3B5pKyW+9zIW51A9kDMVe7ON70drz1ouoyoyOcfzc+oxhkQ6jWmbyKnlWmYqA==}
engines: {node: '>=18'}
peerDependencies:
'@cfworker/json-schema': ^4.1.1
@@ -9751,8 +9755,8 @@ packages:
resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==}
engines: {node: '>=4'}
- axios@1.12.2:
- resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==}
+ axios@1.13.5:
+ resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==}
axobject-query@4.1.0:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
@@ -11729,18 +11733,18 @@ packages:
exponential-backoff@3.1.1:
resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==}
- express-rate-limit@7.5.0:
- resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==}
+ express-rate-limit@8.2.1:
+ resolution: {integrity: sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==}
engines: {node: '>= 16'}
peerDependencies:
- express: ^4.11 || 5 || ^5.0.0-beta.1
+ express: '>= 4.11'
express@4.22.1:
resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==}
engines: {node: '>= 0.10.0'}
- express@5.1.0:
- resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==}
+ express@5.2.1:
+ resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==}
engines: {node: '>= 18'}
exsolve@1.0.7:
@@ -11813,12 +11817,8 @@ packages:
fast-uri@3.0.6:
resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==}
- fast-xml-parser@4.4.1:
- resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==}
- hasBin: true
-
- fast-xml-parser@4.5.3:
- resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==}
+ fast-xml-parser@5.3.6:
+ resolution: {integrity: sha512-QNI3sAvSvaOiaMl8FYU4trnEzCwiRr8XMWgAHzlrWpTSj+QaCSvOf1h82OEP1s4hiAXhnbXSyFWCf4ldZzZRVA==}
hasBin: true
fastest-stable-stringify@2.0.2:
@@ -11939,8 +11939,8 @@ packages:
flatted@3.3.3:
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
- follow-redirects@1.15.9:
- resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
+ follow-redirects@1.15.11:
+ resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
@@ -11970,6 +11970,10 @@ packages:
resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==}
engines: {node: '>= 6'}
+ form-data@4.0.5:
+ resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
+ engines: {node: '>= 6'}
+
format@0.2.2:
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
engines: {node: '>=0.4.x'}
@@ -12476,9 +12480,6 @@ packages:
hast-util-to-html@9.0.5:
resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
- hast-util-to-jsx-runtime@2.3.0:
- resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==}
-
hast-util-to-jsx-runtime@2.3.6:
resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==}
@@ -12790,6 +12791,10 @@ packages:
resolution: {integrity: sha512-NUcA93i1lukyXU+riqEyPtSEkyFq8tX90uL659J+qpCZ3rEdViB/APC58oAhIh3+bJln2hzdlZbBZsGNrlsR8g==}
engines: {node: '>=12.22.0'}
+ ip-address@10.0.1:
+ resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==}
+ engines: {node: '>= 12'}
+
ip-address@9.0.5:
resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==}
engines: {node: '>= 12'}
@@ -13713,8 +13718,8 @@ packages:
resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==}
hasBin: true
- markdown-it@14.1.0:
- resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
+ markdown-it@14.1.1:
+ resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==}
hasBin: true
markdown-link@0.1.1:
@@ -13761,9 +13766,6 @@ packages:
mdast-util-from-markdown@1.3.1:
resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==}
- mdast-util-from-markdown@2.0.0:
- resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==}
-
mdast-util-from-markdown@2.0.2:
resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
@@ -15098,9 +15100,6 @@ packages:
parse5@7.1.2:
resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
- parse5@7.2.1:
- resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==}
-
parse5@7.3.0:
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
@@ -15783,8 +15782,12 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
- qs@6.14.1:
- resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==}
+ qs@6.14.2:
+ resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==}
+ engines: {node: '>=0.6'}
+
+ qs@6.15.0:
+ resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==}
engines: {node: '>=0.6'}
quansync@0.2.11:
@@ -16273,9 +16276,6 @@ packages:
rehype-harden@1.1.2:
resolution: {integrity: sha512-58RSgd3BAYW/hULy6qvrLBIRe8qe5PElwEpRjrLilvhJ3N+Y6ptKAmy1CLIIyoMz7CMI30GqENhNXksJd5hGDg==}
- rehype-katex@7.0.0:
- resolution: {integrity: sha512-h8FPkGE00r2XKU+/acgqwWUlyzve1IiOKwsEkg4pDL3k48PiE0Pt+/uLtVHDVkN1yA4iurZN6UES8ivHVEQV6Q==}
-
rehype-katex@7.0.1:
resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==}
@@ -16314,9 +16314,6 @@ packages:
remark-gfm@3.0.1:
resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==}
- remark-gfm@4.0.0:
- resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==}
-
remark-gfm@4.0.1:
resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==}
@@ -17165,8 +17162,8 @@ packages:
resolution: {integrity: sha512-aT2BU9KkizY9SATf14WhhYVv2uOapBWX0OFWF4xvcj1mPaNotlSc2CsxpS4DS46ZueSppmCF5BX1sNYBtwBvfw==}
engines: {node: '>=12.*'}
- strnum@1.1.2:
- resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==}
+ strnum@2.1.2:
+ resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==}
structured-clone-es@1.0.0:
resolution: {integrity: sha512-FL8EeKFFyNQv5cMnXI31CIMCsFarSVI2bF0U0ImeNE3g/F1IvJQyqzOXxPBRXiwQfyBTlbNe88jh1jFW0O/jiQ==}
@@ -17232,8 +17229,8 @@ packages:
resolution: {integrity: sha512-TDQg6Nh7e2DaLmMjqpJt7Wwh2Au5loVPH2gwKMkD89e3pb5F/zMQGWt22asEXme031jEmhjazixFH0lwMgbRJA==}
engines: {node: '>=18.0.0'}
- supabase@2.67.1:
- resolution: {integrity: sha512-d/trGytTjB/Hi625zHh2RFFttjLOkSdRTsY/N1pjxoAfG0blDiHKqPwu12VJYitg4nzgjfhjnD3pLyfU0ko5vg==}
+ supabase@2.76.14:
+ resolution: {integrity: sha512-2XmYs8+A4WXd+w/OND9u9qbSTnGdLCuddnii01H1LkmgwcZ9krXwxElE+YYmzhsEKCUHv5wVjAf5HTUwQ4PnVA==}
engines: {npm: '>=8'}
hasBin: true
@@ -17280,8 +17277,8 @@ packages:
swap-case@2.0.2:
resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==}
- swiper@11.0.7:
- resolution: {integrity: sha512-cDfglW1B6uSmB6eB6pNmzDTNLmZtu5bWWa1vak0RU7fOI9qHjMzl7gVBvYSl34b0RU2N11HxxETJqQ5LeqI1cA==}
+ swiper@12.1.2:
+ resolution: {integrity: sha512-4gILrI3vXZqoZh71I1PALqukCFgk+gpOwe1tOvz5uE9kHtl2gTDzmYflYCwWvR4LOvCrJi6UEEU+gnuW5BtkgQ==}
engines: {node: '>= 4.7.0'}
swr@2.2.5:
@@ -17329,10 +17326,9 @@ packages:
tar-stream@3.1.7:
resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
- tar@7.5.7:
- resolution: {integrity: sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==}
+ tar@7.5.9:
+ resolution: {integrity: sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==}
engines: {node: '>=18'}
- deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
termi-link@1.1.0:
resolution: {integrity: sha512-2qSN6TnomHgVLtk+htSWbaYs4Rd2MH/RU7VpHTy6MBstyNyWbM4yKd1DCYpE3fDg8dmGWojXCngNi/MHCzGuAA==}
@@ -18679,6 +18675,11 @@ packages:
peerDependencies:
zod: ^3.25 || ^4
+ zod-to-json-schema@3.25.1:
+ resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==}
+ peerDependencies:
+ zod: ^3.25 || ^4
+
zod@3.25.76:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
@@ -19046,7 +19047,7 @@ snapshots:
'@smithy/util-body-length-browser': 4.0.0
'@smithy/util-middleware': 4.2.8
'@smithy/util-utf8': 4.0.0
- fast-xml-parser: 4.4.1
+ fast-xml-parser: 5.3.6
tslib: 2.8.1
'@aws-sdk/core@3.826.0':
@@ -19064,7 +19065,7 @@ snapshots:
'@smithy/util-body-length-browser': 4.0.0
'@smithy/util-middleware': 4.2.8
'@smithy/util-utf8': 4.0.0
- fast-xml-parser: 4.4.1
+ fast-xml-parser: 5.3.6
tslib: 2.8.1
'@aws-sdk/credential-provider-cognito-identity@3.830.0':
@@ -20410,7 +20411,7 @@ snapshots:
get-value: 3.0.1
graphql: 16.11.0
graphql-language-service: 5.3.1(graphql@16.11.0)
- markdown-it: 14.1.0
+ markdown-it: 14.1.1
react: 18.3.1
react-compiler-runtime: 19.1.0-rc.1(react@18.3.1)
react-dom: 18.3.1(react@18.3.1)
@@ -21267,7 +21268,7 @@ snapshots:
'@isaacs/balanced-match@4.0.1': {}
- '@isaacs/brace-expansion@5.0.0':
+ '@isaacs/brace-expansion@5.0.1':
dependencies:
'@isaacs/balanced-match': 4.0.1
@@ -21405,7 +21406,7 @@ snapshots:
npmlog: 5.0.1
rimraf: 3.0.2
semver: 7.7.3
- tar: 7.5.7
+ tar: 7.5.9
transitivePeerDependencies:
- encoding
- supports-color
@@ -21418,7 +21419,7 @@ snapshots:
node-fetch: 2.7.0(encoding@0.1.13)
nopt: 8.1.0
semver: 7.7.3
- tar: 7.5.7
+ tar: 7.5.9
transitivePeerDependencies:
- encoding
- supports-color
@@ -21496,7 +21497,7 @@ snapshots:
'@mjackson/node-fetch-server@0.2.0': {}
- '@modelcontextprotocol/sdk@1.25.3(hono@4.11.7)(supports-color@8.1.1)(zod@3.25.76)':
+ '@modelcontextprotocol/sdk@1.27.0(supports-color@8.1.1)(zod@3.25.76)':
dependencies:
'@hono/node-server': 1.19.9(hono@4.11.7)
ajv: 8.17.1
@@ -21506,16 +21507,16 @@ snapshots:
cross-spawn: 7.0.6
eventsource: 3.0.7
eventsource-parser: 3.0.6
- express: 5.1.0(supports-color@8.1.1)
- express-rate-limit: 7.5.0(express@5.1.0(supports-color@8.1.1))
+ express: 5.2.1(supports-color@8.1.1)
+ express-rate-limit: 8.2.1(express@5.2.1(supports-color@8.1.1))
+ hono: 4.11.7
jose: 6.1.3
json-schema-typed: 8.0.2
pkce-challenge: 5.0.0
raw-body: 3.0.2
zod: 3.25.76
- zod-to-json-schema: 3.25.0(zod@3.25.76)
+ zod-to-json-schema: 3.25.1(zod@3.25.76)
transitivePeerDependencies:
- - hono
- supports-color
'@monaco-editor/loader@1.4.0(monaco-editor@0.52.2)':
@@ -24757,7 +24758,7 @@ snapshots:
concat-stream: 2.0.0
cookie: 0.7.2
dotenv: 16.4.5
- form-data: 4.0.4
+ form-data: 4.0.5
jest-diff: 29.7.0
jest-matcher-utils: 29.7.0
js-yaml: 4.1.1
@@ -25550,20 +25551,20 @@ snapshots:
dependencies:
tslib: 2.8.1
- '@supabase/mcp-server-supabase@0.6.3(@modelcontextprotocol/sdk@1.25.3(hono@4.11.7)(supports-color@8.1.1)(zod@3.25.76))(zod@3.25.76)':
+ '@supabase/mcp-server-supabase@0.6.3(@modelcontextprotocol/sdk@1.27.0(supports-color@8.1.1)(zod@3.25.76))(zod@3.25.76)':
dependencies:
'@mjackson/multipart-parser': 0.10.1
- '@modelcontextprotocol/sdk': 1.25.3(hono@4.11.7)(supports-color@8.1.1)(zod@3.25.76)
- '@supabase/mcp-utils': 0.3.2(@modelcontextprotocol/sdk@1.25.3(hono@4.11.7)(supports-color@8.1.1)(zod@3.25.76))(zod@3.25.76)
+ '@modelcontextprotocol/sdk': 1.27.0(supports-color@8.1.1)(zod@3.25.76)
+ '@supabase/mcp-utils': 0.3.2(@modelcontextprotocol/sdk@1.27.0(supports-color@8.1.1)(zod@3.25.76))(zod@3.25.76)
common-tags: 1.8.2
gqlmin: 0.3.1
graphql: 16.11.0
openapi-fetch: 0.13.8
zod: 3.25.76
- '@supabase/mcp-utils@0.3.2(@modelcontextprotocol/sdk@1.25.3(hono@4.11.7)(supports-color@8.1.1)(zod@3.25.76))(zod@3.25.76)':
+ '@supabase/mcp-utils@0.3.2(@modelcontextprotocol/sdk@1.27.0(supports-color@8.1.1)(zod@3.25.76))(zod@3.25.76)':
dependencies:
- '@modelcontextprotocol/sdk': 1.25.3(hono@4.11.7)(supports-color@8.1.1)(zod@3.25.76)
+ '@modelcontextprotocol/sdk': 1.27.0(supports-color@8.1.1)(zod@3.25.76)
zod: 3.25.76
'@supabase/postgres-meta@0.64.6(encoding@0.1.13)(supports-color@8.1.1)':
@@ -26365,7 +26366,7 @@ snapshots:
'@types/node-fetch@2.6.6':
dependencies:
'@types/node': 22.13.14
- form-data: 4.0.4
+ form-data: 4.0.5
'@types/node@18.18.13':
dependencies:
@@ -27447,10 +27448,10 @@ snapshots:
axe-core@4.10.3: {}
- axios@1.12.2:
+ axios@1.13.5:
dependencies:
- follow-redirects: 1.15.9
- form-data: 4.0.4
+ follow-redirects: 1.15.11
+ form-data: 4.0.5
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
@@ -27548,7 +27549,7 @@ snapshots:
http-errors: 2.0.1
iconv-lite: 0.4.24
on-finished: 2.4.1
- qs: 6.14.1
+ qs: 6.14.2
raw-body: 2.5.3
type-is: 1.6.18
unpipe: 1.0.0
@@ -27563,7 +27564,7 @@ snapshots:
http-errors: 2.0.1
iconv-lite: 0.7.0
on-finished: 2.4.1
- qs: 6.14.1
+ qs: 6.15.0
raw-body: 3.0.2
type-is: 2.0.1
transitivePeerDependencies:
@@ -27697,7 +27698,7 @@ snapshots:
promise-inflight: 1.0.1
rimraf: 3.0.2
ssri: 8.0.1
- tar: 7.5.7
+ tar: 7.5.9
unique-filename: 1.1.1
transitivePeerDependencies:
- bluebird
@@ -27714,7 +27715,7 @@ snapshots:
minipass-pipeline: 1.2.4
p-map: 4.0.0
ssri: 10.0.6
- tar: 7.5.7
+ tar: 7.5.9
unique-filename: 3.0.0
call-bind-apply-helpers@1.0.2:
@@ -29644,9 +29645,10 @@ snapshots:
exponential-backoff@3.1.1: {}
- express-rate-limit@7.5.0(express@5.1.0(supports-color@8.1.1)):
+ express-rate-limit@8.2.1(express@5.2.1(supports-color@8.1.1)):
dependencies:
- express: 5.1.0(supports-color@8.1.1)
+ express: 5.2.1(supports-color@8.1.1)
+ ip-address: 10.0.1
express@4.22.1(supports-color@8.1.1):
dependencies:
@@ -29671,7 +29673,7 @@ snapshots:
parseurl: 1.3.3
path-to-regexp: 0.1.12
proxy-addr: 2.0.7
- qs: 6.14.1
+ qs: 6.14.2
range-parser: 1.2.1
safe-buffer: 5.2.1
send: 0.19.0(supports-color@8.1.1)
@@ -29684,7 +29686,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- express@5.1.0(supports-color@8.1.1):
+ express@5.2.1(supports-color@8.1.1):
dependencies:
accepts: 2.0.0
body-parser: 2.2.1(supports-color@8.1.1)
@@ -29693,6 +29695,7 @@ snapshots:
cookie: 0.7.2
cookie-signature: 1.2.2
debug: 4.4.3(supports-color@8.1.1)
+ depd: 2.0.0
encodeurl: 2.0.0
escape-html: 1.0.3
etag: 1.8.1
@@ -29705,7 +29708,7 @@ snapshots:
once: 1.4.0
parseurl: 1.3.3
proxy-addr: 2.0.7
- qs: 6.14.1
+ qs: 6.15.0
range-parser: 1.2.1
router: 2.2.0(supports-color@8.1.1)
send: 1.2.0(supports-color@8.1.1)
@@ -29784,13 +29787,9 @@ snapshots:
fast-uri@3.0.6: {}
- fast-xml-parser@4.4.1:
+ fast-xml-parser@5.3.6:
dependencies:
- strnum: 1.1.2
-
- fast-xml-parser@4.5.3:
- dependencies:
- strnum: 1.1.2
+ strnum: 2.1.2
fastest-stable-stringify@2.0.2: {}
@@ -29922,7 +29921,7 @@ snapshots:
flatted@3.3.3: {}
- follow-redirects@1.15.9: {}
+ follow-redirects@1.15.11: {}
for-each@0.3.5:
dependencies:
@@ -29947,6 +29946,14 @@ snapshots:
hasown: 2.0.2
mime-types: 2.1.35
+ form-data@4.0.5:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ hasown: 2.0.2
+ mime-types: 2.1.35
+
format@0.2.2: {}
formdata-node@4.4.1:
@@ -30489,7 +30496,7 @@ snapshots:
'@types/hast': 3.0.4
devlop: 1.1.0
hast-util-from-parse5: 8.0.1
- parse5: 7.2.1
+ parse5: 7.3.0
vfile: 6.0.3
vfile-message: 4.0.2
@@ -30533,7 +30540,7 @@ snapshots:
hast-util-to-parse5: 8.0.0
html-void-elements: 3.0.0
mdast-util-to-hast: 13.2.1
- parse5: 7.2.1
+ parse5: 7.3.0
unist-util-position: 5.0.0
unist-util-visit: 5.1.0
vfile: 6.0.3
@@ -30575,26 +30582,6 @@ snapshots:
stringify-entities: 4.0.3
zwitch: 2.0.4
- hast-util-to-jsx-runtime@2.3.0(supports-color@8.1.1):
- dependencies:
- '@types/estree': 1.0.5
- '@types/hast': 3.0.4
- '@types/unist': 3.0.3
- comma-separated-tokens: 2.0.3
- devlop: 1.1.0
- estree-util-is-identifier-name: 3.0.0
- hast-util-whitespace: 3.0.0
- mdast-util-mdx-expression: 2.0.0(supports-color@8.1.1)
- mdast-util-mdx-jsx: 3.1.3(supports-color@8.1.1)
- mdast-util-mdxjs-esm: 2.0.1(supports-color@8.1.1)
- property-information: 6.3.0
- space-separated-tokens: 2.0.2
- style-to-object: 1.0.8
- unist-util-position: 5.0.0
- vfile-message: 4.0.2
- transitivePeerDependencies:
- - supports-color
-
hast-util-to-jsx-runtime@2.3.6(supports-color@8.1.1):
dependencies:
'@types/estree': 1.0.5
@@ -30961,6 +30948,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ ip-address@10.0.1: {}
+
ip-address@9.0.5:
dependencies:
jsbn: 1.1.0
@@ -31382,7 +31371,7 @@ snapshots:
decimal.js: 10.5.0
domexception: 4.0.0
escodegen: 2.1.0
- form-data: 4.0.4
+ form-data: 4.0.5
html-encoding-sniffer: 3.0.0
http-proxy-agent: 5.0.0(supports-color@8.1.1)
https-proxy-agent: 5.0.1(supports-color@8.1.1)
@@ -31894,7 +31883,7 @@ snapshots:
mdurl: 1.0.1
uc.micro: 1.0.6
- markdown-it@14.1.0:
+ markdown-it@14.1.1:
dependencies:
argparse: 2.0.1
entities: 4.5.0
@@ -31969,23 +31958,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- mdast-util-from-markdown@2.0.0(supports-color@8.1.1):
- dependencies:
- '@types/mdast': 4.0.4
- '@types/unist': 3.0.3
- decode-named-character-reference: 1.0.2
- devlop: 1.1.0
- mdast-util-to-string: 4.0.0
- micromark: 4.0.0(supports-color@8.1.1)
- micromark-util-decode-numeric-character-reference: 2.0.1
- micromark-util-decode-string: 2.0.0
- micromark-util-normalize-identifier: 2.0.0
- micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.0
- unist-util-stringify-position: 4.0.0
- transitivePeerDependencies:
- - supports-color
-
mdast-util-from-markdown@2.0.2(supports-color@8.1.1):
dependencies:
'@types/mdast': 4.0.4
@@ -32962,7 +32934,7 @@ snapshots:
minimatch@10.1.1:
dependencies:
- '@isaacs/brace-expansion': 5.0.0
+ '@isaacs/brace-expansion': 5.0.1
minimatch@3.1.2:
dependencies:
@@ -33458,7 +33430,7 @@ snapshots:
nopt: 7.2.1
proc-log: 3.0.0
semver: 7.7.3
- tar: 7.5.7
+ tar: 7.5.9
which: 4.0.0
transitivePeerDependencies:
- supports-color
@@ -33473,7 +33445,7 @@ snapshots:
npmlog: 6.0.2
rimraf: 3.0.2
semver: 7.7.3
- tar: 7.5.7
+ tar: 7.5.9
which: 2.0.2
transitivePeerDependencies:
- bluebird
@@ -33946,7 +33918,7 @@ snapshots:
openapi-sampler@1.6.1:
dependencies:
'@types/json-schema': 7.0.15
- fast-xml-parser: 4.5.3
+ fast-xml-parser: 5.3.6
json-pointer: 0.6.2
openapi-types@10.0.0: {}
@@ -34194,10 +34166,6 @@ snapshots:
dependencies:
entities: 4.5.0
- parse5@7.2.1:
- dependencies:
- entities: 4.5.0
-
parse5@7.3.0:
dependencies:
entities: 6.0.1
@@ -34822,7 +34790,11 @@ snapshots:
punycode@2.3.1: {}
- qs@6.14.1:
+ qs@6.14.2:
+ dependencies:
+ side-channel: 1.1.0
+
+ qs@6.15.0:
dependencies:
side-channel: 1.1.0
@@ -35072,7 +35044,7 @@ snapshots:
'@types/hast': 3.0.4
'@types/react': 18.3.3
devlop: 1.1.0
- hast-util-to-jsx-runtime: 2.3.0(supports-color@8.1.1)
+ hast-util-to-jsx-runtime: 2.3.6(supports-color@8.1.1)
html-url-attributes: 3.0.0
mdast-util-to-hast: 13.2.1
react: 18.3.1
@@ -35453,16 +35425,6 @@ snapshots:
rehype-harden@1.1.2: {}
- rehype-katex@7.0.0:
- dependencies:
- '@types/hast': 3.0.4
- '@types/katex': 0.16.7
- hast-util-from-html-isomorphic: 2.0.0
- hast-util-to-text: 4.0.0
- katex: 0.16.21
- unist-util-visit-parents: 6.0.1
- vfile: 6.0.3
-
rehype-katex@7.0.1:
dependencies:
'@types/hast': 3.0.4
@@ -35548,17 +35510,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- remark-gfm@4.0.0(supports-color@8.1.1):
- dependencies:
- '@types/mdast': 4.0.4
- mdast-util-gfm: 3.0.0(supports-color@8.1.1)
- micromark-extension-gfm: 3.0.0
- remark-parse: 11.0.0(supports-color@8.1.1)
- remark-stringify: 11.0.0
- unified: 11.0.5
- transitivePeerDependencies:
- - supports-color
-
remark-gfm@4.0.1(supports-color@8.1.1):
dependencies:
'@types/mdast': 4.0.4
@@ -36058,7 +36009,7 @@ snapshots:
'@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1)
'@babel/preset-typescript': 7.27.1(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1)
'@dotenvx/dotenvx': 1.51.0
- '@modelcontextprotocol/sdk': 1.25.3(hono@4.11.7)(supports-color@8.1.1)(zod@3.25.76)
+ '@modelcontextprotocol/sdk': 1.27.0(supports-color@8.1.1)(zod@3.25.76)
browserslist: 4.26.2
commander: 14.0.1
cosmiconfig: 9.0.0(typescript@5.9.2)
@@ -36086,7 +36037,6 @@ snapshots:
- '@cfworker/json-schema'
- '@types/node'
- babel-plugin-macros
- - hono
- supports-color
- typescript
@@ -36655,9 +36605,9 @@ snapshots:
stripe@17.7.0:
dependencies:
'@types/node': 22.13.14
- qs: 6.14.1
+ qs: 6.15.0
- strnum@1.1.2: {}
+ strnum@2.1.2: {}
structured-clone-es@1.0.0: {}
@@ -36738,12 +36688,12 @@ snapshots:
dependencies:
openapi-fetch: 0.6.2
- supabase@2.67.1(supports-color@8.1.1):
+ supabase@2.76.14(supports-color@8.1.1):
dependencies:
bin-links: 6.0.0
https-proxy-agent: 7.0.6(supports-color@8.1.1)
node-fetch: 3.3.2
- tar: 7.5.7
+ tar: 7.5.9
transitivePeerDependencies:
- supports-color
@@ -36804,7 +36754,7 @@ snapshots:
dependencies:
tslib: 2.8.1
- swiper@11.0.7: {}
+ swiper@12.1.2: {}
swr@2.2.5(react@18.3.1):
dependencies:
@@ -36870,7 +36820,7 @@ snapshots:
fast-fifo: 1.3.2
streamx: 2.22.0
- tar@7.5.7:
+ tar@7.5.9:
dependencies:
'@isaacs/fs-minipass': 4.0.1
chownr: 3.0.0
@@ -38315,6 +38265,10 @@ snapshots:
dependencies:
zod: 3.25.76
+ zod-to-json-schema@3.25.1(zod@3.25.76):
+ dependencies:
+ zod: 3.25.76
+
zod@3.25.76: {}
zustand@4.4.7(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1):
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 1f0deece909f6..05523cbd0685c 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -59,6 +59,7 @@ minimumReleaseAgeExclude:
- lodash
- next-mdx-remote
- react-resizable-panels
+ - swiper@12.1.2
onlyBuiltDependencies:
- node-pty
@@ -73,5 +74,9 @@ overrides:
lodash: 'catalog:'
payload>undici: ^7.18.2
refractor>prismjs: ^1.30.0
- tar: ^7.5.7
+ cacache>tar: ^7.5.8
+ node-gyp>tar: ^7.5.8
+ '@mapbox/node-pre-gyp>tar': ^7.5.8
tmp: ^0.2.4
+ '@aws-sdk/core>fast-xml-parser': ^5.3.5
+ openapi-sampler>fast-xml-parser: ^5.3.5
diff --git a/scripts/fix-audit-vulnerability.ts b/scripts/fix-audit-vulnerability.ts
new file mode 100644
index 0000000000000..6c12a4352ddaf
--- /dev/null
+++ b/scripts/fix-audit-vulnerability.ts
@@ -0,0 +1,299 @@
+import { execSync } from 'node:child_process'
+import * as fs from 'node:fs'
+import * as path from 'node:path'
+import * as readline from 'node:readline'
+
+interface Advisory {
+ id: number
+ module_name: string
+ severity: string
+ title: string
+ vulnerable_versions: string
+ patched_versions: string
+ findings: Array<{
+ version: string
+ paths: string[]
+ }>
+}
+
+interface AuditOutput {
+ advisories: Record
+ metadata: {
+ vulnerabilities: Record
+ dependencies: number
+ totalDependencies: number
+ }
+}
+
+interface VulnerableModule {
+ module_name: string
+ advisories: Advisory[]
+ highestSeverity: string
+ overrideVersion: string
+ allPaths: string[]
+}
+
+const WORKSPACE_YAML_PATH = path.join(process.cwd(), 'pnpm-workspace.yaml')
+const LOCKFILE_PATH = path.join(process.cwd(), 'pnpm-lock.yaml')
+
+const SEVERITY_ORDER = ['critical', 'high', 'moderate', 'low']
+
+function runAudit(): AuditOutput {
+ try {
+ const stdout = execSync('pnpm audit --json', {
+ encoding: 'utf-8',
+ stdio: ['pipe', 'pipe', 'pipe'],
+ maxBuffer: 10 * 1024 * 1024,
+ })
+ return JSON.parse(stdout)
+ } catch (error: any) {
+ // pnpm audit exits with code 1 when vulnerabilities exist
+ if (error.stdout) {
+ return JSON.parse(error.stdout)
+ }
+ throw error
+ }
+}
+
+function parseMinVersion(patchedVersions: string): string | null {
+ const match = patchedVersions.match(/>=(\d+\.\d+\.\d+)/)
+ return match ? match[1] : null
+}
+
+function compareSemver(a: string, b: string): number {
+ const pa = a.split('.').map(Number)
+ const pb = b.split('.').map(Number)
+ for (let i = 0; i < 3; i++) {
+ if (pa[i] !== pb[i]) return pa[i] - pb[i]
+ }
+ return 0
+}
+
+function groupAdvisories(advisories: Record): VulnerableModule[] {
+ const byModule = new Map()
+
+ for (const adv of Object.values(advisories)) {
+ if (adv.patched_versions === '<0.0.0') continue
+
+ const existing = byModule.get(adv.module_name) ?? []
+ existing.push(adv)
+ byModule.set(adv.module_name, existing)
+ }
+
+ const result: VulnerableModule[] = []
+
+ for (const [module_name, advs] of byModule) {
+ const allPaths = [...new Set(advs.flatMap((a) => a.findings.flatMap((f) => f.paths)))]
+
+ const versions = advs
+ .map((a) => parseMinVersion(a.patched_versions))
+ .filter(Boolean) as string[]
+ const highestVersion = versions.sort(compareSemver).pop()!
+ const overrideVersion = `^${highestVersion}`
+
+ const highestSeverity = advs
+ .map((a) => a.severity)
+ .sort((a, b) => SEVERITY_ORDER.indexOf(a) - SEVERITY_ORDER.indexOf(b))
+ .at(0)!
+
+ result.push({
+ module_name,
+ advisories: advs,
+ highestSeverity,
+ overrideVersion,
+ allPaths,
+ })
+ }
+
+ result.sort((a, b) => {
+ const sevDiff =
+ SEVERITY_ORDER.indexOf(a.highestSeverity) - SEVERITY_ORDER.indexOf(b.highestSeverity)
+ if (sevDiff !== 0) return sevDiff
+ return a.module_name.localeCompare(b.module_name)
+ })
+
+ return result
+}
+
+function displayVulnerabilities(modules: VulnerableModule[]): void {
+ console.log('\nVulnerable dependencies (patchable):\n')
+
+ const severityColors: Record = {
+ critical: '\x1b[31m',
+ high: '\x1b[33m',
+ moderate: '\x1b[36m',
+ low: '\x1b[37m',
+ }
+ const reset = '\x1b[0m'
+
+ for (let i = 0; i < modules.length; i++) {
+ const m = modules[i]
+ const color = severityColors[m.highestSeverity] ?? reset
+
+ console.log(
+ ` ${String(i + 1).padStart(2)}. ${color}[${m.highestSeverity.toUpperCase()}]${reset} ` +
+ `${m.module_name} -> ${m.overrideVersion}`
+ )
+
+ const maxPaths = 3
+ const paths = m.allPaths.slice(0, maxPaths)
+ for (const p of paths) {
+ console.log(` via ${p.replace(/__/g, '/')}`)
+ }
+ if (m.allPaths.length > maxPaths) {
+ console.log(` ... and ${m.allPaths.length - maxPaths} more`)
+ }
+ }
+
+ console.log('')
+}
+
+function promptSelection(modules: VulnerableModule[]): Promise {
+ const rl = readline.createInterface({
+ input: process.stdin,
+ output: process.stdout,
+ })
+
+ return new Promise((resolve, reject) => {
+ rl.question(`Select vulnerability to fix (1-${modules.length}): `, (answer) => {
+ rl.close()
+ const num = parseInt(answer, 10)
+ if (isNaN(num) || num < 1 || num > modules.length) {
+ reject(new Error(`Invalid selection: ${answer}`))
+ return
+ }
+ resolve(modules[num - 1])
+ })
+ })
+}
+
+function escapeRegex(str: string): string {
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
+}
+
+function formatOverrideLine(moduleName: string, version: string): string {
+ const key = moduleName.includes('@') ? `'${moduleName}'` : moduleName
+ return ` ${key}: ${version}`
+}
+
+function addOverride(yamlContent: string, moduleName: string, version: string): string {
+ const lines = yamlContent.split('\n')
+
+ const overridesIdx = lines.findIndex((line) => /^overrides:\s*$/.test(line))
+ if (overridesIdx === -1) {
+ throw new Error('Could not find "overrides:" section in pnpm-workspace.yaml')
+ }
+
+ // Find the end of the overrides block (next non-indented, non-empty line)
+ let blockEnd = overridesIdx + 1
+ while (blockEnd < lines.length) {
+ const line = lines[blockEnd]
+ if (line === '' || /^\s+/.test(line)) {
+ blockEnd++
+ } else {
+ break
+ }
+ }
+
+ // Check if this module already has an override
+ const existingPattern = new RegExp(`^\\s+['"]?${escapeRegex(moduleName)}['"]?\\s*:`)
+ const existingIdx = lines.findIndex(
+ (line, idx) => idx > overridesIdx && idx < blockEnd && existingPattern.test(line)
+ )
+
+ if (existingIdx !== -1) {
+ console.log(`\nWARNING: Override for "${moduleName}" already exists:`)
+ console.log(` ${lines[existingIdx].trim()}`)
+ console.log(` Replacing with: ${moduleName}: ${version}`)
+ lines[existingIdx] = formatOverrideLine(moduleName, version)
+ return lines.join('\n')
+ }
+
+ // Insert new override at the end of the overrides block
+ const newLine = formatOverrideLine(moduleName, version)
+ lines.splice(blockEnd, 0, newLine)
+ return lines.join('\n')
+}
+
+async function main(): Promise {
+ console.log('Running pnpm audit...')
+ const auditResult = runAudit()
+
+ const modules = groupAdvisories(auditResult.advisories)
+
+ if (modules.length === 0) {
+ console.log('No patchable vulnerabilities found.')
+ process.exit(0)
+ }
+
+ displayVulnerabilities(modules)
+
+ const selected = await promptSelection(modules)
+
+ // Snapshot original files for revert on failure
+ const originalYaml = fs.readFileSync(WORKSPACE_YAML_PATH, 'utf-8')
+ const originalLockfile = fs.readFileSync(LOCKFILE_PATH, 'utf-8')
+
+ function revert(): void {
+ console.log('\nReverting pnpm-workspace.yaml and pnpm-lock.yaml...')
+ fs.writeFileSync(WORKSPACE_YAML_PATH, originalYaml, 'utf-8')
+ fs.writeFileSync(LOCKFILE_PATH, originalLockfile, 'utf-8')
+ console.log('Reverted to original state.')
+ }
+
+ console.log(`\nAdding override: ${selected.module_name}: ${selected.overrideVersion}`)
+ const updatedYaml = addOverride(originalYaml, selected.module_name, selected.overrideVersion)
+ fs.writeFileSync(WORKSPACE_YAML_PATH, updatedYaml, 'utf-8')
+ console.log('Updated pnpm-workspace.yaml')
+
+ console.log('\nRunning pnpm install (with override)...')
+ try {
+ execSync('pnpm install', {
+ stdio: 'pipe',
+ encoding: 'utf-8',
+ })
+ } catch (error: any) {
+ const output = (error.stdout ?? '') + (error.stderr ?? '')
+ if (output.includes('ERR_PNPM_NO_MATCHING_VERSION')) {
+ console.error(
+ `\nNo matching version found for "${selected.module_name}@${selected.overrideVersion}", the minimumReleaseAge option forbids it from installing.`
+ )
+ revert()
+ process.exit(1)
+ }
+ throw error
+ }
+
+ // Remove the override and re-install to see if the lockfile update alone fixes it
+ console.log('\nRemoving override and running pnpm install again...')
+ fs.writeFileSync(WORKSPACE_YAML_PATH, originalYaml, 'utf-8')
+ execSync('pnpm install --silent', {
+ stdio: 'pipe',
+ encoding: 'utf-8',
+ })
+
+ console.log('\nRunning pnpm audit to verify fix without override...')
+ const verifyResult = runAudit()
+
+ const stillVulnerable = Object.values(verifyResult.advisories).some(
+ (adv) => adv.module_name === selected.module_name
+ )
+
+ if (stillVulnerable) {
+ revert()
+ console.error(
+ `\nERROR: Vulnerability for "${selected.module_name}" still present even with override.`
+ )
+ console.error('Consider using scoped overrides or updating the parent dependency.')
+ process.exit(1)
+ }
+
+ console.log(
+ `\nSUCCESS: Vulnerability for "${selected.module_name}" resolved without needing a permanent override.`
+ )
+}
+
+main().catch((error) => {
+ console.error('Fatal error:', error)
+ process.exit(1)
+})