@payloadcms/next 3.65.0-canary.3 → 3.65.0-canary.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/withPayload.cjs +27 -0
- package/dist/cjs/withPayload.cjs.map +1 -1
- package/dist/exports/utilities.d.ts +2 -2
- package/dist/prod/styles.css +1 -1
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +25 -5
- package/dist/views/Document/index.js.map +1 -1
- package/dist/withPayload.d.ts.map +1 -1
- package/dist/withPayload.js +27 -0
- package/dist/withPayload.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,IAAI,EACJ,uBAAuB,EACvB,uBAAuB,EAEvB,iBAAiB,EACjB,gBAAgB,EAChB,gCAAgC,EACjC,MAAM,SAAS,CAAA;AAehB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAcrE,eAAO,MAAM,gBAAgB,EAAE,wBAAiE,CAAA;AAEhG,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,gBAAgB,CAAC,uBAAuB,CAAC,GACzC,KAAK,CAAC,EAAE,GACR,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,6PAgBxB;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,EAAE,gCAAgC,CAAA;CAC5C,GAAG,oBAAoB,KAAG,OAAO,CAAC;IACjC,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,IAAI,EACJ,uBAAuB,EACvB,uBAAuB,EAEvB,iBAAiB,EACjB,gBAAgB,EAChB,gCAAgC,EACjC,MAAM,SAAS,CAAA;AAehB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAcrE,eAAO,MAAM,gBAAgB,EAAE,wBAAiE,CAAA;AAEhG,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,gBAAgB,CAAC,uBAAuB,CAAC,GACzC,KAAK,CAAC,EAAE,GACR,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,6PAgBxB;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,EAAE,gCAAgC,CAAA;CAC5C,GAAG,oBAAoB,KAAG,OAAO,CAAC;IACjC,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAqXA,CAAA;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,oBAAoB,+QAe7D"}
|
|
@@ -5,7 +5,7 @@ import { handleLivePreview, handlePreview } from '@payloadcms/ui/rsc';
|
|
|
5
5
|
import { isEditing as getIsEditing } from '@payloadcms/ui/shared';
|
|
6
6
|
import { buildFormState } from '@payloadcms/ui/utilities/buildFormState';
|
|
7
7
|
import { notFound, redirect } from 'next/navigation.js';
|
|
8
|
-
import { logError } from 'payload';
|
|
8
|
+
import { isolateObjectProperty, logError } from 'payload';
|
|
9
9
|
import { formatAdminURL } from 'payload/shared';
|
|
10
10
|
import React from 'react';
|
|
11
11
|
import { DocumentHeader } from '../../elements/DocumentHeader/index.js';
|
|
@@ -101,6 +101,26 @@ export const renderDocument = async ({
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
const isTrashedDoc = Boolean(doc && 'deletedAt' in doc && typeof doc?.deletedAt === 'string');
|
|
104
|
+
// CRITICAL FIX FOR TRANSACTION RACE CONDITION:
|
|
105
|
+
// When running parallel operations with Promise.all, if they share the same req object
|
|
106
|
+
// and one operation calls initTransaction() which MUTATES req.transactionID, that mutation
|
|
107
|
+
// is visible to all parallel operations. This causes:
|
|
108
|
+
// 1. Operation A (e.g., getDocumentPermissions → docAccessOperation) calls initTransaction()
|
|
109
|
+
// which sets req.transactionID = Promise, then resolves it to a UUID
|
|
110
|
+
// 2. Operation B (e.g., getIsLocked) running in parallel receives the SAME req with the mutated transactionID
|
|
111
|
+
// 3. Operation A (does not even know that Operation B even exists and is stil using the transactionID) commits/ends its transaction
|
|
112
|
+
// 4. Operation B tries to use the now-expired session → MongoExpiredSessionError!
|
|
113
|
+
//
|
|
114
|
+
// Solution: Use isolateObjectProperty to create a Proxy that isolates the 'transactionID' property.
|
|
115
|
+
// This allows each operation to have its own transactionID without affecting the parent req.
|
|
116
|
+
// If parent req already has a transaction, preserve it (don't isolate), since this
|
|
117
|
+
// issue only arises when one of the operations calls initTransaction() themselves -
|
|
118
|
+
// because then, that operation will also try to commit/end the transaction itself.
|
|
119
|
+
// If the transactionID is already set, the parallel operations will not try to
|
|
120
|
+
// commit/end the transaction themselves, so we don't need to isolate the
|
|
121
|
+
// transactionID property.
|
|
122
|
+
const reqForPermissions = req.transactionID ? req : isolateObjectProperty(req, 'transactionID');
|
|
123
|
+
const reqForLockCheck = req.transactionID ? req : isolateObjectProperty(req, 'transactionID');
|
|
104
124
|
const [docPreferences, {
|
|
105
125
|
docPermissions,
|
|
106
126
|
hasPublishPermission,
|
|
@@ -118,21 +138,21 @@ export const renderDocument = async ({
|
|
|
118
138
|
payload,
|
|
119
139
|
user
|
|
120
140
|
}),
|
|
121
|
-
// Get permissions
|
|
141
|
+
// Get permissions - isolated transactionID prevents cross-contamination
|
|
122
142
|
getDocumentPermissions({
|
|
123
143
|
id: idFromArgs,
|
|
124
144
|
collectionConfig,
|
|
125
145
|
data: doc,
|
|
126
146
|
globalConfig,
|
|
127
|
-
req
|
|
147
|
+
req: reqForPermissions
|
|
128
148
|
}),
|
|
129
|
-
// Fetch document lock state
|
|
149
|
+
// Fetch document lock state - isolated transactionID prevents cross-contamination
|
|
130
150
|
getIsLocked({
|
|
131
151
|
id: idFromArgs,
|
|
132
152
|
collectionConfig,
|
|
133
153
|
globalConfig,
|
|
134
154
|
isEditing,
|
|
135
|
-
req
|
|
155
|
+
req: reqForLockCheck
|
|
136
156
|
}),
|
|
137
157
|
// get entity preferences
|
|
138
158
|
getPreferences(collectionSlug ? `collection-${collectionSlug}` : `global-${globalSlug}`, payload, req.user.id, req.user.collection)]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["DocumentInfoProvider","EditDepthProvider","HydrateAuthProvider","LivePreviewProvider","RenderServerComponent","handleLivePreview","handlePreview","isEditing","getIsEditing","buildFormState","notFound","redirect","logError","formatAdminURL","React","DocumentHeader","getPreferences","NotFoundView","getDocPreferences","getDocumentData","getDocumentPermissions","getDocumentView","getIsLocked","getMetaBySegment","getVersions","renderDocumentSlots","generateMetadata","args","renderDocument","disableActions","documentSubViewType","drawerSlug","importMap","initialData","initPageResult","overrideEntityVisibility","params","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","searchParams","versions","viewType","collectionConfig","docID","idFromArgs","globalConfig","locale","permissions","req","i18n","payload","config","routes","admin","adminRoute","api","apiRoute","serverURL","user","visibleEntities","segments","Array","isArray","collectionSlug","slug","undefined","globalSlug","id","doc","redirectURL","path","encodeURIComponent","Error","isTrashedDoc","Boolean","deletedAt","docPreferences","docPermissions","hasPublishPermission","hasSavePermission","currentEditor","isLocked","lastUpdateTime","entityPreferences","Promise","all","data","collection","operation","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","state","formState","code","fallbackLocale","readOnly","renderAllFields","schemaPath","skipValidation","documentViewServerProps","routeSegments","collections","find","visibleSlug","globals","formattedParams","URLSearchParams","drafts","append","apiQueryParams","toString","apiURL","View","showHeader","RootViewOverride","components","views","edit","root","Component","shouldAutosave","autosave","validateDraftData","validate","create","depth","draft","documentSlots","Description","clientProps","isLivePreviewEnabled","livePreviewConfig","livePreviewURL","isPreviewEnabled","previewURL","Document","_jsx","initialState","isTrashed","_jsxs","breakpoints","isLivePreviewing","value","editViewType","typeofLivePreviewURL","url","AfterHeader","serverProps","DocumentView","props","RenderedDocument","error","message","err"],"sources":["../../../src/views/Document/index.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n CollectionPreferences,\n Data,\n DocumentViewClientProps,\n DocumentViewServerProps,\n DocumentViewServerPropsOnly,\n EditViewComponent,\n PayloadComponent,\n RenderDocumentVersionsProperties,\n} from 'payload'\n\nimport {\n DocumentInfoProvider,\n EditDepthProvider,\n HydrateAuthProvider,\n LivePreviewProvider,\n} from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { handleLivePreview, handlePreview } from '@payloadcms/ui/rsc'\nimport { isEditing as getIsEditing } from '@payloadcms/ui/shared'\nimport { buildFormState } from '@payloadcms/ui/utilities/buildFormState'\nimport { notFound, redirect } from 'next/navigation.js'\nimport { logError } from 'payload'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport type { GenerateEditViewMetadata } from './getMetaBySegment.js'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { getPreferences } from '../../utilities/getPreferences.js'\nimport { NotFoundView } from '../NotFound/index.js'\nimport { getDocPreferences } from './getDocPreferences.js'\nimport { getDocumentData } from './getDocumentData.js'\nimport { getDocumentPermissions } from './getDocumentPermissions.js'\nimport { getDocumentView } from './getDocumentView.js'\nimport { getIsLocked } from './getIsLocked.js'\nimport { getMetaBySegment } from './getMetaBySegment.js'\nimport { getVersions } from './getVersions.js'\nimport { renderDocumentSlots } from './renderDocumentSlots.js'\n\nexport const generateMetadata: GenerateEditViewMetadata = async (args) => getMetaBySegment(args)\n\nexport type ViewToRender =\n | EditViewComponent\n | PayloadComponent<DocumentViewServerProps>\n | React.FC\n | React.FC<DocumentViewClientProps>\n\n/**\n * This function is responsible for rendering\n * an Edit Document view on the server for both:\n * - default document edit views\n * - on-demand edit views within drawers\n */\nexport const renderDocument = async ({\n disableActions,\n documentSubViewType,\n drawerSlug,\n importMap,\n initialData,\n initPageResult,\n overrideEntityVisibility,\n params,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n searchParams,\n versions,\n viewType,\n}: {\n drawerSlug?: string\n overrideEntityVisibility?: boolean\n readonly redirectAfterCreate?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n versions?: RenderDocumentVersionsProperties\n} & AdminViewServerProps): Promise<{\n data: Data\n Document: React.ReactNode\n}> => {\n const {\n collectionConfig,\n docID: idFromArgs,\n globalConfig,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: {\n config,\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n },\n user,\n },\n visibleEntities,\n } = initPageResult\n\n const segments = Array.isArray(params?.segments) ? params.segments : []\n const collectionSlug = collectionConfig?.slug || undefined\n const globalSlug = globalConfig?.slug || undefined\n let isEditing = getIsEditing({ id: idFromArgs, collectionSlug, globalSlug })\n\n // Fetch the doc required for the view\n let doc =\n !idFromArgs && !globalSlug\n ? initialData || null\n : await getDocumentData({\n id: idFromArgs,\n collectionSlug,\n globalSlug,\n locale,\n payload,\n req,\n segments,\n user,\n })\n\n if (isEditing && !doc) {\n // If it's a collection document that doesn't exist, redirect to collection list\n if (collectionSlug) {\n const redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}?notFound=${encodeURIComponent(idFromArgs)}`,\n serverURL,\n })\n redirect(redirectURL)\n } else {\n // For globals or other cases, keep the 404 behavior\n throw new Error('not-found')\n }\n }\n\n const isTrashedDoc = Boolean(doc && 'deletedAt' in doc && typeof doc?.deletedAt === 'string')\n\n const [\n docPreferences,\n { docPermissions, hasPublishPermission, hasSavePermission },\n { currentEditor, isLocked, lastUpdateTime },\n entityPreferences,\n ] = await Promise.all([\n // Get document preferences\n getDocPreferences({\n id: idFromArgs,\n collectionSlug,\n globalSlug,\n payload,\n user,\n }),\n\n // Get permissions\n getDocumentPermissions({\n id: idFromArgs,\n collectionConfig,\n data: doc,\n globalConfig,\n req,\n }),\n\n // Fetch document lock state\n getIsLocked({\n id: idFromArgs,\n collectionConfig,\n globalConfig,\n isEditing,\n req,\n }),\n\n // get entity preferences\n getPreferences<CollectionPreferences>(\n collectionSlug ? `collection-${collectionSlug}` : `global-${globalSlug}`,\n payload,\n req.user.id,\n req.user.collection,\n ),\n ])\n\n const operation = (collectionSlug && idFromArgs) || globalSlug ? 'update' : 'create'\n\n const [\n { hasPublishedDoc, mostRecentVersionIsAutosaved, unpublishedVersionCount, versionCount },\n { state: formState },\n ] = await Promise.all([\n getVersions({\n id: idFromArgs,\n collectionConfig,\n doc,\n docPermissions,\n globalConfig,\n locale: locale?.code,\n payload,\n user,\n }),\n buildFormState({\n id: idFromArgs,\n collectionSlug,\n data: doc,\n docPermissions,\n docPreferences,\n fallbackLocale: false,\n globalSlug,\n locale: locale?.code,\n operation,\n readOnly: isTrashedDoc || isLocked,\n renderAllFields: true,\n req,\n schemaPath: collectionSlug || globalSlug,\n skipValidation: true,\n }),\n ])\n\n const documentViewServerProps: DocumentViewServerPropsOnly = {\n doc,\n hasPublishedDoc,\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: segments,\n searchParams,\n user,\n versions,\n }\n\n if (\n !overrideEntityVisibility &&\n ((collectionSlug &&\n !visibleEntities?.collections?.find((visibleSlug) => visibleSlug === collectionSlug)) ||\n (globalSlug && !visibleEntities?.globals?.find((visibleSlug) => visibleSlug === globalSlug)))\n ) {\n throw new Error('not-found')\n }\n\n const formattedParams = new URLSearchParams()\n\n if (collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts) {\n formattedParams.append('draft', 'true')\n }\n\n if (locale?.code) {\n formattedParams.append('locale', locale.code)\n }\n\n const apiQueryParams = `?${formattedParams.toString()}`\n\n const apiURL = collectionSlug\n ? `${serverURL}${apiRoute}/${collectionSlug}/${idFromArgs}${apiQueryParams}`\n : globalSlug\n ? `${serverURL}${apiRoute}/${globalSlug}${apiQueryParams}`\n : ''\n\n let View: ViewToRender = null\n\n let showHeader = true\n\n const RootViewOverride =\n collectionConfig?.admin?.components?.views?.edit?.root &&\n 'Component' in collectionConfig.admin.components.views.edit.root\n ? collectionConfig?.admin?.components?.views?.edit?.root?.Component\n : globalConfig?.admin?.components?.views?.edit?.root &&\n 'Component' in globalConfig.admin.components.views.edit.root\n ? globalConfig?.admin?.components?.views?.edit?.root?.Component\n : null\n\n if (RootViewOverride) {\n View = RootViewOverride\n showHeader = false\n } else {\n ;({ View } = getDocumentView({\n collectionConfig,\n config,\n docPermissions,\n globalConfig,\n routeSegments: segments,\n }))\n }\n\n if (!View) {\n View = NotFoundView\n }\n\n /**\n * Handle case where autoSave is enabled and the document is being created\n * => create document and redirect\n */\n const shouldAutosave =\n hasSavePermission &&\n ((collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave))\n\n const validateDraftData =\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.validate\n\n let id = idFromArgs\n\n if (shouldAutosave && !validateDraftData && !idFromArgs && collectionSlug) {\n doc = await payload.create({\n collection: collectionSlug,\n data: initialData || {},\n depth: 0,\n draft: true,\n fallbackLocale: false,\n locale: locale?.code,\n req,\n user,\n })\n\n if (doc?.id) {\n id = doc.id\n isEditing = getIsEditing({ id: doc.id, collectionSlug, globalSlug })\n\n if (!drawerSlug && redirectAfterCreate !== false) {\n const redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${doc.id}`,\n serverURL,\n })\n\n redirect(redirectURL)\n }\n } else {\n throw new Error('not-found')\n }\n }\n\n const documentSlots = renderDocumentSlots({\n id,\n collectionConfig,\n globalConfig,\n hasSavePermission,\n permissions: docPermissions,\n req,\n })\n\n // Extract Description from documentSlots to pass to DocumentHeader\n const { Description } = documentSlots\n\n const clientProps: DocumentViewClientProps = {\n formState,\n ...documentSlots,\n documentSubViewType,\n viewType,\n }\n\n const { isLivePreviewEnabled, livePreviewConfig, livePreviewURL } = await handleLivePreview({\n collectionSlug,\n config,\n data: doc,\n globalSlug,\n operation,\n req,\n })\n\n const { isPreviewEnabled, previewURL } = await handlePreview({\n collectionSlug,\n config,\n data: doc,\n globalSlug,\n operation,\n req,\n })\n\n return {\n data: doc,\n Document: (\n <DocumentInfoProvider\n apiURL={apiURL}\n collectionSlug={collectionConfig?.slug}\n currentEditor={currentEditor}\n disableActions={disableActions ?? false}\n docPermissions={docPermissions}\n globalSlug={globalConfig?.slug}\n hasPublishedDoc={hasPublishedDoc}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n initialData={doc}\n initialState={formState}\n isEditing={isEditing}\n isLocked={isLocked}\n isTrashed={isTrashedDoc}\n key={locale?.code}\n lastUpdateTime={lastUpdateTime}\n mostRecentVersionIsAutosaved={mostRecentVersionIsAutosaved}\n redirectAfterCreate={redirectAfterCreate}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n redirectAfterRestore={redirectAfterRestore}\n unpublishedVersionCount={unpublishedVersionCount}\n versionCount={versionCount}\n >\n <LivePreviewProvider\n breakpoints={livePreviewConfig?.breakpoints}\n isLivePreviewEnabled={isLivePreviewEnabled && operation !== 'create'}\n isLivePreviewing={Boolean(\n entityPreferences?.value?.editViewType === 'live-preview' && livePreviewURL,\n )}\n isPreviewEnabled={Boolean(isPreviewEnabled)}\n previewURL={previewURL}\n typeofLivePreviewURL={typeof livePreviewConfig?.url as 'function' | 'string' | undefined}\n url={livePreviewURL}\n >\n {showHeader && !drawerSlug && (\n <DocumentHeader\n AfterHeader={Description}\n collectionConfig={collectionConfig}\n globalConfig={globalConfig}\n permissions={permissions}\n req={req}\n />\n )}\n <HydrateAuthProvider permissions={permissions} />\n <EditDepthProvider>\n {RenderServerComponent({\n clientProps,\n Component: View,\n importMap,\n serverProps: documentViewServerProps,\n })}\n </EditDepthProvider>\n </LivePreviewProvider>\n </DocumentInfoProvider>\n ),\n }\n}\n\nexport async function DocumentView(props: AdminViewServerProps) {\n try {\n const { Document: RenderedDocument } = await renderDocument(props)\n return RenderedDocument\n } catch (error) {\n if (error?.message === 'NEXT_REDIRECT') {\n throw error\n }\n\n logError({ err: error, payload: props.initPageResult.req.payload })\n\n if (error.message === 'not-found') {\n notFound()\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["DocumentInfoProvider","EditDepthProvider","HydrateAuthProvider","LivePreviewProvider","RenderServerComponent","handleLivePreview","handlePreview","isEditing","getIsEditing","buildFormState","notFound","redirect","isolateObjectProperty","logError","formatAdminURL","React","DocumentHeader","getPreferences","NotFoundView","getDocPreferences","getDocumentData","getDocumentPermissions","getDocumentView","getIsLocked","getMetaBySegment","getVersions","renderDocumentSlots","generateMetadata","args","renderDocument","disableActions","documentSubViewType","drawerSlug","importMap","initialData","initPageResult","overrideEntityVisibility","params","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","searchParams","versions","viewType","collectionConfig","docID","idFromArgs","globalConfig","locale","permissions","req","i18n","payload","config","routes","admin","adminRoute","api","apiRoute","serverURL","user","visibleEntities","segments","Array","isArray","collectionSlug","slug","undefined","globalSlug","id","doc","redirectURL","path","encodeURIComponent","Error","isTrashedDoc","Boolean","deletedAt","reqForPermissions","transactionID","reqForLockCheck","docPreferences","docPermissions","hasPublishPermission","hasSavePermission","currentEditor","isLocked","lastUpdateTime","entityPreferences","Promise","all","data","collection","operation","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","state","formState","code","fallbackLocale","readOnly","renderAllFields","schemaPath","skipValidation","documentViewServerProps","routeSegments","collections","find","visibleSlug","globals","formattedParams","URLSearchParams","drafts","append","apiQueryParams","toString","apiURL","View","showHeader","RootViewOverride","components","views","edit","root","Component","shouldAutosave","autosave","validateDraftData","validate","create","depth","draft","documentSlots","Description","clientProps","isLivePreviewEnabled","livePreviewConfig","livePreviewURL","isPreviewEnabled","previewURL","Document","_jsx","initialState","isTrashed","_jsxs","breakpoints","isLivePreviewing","value","editViewType","typeofLivePreviewURL","url","AfterHeader","serverProps","DocumentView","props","RenderedDocument","error","message","err"],"sources":["../../../src/views/Document/index.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n CollectionPreferences,\n Data,\n DocumentViewClientProps,\n DocumentViewServerProps,\n DocumentViewServerPropsOnly,\n EditViewComponent,\n PayloadComponent,\n RenderDocumentVersionsProperties,\n} from 'payload'\n\nimport {\n DocumentInfoProvider,\n EditDepthProvider,\n HydrateAuthProvider,\n LivePreviewProvider,\n} from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { handleLivePreview, handlePreview } from '@payloadcms/ui/rsc'\nimport { isEditing as getIsEditing } from '@payloadcms/ui/shared'\nimport { buildFormState } from '@payloadcms/ui/utilities/buildFormState'\nimport { notFound, redirect } from 'next/navigation.js'\nimport { isolateObjectProperty, logError } from 'payload'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport type { GenerateEditViewMetadata } from './getMetaBySegment.js'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { getPreferences } from '../../utilities/getPreferences.js'\nimport { NotFoundView } from '../NotFound/index.js'\nimport { getDocPreferences } from './getDocPreferences.js'\nimport { getDocumentData } from './getDocumentData.js'\nimport { getDocumentPermissions } from './getDocumentPermissions.js'\nimport { getDocumentView } from './getDocumentView.js'\nimport { getIsLocked } from './getIsLocked.js'\nimport { getMetaBySegment } from './getMetaBySegment.js'\nimport { getVersions } from './getVersions.js'\nimport { renderDocumentSlots } from './renderDocumentSlots.js'\n\nexport const generateMetadata: GenerateEditViewMetadata = async (args) => getMetaBySegment(args)\n\nexport type ViewToRender =\n | EditViewComponent\n | PayloadComponent<DocumentViewServerProps>\n | React.FC\n | React.FC<DocumentViewClientProps>\n\n/**\n * This function is responsible for rendering\n * an Edit Document view on the server for both:\n * - default document edit views\n * - on-demand edit views within drawers\n */\nexport const renderDocument = async ({\n disableActions,\n documentSubViewType,\n drawerSlug,\n importMap,\n initialData,\n initPageResult,\n overrideEntityVisibility,\n params,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n searchParams,\n versions,\n viewType,\n}: {\n drawerSlug?: string\n overrideEntityVisibility?: boolean\n readonly redirectAfterCreate?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n versions?: RenderDocumentVersionsProperties\n} & AdminViewServerProps): Promise<{\n data: Data\n Document: React.ReactNode\n}> => {\n const {\n collectionConfig,\n docID: idFromArgs,\n globalConfig,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: {\n config,\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n },\n user,\n },\n visibleEntities,\n } = initPageResult\n\n const segments = Array.isArray(params?.segments) ? params.segments : []\n const collectionSlug = collectionConfig?.slug || undefined\n const globalSlug = globalConfig?.slug || undefined\n let isEditing = getIsEditing({ id: idFromArgs, collectionSlug, globalSlug })\n\n // Fetch the doc required for the view\n let doc =\n !idFromArgs && !globalSlug\n ? initialData || null\n : await getDocumentData({\n id: idFromArgs,\n collectionSlug,\n globalSlug,\n locale,\n payload,\n req,\n segments,\n user,\n })\n\n if (isEditing && !doc) {\n // If it's a collection document that doesn't exist, redirect to collection list\n if (collectionSlug) {\n const redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}?notFound=${encodeURIComponent(idFromArgs)}`,\n serverURL,\n })\n redirect(redirectURL)\n } else {\n // For globals or other cases, keep the 404 behavior\n throw new Error('not-found')\n }\n }\n\n const isTrashedDoc = Boolean(doc && 'deletedAt' in doc && typeof doc?.deletedAt === 'string')\n\n // CRITICAL FIX FOR TRANSACTION RACE CONDITION:\n // When running parallel operations with Promise.all, if they share the same req object\n // and one operation calls initTransaction() which MUTATES req.transactionID, that mutation\n // is visible to all parallel operations. This causes:\n // 1. Operation A (e.g., getDocumentPermissions → docAccessOperation) calls initTransaction()\n // which sets req.transactionID = Promise, then resolves it to a UUID\n // 2. Operation B (e.g., getIsLocked) running in parallel receives the SAME req with the mutated transactionID\n // 3. Operation A (does not even know that Operation B even exists and is stil using the transactionID) commits/ends its transaction\n // 4. Operation B tries to use the now-expired session → MongoExpiredSessionError!\n //\n // Solution: Use isolateObjectProperty to create a Proxy that isolates the 'transactionID' property.\n // This allows each operation to have its own transactionID without affecting the parent req.\n // If parent req already has a transaction, preserve it (don't isolate), since this\n // issue only arises when one of the operations calls initTransaction() themselves -\n // because then, that operation will also try to commit/end the transaction itself.\n\n // If the transactionID is already set, the parallel operations will not try to\n // commit/end the transaction themselves, so we don't need to isolate the\n // transactionID property.\n const reqForPermissions = req.transactionID ? req : isolateObjectProperty(req, 'transactionID')\n const reqForLockCheck = req.transactionID ? req : isolateObjectProperty(req, 'transactionID')\n\n const [\n docPreferences,\n { docPermissions, hasPublishPermission, hasSavePermission },\n { currentEditor, isLocked, lastUpdateTime },\n entityPreferences,\n ] = await Promise.all([\n // Get document preferences\n getDocPreferences({\n id: idFromArgs,\n collectionSlug,\n globalSlug,\n payload,\n user,\n }),\n\n // Get permissions - isolated transactionID prevents cross-contamination\n getDocumentPermissions({\n id: idFromArgs,\n collectionConfig,\n data: doc,\n globalConfig,\n req: reqForPermissions,\n }),\n\n // Fetch document lock state - isolated transactionID prevents cross-contamination\n getIsLocked({\n id: idFromArgs,\n collectionConfig,\n globalConfig,\n isEditing,\n req: reqForLockCheck,\n }),\n\n // get entity preferences\n getPreferences<CollectionPreferences>(\n collectionSlug ? `collection-${collectionSlug}` : `global-${globalSlug}`,\n payload,\n req.user.id,\n req.user.collection,\n ),\n ])\n\n const operation = (collectionSlug && idFromArgs) || globalSlug ? 'update' : 'create'\n\n const [\n { hasPublishedDoc, mostRecentVersionIsAutosaved, unpublishedVersionCount, versionCount },\n { state: formState },\n ] = await Promise.all([\n getVersions({\n id: idFromArgs,\n collectionConfig,\n doc,\n docPermissions,\n globalConfig,\n locale: locale?.code,\n payload,\n user,\n }),\n buildFormState({\n id: idFromArgs,\n collectionSlug,\n data: doc,\n docPermissions,\n docPreferences,\n fallbackLocale: false,\n globalSlug,\n locale: locale?.code,\n operation,\n readOnly: isTrashedDoc || isLocked,\n renderAllFields: true,\n req,\n schemaPath: collectionSlug || globalSlug,\n skipValidation: true,\n }),\n ])\n\n const documentViewServerProps: DocumentViewServerPropsOnly = {\n doc,\n hasPublishedDoc,\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: segments,\n searchParams,\n user,\n versions,\n }\n\n if (\n !overrideEntityVisibility &&\n ((collectionSlug &&\n !visibleEntities?.collections?.find((visibleSlug) => visibleSlug === collectionSlug)) ||\n (globalSlug && !visibleEntities?.globals?.find((visibleSlug) => visibleSlug === globalSlug)))\n ) {\n throw new Error('not-found')\n }\n\n const formattedParams = new URLSearchParams()\n\n if (collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts) {\n formattedParams.append('draft', 'true')\n }\n\n if (locale?.code) {\n formattedParams.append('locale', locale.code)\n }\n\n const apiQueryParams = `?${formattedParams.toString()}`\n\n const apiURL = collectionSlug\n ? `${serverURL}${apiRoute}/${collectionSlug}/${idFromArgs}${apiQueryParams}`\n : globalSlug\n ? `${serverURL}${apiRoute}/${globalSlug}${apiQueryParams}`\n : ''\n\n let View: ViewToRender = null\n\n let showHeader = true\n\n const RootViewOverride =\n collectionConfig?.admin?.components?.views?.edit?.root &&\n 'Component' in collectionConfig.admin.components.views.edit.root\n ? collectionConfig?.admin?.components?.views?.edit?.root?.Component\n : globalConfig?.admin?.components?.views?.edit?.root &&\n 'Component' in globalConfig.admin.components.views.edit.root\n ? globalConfig?.admin?.components?.views?.edit?.root?.Component\n : null\n\n if (RootViewOverride) {\n View = RootViewOverride\n showHeader = false\n } else {\n ;({ View } = getDocumentView({\n collectionConfig,\n config,\n docPermissions,\n globalConfig,\n routeSegments: segments,\n }))\n }\n\n if (!View) {\n View = NotFoundView\n }\n\n /**\n * Handle case where autoSave is enabled and the document is being created\n * => create document and redirect\n */\n const shouldAutosave =\n hasSavePermission &&\n ((collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave))\n\n const validateDraftData =\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.validate\n\n let id = idFromArgs\n\n if (shouldAutosave && !validateDraftData && !idFromArgs && collectionSlug) {\n doc = await payload.create({\n collection: collectionSlug,\n data: initialData || {},\n depth: 0,\n draft: true,\n fallbackLocale: false,\n locale: locale?.code,\n req,\n user,\n })\n\n if (doc?.id) {\n id = doc.id\n isEditing = getIsEditing({ id: doc.id, collectionSlug, globalSlug })\n\n if (!drawerSlug && redirectAfterCreate !== false) {\n const redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${doc.id}`,\n serverURL,\n })\n\n redirect(redirectURL)\n }\n } else {\n throw new Error('not-found')\n }\n }\n\n const documentSlots = renderDocumentSlots({\n id,\n collectionConfig,\n globalConfig,\n hasSavePermission,\n permissions: docPermissions,\n req,\n })\n\n // Extract Description from documentSlots to pass to DocumentHeader\n const { Description } = documentSlots\n\n const clientProps: DocumentViewClientProps = {\n formState,\n ...documentSlots,\n documentSubViewType,\n viewType,\n }\n\n const { isLivePreviewEnabled, livePreviewConfig, livePreviewURL } = await handleLivePreview({\n collectionSlug,\n config,\n data: doc,\n globalSlug,\n operation,\n req,\n })\n\n const { isPreviewEnabled, previewURL } = await handlePreview({\n collectionSlug,\n config,\n data: doc,\n globalSlug,\n operation,\n req,\n })\n\n return {\n data: doc,\n Document: (\n <DocumentInfoProvider\n apiURL={apiURL}\n collectionSlug={collectionConfig?.slug}\n currentEditor={currentEditor}\n disableActions={disableActions ?? false}\n docPermissions={docPermissions}\n globalSlug={globalConfig?.slug}\n hasPublishedDoc={hasPublishedDoc}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n initialData={doc}\n initialState={formState}\n isEditing={isEditing}\n isLocked={isLocked}\n isTrashed={isTrashedDoc}\n key={locale?.code}\n lastUpdateTime={lastUpdateTime}\n mostRecentVersionIsAutosaved={mostRecentVersionIsAutosaved}\n redirectAfterCreate={redirectAfterCreate}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n redirectAfterRestore={redirectAfterRestore}\n unpublishedVersionCount={unpublishedVersionCount}\n versionCount={versionCount}\n >\n <LivePreviewProvider\n breakpoints={livePreviewConfig?.breakpoints}\n isLivePreviewEnabled={isLivePreviewEnabled && operation !== 'create'}\n isLivePreviewing={Boolean(\n entityPreferences?.value?.editViewType === 'live-preview' && livePreviewURL,\n )}\n isPreviewEnabled={Boolean(isPreviewEnabled)}\n previewURL={previewURL}\n typeofLivePreviewURL={typeof livePreviewConfig?.url as 'function' | 'string' | undefined}\n url={livePreviewURL}\n >\n {showHeader && !drawerSlug && (\n <DocumentHeader\n AfterHeader={Description}\n collectionConfig={collectionConfig}\n globalConfig={globalConfig}\n permissions={permissions}\n req={req}\n />\n )}\n <HydrateAuthProvider permissions={permissions} />\n <EditDepthProvider>\n {RenderServerComponent({\n clientProps,\n Component: View,\n importMap,\n serverProps: documentViewServerProps,\n })}\n </EditDepthProvider>\n </LivePreviewProvider>\n </DocumentInfoProvider>\n ),\n }\n}\n\nexport async function DocumentView(props: AdminViewServerProps) {\n try {\n const { Document: RenderedDocument } = await renderDocument(props)\n return RenderedDocument\n } catch (error) {\n if (error?.message === 'NEXT_REDIRECT') {\n throw error\n }\n\n logError({ err: error, payload: props.initPageResult.req.payload })\n\n if (error.message === 'not-found') {\n notFound()\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withPayload.d.ts","sourceRoot":"","sources":["../src/withPayload.js"],"names":[],"mappings":"AAOO,yCANI,OAAO,MAAM,EAAE,UAAU,YAEjC;IAA0B,uBAAuB,GAAzC,OAAO;CAA6F,GAElG,OAAO,MAAM,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"withPayload.d.ts","sourceRoot":"","sources":["../src/withPayload.js"],"names":[],"mappings":"AAOO,yCANI,OAAO,MAAM,EAAE,UAAU,YAEjC;IAA0B,uBAAuB,GAAzC,OAAO;CAA6F,GAElG,OAAO,MAAM,EAAE,UAAU,CAgLrC"}
|
package/dist/withPayload.js
CHANGED
|
@@ -10,6 +10,29 @@
|
|
|
10
10
|
console.warn('Payload detected a non-zero value for the `staleTimes.dynamic` option in your Next.js config. This will slow down page transitions and may cause stale data to load within the Admin panel. To clear this warning, remove the `staleTimes.dynamic` option from your Next.js config or set it to 0. In the future, Next.js may support scoping this option to specific routes.');
|
|
11
11
|
env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH = 'true';
|
|
12
12
|
}
|
|
13
|
+
if (process.env.PAYLOAD_PATCH_TURBOPACK_WARNINGS !== 'false') {
|
|
14
|
+
// TODO: This warning is thrown because we cannot externalize the entry-point package for client-s3, so we patch the warning to not show it.
|
|
15
|
+
// We can remove this once Next.js implements https://github.com/vercel/next.js/discussions/76991
|
|
16
|
+
const turbopackWarningText = 'Packages that should be external need to be installed in the project directory, so they can be resolved from the output files.\nTry to install it into the project directory by running';
|
|
17
|
+
// TODO 4.0: Remove this once we drop support for Next.js 15.2.x
|
|
18
|
+
const turbopackConfigWarningText = "Unrecognized key(s) in object: 'turbopack'";
|
|
19
|
+
const consoleWarn = console.warn;
|
|
20
|
+
console.warn = (...args) => {
|
|
21
|
+
// Force to disable serverExternalPackages warnings: https://github.com/vercel/next.js/issues/68805
|
|
22
|
+
if (typeof args[1] === 'string' && args[1].includes(turbopackWarningText) || typeof args[0] === 'string' && args[0].includes(turbopackWarningText)) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// Add Payload-specific message after turbopack config warning in Next.js 15.2.x or lower.
|
|
26
|
+
// TODO 4.0: Remove this once we drop support for Next.js 15.2.x
|
|
27
|
+
const hasTurbopackConfigWarning = typeof args[1] === 'string' && args[1].includes(turbopackConfigWarningText) || typeof args[0] === 'string' && args[0].includes(turbopackConfigWarningText);
|
|
28
|
+
if (hasTurbopackConfigWarning) {
|
|
29
|
+
consoleWarn(...args);
|
|
30
|
+
consoleWarn('Payload: You can safely ignore the "Invalid next.config" warning above. This only occurs on Next.js 15.2.x or lower. We recommend upgrading to Next.js 15.4.7 to resolve this warning.');
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
consoleWarn(...args);
|
|
34
|
+
};
|
|
35
|
+
}
|
|
13
36
|
const poweredByHeader = {
|
|
14
37
|
key: 'X-Powered-By',
|
|
15
38
|
value: 'Next.js, Payload'
|
|
@@ -69,6 +92,10 @@
|
|
|
69
92
|
'@payloadcms/payload-cloud',
|
|
70
93
|
// External, because it installs import-in-the-middle and require-in-the-middle - both in the default serverExternalPackages list.
|
|
71
94
|
'@sentry/nextjs',
|
|
95
|
+
// Can be externalized, because we require users to install graphql themselves - we only rely on it as a peer dependency.
|
|
96
|
+
// WHY: without externalizing graphql, a graphql version error will be thrown
|
|
97
|
+
// during runtime ("Ensure that there is only one instance of \"graphql\" in the node_modules\ndirectory.")
|
|
98
|
+
'graphql',
|
|
72
99
|
// TODO: We need to externalize @payloadcms/storage-s3 as well, once Next.js has the ability to exclude @payloadcms/storage-s3/client from being externalized.
|
|
73
100
|
// Do not bundle additional server-only packages during dev to improve compilation speed
|
|
74
101
|
...(process.env.NODE_ENV === 'development' && options.devBundleServerPackages === false ? ['payload', '@payloadcms/email-nodemailer', '@payloadcms/email-resend', '@payloadcms/graphql', '@payloadcms/plugin-redirects'] : [])],
|
package/dist/withPayload.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withPayload.js","names":["withPayload","nextConfig","options","env","experimental","staleTimes","dynamic","console","warn","NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH","poweredByHeader","key","value","toReturn","turbopack","outputFileTracingExcludes","outputFileTracingIncludes","headers","headersFromConfig","source","serverExternalPackages","process","NODE_ENV","devBundleServerPackages","webpack","webpackConfig","webpackOptions","incomingWebpackConfig","externals","plugins","IgnorePlugin","resourceRegExp","basePath","NEXT_BASE_PATH"],"sources":["../src/withPayload.js"],"sourcesContent":["/**\n * @param {import('next').NextConfig} nextConfig\n * @param {Object} [options] - Optional configuration options\n * @param {boolean} [options.devBundleServerPackages] - Whether to bundle server packages in development mode. @default true\n *\n * @returns {import('next').NextConfig}\n * */\nexport const withPayload = (nextConfig = {}, options = {}) => {\n const env = nextConfig.env || {}\n\n if (nextConfig.experimental?.staleTimes?.dynamic) {\n console.warn(\n 'Payload detected a non-zero value for the `staleTimes.dynamic` option in your Next.js config. This will slow down page transitions and may cause stale data to load within the Admin panel. To clear this warning, remove the `staleTimes.dynamic` option from your Next.js config or set it to 0. In the future, Next.js may support scoping this option to specific routes.',\n )\n env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH = 'true'\n }\n\n const poweredByHeader = {\n key: 'X-Powered-By',\n value: 'Next.js, Payload',\n }\n\n /**\n * @type {import('next').NextConfig}\n */\n const toReturn = {\n ...nextConfig,\n env,\n turbopack: {\n ...(nextConfig.turbopack || {}),\n },\n outputFileTracingExcludes: {\n ...(nextConfig.outputFileTracingExcludes || {}),\n '**/*': [\n ...(nextConfig.outputFileTracingExcludes?.['**/*'] || []),\n 'drizzle-kit',\n 'drizzle-kit/api',\n ],\n },\n outputFileTracingIncludes: {\n ...(nextConfig.outputFileTracingIncludes || {}),\n '**/*': [...(nextConfig.outputFileTracingIncludes?.['**/*'] || []), '@libsql/client'],\n },\n // We disable the poweredByHeader here because we add it manually in the headers function below\n ...(nextConfig.poweredByHeader !== false ? { poweredByHeader: false } : {}),\n headers: async () => {\n const headersFromConfig = 'headers' in nextConfig ? await nextConfig.headers() : []\n\n return [\n ...(headersFromConfig || []),\n {\n source: '/:path*',\n headers: [\n {\n key: 'Accept-CH',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n {\n key: 'Vary',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n {\n key: 'Critical-CH',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n ...(nextConfig.poweredByHeader !== false ? [poweredByHeader] : []),\n ],\n },\n ]\n },\n serverExternalPackages: [\n ...(nextConfig.serverExternalPackages || []),\n // These packages always need to be external, both during dev and production. This is because they install dependencies\n // that will error when trying to bundle them (e.g. drizzle-kit, libsql, esbuild etc.).\n // We cannot externalize those problem-packages directly. We can only externalize packages that are manually installed\n // by the end user. Otherwise, the require('externalPackage') calls generated by the bundler would fail during runtime,\n // as you cannot import dependencies of dependencies in a lot of package managers like pnpm. We'd have to force users\n // to install the dependencies directly.\n // Thus, we externalize the \"entry-point\" = the package that is installed by the end user, which would be our db adapters.\n //\n //\n // External because it installs mongoose (part of default serverExternalPackages: https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/server-external-packages.json => would throw warning if we don't exclude the entry-point package):\n '@payloadcms/db-mongodb',\n // External because they install dependencies like drizzle, libsql, esbuild etc.:\n '@payloadcms/db-postgres',\n '@payloadcms/db-sqlite',\n '@payloadcms/db-vercel-postgres',\n '@payloadcms/drizzle',\n '@payloadcms/db-d1-sqlite',\n // External because they install @aws-sdk/client-s3:\n '@payloadcms/payload-cloud',\n // External, because it installs import-in-the-middle and require-in-the-middle - both in the default serverExternalPackages list.\n '@sentry/nextjs',\n // TODO: We need to externalize @payloadcms/storage-s3 as well, once Next.js has the ability to exclude @payloadcms/storage-s3/client from being externalized.\n // Do not bundle additional server-only packages during dev to improve compilation speed\n ...(process.env.NODE_ENV === 'development' && options.devBundleServerPackages === false\n ? [\n 'payload',\n '@payloadcms/email-nodemailer',\n '@payloadcms/email-resend',\n '@payloadcms/graphql',\n '@payloadcms/plugin-redirects',\n // TODO: Add the following packages, excluding their /client subpath exports, once Next.js supports it\n //'@payloadcms/plugin-cloud-storage',\n //'@payloadcms/plugin-sentry',\n //'@payloadcms/plugin-stripe',\n // @payloadcms/richtext-lexical\n //'@payloadcms/storage-azure',\n //'@payloadcms/storage-gcs',\n //'@payloadcms/storage-s3',\n //'@payloadcms/storage-uploadthing',\n //'@payloadcms/storage-vercel-blob',\n ]\n : []),\n ],\n webpack: (webpackConfig, webpackOptions) => {\n const incomingWebpackConfig =\n typeof nextConfig.webpack === 'function'\n ? nextConfig.webpack(webpackConfig, webpackOptions)\n : webpackConfig\n\n return {\n ...incomingWebpackConfig,\n externals: [...(incomingWebpackConfig?.externals || []), 'require-in-the-middle'],\n plugins: [\n ...(incomingWebpackConfig?.plugins || []),\n // Fix cloudflare:sockets error: https://github.com/vercel/next.js/discussions/50177\n new webpackOptions.webpack.IgnorePlugin({\n resourceRegExp: /^pg-native$|^cloudflare:sockets$/,\n }),\n ],\n }\n },\n }\n\n if (nextConfig.basePath) {\n toReturn.env.NEXT_BASE_PATH = nextConfig.basePath\n }\n\n return toReturn\n}\n\nexport default withPayload\n"],"mappings":"AAAA;;;;;;KAOA,OAAO,MAAMA,WAAA,GAAcA,CAACC,UAAA,GAAa,CAAC,CAAC,EAAEC,OAAA,GAAU,CAAC,CAAC;EACvD,MAAMC,GAAA,GAAMF,UAAA,CAAWE,GAAG,IAAI,CAAC;EAE/B,IAAIF,UAAA,CAAWG,YAAY,EAAEC,UAAA,EAAYC,OAAA,EAAS;IAChDC,OAAA,CAAQC,IAAI,CACV;IAEFL,GAAA,CAAIM,uCAAuC,GAAG;EAChD;EAEA,MAAMC,eAAA,GAAkB;IACtBC,GAAA,EAAK;IACLC,KAAA,EAAO;EACT;EAEA;;;EAGA,MAAMC,QAAA,GAAW;IACf,GAAGZ,UAAU;IACbE,GAAA;IACAW,SAAA,EAAW;MACT,IAAIb,UAAA,CAAWa,SAAS,IAAI,CAAC,CAAC;IAChC;IACAC,yBAAA,EAA2B;MACzB,IAAId,UAAA,CAAWc,yBAAyB,IAAI,CAAC,CAAC;MAC9C,QAAQ,C,IACFd,UAAA,CAAWc,yBAAyB,GAAG,OAAO,IAAI,EAAE,GACxD,eACA;IAEJ;IACAC,yBAAA,EAA2B;MACzB,IAAIf,UAAA,CAAWe,yBAAyB,IAAI,CAAC,CAAC;MAC9C,QAAQ,C,IAAKf,UAAA,CAAWe,yBAAyB,GAAG,OAAO,IAAI,EAAE,GAAG;IACtE;IACA;IACA,IAAIf,UAAA,CAAWS,eAAe,KAAK,QAAQ;MAAEA,eAAA,EAAiB;IAAM,IAAI,CAAC,CAAC;IAC1EO,OAAA,EAAS,MAAAA,CAAA;MACP,MAAMC,iBAAA,GAAoB,aAAajB,UAAA,GAAa,MAAMA,UAAA,CAAWgB,OAAO,KAAK,EAAE;MAEnF,OAAO,C,IACDC,iBAAA,IAAqB,EAAE,GAC3B;QACEC,MAAA,EAAQ;QACRF,OAAA,EAAS,CACP;UACEN,GAAA,EAAK;UACLC,KAAA,EAAO;QACT,GACA;UACED,GAAA,EAAK;UACLC,KAAA,EAAO;QACT,GACA;UACED,GAAA,EAAK;UACLC,KAAA,EAAO;QACT,G,IACIX,UAAA,CAAWS,eAAe,KAAK,QAAQ,CAACA,eAAA,CAAgB,GAAG,EAAE;MAErE,EACD;IACH;IACAU,sBAAA,EAAwB,C,IAClBnB,UAAA,CAAWmB,sBAAsB,IAAI,EAAE;IAC3C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,2BACA,yBACA,kCACA,uBACA;IACA;IACA;IACA;IACA;IACA;IACA;QACIC,OAAA,CAAQlB,GAAG,CAACmB,QAAQ,KAAK,iBAAiBpB,OAAA,CAAQqB,uBAAuB,KAAK,QAC9E,CACE,WACA,gCACA,4BACA,uBACA,+BAWD,GACD,EAAE,EACP;IACDC,OAAA,EAASA,CAACC,aAAA,EAAeC,cAAA;MACvB,MAAMC,qBAAA,GACJ,OAAO1B,UAAA,CAAWuB,OAAO,KAAK,aAC1BvB,UAAA,CAAWuB,OAAO,CAACC,aAAA,EAAeC,cAAA,IAClCD,aAAA;MAEN,OAAO;QACL,GAAGE,qBAAqB;QACxBC,SAAA,EAAW,C,IAAKD,qBAAA,EAAuBC,SAAA,IAAa,EAAE,GAAG,wBAAwB;QACjFC,OAAA,EAAS,C,IACHF,qBAAA,EAAuBE,OAAA,IAAW,EAAE;QACxC;QACA,IAAIH,cAAA,CAAeF,OAAO,CAACM,YAAY,CAAC;UACtCC,cAAA,EAAgB;QAClB;MAEJ;IACF;EACF;EAEA,IAAI9B,UAAA,CAAW+B,QAAQ,EAAE;IACvBnB,QAAA,CAASV,GAAG,CAAC8B,cAAc,GAAGhC,UAAA,CAAW+B,QAAQ;EACnD;EAEA,OAAOnB,QAAA;AACT;AAEA,eAAeb,WAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"withPayload.js","names":["withPayload","nextConfig","options","env","experimental","staleTimes","dynamic","console","warn","NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH","process","PAYLOAD_PATCH_TURBOPACK_WARNINGS","turbopackWarningText","turbopackConfigWarningText","consoleWarn","args","includes","hasTurbopackConfigWarning","poweredByHeader","key","value","toReturn","turbopack","outputFileTracingExcludes","outputFileTracingIncludes","headers","headersFromConfig","source","serverExternalPackages","NODE_ENV","devBundleServerPackages","webpack","webpackConfig","webpackOptions","incomingWebpackConfig","externals","plugins","IgnorePlugin","resourceRegExp","basePath","NEXT_BASE_PATH"],"sources":["../src/withPayload.js"],"sourcesContent":["/**\n * @param {import('next').NextConfig} nextConfig\n * @param {Object} [options] - Optional configuration options\n * @param {boolean} [options.devBundleServerPackages] - Whether to bundle server packages in development mode. @default true\n *\n * @returns {import('next').NextConfig}\n * */\nexport const withPayload = (nextConfig = {}, options = {}) => {\n const env = nextConfig.env || {}\n\n if (nextConfig.experimental?.staleTimes?.dynamic) {\n console.warn(\n 'Payload detected a non-zero value for the `staleTimes.dynamic` option in your Next.js config. This will slow down page transitions and may cause stale data to load within the Admin panel. To clear this warning, remove the `staleTimes.dynamic` option from your Next.js config or set it to 0. In the future, Next.js may support scoping this option to specific routes.',\n )\n env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH = 'true'\n }\n\n if (process.env.PAYLOAD_PATCH_TURBOPACK_WARNINGS !== 'false') {\n // TODO: This warning is thrown because we cannot externalize the entry-point package for client-s3, so we patch the warning to not show it.\n // We can remove this once Next.js implements https://github.com/vercel/next.js/discussions/76991\n const turbopackWarningText =\n 'Packages that should be external need to be installed in the project directory, so they can be resolved from the output files.\\nTry to install it into the project directory by running'\n\n // TODO 4.0: Remove this once we drop support for Next.js 15.2.x\n const turbopackConfigWarningText = \"Unrecognized key(s) in object: 'turbopack'\"\n\n const consoleWarn = console.warn\n console.warn = (...args) => {\n // Force to disable serverExternalPackages warnings: https://github.com/vercel/next.js/issues/68805\n if (\n (typeof args[1] === 'string' && args[1].includes(turbopackWarningText)) ||\n (typeof args[0] === 'string' && args[0].includes(turbopackWarningText))\n ) {\n return\n }\n\n // Add Payload-specific message after turbopack config warning in Next.js 15.2.x or lower.\n // TODO 4.0: Remove this once we drop support for Next.js 15.2.x\n const hasTurbopackConfigWarning =\n (typeof args[1] === 'string' && args[1].includes(turbopackConfigWarningText)) ||\n (typeof args[0] === 'string' && args[0].includes(turbopackConfigWarningText))\n\n if (hasTurbopackConfigWarning) {\n consoleWarn(...args)\n consoleWarn(\n 'Payload: You can safely ignore the \"Invalid next.config\" warning above. This only occurs on Next.js 15.2.x or lower. We recommend upgrading to Next.js 15.4.7 to resolve this warning.',\n )\n return\n }\n\n consoleWarn(...args)\n }\n }\n\n const poweredByHeader = {\n key: 'X-Powered-By',\n value: 'Next.js, Payload',\n }\n\n /**\n * @type {import('next').NextConfig}\n */\n const toReturn = {\n ...nextConfig,\n env,\n turbopack: {\n ...(nextConfig.turbopack || {}),\n },\n outputFileTracingExcludes: {\n ...(nextConfig.outputFileTracingExcludes || {}),\n '**/*': [\n ...(nextConfig.outputFileTracingExcludes?.['**/*'] || []),\n 'drizzle-kit',\n 'drizzle-kit/api',\n ],\n },\n outputFileTracingIncludes: {\n ...(nextConfig.outputFileTracingIncludes || {}),\n '**/*': [...(nextConfig.outputFileTracingIncludes?.['**/*'] || []), '@libsql/client'],\n },\n // We disable the poweredByHeader here because we add it manually in the headers function below\n ...(nextConfig.poweredByHeader !== false ? { poweredByHeader: false } : {}),\n headers: async () => {\n const headersFromConfig = 'headers' in nextConfig ? await nextConfig.headers() : []\n\n return [\n ...(headersFromConfig || []),\n {\n source: '/:path*',\n headers: [\n {\n key: 'Accept-CH',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n {\n key: 'Vary',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n {\n key: 'Critical-CH',\n value: 'Sec-CH-Prefers-Color-Scheme',\n },\n ...(nextConfig.poweredByHeader !== false ? [poweredByHeader] : []),\n ],\n },\n ]\n },\n serverExternalPackages: [\n ...(nextConfig.serverExternalPackages || []),\n // These packages always need to be external, both during dev and production. This is because they install dependencies\n // that will error when trying to bundle them (e.g. drizzle-kit, libsql, esbuild etc.).\n // We cannot externalize those problem-packages directly. We can only externalize packages that are manually installed\n // by the end user. Otherwise, the require('externalPackage') calls generated by the bundler would fail during runtime,\n // as you cannot import dependencies of dependencies in a lot of package managers like pnpm. We'd have to force users\n // to install the dependencies directly.\n // Thus, we externalize the \"entry-point\" = the package that is installed by the end user, which would be our db adapters.\n //\n //\n // External because it installs mongoose (part of default serverExternalPackages: https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/server-external-packages.json => would throw warning if we don't exclude the entry-point package):\n '@payloadcms/db-mongodb',\n // External because they install dependencies like drizzle, libsql, esbuild etc.:\n '@payloadcms/db-postgres',\n '@payloadcms/db-sqlite',\n '@payloadcms/db-vercel-postgres',\n '@payloadcms/drizzle',\n '@payloadcms/db-d1-sqlite',\n // External because they install @aws-sdk/client-s3:\n '@payloadcms/payload-cloud',\n // External, because it installs import-in-the-middle and require-in-the-middle - both in the default serverExternalPackages list.\n '@sentry/nextjs',\n // Can be externalized, because we require users to install graphql themselves - we only rely on it as a peer dependency.\n // WHY: without externalizing graphql, a graphql version error will be thrown\n // during runtime (\"Ensure that there is only one instance of \\\"graphql\\\" in the node_modules\\ndirectory.\")\n 'graphql',\n // TODO: We need to externalize @payloadcms/storage-s3 as well, once Next.js has the ability to exclude @payloadcms/storage-s3/client from being externalized.\n // Do not bundle additional server-only packages during dev to improve compilation speed\n ...(process.env.NODE_ENV === 'development' && options.devBundleServerPackages === false\n ? [\n 'payload',\n '@payloadcms/email-nodemailer',\n '@payloadcms/email-resend',\n '@payloadcms/graphql',\n '@payloadcms/plugin-redirects',\n // TODO: Add the following packages, excluding their /client subpath exports, once Next.js supports it\n //'@payloadcms/plugin-cloud-storage',\n //'@payloadcms/plugin-sentry',\n //'@payloadcms/plugin-stripe',\n // @payloadcms/richtext-lexical\n //'@payloadcms/storage-azure',\n //'@payloadcms/storage-gcs',\n //'@payloadcms/storage-s3',\n //'@payloadcms/storage-uploadthing',\n //'@payloadcms/storage-vercel-blob',\n ]\n : []),\n ],\n webpack: (webpackConfig, webpackOptions) => {\n const incomingWebpackConfig =\n typeof nextConfig.webpack === 'function'\n ? nextConfig.webpack(webpackConfig, webpackOptions)\n : webpackConfig\n\n return {\n ...incomingWebpackConfig,\n externals: [...(incomingWebpackConfig?.externals || []), 'require-in-the-middle'],\n plugins: [\n ...(incomingWebpackConfig?.plugins || []),\n // Fix cloudflare:sockets error: https://github.com/vercel/next.js/discussions/50177\n new webpackOptions.webpack.IgnorePlugin({\n resourceRegExp: /^pg-native$|^cloudflare:sockets$/,\n }),\n ],\n }\n },\n }\n\n if (nextConfig.basePath) {\n toReturn.env.NEXT_BASE_PATH = nextConfig.basePath\n }\n\n return toReturn\n}\n\nexport default withPayload\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/next",
|
|
3
|
-
"version": "3.65.0-canary.
|
|
3
|
+
"version": "3.65.0-canary.5",
|
|
4
4
|
"homepage": "https://payloadcms.com",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -97,9 +97,9 @@
|
|
|
97
97
|
"qs-esm": "7.0.2",
|
|
98
98
|
"sass": "1.77.4",
|
|
99
99
|
"uuid": "10.0.0",
|
|
100
|
-
"@payloadcms/graphql": "3.65.0-canary.
|
|
101
|
-
"@payloadcms/translations": "3.65.0-canary.
|
|
102
|
-
"@payloadcms/ui": "3.65.0-canary.
|
|
100
|
+
"@payloadcms/graphql": "3.65.0-canary.5",
|
|
101
|
+
"@payloadcms/translations": "3.65.0-canary.5",
|
|
102
|
+
"@payloadcms/ui": "3.65.0-canary.5"
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
105
|
"@babel/cli": "7.27.2",
|
|
@@ -116,13 +116,13 @@
|
|
|
116
116
|
"esbuild": "0.25.5",
|
|
117
117
|
"esbuild-sass-plugin": "3.3.1",
|
|
118
118
|
"swc-plugin-transform-remove-imports": "4.0.4",
|
|
119
|
-
"
|
|
120
|
-
"
|
|
119
|
+
"@payloadcms/eslint-config": "3.28.0",
|
|
120
|
+
"payload": "3.65.0-canary.5"
|
|
121
121
|
},
|
|
122
122
|
"peerDependencies": {
|
|
123
123
|
"graphql": "^16.8.1",
|
|
124
124
|
"next": "^15.2.3",
|
|
125
|
-
"payload": "3.65.0-canary.
|
|
125
|
+
"payload": "3.65.0-canary.5"
|
|
126
126
|
},
|
|
127
127
|
"engines": {
|
|
128
128
|
"node": "^18.20.2 || >=20.9.0"
|