From 611f49c477f47ad0046f2e412dccb92ff82f7b5d Mon Sep 17 00:00:00 2001 From: Cody Olsen Date: Thu, 21 Nov 2024 12:50:15 +0100 Subject: [PATCH] chore: update use cache logic --- next-canary/src/app/TimeSince.tsx | 45 +++++++ next-canary/src/app/layout.tsx | 17 ++- next-canary/src/app/page.tsx | 15 ++- next-canary/src/sanity/fetch.ts | 2 +- package.json | 6 +- pnpm-lock.yaml | 200 ++++++++++++++---------------- 6 files changed, 165 insertions(+), 120 deletions(-) create mode 100644 next-canary/src/app/TimeSince.tsx diff --git a/next-canary/src/app/TimeSince.tsx b/next-canary/src/app/TimeSince.tsx new file mode 100644 index 0000000..67db81a --- /dev/null +++ b/next-canary/src/app/TimeSince.tsx @@ -0,0 +1,45 @@ +'use client' + +import {useLayoutEffect, useState} from 'react' + +export function TimeSince({label, since}: {label: string; since: string}) { + const [from, setFrom] = useState(null) + const [now, setNow] = useState(null) + useLayoutEffect(() => { + setFrom(new Date(since)) + const interval = setInterval(() => setNow(new Date()), 1000) + return () => clearInterval(interval) + }, [since]) + + let timeSince = '…' + if (from && now) { + timeSince = formatTimeSince(from, now) + } + + return ( +
+ {label}: + + rendered {timeSince} + +
+ ) +} + +const rtf = new Intl.RelativeTimeFormat('en', {style: 'short'}) +export function formatTimeSince(from: Date, to: Date): string { + const seconds = Math.floor((from.getTime() - to.getTime()) / 1000) + if (seconds > -60) { + return rtf.format(Math.min(seconds, -1), 'second') + } + const minutes = Math.ceil(seconds / 60) + if (minutes > -60) { + return rtf.format(minutes, 'minute') + } + const hours = Math.ceil(minutes / 60) + if (hours > -24) { + return rtf.format(hours, 'hour') + } + const days = Math.ceil(hours / 24) + return rtf.format(days, 'day') +} diff --git a/next-canary/src/app/layout.tsx b/next-canary/src/app/layout.tsx index 52c6f15..b5190ad 100644 --- a/next-canary/src/app/layout.tsx +++ b/next-canary/src/app/layout.tsx @@ -2,8 +2,10 @@ import type {Viewport} from 'next' import './globals.css' import {sanityFetch} from '@/sanity/fetch' import {defineQuery} from 'groq' +import {Suspense} from 'react' import {SanityLive} from './SanityLive' import {ThemeButton} from './ThemeButton' +import {TimeSince} from './TimeSince' const THEME_QUERY = defineQuery(`*[_id == "theme"][0]{background,text}`) @@ -19,7 +21,7 @@ export default async function RootLayout({ }: Readonly<{ children: React.ReactNode }>) { - const {data, tags} = await sanityFetch({query: THEME_QUERY}) + const {data, tags, fetchedAt} = await sanityFetch({query: THEME_QUERY}) return ( -
+
+ + + {children} - + + +
- + + + ) diff --git a/next-canary/src/app/page.tsx b/next-canary/src/app/page.tsx index 4d834ba..3ad9efc 100644 --- a/next-canary/src/app/page.tsx +++ b/next-canary/src/app/page.tsx @@ -2,6 +2,8 @@ import {sanityFetch} from '@/sanity/fetch' import './globals.css' import {defineQuery} from 'groq' import type {Metadata} from 'next' +import {Suspense} from 'react' +import {TimeSince} from './TimeSince' const DEMO_QUERY = defineQuery(`*[_type == "demo" && slug.current == $slug][0].title`) const slug = 'next-canary' @@ -14,11 +16,16 @@ export async function generateMetadata(): Promise { } export default async function Home() { - const {data} = await sanityFetch({query: DEMO_QUERY, params: {slug}}) + const {data, fetchedAt} = await sanityFetch({query: DEMO_QUERY, params: {slug}}) return ( -

- {data || 'Next Canary'} -

+
+

+ {data || 'Next Canary'} +

+ + + +
) } diff --git a/next-canary/src/sanity/fetch.ts b/next-canary/src/sanity/fetch.ts index fc20386..f597ba3 100644 --- a/next-canary/src/sanity/fetch.ts +++ b/next-canary/src/sanity/fetch.ts @@ -15,5 +15,5 @@ export async function sanityFetch({ }) cacheTag(...(syncTags as string[])) - return {data: result, tags: syncTags} + return {data: result, tags: syncTags, fetchedAt: new Date().toJSON()} } diff --git a/package.json b/package.json index e9469a2..ce7170e 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,10 @@ "react", "react-dom" ] - } + }, + "overrides": { + "@types/react": "npm:types-react@rc", + "@types/react-dom": "npm:types-react-dom@rc" + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddc9137..b07da80 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,10 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@types/react': npm:types-react@rc + '@types/react-dom': npm:types-react-dom@rc + importers: .: @@ -28,7 +32,7 @@ importers: version: 0.6.9(@ianvs/prettier-plugin-sort-imports@4.4.0(@vue/compiler-sfc@3.5.13)(prettier@3.3.3))(prettier-plugin-astro@0.14.1)(prettier-plugin-svelte@3.2.8(prettier@3.3.3)(svelte@5.2.7))(prettier@3.3.3) sanity: specifier: ^3.64.2 - version: 3.64.2(@types/node@20.17.6)(@types/react@18.3.12)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(terser@5.36.0) + version: 3.64.2(@types/node@20.17.6)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(terser@5.36.0) api: dependencies: @@ -80,7 +84,7 @@ importers: version: 3.64.2 next: specifier: 13.5.7 - version: 13.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 13.5.7(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -92,11 +96,11 @@ importers: specifier: ^20 version: 20.17.6 '@types/react': - specifier: ^18.3.12 - version: 18.3.12 + specifier: npm:types-react@rc + version: types-react@19.0.0-rc.1 '@types/react-dom': - specifier: ^18.3.1 - version: 18.3.1 + specifier: npm:types-react-dom@rc + version: types-react-dom@19.0.0-rc.1 autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.49) @@ -126,7 +130,7 @@ importers: version: 3.64.2 next: specifier: 14.2.18 - version: 14.2.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -138,11 +142,11 @@ importers: specifier: ^20 version: 20.17.6 '@types/react': - specifier: ^18.3.12 - version: 18.3.12 + specifier: npm:types-react@rc + version: types-react@19.0.0-rc.1 '@types/react-dom': - specifier: ^18.3.1 - version: 18.3.1 + specifier: npm:types-react-dom@rc + version: types-react-dom@19.0.0-rc.1 eslint: specifier: ^8.57.1 version: 8.57.1 @@ -169,7 +173,7 @@ importers: version: 3.64.2 next: specifier: 15.0.3 - version: 15.0.3(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1) + version: 15.0.3(@babel/core@7.26.0)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1) react: specifier: rc version: 19.0.0-rc.1 @@ -212,7 +216,7 @@ importers: version: 3.64.2 next: specifier: canary - version: 15.0.4-canary.21(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1) + version: 15.0.4-canary.21(@babel/core@7.26.0)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1) react: specifier: rc version: 19.0.0-rc.1 @@ -288,7 +292,7 @@ importers: version: 18.3.1(react@18.3.1) sanity: specifier: ^3.64.2 - version: 3.64.2(@types/node@20.17.6)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.36.0) + version: 3.64.2(@types/node@20.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.36.0)(types-react@19.0.0-rc.1) styled-components: specifier: ^6.1.13 version: 6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -297,8 +301,8 @@ importers: specifier: ^4.0.0 version: 4.0.0(eslint@8.57.1)(typescript@5.6.3) '@types/react': - specifier: ^18.3.12 - version: 18.3.12 + specifier: npm:types-react@rc + version: types-react@19.0.0-rc.1 eslint: specifier: ^8.57.1 version: 8.57.1 @@ -3222,21 +3226,12 @@ packages: '@types/progress-stream@2.0.5': resolution: {integrity: sha512-5YNriuEZkHlFHHepLIaxzq3atGeav1qCTGzB74HKWpo66qjfostF+rHc785YYYHeBytve8ZG3ejg42jEIfXNiQ==} - '@types/prop-types@15.7.13': - resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} - '@types/react-copy-to-clipboard@5.0.7': resolution: {integrity: sha512-Gft19D+as4M+9Whq1oglhmK49vqPhcLzk8WfvfLvaYMIPYanyfLy0+CwFucMJfdKoSFyySPmkkWn8/E6voQXjQ==} - '@types/react-dom@18.3.1': - resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} - '@types/react-is@18.3.0': resolution: {integrity: sha512-KZJpHUkAdzyKj/kUHJDc6N7KyidftICufJfOFpiG6haL/BDQNQt5i4n1XDUL/nDZAtGLHDSWRYpLzKTAKSvX6w==} - '@types/react@18.3.12': - resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} - '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -7475,7 +7470,7 @@ packages: react-focus-lock@2.13.2: resolution: {integrity: sha512-T/7bsofxYqnod2xadvuwjGKHOoL5GH7/EIPI5UyEvaU/c2CcphvGI371opFtuY/SYdbMsNiuF4HsHQ50nA/TKQ==} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': npm:types-react@rc react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': @@ -8670,7 +8665,7 @@ packages: resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': npm:types-react@rc react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': @@ -8704,7 +8699,7 @@ packages: resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + '@types/react': npm:types-react@rc react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': @@ -10278,9 +10273,9 @@ snapshots: react-dom: 19.0.0-rc.1(react@19.0.0-rc.1) tslib: 2.8.1 - '@dnd-kit/modifiers@6.0.1(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@dnd-kit/modifiers@6.0.1(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(react@18.3.1)': dependencies: - '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1) '@dnd-kit/utilities': 3.2.2(react@18.3.1) react: 18.3.1 tslib: 2.8.1 @@ -10292,9 +10287,9 @@ snapshots: react: 19.0.0-rc.1 tslib: 2.8.1 - '@dnd-kit/sortable@7.0.2(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@dnd-kit/sortable@7.0.2(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(react@18.3.1)': dependencies: - '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1) '@dnd-kit/utilities': 3.2.2(react@18.3.1) react: 18.3.1 tslib: 2.8.1 @@ -11424,13 +11419,13 @@ snapshots: '@polka/url@1.0.0-next.28': {} - '@portabletext/editor@1.10.2(@sanity/block-tools@3.64.2(debug@4.3.7))(@sanity/schema@3.64.2(debug@4.3.7))(@sanity/types@3.64.2(debug@4.3.7))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@portabletext/editor@1.10.2(@sanity/block-tools@3.64.2(debug@4.3.7))(@sanity/schema@3.64.2(debug@4.3.7))(@sanity/types@3.64.2(debug@4.3.7))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(types-react@19.0.0-rc.1)': dependencies: '@portabletext/patches': 1.1.0 '@sanity/block-tools': 3.64.2(debug@4.3.7) '@sanity/schema': 3.64.2(debug@4.3.7) '@sanity/types': 3.64.2(debug@4.3.7) - '@xstate/react': 5.0.0(@types/react@18.3.12)(react@18.3.1)(xstate@5.19.0) + '@xstate/react': 5.0.0(react@18.3.1)(types-react@19.0.0-rc.1)(xstate@5.19.0) debug: 4.3.7(supports-color@9.4.0) get-random-values-esm: 1.0.2 is-hotkey-esm: 1.0.0 @@ -11450,13 +11445,13 @@ snapshots: - react-dom - supports-color - '@portabletext/editor@1.10.2(@sanity/block-tools@3.64.2(debug@4.3.7))(@sanity/schema@3.64.2(debug@4.3.7))(@sanity/types@3.64.2(debug@4.3.7))(@types/react@18.3.12)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(rxjs@7.8.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))': + '@portabletext/editor@1.10.2(@sanity/block-tools@3.64.2)(@sanity/schema@3.64.2)(@sanity/types@3.64.2(debug@4.3.7))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(rxjs@7.8.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))': dependencies: '@portabletext/patches': 1.1.0 '@sanity/block-tools': 3.64.2(debug@4.3.7) '@sanity/schema': 3.64.2(debug@4.3.7) '@sanity/types': 3.64.2(debug@4.3.7) - '@xstate/react': 5.0.0(@types/react@18.3.12)(react@19.0.0-rc.1)(xstate@5.19.0) + '@xstate/react': 5.0.0(react@19.0.0-rc.1)(xstate@5.19.0) debug: 4.3.7(supports-color@9.4.0) get-random-values-esm: 1.0.2 is-hotkey-esm: 1.0.0 @@ -11683,7 +11678,7 @@ snapshots: '@sanity/block-tools@3.64.2(debug@4.3.7)': dependencies: '@sanity/types': 3.64.2(debug@4.3.7) - '@types/react': 18.3.12 + '@types/react': types-react@19.0.0-rc.1 get-random-values-esm: 1.0.2 lodash: 4.17.21 transitivePeerDependencies: @@ -11933,7 +11928,7 @@ snapshots: '@sanity/comlink': 1.1.3 '@sanity/icons': 3.4.0(react@18.3.1) '@sanity/logos': 2.1.13(@sanity/color@3.0.6)(react@18.3.1) - '@sanity/preview-url-secret': 2.0.4(@sanity/client@6.22.5(debug@4.3.7)) + '@sanity/preview-url-secret': 2.0.4(@sanity/client@6.22.5) '@sanity/ui': 2.8.24(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@sanity/uuid': 3.0.2 '@types/lodash.isequal': 4.5.8 @@ -11954,13 +11949,13 @@ snapshots: - react-is - styled-components - '@sanity/presentation@1.18.4(@sanity/client@6.22.5(debug@4.3.7))(@sanity/color@3.0.6)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react-is@18.3.1)(react@19.0.0-rc.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))': + '@sanity/presentation@1.18.4(@sanity/client@6.22.5)(@sanity/color@3.0.6)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react-is@18.3.1)(react@19.0.0-rc.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))': dependencies: '@sanity/client': 6.22.5(debug@4.3.7) '@sanity/comlink': 1.1.3 '@sanity/icons': 3.4.0(react@19.0.0-rc.1) '@sanity/logos': 2.1.13(@sanity/color@3.0.6)(react@19.0.0-rc.1) - '@sanity/preview-url-secret': 2.0.4(@sanity/client@6.22.5(debug@4.3.7)) + '@sanity/preview-url-secret': 2.0.4(@sanity/client@6.22.5) '@sanity/ui': 2.8.24(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react-is@18.3.1)(react@19.0.0-rc.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)) '@sanity/uuid': 3.0.2 '@types/lodash.isequal': 4.5.8 @@ -11986,7 +11981,7 @@ snapshots: prettier: 3.3.3 prettier-plugin-packagejson: 2.5.5(prettier@3.3.3) - '@sanity/preview-url-secret@2.0.4(@sanity/client@6.22.5(debug@4.3.7))': + '@sanity/preview-url-secret@2.0.4(@sanity/client@6.22.5)': dependencies: '@sanity/client': 6.22.5(debug@4.3.7) '@sanity/uuid': 3.0.2 @@ -12022,14 +12017,14 @@ snapshots: '@sanity/types@3.37.2(debug@4.3.7)': dependencies: '@sanity/client': 6.22.5(debug@4.3.7) - '@types/react': 18.3.12 + '@types/react': types-react@19.0.0-rc.1 transitivePeerDependencies: - debug '@sanity/types@3.64.2(debug@4.3.7)': dependencies: '@sanity/client': 6.22.5(debug@4.3.7) - '@types/react': 18.3.12 + '@types/react': types-react@19.0.0-rc.1 transitivePeerDependencies: - debug @@ -12561,24 +12556,13 @@ snapshots: dependencies: '@types/node': 20.17.6 - '@types/prop-types@15.7.13': {} - '@types/react-copy-to-clipboard@5.0.7': dependencies: - '@types/react': 18.3.12 - - '@types/react-dom@18.3.1': - dependencies: - '@types/react': 18.3.12 + '@types/react': types-react@19.0.0-rc.1 '@types/react-is@18.3.0': dependencies: - '@types/react': 18.3.12 - - '@types/react@18.3.12': - dependencies: - '@types/prop-types': 15.7.13 - csstype: 3.1.3 + '@types/react': types-react@19.0.0-rc.1 '@types/resolve@1.20.2': {} @@ -13209,20 +13193,20 @@ snapshots: '@vue/shared@3.5.13': {} - '@xstate/react@5.0.0(@types/react@18.3.12)(react@18.3.1)(xstate@5.19.0)': + '@xstate/react@5.0.0(react@18.3.1)(types-react@19.0.0-rc.1)(xstate@5.19.0)': dependencies: react: 18.3.1 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.12)(react@18.3.1) + use-isomorphic-layout-effect: 1.1.2(react@18.3.1)(types-react@19.0.0-rc.1) use-sync-external-store: 1.2.2(react@18.3.1) optionalDependencies: xstate: 5.19.0 transitivePeerDependencies: - '@types/react' - '@xstate/react@5.0.0(@types/react@18.3.12)(react@19.0.0-rc.1)(xstate@5.19.0)': + '@xstate/react@5.0.0(react@19.0.0-rc.1)(xstate@5.19.0)': dependencies: react: 19.0.0-rc.1 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.12)(react@19.0.0-rc.1) + use-isomorphic-layout-effect: 1.1.2(react@19.0.0-rc.1) use-sync-external-store: 1.2.2(react@19.0.0-rc.1) optionalDependencies: xstate: 5.19.0 @@ -14654,7 +14638,7 @@ snapshots: eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.2(eslint@8.57.1) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1) @@ -14743,13 +14727,13 @@ snapshots: debug: 4.3.7(supports-color@9.4.0) enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node @@ -14794,7 +14778,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: @@ -14827,7 +14811,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -14838,7 +14822,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16960,7 +16944,7 @@ snapshots: neotraverse@0.6.18: {} - next@13.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@13.5.7(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@next/env': 13.5.7 '@swc/helpers': 0.5.2 @@ -16969,7 +16953,7 @@ snapshots: postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.26.0)(react@18.3.1) watchpack: 2.4.0 optionalDependencies: '@next/swc-darwin-arm64': 13.5.7 @@ -16985,7 +16969,7 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@14.2.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@next/env': 14.2.18 '@swc/helpers': 0.5.5 @@ -16995,7 +16979,7 @@ snapshots: postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.26.0)(react@18.3.1) optionalDependencies: '@next/swc-darwin-arm64': 14.2.18 '@next/swc-darwin-x64': 14.2.18 @@ -17010,7 +16994,7 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@15.0.3(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1): + next@15.0.3(@babel/core@7.26.0)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1): dependencies: '@next/env': 15.0.3 '@swc/counter': 0.1.3 @@ -17020,7 +17004,7 @@ snapshots: postcss: 8.4.31 react: 19.0.0-rc.1 react-dom: 19.0.0-rc.1(react@19.0.0-rc.1) - styled-jsx: 5.1.6(react@19.0.0-rc.1) + styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.0.0-rc.1) optionalDependencies: '@next/swc-darwin-arm64': 15.0.3 '@next/swc-darwin-x64': 15.0.3 @@ -17035,7 +17019,7 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@15.0.4-canary.21(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1): + next@15.0.4-canary.21(@babel/core@7.26.0)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1): dependencies: '@next/env': 15.0.4-canary.21 '@swc/counter': 0.1.3 @@ -17045,7 +17029,7 @@ snapshots: postcss: 8.4.31 react: 19.0.0-rc.1 react-dom: 19.0.0-rc.1(react@19.0.0-rc.1) - styled-jsx: 5.1.6(react@19.0.0-rc.1) + styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.0.0-rc.1) optionalDependencies: '@next/swc-darwin-arm64': 15.0.4-canary.21 '@next/swc-darwin-x64': 15.0.4-canary.21 @@ -18046,29 +18030,27 @@ snapshots: react-fast-compare@3.2.2: {} - react-focus-lock@2.13.2(@types/react@18.3.12)(react@18.3.1): + react-focus-lock@2.13.2(react@18.3.1)(types-react@19.0.0-rc.1): dependencies: '@babel/runtime': 7.26.0 focus-lock: 1.3.5 prop-types: 15.8.1 react: 18.3.1 react-clientside-effect: 1.2.6(react@18.3.1) - use-callback-ref: 1.3.2(@types/react@18.3.12)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.12)(react@18.3.1) + use-callback-ref: 1.3.2(react@18.3.1)(types-react@19.0.0-rc.1) + use-sidecar: 1.1.2(react@18.3.1)(types-react@19.0.0-rc.1) optionalDependencies: - '@types/react': 18.3.12 + '@types/react': types-react@19.0.0-rc.1 - react-focus-lock@2.13.2(@types/react@18.3.12)(react@19.0.0-rc.1): + react-focus-lock@2.13.2(react@19.0.0-rc.1): dependencies: '@babel/runtime': 7.26.0 focus-lock: 1.3.5 prop-types: 15.8.1 react: 19.0.0-rc.1 react-clientside-effect: 1.2.6(react@19.0.0-rc.1) - use-callback-ref: 1.3.2(@types/react@18.3.12)(react@19.0.0-rc.1) - use-sidecar: 1.1.2(@types/react@18.3.12)(react@19.0.0-rc.1) - optionalDependencies: - '@types/react': 18.3.12 + use-callback-ref: 1.3.2(react@19.0.0-rc.1) + use-sidecar: 1.1.2(react@19.0.0-rc.1) react-i18next@14.0.2(i18next@23.16.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -18495,14 +18477,14 @@ snapshots: dependencies: '@sanity/diff-match-patch': 3.1.1 - sanity@3.64.2(@types/node@20.17.6)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.36.0): + sanity@3.64.2(@types/node@20.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.36.0)(types-react@19.0.0-rc.1): dependencies: '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@dnd-kit/modifiers': 6.0.1(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) - '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/modifiers': 6.0.1(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(react@18.3.1) + '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(react@18.3.1) '@dnd-kit/utilities': 3.2.2(react@18.3.1) '@juggle/resize-observer': 3.4.0 - '@portabletext/editor': 1.10.2(@sanity/block-tools@3.64.2(debug@4.3.7))(@sanity/schema@3.64.2(debug@4.3.7))(@sanity/types@3.64.2(debug@4.3.7))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@portabletext/editor': 1.10.2(@sanity/block-tools@3.64.2(debug@4.3.7))(@sanity/schema@3.64.2(debug@4.3.7))(@sanity/types@3.64.2(debug@4.3.7))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(types-react@19.0.0-rc.1) '@portabletext/react': 3.1.0(react@18.3.1) '@rexxars/react-json-inspector': 8.0.1(react@18.3.1) '@sanity/asset-utils': 2.2.0 @@ -18591,7 +18573,7 @@ snapshots: react-copy-to-clipboard: 5.1.0(react@18.3.1) react-dom: 18.3.1(react@18.3.1) react-fast-compare: 3.2.2 - react-focus-lock: 2.13.2(@types/react@18.3.12)(react@18.3.1) + react-focus-lock: 2.13.2(react@18.3.1)(types-react@19.0.0-rc.1) react-i18next: 14.0.2(i18next@23.16.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-is: 18.3.1 react-refractor: 2.2.0(react@18.3.1) @@ -18631,14 +18613,14 @@ snapshots: - terser - utf-8-validate - sanity@3.64.2(@types/node@20.17.6)(@types/react@18.3.12)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(terser@5.36.0): + sanity@3.64.2(@types/node@20.17.6)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(terser@5.36.0): dependencies: '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1) '@dnd-kit/modifiers': 6.0.1(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(react@19.0.0-rc.1) '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(react@19.0.0-rc.1) '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc.1) '@juggle/resize-observer': 3.4.0 - '@portabletext/editor': 1.10.2(@sanity/block-tools@3.64.2(debug@4.3.7))(@sanity/schema@3.64.2(debug@4.3.7))(@sanity/types@3.64.2(debug@4.3.7))(@types/react@18.3.12)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(rxjs@7.8.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)) + '@portabletext/editor': 1.10.2(@sanity/block-tools@3.64.2)(@sanity/schema@3.64.2)(@sanity/types@3.64.2(debug@4.3.7))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(rxjs@7.8.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)) '@portabletext/react': 3.1.0(react@19.0.0-rc.1) '@rexxars/react-json-inspector': 8.0.1(react@19.0.0-rc.1) '@sanity/asset-utils': 2.2.0 @@ -18658,7 +18640,7 @@ snapshots: '@sanity/logos': 2.1.13(@sanity/color@3.0.6)(react@19.0.0-rc.1) '@sanity/migrate': 3.64.2 '@sanity/mutator': 3.64.2 - '@sanity/presentation': 1.18.4(@sanity/client@6.22.5(debug@4.3.7))(@sanity/color@3.0.6)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react-is@18.3.1)(react@19.0.0-rc.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)) + '@sanity/presentation': 1.18.4(@sanity/client@6.22.5)(@sanity/color@3.0.6)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react-is@18.3.1)(react@19.0.0-rc.1)(styled-components@6.1.13(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)) '@sanity/schema': 3.64.2(debug@4.3.7) '@sanity/telemetry': 0.7.9(react@19.0.0-rc.1) '@sanity/types': 3.64.2(debug@4.3.7) @@ -18727,7 +18709,7 @@ snapshots: react-copy-to-clipboard: 5.1.0(react@19.0.0-rc.1) react-dom: 19.0.0-rc.1(react@19.0.0-rc.1) react-fast-compare: 3.2.2 - react-focus-lock: 2.13.2(@types/react@18.3.12)(react@19.0.0-rc.1) + react-focus-lock: 2.13.2(react@19.0.0-rc.1) react-i18next: 14.0.2(i18next@23.16.8)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1) react-is: 18.3.1 react-refractor: 2.2.0(react@19.0.0-rc.1) @@ -19208,15 +19190,19 @@ snapshots: stylis: 4.3.2 tslib: 2.6.2 - styled-jsx@5.1.1(react@18.3.1): + styled-jsx@5.1.1(@babel/core@7.26.0)(react@18.3.1): dependencies: client-only: 0.0.1 react: 18.3.1 + optionalDependencies: + '@babel/core': 7.26.0 - styled-jsx@5.1.6(react@19.0.0-rc.1): + styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.0.0-rc.1): dependencies: client-only: 0.0.1 react: 19.0.0-rc.1 + optionalDependencies: + '@babel/core': 7.26.0 stylehacks@7.0.4(postcss@8.4.49): dependencies: @@ -19581,7 +19567,7 @@ snapshots: types-react-dom@19.0.0-rc.1: dependencies: - '@types/react': 18.3.12 + '@types/react': types-react@19.0.0-rc.1 types-react@19.0.0-rc.1: dependencies: @@ -19842,19 +19828,17 @@ snapshots: urlpattern-polyfill@8.0.2: {} - use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): + use-callback-ref@1.3.2(react@18.3.1)(types-react@19.0.0-rc.1): dependencies: react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': types-react@19.0.0-rc.1 - use-callback-ref@1.3.2(@types/react@18.3.12)(react@19.0.0-rc.1): + use-callback-ref@1.3.2(react@19.0.0-rc.1): dependencies: react: 19.0.0-rc.1 tslib: 2.8.1 - optionalDependencies: - '@types/react': 18.3.12 use-device-pixel-ratio@1.1.2(react@18.3.1): dependencies: @@ -19880,33 +19864,29 @@ snapshots: dependencies: react: 19.0.0-rc.1 - use-isomorphic-layout-effect@1.1.2(@types/react@18.3.12)(react@18.3.1): + use-isomorphic-layout-effect@1.1.2(react@18.3.1)(types-react@19.0.0-rc.1): dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': types-react@19.0.0-rc.1 - use-isomorphic-layout-effect@1.1.2(@types/react@18.3.12)(react@19.0.0-rc.1): + use-isomorphic-layout-effect@1.1.2(react@19.0.0-rc.1): dependencies: react: 19.0.0-rc.1 - optionalDependencies: - '@types/react': 18.3.12 - use-sidecar@1.1.2(@types/react@18.3.12)(react@18.3.1): + use-sidecar@1.1.2(react@18.3.1)(types-react@19.0.0-rc.1): dependencies: detect-node-es: 1.1.0 react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': types-react@19.0.0-rc.1 - use-sidecar@1.1.2(@types/react@18.3.12)(react@19.0.0-rc.1): + use-sidecar@1.1.2(react@19.0.0-rc.1): dependencies: detect-node-es: 1.1.0 react: 19.0.0-rc.1 tslib: 2.8.1 - optionalDependencies: - '@types/react': 18.3.12 use-sync-external-store@1.2.2(react@18.3.1): dependencies: