diff --git a/.github/DISCUSSION_TEMPLATE/bug-report.yml b/.github/DISCUSSION_TEMPLATE/bug-report.yml index cd8c436c3b..9e1fe7b404 100644 --- a/.github/DISCUSSION_TEMPLATE/bug-report.yml +++ b/.github/DISCUSSION_TEMPLATE/bug-report.yml @@ -1,4 +1,4 @@ -labels: ["bug"] +labels: ['bug'] body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index bb6135f5eb..00e23d7387 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -4,6 +4,4 @@ about: This is to create a new issue that already has an assignee. Please open a title: '' labels: '' assignees: '' - --- - diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index c2a3094f8a..6da9f825cd 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,3 +1,4 @@ +blank_issues_enabled: false contact_links: - name: Bug Reports url: https://github.com/pmndrs/jotai/discussions/new?category=bug-report diff --git a/.github/workflows/test-multiple-builds.yml b/.github/workflows/test-multiple-builds.yml index b045639fea..b1bcfe74f3 100644 --- a/.github/workflows/test-multiple-builds.yml +++ b/.github/workflows/test-multiple-builds.yml @@ -30,20 +30,20 @@ jobs: - name: Patch for DEV-ONLY if: ${{ matrix.env == 'development' }} run: | - sed -i~ "s/\(it\|describe\)[.a-zA-Z]*('\[DEV-ONLY\]/\1('/" tests/*/*.tsx tests/*/*/*.tsx - sed -i~ "s/\(it\|describe\)[.a-zA-Z]*('\[PRD-ONLY\]/\1.skip('/" tests/*/*.tsx tests/*/*/*.tsx + sed -i~ "s/\(it\|describe\)[.a-zA-Z]*('\[DEV-ONLY\]/\1('/" tests/*/*.ts* tests/*/*/*.ts* + sed -i~ "s/\(it\|describe\)[.a-zA-Z]*('\[PRD-ONLY\]/\1.skip('/" tests/*/*.ts* tests/*/*/*.ts* - name: Patch for PRD-ONLY if: ${{ matrix.env == 'production' }} run: | - sed -i~ "s/\(it\|describe\)[.a-zA-Z]*('\PRD-ONLY\]/\1('/" tests/*/*.tsx tests/*/*/*.tsx - sed -i~ "s/\(it\|describe\)[.a-zA-Z]*('\[DEV-ONLY\]/\1.skip('/" tests/*/*.tsx tests/*/*/*.tsx + sed -i~ "s/\(it\|describe\)[.a-zA-Z]*('\PRD-ONLY\]/\1('/" tests/*/*.ts* tests/*/*/*.ts* + sed -i~ "s/\(it\|describe\)[.a-zA-Z]*('\[DEV-ONLY\]/\1.skip('/" tests/*/*.ts* tests/*/*/*.ts* - name: Patch for CJS if: ${{ matrix.build == 'cjs' }} run: | sed -i~ "s/resolve('\.\/src\(.*\)\.ts')/resolve('\.\/dist\1.js')/" vitest.config.mts sed -i~ "s/import { useResetAtom } from 'jotai\/react\/utils'/const { useResetAtom } = require('..\/..\/..\/dist\/react\/utils.js')/" tests/react/utils/useResetAtom.test.tsx sed -i~ "s/import { RESET, atomWithReducer, atomWithReset } from 'jotai\/vanilla\/utils'/const { RESET, atomWithReducer, atomWithReset } = require('..\/..\/..\/dist\/vanilla\/utils.js')/" tests/react/utils/useResetAtom.test.tsx - perl -i~ -0777 -pe "s/import {[^}]+} from 'jotai\/vanilla\/internals'/const { INTERNAL_buildStoreRev1: INTERNAL_buildStore, INTERNAL_initializeStoreHooks, INTERNAL_getBuildingBlocksRev1: INTERNAL_getBuildingBlocks } = require('..\/..\/dist\/vanilla\/internals.js')/g" tests/vanilla/store.test.tsx tests/vanilla/internals.test.tsx tests/vanilla/derive.test.tsx tests/vanilla/effect.test.ts + perl -i~ -0777 -pe "s/import {[^}]+} from 'jotai\/vanilla\/internals'/const { INTERNAL_buildStoreRev1: INTERNAL_buildStore, INTERNAL_initializeStoreHooks, INTERNAL_getBuildingBlocksRev1: INTERNAL_getBuildingBlocks } = require('..\/..\/dist\/vanilla\/internals.js')/g" tests/vanilla/store.test.tsx tests/vanilla/internals.test.tsx tests/vanilla/derive.test.tsx tests/vanilla/effect.test.ts - name: Patch for ESM if: ${{ matrix.build == 'esm' }} run: | diff --git a/.github/workflows/test-multiple-versions.yml b/.github/workflows/test-multiple-versions.yml index 597aac78c1..7d4b178b86 100644 --- a/.github/workflows/test-multiple-versions.yml +++ b/.github/workflows/test-multiple-versions.yml @@ -33,8 +33,8 @@ jobs: - 18.2.0 - 18.3.1 - 19.0.0 - - 19.1.0-canary-e670e72f-20250214 - - 0.0.0-experimental-e670e72f-20250214 + - 19.1.0-canary-f9d78089-20250306 + - 0.0.0-experimental-f9d78089-20250306 steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000000..dee70d2f54 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +dist +pnpm-lock.yaml diff --git a/LICENSE b/LICENSE index 7eaa45c5ed..38ab200c3e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020-2023 Poimandres +Copyright (c) 2020 Poimandres Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/docs/extensions/effect.mdx b/docs/extensions/effect.mdx index b00f2b7ba6..8a2c9171a1 100644 --- a/docs/extensions/effect.mdx +++ b/docs/extensions/effect.mdx @@ -45,12 +45,10 @@ function observe(effect: Effect, store?: Store): Unobserve ```js import { observe } from 'jotai-effect' -// activate the effect on the default store const unobserve = observe((get, set) => { set(logAtom, `someAtom changed: ${get(someAtom)}`) }) -// Clean up the effect unobserve() ``` @@ -58,7 +56,7 @@ This allows you to run Jotai state-dependent logic outside React's lifecycle, id ### Usage With React -When using a Jotai Provider, pass the store to both `observe` and the `Provider` to ensure the effect is mounted on the correct store. +Pass the store to both `observe` and the `Provider` to ensure the effect is mounted to the correct store. ```tsx const store = createStore() @@ -69,19 +67,6 @@ const unobserve = observe((get, set) => { ... ``` -Using `observe` in a `useEffect` - -```tsx -function effect(get: Getter, set: Setter) { - set(logAtom, `someAtom changed: ${get(someAtom)}`) -} - -function Component() { - const store = useStore() - useEffect(() => observe(effect, store), [store]) -} -``` - ## atomEffect @@ -103,7 +88,6 @@ import { atomEffect } from 'jotai-effect' const logEffect = atomEffect((get, set) => { set(logAtom, get(someAtom)) // Runs on mount or when someAtom changes - return () => { set(logAtom, 'unmounting') // Cleanup on unmount } @@ -138,14 +122,18 @@ import { withAtomEffect } from 'jotai-effect' const valuesAtom = withAtomEffect(atom(null), (get, set) => { set(valuesAtom, get(countAtom)) - return unsubscribe + return () => { + // cleanup + } }) ``` -## Effect Behavior +## Dependency Management -- **Cleanup Function:** - The cleanup function is invoked on unmount or before re-evaluation. +Aside from mount events, the effect runs when any of its dependencies change value. + +- **Sync:** + All atoms accessed with `get` inside the effect are added to the atom's dependencies.
@@ -153,88 +141,90 @@ const valuesAtom = withAtomEffect(atom(null), (get, set) => { ```js atomEffect((get, set) => { - const intervalId = setInterval(() => set(clockAtom, Date.now())) - return () => clearInterval(intervalId) + // updates whenever `anAtom` changes value + get(anAtom) }) ```
-- **Resistant to Infinite Loops:** - `atomEffect` avoids rerunning when it updates a value that it is watching. +- **Async:** + Asynchronous `get` calls do not add dependencies.
Example ```js - const countAtom = atom(0) atomEffect((get, set) => { - get(countAtom) - set(countAtom, increment) // Will not loop + setTimeout(() => { + // does not add `anAtom` as a dependency + get(anAtom) + }) }) ```
-- **Supports Recursion:** - Recursion is supported with `set.recurse` but not in cleanup. +- **Cleanup:** + `get` calls in cleanup do not add dependencies.
Example ```js - const countAtom = atom(0) atomEffect((get, set) => { - const count = get(countAtom) - const timeoutId = setTimeout(() => { - set.recurse(countAtom, increment) - }, 1000) - return () => clearTimeout(timeoutId) + return () => { + // does not add `anAtom` as a dependency + get(anAtom) + } }) ```
-- **Supports Peek:** - Use `get.peek` to read atom data without subscribing. +- **Dependency Map Recalculation:** + Dependencies are recalculated on every run.
Example ```js - const countAtom = atom(0) atomEffect((get, set) => { - const count = get.peek(countAtom) // Will not add countAtom as a dependency + if (get(isEnabledAtom)) { + // `isEnabledAtom` and `anAtom` are dependencies + const aValue = get(anAtom) + } else { + // `isEnabledAtom` and `anotherAtom` are dependencies + const anotherValue = get(anotherAtom) + } }) ```
-- **Executes In The Next Microtask:** - `effect` runs in the next available microtask after synchronous evaluations complete. +## Effect Behavior + +- **Executes Synchronously:** + `effect` runs synchronous in the current task after synchronous evaluations complete.
Example ```js - const countAtom = atom(0) - const logAtom = atom('') const logCounts = atomEffect((get, set) => { - set(logAtom, `count is now ${get(countAtom)}`) + set(logAtom, `count is ${get(countAtom)}`) }) - const setCountAndReadLog = atom(null, async (get, set) => { - get(logAtom) // 'count is now 0' - set(countAtom, increment) // effect runs in next microtask - get(logAtom) // 'count is now 0' - await Promise.resolve() - get(logAtom) // 'count is now 1' + const actionAtom = atom(null, (get, set) => { + get(logAtom) // 'count is 0' + set(countAtom, (value) => value + 1) // effect runs synchronously + get(logAtom) // 'count is 1' }) store.sub(logCounts, () => {}) - store.set(setCountAndReadLog) + store.set(actionAtom) ```
@@ -265,160 +255,107 @@ const valuesAtom = withAtomEffect(atom(null), (get, set) => { -- **Conditionally Running Effects:** - `atomEffect` only runs when mounted. +- **Resistant to Infinite Loops:** + `atomEffect` avoids rerunning when it updates a value that it is watching.
Example ```js - atom((get) => { - if (get(isEnabledAtom)) { - get(effectAtom) - } + atomEffect((get, set) => { + get(countAtom) + set(countAtom, (value) => value + 1) // Will not loop }) ```
-- **Idempotency:** - `atomEffect` runs once per state change, regardless of how many times it is referenced. +- **Cleanup Function:** + The cleanup function is invoked on unmount or before re-evaluation.
Example ```js - let i = 0 - const effectAtom = atomEffect(() => { - get(countAtom) - i++ + atomEffect((get, set) => { + const intervalId = setInterval(() => set(clockAtom, Date.now())) + return () => clearInterval(intervalId) }) - store.sub(effectAtom, () => {}) - store.sub(effectAtom, () => {}) - store.set(countAtom, increment) - await Promise.resolve() - console.log(i) // 1 ``` -
- -## Dependency Management - -Aside from mount events, the effect runs when any of its dependencies change value. + -- **Sync:** - All atoms accessed with `get` during the synchronous evaluation of the effect are added to the atom's internal dependency map. +- **Idempotency:** + `atomEffect` runs once per state change, regardless of how many times it is referenced.
Example ```js - atomEffect((get, set) => { - // updates whenever `anAtom` changes value but not when `anotherAtom` changes value - get(anAtom) - setTimeout(() => { - get(anotherAtom) - }, 5000) + let i = 0 + const effectAtom = atomEffect(() => { + get(countAtom) + i++ }) + store.sub(effectAtom, () => {}) + store.sub(effectAtom, () => {}) + store.set(countAtom, (value) => value + 1) + console.log(i) // 1 ```
-- **Async:** - Use an abort controller to cancel pending fetch requests and promises. +- **Conditionally Running Effects:** + `atomEffect` only runs when mounted.
Example ```js - class AbortError extends Error {} - - atomEffect((get, set) => { - const abortController = new AbortController() - fetchData(abortController.signal).catch((error) => { - if (error instanceof AbortError) { - // async cleanup logic here - } else { - throw error - } - }) - return () => abortController.abort(new AbortError()) + atom((get) => { + if (get(isEnabledAtom)) { + get(effectAtom) + } }) ```
-- **Cleanup:** - `get` calls in cleanup do not add dependencies. +- **Supports Peek:** + Use `get.peek` to read atom data without subscribing.
Example ```js + const countAtom = atom(0) atomEffect((get, set) => { - set(logAtom, get(valueAtom)) - return () => { - get(idAtom) // Not a dependency - } + const count = get.peek(countAtom) // Will not add `countAtom` as a dependency }) ```
-- **Dependency Map Recalculation:** - Dependencies are recalculated on every run. +- **Supports Recursion:** + Recursion is supported with `set.recurse` but not in cleanup.
Example ```js - const isEnabledAtom = atom(true) - atomEffect((get, set) => { - // if `isEnabledAtom` is true, runs when `isEnabledAtom` or `anAtom` changes value - // otherwise runs when `isEnabledAtom` or `anotherAtom` changes value - if (get(isEnabledAtom)) { - const aValue = get(anAtom) - } else { - const anotherValue = get(anotherAtom) + const count = get(countAtom) + if (count % 10 === 0) { + return } + set.recurse(countAtom, (value) => value + 1) }) ```
- -## Comparison with useEffect - -### Component Side Effects - -[useEffect](https://react.dev/reference/react/useEffect) is a React Hook that lets you synchronize a component with an external system. - -Hooks are functions that let you “hook into” React state and lifecycle features from function components. -They are a way to reuse, but not centralize, stateful logic. -Each call to a hook has a completely isolated state. -This isolation can be referred to as _component-scoped_. -For synchronizing component props and state with a Jotai atom, you should use the useEffect hook. - -### Global Side Effects - -For setting up global side-effects, deciding between useEffect and atomEffect comes down to developer preference. -Whether you prefer to build this logic directly into the component or build this logic into the Jotai state model depends on what mental model you adopt. - -atomEffects are more appropriate for modeling behavior in atoms. -They are scoped to the store context rather than the component. -This guarantees that a single effect will be used regardless of how many calls they have. - -The same guarantee can be achieved with the useEffect hook if you ensure that the useEffect is idempotent. - -atomEffects are distinguished from useEffect in a few other ways. They can directly react to atom state changes, are resistent to infinite loops, and can be mounted conditionally. - -### It's up to you - -Both useEffect and atomEffect have their own advantages and applications. Your project's specific needs and your comfort level should guide your selection. -Always lean towards an approach that gives you a smoother, more intuitive development experience. Happy coding! diff --git a/docs/extensions/query.mdx b/docs/extensions/query.mdx index efe3dc6e8b..14112b97ad 100644 --- a/docs/extensions/query.mdx +++ b/docs/extensions/query.mdx @@ -7,7 +7,7 @@ keywords: tanstack,query [TanStack Query](https://tanstack.com/query/) provides a set of functions for managing async state (typically external data). -From the [Overview docs](https://tanstack.com/query/v5/docs/overview): +From the [Overview docs](https://tanstack.com/query/v5/docs/framework/react/overview): > React Query is often described as the missing data-fetching library for React, but in more technical terms, it makes **fetching, caching, synchronizing and updating server state** in your React applications a breeze. @@ -91,7 +91,7 @@ const UserData = () => { ### atomWithInfiniteQuery usage -`atomWithInfiniteQuery` is very similar to `atomWithQuery`, however it is for an `InfiniteQuery`, which is used for data that is meant to be paginated. You can [read more about Infinite Queries here](https://tanstack.com/query/v5/docs/guides/infinite-queries). +`atomWithInfiniteQuery` is very similar to `atomWithQuery`, however it is for an `InfiniteQuery`, which is used for data that is meant to be paginated. You can [read more about Infinite Queries here](https://tanstack.com/query/v5/docs/framework/react/guides/infinite-queries). > Rendering lists that can additively "load more" data onto an existing set of data or "infinite scroll" is also a very common UI pattern. React Query supports a useful version of useQuery called useInfiniteQuery for querying these types of lists. @@ -135,7 +135,7 @@ const Posts = () => { ### atomWithMutation usage -`atomWithMutation` creates a new atom that implements a standard [`Mutation`](https://tanstack.com/query/v5/docs/guides/mutations) from TanStack Query. +`atomWithMutation` creates a new atom that implements a standard [`Mutation`](https://tanstack.com/query/v5/docs/framework/react/guides/mutations) from TanStack Query. > Unlike queries, mutations are typically used to create/update/delete data or perform server side-effects. @@ -326,7 +326,7 @@ export const useTodoMutation = () => { ### SSR support -All atoms can be used within the context of a server side rendered app, such as a next.js app or Gatsby app. You can [use both options](https://tanstack.com/query/v5/docs/guides/ssr) that React Query supports for use within SSR apps, [hydration](https://tanstack.com/query/v5/docs/react/guides/ssr#using-the-hydration-apis) or [`initialData`](https://tanstack.com/query/v5/docs/react/guides/ssr#get-started-fast-with-initialdata). +All atoms can be used within the context of a server side rendered app, such as a next.js app or Gatsby app. You can [use both options](https://tanstack.com/query/v5/docs/framework/react/guides/ssr) that React Query supports for use within SSR apps, [hydration](https://tanstack.com/query/v5/docs/react/guides/ssr#using-the-hydration-apis) or [`initialData`](https://tanstack.com/query/v5/docs/react/guides/ssr#get-started-fast-with-initialdata). ### Error handling diff --git a/docs/utilities/resettable.mdx b/docs/utilities/resettable.mdx index ca7e12de15..16b5edf16d 100644 --- a/docs/utilities/resettable.mdx +++ b/docs/utilities/resettable.mdx @@ -198,7 +198,7 @@ const PostsList = () => { {/* Clicking this button will re-fetch the posts */} - diff --git a/examples/hacker_news/index.html b/examples/hacker_news/index.html index c9e48c5831..0459672d1a 100644 --- a/examples/hacker_news/index.html +++ b/examples/hacker_news/index.html @@ -1,4 +1,4 @@ - + @@ -10,4 +10,4 @@
- + diff --git a/examples/hacker_news/vite.config.ts b/examples/hacker_news/vite.config.ts index cfb1b76339..9ffcc67574 100644 --- a/examples/hacker_news/vite.config.ts +++ b/examples/hacker_news/vite.config.ts @@ -2,5 +2,5 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' export default defineConfig({ - plugins: [react()] -}) + plugins: [react()], +}) diff --git a/examples/hello/index.html b/examples/hello/index.html index e750b513e0..d50bd8ff8c 100644 --- a/examples/hello/index.html +++ b/examples/hello/index.html @@ -1,4 +1,4 @@ - + @@ -15,4 +15,4 @@
- + diff --git a/examples/hello/src/prism.css b/examples/hello/src/prism.css index 293de1d875..9235d3187a 100644 --- a/examples/hello/src/prism.css +++ b/examples/hello/src/prism.css @@ -6,8 +6,8 @@ code[class*='language-'], pre[class*='language-'] { color: #393a34; - font-family: 'Consolas', 'Bitstream Vera Sans Mono', 'Courier New', Courier, - monospace; + font-family: + 'Consolas', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; direction: ltr; text-align: left; white-space: pre; diff --git a/examples/hello/vite.config.ts b/examples/hello/vite.config.ts index cfb1b76339..9ffcc67574 100644 --- a/examples/hello/vite.config.ts +++ b/examples/hello/vite.config.ts @@ -2,5 +2,5 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' export default defineConfig({ - plugins: [react()] -}) + plugins: [react()], +}) diff --git a/examples/mega-form/index.html b/examples/mega-form/index.html index 0a0f3ae889..b1eeb4ad6b 100644 --- a/examples/mega-form/index.html +++ b/examples/mega-form/index.html @@ -1,4 +1,4 @@ - + @@ -10,4 +10,4 @@
- + diff --git a/examples/mega-form/src/style.css b/examples/mega-form/src/style.css index 619a92f331..28f2a46a14 100644 --- a/examples/mega-form/src/style.css +++ b/examples/mega-form/src/style.css @@ -10,8 +10,9 @@ body { margin: 0; padding: 8px; box-sizing: border-box; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, - Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif; + font-family: + -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, + Cantarell, 'Helvetica Neue', sans-serif; } a { diff --git a/examples/mega-form/src/useAtomSlice.ts b/examples/mega-form/src/useAtomSlice.ts index f4f05b445d..765fb4369b 100644 --- a/examples/mega-form/src/useAtomSlice.ts +++ b/examples/mega-form/src/useAtomSlice.ts @@ -4,10 +4,19 @@ import type { PrimitiveAtom } from 'jotai' import { splitAtom } from 'jotai/utils' const useAtomSlice = (arrAtom: PrimitiveAtom) => { - const [atoms, remove] = useAtom(useMemo(() => splitAtom(arrAtom), [arrAtom])) + const [atoms, dispatch] = useAtom( + useMemo(() => splitAtom(arrAtom), [arrAtom]), + ) return useMemo( - () => atoms.map((itemAtom) => [itemAtom, () => remove(itemAtom)] as const), - [atoms, remove], + () => + atoms.map( + (itemAtom) => + [ + itemAtom, + () => dispatch({ type: 'remove', atom: itemAtom }), + ] as const, + ), + [atoms, dispatch], ) } diff --git a/examples/mega-form/vite.config.ts b/examples/mega-form/vite.config.ts index cfb1b76339..9ffcc67574 100644 --- a/examples/mega-form/vite.config.ts +++ b/examples/mega-form/vite.config.ts @@ -2,5 +2,5 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' export default defineConfig({ - plugins: [react()] -}) + plugins: [react()], +}) diff --git a/examples/starter/index.html b/examples/starter/index.html index e547a03956..4ed36ff58e 100644 --- a/examples/starter/index.html +++ b/examples/starter/index.html @@ -1,4 +1,4 @@ - + diff --git a/examples/starter/src/index.tsx b/examples/starter/src/index.tsx index 8e82bb364c..5ff3a92430 100644 --- a/examples/starter/src/index.tsx +++ b/examples/starter/src/index.tsx @@ -1,16 +1,16 @@ -import { StrictMode } from 'react'; -import { createRoot } from 'react-dom/client'; -import { atom, useAtom } from 'jotai'; +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import { atom, useAtom } from 'jotai' -import mascot from './assets/jotai-mascot.png'; +import mascot from './assets/jotai-mascot.png' -import './index.css'; +import './index.css' -const countAtom = atom(0); +const countAtom = atom(0) const Counter = () => { - const [count, setCount] = useAtom(countAtom); - const inc = () => setCount((c) => c + 1); + const [count, setCount] = useAtom(countAtom) + const inc = () => setCount((c) => c + 1) return ( <> @@ -22,8 +22,8 @@ const Counter = () => { +1 - ); -}; + ) +} function App() { return ( @@ -43,11 +43,11 @@ function App() { - ); + ) } createRoot(document.getElementById('root')!).render( , -); +) diff --git a/examples/starter/tsconfig.json b/examples/starter/tsconfig.json index 6aae5756f9..e7841da9bc 100644 --- a/examples/starter/tsconfig.json +++ b/examples/starter/tsconfig.json @@ -19,4 +19,3 @@ "include": ["vite.config.ts", "./src/**/*"], "exclude": ["node_modules"] } - diff --git a/examples/starter/vite.config.ts b/examples/starter/vite.config.ts index 4e7004ebc6..36f7f4e1bc 100644 --- a/examples/starter/vite.config.ts +++ b/examples/starter/vite.config.ts @@ -1,7 +1,7 @@ -import react from '@vitejs/plugin-react'; -import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react' +import { defineConfig } from 'vite' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], -}); +}) diff --git a/examples/text_length/index.html b/examples/text_length/index.html index f52f663ed3..ef8736ae39 100644 --- a/examples/text_length/index.html +++ b/examples/text_length/index.html @@ -1,4 +1,4 @@ - + @@ -22,7 +22,9 @@
REACT SPRING
diff --git a/examples/text_length/vite.config.ts b/examples/text_length/vite.config.ts index cfb1b76339..9ffcc67574 100644 --- a/examples/text_length/vite.config.ts +++ b/examples/text_length/vite.config.ts @@ -2,5 +2,5 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' export default defineConfig({ - plugins: [react()] -}) + plugins: [react()], +}) diff --git a/examples/todos/index.html b/examples/todos/index.html index 3bc155494c..ecd0daf103 100644 --- a/examples/todos/index.html +++ b/examples/todos/index.html @@ -1,4 +1,4 @@ - + @@ -10,4 +10,4 @@
- + diff --git a/examples/todos/vite.config.ts b/examples/todos/vite.config.ts index cfb1b76339..9ffcc67574 100644 --- a/examples/todos/vite.config.ts +++ b/examples/todos/vite.config.ts @@ -2,5 +2,5 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' export default defineConfig({ - plugins: [react()] -}) + plugins: [react()], +}) diff --git a/examples/todos_with_atomFamily/index.html b/examples/todos_with_atomFamily/index.html index 201db4d54b..c452744c41 100644 --- a/examples/todos_with_atomFamily/index.html +++ b/examples/todos_with_atomFamily/index.html @@ -1,4 +1,4 @@ - + @@ -10,4 +10,4 @@
- + diff --git a/examples/todos_with_atomFamily/vite.config.ts b/examples/todos_with_atomFamily/vite.config.ts index cfb1b76339..9ffcc67574 100644 --- a/examples/todos_with_atomFamily/vite.config.ts +++ b/examples/todos_with_atomFamily/vite.config.ts @@ -2,5 +2,5 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' export default defineConfig({ - plugins: [react()] -}) + plugins: [react()], +}) diff --git a/package.json b/package.json index 90d3ce3ae5..b40afae0b1 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "👻 Primitive and flexible state management for React", "private": true, "type": "commonjs", - "version": "2.12.1", + "version": "2.12.2", "main": "./index.js", "types": "./index.d.ts", "typesVersions": { @@ -74,11 +74,11 @@ "build:react": "rollup -c --config-react --client-only", "build:react:utils": "rollup -c --config-react_utils --client-only", "postbuild": "pnpm run patch-d-ts && pnpm run copy && pnpm run patch-ts3.8 && pnpm run patch-old-ts && pnpm run patch-esm-ts && pnpm run patch-readme", - "fix": "pnpm run \"/^fix:.*/\"", + "fix": "pnpm run fix:lint && pnpm run fix:format", + "fix:format": "prettier . --write", "fix:lint": "eslint . --fix", - "fix:format": "prettier \"*.{js,json,md}\" \"{src,tests,benchmarks,docs}/**/*.{ts,tsx,md,mdx}\" --write", "test": "pnpm run \"/^test:.*/\"", - "test:format": "prettier \"*.{js,json,md}\" \"{src,tests,benchmarks,docs}/**/*.{ts,tsx,md,mdx}\" --list-different", + "test:format": "prettier . --list-different", "test:types": "tsc --noEmit", "test:lint": "eslint .", "test:spec": "vitest run", @@ -122,7 +122,7 @@ "@babel/plugin-transform-typescript": "^7.26.8", "@babel/preset-env": "^7.26.9", "@babel/template": "^7.26.9", - "@eslint/js": "^9.20.0", + "@eslint/js": "^9.22.0", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-node-resolve": "^16.0.0", @@ -135,41 +135,41 @@ "@testing-library/user-event": "^14.6.1", "@types/babel__core": "^7.20.5", "@types/babel__template": "^7.4.4", - "@types/node": "^22.13.4", + "@types/node": "^22.13.10", "@types/react": "^19.0.10", "@types/react-dom": "^19.0.4", "@vitejs/plugin-react": "^4.3.4", - "@vitest/coverage-v8": "^3.0.5", - "@vitest/eslint-plugin": "^1.1.31", - "@vitest/ui": "^3.0.5", + "@vitest/coverage-v8": "^3.0.8", + "@vitest/eslint-plugin": "^1.1.36", + "@vitest/ui": "^3.0.8", "benny": "^3.7.1", "downlevel-dts": "^0.11.0", - "esbuild": "^0.25.0", - "eslint": "9.20.1", - "eslint-import-resolver-typescript": "^3.8.0", + "esbuild": "^0.25.1", + "eslint": "9.22.0", + "eslint-import-resolver-typescript": "^3.8.3", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jest-dom": "^5.5.0", "eslint-plugin-react": "^7.37.4", - "eslint-plugin-react-compiler": "19.0.0-beta-21e868a-20250216", - "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-compiler": "19.0.0-beta-bafa41b-20250307", + "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-testing-library": "^7.1.1", "jest-leak-detector": "^29.7.0", "jsdom": "^26.0.0", "json": "^11.0.0", - "prettier": "^3.5.1", + "prettier": "^3.5.3", "react": "^19.0.0", "react-dom": "^19.0.0", - "rollup": "^4.34.8", + "rollup": "^4.35.0", "rollup-plugin-banner2": "^1.3.1", - "rollup-plugin-esbuild": "^6.2.0", - "rxjs": "^7.8.1", - "shelljs": "^0.8.5", + "rollup-plugin-esbuild": "^6.2.1", + "rxjs": "^7.8.2", + "shelljs": "^0.9.1", "shx": "^0.3.4", "ts-expect": "^1.3.0", - "typescript": "^5.7.3", - "typescript-eslint": "^8.24.0", - "vitest": "^3.0.5", - "wonka": "^6.3.4" + "typescript": "^5.8.2", + "typescript-eslint": "^8.26.0", + "vitest": "^3.0.8", + "wonka": "^6.3.5" }, "peerDependencies": { "@types/react": ">=17.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a25cd702ae..ff53d736b6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,26 +24,26 @@ importers: specifier: ^7.26.9 version: 7.26.9 '@eslint/js': - specifier: ^9.20.0 - version: 9.20.0 + specifier: ^9.22.0 + version: 9.22.0 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.34.8) + version: 5.1.1(rollup@4.35.0) '@rollup/plugin-babel': specifier: ^6.0.4 - version: 6.0.4(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@4.34.8) + version: 6.0.4(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@4.35.0) '@rollup/plugin-node-resolve': specifier: ^16.0.0 - version: 16.0.0(rollup@4.34.8) + version: 16.0.0(rollup@4.35.0) '@rollup/plugin-replace': specifier: ^6.0.2 - version: 6.0.2(rollup@4.34.8) + version: 6.0.2(rollup@4.35.0) '@rollup/plugin-terser': specifier: ^0.4.4 - version: 0.4.4(rollup@4.34.8) + version: 0.4.4(rollup@4.35.0) '@rollup/plugin-typescript': specifier: ^12.1.2 - version: 12.1.2(rollup@4.34.8)(tslib@2.8.1)(typescript@5.7.3) + version: 12.1.2(rollup@4.35.0)(tslib@2.8.1)(typescript@5.8.2) '@testing-library/dom': specifier: ^10.4.0 version: 10.4.0 @@ -63,8 +63,8 @@ importers: specifier: ^7.4.4 version: 7.4.4 '@types/node': - specifier: ^22.13.4 - version: 22.13.4 + specifier: ^22.13.10 + version: 22.13.10 '@types/react': specifier: ^19.0.10 version: 19.0.10 @@ -73,16 +73,16 @@ importers: version: 19.0.4(@types/react@19.0.10) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.1.0(@types/node@22.13.4)(terser@5.39.0)) + version: 4.3.4(vite@6.2.1(@types/node@22.13.10)(terser@5.39.0)) '@vitest/coverage-v8': - specifier: ^3.0.5 - version: 3.0.5(vitest@3.0.5) + specifier: ^3.0.8 + version: 3.0.8(vitest@3.0.8) '@vitest/eslint-plugin': - specifier: ^1.1.31 - version: 1.1.31(@typescript-eslint/utils@8.24.0(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3)(vitest@3.0.5) + specifier: ^1.1.36 + version: 1.1.36(@typescript-eslint/utils@8.26.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)(vitest@3.0.8) '@vitest/ui': - specifier: ^3.0.5 - version: 3.0.5(vitest@3.0.5) + specifier: ^3.0.8 + version: 3.0.8(vitest@3.0.8) benny: specifier: ^3.7.1 version: 3.7.1 @@ -90,32 +90,32 @@ importers: specifier: ^0.11.0 version: 0.11.0 esbuild: - specifier: ^0.25.0 - version: 0.25.0 + specifier: ^0.25.1 + version: 0.25.1 eslint: - specifier: 9.20.1 - version: 9.20.1 + specifier: 9.22.0 + version: 9.22.0 eslint-import-resolver-typescript: - specifier: ^3.8.0 - version: 3.8.0(eslint-plugin-import@2.31.0)(eslint@9.20.1) + specifier: ^3.8.3 + version: 3.8.3(eslint-plugin-import@2.31.0)(eslint@9.22.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.0)(eslint@9.20.1) + version: 2.31.0(@typescript-eslint/parser@8.26.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.8.3)(eslint@9.22.0) eslint-plugin-jest-dom: specifier: ^5.5.0 - version: 5.5.0(@testing-library/dom@10.4.0)(eslint@9.20.1) + version: 5.5.0(@testing-library/dom@10.4.0)(eslint@9.22.0) eslint-plugin-react: specifier: ^7.37.4 - version: 7.37.4(eslint@9.20.1) + version: 7.37.4(eslint@9.22.0) eslint-plugin-react-compiler: - specifier: 19.0.0-beta-21e868a-20250216 - version: 19.0.0-beta-21e868a-20250216(eslint@9.20.1) + specifier: 19.0.0-beta-bafa41b-20250307 + version: 19.0.0-beta-bafa41b-20250307(eslint@9.22.0) eslint-plugin-react-hooks: - specifier: ^5.1.0 - version: 5.1.0(eslint@9.20.1) + specifier: ^5.2.0 + version: 5.2.0(eslint@9.22.0) eslint-plugin-testing-library: specifier: ^7.1.1 - version: 7.1.1(eslint@9.20.1)(typescript@5.7.3) + version: 7.1.1(eslint@9.22.0)(typescript@5.8.2) jest-leak-detector: specifier: ^29.7.0 version: 29.7.0 @@ -126,8 +126,8 @@ importers: specifier: ^11.0.0 version: 11.0.0 prettier: - specifier: ^3.5.1 - version: 3.5.1 + specifier: ^3.5.3 + version: 3.5.3 react: specifier: ^19.0.0 version: 19.0.0 @@ -135,20 +135,20 @@ importers: specifier: ^19.0.0 version: 19.0.0(react@19.0.0) rollup: - specifier: ^4.34.8 - version: 4.34.8 + specifier: ^4.35.0 + version: 4.35.0 rollup-plugin-banner2: specifier: ^1.3.1 version: 1.3.1 rollup-plugin-esbuild: - specifier: ^6.2.0 - version: 6.2.0(esbuild@0.25.0)(rollup@4.34.8) + specifier: ^6.2.1 + version: 6.2.1(esbuild@0.25.1)(rollup@4.35.0) rxjs: - specifier: ^7.8.1 - version: 7.8.1 + specifier: ^7.8.2 + version: 7.8.2 shelljs: - specifier: ^0.8.5 - version: 0.8.5 + specifier: ^0.9.1 + version: 0.9.1 shx: specifier: ^0.3.4 version: 0.3.4 @@ -156,17 +156,17 @@ importers: specifier: ^1.3.0 version: 1.3.0 typescript: - specifier: ^5.7.3 - version: 5.7.3 + specifier: ^5.8.2 + version: 5.8.2 typescript-eslint: - specifier: ^8.24.0 - version: 8.24.0(eslint@9.20.1)(typescript@5.7.3) + specifier: ^8.26.0 + version: 8.26.0(eslint@9.22.0)(typescript@5.8.2) vitest: - specifier: ^3.0.5 - version: 3.0.5(@types/node@22.13.4)(@vitest/ui@3.0.5)(jsdom@26.0.0)(terser@5.39.0) + specifier: ^3.0.8 + version: 3.0.8(@types/node@22.13.10)(@vitest/ui@3.0.8)(jsdom@26.0.0)(terser@5.39.0) wonka: - specifier: ^6.3.4 - version: 6.3.4 + specifier: ^6.3.5 + version: 6.3.5 packages: @@ -192,8 +192,8 @@ packages: '@arrows/multimethod@1.4.1': resolution: {integrity: sha512-AZnAay0dgPnCJxn3We5uKiB88VL+1ZIF2SjZohLj6vqY2UyvB/sKdDnFP+LZNVsTC5lcnGPmLlRRkAh4sXkXsQ==} - '@asamuzakjp/css-color@2.8.3': - resolution: {integrity: sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==} + '@asamuzakjp/css-color@3.1.1': + resolution: {integrity: sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==} '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} @@ -727,19 +727,19 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@csstools/color-helpers@5.0.1': - resolution: {integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==} + '@csstools/color-helpers@5.0.2': + resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} - '@csstools/css-calc@2.1.1': - resolution: {integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==} + '@csstools/css-calc@2.1.2': + resolution: {integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==} engines: {node: '>=18'} peerDependencies: '@csstools/css-parser-algorithms': ^3.0.4 '@csstools/css-tokenizer': ^3.0.3 - '@csstools/css-color-parser@3.0.7': - resolution: {integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==} + '@csstools/css-color-parser@3.0.8': + resolution: {integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==} engines: {node: '>=18'} peerDependencies: '@csstools/css-parser-algorithms': ^3.0.4 @@ -755,302 +755,152 @@ packages: resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} engines: {node: '>=18'} - '@esbuild/aix-ppc64@0.24.2': - resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + '@esbuild/aix-ppc64@0.25.1': + resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.0': - resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.24.2': - resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.25.0': - resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==} + '@esbuild/android-arm64@0.25.1': + resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.24.2': - resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + '@esbuild/android-arm@0.25.1': + resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.0': - resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.24.2': - resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.25.0': - resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==} + '@esbuild/android-x64@0.25.1': + resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.24.2': - resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + '@esbuild/darwin-arm64@0.25.1': + resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.0': - resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.24.2': - resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.0': - resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==} + '@esbuild/darwin-x64@0.25.1': + resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.24.2': - resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.25.0': - resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==} + '@esbuild/freebsd-arm64@0.25.1': + resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.24.2': - resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + '@esbuild/freebsd-x64@0.25.1': + resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.0': - resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.24.2': - resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.25.0': - resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==} + '@esbuild/linux-arm64@0.25.1': + resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.24.2': - resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + '@esbuild/linux-arm@0.25.1': + resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.0': - resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.24.2': - resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + '@esbuild/linux-ia32@0.25.1': + resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.0': - resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.24.2': - resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + '@esbuild/linux-loong64@0.25.1': + resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.0': - resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.24.2': - resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + '@esbuild/linux-mips64el@0.25.1': + resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.0': - resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.24.2': - resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + '@esbuild/linux-ppc64@0.25.1': + resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.0': - resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.24.2': - resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + '@esbuild/linux-riscv64@0.25.1': + resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.0': - resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.24.2': - resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.25.0': - resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==} + '@esbuild/linux-s390x@0.25.1': + resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.24.2': - resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + '@esbuild/linux-x64@0.25.1': + resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.0': - resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.24.2': - resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + '@esbuild/netbsd-arm64@0.25.1': + resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.0': - resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.24.2': - resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.0': - resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==} + '@esbuild/netbsd-x64@0.25.1': + resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.24.2': - resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + '@esbuild/openbsd-arm64@0.25.1': + resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.0': - resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.24.2': - resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.0': - resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==} + '@esbuild/openbsd-x64@0.25.1': + resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.24.2': - resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + '@esbuild/sunos-x64@0.25.1': + resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.0': - resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.24.2': - resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.25.0': - resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==} + '@esbuild/win32-arm64@0.25.1': + resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.24.2': - resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.25.0': - resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==} + '@esbuild/win32-ia32@0.25.1': + resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.24.2': - resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.25.0': - resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} + '@esbuild/win32-x64@0.25.1': + resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1069,28 +919,28 @@ packages: resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.10.0': - resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} + '@eslint/config-helpers@0.1.0': + resolution: {integrity: sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.11.0': - resolution: {integrity: sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==} + '@eslint/core@0.12.0': + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.2.0': - resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + '@eslint/eslintrc@3.3.0': + resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.20.0': - resolution: {integrity: sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==} + '@eslint/js@9.22.0': + resolution: {integrity: sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.5': - resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} + '@eslint/plugin-kit@0.2.7': + resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@humanfs/core@0.19.1': @@ -1109,8 +959,8 @@ packages: resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.4.1': - resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} '@isaacs/cliui@8.0.2': @@ -1240,98 +1090,98 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.34.8': - resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==} + '@rollup/rollup-android-arm-eabi@4.35.0': + resolution: {integrity: sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.34.8': - resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==} + '@rollup/rollup-android-arm64@4.35.0': + resolution: {integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.34.8': - resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==} + '@rollup/rollup-darwin-arm64@4.35.0': + resolution: {integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.34.8': - resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==} + '@rollup/rollup-darwin-x64@4.35.0': + resolution: {integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.34.8': - resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==} + '@rollup/rollup-freebsd-arm64@4.35.0': + resolution: {integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.34.8': - resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==} + '@rollup/rollup-freebsd-x64@4.35.0': + resolution: {integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.34.8': - resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} + '@rollup/rollup-linux-arm-gnueabihf@4.35.0': + resolution: {integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.34.8': - resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} + '@rollup/rollup-linux-arm-musleabihf@4.35.0': + resolution: {integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.34.8': - resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} + '@rollup/rollup-linux-arm64-gnu@4.35.0': + resolution: {integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.34.8': - resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} + '@rollup/rollup-linux-arm64-musl@4.35.0': + resolution: {integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.34.8': - resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.35.0': + resolution: {integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': - resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': + resolution: {integrity: sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.34.8': - resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} + '@rollup/rollup-linux-riscv64-gnu@4.35.0': + resolution: {integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.34.8': - resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} + '@rollup/rollup-linux-s390x-gnu@4.35.0': + resolution: {integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.34.8': - resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} + '@rollup/rollup-linux-x64-gnu@4.35.0': + resolution: {integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.34.8': - resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} + '@rollup/rollup-linux-x64-musl@4.35.0': + resolution: {integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.34.8': - resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} + '@rollup/rollup-win32-arm64-msvc@4.35.0': + resolution: {integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.34.8': - resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==} + '@rollup/rollup-win32-ia32-msvc@4.35.0': + resolution: {integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.34.8': - resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==} + '@rollup/rollup-win32-x64-msvc@4.35.0': + resolution: {integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==} cpu: [x64] os: [win32] @@ -1394,8 +1244,8 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/node@22.13.4': - resolution: {integrity: sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==} + '@types/node@22.13.10': + resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} '@types/react-dom@19.0.4': resolution: {integrity: sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==} @@ -1408,51 +1258,51 @@ packages: '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@typescript-eslint/eslint-plugin@8.24.0': - resolution: {integrity: sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==} + '@typescript-eslint/eslint-plugin@8.26.0': + resolution: {integrity: sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.24.0': - resolution: {integrity: sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==} + '@typescript-eslint/parser@8.26.0': + resolution: {integrity: sha512-mNtXP9LTVBy14ZF3o7JG69gRPBK/2QWtQd0j0oH26HcY/foyJJau6pNUez7QrM5UHnSvwlQcJXKsk0I99B9pOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.24.0': - resolution: {integrity: sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==} + '@typescript-eslint/scope-manager@8.26.0': + resolution: {integrity: sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.24.0': - resolution: {integrity: sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==} + '@typescript-eslint/type-utils@8.26.0': + resolution: {integrity: sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.24.0': - resolution: {integrity: sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==} + '@typescript-eslint/types@8.26.0': + resolution: {integrity: sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.24.0': - resolution: {integrity: sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==} + '@typescript-eslint/typescript-estree@8.26.0': + resolution: {integrity: sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.24.0': - resolution: {integrity: sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==} + '@typescript-eslint/utils@8.26.0': + resolution: {integrity: sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.24.0': - resolution: {integrity: sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==} + '@typescript-eslint/visitor-keys@8.26.0': + resolution: {integrity: sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitejs/plugin-react@4.3.4': @@ -1461,19 +1311,19 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - '@vitest/coverage-v8@3.0.5': - resolution: {integrity: sha512-zOOWIsj5fHh3jjGwQg+P+J1FW3s4jBu1Zqga0qW60yutsBtqEqNEJKWYh7cYn1yGD+1bdPsPdC/eL4eVK56xMg==} + '@vitest/coverage-v8@3.0.8': + resolution: {integrity: sha512-y7SAKsQirsEJ2F8bulBck4DoluhI2EEgTimHd6EEUgJBGKy9tC25cpywh1MH4FvDGoG2Unt7+asVd1kj4qOSAw==} peerDependencies: - '@vitest/browser': 3.0.5 - vitest: 3.0.5 + '@vitest/browser': 3.0.8 + vitest: 3.0.8 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/eslint-plugin@1.1.31': - resolution: {integrity: sha512-xlsLr+e+AXZ/00eVZCtNmMeCJoJaRCoLDiAgLcxgQjSS1EertieB2MUHf8xIqPKs9lECc/UpL+y1xDcpvi02hw==} + '@vitest/eslint-plugin@1.1.36': + resolution: {integrity: sha512-IjBV/fcL9NJRxGw221ieaDsqKqj8qUo7rvSupDxMjTXyhsCusHC6M+jFUNqBp4PCkYFcf5bjrKxeZoCEWoPxig==} peerDependencies: - '@typescript-eslint/utils': '>= 8.0' + '@typescript-eslint/utils': ^8.24.0 eslint: '>= 8.57.0' typescript: '>= 5.0.0' vitest: '*' @@ -1483,11 +1333,11 @@ packages: vitest: optional: true - '@vitest/expect@3.0.5': - resolution: {integrity: sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==} + '@vitest/expect@3.0.8': + resolution: {integrity: sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==} - '@vitest/mocker@3.0.5': - resolution: {integrity: sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==} + '@vitest/mocker@3.0.8': + resolution: {integrity: sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -1497,33 +1347,33 @@ packages: vite: optional: true - '@vitest/pretty-format@3.0.5': - resolution: {integrity: sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==} + '@vitest/pretty-format@3.0.8': + resolution: {integrity: sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==} - '@vitest/runner@3.0.5': - resolution: {integrity: sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==} + '@vitest/runner@3.0.8': + resolution: {integrity: sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==} - '@vitest/snapshot@3.0.5': - resolution: {integrity: sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==} + '@vitest/snapshot@3.0.8': + resolution: {integrity: sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==} - '@vitest/spy@3.0.5': - resolution: {integrity: sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==} + '@vitest/spy@3.0.8': + resolution: {integrity: sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==} - '@vitest/ui@3.0.5': - resolution: {integrity: sha512-gw2noso6WI+2PeMVCZFntdATS6xl9qhQcbhkPQ9sOmx/Xn0f4Bx4KDSbD90jpJPF0l5wOzSoGCmKyVR3W612mg==} + '@vitest/ui@3.0.8': + resolution: {integrity: sha512-MfTjaLU+Gw/lYorgwFZ06Cym+Mj9hPfZh/Q91d4JxyAHiicAakPTvS7zYCSHF+5cErwu2PVBe1alSjuh6L/UiA==} peerDependencies: - vitest: 3.0.5 + vitest: 3.0.8 - '@vitest/utils@3.0.5': - resolution: {integrity: sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==} + '@vitest/utils@3.0.8': + resolution: {integrity: sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} hasBin: true @@ -1674,16 +1524,16 @@ packages: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} - call-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001700: - resolution: {integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==} + caniuse-lite@1.0.30001703: + resolution: {integrity: sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==} chai@5.2.0: resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} @@ -1733,8 +1583,12 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - core-js-compat@3.40.0: - resolution: {integrity: sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==} + core-js-compat@3.41.0: + resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} + + cross-spawn@6.0.6: + resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} + engines: {node: '>=4.8'} cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} @@ -1743,8 +1597,8 @@ packages: css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - cssstyle@4.2.1: - resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==} + cssstyle@4.3.0: + resolution: {integrity: sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==} engines: {node: '>=18'} csstype@3.1.3: @@ -1834,8 +1688,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.101: - resolution: {integrity: sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==} + electron-to-chromium@1.5.114: + resolution: {integrity: sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1843,6 +1697,9 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + enhanced-resolve@5.18.1: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} @@ -1886,13 +1743,8 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - esbuild@0.24.2: - resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} - engines: {node: '>=18'} - hasBin: true - - esbuild@0.25.0: - resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==} + esbuild@0.25.1: + resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} engines: {node: '>=18'} hasBin: true @@ -1907,8 +1759,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.8.0: - resolution: {integrity: sha512-fItUrP/+xwpavWgadrn6lsvcMe80s08xIVFXkUXvhR4cZD2ga96kRF/z/iFGDI7ZDnvtlaZ0wGic7Tw+DhgVnA==} + eslint-import-resolver-typescript@3.8.3: + resolution: {integrity: sha512-A0bu4Ks2QqDWNpeEgTQMPTngaMhuDu4yv6xpftBMAf+1ziXnpx+eSR1WRfoPTe2BAiAjHFZ7kSNx1fvr5g5pmQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -1961,14 +1813,14 @@ packages: '@testing-library/dom': optional: true - eslint-plugin-react-compiler@19.0.0-beta-21e868a-20250216: - resolution: {integrity: sha512-LstAv6tKgZylMmJniWxQL9TOY9kwRddLnvBsoTbRsgUDROL5bsg0k5XHMaNJLyX8cxh4iafQ/WxAw5shNUf3GQ==} + eslint-plugin-react-compiler@19.0.0-beta-bafa41b-20250307: + resolution: {integrity: sha512-6q5FGhEh52dM2f6aqZcPWj1tlsc+3V2V1DrIxLiqJ0r3I2aivVXDf/TBZ3Bsqe6YDvdpaVDCg+bX9lv0QMn5PQ==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} peerDependencies: eslint: '>=7' - eslint-plugin-react-hooks@5.1.0: - resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==} + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 @@ -1985,8 +1837,8 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 - eslint-scope@8.2.0: - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: @@ -1997,8 +1849,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.20.1: - resolution: {integrity: sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==} + eslint@9.22.0: + resolution: {integrity: sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2033,8 +1885,12 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - expect-type@1.1.0: - resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} + + expect-type@1.2.0: + resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} engines: {node: '>=12.0.0'} fast-deep-equal@3.1.3: @@ -2050,8 +1906,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fastq@1.19.0: - resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} fdir@6.4.3: resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} @@ -2080,15 +1936,15 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} form-data@4.0.2: @@ -2121,14 +1977,18 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - get-intrinsic@1.2.7: - resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -2342,6 +2202,10 @@ packages: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} @@ -2573,26 +2437,33 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + nanoid@3.3.9: + resolution: {integrity: sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - nwsapi@2.2.16: - resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} + npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + + nwsapi@2.2.18: + resolution: {integrity: sha512-p1TRH/edngVEHVbwqWnxUViEmq5znDvyB+Sik5cmuLpGOIfDf/39zLiq3swPF8Vakqn+gvNiOQAZu8djYlQILA==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -2641,6 +2512,10 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -2667,6 +2542,10 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -2703,16 +2582,16 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.2: - resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.5.1: - resolution: {integrity: sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==} + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} hasBin: true @@ -2727,6 +2606,9 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2823,23 +2705,23 @@ packages: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rollup-plugin-banner2@1.3.1: resolution: {integrity: sha512-BUxYj2FbSCxgfyvln6f1AWG1n+b1ZUXXb/LkKpClB12CTIjwDFexWw35V/STz7xT+BLat475I204aRzpxRQwKg==} engines: {node: '>=12.13'} - rollup-plugin-esbuild@6.2.0: - resolution: {integrity: sha512-LbkHaCahA6ceyWzAd6md2yajNS+HfZmZ5o58ShkZp0cQeZOnZECG2D2xWFNBq5SF6X6pfMK2udkZ+wRtvpzyVQ==} + rollup-plugin-esbuild@6.2.1: + resolution: {integrity: sha512-jTNOMGoMRhs0JuueJrJqbW8tOwxumaWYq+V5i+PD+8ecSCVkuX27tGW7BXqDgoULQ55rO7IdNxPcnsWtshz3AA==} engines: {node: '>=14.18.0'} peerDependencies: esbuild: '>=0.18.0' rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - rollup@4.34.8: - resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==} + rollup@4.35.0: + resolution: {integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2849,8 +2731,8 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} @@ -2877,6 +2759,10 @@ packages: scheduler@0.25.0: resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -2901,10 +2787,18 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -2914,6 +2808,11 @@ packages: engines: {node: '>=4'} hasBin: true + shelljs@0.9.1: + resolution: {integrity: sha512-ngPynK9u9OmsL2DttaTOhEPahyAjVbjIwCK3R+2V9YDq0/equpq7hVz3XrnfIjAk1thN5ET5mEIzAmocmV6i+Q==} + engines: {node: '>=18'} + hasBin: true + shx@0.3.4: resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} engines: {node: '>=6'} @@ -2945,8 +2844,8 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sirv@3.0.0: - resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + sirv@3.0.1: + resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} engines: {node: '>=18'} slice-ansi@4.0.0: @@ -2977,8 +2876,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + std-env@3.8.1: + resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -3019,6 +2918,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -3057,8 +2960,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.10: - resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + tinyglobby@0.2.12: + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} tinypool@1.0.2: @@ -3073,11 +2976,11 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} - tldts-core@6.1.77: - resolution: {integrity: sha512-bCaqm24FPk8OgBkM0u/SrEWJgHnhBWYqeBo6yUmcZJDCHt/IfyWBb+14CXdGi4RInMv4v7eUAin15W0DoA+Ytg==} + tldts-core@6.1.84: + resolution: {integrity: sha512-NaQa1W76W2aCGjXybvnMYzGSM4x8fvG2AN/pla7qxcg0ZHbooOPhA8kctmOZUDfZyhDL27OGNbwAeig8P4p1vg==} - tldts@6.1.77: - resolution: {integrity: sha512-lBpoWgy+kYmuXWQ83+R7LlJCnsd9YW8DGpZSHhrMl4b8Ly/1vzOie3OdtmUJDkKxcgRGOehDu5btKkty+JEe+g==} + tldts@6.1.84: + resolution: {integrity: sha512-aRGIbCIF3teodtUFAYSdQONVmDRy21REM3o6JnqWn5ZkQBJJ4gHxhw6OfwQ+WkSAi3ASamrS4N4nyazWx6uTYg==} hasBin: true to-regex-range@5.0.1: @@ -3088,8 +2991,8 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@5.1.1: - resolution: {integrity: sha512-Ek7HndSVkp10hmHP9V4qZO1u+pn1RU5sI0Fw+jCU3lyvuMZcgqsNgc6CmJJZyByK4Vm/qotGRJlfgAX8q+4JiA==} + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} tr46@5.0.0: @@ -3135,20 +3038,20 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.24.0: - resolution: {integrity: sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ==} + typescript-eslint@8.26.0: + resolution: {integrity: sha512-PtVz9nAnuNJuAVeUFvwztjuUgSnJInODAUx47VDwWPXzd5vismPOtPtt83tzNXyOjVQbPRp786D6WFW/M2koIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + typescript@5.8.2: + resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} hasBin: true - typescript@5.8.0-dev.20250217: - resolution: {integrity: sha512-ucr3Nf7Fmd3nbF7qo+D+SqAqfdSOJCm1AneFjVsjgomUXY3zaCofP5DpY8kJGzynaGRdz5XECeh3ksZOvgJKoA==} + typescript@5.9.0-dev.20250310: + resolution: {integrity: sha512-PCNhGhvQ6DOh4qrSXGEy91feAsxhjexDFs01lU5gac7SOLkTgGpgYu1w2kIS2JsA8FyfTuFG11bCoeZlkrHz4w==} engines: {node: '>=14.17'} hasBin: true @@ -3183,8 +3086,8 @@ packages: resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} engines: {node: '>=18.12.0'} - update-browserslist-db@1.1.2: - resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -3192,13 +3095,13 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - vite-node@3.0.5: - resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==} + vite-node@3.0.8: + resolution: {integrity: sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@6.1.0: - resolution: {integrity: sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==} + vite@6.2.1: + resolution: {integrity: sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -3237,16 +3140,16 @@ packages: yaml: optional: true - vitest@3.0.5: - resolution: {integrity: sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==} + vitest@3.0.8: + resolution: {integrity: sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.5 - '@vitest/ui': 3.0.5 + '@vitest/browser': 3.0.8 + '@vitest/ui': 3.0.8 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -3297,10 +3200,14 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-typed-array@1.1.18: - resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -3311,8 +3218,8 @@ packages: engines: {node: '>=8'} hasBin: true - wonka@6.3.4: - resolution: {integrity: sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg==} + wonka@6.3.5: + resolution: {integrity: sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==} word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} @@ -3333,8 +3240,8 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3396,10 +3303,10 @@ snapshots: '@arrows/error': 1.0.2 fast-deep-equal: 3.1.3 - '@asamuzakjp/css-color@2.8.3': + '@asamuzakjp/css-color@3.1.1': dependencies: - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 lru-cache: 10.4.3 @@ -4054,7 +3961,7 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.9) babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.9) babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.9) - core-js-compat: 3.40.0 + core-js-compat: 3.41.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -4095,17 +4002,17 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@csstools/color-helpers@5.0.1': {} + '@csstools/color-helpers@5.0.2': {} - '@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': dependencies: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': dependencies: - '@csstools/color-helpers': 5.0.1 - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/color-helpers': 5.0.2 + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 @@ -4115,159 +4022,84 @@ snapshots: '@csstools/css-tokenizer@3.0.3': {} - '@esbuild/aix-ppc64@0.24.2': - optional: true - - '@esbuild/aix-ppc64@0.25.0': - optional: true - - '@esbuild/android-arm64@0.24.2': - optional: true - - '@esbuild/android-arm64@0.25.0': - optional: true - - '@esbuild/android-arm@0.24.2': - optional: true - - '@esbuild/android-arm@0.25.0': - optional: true - - '@esbuild/android-x64@0.24.2': - optional: true - - '@esbuild/android-x64@0.25.0': - optional: true - - '@esbuild/darwin-arm64@0.24.2': - optional: true - - '@esbuild/darwin-arm64@0.25.0': - optional: true - - '@esbuild/darwin-x64@0.24.2': - optional: true - - '@esbuild/darwin-x64@0.25.0': - optional: true - - '@esbuild/freebsd-arm64@0.24.2': - optional: true - - '@esbuild/freebsd-arm64@0.25.0': - optional: true - - '@esbuild/freebsd-x64@0.24.2': - optional: true - - '@esbuild/freebsd-x64@0.25.0': - optional: true - - '@esbuild/linux-arm64@0.24.2': + '@esbuild/aix-ppc64@0.25.1': optional: true - '@esbuild/linux-arm64@0.25.0': + '@esbuild/android-arm64@0.25.1': optional: true - '@esbuild/linux-arm@0.24.2': + '@esbuild/android-arm@0.25.1': optional: true - '@esbuild/linux-arm@0.25.0': + '@esbuild/android-x64@0.25.1': optional: true - '@esbuild/linux-ia32@0.24.2': + '@esbuild/darwin-arm64@0.25.1': optional: true - '@esbuild/linux-ia32@0.25.0': + '@esbuild/darwin-x64@0.25.1': optional: true - '@esbuild/linux-loong64@0.24.2': + '@esbuild/freebsd-arm64@0.25.1': optional: true - '@esbuild/linux-loong64@0.25.0': + '@esbuild/freebsd-x64@0.25.1': optional: true - '@esbuild/linux-mips64el@0.24.2': + '@esbuild/linux-arm64@0.25.1': optional: true - '@esbuild/linux-mips64el@0.25.0': + '@esbuild/linux-arm@0.25.1': optional: true - '@esbuild/linux-ppc64@0.24.2': + '@esbuild/linux-ia32@0.25.1': optional: true - '@esbuild/linux-ppc64@0.25.0': + '@esbuild/linux-loong64@0.25.1': optional: true - '@esbuild/linux-riscv64@0.24.2': + '@esbuild/linux-mips64el@0.25.1': optional: true - '@esbuild/linux-riscv64@0.25.0': + '@esbuild/linux-ppc64@0.25.1': optional: true - '@esbuild/linux-s390x@0.24.2': + '@esbuild/linux-riscv64@0.25.1': optional: true - '@esbuild/linux-s390x@0.25.0': + '@esbuild/linux-s390x@0.25.1': optional: true - '@esbuild/linux-x64@0.24.2': + '@esbuild/linux-x64@0.25.1': optional: true - '@esbuild/linux-x64@0.25.0': + '@esbuild/netbsd-arm64@0.25.1': optional: true - '@esbuild/netbsd-arm64@0.24.2': + '@esbuild/netbsd-x64@0.25.1': optional: true - '@esbuild/netbsd-arm64@0.25.0': + '@esbuild/openbsd-arm64@0.25.1': optional: true - '@esbuild/netbsd-x64@0.24.2': + '@esbuild/openbsd-x64@0.25.1': optional: true - '@esbuild/netbsd-x64@0.25.0': + '@esbuild/sunos-x64@0.25.1': optional: true - '@esbuild/openbsd-arm64@0.24.2': + '@esbuild/win32-arm64@0.25.1': optional: true - '@esbuild/openbsd-arm64@0.25.0': + '@esbuild/win32-ia32@0.25.1': optional: true - '@esbuild/openbsd-x64@0.24.2': + '@esbuild/win32-x64@0.25.1': optional: true - '@esbuild/openbsd-x64@0.25.0': - optional: true - - '@esbuild/sunos-x64@0.24.2': - optional: true - - '@esbuild/sunos-x64@0.25.0': - optional: true - - '@esbuild/win32-arm64@0.24.2': - optional: true - - '@esbuild/win32-arm64@0.25.0': - optional: true - - '@esbuild/win32-ia32@0.24.2': - optional: true - - '@esbuild/win32-ia32@0.25.0': - optional: true - - '@esbuild/win32-x64@0.24.2': - optional: true - - '@esbuild/win32-x64@0.25.0': - optional: true - - '@eslint-community/eslint-utils@4.4.1(eslint@9.20.1)': + '@eslint-community/eslint-utils@4.4.1(eslint@9.22.0)': dependencies: - eslint: 9.20.1 + eslint: 9.22.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -4280,15 +4112,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/core@0.10.0': - dependencies: - '@types/json-schema': 7.0.15 + '@eslint/config-helpers@0.1.0': {} - '@eslint/core@0.11.0': + '@eslint/core@0.12.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.2.0': + '@eslint/eslintrc@3.3.0': dependencies: ajv: 6.12.6 debug: 4.4.0 @@ -4302,13 +4132,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.20.0': {} + '@eslint/js@9.22.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.2.5': + '@eslint/plugin-kit@0.2.7': dependencies: - '@eslint/core': 0.10.0 + '@eslint/core': 0.12.0 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -4322,7 +4152,7 @@ snapshots: '@humanwhocodes/retry@0.3.1': {} - '@humanwhocodes/retry@0.4.1': {} + '@humanwhocodes/retry@0.4.2': {} '@isaacs/cliui@8.0.2': dependencies: @@ -4371,7 +4201,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.0 + fastq: 1.19.1 '@nolyfill/is-core-module@1.0.39': {} @@ -4380,118 +4210,118 @@ snapshots: '@polka/url@1.0.0-next.28': {} - '@rollup/plugin-alias@5.1.1(rollup@4.34.8)': + '@rollup/plugin-alias@5.1.1(rollup@4.35.0)': optionalDependencies: - rollup: 4.34.8 + rollup: 4.35.0 - '@rollup/plugin-babel@6.0.4(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@4.34.8)': + '@rollup/plugin-babel@6.0.4(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@4.35.0)': dependencies: '@babel/core': 7.26.9 '@babel/helper-module-imports': 7.25.9 - '@rollup/pluginutils': 5.1.4(rollup@4.34.8) + '@rollup/pluginutils': 5.1.4(rollup@4.35.0) optionalDependencies: '@types/babel__core': 7.20.5 - rollup: 4.34.8 + rollup: 4.35.0 transitivePeerDependencies: - supports-color - '@rollup/plugin-node-resolve@16.0.0(rollup@4.34.8)': + '@rollup/plugin-node-resolve@16.0.0(rollup@4.35.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.8) + '@rollup/pluginutils': 5.1.4(rollup@4.35.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.34.8 + rollup: 4.35.0 - '@rollup/plugin-replace@6.0.2(rollup@4.34.8)': + '@rollup/plugin-replace@6.0.2(rollup@4.35.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.8) + '@rollup/pluginutils': 5.1.4(rollup@4.35.0) magic-string: 0.30.17 optionalDependencies: - rollup: 4.34.8 + rollup: 4.35.0 - '@rollup/plugin-terser@0.4.4(rollup@4.34.8)': + '@rollup/plugin-terser@0.4.4(rollup@4.35.0)': dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 terser: 5.39.0 optionalDependencies: - rollup: 4.34.8 + rollup: 4.35.0 - '@rollup/plugin-typescript@12.1.2(rollup@4.34.8)(tslib@2.8.1)(typescript@5.7.3)': + '@rollup/plugin-typescript@12.1.2(rollup@4.35.0)(tslib@2.8.1)(typescript@5.8.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.8) + '@rollup/pluginutils': 5.1.4(rollup@4.35.0) resolve: 1.22.10 - typescript: 5.7.3 + typescript: 5.8.2 optionalDependencies: - rollup: 4.34.8 + rollup: 4.35.0 tslib: 2.8.1 - '@rollup/pluginutils@5.1.4(rollup@4.34.8)': + '@rollup/pluginutils@5.1.4(rollup@4.35.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.34.8 + rollup: 4.35.0 - '@rollup/rollup-android-arm-eabi@4.34.8': + '@rollup/rollup-android-arm-eabi@4.35.0': optional: true - '@rollup/rollup-android-arm64@4.34.8': + '@rollup/rollup-android-arm64@4.35.0': optional: true - '@rollup/rollup-darwin-arm64@4.34.8': + '@rollup/rollup-darwin-arm64@4.35.0': optional: true - '@rollup/rollup-darwin-x64@4.34.8': + '@rollup/rollup-darwin-x64@4.35.0': optional: true - '@rollup/rollup-freebsd-arm64@4.34.8': + '@rollup/rollup-freebsd-arm64@4.35.0': optional: true - '@rollup/rollup-freebsd-x64@4.34.8': + '@rollup/rollup-freebsd-x64@4.35.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.34.8': + '@rollup/rollup-linux-arm-gnueabihf@4.35.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.34.8': + '@rollup/rollup-linux-arm-musleabihf@4.35.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.34.8': + '@rollup/rollup-linux-arm64-gnu@4.35.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.34.8': + '@rollup/rollup-linux-arm64-musl@4.35.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.34.8': + '@rollup/rollup-linux-loongarch64-gnu@4.35.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': + '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.34.8': + '@rollup/rollup-linux-riscv64-gnu@4.35.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.34.8': + '@rollup/rollup-linux-s390x-gnu@4.35.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.34.8': + '@rollup/rollup-linux-x64-gnu@4.35.0': optional: true - '@rollup/rollup-linux-x64-musl@4.34.8': + '@rollup/rollup-linux-x64-musl@4.35.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.34.8': + '@rollup/rollup-win32-arm64-msvc@4.35.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.34.8': + '@rollup/rollup-win32-ia32-msvc@4.35.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.34.8': + '@rollup/rollup-win32-x64-msvc@4.35.0': optional: true '@rtsao/scc@1.1.0': {} @@ -4562,7 +4392,7 @@ snapshots: '@types/json5@0.0.29': {} - '@types/node@22.13.4': + '@types/node@22.13.10': dependencies: undici-types: 6.20.0 @@ -4576,95 +4406,95 @@ snapshots: '@types/resolve@1.20.2': {} - '@typescript-eslint/eslint-plugin@8.24.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.24.0(eslint@9.20.1)(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.24.0 - '@typescript-eslint/type-utils': 8.24.0(eslint@9.20.1)(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.0(eslint@9.20.1)(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.24.0 - eslint: 9.20.1 + '@typescript-eslint/parser': 8.26.0(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/scope-manager': 8.26.0 + '@typescript-eslint/type-utils': 8.26.0(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/utils': 8.26.0(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.26.0 + eslint: 9.22.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 2.0.1(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.24.0(eslint@9.20.1)(typescript@5.7.3)': + '@typescript-eslint/parser@8.26.0(eslint@9.22.0)(typescript@5.8.2)': dependencies: - '@typescript-eslint/scope-manager': 8.24.0 - '@typescript-eslint/types': 8.24.0 - '@typescript-eslint/typescript-estree': 8.24.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.24.0 + '@typescript-eslint/scope-manager': 8.26.0 + '@typescript-eslint/types': 8.26.0 + '@typescript-eslint/typescript-estree': 8.26.0(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.26.0 debug: 4.4.0 - eslint: 9.20.1 - typescript: 5.7.3 + eslint: 9.22.0 + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.24.0': + '@typescript-eslint/scope-manager@8.26.0': dependencies: - '@typescript-eslint/types': 8.24.0 - '@typescript-eslint/visitor-keys': 8.24.0 + '@typescript-eslint/types': 8.26.0 + '@typescript-eslint/visitor-keys': 8.26.0 - '@typescript-eslint/type-utils@8.24.0(eslint@9.20.1)(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.26.0(eslint@9.22.0)(typescript@5.8.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.24.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.0(eslint@9.20.1)(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.26.0(typescript@5.8.2) + '@typescript-eslint/utils': 8.26.0(eslint@9.22.0)(typescript@5.8.2) debug: 4.4.0 - eslint: 9.20.1 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + eslint: 9.22.0 + ts-api-utils: 2.0.1(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.24.0': {} + '@typescript-eslint/types@8.26.0': {} - '@typescript-eslint/typescript-estree@8.24.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.26.0(typescript@5.8.2)': dependencies: - '@typescript-eslint/types': 8.24.0 - '@typescript-eslint/visitor-keys': 8.24.0 + '@typescript-eslint/types': 8.26.0 + '@typescript-eslint/visitor-keys': 8.26.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.1 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 2.0.1(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.24.0(eslint@9.20.1)(typescript@5.7.3)': + '@typescript-eslint/utils@8.26.0(eslint@9.22.0)(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1) - '@typescript-eslint/scope-manager': 8.24.0 - '@typescript-eslint/types': 8.24.0 - '@typescript-eslint/typescript-estree': 8.24.0(typescript@5.7.3) - eslint: 9.20.1 - typescript: 5.7.3 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.22.0) + '@typescript-eslint/scope-manager': 8.26.0 + '@typescript-eslint/types': 8.26.0 + '@typescript-eslint/typescript-estree': 8.26.0(typescript@5.8.2) + eslint: 9.22.0 + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.24.0': + '@typescript-eslint/visitor-keys@8.26.0': dependencies: - '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/types': 8.26.0 eslint-visitor-keys: 4.2.0 - '@vitejs/plugin-react@4.3.4(vite@6.1.0(@types/node@22.13.4)(terser@5.39.0))': + '@vitejs/plugin-react@4.3.4(vite@6.2.1(@types/node@22.13.10)(terser@5.39.0))': dependencies: '@babel/core': 7.26.9 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.9) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.1.0(@types/node@22.13.4)(terser@5.39.0) + vite: 6.2.1(@types/node@22.13.10)(terser@5.39.0) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.0.5(vitest@3.0.5)': + '@vitest/coverage-v8@3.0.8(vitest@3.0.8)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -4675,77 +4505,77 @@ snapshots: istanbul-reports: 3.1.7 magic-string: 0.30.17 magicast: 0.3.5 - std-env: 3.8.0 + std-env: 3.8.1 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.5(@types/node@22.13.4)(@vitest/ui@3.0.5)(jsdom@26.0.0)(terser@5.39.0) + vitest: 3.0.8(@types/node@22.13.10)(@vitest/ui@3.0.8)(jsdom@26.0.0)(terser@5.39.0) transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.1.31(@typescript-eslint/utils@8.24.0(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3)(vitest@3.0.5)': + '@vitest/eslint-plugin@1.1.36(@typescript-eslint/utils@8.26.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)(vitest@3.0.8)': dependencies: - '@typescript-eslint/utils': 8.24.0(eslint@9.20.1)(typescript@5.7.3) - eslint: 9.20.1 + '@typescript-eslint/utils': 8.26.0(eslint@9.22.0)(typescript@5.8.2) + eslint: 9.22.0 optionalDependencies: - typescript: 5.7.3 - vitest: 3.0.5(@types/node@22.13.4)(@vitest/ui@3.0.5)(jsdom@26.0.0)(terser@5.39.0) + typescript: 5.8.2 + vitest: 3.0.8(@types/node@22.13.10)(@vitest/ui@3.0.8)(jsdom@26.0.0)(terser@5.39.0) - '@vitest/expect@3.0.5': + '@vitest/expect@3.0.8': dependencies: - '@vitest/spy': 3.0.5 - '@vitest/utils': 3.0.5 + '@vitest/spy': 3.0.8 + '@vitest/utils': 3.0.8 chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.5(vite@6.1.0(@types/node@22.13.4)(terser@5.39.0))': + '@vitest/mocker@3.0.8(vite@6.2.1(@types/node@22.13.10)(terser@5.39.0))': dependencies: - '@vitest/spy': 3.0.5 + '@vitest/spy': 3.0.8 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.1.0(@types/node@22.13.4)(terser@5.39.0) + vite: 6.2.1(@types/node@22.13.10)(terser@5.39.0) - '@vitest/pretty-format@3.0.5': + '@vitest/pretty-format@3.0.8': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.5': + '@vitest/runner@3.0.8': dependencies: - '@vitest/utils': 3.0.5 + '@vitest/utils': 3.0.8 pathe: 2.0.3 - '@vitest/snapshot@3.0.5': + '@vitest/snapshot@3.0.8': dependencies: - '@vitest/pretty-format': 3.0.5 + '@vitest/pretty-format': 3.0.8 magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@3.0.5': + '@vitest/spy@3.0.8': dependencies: tinyspy: 3.0.2 - '@vitest/ui@3.0.5(vitest@3.0.5)': + '@vitest/ui@3.0.8(vitest@3.0.8)': dependencies: - '@vitest/utils': 3.0.5 + '@vitest/utils': 3.0.8 fflate: 0.8.2 - flatted: 3.3.2 + flatted: 3.3.3 pathe: 2.0.3 - sirv: 3.0.0 - tinyglobby: 0.2.10 + sirv: 3.0.1 + tinyglobby: 0.2.12 tinyrainbow: 2.0.0 - vitest: 3.0.5(@types/node@22.13.4)(@vitest/ui@3.0.5)(jsdom@26.0.0)(terser@5.39.0) + vitest: 3.0.8(@types/node@22.13.10)(@vitest/ui@3.0.8)(jsdom@26.0.0)(terser@5.39.0) - '@vitest/utils@3.0.5': + '@vitest/utils@3.0.8': dependencies: - '@vitest/pretty-format': 3.0.5 + '@vitest/pretty-format': 3.0.8 loupe: 3.1.3 tinyrainbow: 2.0.0 - acorn-jsx@5.3.2(acorn@8.14.0): + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: - acorn: 8.14.0 + acorn: 8.14.1 - acorn@8.14.0: {} + acorn@8.14.1: {} agent-base@7.1.3: {} @@ -4782,7 +4612,7 @@ snapshots: array-buffer-byte-length@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 is-array-buffer: 3.0.5 array-includes@3.1.8: @@ -4791,7 +4621,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 es-object-atoms: 1.1.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 is-string: 1.1.1 array.prototype.findlast@1.2.5: @@ -4841,7 +4671,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 assertion-error@2.0.1: {} @@ -4869,7 +4699,7 @@ snapshots: dependencies: '@babel/core': 7.26.9 '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.9) - core-js-compat: 3.40.0 + core-js-compat: 3.41.0 transitivePeerDependencies: - supports-color @@ -4914,10 +4744,10 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001700 - electron-to-chromium: 1.5.101 + caniuse-lite: 1.0.30001703 + electron-to-chromium: 1.5.114 node-releases: 2.0.19 - update-browserslist-db: 1.1.2(browserslist@4.24.4) + update-browserslist-db: 1.1.3(browserslist@4.24.4) buffer-from@1.1.2: {} @@ -4932,17 +4762,17 @@ snapshots: dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 set-function-length: 1.2.2 - call-bound@1.0.3: + call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 callsites@3.1.0: {} - caniuse-lite@1.0.30001700: {} + caniuse-lite@1.0.30001703: {} chai@5.2.0: dependencies: @@ -4988,10 +4818,18 @@ snapshots: convert-source-map@2.0.0: {} - core-js-compat@3.40.0: + core-js-compat@3.41.0: dependencies: browserslist: 4.24.4 + cross-spawn@6.0.6: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -5000,9 +4838,9 @@ snapshots: css.escape@1.5.1: {} - cssstyle@4.2.1: + cssstyle@4.3.0: dependencies: - '@asamuzakjp/css-color': 2.8.3 + '@asamuzakjp/css-color': 3.1.1 rrweb-cssom: 0.8.0 csstype@3.1.3: {} @@ -5014,19 +4852,19 @@ snapshots: data-view-buffer@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 data-view-byte-length@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 data-view-byte-offset@1.0.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 @@ -5074,7 +4912,7 @@ snapshots: dependencies: semver: 7.7.1 shelljs: 0.8.5 - typescript: 5.8.0-dev.20250217 + typescript: 5.9.0-dev.20250310 dunder-proto@1.0.1: dependencies: @@ -5084,12 +4922,16 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.101: {} + electron-to-chromium@1.5.114: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 @@ -5103,7 +4945,7 @@ snapshots: arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 data-view-buffer: 1.0.2 data-view-byte-length: 1.0.2 data-view-byte-offset: 1.0.1 @@ -5113,7 +4955,7 @@ snapshots: es-set-tostringtag: 2.1.0 es-to-primitive: 1.3.0 function.prototype.name: 1.1.8 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 get-proto: 1.0.1 get-symbol-description: 1.1.0 globalthis: 1.0.4 @@ -5149,7 +4991,7 @@ snapshots: typed-array-byte-offset: 1.0.4 typed-array-length: 1.0.7 unbox-primitive: 1.1.0 - which-typed-array: 1.1.18 + which-typed-array: 1.1.19 es-define-property@1.0.1: {} @@ -5158,13 +5000,13 @@ snapshots: es-iterator-helpers@1.2.1: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 es-set-tostringtag: 2.1.0 function-bind: 1.1.2 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 globalthis: 1.0.4 gopd: 1.2.0 has-property-descriptors: 1.0.2 @@ -5183,7 +5025,7 @@ snapshots: es-set-tostringtag@2.1.0: dependencies: es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 hasown: 2.0.2 @@ -5197,61 +5039,33 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild@0.24.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.24.2 - '@esbuild/android-arm': 0.24.2 - '@esbuild/android-arm64': 0.24.2 - '@esbuild/android-x64': 0.24.2 - '@esbuild/darwin-arm64': 0.24.2 - '@esbuild/darwin-x64': 0.24.2 - '@esbuild/freebsd-arm64': 0.24.2 - '@esbuild/freebsd-x64': 0.24.2 - '@esbuild/linux-arm': 0.24.2 - '@esbuild/linux-arm64': 0.24.2 - '@esbuild/linux-ia32': 0.24.2 - '@esbuild/linux-loong64': 0.24.2 - '@esbuild/linux-mips64el': 0.24.2 - '@esbuild/linux-ppc64': 0.24.2 - '@esbuild/linux-riscv64': 0.24.2 - '@esbuild/linux-s390x': 0.24.2 - '@esbuild/linux-x64': 0.24.2 - '@esbuild/netbsd-arm64': 0.24.2 - '@esbuild/netbsd-x64': 0.24.2 - '@esbuild/openbsd-arm64': 0.24.2 - '@esbuild/openbsd-x64': 0.24.2 - '@esbuild/sunos-x64': 0.24.2 - '@esbuild/win32-arm64': 0.24.2 - '@esbuild/win32-ia32': 0.24.2 - '@esbuild/win32-x64': 0.24.2 - - esbuild@0.25.0: + esbuild@0.25.1: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.0 - '@esbuild/android-arm': 0.25.0 - '@esbuild/android-arm64': 0.25.0 - '@esbuild/android-x64': 0.25.0 - '@esbuild/darwin-arm64': 0.25.0 - '@esbuild/darwin-x64': 0.25.0 - '@esbuild/freebsd-arm64': 0.25.0 - '@esbuild/freebsd-x64': 0.25.0 - '@esbuild/linux-arm': 0.25.0 - '@esbuild/linux-arm64': 0.25.0 - '@esbuild/linux-ia32': 0.25.0 - '@esbuild/linux-loong64': 0.25.0 - '@esbuild/linux-mips64el': 0.25.0 - '@esbuild/linux-ppc64': 0.25.0 - '@esbuild/linux-riscv64': 0.25.0 - '@esbuild/linux-s390x': 0.25.0 - '@esbuild/linux-x64': 0.25.0 - '@esbuild/netbsd-arm64': 0.25.0 - '@esbuild/netbsd-x64': 0.25.0 - '@esbuild/openbsd-arm64': 0.25.0 - '@esbuild/openbsd-x64': 0.25.0 - '@esbuild/sunos-x64': 0.25.0 - '@esbuild/win32-arm64': 0.25.0 - '@esbuild/win32-ia32': 0.25.0 - '@esbuild/win32-x64': 0.25.0 + '@esbuild/aix-ppc64': 0.25.1 + '@esbuild/android-arm': 0.25.1 + '@esbuild/android-arm64': 0.25.1 + '@esbuild/android-x64': 0.25.1 + '@esbuild/darwin-arm64': 0.25.1 + '@esbuild/darwin-x64': 0.25.1 + '@esbuild/freebsd-arm64': 0.25.1 + '@esbuild/freebsd-x64': 0.25.1 + '@esbuild/linux-arm': 0.25.1 + '@esbuild/linux-arm64': 0.25.1 + '@esbuild/linux-ia32': 0.25.1 + '@esbuild/linux-loong64': 0.25.1 + '@esbuild/linux-mips64el': 0.25.1 + '@esbuild/linux-ppc64': 0.25.1 + '@esbuild/linux-riscv64': 0.25.1 + '@esbuild/linux-s390x': 0.25.1 + '@esbuild/linux-x64': 0.25.1 + '@esbuild/netbsd-arm64': 0.25.1 + '@esbuild/netbsd-x64': 0.25.1 + '@esbuild/openbsd-arm64': 0.25.1 + '@esbuild/openbsd-x64': 0.25.1 + '@esbuild/sunos-x64': 0.25.1 + '@esbuild/win32-arm64': 0.25.1 + '@esbuild/win32-ia32': 0.25.1 + '@esbuild/win32-x64': 0.25.1 escalade@3.2.0: {} @@ -5265,33 +5079,33 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.8.0(eslint-plugin-import@2.31.0)(eslint@9.20.1): + eslint-import-resolver-typescript@3.8.3(eslint-plugin-import@2.31.0)(eslint@9.22.0): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0 enhanced-resolve: 5.18.1 - eslint: 9.20.1 + eslint: 9.22.0 get-tsconfig: 4.10.0 is-bun-module: 1.3.0 stable-hash: 0.0.4 - tinyglobby: 0.2.10 + tinyglobby: 0.2.12 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.0)(eslint@9.20.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.26.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.8.3)(eslint@9.22.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.0)(eslint@9.20.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.26.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.3)(eslint@9.22.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.24.0(eslint@9.20.1)(typescript@5.7.3) - eslint: 9.20.1 + '@typescript-eslint/parser': 8.26.0(eslint@9.22.0)(typescript@5.8.2) + eslint: 9.22.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.8.0(eslint-plugin-import@2.31.0)(eslint@9.20.1) + eslint-import-resolver-typescript: 3.8.3(eslint-plugin-import@2.31.0)(eslint@9.22.0) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.0)(eslint@9.20.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.26.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-typescript@3.8.3)(eslint@9.22.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -5300,9 +5114,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.20.1 + eslint: 9.22.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.0)(eslint@9.20.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.26.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.3)(eslint@9.22.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -5314,37 +5128,37 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.24.0(eslint@9.20.1)(typescript@5.7.3) + '@typescript-eslint/parser': 8.26.0(eslint@9.22.0)(typescript@5.8.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest-dom@5.5.0(@testing-library/dom@10.4.0)(eslint@9.20.1): + eslint-plugin-jest-dom@5.5.0(@testing-library/dom@10.4.0)(eslint@9.22.0): dependencies: '@babel/runtime': 7.26.9 - eslint: 9.20.1 + eslint: 9.22.0 requireindex: 1.2.0 optionalDependencies: '@testing-library/dom': 10.4.0 - eslint-plugin-react-compiler@19.0.0-beta-21e868a-20250216(eslint@9.20.1): + eslint-plugin-react-compiler@19.0.0-beta-bafa41b-20250307(eslint@9.22.0): dependencies: '@babel/core': 7.26.9 '@babel/parser': 7.26.9 '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.9) - eslint: 9.20.1 + eslint: 9.22.0 hermes-parser: 0.25.1 zod: 3.24.2 zod-validation-error: 3.4.0(zod@3.24.2) transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@5.1.0(eslint@9.20.1): + eslint-plugin-react-hooks@5.2.0(eslint@9.22.0): dependencies: - eslint: 9.20.1 + eslint: 9.22.0 - eslint-plugin-react@7.37.4(eslint@9.20.1): + eslint-plugin-react@7.37.4(eslint@9.22.0): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -5352,7 +5166,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.20.1 + eslint: 9.22.0 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -5366,16 +5180,16 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-testing-library@7.1.1(eslint@9.20.1)(typescript@5.7.3): + eslint-plugin-testing-library@7.1.1(eslint@9.22.0)(typescript@5.8.2): dependencies: - '@typescript-eslint/scope-manager': 8.24.0 - '@typescript-eslint/utils': 8.24.0(eslint@9.20.1)(typescript@5.7.3) - eslint: 9.20.1 + '@typescript-eslint/scope-manager': 8.26.0 + '@typescript-eslint/utils': 8.26.0(eslint@9.22.0)(typescript@5.8.2) + eslint: 9.22.0 transitivePeerDependencies: - supports-color - typescript - eslint-scope@8.2.0: + eslint-scope@8.3.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -5384,18 +5198,19 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.20.1: + eslint@9.22.0: dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.22.0) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.2 - '@eslint/core': 0.11.0 - '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.20.0 - '@eslint/plugin-kit': 0.2.5 + '@eslint/config-helpers': 0.1.0 + '@eslint/core': 0.12.0 + '@eslint/eslintrc': 3.3.0 + '@eslint/js': 9.22.0 + '@eslint/plugin-kit': 0.2.7 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.1 + '@humanwhocodes/retry': 0.4.2 '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 ajv: 6.12.6 @@ -5403,7 +5218,7 @@ snapshots: cross-spawn: 7.0.6 debug: 4.4.0 escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 + eslint-scope: 8.3.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 esquery: 1.6.0 @@ -5425,8 +5240,8 @@ snapshots: espree@10.3.0: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) eslint-visitor-keys: 4.2.0 esquery@1.6.0: @@ -5447,7 +5262,17 @@ snapshots: esutils@2.0.3: {} - expect-type@1.1.0: {} + execa@1.0.0: + dependencies: + cross-spawn: 6.0.6 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + + expect-type@1.2.0: {} fast-deep-equal@3.1.3: {} @@ -5463,9 +5288,9 @@ snapshots: fast-levenshtein@2.0.6: {} - fastq@1.19.0: + fastq@1.19.1: dependencies: - reusify: 1.0.4 + reusify: 1.1.0 fdir@6.4.3(picomatch@4.0.2): optionalDependencies: @@ -5488,16 +5313,16 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.2 + flatted: 3.3.3 keyv: 4.5.4 - flatted@3.3.2: {} + flatted@3.3.3: {} for-each@0.3.5: dependencies: is-callable: 1.2.7 - foreground-child@3.3.0: + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 @@ -5525,7 +5350,7 @@ snapshots: function.prototype.name@1.1.8: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-properties: 1.2.1 functions-have-names: 1.2.3 hasown: 2.0.2 @@ -5535,7 +5360,7 @@ snapshots: gensync@1.0.0-beta.2: {} - get-intrinsic@1.2.7: + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 @@ -5553,11 +5378,15 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@4.1.0: + dependencies: + pump: 3.0.2 + get-symbol-description@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 get-tsconfig@4.10.0: dependencies: @@ -5573,7 +5402,7 @@ snapshots: glob@10.4.5: dependencies: - foreground-child: 3.3.0 + foreground-child: 3.3.1 jackspeak: 3.4.3 minimatch: 9.0.5 minipass: 7.1.2 @@ -5685,13 +5514,13 @@ snapshots: is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 - get-intrinsic: 1.2.7 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 is-async-function@2.1.1: dependencies: async-function: 1.0.0 - call-bound: 1.0.3 + call-bound: 1.0.4 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -5702,7 +5531,7 @@ snapshots: is-boolean-object@1.2.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-bun-module@1.3.0: @@ -5717,26 +5546,26 @@ snapshots: is-data-view@1.0.2: dependencies: - call-bound: 1.0.3 - get-intrinsic: 1.2.7 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 is-typed-array: 1.1.15 is-date-object@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 is-fullwidth-code-point@3.0.0: {} is-generator-function@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -5751,7 +5580,7 @@ snapshots: is-number-object@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-number@7.0.0: {} @@ -5760,7 +5589,7 @@ snapshots: is-regex@1.2.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 hasown: 2.0.2 @@ -5769,33 +5598,35 @@ snapshots: is-shared-array-buffer@1.0.4: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 + + is-stream@1.1.0: {} is-string@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-symbol@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-symbols: 1.1.0 safe-regex-test: 1.1.0 is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.18 + which-typed-array: 1.1.19 is-weakmap@2.0.2: {} is-weakref@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 is-weakset@2.0.4: dependencies: - call-bound: 1.0.3 - get-intrinsic: 1.2.7 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 isarray@2.0.5: {} @@ -5826,7 +5657,7 @@ snapshots: dependencies: define-data-property: 1.1.4 es-object-atoms: 1.1.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 get-proto: 1.0.1 has-symbols: 1.1.0 set-function-name: 2.0.2 @@ -5852,7 +5683,7 @@ snapshots: jsdom@26.0.0: dependencies: - cssstyle: 4.2.1 + cssstyle: 4.3.0 data-urls: 5.0.0 decimal.js: 10.5.0 form-data: 4.0.2 @@ -5860,18 +5691,18 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.16 + nwsapi: 2.2.18 parse5: 7.2.1 rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 5.1.1 + tough-cookie: 5.1.2 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.1.1 - ws: 8.18.0 + ws: 8.18.1 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -6010,17 +5841,23 @@ snapshots: minipass@7.1.2: {} - mrmime@2.0.0: {} + mrmime@2.0.1: {} ms@2.1.3: {} - nanoid@3.3.8: {} + nanoid@3.3.9: {} natural-compare@1.4.0: {} + nice-try@1.0.5: {} + node-releases@2.0.19: {} - nwsapi@2.2.16: {} + npm-run-path@2.0.2: + dependencies: + path-key: 2.0.1 + + nwsapi@2.2.18: {} object-assign@4.1.1: {} @@ -6031,7 +5868,7 @@ snapshots: object.assign@4.1.7: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 has-symbols: 1.1.0 @@ -6059,7 +5896,7 @@ snapshots: object.values@1.2.1: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 @@ -6082,10 +5919,12 @@ snapshots: own-keys@1.0.1: dependencies: - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 object-keys: 1.1.1 safe-push-apply: 1.0.0 + p-finally@1.0.0: {} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -6108,6 +5947,8 @@ snapshots: path-is-absolute@1.0.1: {} + path-key@2.0.1: {} + path-key@3.1.1: {} path-parse@1.0.7: {} @@ -6131,15 +5972,15 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.2: + postcss@8.5.3: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.9 picocolors: 1.1.1 source-map-js: 1.2.1 prelude-ls@1.2.1: {} - prettier@3.5.1: {} + prettier@3.5.3: {} pretty-format@27.5.1: dependencies: @@ -6159,6 +6000,11 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + punycode@2.3.1: {} queue-microtask@1.2.3: {} @@ -6198,7 +6044,7 @@ snapshots: es-abstract: 1.23.9 es-errors: 1.3.0 es-object-atoms: 1.1.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 get-proto: 1.0.1 which-builtin-type: 1.2.1 @@ -6261,46 +6107,46 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 - reusify@1.0.4: {} + reusify@1.1.0: {} rollup-plugin-banner2@1.3.1: dependencies: magic-string: 0.25.9 - rollup-plugin-esbuild@6.2.0(esbuild@0.25.0)(rollup@4.34.8): + rollup-plugin-esbuild@6.2.1(esbuild@0.25.1)(rollup@4.35.0): dependencies: debug: 4.4.0 es-module-lexer: 1.6.0 - esbuild: 0.25.0 + esbuild: 0.25.1 get-tsconfig: 4.10.0 - rollup: 4.34.8 + rollup: 4.35.0 unplugin-utils: 0.2.4 transitivePeerDependencies: - supports-color - rollup@4.34.8: + rollup@4.35.0: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.34.8 - '@rollup/rollup-android-arm64': 4.34.8 - '@rollup/rollup-darwin-arm64': 4.34.8 - '@rollup/rollup-darwin-x64': 4.34.8 - '@rollup/rollup-freebsd-arm64': 4.34.8 - '@rollup/rollup-freebsd-x64': 4.34.8 - '@rollup/rollup-linux-arm-gnueabihf': 4.34.8 - '@rollup/rollup-linux-arm-musleabihf': 4.34.8 - '@rollup/rollup-linux-arm64-gnu': 4.34.8 - '@rollup/rollup-linux-arm64-musl': 4.34.8 - '@rollup/rollup-linux-loongarch64-gnu': 4.34.8 - '@rollup/rollup-linux-powerpc64le-gnu': 4.34.8 - '@rollup/rollup-linux-riscv64-gnu': 4.34.8 - '@rollup/rollup-linux-s390x-gnu': 4.34.8 - '@rollup/rollup-linux-x64-gnu': 4.34.8 - '@rollup/rollup-linux-x64-musl': 4.34.8 - '@rollup/rollup-win32-arm64-msvc': 4.34.8 - '@rollup/rollup-win32-ia32-msvc': 4.34.8 - '@rollup/rollup-win32-x64-msvc': 4.34.8 + '@rollup/rollup-android-arm-eabi': 4.35.0 + '@rollup/rollup-android-arm64': 4.35.0 + '@rollup/rollup-darwin-arm64': 4.35.0 + '@rollup/rollup-darwin-x64': 4.35.0 + '@rollup/rollup-freebsd-arm64': 4.35.0 + '@rollup/rollup-freebsd-x64': 4.35.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.35.0 + '@rollup/rollup-linux-arm-musleabihf': 4.35.0 + '@rollup/rollup-linux-arm64-gnu': 4.35.0 + '@rollup/rollup-linux-arm64-musl': 4.35.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.35.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.35.0 + '@rollup/rollup-linux-riscv64-gnu': 4.35.0 + '@rollup/rollup-linux-s390x-gnu': 4.35.0 + '@rollup/rollup-linux-x64-gnu': 4.35.0 + '@rollup/rollup-linux-x64-musl': 4.35.0 + '@rollup/rollup-win32-arm64-msvc': 4.35.0 + '@rollup/rollup-win32-ia32-msvc': 4.35.0 + '@rollup/rollup-win32-x64-msvc': 4.35.0 fsevents: 2.3.3 rrweb-cssom@0.8.0: {} @@ -6309,15 +6155,15 @@ snapshots: dependencies: queue-microtask: 1.2.3 - rxjs@7.8.1: + rxjs@7.8.2: dependencies: tslib: 2.8.1 safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 - get-intrinsic: 1.2.7 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 has-symbols: 1.1.0 isarray: 2.0.5 @@ -6330,7 +6176,7 @@ snapshots: safe-regex-test@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-regex: 1.2.1 @@ -6342,6 +6188,8 @@ snapshots: scheduler@0.25.0: {} + semver@5.7.2: {} + semver@6.3.1: {} semver@7.7.1: {} @@ -6355,7 +6203,7 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 gopd: 1.2.0 has-property-descriptors: 1.0.2 @@ -6372,10 +6220,16 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 + shebang-regex@1.0.0: {} + shebang-regex@3.0.0: {} shelljs@0.8.5: @@ -6384,6 +6238,13 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 + shelljs@0.9.1: + dependencies: + execa: 1.0.0 + fast-glob: 3.3.3 + interpret: 1.4.0 + rechoir: 0.6.2 + shx@0.3.4: dependencies: minimist: 1.2.8 @@ -6396,16 +6257,16 @@ snapshots: side-channel-map@1.0.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 object-inspect: 1.13.4 side-channel-weakmap@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 object-inspect: 1.13.4 side-channel-map: 1.0.1 @@ -6423,10 +6284,10 @@ snapshots: signal-exit@4.1.0: {} - sirv@3.0.0: + sirv@3.0.1: dependencies: '@polka/url': 1.0.0-next.28 - mrmime: 2.0.0 + mrmime: 2.0.1 totalist: 3.0.1 slice-ansi@4.0.0: @@ -6452,7 +6313,7 @@ snapshots: stackback@0.0.2: {} - std-env@3.8.0: {} + std-env@3.8.1: {} string-width@4.2.3: dependencies: @@ -6469,12 +6330,12 @@ snapshots: string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 es-object-atoms: 1.1.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 gopd: 1.2.0 has-symbols: 1.1.0 internal-slot: 1.1.0 @@ -6490,7 +6351,7 @@ snapshots: string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 es-abstract: 1.23.9 @@ -6500,7 +6361,7 @@ snapshots: string.prototype.trimend@1.0.9: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 @@ -6520,6 +6381,8 @@ snapshots: strip-bom@3.0.0: {} + strip-eof@1.0.0: {} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -6539,7 +6402,7 @@ snapshots: terser@5.39.0: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.14.0 + acorn: 8.14.1 commander: 2.20.3 source-map-support: 0.5.21 @@ -6553,7 +6416,7 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.10: + tinyglobby@0.2.12: dependencies: fdir: 6.4.3(picomatch@4.0.2) picomatch: 4.0.2 @@ -6564,11 +6427,11 @@ snapshots: tinyspy@3.0.2: {} - tldts-core@6.1.77: {} + tldts-core@6.1.84: {} - tldts@6.1.77: + tldts@6.1.84: dependencies: - tldts-core: 6.1.77 + tldts-core: 6.1.84 to-regex-range@5.0.1: dependencies: @@ -6576,17 +6439,17 @@ snapshots: totalist@3.0.1: {} - tough-cookie@5.1.1: + tough-cookie@5.1.2: dependencies: - tldts: 6.1.77 + tldts: 6.1.84 tr46@5.0.0: dependencies: punycode: 2.3.1 - ts-api-utils@2.0.1(typescript@5.7.3): + ts-api-utils@2.0.1(typescript@5.8.2): dependencies: - typescript: 5.7.3 + typescript: 5.8.2 ts-expect@1.3.0: {} @@ -6607,7 +6470,7 @@ snapshots: typed-array-buffer@1.0.3: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-typed-array: 1.1.15 @@ -6638,23 +6501,23 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.24.0(eslint@9.20.1)(typescript@5.7.3): + typescript-eslint@8.26.0(eslint@9.22.0)(typescript@5.8.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.24.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1)(typescript@5.7.3))(eslint@9.20.1)(typescript@5.7.3) - '@typescript-eslint/parser': 8.24.0(eslint@9.20.1)(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.0(eslint@9.20.1)(typescript@5.7.3) - eslint: 9.20.1 - typescript: 5.7.3 + '@typescript-eslint/eslint-plugin': 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/parser': 8.26.0(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/utils': 8.26.0(eslint@9.22.0)(typescript@5.8.2) + eslint: 9.22.0 + typescript: 5.8.2 transitivePeerDependencies: - supports-color - typescript@5.7.3: {} + typescript@5.8.2: {} - typescript@5.8.0-dev.20250217: {} + typescript@5.9.0-dev.20250310: {} unbox-primitive@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-bigints: 1.1.0 has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 @@ -6679,7 +6542,7 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.2 - update-browserslist-db@1.1.2(browserslist@4.24.4): + update-browserslist-db@1.1.3(browserslist@4.24.4): dependencies: browserslist: 4.24.4 escalade: 3.2.0 @@ -6689,13 +6552,13 @@ snapshots: dependencies: punycode: 2.3.1 - vite-node@3.0.5(@types/node@22.13.4)(terser@5.39.0): + vite-node@3.0.8(@types/node@22.13.10)(terser@5.39.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.1.0(@types/node@22.13.4)(terser@5.39.0) + vite: 6.2.1(@types/node@22.13.10)(terser@5.39.0) transitivePeerDependencies: - '@types/node' - jiti @@ -6710,41 +6573,41 @@ snapshots: - tsx - yaml - vite@6.1.0(@types/node@22.13.4)(terser@5.39.0): + vite@6.2.1(@types/node@22.13.10)(terser@5.39.0): dependencies: - esbuild: 0.24.2 - postcss: 8.5.2 - rollup: 4.34.8 + esbuild: 0.25.1 + postcss: 8.5.3 + rollup: 4.35.0 optionalDependencies: - '@types/node': 22.13.4 + '@types/node': 22.13.10 fsevents: 2.3.3 terser: 5.39.0 - vitest@3.0.5(@types/node@22.13.4)(@vitest/ui@3.0.5)(jsdom@26.0.0)(terser@5.39.0): + vitest@3.0.8(@types/node@22.13.10)(@vitest/ui@3.0.8)(jsdom@26.0.0)(terser@5.39.0): dependencies: - '@vitest/expect': 3.0.5 - '@vitest/mocker': 3.0.5(vite@6.1.0(@types/node@22.13.4)(terser@5.39.0)) - '@vitest/pretty-format': 3.0.5 - '@vitest/runner': 3.0.5 - '@vitest/snapshot': 3.0.5 - '@vitest/spy': 3.0.5 - '@vitest/utils': 3.0.5 + '@vitest/expect': 3.0.8 + '@vitest/mocker': 3.0.8(vite@6.2.1(@types/node@22.13.10)(terser@5.39.0)) + '@vitest/pretty-format': 3.0.8 + '@vitest/runner': 3.0.8 + '@vitest/snapshot': 3.0.8 + '@vitest/spy': 3.0.8 + '@vitest/utils': 3.0.8 chai: 5.2.0 debug: 4.4.0 - expect-type: 1.1.0 + expect-type: 1.2.0 magic-string: 0.30.17 pathe: 2.0.3 - std-env: 3.8.0 + std-env: 3.8.1 tinybench: 2.9.0 tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.1.0(@types/node@22.13.4)(terser@5.39.0) - vite-node: 3.0.5(@types/node@22.13.4)(terser@5.39.0) + vite: 6.2.1(@types/node@22.13.10)(terser@5.39.0) + vite-node: 3.0.8(@types/node@22.13.10)(terser@5.39.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.13.4 - '@vitest/ui': 3.0.5(vitest@3.0.5) + '@types/node': 22.13.10 + '@vitest/ui': 3.0.8(vitest@3.0.8) jsdom: 26.0.0 transitivePeerDependencies: - jiti @@ -6787,7 +6650,7 @@ snapshots: which-builtin-type@1.2.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 is-async-function: 2.1.1 @@ -6799,7 +6662,7 @@ snapshots: isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.18 + which-typed-array: 1.1.19 which-collection@1.0.2: dependencies: @@ -6808,15 +6671,20 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.4 - which-typed-array@1.1.18: + which-typed-array@1.1.19: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 for-each: 0.3.5 + get-proto: 1.0.1 gopd: 1.2.0 has-tostringtag: 1.0.2 + which@1.3.1: + dependencies: + isexe: 2.0.0 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -6826,7 +6694,7 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wonka@6.3.4: {} + wonka@6.3.5: {} word-wrap@1.2.5: {} @@ -6850,7 +6718,7 @@ snapshots: wrappy@1.0.2: {} - ws@8.18.0: {} + ws@8.18.1: {} xml-name-validator@5.0.0: {} diff --git a/src/react/Provider.ts b/src/react/Provider.ts index f733c1186d..803d8e2b82 100644 --- a/src/react/Provider.ts +++ b/src/react/Provider.ts @@ -13,14 +13,14 @@ type Options = { store?: Store } -export const useStore = (options?: Options): Store => { +export function useStore(options?: Options): Store { const store = useContext(StoreContext) return options?.store || store || getDefaultStore() } /* eslint-disable react-compiler/react-compiler */ // TODO should we consider using useState instead of useRef? -export const Provider = ({ +export function Provider({ children, store, }: { @@ -29,7 +29,7 @@ export const Provider = ({ }): ReactElement< { value: Store | undefined }, FunctionComponent<{ value: Store | undefined }> -> => { +> { const storeRef = useRef(undefined) if (!store && !storeRef.current) { storeRef.current = createStore() diff --git a/src/react/useAtomValue.ts b/src/react/useAtomValue.ts index e9b8c68885..b446935394 100644 --- a/src/react/useAtomValue.ts +++ b/src/react/useAtomValue.ts @@ -1,6 +1,7 @@ /// import ReactExports, { useDebugValue, useEffect, useReducer } from 'react' +import { INTERNAL_registerAbortHandler as registerAbortHandler } from '../vanilla/internals.ts' import type { Atom, ExtractAtomValue } from '../vanilla.ts' import { useStore } from './Provider.ts' @@ -55,7 +56,10 @@ const continuablePromiseMap = new WeakMap< Promise >() -const createContinuablePromise = (promise: PromiseLike) => { +const createContinuablePromise = ( + promise: PromiseLike, + getValue: () => PromiseLike | T, +) => { let continuablePromise = continuablePromiseMap.get(promise) if (!continuablePromise) { continuablePromise = new Promise((resolve, reject) => { @@ -70,25 +74,23 @@ const createContinuablePromise = (promise: PromiseLike) => { reject(e) } } - const registerCancelHandler = (p: PromiseLike) => { - if ('onCancel' in p && typeof p.onCancel === 'function') { - p.onCancel((nextValue: PromiseLike | T) => { - if (import.meta.env?.MODE !== 'production' && nextValue === p) { - throw new Error('[Bug] p is not updated even after cancelation') - } - if (isPromiseLike(nextValue)) { - continuablePromiseMap.set(nextValue, continuablePromise!) - curr = nextValue - nextValue.then(onFulfilled(nextValue), onRejected(nextValue)) - registerCancelHandler(nextValue) - } else { - resolve(nextValue) - } - }) + const onAbort = () => { + try { + const nextValue = getValue() + if (isPromiseLike(nextValue)) { + continuablePromiseMap.set(nextValue, continuablePromise!) + curr = nextValue + nextValue.then(onFulfilled(nextValue), onRejected(nextValue)) + registerAbortHandler(nextValue, onAbort) + } else { + resolve(nextValue) + } + } catch (e) { + reject(e) } } promise.then(onFulfilled(promise), onRejected(promise)) - registerCancelHandler(promise) + registerAbortHandler(promise, onAbort) }) continuablePromiseMap.set(promise, continuablePromise) } @@ -141,7 +143,9 @@ export function useAtomValue(atom: Atom, options?: Options) { if (typeof delay === 'number') { const value = store.get(atom) if (isPromiseLike(value)) { - attachPromiseMeta(createContinuablePromise(value)) + attachPromiseMeta( + createContinuablePromise(value, () => store.get(atom)), + ) } // delay rerendering to wait a promise possibly to resolve setTimeout(rerender, delay) @@ -157,7 +161,7 @@ export function useAtomValue(atom: Atom, options?: Options) { // The use of isPromiseLike is to be consistent with `use` type. // `instanceof Promise` actually works fine in this case. if (isPromiseLike(value)) { - const promise = createContinuablePromise(value) + const promise = createContinuablePromise(value, () => store.get(atom)) return use(promise) } return value as Awaited diff --git a/src/vanilla/internals.ts b/src/vanilla/internals.ts index 874e81252e..e2e0c1985d 100644 --- a/src/vanilla/internals.ts +++ b/src/vanilla/internals.ts @@ -176,54 +176,42 @@ const returnAtomValue = (atomState: AtomState): Value => { } // -// Cancelable Promise -// TODO(daishi): revisit this implementation +// Abortable Promise // -type CancelHandler = (nextValue: unknown) => void -type PromiseState = [cancelHandlers: Set, settled: boolean] - -const PROMISE_STATE = Symbol() - -const getPromiseState = ( - promise: PromiseLike, -): PromiseState | undefined => (promise as any)[PROMISE_STATE] +const promiseStateMap: WeakMap< + PromiseLike, + [pending: boolean, abortHandlers: Set<() => void>] +> = new WeakMap() const isPendingPromise = (value: unknown): value is PromiseLike => - isPromiseLike(value) && !getPromiseState(value)?.[1] + isPromiseLike(value) && !!promiseStateMap.get(value as never)?.[0] -const cancelPromise = ( - promise: PromiseLike, - nextValue: unknown, -): void => { - const promiseState = getPromiseState(promise) - if (promiseState) { - promiseState[1] = true - promiseState[0].forEach((fn) => fn(nextValue)) - } else if (import.meta.env?.MODE !== 'production') { - throw new Error('[Bug] cancelable promise not found') +const abortPromise = (promise: PromiseLike): void => { + const promiseState = promiseStateMap.get(promise) + if (promiseState?.[0]) { + promiseState[0] = false + promiseState[1].forEach((fn) => fn()) } } -const patchPromiseForCancelability = (promise: PromiseLike): void => { - if (getPromiseState(promise)) { - // already patched - return - } - const promiseState: PromiseState = [new Set(), false] - ;(promise as any)[PROMISE_STATE] = promiseState - const settle = () => { - promiseState[1] = true - } - promise.then(settle, settle) - ;(promise as { onCancel?: (fn: CancelHandler) => void }).onCancel = (fn) => { - promiseState[0].add(fn) +const registerAbortHandler = ( + promise: PromiseLike, + abortHandler: () => void, +): void => { + let promiseState = promiseStateMap.get(promise) + if (!promiseState) { + promiseState = [true, new Set()] + promiseStateMap.set(promise, promiseState) + const settle = () => { + promiseState![0] = false + } + promise.then(settle, settle) } + promiseState[1].add(abortHandler) } -const isPromiseLike = ( - p: unknown, -): p is PromiseLike & { onCancel?: (fn: CancelHandler) => void } => +const isPromiseLike = (p: unknown): p is PromiseLike => typeof (p as any)?.then === 'function' const addPendingPromiseToDependency = ( @@ -253,9 +241,7 @@ const setAtomStateValueOrPromise = ( const atomState = ensureAtomState(atom) const hasPrevValue = 'v' in atomState const prevValue = atomState.v - const pendingPromise = isPendingPromise(atomState.v) ? atomState.v : null if (isPromiseLike(valueOrPromise)) { - patchPromiseForCancelability(valueOrPromise) for (const a of atomState.d.keys()) { addPendingPromiseToDependency(atom, valueOrPromise, ensureAtomState(a)) } @@ -264,8 +250,8 @@ const setAtomStateValueOrPromise = ( delete atomState.e if (!hasPrevValue || !Object.is(prevValue, atomState.v)) { ++atomState.n - if (pendingPromise) { - cancelPromise(pendingPromise, valueOrPromise) + if (isPromiseLike(prevValue)) { + abortPromise(prevValue) } } } @@ -457,16 +443,12 @@ const buildStore = ( const flushCallbacks = buildingBlockFunctions[1] || (() => { - let hasError: true | undefined - let error: unknown | undefined + const errors: unknown[] = [] const call = (fn: () => void) => { try { fn() } catch (e) { - if (!hasError) { - hasError = true - error = e - } + errors.push(e) } } do { @@ -490,8 +472,8 @@ const buildStore = ( unmountCallbacks.size || mountCallbacks.size ) - if (hasError) { - throw error + if (errors.length) { + throw new AggregateError(errors) } }) @@ -666,7 +648,7 @@ const buildStore = ( const valueOrPromise = atomRead(atom, getter, options as never) setAtomStateValueOrPromise(atom, valueOrPromise, ensureAtomState!) if (isPromiseLike(valueOrPromise)) { - valueOrPromise.onCancel?.(() => controller?.abort()) + registerAbortHandler(valueOrPromise, () => controller?.abort()) valueOrPromise.then( mountDependenciesIfAsync, mountDependenciesIfAsync, @@ -935,12 +917,12 @@ export const INTERNAL_isActuallyWritableAtom: typeof isActuallyWritableAtom = export const INTERNAL_isAtomStateInitialized: typeof isAtomStateInitialized = isAtomStateInitialized export const INTERNAL_returnAtomValue: typeof returnAtomValue = returnAtomValue -export const INTERNAL_getPromiseState: typeof getPromiseState = getPromiseState +export const INTERNAL_promiseStateMap: typeof promiseStateMap = promiseStateMap export const INTERNAL_isPendingPromise: typeof isPendingPromise = isPendingPromise -export const INTERNAL_cancelPromise: typeof cancelPromise = cancelPromise -export const INTERNAL_patchPromiseForCancelability: typeof patchPromiseForCancelability = - patchPromiseForCancelability +export const INTERNAL_abortPromise: typeof abortPromise = abortPromise +export const INTERNAL_registerAbortHandler: typeof registerAbortHandler = + registerAbortHandler export const INTERNAL_isPromiseLike: typeof isPromiseLike = isPromiseLike export const INTERNAL_addPendingPromiseToDependency: typeof addPendingPromiseToDependency = addPendingPromiseToDependency diff --git a/src/vanilla/store.ts b/src/vanilla/store.ts index 3e241b2359..c1aff6cef6 100644 --- a/src/vanilla/store.ts +++ b/src/vanilla/store.ts @@ -84,7 +84,7 @@ type PrdOrDevStore = | INTERNAL_PrdStore | (INTERNAL_PrdStore & INTERNAL_DevStoreRev4) -export const createStore = (): PrdOrDevStore => { +export function createStore(): PrdOrDevStore { if (import.meta.env?.MODE !== 'production') { return createDevStoreRev4() } @@ -94,7 +94,7 @@ export const createStore = (): PrdOrDevStore => { let defaultStore: PrdOrDevStore | undefined -export const getDefaultStore = (): PrdOrDevStore => { +export function getDefaultStore(): PrdOrDevStore { if (!defaultStore) { defaultStore = createStore() if (import.meta.env?.MODE !== 'production') { diff --git a/src/vanilla/utils/atomFamily.ts b/src/vanilla/utils/atomFamily.ts index 4667354890..67b6404ed0 100644 --- a/src/vanilla/utils/atomFamily.ts +++ b/src/vanilla/utils/atomFamily.ts @@ -64,11 +64,11 @@ export function atomFamily>( return newAtom } - function notifyListeners( + const notifyListeners = ( type: 'CREATE' | 'REMOVE', param: Param, atom: AtomType, - ) { + ) => { for (const listener of listeners) { listener({ type, param, atom }) } diff --git a/src/vanilla/utils/atomWithObservable.ts b/src/vanilla/utils/atomWithObservable.ts index 6c2c8f2293..4cbda12b45 100644 --- a/src/vanilla/utils/atomWithObservable.ts +++ b/src/vanilla/utils/atomWithObservable.ts @@ -107,6 +107,12 @@ export function atomWithObservable( let subscription: Subscription | undefined let timer: Timeout | undefined const isNotMounted = () => !setResult + const unsubscribe = () => { + if (subscription) { + subscription.unsubscribe() + subscription = undefined + } + } const start = () => { if (subscription) { clearTimeout(timer) @@ -118,12 +124,7 @@ export function atomWithObservable( complete: () => {}, }) if (isNotMounted() && options?.unstable_timeout) { - timer = setTimeout(() => { - if (subscription) { - subscription.unsubscribe() - subscription = undefined - } - }, options.unstable_timeout) + timer = setTimeout(unsubscribe, options.unstable_timeout) } } start() @@ -146,9 +147,10 @@ export function atomWithObservable( } return () => { setResult = undefined - if (subscription) { - subscription.unsubscribe() - subscription = undefined + if (options?.unstable_timeout) { + timer = setTimeout(unsubscribe, options.unstable_timeout) + } else { + unsubscribe() } } } diff --git a/src/vanilla/utils/atomWithRefresh.ts b/src/vanilla/utils/atomWithRefresh.ts index 626f1a4034..4c47d7d865 100644 --- a/src/vanilla/utils/atomWithRefresh.ts +++ b/src/vanilla/utils/atomWithRefresh.ts @@ -39,6 +39,8 @@ export function atomWithRefresh( set(refreshAtom, (c) => c + 1) } else if (write) { return write(get, set, ...args) + } else if (import.meta.env?.MODE !== 'production') { + throw new Error('refresh must be called without arguments') } }, ) diff --git a/src/vanilla/utils/freezeAtom.ts b/src/vanilla/utils/freezeAtom.ts index 0c65405490..079686eaab 100644 --- a/src/vanilla/utils/freezeAtom.ts +++ b/src/vanilla/utils/freezeAtom.ts @@ -2,15 +2,16 @@ import type { Atom, WritableAtom } from '../../vanilla.ts' const frozenAtoms = new WeakSet>() -const deepFreeze = (obj: unknown) => { - if (typeof obj !== 'object' || obj === null) return - Object.freeze(obj) - const propNames = Object.getOwnPropertyNames(obj) +const deepFreeze = (value: T): T => { + if (typeof value !== 'object' || value === null) { + return value + } + Object.freeze(value) + const propNames = Object.getOwnPropertyNames(value) for (const name of propNames) { - const value = (obj as never)[name] - deepFreeze(value) + deepFreeze((value as never)[name]) } - return obj + return value } export function freezeAtom>( diff --git a/tests/react/vanilla-utils/atomWithObservable.test.tsx b/tests/react/vanilla-utils/atomWithObservable.test.tsx index c5232db582..27c9aa20e6 100644 --- a/tests/react/vanilla-utils/atomWithObservable.test.tsx +++ b/tests/react/vanilla-utils/atomWithObservable.test.tsx @@ -2,7 +2,17 @@ import { Component, StrictMode, Suspense, useState } from 'react' import type { ReactElement, ReactNode } from 'react' import { act, render, screen, waitFor } from '@testing-library/react' import userEventOrig from '@testing-library/user-event' -import { BehaviorSubject, Observable, Subject, delay, map, of } from 'rxjs' +import { + BehaviorSubject, + Observable, + Subject, + delay, + interval, + map, + of, + switchMap, + take, +} from 'rxjs' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { fromValue, makeSubject, pipe, toObservable } from 'wonka' import { useAtom, useAtomValue, useSetAtom } from 'jotai/react' @@ -873,3 +883,34 @@ describe('atomWithObservable vanilla tests', () => { unsubs.forEach((unsub) => unsub()) }) }) + +it('should update continuous values in React 19', async () => { + const counterSubject = interval(100).pipe( + take(4), + switchMap(async (i) => i), + ) + + const counterAtom = atomWithObservable(() => counterSubject, { + unstable_timeout: 1000, + }) + + const countAtom = atom(async (get) => get(counterAtom)) + + const Counter = () => { + const count = useAtomValue(countAtom) + return
count: {count}
+ } + + await act(() => + render( + + + + + , + ), + ) + + await screen.findByText('loading') + await screen.findByText('count: 3') +}) diff --git a/tests/vanilla/utils/atomWithRefresh.test.ts b/tests/vanilla/utils/atomWithRefresh.test.ts new file mode 100644 index 0000000000..4945ac6123 --- /dev/null +++ b/tests/vanilla/utils/atomWithRefresh.test.ts @@ -0,0 +1,12 @@ +import { describe, expect, it, vi } from 'vitest' +import { createStore } from 'jotai/vanilla' +import { atomWithRefresh } from 'jotai/vanilla/utils' + +describe('atomWithRefresh', () => { + it('[DEV-ONLY] throws when refresh is called with extra arguments', () => { + const atom = atomWithRefresh(() => {}) + const store = createStore() + const args = ['some arg'] as unknown as [] + expect(() => store.set(atom, ...args)).throws() + }) +}) diff --git a/vitest.config.mts b/vitest.config.mts index d6e5f0a3f5..88f9ca1feb 100644 --- a/vitest.config.mts +++ b/vitest.config.mts @@ -30,7 +30,9 @@ export default defineConfig({ globals: true, environment: 'jsdom', dir: 'tests', - reporters: process.env.GITHUB_ACTIONS ? ['default', 'github-actions'] : ['default'], + reporters: process.env.GITHUB_ACTIONS + ? ['default', 'github-actions'] + : ['default'], setupFiles: ['tests/setup.ts'], coverage: { reporter: ['text', 'json', 'html', 'text-summary'], diff --git a/website/.babelrc b/website/.babelrc index f8d969348a..b1388b9e64 100644 --- a/website/.babelrc +++ b/website/.babelrc @@ -5,7 +5,13 @@ { "reactRuntime": "automatic", "targets": { - "browsers": [">0.25%", "not dead", "not ie <=11", "not ie_mob <=11", "not op_mini all"] + "browsers": [ + ">0.25%", + "not dead", + "not ie <=11", + "not ie_mob <=11", + "not op_mini all" + ] } } ] diff --git a/website/.prettierignore b/website/.prettierignore deleted file mode 100644 index 82d3c5cf3d..0000000000 --- a/website/.prettierignore +++ /dev/null @@ -1,4 +0,0 @@ -package.json -package-lock.json -pnpm-lock.yaml -yarn.lock diff --git a/website/api/contact.js b/website/api/contact.js index 6c1707df1d..a370e83d8c 100644 --- a/website/api/contact.js +++ b/website/api/contact.js @@ -1,21 +1,21 @@ -import * as postmark from 'postmark'; +import * as postmark from 'postmark' -const client = new postmark.ServerClient(process.env.POSTMARK_API_TOKEN); +const client = new postmark.ServerClient(process.env.POSTMARK_API_TOKEN) export default async function handler(request, response) { - const body = request.body; + const body = request.body if (!body.name || !body.email || !body.message) { - return response.status(400).json({ data: 'Invalid' }); + return response.status(400).json({ data: 'Invalid' }) } - const subject = `Message from ${body.name} (${body.email}) via jotai.org`; + const subject = `Message from ${body.name} (${body.email}) via jotai.org` const message = ` Name: ${body.name}\r\n Email: ${body.email}\r\n Message: ${body.message} - `; + ` try { await client.sendEmail({ @@ -24,10 +24,10 @@ export default async function handler(request, response) { Subject: subject, ReplyTo: body.email, TextBody: message, - }); + }) - response.status(200).json({ status: 'Sent' }); + response.status(200).json({ status: 'Sent' }) } catch (error) { - response.status(500).json({ status: 'Not sent' }); + response.status(500).json({ status: 'Not sent' }) } } diff --git a/website/gatsby-browser.js b/website/gatsby-browser.js index 1b7d6faa66..8af8616408 100644 --- a/website/gatsby-browser.js +++ b/website/gatsby-browser.js @@ -1,3 +1,3 @@ -import './src/styles/index.css'; +import './src/styles/index.css' -export { wrapRootElement, wrapPageElement } from './gatsby-shared.js'; +export { wrapRootElement, wrapPageElement } from './gatsby-shared.js' diff --git a/website/gatsby-config.js b/website/gatsby-config.js index 9ffd956ba5..15888778fd 100644 --- a/website/gatsby-config.js +++ b/website/gatsby-config.js @@ -1,10 +1,12 @@ /* eslint-disable @typescript-eslint/no-var-requires */ -require('dotenv').config(); +require('dotenv').config() -const kebabCase = require('just-kebab-case'); +const kebabCase = require('just-kebab-case') const getAnchor = (value) => { - return typeof value === 'string' ? kebabCase(value.toLowerCase().replaceAll("'", '')) : ''; -}; + return typeof value === 'string' + ? kebabCase(value.toLowerCase().replaceAll("'", '')) + : '' +} const DOCS_QUERY = ` query { @@ -24,13 +26,13 @@ const DOCS_QUERY = ` } } } -`; +` const queries = [ { query: DOCS_QUERY, transformer: ({ data }) => { - const results = []; + const results = [] data.allMdx.nodes.forEach((item) => { const transformedNode = { @@ -43,7 +45,7 @@ const queries = [ headings: item.headings.map((heading) => heading.value).join(' '), body: item.rawBody.replace(/(<([^>]+)>)/gi, ''), level: 1, - }; + } if (item.slug !== 'introduction') { item.headings @@ -59,16 +61,16 @@ const queries = [ headings: [], body: '', level: 2, - }; + } - results.push(transformedNode); - }); + results.push(transformedNode) + }) } - results.push(transformedNode); - }); + results.push(transformedNode) + }) - return results; + return results }, indexName: 'Docs', settings: { @@ -85,7 +87,7 @@ const queries = [ }, mergeSettings: false, }, -]; +] module.exports = { siteMetadata: { @@ -145,4 +147,4 @@ module.exports = { jsxRuntime: 'automatic', polyfill: false, trailingSlash: 'never', -}; +} diff --git a/website/gatsby-node.js b/website/gatsby-node.js index bb8e808cad..f8fbb7e114 100644 --- a/website/gatsby-node.js +++ b/website/gatsby-node.js @@ -1,5 +1,5 @@ exports.createPages = ({ actions }) => { - const { createRedirect } = actions; + const { createRedirect } = actions actions.setWebpackConfig({ module: { @@ -15,244 +15,244 @@ exports.createPages = ({ actions }) => { }, ], }, - }); + }) createRedirect({ fromPath: `/docs/introduction`, toPath: `/docs`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/api/babel`, toPath: `/docs/tools/babel`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/api/core`, toPath: `/docs/core/atom`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/api/devtools`, toPath: `/docs/tools/devtools`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/api/devtools`, toPath: `/docs/tools/devtools`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/api/swc`, toPath: `/docs/tools/swc`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/api/utils`, toPath: `/docs/tools/introduction`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/atom-family`, toPath: `/docs/utilities/family`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/atom-with-default`, toPath: `/docs/utilities/resettable`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/atom-with-hash`, toPath: `/docs/extensions/location`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/atom-with-observable`, toPath: `/docs/utilities/async`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/atom-with-reducer`, toPath: `/docs/utilities/reducer`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/atom-with-reset`, toPath: `/docs/utilities/resettable`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/atom-with-storage`, toPath: `/docs/utilities/storage`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/freeze-atom-creator`, toPath: `/docs/tools/devtools`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/freeze-atom`, toPath: `/docs/tools/devtools`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/loadable`, toPath: `/docs/utilities/async`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/reset`, toPath: `/docs/utilities/resettable`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/select-atom`, toPath: `/docs/utilities/select`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/split-atom`, toPath: `/docs/utilities/split`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/use-atom-callback`, toPath: `/docs/utilities/callback`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/use-atom-value`, toPath: `/docs/core/use-atom`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/use-hydrate-atoms`, toPath: `/docs/utilities/ssr`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/use-reducer-atom`, toPath: `/docs/utilities/reducer`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/use-reset-atom`, toPath: `/docs/utilities/resttable`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/utils/use-update-atom`, toPath: `/docs/core/use-atom`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/cache`, toPath: `/docs/extensions/cache`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/effect`, toPath: `/docs/extensions/effect`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/immer`, toPath: `/docs/extensions/immer`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/location`, toPath: `/docs/extensions/location`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/optics`, toPath: `/docs/extensions/optics`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/query`, toPath: `/docs/extensions/query`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/redux`, toPath: `/docs/extensions/redux`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/relay`, toPath: `/docs/extensions/relay`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/scope`, toPath: `/docs/extensions/scope`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/trpc`, toPath: `/docs/extensions/trpc`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/urql`, toPath: `/docs/extensions/urql`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/valtio`, toPath: `/docs/extensions/valtio`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/xstate`, toPath: `/docs/extensions/xstate`, isPermanent: false, - }); + }) createRedirect({ fromPath: `/docs/integrations/zustand`, toPath: `/docs/extensions/zustand`, isPermanent: false, - }); -}; + }) +} diff --git a/website/gatsby-shared.js b/website/gatsby-shared.js index 725f96c74b..2f6b1dff5e 100644 --- a/website/gatsby-shared.js +++ b/website/gatsby-shared.js @@ -1,20 +1,20 @@ -import { MDXProvider } from '@mdx-js/react'; -import { Provider as JotaiProvider, createStore } from 'jotai'; -import { countAtom, menuAtom, searchAtom, textAtom } from './src/atoms/index.js'; -import { CodeSandbox } from './src/components/code-sandbox.js'; -import { Code } from './src/components/code.js'; -import { InlineCode } from './src/components/inline-code.js'; -import { Layout } from './src/components/layout.js'; -import { A, H2, H3, H4, H5 } from './src/components/mdx.js'; -import { Stackblitz } from './src/components/stackblitz.js'; -import { TOC } from './src/components/toc.js'; +import { MDXProvider } from '@mdx-js/react' +import { Provider as JotaiProvider, createStore } from 'jotai' +import { countAtom, menuAtom, searchAtom, textAtom } from './src/atoms/index.js' +import { CodeSandbox } from './src/components/code-sandbox.js' +import { Code } from './src/components/code.js' +import { InlineCode } from './src/components/inline-code.js' +import { Layout } from './src/components/layout.js' +import { A, H2, H3, H4, H5 } from './src/components/mdx.js' +import { Stackblitz } from './src/components/stackblitz.js' +import { TOC } from './src/components/toc.js' -const store = createStore(); +const store = createStore() -store.set(countAtom, 0); -store.set(menuAtom, false); -store.set(searchAtom, false); -store.set(textAtom, 'hello'); +store.set(countAtom, 0) +store.set(menuAtom, false) +store.set(searchAtom, false) +store.set(textAtom, 'hello') const components = { code: Code, @@ -27,14 +27,14 @@ const components = { h4: H4, h5: H5, a: A, -}; +} export const wrapRootElement = ({ element }) => ( {element} -); +) export const wrapPageElement = ({ element, props }) => { - return {element}; -}; + return {element} +} diff --git a/website/gatsby-ssr.js b/website/gatsby-ssr.js index 8909840987..93a02d859b 100644 --- a/website/gatsby-ssr.js +++ b/website/gatsby-ssr.js @@ -1,7 +1,7 @@ -export { wrapRootElement, wrapPageElement } from './gatsby-shared.js'; +export { wrapRootElement, wrapPageElement } from './gatsby-shared.js' export const onRenderBody = ({ setHtmlAttributes, setPreBodyComponents }) => { - setHtmlAttributes({ lang: 'en' }); + setHtmlAttributes({ lang: 'en' }) setPreBodyComponents([