diff --git a/packages/react/package.json b/packages/react/package.json
index b162ae7e..a36201c8 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -13,11 +13,12 @@
"@zedux/atoms": "^1.3.0-rc.2"
},
"devDependencies": {
+ "@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^5.16.5",
- "@testing-library/react": "^14.0.0",
- "@types/react-dom": "^18.0.11",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "@testing-library/react": "^16.0.1",
+ "@types/react-dom": "^18.3.0",
+ "react": "^19.0.0-rc-ee1a403a-20240916",
+ "react-dom": "^19.0.0-rc-ee1a403a-20240916"
},
"exports": {
".": {
@@ -55,7 +56,7 @@
],
"license": "MIT",
"peerDependencies": {
- "react": ">=18.0.0"
+ "react": ">=19.0.0"
},
"repository": {
"directory": "packages/react",
diff --git a/packages/react/src/hooks/useReactComponentId.ts b/packages/react/src/hooks/useReactComponentId.ts
index 71844cfe..56878f6f 100644
--- a/packages/react/src/hooks/useReactComponentId.ts
+++ b/packages/react/src/hooks/useReactComponentId.ts
@@ -1,5 +1,35 @@
import React, { useId } from 'react'
+type MaybeComponent =
+ | {
+ displayName?: string
+ name?: string
+ }
+ | undefined
+
+type React19 = {
+ __CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE?: {
+ A?: {
+ getOwner?: () => {
+ type?: MaybeComponent
+ }
+ }
+ }
+
+ __SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE?: {
+ A?: {
+ getOwner?: () => {
+ type?: MaybeComponent
+ }
+ }
+ }
+}
+
+const react19KeyBase =
+ '_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE' as const
+const clientKey = `__CLIENT${react19KeyBase}` as const
+const serverKey = `__SERVER${react19KeyBase}` as const
+
/**
* Get a unique id for a Zedux hook call. This id is predictable - it should be
* exactly the same every time a given component renders in the same place in
@@ -8,18 +38,14 @@ import React, { useId } from 'react'
*
* This uses the forbidden React internals object. We only use it to get a
* dev-friendly name for the React component's node in the atom graph. It's fine
- * if React changes their internals - we'll fall back to using a generated node
- * name.
+ * if React changes their internals - we'll fall back to the string "rc" ("React
+ * Component"). We have no need to "warn users they cannot upgrade" 'cause they
+ * can at the cost of some DX.
*/
export const useReactComponentId = () => {
- const component:
- | {
- displayName?: string
- name?: string
- }
- | undefined = (React as any)
- .__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED?.ReactCurrentOwner
- ?.current?.type
+ const component: MaybeComponent = (
+ (React as React19)[clientKey] || (React as React19)[serverKey]
+ )?.A?.getOwner?.()?.type
const name = component?.displayName || component?.name || 'rc'
diff --git a/packages/react/test/integrations/ecosystem.test.tsx b/packages/react/test/integrations/ecosystem.test.tsx
index 2787e3cf..9859e270 100644
--- a/packages/react/test/integrations/ecosystem.test.tsx
+++ b/packages/react/test/integrations/ecosystem.test.tsx
@@ -11,7 +11,7 @@ import {
getEcosystem,
} from '@zedux/react'
import React, { useState } from 'react'
-import { act } from 'react-dom/test-utils'
+import { act } from '@testing-library/react'
import { ecosystem } from '../utils/ecosystem'
import { renderInEcosystem } from '../utils/renderInEcosystem'
import { fireEvent, render } from '@testing-library/react'
diff --git a/packages/react/test/integrations/react-context.test.tsx b/packages/react/test/integrations/react-context.test.tsx
index 85664107..a20de820 100644
--- a/packages/react/test/integrations/react-context.test.tsx
+++ b/packages/react/test/integrations/react-context.test.tsx
@@ -119,7 +119,6 @@ describe('React context', () => {
render() {
if (this.state.error) {
- // You can render any custom fallback UI
return
{this.state.error}
}
@@ -136,7 +135,7 @@ describe('React context', () => {
const div = await findByTestId('1')
expect(div.innerHTML).toMatch(/AtomProvider.*requires.*prop/i)
- expect(spy).toHaveBeenCalledTimes(3)
+ expect(spy).toHaveBeenCalledTimes(1)
spy.mockReset()
})
@@ -209,7 +208,6 @@ describe('React context', () => {
test('useAtomContext() throws an error if 2nd param is true and no instance was provided', async () => {
jest.useFakeTimers()
- const mock = mockConsole('error')
const atom1 = atom('1', (id: string) => id)
function Test() {
@@ -222,11 +220,5 @@ describe('React context', () => {
const pattern = /no atom instance was provided/i
expect(() => renderInEcosystem()).toThrowError(pattern)
- expect(mock).toHaveBeenNthCalledWith(
- 1,
- expect.objectContaining({
- message: expect.stringMatching(pattern),
- })
- )
})
})
diff --git a/packages/react/test/integrations/suspense.test.tsx b/packages/react/test/integrations/suspense.test.tsx
index 55b42376..e36d01f7 100644
--- a/packages/react/test/integrations/suspense.test.tsx
+++ b/packages/react/test/integrations/suspense.test.tsx
@@ -93,12 +93,15 @@ describe('suspense', () => {
const div2 = await findByTestId('error')
expect(div2.innerHTML).toBe('b')
- expect(mock).toHaveBeenCalledTimes(3)
- expect(mock).toHaveBeenNthCalledWith(
- 1,
- expect.objectContaining({
- message: expect.stringMatching(/uncaught 'b'/i),
- })
+ expect(mock).toHaveBeenCalledTimes(1)
+ expect(mock).toHaveBeenCalledWith(
+ expect.any(String),
+ 'b',
+ expect.stringContaining(
+ 'The above error occurred in the component'
+ ),
+ expect.any(String),
+ expect.any(String)
)
})
@@ -132,12 +135,15 @@ describe('suspense', () => {
const div2 = await findByTestId('error')
expect(div2.innerHTML).toBe('b')
- expect(mock).toHaveBeenCalledTimes(3)
- expect(mock).toHaveBeenNthCalledWith(
- 1,
- expect.objectContaining({
- message: expect.stringMatching(/uncaught 'b'/i),
- })
+ expect(mock).toHaveBeenCalledTimes(1)
+ expect(mock).toHaveBeenCalledWith(
+ expect.any(String),
+ 'b',
+ expect.stringContaining(
+ 'The above error occurred in the component'
+ ),
+ expect.any(String),
+ expect.any(String)
)
})
diff --git a/packages/react/test/units/__snapshots__/useAtomSelector.test.tsx.snap b/packages/react/test/units/__snapshots__/useAtomSelector.test.tsx.snap
index 56577753..2ee7291c 100644
--- a/packages/react/test/units/__snapshots__/useAtomSelector.test.tsx.snap
+++ b/packages/react/test/units/__snapshots__/useAtomSelector.test.tsx.snap
@@ -76,13 +76,7 @@ exports[`useAtomSelector inline selector that returns a different object referen
"1": {
"dependencies": Map {},
"dependents": Map {
- "@@selector-unnamed-0" => {
- "callback": undefined,
- "createdAt": 123456789,
- "flags": 0,
- "operation": "get",
- },
- "@@selector-unnamed-2" => {
+ "@@selector-unnamed-1" => {
"callback": undefined,
"createdAt": 123456789,
"flags": 0,
@@ -90,26 +84,10 @@ exports[`useAtomSelector inline selector that returns a different object referen
},
},
"isSelector": undefined,
- "refCount": 2,
- "weight": 1,
- },
- "@@selector-unnamed-0": {
- "dependencies": Map {
- "1" => true,
- },
- "dependents": Map {
- "Test-:r0:" => {
- "callback": [Function],
- "createdAt": 123456789,
- "flags": 2,
- "operation": "useAtomSelector",
- },
- },
- "isSelector": true,
"refCount": 1,
- "weight": 2,
+ "weight": 1,
},
- "@@selector-unnamed-2": {
+ "@@selector-unnamed-1": {
"dependencies": Map {
"1" => true,
},
@@ -133,13 +111,7 @@ exports[`useAtomSelector inline selector that returns a different object referen
"1": {
"dependencies": Map {},
"dependents": Map {
- "@@selector-unnamed-0" => {
- "callback": undefined,
- "createdAt": 123456789,
- "flags": 0,
- "operation": "get",
- },
- "@@selector-unnamed-2" => {
+ "@@selector-unnamed-1" => {
"callback": undefined,
"createdAt": 123456789,
"flags": 0,
@@ -147,27 +119,10 @@ exports[`useAtomSelector inline selector that returns a different object referen
},
},
"isSelector": undefined,
- "refCount": 2,
- "weight": 1,
- },
- "@@selector-unnamed-0": {
- "dependencies": Map {
- "1" => true,
- },
- "dependents": Map {
- "Test-:r0:" => {
- "callback": [Function],
- "createdAt": 123456789,
- "flags": 2,
- "operation": "useAtomSelector",
- "task": undefined,
- },
- },
- "isSelector": true,
"refCount": 1,
- "weight": 2,
+ "weight": 1,
},
- "@@selector-unnamed-2": {
+ "@@selector-unnamed-1": {
"dependencies": Map {
"1" => true,
},
diff --git a/packages/react/test/units/useAtomSelector.test.tsx b/packages/react/test/units/useAtomSelector.test.tsx
index 6cbc28a4..16cc66d3 100644
--- a/packages/react/test/units/useAtomSelector.test.tsx
+++ b/packages/react/test/units/useAtomSelector.test.tsx
@@ -440,22 +440,11 @@ describe('useAtomSelector', () => {
const button = await findByTestId('button')
const div = await findByTestId('text')
- // TODO: These snapshots are temporarily wrong in StrictMode pre React 19
- // (React 18 StrictMode causes a memory leak). Upgrading to React 19 will
- // fix them.
expect(ecosystem.selectors.findAll()).toMatchInlineSnapshot(`
{
- "@@selector-unnamed-0": SelectorCache {
+ "@@selector-unnamed-1": SelectorCache {
"args": [],
- "id": "@@selector-unnamed-0",
- "nextReasons": [],
- "prevReasons": [],
- "result": 1,
- "selectorRef": [Function],
- },
- "@@selector-unnamed-2": SelectorCache {
- "args": [],
- "id": "@@selector-unnamed-2",
+ "id": "@@selector-unnamed-1",
"nextReasons": [],
"prevReasons": [],
"result": 1,
@@ -474,17 +463,9 @@ describe('useAtomSelector', () => {
expect(ecosystem.selectors.findAll()).toMatchInlineSnapshot(`
{
- "@@selector-unnamed-0": SelectorCache {
+ "@@selector-unnamed-1": SelectorCache {
"args": [],
- "id": "@@selector-unnamed-0",
- "nextReasons": [],
- "prevReasons": [],
- "result": 1,
- "selectorRef": [Function],
- },
- "@@selector-unnamed-2": SelectorCache {
- "args": [],
- "id": "@@selector-unnamed-2",
+ "id": "@@selector-unnamed-1",
"nextReasons": [],
"prevReasons": [],
"result": 1,
@@ -552,10 +533,6 @@ describe('useAtomSelector', () => {
expect(div.innerHTML).toBe('1')
expect(renders).toBe(4) // 2 rerenders + 2 for strict mode
-
- // TODO: These snapshots are temporarily wrong in StrictMode pre React 19
- // (React 18 StrictMode causes a memory leak). Upgrading to React 19 will
- // fix them.
expect(ecosystem._graph.nodes).toMatchSnapshot()
act(() => {
diff --git a/yarn.lock b/yarn.lock
index 60e68451..9c7cd55c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -23,11 +23,12 @@
"@babel/highlight" "^7.18.6"
"@babel/code-frame@^7.10.4":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
- integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
+ version "7.24.7"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465"
+ integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==
dependencies:
- "@babel/highlight" "^7.16.7"
+ "@babel/highlight" "^7.24.7"
+ picocolors "^1.0.0"
"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0":
version "7.16.0"
@@ -268,16 +269,16 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==
-"@babel/helper-validator-identifier@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
- integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
-
"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
version "7.19.1"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
+"@babel/helper-validator-identifier@^7.24.7":
+ version "7.24.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db"
+ integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==
+
"@babel/helper-validator-option@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3"
@@ -315,15 +316,6 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/highlight@^7.16.7":
- version "7.17.9"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3"
- integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==
- dependencies:
- "@babel/helper-validator-identifier" "^7.16.7"
- chalk "^2.0.0"
- js-tokens "^4.0.0"
-
"@babel/highlight@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
@@ -333,6 +325,16 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
+"@babel/highlight@^7.24.7":
+ version "7.24.7"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d"
+ integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.24.7"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.5":
version "7.16.6"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.6.tgz#8f194828193e8fa79166f34a4b4e52f3e769a314"
@@ -1193,15 +1195,15 @@
dependencies:
"@sinonjs/commons" "^2.0.0"
-"@testing-library/dom@^9.0.0":
- version "9.2.0"
- resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.2.0.tgz#0e1f45e956f2a16f471559c06edd8827c4832f04"
- integrity sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==
+"@testing-library/dom@^10.4.0":
+ version "10.4.0"
+ resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.4.0.tgz#82a9d9462f11d240ecadbf406607c6ceeeff43a8"
+ integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==
dependencies:
"@babel/code-frame" "^7.10.4"
"@babel/runtime" "^7.12.5"
"@types/aria-query" "^5.0.1"
- aria-query "^5.0.0"
+ aria-query "5.3.0"
chalk "^4.1.0"
dom-accessibility-api "^0.5.9"
lz-string "^1.5.0"
@@ -1222,14 +1224,12 @@
lodash "^4.17.15"
redent "^3.0.0"
-"@testing-library/react@^14.0.0":
- version "14.0.0"
- resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.0.0.tgz#59030392a6792450b9ab8e67aea5f3cc18d6347c"
- integrity sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==
+"@testing-library/react@^16.0.1":
+ version "16.0.1"
+ resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.0.1.tgz#29c0ee878d672703f5e7579f239005e4e0faa875"
+ integrity sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==
dependencies:
"@babel/runtime" "^7.12.5"
- "@testing-library/dom" "^9.0.0"
- "@types/react-dom" "^18.0.0"
"@tootallnate/once@2":
version "2.0.0"
@@ -1272,9 +1272,9 @@
integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==
"@types/aria-query@^5.0.1":
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc"
- integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708"
+ integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==
"@types/babel__core@^7.1.14":
version "7.1.17"
@@ -1390,13 +1390,6 @@
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
-"@types/react-dom@^18.0.0":
- version "18.0.1"
- resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.1.tgz#cb3cc10ea91141b12c71001fede1017acfbce4db"
- integrity sha512-jCwTXvHtRLiyVvKm9aEdHXs8rflVOGd5Sl913JZrPshfXjn8NYsTNZOz70bCsA31IR0TOqwi3ad+X4tSCBoMTw==
- dependencies:
- "@types/react" "*"
-
"@types/react-dom@^18.0.11":
version "18.0.11"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33"
@@ -1715,6 +1708,13 @@ argparse@^2.0.1:
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+aria-query@5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e"
+ integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==
+ dependencies:
+ dequal "^2.0.3"
+
aria-query@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c"
@@ -2014,7 +2014,7 @@ chalk@4.1.0, chalk@^4.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chalk@^2.0.0:
+chalk@^2.0.0, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -2344,6 +2344,11 @@ delayed-stream@~1.0.0:
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+dequal@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
+ integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
+
detect-newline@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
@@ -2385,11 +2390,16 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
-dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9:
+dom-accessibility-api@^0.5.6:
version "0.5.13"
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz#102ee5f25eacce09bdf1cfa5a298f86da473be4b"
integrity sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==
+dom-accessibility-api@^0.5.9:
+ version "0.5.16"
+ resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453"
+ integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==
+
domexception@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673"
@@ -4274,7 +4284,7 @@ log-symbols@^5.1.0:
chalk "^5.0.0"
is-unicode-supported "^1.1.0"
-loose-envify@^1.1.0, loose-envify@^1.4.0:
+loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -4973,13 +4983,12 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3"
integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==
-react-dom@^18.2.0:
- version "18.2.0"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
- integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
+react-dom@^19.0.0-rc-ee1a403a-20240916:
+ version "19.0.0-rc-fb9a90fa48-20240614"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0-rc-fb9a90fa48-20240614.tgz#8dce9ed0650096d65437e4bce790628e483831a2"
+ integrity sha512-PoEsPe32F7KPLYOBvZfjylEI1B67N44PwY3lyvpmBkhlluLnLz0jH8q2Wg9YidAi6z0k3iUnNRm5x10wurzt9Q==
dependencies:
- loose-envify "^1.1.0"
- scheduler "^0.23.0"
+ scheduler "0.25.0-rc-fb9a90fa48-20240614"
react-is@^16.13.1:
version "16.13.1"
@@ -5001,12 +5010,10 @@ react-refresh@^0.14.0:
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e"
integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
-react@^18.2.0:
- version "18.2.0"
- resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
- integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
- dependencies:
- loose-envify "^1.1.0"
+react@^19.0.0-rc-ee1a403a-20240916:
+ version "19.0.0-rc-fb9a90fa48-20240614"
+ resolved "https://registry.yarnpkg.com/react/-/react-19.0.0-rc-fb9a90fa48-20240614.tgz#90eb43a0b005e8cc3cbf0d801c14816d01df1b08"
+ integrity sha512-nvE3Gy+IOIfH/DXhkyxFVQSrITarFcQz4+shzC/McxQXEUSonpw2oDy/Wi9hdDtV3hlP12VYuDL95iiBREedNQ==
readable-stream@^3.1.1, readable-stream@^3.4.0:
version "3.6.2"
@@ -5204,12 +5211,10 @@ saxes@^6.0.0:
dependencies:
xmlchars "^2.2.0"
-scheduler@^0.23.0:
- version "0.23.0"
- resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
- integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
- dependencies:
- loose-envify "^1.1.0"
+scheduler@0.25.0-rc-fb9a90fa48-20240614:
+ version "0.25.0-rc-fb9a90fa48-20240614"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0-rc-fb9a90fa48-20240614.tgz#9ee11063b7c0f47aef3fea53d9f1be3f13794dce"
+ integrity sha512-HHqQ/SqbeiDfXXVKgNxTpbQTD4n7IUb4hZATvHjp03jr3TF7igehCyHdOjeYTrzIseLO93cTTfSb5f4qWcirMQ==
semver@7.3.4:
version "7.3.4"