diff --git a/examples/file-upload-nextjs-pothos/package.json b/examples/file-upload-nextjs-pothos/package.json index e0a2e9d976..04bd7c9b44 100644 --- a/examples/file-upload-nextjs-pothos/package.json +++ b/examples/file-upload-nextjs-pothos/package.json @@ -13,7 +13,7 @@ "@pothos/core": "4.10.0", "graphql": "16.12.0", "graphql-yoga": "workspace:*", - "next": "15.5.6", + "next": "16.0.1", "react": "19.2.0", "react-dom": "19.2.0" }, @@ -21,7 +21,7 @@ "@types/react": "^19.0.0", "@whatwg-node/fetch": "^0.10.1", "eslint": "9.39.0", - "eslint-config-next": "15.5.6", + "eslint-config-next": "16.0.1", "typescript": "5.9.3" } } diff --git a/examples/nextjs-app/__integration-tests__/nextjs-app.spec.ts b/examples/nextjs-app/__integration-tests__/nextjs-app.spec.ts index feb52356b1..c8f10ef8ac 100644 --- a/examples/nextjs-app/__integration-tests__/nextjs-app.spec.ts +++ b/examples/nextjs-app/__integration-tests__/nextjs-app.spec.ts @@ -1,26 +1,35 @@ +import path from 'node:path'; import { version } from 'graphql'; +import { rimrafSync } from 'rimraf'; import { fetch } from '@whatwg-node/fetch'; import { getAvailablePort, Proc, spawn, waitForAvailable } from './utils'; jest.setTimeout(33_000); +const nodeMajorVersion = parseInt(process.version.split('.')[0].replace('v', ''), 10); + describe('nextjs 13 App Router', () => { - if (version.startsWith('15.')) { - it.skip('skips for v15', () => {}); + if (version.startsWith('15.') || nodeMajorVersion < 20) { + it.skip('skips', () => {}); return; } let port: number; let serverProcess: Proc; beforeAll(async () => { + rimrafSync(path.join(__dirname, '..', '.next')); const signal = AbortSignal.timeout(30_000); port = await getAvailablePort(); serverProcess = await spawn('pnpm', ['dev'], { signal, env: { PORT: String(port) }, + cwd: path.join(__dirname, '..'), }); await waitForAvailable(port, { signal }); }); - afterAll(() => serverProcess?.kill()); + afterAll(() => { + rimrafSync(path.join(__dirname, '..', '.next')); + return serverProcess?.kill(); + }); it('should show GraphiQL', async () => { const response = await fetch(`http://127.0.0.1:${port}/api/graphql`, { diff --git a/examples/nextjs-app/__integration-tests__/utils.ts b/examples/nextjs-app/__integration-tests__/utils.ts index 3cddc68c2b..dfb5edea7b 100644 --- a/examples/nextjs-app/__integration-tests__/utils.ts +++ b/examples/nextjs-app/__integration-tests__/utils.ts @@ -13,12 +13,16 @@ export interface Proc { export function spawn( cmd: string, args: string[], - { signal, env }: { signal: AbortSignal; env?: Record }, + { + signal, + env, + cwd = path.join(module.path, '..'), + }: { signal: AbortSignal; env?: Record; cwd: string }, ): Promise { const proc = cp.spawn(cmd, args, { // ignore stdin because we're not feeding the process anything, pipe stdout and stderr stdio: ['ignore', 'pipe', 'pipe'], - cwd: path.join(module.path, '..'), + cwd, signal, env: { // @ts-ignore this runs inside jest so process is always available diff --git a/examples/nextjs-app/next-env.d.ts b/examples/nextjs-app/next-env.d.ts index 1b3be0840f..20e7bcfb03 100644 --- a/examples/nextjs-app/next-env.d.ts +++ b/examples/nextjs-app/next-env.d.ts @@ -1,5 +1,6 @@ /// /// +import './.next/dev/types/routes.d.ts'; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/examples/nextjs-app/package.json b/examples/nextjs-app/package.json index 2d98f9a1cc..6af8ce216b 100644 --- a/examples/nextjs-app/package.json +++ b/examples/nextjs-app/package.json @@ -15,10 +15,10 @@ "@types/react-dom": "19.2.2", "autoprefixer": "10.4.21", "eslint": "9.39.0", - "eslint-config-next": "15.5.6", + "eslint-config-next": "16.0.1", "graphql": "16.12.0", "graphql-yoga": "workspace:*", - "next": "15.5.6", + "next": "16.0.1", "postcss": "8.5.6", "react": "19.2.0", "react-dom": "19.2.0", diff --git a/examples/nextjs-app/tsconfig.json b/examples/nextjs-app/tsconfig.json index e06a4454ab..a45f0bd5e8 100644 --- a/examples/nextjs-app/tsconfig.json +++ b/examples/nextjs-app/tsconfig.json @@ -12,7 +12,7 @@ "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve", + "jsx": "react-jsx", "incremental": true, "plugins": [ { @@ -23,6 +23,13 @@ "@/*": ["./*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + ".next/dev/dev/types/**/*.ts" + ], "exclude": ["node_modules"] } diff --git a/examples/nextjs-auth/package.json b/examples/nextjs-auth/package.json index ecaf3722fb..994b51a3e5 100644 --- a/examples/nextjs-auth/package.json +++ b/examples/nextjs-auth/package.json @@ -12,7 +12,7 @@ "dependencies": { "graphql": "16.12.0", "graphql-yoga": "workspace:*", - "next": "15.5.6", + "next": "16.0.1", "next-auth": "4.24.13", "react": "19.2.0", "react-dom": "19.2.0", @@ -21,7 +21,7 @@ "devDependencies": { "@types/react": "19.2.2", "eslint": "9.39.0", - "eslint-config-next": "15.5.6", + "eslint-config-next": "16.0.1", "typescript": "5.9.3" } } diff --git a/examples/nextjs-legacy-pages/__integration-tests__/nextjs-legacy.spec.ts b/examples/nextjs-legacy-pages/__integration-tests__/nextjs-legacy.spec.ts index c342c6ad15..9e2c7ce45d 100644 --- a/examples/nextjs-legacy-pages/__integration-tests__/nextjs-legacy.spec.ts +++ b/examples/nextjs-legacy-pages/__integration-tests__/nextjs-legacy.spec.ts @@ -1,3 +1,5 @@ +import path from 'node:path'; +import { rimrafSync } from 'rimraf'; import { fetch } from '@whatwg-node/fetch'; import { getAvailablePort, @@ -7,20 +9,30 @@ import { } from '../../nextjs-app/__integration-tests__/utils'; jest.setTimeout(33_000); +const nodeMajorVersion = parseInt(process.version.split('.')[0].replace('v', ''), 10); describe('NextJS Legacy Pages', () => { + if (nodeMajorVersion < 20) { + it.skip('skips', () => {}); + return; + } let port: number; let serverProcess: Proc; beforeAll(async () => { + rimrafSync(path.join(__dirname, '..', '.next')); const signal = AbortSignal.timeout(30_000); port = await getAvailablePort(); serverProcess = await spawn('pnpm', ['dev'], { signal, env: { PORT: String(port) }, + cwd: path.join(__dirname, '..'), }); await waitForAvailable(port, { signal }); }); - afterAll(() => serverProcess.kill()); + afterAll(() => { + rimrafSync(path.join(__dirname, '..', '.next')); + return serverProcess?.kill(); + }); it('should show GraphiQL', async () => { const response = await fetch(`http://127.0.0.1:${port}/api/graphql`, { @@ -29,8 +41,8 @@ describe('NextJS Legacy Pages', () => { }, }); - expect(response.ok).toBe(true); expect(await response.text()).toContain('Yoga GraphiQL'); + expect(response.ok).toBe(true); }); it('should run basic query', async () => { @@ -46,8 +58,6 @@ describe('NextJS Legacy Pages', () => { }), }); - expect(response.ok).toBe(true); - expect({ ...Object.fromEntries(response.headers.entries()), date: null, @@ -60,5 +70,7 @@ describe('NextJS Legacy Pages', () => { expect(json.errors).toBeFalsy(); expect(json.data?.greetings).toBe('This is the `greetings` field of the root `Query` type'); + + expect(response.ok).toBe(true); }); }); diff --git a/examples/nextjs-legacy-pages/next-env.d.ts b/examples/nextjs-legacy-pages/next-env.d.ts index a4a7b3f5cf..d3956e1409 100644 --- a/examples/nextjs-legacy-pages/next-env.d.ts +++ b/examples/nextjs-legacy-pages/next-env.d.ts @@ -1,5 +1,6 @@ /// /// +import './.next/dev/types/routes.d.ts'; // NOTE: This file should not be edited -// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information. +// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information. diff --git a/examples/nextjs-legacy-pages/package.json b/examples/nextjs-legacy-pages/package.json index 46a5db62fa..8e3d0c4853 100644 --- a/examples/nextjs-legacy-pages/package.json +++ b/examples/nextjs-legacy-pages/package.json @@ -14,7 +14,7 @@ "@types/react": "19.2.2", "graphql": "16.12.0", "graphql-yoga": "workspace:*", - "next": "15.5.6", + "next": "16.0.1", "react": "19.2.0", "react-dom": "19.2.0", "tslib": "2.8.1" @@ -24,7 +24,7 @@ "@types/react": "19.2.2", "esbuild": "0.25.12", "eslint": "9.39.0", - "eslint-config-next": "15.5.6", + "eslint-config-next": "16.0.1", "typescript": "5.9.3" } } diff --git a/examples/nextjs-legacy-pages/pages/api/graphql.ts b/examples/nextjs-legacy-pages/pages/api/graphql.ts index 2776d88b13..fe3038a99b 100644 --- a/examples/nextjs-legacy-pages/pages/api/graphql.ts +++ b/examples/nextjs-legacy-pages/pages/api/graphql.ts @@ -28,4 +28,11 @@ export default createYoga<{ }, }, }), + plugins: [ + { + onValidate({ setResult }) { + setResult([]); + }, + }, + ], }); diff --git a/examples/nextjs-legacy-pages/tsconfig.json b/examples/nextjs-legacy-pages/tsconfig.json index 943abdff81..c3c560e03d 100644 --- a/examples/nextjs-legacy-pages/tsconfig.json +++ b/examples/nextjs-legacy-pages/tsconfig.json @@ -12,7 +12,7 @@ "module": "esnext", "moduleResolution": "node", "resolveJsonModule": true, - "jsx": "preserve", + "jsx": "react-jsx", "importHelpers": true, "isolatedModules": true }, diff --git a/examples/nextjs-ws/package.json b/examples/nextjs-ws/package.json index 7710618df4..cdad549543 100644 --- a/examples/nextjs-ws/package.json +++ b/examples/nextjs-ws/package.json @@ -12,7 +12,7 @@ "graphql": "16.12.0", "graphql-ws": "^6.0.0", "graphql-yoga": "workspace:*", - "next": "15.5.6", + "next": "16.0.1", "react": "19.2.0", "react-dom": "19.2.0", "ws": "8.18.3" @@ -22,7 +22,7 @@ "@types/react": "19.2.2", "@types/ws": "8.18.1", "eslint": "9.39.0", - "eslint-config-next": "15.5.6", + "eslint-config-next": "16.0.1", "typescript": "5.9.3" } } diff --git a/packages/graphql-yoga/__tests__/schema.spec.ts b/packages/graphql-yoga/__tests__/schema.spec.ts index c51196ddb1..b8a1632dbf 100644 --- a/packages/graphql-yoga/__tests__/schema.spec.ts +++ b/packages/graphql-yoga/__tests__/schema.spec.ts @@ -104,7 +104,7 @@ describe('schema', () => { expect(await result.json()).toEqual({ errors: [ { - message: `No schema found for this request. Make sure you use this plugin with GraphQL Yoga.`, + message: `The factory function did not return a valid GraphQLSchema.`, }, ], }); @@ -228,7 +228,7 @@ describe('schema', () => { const { errors } = await result.json(); expect(errors).toEqual([ { - message: `No schema found for this request. Make sure you use this plugin with GraphQL Yoga.`, + message: `The factory function did not return a valid GraphQLSchema.`, }, ]); }); diff --git a/packages/graphql-yoga/src/plugins/use-schema.ts b/packages/graphql-yoga/src/plugins/use-schema.ts index ccc1685225..9ea9038eb8 100644 --- a/packages/graphql-yoga/src/plugins/use-schema.ts +++ b/packages/graphql-yoga/src/plugins/use-schema.ts @@ -1,4 +1,4 @@ -import { GraphQLSchema, isSchema } from 'graphql'; +import { GraphQLSchema } from 'graphql'; import { PromiseOrValue } from '@envelop/core'; import { handleMaybePromise } from '@whatwg-node/promise-helpers'; import type { GraphQLSchemaWithContext, YogaInitialContext } from '../types.js'; @@ -12,6 +12,11 @@ export type YogaSchemaDefinition = GraphQLSchemaWithContext >); +function isGraphQLSchema(schemaDef: unknown): schemaDef is GraphQLSchema { + // @ts-expect-error - Symbol.toStringTag exists + return schemaDef?.[Symbol.toStringTag] === 'GraphQLSchema'; +} + export const useSchema = < // eslint-disable-next-line @typescript-eslint/no-empty-object-type TServerContext = {}, @@ -23,7 +28,7 @@ export const useSchema = < if (schemaDef == null) { return {}; } - if (isSchema(schemaDef)) { + if (isGraphQLSchema(schemaDef)) { return { onPluginInit({ setSchema }) { setSchema(schemaDef); @@ -48,46 +53,55 @@ export const useSchema = < }; }, onEnveloped({ setSchema }) { - if (!schema) { + if (schema == null) { throw new Error( `You provide a promise of a schema but it hasn't been resolved yet. Make sure you use this plugin with GraphQL Yoga.`, ); } + if (!isGraphQLSchema(schema)) { + throw new Error(`The resolved schema is not a valid GraphQLSchema instance.`); + } setSchema(schema); }, }; } - const schemaByRequest = new WeakMap(); - return { - onRequestParse({ request, serverContext }) { - return { - onRequestParseDone() { - return handleMaybePromise( - () => - schemaDef({ - ...(serverContext as TServerContext), - request, - }), - schemaDef => { - schemaByRequest.set(request, schemaDef); - }, + if (typeof schemaDef === 'function') { + const schemaByRequest = new WeakMap(); + return { + onRequestParse({ request, serverContext }) { + return { + onRequestParseDone() { + return handleMaybePromise( + () => + schemaDef({ + ...(serverContext as TServerContext), + request, + }), + schemaDef => { + if (!isGraphQLSchema(schemaDef)) { + throw new Error('The factory function did not return a valid GraphQLSchema.'); + } + schemaByRequest.set(request, schemaDef); + }, + ); + }, + }; + }, + onEnveloped({ setSchema, context }) { + if (context?.request == null) { + throw new Error( + 'Request object is not available in the context. Make sure you use this plugin with GraphQL Yoga.', ); - }, - }; - }, - onEnveloped({ setSchema, context }) { - if (context?.request == null) { - throw new Error( - 'Request object is not available in the context. Make sure you use this plugin with GraphQL Yoga.', - ); - } - const schema = schemaByRequest.get(context.request); - if (schema == null) { - throw new Error( - `No schema found for this request. Make sure you use this plugin with GraphQL Yoga.`, - ); - } - setSchema(schema); - }, - }; + } + const schema = schemaByRequest.get(context.request); + if (schema == null) { + throw new Error( + `No schema found for this request. Make sure you use this plugin with GraphQL Yoga.`, + ); + } + setSchema(schema); + }, + }; + } + throw new Error(`Invalid schema definition provided, expected a schema, promise or function.`); }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a3405cdc5..922f116d57 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -660,8 +660,8 @@ importers: specifier: workspace:* version: link:../../packages/graphql-yoga/dist next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: 16.0.1 + version: 16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react: specifier: 19.2.0 version: 19.2.0 @@ -679,8 +679,8 @@ importers: specifier: 9.39.0 version: 9.39.0(jiti@2.6.1) eslint-config-next: - specifier: 15.5.6 - version: 15.5.6(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 16.0.1 + version: 16.0.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -1074,8 +1074,8 @@ importers: specifier: 9.39.0 version: 9.39.0(jiti@2.6.1) eslint-config-next: - specifier: 15.5.6 - version: 15.5.6(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 16.0.1 + version: 16.0.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) graphql: specifier: 16.12.0 version: 16.12.0 @@ -1083,8 +1083,8 @@ importers: specifier: workspace:* version: link:../../packages/graphql-yoga/dist next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: 16.0.1 + version: 16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) postcss: specifier: 8.5.6 version: 8.5.6 @@ -1111,11 +1111,11 @@ importers: specifier: workspace:* version: link:../../packages/graphql-yoga/dist next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: 16.0.1 + version: 16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) next-auth: specifier: 4.24.13 - version: 4.24.13(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 4.24.13(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react: specifier: 19.2.0 version: 19.2.0 @@ -1133,8 +1133,8 @@ importers: specifier: 9.39.0 version: 9.39.0(jiti@2.6.1) eslint-config-next: - specifier: 15.5.6 - version: 15.5.6(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 16.0.1 + version: 16.0.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -1151,8 +1151,8 @@ importers: specifier: workspace:* version: link:../../packages/graphql-yoga/dist next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: 16.0.1 + version: 16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react: specifier: 19.2.0 version: 19.2.0 @@ -1173,8 +1173,8 @@ importers: specifier: 9.39.0 version: 9.39.0(jiti@2.6.1) eslint-config-next: - specifier: 15.5.6 - version: 15.5.6(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 16.0.1 + version: 16.0.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -1194,8 +1194,8 @@ importers: specifier: workspace:* version: link:../../packages/graphql-yoga/dist next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: 16.0.1 + version: 16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react: specifier: 19.2.0 version: 19.2.0 @@ -1216,8 +1216,8 @@ importers: specifier: 9.39.0 version: 9.39.0(jiti@2.6.1) eslint-config-next: - specifier: 15.5.6 - version: 15.5.6(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 16.0.1 + version: 16.0.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -2249,16 +2249,16 @@ importers: dependencies: '@theguild/components': specifier: 9.11.1 - version: 9.11.1(@theguild/tailwind-config@0.6.4(postcss-import@16.1.1(postcss@8.5.6))(postcss-lightningcss@1.0.2(postcss@8.5.6))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1)))(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.0)) + version: 9.11.1(@theguild/tailwind-config@0.6.4(postcss-import@16.1.1(postcss@8.5.6))(postcss-lightningcss@1.0.2(postcss@8.5.6))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1)))(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.0)) fast-glob: specifier: ^3.3.2 version: 3.3.3 next: - specifier: 15.5.6 - version: 15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: 16.0.1 + version: 16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) next-sitemap: specifier: 4.2.3 - version: 4.2.3(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)) + version: 4.2.3(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)) react: specifier: 19.2.0 version: 19.2.0 @@ -2588,7 +2588,6 @@ packages: deprecated: |- AWS CDK v1 has reached End-of-Support on 2023-06-01. This package is no longer being updated, and users should migrate to AWS CDK v2. - For more information on how to migrate, see https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html peerDependencies: '@aws-cdk/aws-certificatemanager': 1.204.0 @@ -2865,7 +2864,6 @@ packages: deprecated: |- AWS CDK v1 has reached End-of-Support on 2023-06-01. This package is no longer being updated, and users should migrate to AWS CDK v2. - For more information on how to migrate, see https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html peerDependencies: '@aws-cdk/aws-applicationautoscaling': 1.204.0 @@ -3053,7 +3051,6 @@ packages: deprecated: |- AWS CDK v1 has reached End-of-Support on 2023-06-01. This package is no longer being updated, and users should migrate to AWS CDK v2. - For more information on how to migrate, see https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html peerDependencies: '@aws-cdk/cloud-assembly-schema': 1.204.0 @@ -6027,56 +6024,56 @@ packages: '@next/env@13.5.11': resolution: {integrity: sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==} - '@next/env@15.5.6': - resolution: {integrity: sha512-3qBGRW+sCGzgbpc5TS1a0p7eNxnOarGVQhZxfvTdnV0gFI61lX7QNtQ4V1TSREctXzYn5NetbUsLvyqwLFJM6Q==} + '@next/env@16.0.1': + resolution: {integrity: sha512-LFvlK0TG2L3fEOX77OC35KowL8D7DlFF45C0OvKMC4hy8c/md1RC4UMNDlUGJqfCoCS2VWrZ4dSE6OjaX5+8mw==} - '@next/eslint-plugin-next@15.5.6': - resolution: {integrity: sha512-YxDvsT2fwy1j5gMqk3ppXlsgDopHnkM4BoxSVASbvvgh5zgsK8lvWerDzPip8k3WVzsTZ1O7A7si1KNfN4OZfQ==} + '@next/eslint-plugin-next@16.0.1': + resolution: {integrity: sha512-g4Cqmv/gyFEXNeVB2HkqDlYKfy+YrlM2k8AVIO/YQVEPfhVruH1VA99uT1zELLnPLIeOnx8IZ6Ddso0asfTIdw==} - '@next/swc-darwin-arm64@15.5.6': - resolution: {integrity: sha512-ES3nRz7N+L5Umz4KoGfZ4XX6gwHplwPhioVRc25+QNsDa7RtUF/z8wJcbuQ2Tffm5RZwuN2A063eapoJ1u4nPg==} + '@next/swc-darwin-arm64@16.0.1': + resolution: {integrity: sha512-R0YxRp6/4W7yG1nKbfu41bp3d96a0EalonQXiMe+1H9GTHfKxGNCGFNWUho18avRBPsO8T3RmdWuzmfurlQPbg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.5.6': - resolution: {integrity: sha512-JIGcytAyk9LQp2/nuVZPAtj8uaJ/zZhsKOASTjxDug0SPU9LAM3wy6nPU735M1OqacR4U20LHVF5v5Wnl9ptTA==} + '@next/swc-darwin-x64@16.0.1': + resolution: {integrity: sha512-kETZBocRux3xITiZtOtVoVvXyQLB7VBxN7L6EPqgI5paZiUlnsgYv4q8diTNYeHmF9EiehydOBo20lTttCbHAg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.5.6': - resolution: {integrity: sha512-qvz4SVKQ0P3/Im9zcS2RmfFL/UCQnsJKJwQSkissbngnB/12c6bZTCB0gHTexz1s6d/mD0+egPKXAIRFVS7hQg==} + '@next/swc-linux-arm64-gnu@16.0.1': + resolution: {integrity: sha512-hWg3BtsxQuSKhfe0LunJoqxjO4NEpBmKkE+P2Sroos7yB//OOX3jD5ISP2wv8QdUwtRehMdwYz6VB50mY6hqAg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.5.6': - resolution: {integrity: sha512-FsbGVw3SJz1hZlvnWD+T6GFgV9/NYDeLTNQB2MXoPN5u9VA9OEDy6fJEfePfsUKAhJufFbZLgp0cPxMuV6SV0w==} + '@next/swc-linux-arm64-musl@16.0.1': + resolution: {integrity: sha512-UPnOvYg+fjAhP3b1iQStcYPWeBFRLrugEyK/lDKGk7kLNua8t5/DvDbAEFotfV1YfcOY6bru76qN9qnjLoyHCQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.5.6': - resolution: {integrity: sha512-3QnHGFWlnvAgyxFxt2Ny8PTpXtQD7kVEeaFat5oPAHHI192WKYB+VIKZijtHLGdBBvc16tiAkPTDmQNOQ0dyrA==} + '@next/swc-linux-x64-gnu@16.0.1': + resolution: {integrity: sha512-Et81SdWkcRqAJziIgFtsFyJizHoWne4fzJkvjd6V4wEkWTB4MX6J0uByUb0peiJQ4WeAt6GGmMszE5KrXK6WKg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.5.6': - resolution: {integrity: sha512-OsGX148sL+TqMK9YFaPFPoIaJKbFJJxFzkXZljIgA9hjMjdruKht6xDCEv1HLtlLNfkx3c5w2GLKhj7veBQizQ==} + '@next/swc-linux-x64-musl@16.0.1': + resolution: {integrity: sha512-qBbgYEBRrC1egcG03FZaVfVxrJm8wBl7vr8UFKplnxNRprctdP26xEv9nJ07Ggq4y1adwa0nz2mz83CELY7N6Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.5.6': - resolution: {integrity: sha512-ONOMrqWxdzXDJNh2n60H6gGyKed42Ieu6UTVPZteXpuKbLZTH4G4eBMsr5qWgOBA+s7F+uB4OJbZnrkEDnZ5Fg==} + '@next/swc-win32-arm64-msvc@16.0.1': + resolution: {integrity: sha512-cPuBjYP6I699/RdbHJonb3BiRNEDm5CKEBuJ6SD8k3oLam2fDRMKAvmrli4QMDgT2ixyRJ0+DTkiODbIQhRkeQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.5.6': - resolution: {integrity: sha512-pxK4VIjFRx1MY92UycLOOw7dTdvccWsNETQ0kDHkBlcFH1GrTLUjSiHU1ohrznnux6TqRHgv5oflhfIWZwVROQ==} + '@next/swc-win32-x64-msvc@16.0.1': + resolution: {integrity: sha512-XeEUJsE4JYtfrXe/LaJn3z1pD19fK0Q6Er8Qoufi+HqvdO4LEPyCxLUt4rxA+4RfYo6S9gMlmzCMU2F+AatFqQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -7214,9 +7211,6 @@ packages: '@rushstack/eslint-patch@1.11.0': resolution: {integrity: sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==} - '@rushstack/eslint-patch@1.14.1': - resolution: {integrity: sha512-jGTk8UD/RdjsNZW8qq10r0RBvxL8OWtoT+kImlzPDFilmozzM+9QmIJsmze9UiSBrFU45ZxhTYBypn9q9z/VfQ==} - '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -10476,10 +10470,10 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-config-next@15.5.6: - resolution: {integrity: sha512-cGr3VQlPsZBEv8rtYp4BpG1KNXDqGvPo9VC1iaCgIA11OfziC/vczng+TnAS3WpRIR3Q5ye/6yl+CRUuZ1fPGg==} + eslint-config-next@16.0.1: + resolution: {integrity: sha512-wNuHw5gNOxwLUvpg0cu6IL0crrVC9hAwdS/7UwleNkwyaMiWIOAwf8yzXVqBBzL3c9A7jVRngJxjoSpPP1aEhg==} peerDependencies: - eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 + eslint: '>=9.0.0' typescript: '>=3.3.1' peerDependenciesMeta: typescript: @@ -10633,6 +10627,12 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + eslint-plugin-react-hooks@7.0.1: + resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + eslint-plugin-react@7.37.4: resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==} engines: {node: '>=4'} @@ -11411,6 +11411,10 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -11660,6 +11664,12 @@ packages: help-me@5.0.0: resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -13722,9 +13732,9 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.5.6: - resolution: {integrity: sha512-zTxsnI3LQo3c9HSdSf91O1jMNsEzIXDShXd4wVdg9y5shwLqBXi4ZtUUJyB86KGVSJLZx0PFONvO54aheGX8QQ==} - engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + next@16.0.1: + resolution: {integrity: sha512-e9RLSssZwd35p7/vOa+hoDFggUZIUbZhIUSLZuETCwrCVvxOs87NamoUzT+vbcNAL8Ld9GobBnWOA6SbV/arOw==} + engines: {node: '>=20.9.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 @@ -16437,6 +16447,13 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + typescript-eslint@8.46.2: + resolution: {integrity: sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} @@ -21749,34 +21766,34 @@ snapshots: '@next/env@13.5.11': {} - '@next/env@15.5.6': {} + '@next/env@16.0.1': {} - '@next/eslint-plugin-next@15.5.6': + '@next/eslint-plugin-next@16.0.1': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.5.6': + '@next/swc-darwin-arm64@16.0.1': optional: true - '@next/swc-darwin-x64@15.5.6': + '@next/swc-darwin-x64@16.0.1': optional: true - '@next/swc-linux-arm64-gnu@15.5.6': + '@next/swc-linux-arm64-gnu@16.0.1': optional: true - '@next/swc-linux-arm64-musl@15.5.6': + '@next/swc-linux-arm64-musl@16.0.1': optional: true - '@next/swc-linux-x64-gnu@15.5.6': + '@next/swc-linux-x64-gnu@16.0.1': optional: true - '@next/swc-linux-x64-musl@15.5.6': + '@next/swc-linux-x64-musl@16.0.1': optional: true - '@next/swc-win32-arm64-msvc@15.5.6': + '@next/swc-win32-arm64-msvc@16.0.1': optional: true - '@next/swc-win32-x64-msvc@15.5.6': + '@next/swc-win32-x64-msvc@16.0.1': optional: true '@noble/hashes@1.8.0': {} @@ -23050,8 +23067,6 @@ snapshots: '@rushstack/eslint-patch@1.11.0': {} - '@rushstack/eslint-patch@1.14.1': {} - '@sec-ant/readable-stream@0.4.1': {} '@shikijs/core@1.29.2': @@ -23299,7 +23314,7 @@ snapshots: '@tanstack/virtual-core@3.13.12': {} - '@theguild/components@9.11.1(@theguild/tailwind-config@0.6.4(postcss-import@16.1.1(postcss@8.5.6))(postcss-lightningcss@1.0.2(postcss@8.5.6))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1)))(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.0))': + '@theguild/components@9.11.1(@theguild/tailwind-config@0.6.4(postcss-import@16.1.1(postcss@8.5.6))(postcss-lightningcss@1.0.2(postcss@8.5.6))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1)))(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.0))': dependencies: '@giscus/react': 3.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@next/bundle-analyzer': 15.1.5 @@ -23309,9 +23324,9 @@ snapshots: '@theguild/tailwind-config': 0.6.4(postcss-import@16.1.1(postcss@8.5.6))(postcss-lightningcss@1.0.2(postcss@8.5.6))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1)) clsx: 2.1.1 fuzzy: 0.1.3 - next: 15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - nextra: 4.0.5(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) - nextra-theme-docs: 4.0.5(@types/react@19.2.2)(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(nextra@4.0.5(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(use-sync-external-store@1.6.0(react@19.2.0)) + next: 16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + nextra: 4.0.5(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + nextra-theme-docs: 4.0.5(@types/react@19.2.2)(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(nextra@4.0.5(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(use-sync-external-store@1.6.0(react@19.2.0)) react: 19.2.0 react-dom: 19.2.0(react@19.2.0) react-paginate: 8.2.0(react@19.2.0) @@ -26947,22 +26962,22 @@ snapshots: eslint: 9.39.0(jiti@2.6.1) semver: 7.7.3 - eslint-config-next@15.5.6(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3): + eslint-config-next@16.0.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@next/eslint-plugin-next': 15.5.6 - '@rushstack/eslint-patch': 1.14.1 - '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@next/eslint-plugin-next': 16.0.1 eslint: 9.39.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.0(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.0(jiti@2.6.1)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.39.0(jiti@2.6.1)) + eslint-plugin-react-hooks: 7.0.1(eslint@9.39.0(jiti@2.6.1)) + globals: 16.4.0 + typescript-eslint: 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: + - '@typescript-eslint/parser' - eslint-import-resolver-webpack - eslint-plugin-import-x - supports-color @@ -26984,6 +26999,21 @@ snapshots: - supports-color eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3(supports-color@10.2.2) + eslint: 9.39.0(jiti@2.6.1) + get-tsconfig: 4.13.0 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.15 + unrs-resolver: 1.11.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1)) + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.0(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@10.2.2) @@ -26997,6 +27027,7 @@ snapshots: eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color + optional: true eslint-import-resolver-typescript@4.2.1(eslint-plugin-import@2.31.0)(eslint@9.39.0(jiti@2.6.1))(is-bun-module@2.0.0): dependencies: @@ -27049,6 +27080,17 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.0(jiti@2.6.1)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.0(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.0(jiti@2.6.1)) + transitivePeerDependencies: + - supports-color + eslint-plugin-es-x@7.8.0(eslint@9.39.0(jiti@2.6.1)): dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) @@ -27057,6 +27099,35 @@ snapshots: eslint-compat-utils: 0.5.1(eslint@9.39.0(jiti@2.6.1)) eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.39.0(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.0(jiti@2.6.1)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -27096,7 +27167,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -27113,6 +27184,7 @@ snapshots: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + optional: true eslint-plugin-jsonc@2.19.1(eslint@9.39.0(jiti@2.6.1)): dependencies: @@ -27185,6 +27257,17 @@ snapshots: dependencies: eslint: 9.39.0(jiti@2.6.1) + eslint-plugin-react-hooks@7.0.1(eslint@9.39.0(jiti@2.6.1)): + dependencies: + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 + eslint: 9.39.0(jiti@2.6.1) + hermes-parser: 0.25.1 + zod: 4.1.12 + zod-validation-error: 3.5.3(zod@4.1.12) + transitivePeerDependencies: + - supports-color + eslint-plugin-react@7.37.4(eslint@9.39.0(jiti@2.6.1)): dependencies: array-includes: 3.1.9 @@ -28244,6 +28327,8 @@ snapshots: globals@15.15.0: {} + globals@16.4.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -28644,6 +28729,12 @@ snapshots: help-me@5.0.0: {} + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + hosted-git-info@2.8.9: {} hosted-git-info@7.0.2: @@ -31379,13 +31470,13 @@ snapshots: netlify-redirector@0.5.0: {} - next-auth@4.24.13(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + next-auth@4.24.13(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: '@babel/runtime': 7.28.4 '@panva/hkdf': 1.2.1 cookie: 1.0.2 jose: 4.15.9 - next: 15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + next: 16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) oauth: 0.9.15 openid-client: 5.7.1 preact: 10.27.2 @@ -31394,22 +31485,22 @@ snapshots: react-dom: 19.2.0(react@19.2.0) uuid: 8.3.2 - next-sitemap@4.2.3(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)): + next-sitemap@4.2.3(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)): dependencies: '@corex/deepmerge': 4.0.43 '@next/env': 13.5.11 fast-glob: 3.3.3 minimist: 1.2.8 - next: 15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + next: 16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) next-themes@0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - '@next/env': 15.5.6 + '@next/env': 16.0.1 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001751 postcss: 8.4.31 @@ -31417,14 +31508,14 @@ snapshots: react-dom: 19.2.0(react@19.2.0) styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.6 - '@next/swc-darwin-x64': 15.5.6 - '@next/swc-linux-arm64-gnu': 15.5.6 - '@next/swc-linux-arm64-musl': 15.5.6 - '@next/swc-linux-x64-gnu': 15.5.6 - '@next/swc-linux-x64-musl': 15.5.6 - '@next/swc-win32-arm64-msvc': 15.5.6 - '@next/swc-win32-x64-msvc': 15.5.6 + '@next/swc-darwin-arm64': 16.0.1 + '@next/swc-darwin-x64': 16.0.1 + '@next/swc-linux-arm64-gnu': 16.0.1 + '@next/swc-linux-arm64-musl': 16.0.1 + '@next/swc-linux-x64-gnu': 16.0.1 + '@next/swc-linux-x64-musl': 16.0.1 + '@next/swc-win32-arm64-msvc': 16.0.1 + '@next/swc-win32-x64-msvc': 16.0.1 '@opentelemetry/api': 1.9.0 '@playwright/test': 1.56.1 sharp: 0.34.4 @@ -31432,13 +31523,13 @@ snapshots: - '@babel/core' - babel-plugin-macros - nextra-theme-docs@4.0.5(@types/react@19.2.2)(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(nextra@4.0.5(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(use-sync-external-store@1.6.0(react@19.2.0)): + nextra-theme-docs@4.0.5(@types/react@19.2.2)(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(nextra@4.0.5(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(use-sync-external-store@1.6.0(react@19.2.0)): dependencies: '@headlessui/react': 2.2.9(react-dom@19.2.0(react@19.2.0))(react@19.2.0) clsx: 2.1.1 - next: 15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + next: 16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) next-themes: 0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - nextra: 4.0.5(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + nextra: 4.0.5(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) react: 19.2.0 react-compiler-runtime: 0.0.0-experimental-22c6e49-20241219(react@19.2.0) react-dom: 19.2.0(react@19.2.0) @@ -31451,7 +31542,7 @@ snapshots: - immer - use-sync-external-store - nextra@4.0.5(next@15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3): + nextra@4.0.5(next@16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3): dependencies: '@formatjs/intl-localematcher': 0.5.10 '@headlessui/react': 2.2.9(react-dom@19.2.0(react@19.2.0))(react@19.2.0) @@ -31472,7 +31563,7 @@ snapshots: mdast-util-gfm: 3.1.0 mdast-util-to-hast: 13.2.0 negotiator: 1.0.0 - next: 15.5.6(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + next: 16.0.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react: 19.2.0 react-compiler-runtime: 0.0.0-experimental-22c6e49-20241219(react@19.2.0) react-dom: 19.2.0(react@19.2.0) @@ -34667,6 +34758,17 @@ snapshots: typedarray@0.0.6: {} + typescript-eslint@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.46.2(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.0(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + typescript@5.8.3: {} typescript@5.9.3: {} @@ -35602,6 +35704,10 @@ snapshots: dependencies: zod: 3.25.76 + zod-validation-error@3.5.3(zod@4.1.12): + dependencies: + zod: 4.1.12 + zod@3.22.3: {} zod@3.25.76: {} diff --git a/website/next-env.d.ts b/website/next-env.d.ts index 830fb594ca..1511519d38 100644 --- a/website/next-env.d.ts +++ b/website/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -/// +import './.next/types/routes.d.ts'; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/website/next.config.ts b/website/next.config.ts index 4c196ec4be..7fe34b4bcf 100644 --- a/website/next.config.ts +++ b/website/next.config.ts @@ -1,41 +1,41 @@ +import type { NextConfig } from 'next'; import { withGuildDocs } from '@theguild/components/next.config'; -const config = withGuildDocs({ - redirects: async () => - Object.entries({ - '/docs/quick-start': '/docs', - '/tutorial': '/tutorial/basic', - '/tutorial/basic/00-introduction': '/tutorial/basic', - '/docs/testing': '/docs/features/testing', - '/docs/integrations': '/docs', - '/docs/features': '/docs', - '/v2/features/health-check': '/v2', - '/v2/features/defer-stream': '/v2', - '/v2/features/automatic-persisted-queries': '/v2', - '/v2/features/response-caching': '/v2', - '/v2/features/introspection': '/v2', - '/v2/features/persisted-operations': '/v2', - '/features/graphiql': '/docs/features/graphiql', - '/examples/graphql-ws': '/docs/features/subscriptions', - '/changelog': '/changelogs/graphql-yoga', - }).map(([from, to]) => ({ - source: from, - destination: to, - permanent: true, - })), - eslint: { - ignoreDuringBuilds: true, - }, - env: { - SITE_URL: 'https://the-guild.dev/graphql/yoga-server', - }, - output: 'export', -}); +let config: NextConfig; -if (config.experimental?.turbo) { - // TODO: Migrate this in @theguild/components - config.turbopack = config.experimental!.turbo; - delete config.experimental!.turbo; +try { + config = withGuildDocs({ + redirects: async () => + Object.entries({ + '/docs/quick-start': '/docs', + '/tutorial': '/tutorial/basic', + '/tutorial/basic/00-introduction': '/tutorial/basic', + '/docs/testing': '/docs/features/testing', + '/docs/integrations': '/docs', + '/docs/features': '/docs', + '/v2/features/health-check': '/v2', + '/v2/features/defer-stream': '/v2', + '/v2/features/automatic-persisted-queries': '/v2', + '/v2/features/response-caching': '/v2', + '/v2/features/introspection': '/v2', + '/v2/features/persisted-operations': '/v2', + '/features/graphiql': '/docs/features/graphiql', + '/examples/graphql-ws': '/docs/features/subscriptions', + '/changelog': '/changelogs/graphql-yoga', + }).map(([from, to]) => ({ + source: from, + destination: to, + permanent: true, + })), + env: { + SITE_URL: 'https://the-guild.dev/graphql/yoga-server', + }, + output: 'export', + }); +} catch (e) { + // eslint-disable-next-line no-console + console.error('Error configuring Next.js:', e); + process.exit(1); } export default config; diff --git a/website/package.json b/website/package.json index 96b50c1ce6..b163b4f63f 100644 --- a/website/package.json +++ b/website/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "analyze": "cross-env ANALYZE=true next build", - "build": "next build", + "build": "next build --webpack", "check": "exit 0", "dev": "next --turbopack", "pagefind": "pagefind --site .next/server/app --output-path out/_pagefind", @@ -16,7 +16,7 @@ "dependencies": { "@theguild/components": "9.11.1", "fast-glob": "^3.3.2", - "next": "15.5.6", + "next": "16.0.1", "next-sitemap": "4.2.3", "react": "19.2.0", "react-dom": "19.2.0", diff --git a/website/tsconfig.json b/website/tsconfig.json index d502339ce0..017c6deb81 100644 --- a/website/tsconfig.json +++ b/website/tsconfig.json @@ -12,7 +12,7 @@ "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve", + "jsx": "react-jsx", "incremental": true, "plugins": [ { @@ -20,6 +20,12 @@ } ] }, - "include": ["**/*.ts", "**/*.tsx", "next-env.d.ts", ".next/types/**/*.ts"], + "include": [ + "**/*.ts", + "**/*.tsx", + "next-env.d.ts", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" + ], "exclude": ["node_modules"] }