From 96478c59d2d6fba3163f165d4b0a3d2abfd087ee Mon Sep 17 00:00:00 2001 From: Lachlan Collins <1667261+lachlancollins@users.noreply.github.com> Date: Wed, 10 Jul 2024 12:57:01 +1000 Subject: [PATCH 01/10] docs(examples): Update react/auto-refetching --- examples/react/auto-refetching/next-env.d.ts | 5 +++++ examples/react/auto-refetching/package.json | 5 +++++ .../src/pages/api/{data.js => data.ts} | 7 ++++++- .../src/pages/{index.js => index.tsx} | 14 ++++++-------- examples/react/auto-refetching/tsconfig.json | 19 +++++++++++++++++++ package.json | 4 ++-- pnpm-lock.yaml | 18 +++++++++++++----- 7 files changed, 56 insertions(+), 16 deletions(-) create mode 100644 examples/react/auto-refetching/next-env.d.ts rename examples/react/auto-refetching/src/pages/api/{data.js => data.ts} (67%) rename examples/react/auto-refetching/src/pages/{index.js => index.tsx} (93%) create mode 100644 examples/react/auto-refetching/tsconfig.json diff --git a/examples/react/auto-refetching/next-env.d.ts b/examples/react/auto-refetching/next-env.d.ts new file mode 100644 index 0000000000..4f11a03dc6 --- /dev/null +++ b/examples/react/auto-refetching/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/examples/react/auto-refetching/package.json b/examples/react/auto-refetching/package.json index 3ec3ef35e0..217f550af6 100644 --- a/examples/react/auto-refetching/package.json +++ b/examples/react/auto-refetching/package.json @@ -14,5 +14,10 @@ "next": "^14.2.4", "react": "^18.2.0", "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "npm:types-react@rc", + "@types/react-dom": "npm:types-react-dom@rc", + "typescript": "5.3.3" } } diff --git a/examples/react/auto-refetching/src/pages/api/data.js b/examples/react/auto-refetching/src/pages/api/data.ts similarity index 67% rename from examples/react/auto-refetching/src/pages/api/data.js rename to examples/react/auto-refetching/src/pages/api/data.ts index 9c0cb35897..57faeb3916 100644 --- a/examples/react/auto-refetching/src/pages/api/data.js +++ b/examples/react/auto-refetching/src/pages/api/data.ts @@ -1,7 +1,12 @@ +import type { NextApiRequest, NextApiResponse } from 'next' + // an simple endpoint for getting current list let list = ['Item 1', 'Item 2', 'Item 3'] -export default async (req, res) => { +export default async ( + req: NextApiRequest, + res: NextApiResponse, +) => { if (req.query.add) { if (!list.includes(req.query.add)) { list.push(req.query.add) diff --git a/examples/react/auto-refetching/src/pages/index.js b/examples/react/auto-refetching/src/pages/index.tsx similarity index 93% rename from examples/react/auto-refetching/src/pages/index.js rename to examples/react/auto-refetching/src/pages/index.tsx index ace9bc343a..470a6e78fa 100644 --- a/examples/react/auto-refetching/src/pages/index.js +++ b/examples/react/auto-refetching/src/pages/index.tsx @@ -1,13 +1,11 @@ import React from 'react' -// - import { - useQuery, - useQueryClient, - useMutation, QueryClient, QueryClientProvider, + useMutation, + useQuery, + useQueryClient, } from '@tanstack/react-query' import { ReactQueryDevtools } from '@tanstack/react-query-devtools' @@ -28,7 +26,7 @@ function Example() { const { status, data, error, isFetching } = useQuery({ queryKey: ['todos'], - queryFn: async () => { + queryFn: async (): Promise> => { const response = await fetch('/api/data') return await response.json() }, @@ -37,7 +35,7 @@ function Example() { }) const addMutation = useMutation({ - mutationFn: (add) => fetch(`/api/data?add=${add}`), + mutationFn: (add: string) => fetch(`/api/data?add=${add}`), onSuccess: () => queryClient.invalidateQueries({ queryKey: ['todos'] }), }) @@ -51,7 +49,7 @@ function Example() { return (
-

Auto Refetch with stale-time set to 1s)

+

Auto Refetch with stale-time set to {intervalMs}ms

This example is best experienced on your own machine, where you can open multiple tabs to the same localhost server and see your changes diff --git a/examples/react/auto-refetching/tsconfig.json b/examples/react/auto-refetching/tsconfig.json new file mode 100644 index 0000000000..9575d0eab5 --- /dev/null +++ b/examples/react/auto-refetching/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/package.json b/package.json index 3b47732a5f..fe8ff21edb 100644 --- a/package.json +++ b/package.json @@ -79,8 +79,8 @@ }, "pnpm": { "overrides": { - "@types/react": "npm:types-react@rc", - "@types/react-dom": "npm:types-react-dom@rc", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", "eslint": "$eslint" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 174206e816..11a41789ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -374,13 +374,13 @@ importers: version: 4.0.2 next: specifier: ^14.2.4 - version: 14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.71.1) + version: 14.2.4(react-dom@19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522))(react@19.0.0-rc-4c2e457c7c-20240522)(sass@1.71.1) react: - specifier: ^18.2.0 - version: 18.3.1 + specifier: 19.0.0-rc-4c2e457c7c-20240522 + version: 19.0.0-rc-4c2e457c7c-20240522 react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0-rc-4c2e457c7c-20240522 + version: 19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522) examples/react/basic: dependencies: @@ -22589,7 +22589,11 @@ snapshots: jest-runner: 26.6.3 jest-runtime: 26.6.3 transitivePeerDependencies: + - bufferutil + - canvas - supports-color + - ts-node + - utf-8-validate '@jest/test-sequencer@27.5.1': dependencies: @@ -31337,7 +31341,11 @@ snapshots: stack-utils: 2.0.6 throat: 5.0.0 transitivePeerDependencies: + - bufferutil + - canvas - supports-color + - ts-node + - utf-8-validate jest-circus@27.5.1: dependencies: From 335e6afec68d4d6c88bb93f001c5bc34f9a84561 Mon Sep 17 00:00:00 2001 From: Lachlan Collins <1667261+lachlancollins@users.noreply.github.com> Date: Wed, 10 Jul 2024 13:12:17 +1000 Subject: [PATCH 02/10] Update infinite-query-with-max-pages, load-more-infinite-scroll --- docs/config.json | 2 +- examples/react/auto-refetching/package.json | 4 +- .../next-env.d.ts | 5 ++ .../package.json | 9 ++- .../pages/api/{projects.js => projects.ts} | 5 +- .../src/pages/{index.js => index.tsx} | 2 +- .../tsconfig.json | 19 +++++ .../load-more-infinite-scroll/next-env.d.ts | 5 ++ .../load-more-infinite-scroll/package.json | 9 ++- .../src/pages/{about.js => about.tsx} | 0 .../pages/api/{projects.js => projects.ts} | 5 +- .../src/pages/{index.js => index.tsx} | 12 ++- .../load-more-infinite-scroll/tsconfig.json | 19 +++++ package.json | 4 +- pnpm-lock.yaml | 76 ++++++++++++------- 15 files changed, 132 insertions(+), 44 deletions(-) create mode 100644 examples/react/infinite-query-with-max-pages/next-env.d.ts rename examples/react/infinite-query-with-max-pages/src/pages/api/{projects.js => projects.ts} (78%) rename examples/react/infinite-query-with-max-pages/src/pages/{index.js => index.tsx} (100%) create mode 100644 examples/react/infinite-query-with-max-pages/tsconfig.json create mode 100644 examples/react/load-more-infinite-scroll/next-env.d.ts rename examples/react/load-more-infinite-scroll/src/pages/{about.js => about.tsx} (100%) rename examples/react/load-more-infinite-scroll/src/pages/api/{projects.js => projects.ts} (78%) rename examples/react/load-more-infinite-scroll/src/pages/{index.js => index.tsx} (91%) create mode 100644 examples/react/load-more-infinite-scroll/tsconfig.json diff --git a/docs/config.json b/docs/config.json index 60cf48e8fe..d47c5bbb44 100644 --- a/docs/config.json +++ b/docs/config.json @@ -903,7 +903,7 @@ }, { "label": "Basic", - "to": "framework/solid/examples/basic-typescript" + "to": "framework/solid/examples/basic" }, { "label": "Basic w/ GraphQL-Request", diff --git a/examples/react/auto-refetching/package.json b/examples/react/auto-refetching/package.json index 217f550af6..ddffc8fa06 100644 --- a/examples/react/auto-refetching/package.json +++ b/examples/react/auto-refetching/package.json @@ -16,8 +16,8 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@types/react": "npm:types-react@rc", - "@types/react-dom": "npm:types-react-dom@rc", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", "typescript": "5.3.3" } } diff --git a/examples/react/infinite-query-with-max-pages/next-env.d.ts b/examples/react/infinite-query-with-max-pages/next-env.d.ts new file mode 100644 index 0000000000..4f11a03dc6 --- /dev/null +++ b/examples/react/infinite-query-with-max-pages/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/examples/react/infinite-query-with-max-pages/package.json b/examples/react/infinite-query-with-max-pages/package.json index 636bb35bd0..0f8b95e2e6 100644 --- a/examples/react/infinite-query-with-max-pages/package.json +++ b/examples/react/infinite-query-with-max-pages/package.json @@ -12,8 +12,13 @@ "@tanstack/react-query-devtools": "^5.50.1", "isomorphic-unfetch": "4.0.2", "next": "^14.2.4", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^19.0.0-rc-4c2e457c7c-20240522", + "react-dom": "^19.0.0-rc-4c2e457c7c-20240522", "react-intersection-observer": "^8.34.0" + }, + "devDependencies": { + "@types/react": "npm:types-react@rc", + "@types/react-dom": "npm:types-react-dom@rc", + "typescript": "5.3.3" } } diff --git a/examples/react/infinite-query-with-max-pages/src/pages/api/projects.js b/examples/react/infinite-query-with-max-pages/src/pages/api/projects.ts similarity index 78% rename from examples/react/infinite-query-with-max-pages/src/pages/api/projects.js rename to examples/react/infinite-query-with-max-pages/src/pages/api/projects.ts index a13fbee1aa..29b5228484 100644 --- a/examples/react/infinite-query-with-max-pages/src/pages/api/projects.js +++ b/examples/react/infinite-query-with-max-pages/src/pages/api/projects.ts @@ -1,5 +1,6 @@ -// an endpoint for getting projects data -export default (req, res) => { +import type { NextApiRequest, NextApiResponse } from 'next' + +export default (req: NextApiRequest, res: NextApiResponse) => { const cursor = parseInt(req.query.cursor) || 0 const pageSize = 4 diff --git a/examples/react/infinite-query-with-max-pages/src/pages/index.js b/examples/react/infinite-query-with-max-pages/src/pages/index.tsx similarity index 100% rename from examples/react/infinite-query-with-max-pages/src/pages/index.js rename to examples/react/infinite-query-with-max-pages/src/pages/index.tsx index 8df4c0e8d9..29fac3d44a 100644 --- a/examples/react/infinite-query-with-max-pages/src/pages/index.js +++ b/examples/react/infinite-query-with-max-pages/src/pages/index.tsx @@ -1,8 +1,8 @@ import React from 'react' import { - useInfiniteQuery, QueryClient, QueryClientProvider, + useInfiniteQuery, } from '@tanstack/react-query' import { ReactQueryDevtools } from '@tanstack/react-query-devtools' diff --git a/examples/react/infinite-query-with-max-pages/tsconfig.json b/examples/react/infinite-query-with-max-pages/tsconfig.json new file mode 100644 index 0000000000..9575d0eab5 --- /dev/null +++ b/examples/react/infinite-query-with-max-pages/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/examples/react/load-more-infinite-scroll/next-env.d.ts b/examples/react/load-more-infinite-scroll/next-env.d.ts new file mode 100644 index 0000000000..4f11a03dc6 --- /dev/null +++ b/examples/react/load-more-infinite-scroll/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/examples/react/load-more-infinite-scroll/package.json b/examples/react/load-more-infinite-scroll/package.json index c35c1f54b9..9284407ad9 100644 --- a/examples/react/load-more-infinite-scroll/package.json +++ b/examples/react/load-more-infinite-scroll/package.json @@ -12,8 +12,13 @@ "@tanstack/react-query-devtools": "^5.50.1", "isomorphic-unfetch": "4.0.2", "next": "^14.2.4", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^19.0.0-rc-4c2e457c7c-20240522", + "react-dom": "^19.0.0-rc-4c2e457c7c-20240522", "react-intersection-observer": "^8.34.0" + }, + "devDependencies": { + "@types/react": "npm:types-react@rc", + "@types/react-dom": "npm:types-react-dom@rc", + "typescript": "5.3.3" } } diff --git a/examples/react/load-more-infinite-scroll/src/pages/about.js b/examples/react/load-more-infinite-scroll/src/pages/about.tsx similarity index 100% rename from examples/react/load-more-infinite-scroll/src/pages/about.js rename to examples/react/load-more-infinite-scroll/src/pages/about.tsx diff --git a/examples/react/load-more-infinite-scroll/src/pages/api/projects.js b/examples/react/load-more-infinite-scroll/src/pages/api/projects.ts similarity index 78% rename from examples/react/load-more-infinite-scroll/src/pages/api/projects.js rename to examples/react/load-more-infinite-scroll/src/pages/api/projects.ts index 03492c0a15..493a453a96 100644 --- a/examples/react/load-more-infinite-scroll/src/pages/api/projects.js +++ b/examples/react/load-more-infinite-scroll/src/pages/api/projects.ts @@ -1,5 +1,6 @@ -// an endpoint for getting projects data -export default (req, res) => { +import type { NextApiRequest, NextApiResponse } from 'next' + +export default (req: NextApiRequest, res: NextApiResponse) => { const cursor = parseInt(req.query.cursor) || 0 const pageSize = 5 diff --git a/examples/react/load-more-infinite-scroll/src/pages/index.js b/examples/react/load-more-infinite-scroll/src/pages/index.tsx similarity index 91% rename from examples/react/load-more-infinite-scroll/src/pages/index.js rename to examples/react/load-more-infinite-scroll/src/pages/index.tsx index b3b679be4e..9aa6742d15 100644 --- a/examples/react/load-more-infinite-scroll/src/pages/index.js +++ b/examples/react/load-more-infinite-scroll/src/pages/index.tsx @@ -34,13 +34,19 @@ function Example() { hasPreviousPage, } = useInfiniteQuery({ queryKey: ['projects'], - queryFn: async ({ pageParam }) => { + queryFn: async ({ + pageParam, + }): Promise<{ + data: Array<{ name: string; id: number }> + previousId: number + nextId: number + }> => { const response = await fetch(`/api/projects?cursor=${pageParam}`) return await response.json() }, initialPageParam: 0, - getPreviousPageParam: (firstPage) => firstPage.previousId ?? undefined, - getNextPageParam: (lastPage) => lastPage.nextId ?? undefined, + getPreviousPageParam: (firstPage) => firstPage.previousId, + getNextPageParam: (lastPage) => lastPage.nextId, }) React.useEffect(() => { diff --git a/examples/react/load-more-infinite-scroll/tsconfig.json b/examples/react/load-more-infinite-scroll/tsconfig.json new file mode 100644 index 0000000000..9575d0eab5 --- /dev/null +++ b/examples/react/load-more-infinite-scroll/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/package.json b/package.json index fe8ff21edb..3b47732a5f 100644 --- a/package.json +++ b/package.json @@ -79,8 +79,8 @@ }, "pnpm": { "overrides": { - "@types/react": "^18.2.79", - "@types/react-dom": "^18.2.25", + "@types/react": "npm:types-react@rc", + "@types/react-dom": "npm:types-react-dom@rc", "eslint": "$eslint" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 11a41789ee..f3499e6621 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -374,13 +374,23 @@ importers: version: 4.0.2 next: specifier: ^14.2.4 - version: 14.2.4(react-dom@19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522))(react@19.0.0-rc-4c2e457c7c-20240522)(sass@1.71.1) + version: 14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.71.1) react: - specifier: 19.0.0-rc-4c2e457c7c-20240522 - version: 19.0.0-rc-4c2e457c7c-20240522 + specifier: ^18.2.0 + version: 18.3.1 react-dom: - specifier: 19.0.0-rc-4c2e457c7c-20240522 - version: 19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522) + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + devDependencies: + '@types/react': + specifier: npm:types-react@rc + version: types-react@19.0.0-rc.1 + '@types/react-dom': + specifier: npm:types-react-dom@rc + version: types-react-dom@19.0.0-rc.1 + typescript: + specifier: 5.3.3 + version: 5.3.3 examples/react/basic: dependencies: @@ -491,16 +501,26 @@ importers: version: 4.0.2 next: specifier: ^14.2.4 - version: 14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.71.1) + version: 14.2.4(react-dom@19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522))(react@19.0.0-rc-4c2e457c7c-20240522)(sass@1.71.1) react: - specifier: ^18.2.0 - version: 18.3.1 + specifier: ^19.0.0-rc-4c2e457c7c-20240522 + version: 19.0.0-rc-4c2e457c7c-20240522 react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0-rc-4c2e457c7c-20240522 + version: 19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522) react-intersection-observer: specifier: ^8.34.0 - version: 8.34.0(react@18.3.1) + version: 8.34.0(react@19.0.0-rc-4c2e457c7c-20240522) + devDependencies: + '@types/react': + specifier: npm:types-react@rc + version: types-react@19.0.0-rc.1 + '@types/react-dom': + specifier: npm:types-react-dom@rc + version: types-react-dom@19.0.0-rc.1 + typescript: + specifier: 5.3.3 + version: 5.3.3 examples/react/load-more-infinite-scroll: dependencies: @@ -515,16 +535,26 @@ importers: version: 4.0.2 next: specifier: ^14.2.4 - version: 14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.71.1) + version: 14.2.4(react-dom@19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522))(react@19.0.0-rc-4c2e457c7c-20240522)(sass@1.71.1) react: - specifier: ^18.2.0 - version: 18.3.1 + specifier: ^19.0.0-rc-4c2e457c7c-20240522 + version: 19.0.0-rc-4c2e457c7c-20240522 react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0-rc-4c2e457c7c-20240522 + version: 19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522) react-intersection-observer: specifier: ^8.34.0 - version: 8.34.0(react@18.3.1) + version: 8.34.0(react@19.0.0-rc-4c2e457c7c-20240522) + devDependencies: + '@types/react': + specifier: npm:types-react@rc + version: types-react@19.0.0-rc.1 + '@types/react-dom': + specifier: npm:types-react-dom@rc + version: types-react-dom@19.0.0-rc.1 + typescript: + specifier: 5.3.3 + version: 5.3.3 examples/react/nextjs: dependencies: @@ -22589,11 +22619,7 @@ snapshots: jest-runner: 26.6.3 jest-runtime: 26.6.3 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - ts-node - - utf-8-validate '@jest/test-sequencer@27.5.1': dependencies: @@ -31341,11 +31367,7 @@ snapshots: stack-utils: 2.0.6 throat: 5.0.0 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - ts-node - - utf-8-validate jest-circus@27.5.1: dependencies: @@ -36153,9 +36175,9 @@ snapshots: transitivePeerDependencies: - csstype - react-intersection-observer@8.34.0(react@18.3.1): + react-intersection-observer@8.34.0(react@19.0.0-rc-4c2e457c7c-20240522): dependencies: - react: 18.3.1 + react: 19.0.0-rc-4c2e457c7c-20240522 react-is@16.13.1: {} From c37fca0ae60ad04c4102c588665305f4a845702a Mon Sep 17 00:00:00 2001 From: Lachlan Collins <1667261+lachlancollins@users.noreply.github.com> Date: Wed, 10 Jul 2024 13:22:56 +1000 Subject: [PATCH 03/10] Upgrade react/nextjs --- examples/react/nextjs/next-env.d.ts | 5 ++++ examples/react/nextjs/package.json | 9 ++++-- .../{Header/index.js => Header.tsx} | 0 .../{InfoBox/index.js => InfoBox.tsx} | 2 +- .../{Layout/index.js => Layout.tsx} | 2 +- .../{PostList/index.js => PostList.tsx} | 7 ++--- .../src/components/{index.js => index.ts} | 2 +- examples/react/nextjs/src/hooks/index.js | 1 - .../hooks/{usePosts/index.js => usePosts.ts} | 12 ++++++-- .../nextjs/src/pages/{_app.js => _app.tsx} | 3 +- .../pages/{client-only.js => client-only.tsx} | 2 +- .../nextjs/src/pages/{index.js => index.tsx} | 6 ++-- examples/react/nextjs/tsconfig.json | 19 +++++++++++++ pnpm-lock.yaml | 28 +++++++++++++++---- 14 files changed, 74 insertions(+), 24 deletions(-) create mode 100644 examples/react/nextjs/next-env.d.ts rename examples/react/nextjs/src/components/{Header/index.js => Header.tsx} (100%) rename examples/react/nextjs/src/components/{InfoBox/index.js => InfoBox.tsx} (83%) rename examples/react/nextjs/src/components/{Layout/index.js => Layout.tsx} (93%) rename examples/react/nextjs/src/components/{PostList/index.js => PostList.tsx} (89%) rename examples/react/nextjs/src/components/{index.js => index.ts} (100%) delete mode 100644 examples/react/nextjs/src/hooks/index.js rename examples/react/nextjs/src/hooks/{usePosts/index.js => usePosts.ts} (58%) rename examples/react/nextjs/src/pages/{_app.js => _app.tsx} (82%) rename examples/react/nextjs/src/pages/{client-only.js => client-only.tsx} (79%) rename examples/react/nextjs/src/pages/{index.js => index.tsx} (74%) create mode 100644 examples/react/nextjs/tsconfig.json diff --git a/examples/react/nextjs/next-env.d.ts b/examples/react/nextjs/next-env.d.ts new file mode 100644 index 0000000000..4f11a03dc6 --- /dev/null +++ b/examples/react/nextjs/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/examples/react/nextjs/package.json b/examples/react/nextjs/package.json index 6c40ed726f..b8fd715f57 100644 --- a/examples/react/nextjs/package.json +++ b/examples/react/nextjs/package.json @@ -11,9 +11,14 @@ "@tanstack/react-query": "^5.50.1", "@tanstack/react-query-devtools": "^5.50.1", "next": "^14.2.4", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^19.0.0-rc-4c2e457c7c-20240522", + "react-dom": "^19.0.0-rc-4c2e457c7c-20240522", "resolve-from": "^5.0.0", "web-streams-polyfill": "^4.0.0" + }, + "devDependencies": { + "@types/react": "npm:types-react@rc", + "@types/react-dom": "npm:types-react-dom@rc", + "typescript": "5.3.3" } } diff --git a/examples/react/nextjs/src/components/Header/index.js b/examples/react/nextjs/src/components/Header.tsx similarity index 100% rename from examples/react/nextjs/src/components/Header/index.js rename to examples/react/nextjs/src/components/Header.tsx diff --git a/examples/react/nextjs/src/components/InfoBox/index.js b/examples/react/nextjs/src/components/InfoBox.tsx similarity index 83% rename from examples/react/nextjs/src/components/InfoBox/index.js rename to examples/react/nextjs/src/components/InfoBox.tsx index b0ff42f7d3..4bc1ecbbea 100644 --- a/examples/react/nextjs/src/components/InfoBox/index.js +++ b/examples/react/nextjs/src/components/InfoBox.tsx @@ -1,6 +1,6 @@ import React from 'react' -const InfoBox = ({ children }) => ( +const InfoBox = ({ children }: { children: React.ReactNode }) => (