feat: support next.js 15.4.4 (#13280)

- bumps next.js from 15.3.2 to 15.4.4 in monorepo and templates. It's
important to run our tests against the latest Next.js version to
guarantee full compatibility.
- bumps playwright because of peer dependency conflict with next 15.4.4
- bumps react types because why not

https://nextjs.org/blog/next-15-4

As part of this upgrade, the functionality added by
https://github.com/payloadcms/payload/pull/11658 broke. This PR fixes it
by creating a wrapper around `React.isValidElemen`t that works for
Next.js 15.4.

---
- To see the specific tasks where the Asana app for GitHub is being
used, see below:
  - https://app.asana.com/0/0/1210803039809808
This commit is contained in:
Alessio Gravili
2025-07-28 09:23:43 -07:00
committed by GitHub
parent b1aac19668
commit 5c94d2dc71
38 changed files with 749 additions and 652 deletions

View File

@@ -132,12 +132,12 @@
"devDependencies": { "devDependencies": {
"@jest/globals": "29.7.0", "@jest/globals": "29.7.0",
"@libsql/client": "0.14.0", "@libsql/client": "0.14.0",
"@next/bundle-analyzer": "15.3.2", "@next/bundle-analyzer": "15.4.4",
"@payloadcms/db-postgres": "workspace:*", "@payloadcms/db-postgres": "workspace:*",
"@payloadcms/eslint-config": "workspace:*", "@payloadcms/eslint-config": "workspace:*",
"@payloadcms/eslint-plugin": "workspace:*", "@payloadcms/eslint-plugin": "workspace:*",
"@payloadcms/live-preview-react": "workspace:*", "@payloadcms/live-preview-react": "workspace:*",
"@playwright/test": "1.50.0", "@playwright/test": "1.54.1",
"@sentry/nextjs": "^8.33.1", "@sentry/nextjs": "^8.33.1",
"@sentry/node": "^8.33.1", "@sentry/node": "^8.33.1",
"@swc-node/register": "1.10.10", "@swc-node/register": "1.10.10",
@@ -147,8 +147,8 @@
"@types/jest": "29.5.12", "@types/jest": "29.5.12",
"@types/minimist": "1.2.5", "@types/minimist": "1.2.5",
"@types/node": "22.15.30", "@types/node": "22.15.30",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"@types/shelljs": "0.8.15", "@types/shelljs": "0.8.15",
"chalk": "^4.1.2", "chalk": "^4.1.2",
"comment-json": "^4.2.3", "comment-json": "^4.2.3",
@@ -168,12 +168,12 @@
"lint-staged": "15.2.7", "lint-staged": "15.2.7",
"minimist": "1.2.8", "minimist": "1.2.8",
"mongodb-memory-server": "10.1.4", "mongodb-memory-server": "10.1.4",
"next": "15.3.2", "next": "15.4.4",
"open": "^10.1.0", "open": "^10.1.0",
"p-limit": "^5.0.0", "p-limit": "^5.0.0",
"pg": "8.16.3", "pg": "8.16.3",
"playwright": "1.50.0", "playwright": "1.54.1",
"playwright-core": "1.50.0", "playwright-core": "1.54.1",
"prettier": "3.5.3", "prettier": "3.5.3",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",

View File

@@ -42,8 +42,8 @@
}, },
"devDependencies": { "devDependencies": {
"@payloadcms/eslint-config": "workspace:*", "@payloadcms/eslint-config": "workspace:*",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"payload": "workspace:*" "payload": "workspace:*"
}, },
"peerDependencies": { "peerDependencies": {

View File

@@ -46,8 +46,8 @@
}, },
"devDependencies": { "devDependencies": {
"@payloadcms/eslint-config": "workspace:*", "@payloadcms/eslint-config": "workspace:*",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"payload": "workspace:*" "payload": "workspace:*"
}, },
"peerDependencies": { "peerDependencies": {

View File

@@ -117,11 +117,11 @@
"@babel/preset-env": "7.27.2", "@babel/preset-env": "7.27.2",
"@babel/preset-react": "7.27.1", "@babel/preset-react": "7.27.1",
"@babel/preset-typescript": "7.27.1", "@babel/preset-typescript": "7.27.1",
"@next/eslint-plugin-next": "15.3.2", "@next/eslint-plugin-next": "15.4.4",
"@payloadcms/eslint-config": "workspace:*", "@payloadcms/eslint-config": "workspace:*",
"@types/busboy": "1.5.4", "@types/busboy": "1.5.4",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"@types/uuid": "10.0.0", "@types/uuid": "10.0.0",
"babel-plugin-react-compiler": "19.1.0-rc.2", "babel-plugin-react-compiler": "19.1.0-rc.2",
"esbuild": "0.25.5", "esbuild": "0.25.5",

View File

@@ -65,8 +65,8 @@
}, },
"devDependencies": { "devDependencies": {
"@types/find-node-modules": "^2.1.2", "@types/find-node-modules": "^2.1.2",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"payload": "workspace:*" "payload": "workspace:*"
}, },
"peerDependencies": { "peerDependencies": {

View File

@@ -68,8 +68,8 @@
"devDependencies": { "devDependencies": {
"@payloadcms/eslint-config": "workspace:*", "@payloadcms/eslint-config": "workspace:*",
"@types/escape-html": "^1.0.4", "@types/escape-html": "^1.0.4",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"copyfiles": "^2.4.1", "copyfiles": "^2.4.1",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"payload": "workspace:*" "payload": "workspace:*"

View File

@@ -65,8 +65,8 @@
}, },
"devDependencies": { "devDependencies": {
"@payloadcms/eslint-config": "workspace:*", "@payloadcms/eslint-config": "workspace:*",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"payload": "workspace:*" "payload": "workspace:*"
}, },
"peerDependencies": { "peerDependencies": {

View File

@@ -59,8 +59,8 @@
}, },
"devDependencies": { "devDependencies": {
"@payloadcms/eslint-config": "workspace:*", "@payloadcms/eslint-config": "workspace:*",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"payload": "workspace:*" "payload": "workspace:*"
}, },
"peerDependencies": { "peerDependencies": {

View File

@@ -74,8 +74,8 @@
"devDependencies": { "devDependencies": {
"@payloadcms/eslint-config": "workspace:*", "@payloadcms/eslint-config": "workspace:*",
"@payloadcms/next": "workspace:*", "@payloadcms/next": "workspace:*",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"payload": "workspace:*" "payload": "workspace:*"
}, },
"peerDependencies": { "peerDependencies": {

View File

@@ -72,8 +72,8 @@
"@payloadcms/eslint-config": "workspace:*", "@payloadcms/eslint-config": "workspace:*",
"@payloadcms/next": "workspace:*", "@payloadcms/next": "workspace:*",
"@types/lodash.get": "^4.4.7", "@types/lodash.get": "^4.4.7",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"@types/uuid": "10.0.0", "@types/uuid": "10.0.0",
"payload": "workspace:*" "payload": "workspace:*"
}, },

View File

@@ -399,8 +399,8 @@
"@types/escape-html": "1.0.4", "@types/escape-html": "1.0.4",
"@types/json-schema": "7.0.15", "@types/json-schema": "7.0.15",
"@types/node": "22.15.30", "@types/node": "22.15.30",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"babel-plugin-react-compiler": "19.1.0-rc.2", "babel-plugin-react-compiler": "19.1.0-rc.2",
"babel-plugin-transform-remove-imports": "^1.8.0", "babel-plugin-transform-remove-imports": "^1.8.0",
"esbuild": "0.25.5", "esbuild": "0.25.5",

View File

@@ -67,8 +67,8 @@
"@payloadcms/eslint-config": "workspace:*", "@payloadcms/eslint-config": "workspace:*",
"@types/is-hotkey": "^0.1.10", "@types/is-hotkey": "^0.1.10",
"@types/node": "22.15.30", "@types/node": "22.15.30",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"payload": "workspace:*" "payload": "workspace:*"
}, },
"peerDependencies": { "peerDependencies": {

View File

@@ -60,8 +60,8 @@
"devDependencies": { "devDependencies": {
"@payloadcms/eslint-config": "workspace:*", "@payloadcms/eslint-config": "workspace:*",
"@swc/core": "1.11.29", "@swc/core": "1.11.29",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"dotenv": "16.4.7", "dotenv": "16.4.7",
"prettier": "3.5.3", "prettier": "3.5.3",
"typescript": "5.7.3" "typescript": "5.7.3"

View File

@@ -168,8 +168,8 @@
"@babel/preset-typescript": "7.27.1", "@babel/preset-typescript": "7.27.1",
"@hyrious/esbuild-plugin-commonjs": "0.2.6", "@hyrious/esbuild-plugin-commonjs": "0.2.6",
"@payloadcms/eslint-config": "workspace:*", "@payloadcms/eslint-config": "workspace:*",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"@types/uuid": "10.0.0", "@types/uuid": "10.0.0",
"babel-plugin-react-compiler": "19.1.0-rc.2", "babel-plugin-react-compiler": "19.1.0-rc.2",
"esbuild": "0.25.5", "esbuild": "0.25.5",

View File

@@ -9,6 +9,7 @@ import { useConfig } from '../../../providers/Config/index.js'
import { useTranslation } from '../../../providers/Translation/index.js' import { useTranslation } from '../../../providers/Translation/index.js'
import { formatAdminURL } from '../../../utilities/formatAdminURL.js' import { formatAdminURL } from '../../../utilities/formatAdminURL.js'
import { getDisplayedFieldValue } from '../../../utilities/getDisplayedFieldValue.js' import { getDisplayedFieldValue } from '../../../utilities/getDisplayedFieldValue.js'
import { isValidReactElement } from '../../../utilities/isValidReactElement.js'
import { Link } from '../../Link/index.js' import { Link } from '../../Link/index.js'
import { CodeCell } from './fields/Code/index.js' import { CodeCell } from './fields/Code/index.js'
import { cellComponents } from './fields/index.js' import { cellComponents } from './fields/index.js'
@@ -107,7 +108,7 @@ export const DefaultCell: React.FC<DefaultCellComponentProps> = (props) => {
let CellComponent: React.ReactNode = null let CellComponent: React.ReactNode = null
// Handle JSX labels before using DefaultCellComponent // Handle JSX labels before using DefaultCellComponent
if (React.isValidElement(displayedValue)) { if (isValidReactElement(displayedValue)) {
CellComponent = displayedValue CellComponent = displayedValue
} else if (DefaultCellComponent) { } else if (DefaultCellComponent) {
CellComponent = <DefaultCellComponent cellData={cellData} rowData={rowData} {...props} /> CellComponent = <DefaultCellComponent cellData={cellData} rowData={rowData} {...props} />

View File

@@ -2,7 +2,8 @@ import type { I18nClient } from '@payloadcms/translations'
import type { ClientField } from 'payload' import type { ClientField } from 'payload'
import { getTranslation } from '@payloadcms/translations' import { getTranslation } from '@payloadcms/translations'
import React from 'react'
import { isValidReactElement } from './isValidReactElement.js'
/** /**
* Returns the appropriate display value for a field. * Returns the appropriate display value for a field.
@@ -21,7 +22,7 @@ export const getDisplayedFieldValue = (cellData: any, field: ClientField, i18n:
if (selectedOption) { if (selectedOption) {
if (typeof selectedOption === 'object' && 'label' in selectedOption) { if (typeof selectedOption === 'object' && 'label' in selectedOption) {
return React.isValidElement(selectedOption.label) return isValidReactElement(selectedOption.label)
? selectedOption.label // Return JSX directly ? selectedOption.label // Return JSX directly
: getTranslation(selectedOption.label, i18n) || selectedOption.value // Use translation or fallback to value : getTranslation(selectedOption.label, i18n) || selectedOption.value // Use translation or fallback to value
} }

View File

@@ -1,6 +1,6 @@
import type { DefaultCellComponentProps } from 'payload' import type { DefaultCellComponentProps } from 'payload'
import React from 'react' import { isValidReactElement } from './isValidReactElement.js'
export const hasOptionLabelJSXElement = (cellClientProps: DefaultCellComponentProps) => { export const hasOptionLabelJSXElement = (cellClientProps: DefaultCellComponentProps) => {
const { cellData, field } = cellClientProps const { cellData, field } = cellClientProps
@@ -13,7 +13,7 @@ export const hasOptionLabelJSXElement = (cellClientProps: DefaultCellComponentPr
if ( if (
matchingOption && matchingOption &&
typeof matchingOption === 'object' && typeof matchingOption === 'object' &&
React.isValidElement(matchingOption.label) isValidReactElement(matchingOption.label)
) { ) {
return true return true
} }

View File

@@ -0,0 +1,11 @@
import React, { type ReactElement } from 'react'
const LazyReactComponentSymbol = Symbol.for('react.lazy')
/**
* Since Next.js 15.4, `React.isValidElement()` returns `false` for components that cross the server-client boundary.
* This utility expands on that check so that it returns true for valid React elements.
*/
export function isValidReactElement<P>(object: {} | null | undefined): object is ReactElement<P> {
return React.isValidElement(object) || object?.['$$typeof'] === LazyReactComponentSymbol
}

1158
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -25,7 +25,7 @@
"@payloadcms/ui": "latest", "@payloadcms/ui": "latest",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"graphql": "^16.8.1", "graphql": "^16.8.1",
"next": "15.3.0", "next": "15.4.4",
"payload": "latest", "payload": "latest",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
@@ -33,17 +33,17 @@
}, },
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3.2.0", "@eslint/eslintrc": "^3.2.0",
"@playwright/test": "1.50.0", "@playwright/test": "1.54.1",
"@testing-library/react": "16.3.0", "@testing-library/react": "16.3.0",
"@types/node": "^22.5.4", "@types/node": "^22.5.4",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"@vitejs/plugin-react": "4.5.2", "@vitejs/plugin-react": "4.5.2",
"eslint": "^9.16.0", "eslint": "^9.16.0",
"eslint-config-next": "15.3.0", "eslint-config-next": "15.4.4",
"jsdom": "26.1.0", "jsdom": "26.1.0",
"playwright": "1.50.0", "playwright": "1.54.1",
"playwright-core": "1.50.0", "playwright-core": "1.54.1",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"typescript": "5.7.3", "typescript": "5.7.3",
"vite-tsconfig-paths": "5.1.4", "vite-tsconfig-paths": "5.1.4",

View File

@@ -26,23 +26,23 @@
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"dotenv": "16.4.7", "dotenv": "16.4.7",
"graphql": "^16.8.1", "graphql": "^16.8.1",
"next": "15.3.2", "next": "15.4.4",
"payload": "workspace:*", "payload": "workspace:*",
"react": "19.1.0", "react": "19.1.0",
"sharp": "0.34.2" "sharp": "0.34.2"
}, },
"devDependencies": { "devDependencies": {
"@playwright/test": "1.50.0", "@playwright/test": "1.54.1",
"@testing-library/react": "16.3.0", "@testing-library/react": "16.3.0",
"@types/node": "^22.5.4", "@types/node": "^22.5.4",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"@vitejs/plugin-react": "4.5.2", "@vitejs/plugin-react": "4.5.2",
"eslint": "^9.16.0", "eslint": "^9.16.0",
"eslint-config-next": "15.3.0", "eslint-config-next": "15.4.4",
"jsdom": "26.1.0", "jsdom": "26.1.0",
"playwright": "1.50.0", "playwright": "1.54.1",
"playwright-core": "1.50.0", "playwright-core": "1.54.1",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"typescript": "5.7.3", "typescript": "5.7.3",
"vite-tsconfig-paths": "5.1.4", "vite-tsconfig-paths": "5.1.4",

View File

@@ -58,15 +58,15 @@
"@swc-node/register": "1.10.9", "@swc-node/register": "1.10.9",
"@swc/cli": "0.6.0", "@swc/cli": "0.6.0",
"@types/node": "^22.5.4", "@types/node": "^22.5.4",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"copyfiles": "2.4.1", "copyfiles": "2.4.1",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"eslint": "^9.23.0", "eslint": "^9.23.0",
"eslint-config-next": "15.3.0", "eslint-config-next": "15.4.4",
"graphql": "^16.8.1", "graphql": "^16.8.1",
"mongodb-memory-server": "10.1.4", "mongodb-memory-server": "10.1.4",
"next": "15.3.0", "next": "15.4.4",
"open": "^10.1.0", "open": "^10.1.0",
"payload": "3.37.0", "payload": "3.37.0",
"prettier": "^3.4.2", "prettier": "^3.4.2",

View File

@@ -45,7 +45,7 @@
"geist": "^1.3.0", "geist": "^1.3.0",
"graphql": "^16.8.2", "graphql": "^16.8.2",
"lucide-react": "^0.378.0", "lucide-react": "^0.378.0",
"next": "15.3.3", "next": "15.4.4",
"next-sitemap": "^4.2.3", "next-sitemap": "^4.2.3",
"payload": "workspace:*", "payload": "workspace:*",
"prism-react-renderer": "^2.3.1", "prism-react-renderer": "^2.3.1",
@@ -58,21 +58,21 @@
}, },
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3.2.0", "@eslint/eslintrc": "^3.2.0",
"@playwright/test": "1.50.0", "@playwright/test": "1.54.1",
"@tailwindcss/typography": "^0.5.13", "@tailwindcss/typography": "^0.5.13",
"@testing-library/react": "16.3.0", "@testing-library/react": "16.3.0",
"@types/escape-html": "^1.0.2", "@types/escape-html": "^1.0.2",
"@types/node": "22.5.4", "@types/node": "22.5.4",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"@vitejs/plugin-react": "4.5.2", "@vitejs/plugin-react": "4.5.2",
"autoprefixer": "^10.4.19", "autoprefixer": "^10.4.19",
"copyfiles": "^2.4.1", "copyfiles": "^2.4.1",
"eslint": "^9.16.0", "eslint": "^9.16.0",
"eslint-config-next": "15.3.0", "eslint-config-next": "15.4.4",
"jsdom": "26.1.0", "jsdom": "26.1.0",
"playwright": "1.50.0", "playwright": "1.54.1",
"playwright-core": "1.50.0", "playwright-core": "1.54.1",
"postcss": "^8.4.38", "postcss": "^8.4.38",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"tailwindcss": "^3.4.3", "tailwindcss": "^3.4.3",

View File

@@ -21,7 +21,7 @@
"@payloadcms/richtext-lexical": "3.29.0", "@payloadcms/richtext-lexical": "3.29.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"graphql": "^16.8.1", "graphql": "^16.8.1",
"next": "15.3.0", "next": "15.4.4",
"payload": "3.29.0", "payload": "3.29.0",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
@@ -30,10 +30,10 @@
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3.2.0", "@eslint/eslintrc": "^3.2.0",
"@types/node": "^22.5.4", "@types/node": "^22.5.4",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"eslint": "^9.16.0", "eslint": "^9.16.0",
"eslint-config-next": "15.3.0", "eslint-config-next": "15.4.4",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"typescript": "5.7.3" "typescript": "5.7.3"
}, },

View File

@@ -26,7 +26,7 @@
"@payloadcms/ui": "3.49.0", "@payloadcms/ui": "3.49.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"graphql": "^16.8.1", "graphql": "^16.8.1",
"next": "15.3.0", "next": "15.4.4",
"payload": "3.49.0", "payload": "3.49.0",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
@@ -34,17 +34,17 @@
}, },
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3.2.0", "@eslint/eslintrc": "^3.2.0",
"@playwright/test": "1.50.0", "@playwright/test": "1.54.1",
"@testing-library/react": "16.3.0", "@testing-library/react": "16.3.0",
"@types/node": "^22.5.4", "@types/node": "^22.5.4",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"@vitejs/plugin-react": "4.5.2", "@vitejs/plugin-react": "4.5.2",
"eslint": "^9.16.0", "eslint": "^9.16.0",
"eslint-config-next": "15.3.0", "eslint-config-next": "15.4.4",
"jsdom": "26.1.0", "jsdom": "26.1.0",
"playwright": "1.50.0", "playwright": "1.54.1",
"playwright-core": "1.50.0", "playwright-core": "1.54.1",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"typescript": "5.7.3", "typescript": "5.7.3",
"vite-tsconfig-paths": "5.1.4", "vite-tsconfig-paths": "5.1.4",

View File

@@ -1,5 +1,5 @@
{ {
"id": "7583c049-a5c2-4877-81c1-66f6e8696c22", "id": "a01f43fe-f9ef-41b2-9ef2-ee199fdbf09e",
"prevId": "00000000-0000-0000-0000-000000000000", "prevId": "00000000-0000-0000-0000-000000000000",
"version": "7", "version": "7",
"dialect": "postgresql", "dialect": "postgresql",

View File

@@ -1,9 +1,9 @@
import * as migration_20250725_134307_initial from './20250725_134307_initial' import * as migration_20250726_113920_initial from './20250726_113920_initial'
export const migrations = [ export const migrations = [
{ {
up: migration_20250725_134307_initial.up, up: migration_20250726_113920_initial.up,
down: migration_20250725_134307_initial.down, down: migration_20250726_113920_initial.down,
name: '20250725_134307_initial', name: '20250726_113920_initial',
}, },
] ]

View File

@@ -26,24 +26,24 @@
"@payloadcms/ui": "3.49.0", "@payloadcms/ui": "3.49.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"graphql": "^16.8.1", "graphql": "^16.8.1",
"next": "15.3.0", "next": "15.4.4",
"payload": "3.49.0", "payload": "3.49.0",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0" "react-dom": "19.1.0"
}, },
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3.2.0", "@eslint/eslintrc": "^3.2.0",
"@playwright/test": "1.50.0", "@playwright/test": "1.54.1",
"@testing-library/react": "16.3.0", "@testing-library/react": "16.3.0",
"@types/node": "^22.5.4", "@types/node": "^22.5.4",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"@vitejs/plugin-react": "4.5.2", "@vitejs/plugin-react": "4.5.2",
"eslint": "^9.16.0", "eslint": "^9.16.0",
"eslint-config-next": "15.3.0", "eslint-config-next": "15.4.4",
"jsdom": "26.1.0", "jsdom": "26.1.0",
"playwright": "1.50.0", "playwright": "1.54.1",
"playwright-core": "1.50.0", "playwright-core": "1.54.1",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"typescript": "5.7.3", "typescript": "5.7.3",
"vite-tsconfig-paths": "5.1.4", "vite-tsconfig-paths": "5.1.4",

View File

@@ -27,24 +27,24 @@
"@payloadcms/ui": "3.49.0", "@payloadcms/ui": "3.49.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"graphql": "^16.8.1", "graphql": "^16.8.1",
"next": "15.3.0", "next": "15.4.4",
"payload": "3.49.0", "payload": "3.49.0",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0" "react-dom": "19.1.0"
}, },
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3.2.0", "@eslint/eslintrc": "^3.2.0",
"@playwright/test": "1.50.0", "@playwright/test": "1.54.1",
"@testing-library/react": "16.3.0", "@testing-library/react": "16.3.0",
"@types/node": "^22.5.4", "@types/node": "^22.5.4",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"@vitejs/plugin-react": "4.5.2", "@vitejs/plugin-react": "4.5.2",
"eslint": "^9.16.0", "eslint": "^9.16.0",
"eslint-config-next": "15.3.0", "eslint-config-next": "15.4.4",
"jsdom": "26.1.0", "jsdom": "26.1.0",
"playwright": "1.50.0", "playwright": "1.54.1",
"playwright-core": "1.50.0", "playwright-core": "1.54.1",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"typescript": "5.7.3", "typescript": "5.7.3",
"vite-tsconfig-paths": "5.1.4", "vite-tsconfig-paths": "5.1.4",

View File

@@ -1,5 +1,5 @@
{ {
"id": "75b28347-5cb4-4352-b24d-327df8ef5556", "id": "1da33d28-30b0-4553-8961-ddbbf2a3caa0",
"prevId": "00000000-0000-0000-0000-000000000000", "prevId": "00000000-0000-0000-0000-000000000000",
"version": "7", "version": "7",
"dialect": "postgresql", "dialect": "postgresql",

View File

@@ -1,9 +1,9 @@
import * as migration_20250725_134227_initial from './20250725_134227_initial' import * as migration_20250726_113907_initial from './20250726_113907_initial'
export const migrations = [ export const migrations = [
{ {
up: migration_20250725_134227_initial.up, up: migration_20250726_113907_initial.up,
down: migration_20250725_134227_initial.down, down: migration_20250726_113907_initial.down,
name: '20250725_134227_initial', name: '20250726_113907_initial',
}, },
] ]

View File

@@ -47,7 +47,7 @@
"geist": "^1.3.0", "geist": "^1.3.0",
"graphql": "^16.8.2", "graphql": "^16.8.2",
"lucide-react": "^0.378.0", "lucide-react": "^0.378.0",
"next": "15.3.3", "next": "15.4.4",
"next-sitemap": "^4.2.3", "next-sitemap": "^4.2.3",
"payload": "3.49.0", "payload": "3.49.0",
"prism-react-renderer": "^2.3.1", "prism-react-renderer": "^2.3.1",
@@ -60,21 +60,21 @@
}, },
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3.2.0", "@eslint/eslintrc": "^3.2.0",
"@playwright/test": "1.50.0", "@playwright/test": "1.54.1",
"@tailwindcss/typography": "^0.5.13", "@tailwindcss/typography": "^0.5.13",
"@testing-library/react": "16.3.0", "@testing-library/react": "16.3.0",
"@types/escape-html": "^1.0.2", "@types/escape-html": "^1.0.2",
"@types/node": "22.5.4", "@types/node": "22.5.4",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"@vitejs/plugin-react": "4.5.2", "@vitejs/plugin-react": "4.5.2",
"autoprefixer": "^10.4.19", "autoprefixer": "^10.4.19",
"copyfiles": "^2.4.1", "copyfiles": "^2.4.1",
"eslint": "^9.16.0", "eslint": "^9.16.0",
"eslint-config-next": "15.3.0", "eslint-config-next": "15.4.4",
"jsdom": "26.1.0", "jsdom": "26.1.0",
"playwright": "1.50.0", "playwright": "1.54.1",
"playwright-core": "1.50.0", "playwright-core": "1.54.1",
"postcss": "^8.4.38", "postcss": "^8.4.38",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"tailwindcss": "^3.4.3", "tailwindcss": "^3.4.3",

View File

@@ -1,5 +1,5 @@
{ {
"id": "0370c4a3-8b57-4d3e-92a9-e639ffff46cf", "id": "0cdb510f-c7c6-45da-8202-ffed100b9cbb",
"prevId": "00000000-0000-0000-0000-000000000000", "prevId": "00000000-0000-0000-0000-000000000000",
"version": "7", "version": "7",
"dialect": "postgresql", "dialect": "postgresql",

View File

@@ -1,9 +1,9 @@
import * as migration_20250725_134247_initial from './20250725_134247_initial' import * as migration_20250726_113914_initial from './20250726_113914_initial'
export const migrations = [ export const migrations = [
{ {
up: migration_20250725_134247_initial.up, up: migration_20250726_113914_initial.up,
down: migration_20250725_134247_initial.down, down: migration_20250726_113914_initial.down,
name: '20250725_134247_initial', name: '20250726_113914_initial',
}, },
] ]

View File

@@ -25,7 +25,7 @@
"@aws-sdk/client-s3": "^3.614.0", "@aws-sdk/client-s3": "^3.614.0",
"@azure/storage-blob": "^12.11.0", "@azure/storage-blob": "^12.11.0",
"@date-fns/tz": "1.2.0", "@date-fns/tz": "1.2.0",
"@next/env": "15.3.2", "@next/env": "15.4.4",
"@payloadcms/admin-bar": "workspace:*", "@payloadcms/admin-bar": "workspace:*",
"@payloadcms/db-mongodb": "workspace:*", "@payloadcms/db-mongodb": "workspace:*",
"@payloadcms/db-postgres": "workspace:*", "@payloadcms/db-postgres": "workspace:*",
@@ -63,8 +63,8 @@
"@sentry/nextjs": "^8.33.1", "@sentry/nextjs": "^8.33.1",
"@sentry/react": "^7.77.0", "@sentry/react": "^7.77.0",
"@types/jest": "29.5.12", "@types/jest": "29.5.12",
"@types/react": "19.1.0", "@types/react": "19.1.8",
"@types/react-dom": "19.1.2", "@types/react-dom": "19.1.6",
"babel-plugin-react-compiler": "19.1.0-rc.2", "babel-plugin-react-compiler": "19.1.0-rc.2",
"comment-json": "^4.2.3", "comment-json": "^4.2.3",
"create-payload-app": "workspace:*", "create-payload-app": "workspace:*",
@@ -81,7 +81,7 @@
"jest": "29.7.0", "jest": "29.7.0",
"jwt-decode": "4.0.0", "jwt-decode": "4.0.0",
"mongoose": "8.15.1", "mongoose": "8.15.1",
"next": "15.3.2", "next": "15.4.4",
"nodemailer": "6.9.16", "nodemailer": "6.9.16",
"payload": "workspace:*", "payload": "workspace:*",
"pg": "8.16.3", "pg": "8.16.3",