fix: ensure leavesFirst option works correctly in traverseFields utility (#11219)
We have to ensure the arguments are handled wherever we push to the callback stack, not when we execute the callback stack.
This commit is contained in:
@@ -15,8 +15,8 @@ const traverseArrayOrBlocksField = ({
|
|||||||
parentRef,
|
parentRef,
|
||||||
}: {
|
}: {
|
||||||
callback: TraverseFieldsCallback
|
callback: TraverseFieldsCallback
|
||||||
callbackStack: TraverseFieldsCallback[]
|
callbackStack: (() => ReturnType<TraverseFieldsCallback>)[]
|
||||||
config: Config | SanitizedConfig
|
config?: Config | SanitizedConfig
|
||||||
data: Record<string, unknown>[]
|
data: Record<string, unknown>[]
|
||||||
field: ArrayField | BlocksField
|
field: ArrayField | BlocksField
|
||||||
fillEmpty: boolean
|
fillEmpty: boolean
|
||||||
@@ -39,16 +39,18 @@ const traverseArrayOrBlocksField = ({
|
|||||||
for (const _block of field.blockReferences ?? field.blocks) {
|
for (const _block of field.blockReferences ?? field.blocks) {
|
||||||
// TODO: iterate over blocks mapped to block slug in v4, or pass through payload.blocks
|
// TODO: iterate over blocks mapped to block slug in v4, or pass through payload.blocks
|
||||||
const block =
|
const block =
|
||||||
typeof _block === 'string' ? config.blocks.find((b) => b.slug === _block) : _block
|
typeof _block === 'string' ? config?.blocks?.find((b) => b.slug === _block) : _block
|
||||||
traverseFields({
|
if (block) {
|
||||||
callback,
|
traverseFields({
|
||||||
callbackStack,
|
callback,
|
||||||
config,
|
callbackStack,
|
||||||
fields: block.fields,
|
config,
|
||||||
isTopLevel: false,
|
fields: block.fields,
|
||||||
leavesFirst,
|
isTopLevel: false,
|
||||||
parentRef,
|
leavesFirst,
|
||||||
})
|
parentRef,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@@ -58,7 +60,7 @@ const traverseArrayOrBlocksField = ({
|
|||||||
if (field.type === 'blocks' && typeof ref?.blockType === 'string') {
|
if (field.type === 'blocks' && typeof ref?.blockType === 'string') {
|
||||||
// TODO: iterate over blocks mapped to block slug in v4, or pass through payload.blocks
|
// TODO: iterate over blocks mapped to block slug in v4, or pass through payload.blocks
|
||||||
const block = field.blockReferences
|
const block = field.blockReferences
|
||||||
? ((config.blocks.find((b) => b.slug === ref.blockType) ??
|
? ((config?.blocks?.find((b) => b.slug === ref.blockType) ??
|
||||||
field.blockReferences.find(
|
field.blockReferences.find(
|
||||||
(b) => typeof b !== 'string' && b.slug === ref.blockType,
|
(b) => typeof b !== 'string' && b.slug === ref.blockType,
|
||||||
)) as Block)
|
)) as Block)
|
||||||
@@ -106,8 +108,8 @@ export type TraverseFieldsCallback = (args: {
|
|||||||
|
|
||||||
type TraverseFieldsArgs = {
|
type TraverseFieldsArgs = {
|
||||||
callback: TraverseFieldsCallback
|
callback: TraverseFieldsCallback
|
||||||
callbackStack?: TraverseFieldsCallback[]
|
callbackStack?: (() => ReturnType<TraverseFieldsCallback>)[]
|
||||||
config: Config | SanitizedConfig
|
config?: Config | SanitizedConfig
|
||||||
fields: (Field | TabAsField)[]
|
fields: (Field | TabAsField)[]
|
||||||
fillEmpty?: boolean
|
fillEmpty?: boolean
|
||||||
isTopLevel?: boolean
|
isTopLevel?: boolean
|
||||||
@@ -143,7 +145,7 @@ export const traverseFields = ({
|
|||||||
ref = {},
|
ref = {},
|
||||||
}: TraverseFieldsArgs): void => {
|
}: TraverseFieldsArgs): void => {
|
||||||
fields.some((field) => {
|
fields.some((field) => {
|
||||||
let callbackStack: TraverseFieldsCallback[] = []
|
let callbackStack: (() => ReturnType<TraverseFieldsCallback>)[] = []
|
||||||
if (!isTopLevel) {
|
if (!isTopLevel) {
|
||||||
callbackStack = _callbackStack
|
callbackStack = _callbackStack
|
||||||
}
|
}
|
||||||
@@ -159,7 +161,7 @@ export const traverseFields = ({
|
|||||||
if (!leavesFirst && callback && callback({ field, next, parentRef, ref })) {
|
if (!leavesFirst && callback && callback({ field, next, parentRef, ref })) {
|
||||||
return true
|
return true
|
||||||
} else if (leavesFirst) {
|
} else if (leavesFirst) {
|
||||||
callbackStack.push(callback)
|
callbackStack.push(() => callback({ field, next, parentRef, ref }))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skip) {
|
if (skip) {
|
||||||
@@ -203,7 +205,14 @@ export const traverseFields = ({
|
|||||||
) {
|
) {
|
||||||
return true
|
return true
|
||||||
} else if (leavesFirst) {
|
} else if (leavesFirst) {
|
||||||
callbackStack.push(callback)
|
callbackStack.push(() =>
|
||||||
|
callback({
|
||||||
|
field: { ...tab, type: 'tab' },
|
||||||
|
next,
|
||||||
|
parentRef: currentParentRef,
|
||||||
|
ref: tabRef,
|
||||||
|
}),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
tabRef = tabRef[tab.name]
|
tabRef = tabRef[tab.name]
|
||||||
@@ -238,7 +247,14 @@ export const traverseFields = ({
|
|||||||
) {
|
) {
|
||||||
return true
|
return true
|
||||||
} else if (leavesFirst) {
|
} else if (leavesFirst) {
|
||||||
callbackStack.push(callback)
|
callbackStack.push(() =>
|
||||||
|
callback({
|
||||||
|
field: { ...tab, type: 'tab' },
|
||||||
|
next,
|
||||||
|
parentRef: currentParentRef,
|
||||||
|
ref: tabRef,
|
||||||
|
}),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -373,7 +389,7 @@ export const traverseFields = ({
|
|||||||
|
|
||||||
if (isTopLevel) {
|
if (isTopLevel) {
|
||||||
callbackStack.reverse().forEach((cb) => {
|
callbackStack.reverse().forEach((cb) => {
|
||||||
cb({ field, next, parentRef, ref })
|
cb()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
104
pnpm-lock.yaml
generated
104
pnpm-lock.yaml
generated
@@ -45,7 +45,7 @@ importers:
|
|||||||
version: 1.50.0
|
version: 1.50.0
|
||||||
'@sentry/nextjs':
|
'@sentry/nextjs':
|
||||||
specifier: ^8.33.1
|
specifier: ^8.33.1
|
||||||
version: 8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.1.5(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4))(react@19.0.0)(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15)))
|
version: 8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.1.5(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4))(react@19.0.0)(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15)))
|
||||||
'@sentry/node':
|
'@sentry/node':
|
||||||
specifier: ^8.33.1
|
specifier: ^8.33.1
|
||||||
version: 8.37.1
|
version: 8.37.1
|
||||||
@@ -135,7 +135,7 @@ importers:
|
|||||||
version: 10.1.3(@aws-sdk/credential-providers@3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0)))(socks@2.8.3)
|
version: 10.1.3(@aws-sdk/credential-providers@3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0)))(socks@2.8.3)
|
||||||
next:
|
next:
|
||||||
specifier: 15.1.5
|
specifier: 15.1.5
|
||||||
version: 15.1.5(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4)
|
version: 15.1.5(@babel/core@7.26.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4)
|
||||||
open:
|
open:
|
||||||
specifier: ^10.1.0
|
specifier: ^10.1.0
|
||||||
version: 10.1.0
|
version: 10.1.0
|
||||||
@@ -1076,7 +1076,7 @@ importers:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@sentry/nextjs':
|
'@sentry/nextjs':
|
||||||
specifier: ^8.33.1
|
specifier: ^8.33.1
|
||||||
version: 8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.1.5(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4))(react@19.0.0)(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15)))
|
version: 8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.1.5(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4))(react@19.0.0)(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15)))
|
||||||
'@sentry/types':
|
'@sentry/types':
|
||||||
specifier: ^8.33.1
|
specifier: ^8.33.1
|
||||||
version: 8.37.1
|
version: 8.37.1
|
||||||
@@ -1598,6 +1598,10 @@ importers:
|
|||||||
version: link:../payload
|
version: link:../payload
|
||||||
|
|
||||||
test:
|
test:
|
||||||
|
dependencies:
|
||||||
|
dequal:
|
||||||
|
specifier: 2.0.3
|
||||||
|
version: 2.0.3
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@aws-sdk/client-s3':
|
'@aws-sdk/client-s3':
|
||||||
specifier: ^3.614.0
|
specifier: ^3.614.0
|
||||||
@@ -1706,7 +1710,7 @@ importers:
|
|||||||
version: link:../packages/ui
|
version: link:../packages/ui
|
||||||
'@sentry/nextjs':
|
'@sentry/nextjs':
|
||||||
specifier: ^8.33.1
|
specifier: ^8.33.1
|
||||||
version: 8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.1.5(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4))(react@19.0.0)(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15)))
|
version: 8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.1.5(@babel/core@7.26.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4))(react@19.0.0)(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15))(esbuild@0.19.12))
|
||||||
'@sentry/react':
|
'@sentry/react':
|
||||||
specifier: ^7.77.0
|
specifier: ^7.77.0
|
||||||
version: 7.119.2(react@19.0.0)
|
version: 7.119.2(react@19.0.0)
|
||||||
@@ -1757,7 +1761,7 @@ importers:
|
|||||||
version: 8.9.5(@aws-sdk/credential-providers@3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0)))(socks@2.8.3)
|
version: 8.9.5(@aws-sdk/credential-providers@3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0)))(socks@2.8.3)
|
||||||
next:
|
next:
|
||||||
specifier: 15.1.5
|
specifier: 15.1.5
|
||||||
version: 15.1.5(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4)
|
version: 15.1.5(@babel/core@7.26.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4)
|
||||||
nodemailer:
|
nodemailer:
|
||||||
specifier: 6.9.16
|
specifier: 6.9.16
|
||||||
version: 6.9.16
|
version: 6.9.16
|
||||||
@@ -7838,6 +7842,7 @@ packages:
|
|||||||
|
|
||||||
libsql@0.4.7:
|
libsql@0.4.7:
|
||||||
resolution: {integrity: sha512-T9eIRCs6b0J1SHKYIvD8+KCJMcWZ900iZyxdnSCdqxN12Z1ijzT+jY5nrk72Jw4B0HGzms2NgpryArlJqvc3Lw==}
|
resolution: {integrity: sha512-T9eIRCs6b0J1SHKYIvD8+KCJMcWZ900iZyxdnSCdqxN12Z1ijzT+jY5nrk72Jw4B0HGzms2NgpryArlJqvc3Lw==}
|
||||||
|
cpu: [x64, arm64, wasm32]
|
||||||
os: [darwin, linux, win32]
|
os: [darwin, linux, win32]
|
||||||
|
|
||||||
lie@3.1.1:
|
lie@3.1.1:
|
||||||
@@ -13677,7 +13682,36 @@ snapshots:
|
|||||||
'@sentry/utils': 7.119.2
|
'@sentry/utils': 7.119.2
|
||||||
localforage: 1.10.0
|
localforage: 1.10.0
|
||||||
|
|
||||||
'@sentry/nextjs@8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.1.5(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4))(react@19.0.0)(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15)))':
|
'@sentry/nextjs@8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.1.5(@babel/core@7.26.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4))(react@19.0.0)(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15))(esbuild@0.19.12))':
|
||||||
|
dependencies:
|
||||||
|
'@opentelemetry/api': 1.9.0
|
||||||
|
'@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0)
|
||||||
|
'@opentelemetry/semantic-conventions': 1.27.0
|
||||||
|
'@rollup/plugin-commonjs': 26.0.1(rollup@3.29.5)
|
||||||
|
'@sentry-internal/browser-utils': 8.37.1
|
||||||
|
'@sentry/core': 8.37.1
|
||||||
|
'@sentry/node': 8.37.1
|
||||||
|
'@sentry/opentelemetry': 8.37.1(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0)
|
||||||
|
'@sentry/react': 8.37.1(react@19.0.0)
|
||||||
|
'@sentry/types': 8.37.1
|
||||||
|
'@sentry/utils': 8.37.1
|
||||||
|
'@sentry/vercel-edge': 8.37.1
|
||||||
|
'@sentry/webpack-plugin': 2.22.6(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15))(esbuild@0.19.12))
|
||||||
|
chalk: 3.0.0
|
||||||
|
next: 15.1.5(@babel/core@7.26.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4)
|
||||||
|
resolve: 1.22.8
|
||||||
|
rollup: 3.29.5
|
||||||
|
stacktrace-parser: 0.1.10
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@opentelemetry/core'
|
||||||
|
- '@opentelemetry/instrumentation'
|
||||||
|
- '@opentelemetry/sdk-trace-base'
|
||||||
|
- encoding
|
||||||
|
- react
|
||||||
|
- supports-color
|
||||||
|
- webpack
|
||||||
|
|
||||||
|
'@sentry/nextjs@8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.1.5(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4))(react@19.0.0)(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15)))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@opentelemetry/api': 1.9.0
|
'@opentelemetry/api': 1.9.0
|
||||||
'@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0)
|
'@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0)
|
||||||
@@ -13693,7 +13727,7 @@ snapshots:
|
|||||||
'@sentry/vercel-edge': 8.37.1
|
'@sentry/vercel-edge': 8.37.1
|
||||||
'@sentry/webpack-plugin': 2.22.6(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15)))
|
'@sentry/webpack-plugin': 2.22.6(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15)))
|
||||||
chalk: 3.0.0
|
chalk: 3.0.0
|
||||||
next: 15.1.5(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4)
|
next: 15.1.5(@babel/core@7.26.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4)
|
||||||
resolve: 1.22.8
|
resolve: 1.22.8
|
||||||
rollup: 3.29.5
|
rollup: 3.29.5
|
||||||
stacktrace-parser: 0.1.10
|
stacktrace-parser: 0.1.10
|
||||||
@@ -13801,6 +13835,16 @@ snapshots:
|
|||||||
'@sentry/types': 8.37.1
|
'@sentry/types': 8.37.1
|
||||||
'@sentry/utils': 8.37.1
|
'@sentry/utils': 8.37.1
|
||||||
|
|
||||||
|
'@sentry/webpack-plugin@2.22.6(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15))(esbuild@0.19.12))':
|
||||||
|
dependencies:
|
||||||
|
'@sentry/bundler-plugin-core': 2.22.6
|
||||||
|
unplugin: 1.0.1
|
||||||
|
uuid: 9.0.0
|
||||||
|
webpack: 5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15))(esbuild@0.19.12)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- encoding
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@sentry/webpack-plugin@2.22.6(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15)))':
|
'@sentry/webpack-plugin@2.22.6(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15)))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@sentry/bundler-plugin-core': 2.22.6
|
'@sentry/bundler-plugin-core': 2.22.6
|
||||||
@@ -18213,7 +18257,7 @@ snapshots:
|
|||||||
- '@babel/core'
|
- '@babel/core'
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
|
|
||||||
next@15.1.5(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4):
|
next@15.1.5(@babel/core@7.26.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/env': 15.1.5
|
'@next/env': 15.1.5
|
||||||
'@swc/counter': 0.1.3
|
'@swc/counter': 0.1.3
|
||||||
@@ -19619,6 +19663,18 @@ snapshots:
|
|||||||
ansi-escapes: 4.3.2
|
ansi-escapes: 4.3.2
|
||||||
supports-hyperlinks: 2.3.0
|
supports-hyperlinks: 2.3.0
|
||||||
|
|
||||||
|
terser-webpack-plugin@5.3.10(@swc/core@1.10.12(@swc/helpers@0.5.15))(esbuild@0.19.12)(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15))(esbuild@0.19.12)):
|
||||||
|
dependencies:
|
||||||
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
|
jest-worker: 27.5.1
|
||||||
|
schema-utils: 3.3.0
|
||||||
|
serialize-javascript: 6.0.2
|
||||||
|
terser: 5.36.0
|
||||||
|
webpack: 5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15))(esbuild@0.19.12)
|
||||||
|
optionalDependencies:
|
||||||
|
'@swc/core': 1.10.12(@swc/helpers@0.5.15)
|
||||||
|
esbuild: 0.19.12
|
||||||
|
|
||||||
terser-webpack-plugin@5.3.10(@swc/core@1.10.12(@swc/helpers@0.5.15))(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15))):
|
terser-webpack-plugin@5.3.10(@swc/core@1.10.12(@swc/helpers@0.5.15))(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15))):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/trace-mapping': 0.3.25
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
@@ -19916,7 +19972,7 @@ snapshots:
|
|||||||
'@uploadthing/shared': 7.1.1
|
'@uploadthing/shared': 7.1.1
|
||||||
effect: 3.10.3
|
effect: 3.10.3
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
next: 15.1.5(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4)
|
next: 15.1.5(@babel/core@7.26.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@19.0.0-beta-714736e-20250131)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4)
|
||||||
|
|
||||||
uri-js@4.4.1:
|
uri-js@4.4.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -20044,6 +20100,36 @@ snapshots:
|
|||||||
- esbuild
|
- esbuild
|
||||||
- uglify-js
|
- uglify-js
|
||||||
|
|
||||||
|
webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15))(esbuild@0.19.12):
|
||||||
|
dependencies:
|
||||||
|
'@types/eslint-scope': 3.7.7
|
||||||
|
'@types/estree': 1.0.6
|
||||||
|
'@webassemblyjs/ast': 1.14.1
|
||||||
|
'@webassemblyjs/wasm-edit': 1.14.1
|
||||||
|
'@webassemblyjs/wasm-parser': 1.14.1
|
||||||
|
acorn: 8.14.0
|
||||||
|
browserslist: 4.24.2
|
||||||
|
chrome-trace-event: 1.0.4
|
||||||
|
enhanced-resolve: 5.17.1
|
||||||
|
es-module-lexer: 1.5.4
|
||||||
|
eslint-scope: 5.1.1
|
||||||
|
events: 3.3.0
|
||||||
|
glob-to-regexp: 0.4.1
|
||||||
|
graceful-fs: 4.2.11
|
||||||
|
json-parse-even-better-errors: 2.3.1
|
||||||
|
loader-runner: 4.3.0
|
||||||
|
mime-types: 2.1.35
|
||||||
|
neo-async: 2.6.2
|
||||||
|
schema-utils: 3.3.0
|
||||||
|
tapable: 2.2.1
|
||||||
|
terser-webpack-plugin: 5.3.10(@swc/core@1.10.12(@swc/helpers@0.5.15))(esbuild@0.19.12)(webpack@5.96.1(@swc/core@1.10.12(@swc/helpers@0.5.15))(esbuild@0.19.12))
|
||||||
|
watchpack: 2.4.2
|
||||||
|
webpack-sources: 3.2.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@swc/core'
|
||||||
|
- esbuild
|
||||||
|
- uglify-js
|
||||||
|
|
||||||
whatwg-url@13.0.0:
|
whatwg-url@13.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
tr46: 4.1.1
|
tr46: 4.1.1
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { dequal } from 'dequal/lite'
|
||||||
import { type Block, type BlockSlug, type Config, traverseFields } from 'payload'
|
import { type Block, type BlockSlug, type Config, traverseFields } from 'payload'
|
||||||
|
|
||||||
export const autoDedupeBlocksPlugin =
|
export const autoDedupeBlocksPlugin =
|
||||||
@@ -68,7 +69,9 @@ export const deduplicateBlock = ({
|
|||||||
// Check if the fields are the same
|
// Check if the fields are the same
|
||||||
const jsonExistingBlock = JSON.stringify(existingBlock, null, 2)
|
const jsonExistingBlock = JSON.stringify(existingBlock, null, 2)
|
||||||
const jsonBlockToDeduplicate = JSON.stringify(dedupedBlock, null, 2)
|
const jsonBlockToDeduplicate = JSON.stringify(dedupedBlock, null, 2)
|
||||||
if (jsonExistingBlock !== jsonBlockToDeduplicate) {
|
// dequal check of blocks with functions removed (through JSON.stringify+JSON.parse). We cannot check the strings,
|
||||||
|
// as the order of keys in the object is not guaranteed, yet it doesn't matter for the block fields.
|
||||||
|
if (!dequal(JSON.parse(jsonExistingBlock), JSON.parse(jsonBlockToDeduplicate))) {
|
||||||
console.error('Block with the same slug but different fields found', {
|
console.error('Block with the same slug but different fields found', {
|
||||||
slug: dedupedBlock.slug,
|
slug: dedupedBlock.slug,
|
||||||
existingBlock: jsonExistingBlock,
|
existingBlock: jsonExistingBlock,
|
||||||
|
|||||||
@@ -86,5 +86,8 @@
|
|||||||
"ts-essentials": "10.0.3",
|
"ts-essentials": "10.0.3",
|
||||||
"typescript": "5.7.3",
|
"typescript": "5.7.3",
|
||||||
"uuid": "10.0.0"
|
"uuid": "10.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"dequal": "2.0.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user