@payloadcms/next 3.1.1 → 3.2.0

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.
Files changed (57) hide show
  1. package/dist/layouts/Root/checkDependencies.d.ts +1 -1
  2. package/dist/layouts/Root/checkDependencies.d.ts.map +1 -1
  3. package/dist/layouts/Root/checkDependencies.js +2 -2
  4. package/dist/layouts/Root/checkDependencies.js.map +1 -1
  5. package/dist/layouts/Root/index.d.ts.map +1 -1
  6. package/dist/layouts/Root/index.js +3 -4
  7. package/dist/layouts/Root/index.js.map +1 -1
  8. package/dist/prod/styles.css +1 -1
  9. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  10. package/dist/utilities/handleServerFunctions.js +2 -0
  11. package/dist/utilities/handleServerFunctions.js.map +1 -1
  12. package/dist/views/Account/index.d.ts.map +1 -1
  13. package/dist/views/Account/index.js +1 -0
  14. package/dist/views/Account/index.js.map +1 -1
  15. package/dist/views/Document/getVersions.d.ts +8 -1
  16. package/dist/views/Document/getVersions.d.ts.map +1 -1
  17. package/dist/views/Document/getVersions.js +57 -33
  18. package/dist/views/Document/getVersions.js.map +1 -1
  19. package/dist/views/Document/handleServerFunction.d.ts +2 -7
  20. package/dist/views/Document/handleServerFunction.d.ts.map +1 -1
  21. package/dist/views/Document/handleServerFunction.js +5 -22
  22. package/dist/views/Document/handleServerFunction.js.map +1 -1
  23. package/dist/views/Document/index.d.ts +3 -1
  24. package/dist/views/Document/index.d.ts.map +1 -1
  25. package/dist/views/Document/index.js +3 -1
  26. package/dist/views/Document/index.js.map +1 -1
  27. package/dist/views/List/handleServerFunction.d.ts +2 -7
  28. package/dist/views/List/handleServerFunction.d.ts.map +1 -1
  29. package/dist/views/List/handleServerFunction.js +5 -22
  30. package/dist/views/List/handleServerFunction.js.map +1 -1
  31. package/dist/views/List/index.d.ts +1 -0
  32. package/dist/views/List/index.d.ts.map +1 -1
  33. package/dist/views/List/index.js +2 -1
  34. package/dist/views/List/index.js.map +1 -1
  35. package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
  36. package/dist/views/Login/LoginForm/index.js +39 -33
  37. package/dist/views/Login/LoginForm/index.js.map +1 -1
  38. package/dist/views/Root/index.d.ts.map +1 -1
  39. package/dist/views/Root/index.js +2 -2
  40. package/dist/views/Root/index.js.map +1 -1
  41. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +2 -2
  42. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  43. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js +2 -2
  44. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js.map +1 -1
  45. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +3 -3
  46. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  47. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +3 -3
  48. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +1 -1
  49. package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -1
  50. package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
  51. package/dist/views/Version/RenderFieldsToDiff/index.js +3 -2
  52. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  53. package/package.json +6 -6
  54. package/dist/utilities/getClientConfig.d.ts +0 -8
  55. package/dist/utilities/getClientConfig.d.ts.map +0 -1
  56. package/dist/utilities/getClientConfig.js +0 -16
  57. package/dist/utilities/getClientConfig.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"handleServerFunctions.d.ts","sourceRoot":"","sources":["../../src/utilities/handleServerFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAUpE,eAAO,MAAM,qBAAqB,EAAE,qBA0BnC,CAAA"}
1
+ {"version":3,"file":"handleServerFunctions.d.ts","sourceRoot":"","sources":["../../src/utilities/handleServerFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAWpE,eAAO,MAAM,qBAAqB,EAAE,qBA2BnC,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { copyDataFromLocaleHandler } from '@payloadcms/ui/rsc';
1
2
  import { buildFormStateHandler } from '@payloadcms/ui/utilities/buildFormState';
2
3
  import { buildTableStateHandler } from '@payloadcms/ui/utilities/buildTableState';
3
4
  import { renderDocumentHandler } from '../views/Document/handleServerFunction.js';
@@ -20,6 +21,7 @@ export const handleServerFunctions = async args => {
20
21
  req
21
22
  };
22
23
  const serverFunctions = {
24
+ 'copy-data-from-locale': copyDataFromLocaleHandler,
23
25
  'form-state': buildFormStateHandler,
24
26
  'render-document': renderDocumentHandler,
25
27
  'render-document-slots': renderDocumentSlotsHandler,
@@ -1 +1 @@
1
- {"version":3,"file":"handleServerFunctions.js","names":["buildFormStateHandler","buildTableStateHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","initReq","handleServerFunctions","args","name","fnKey","fnArgs","config","configPromise","importMap","req","augmentedArgs","serverFunctions","fn","Error"],"sources":["../../src/utilities/handleServerFunctions.ts"],"sourcesContent":["import type { ServerFunction, ServerFunctionHandler } from 'payload'\n\nimport { buildFormStateHandler } from '@payloadcms/ui/utilities/buildFormState'\nimport { buildTableStateHandler } from '@payloadcms/ui/utilities/buildTableState'\n\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { initReq } from './initReq.js'\n\nexport const handleServerFunctions: ServerFunctionHandler = async (args) => {\n const { name: fnKey, args: fnArgs, config: configPromise, importMap } = args\n\n const { req } = await initReq(configPromise)\n\n const augmentedArgs: Parameters<ServerFunction>[0] = {\n ...fnArgs,\n importMap,\n req,\n }\n\n const serverFunctions = {\n 'form-state': buildFormStateHandler as any as ServerFunction,\n 'render-document': renderDocumentHandler as any as ServerFunction,\n 'render-document-slots': renderDocumentSlotsHandler as any as ServerFunction,\n 'render-list': renderListHandler as any as ServerFunction,\n 'table-state': buildTableStateHandler as any as ServerFunction,\n }\n\n const fn = serverFunctions[fnKey]\n\n if (!fn) {\n throw new Error(`Unknown Server Function: ${fnKey}`)\n }\n\n return fn(augmentedArgs)\n}\n"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AAEvC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,qBAAA,GAA+C,MAAOC,IAAA;EACjE,MAAM;IAAEC,IAAA,EAAMC,KAAK;IAAEF,IAAA,EAAMG,MAAM;IAAEC,MAAA,EAAQC,aAAa;IAAEC;EAAS,CAAE,GAAGN,IAAA;EAExE,MAAM;IAAEO;EAAG,CAAE,GAAG,MAAMT,OAAA,CAAQO,aAAA;EAE9B,MAAMG,aAAA,GAA+C;IACnD,GAAGL,MAAM;IACTG,SAAA;IACAC;EACF;EAEA,MAAME,eAAA,GAAkB;IACtB,cAAchB,qBAAA;IACd,mBAAmBE,qBAAA;IACnB,yBAAyBC,0BAAA;IACzB,eAAeC,iBAAA;IACf,eAAeH;EACjB;EAEA,MAAMgB,EAAA,GAAKD,eAAe,CAACP,KAAA,CAAM;EAEjC,IAAI,CAACQ,EAAA,EAAI;IACP,MAAM,IAAIC,KAAA,CAAM,4BAA4BT,KAAA,EAAO;EACrD;EAEA,OAAOQ,EAAA,CAAGF,aAAA;AACZ","ignoreList":[]}
1
+ {"version":3,"file":"handleServerFunctions.js","names":["copyDataFromLocaleHandler","buildFormStateHandler","buildTableStateHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","initReq","handleServerFunctions","args","name","fnKey","fnArgs","config","configPromise","importMap","req","augmentedArgs","serverFunctions","fn","Error"],"sources":["../../src/utilities/handleServerFunctions.ts"],"sourcesContent":["import type { ServerFunction, ServerFunctionHandler } from 'payload'\n\nimport { copyDataFromLocaleHandler } from '@payloadcms/ui/rsc'\nimport { buildFormStateHandler } from '@payloadcms/ui/utilities/buildFormState'\nimport { buildTableStateHandler } from '@payloadcms/ui/utilities/buildTableState'\n\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { initReq } from './initReq.js'\n\nexport const handleServerFunctions: ServerFunctionHandler = async (args) => {\n const { name: fnKey, args: fnArgs, config: configPromise, importMap } = args\n\n const { req } = await initReq(configPromise)\n\n const augmentedArgs: Parameters<ServerFunction>[0] = {\n ...fnArgs,\n importMap,\n req,\n }\n\n const serverFunctions = {\n 'copy-data-from-locale': copyDataFromLocaleHandler as any as ServerFunction,\n 'form-state': buildFormStateHandler as any as ServerFunction,\n 'render-document': renderDocumentHandler as any as ServerFunction,\n 'render-document-slots': renderDocumentSlotsHandler as any as ServerFunction,\n 'render-list': renderListHandler as any as ServerFunction,\n 'table-state': buildTableStateHandler as any as ServerFunction,\n }\n\n const fn = serverFunctions[fnKey]\n\n if (!fn) {\n throw new Error(`Unknown Server Function: ${fnKey}`)\n }\n\n return fn(augmentedArgs)\n}\n"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ;AAC1C,SAASC,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AAEvC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,qBAAA,GAA+C,MAAOC,IAAA;EACjE,MAAM;IAAEC,IAAA,EAAMC,KAAK;IAAEF,IAAA,EAAMG,MAAM;IAAEC,MAAA,EAAQC,aAAa;IAAEC;EAAS,CAAE,GAAGN,IAAA;EAExE,MAAM;IAAEO;EAAG,CAAE,GAAG,MAAMT,OAAA,CAAQO,aAAA;EAE9B,MAAMG,aAAA,GAA+C;IACnD,GAAGL,MAAM;IACTG,SAAA;IACAC;EACF;EAEA,MAAME,eAAA,GAAkB;IACtB,yBAAyBjB,yBAAA;IACzB,cAAcC,qBAAA;IACd,mBAAmBE,qBAAA;IACnB,yBAAyBC,0BAAA;IACzB,eAAeC,iBAAA;IACf,eAAeH;EACjB;EAEA,MAAMgB,EAAA,GAAKD,eAAe,CAACP,KAAA,CAAM;EAEjC,IAAI,CAACQ,EAAA,EAAI;IACP,MAAM,IAAIC,KAAA,CAAM,4BAA4BT,KAAA,EAAO;EACrD;EAEA,OAAOQ,EAAA,CAAGF,aAAA;AACZ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Account/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAM7C,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAEnD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA8I5C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Account/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAM7C,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAEnD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA+I5C,CAAA"}
@@ -109,6 +109,7 @@ export const Account = async ({
109
109
  } = await getVersions({
110
110
  id: user.id,
111
111
  collectionConfig,
112
+ doc: data,
112
113
  docPermissions,
113
114
  locale: locale?.code,
114
115
  payload,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["DocumentInfoProvider","EditDepthProvider","HydrateAuthProvider","RenderServerComponent","buildFormState","notFound","React","DocumentHeader","getDocPreferences","getDocumentData","getDocumentPermissions","getIsLocked","getVersions","EditView","AccountClient","Settings","generateAccountMetadata","Account","initPageResult","params","searchParams","languageOptions","locale","permissions","req","i18n","payload","config","user","admin","theme","userSlug","routes","api","serverURL","collectionConfig","collections","find","collection","slug","id","data","collectionSlug","Error","docPreferences","docPermissions","hasPublishPermission","hasSavePermission","state","formState","code","operation","renderAllFields","schemaPath","currentEditor","isLocked","lastUpdateTime","isEditing","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","_jsx","AfterFields","apiURL","initialData","initialState","_jsxs","hideTabs","Component","components","views","account","Fallback","importMap","serverProps","routeSegments"],"sources":["../../../src/views/Account/index.tsx"],"sourcesContent":["import type { AdminViewProps } from 'payload'\n\nimport { DocumentInfoProvider, EditDepthProvider, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { buildFormState } from '@payloadcms/ui/utilities/buildFormState'\nimport { notFound } from 'next/navigation.js'\nimport React from 'react'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { getDocPreferences } from '../Document/getDocPreferences.js'\nimport { getDocumentData } from '../Document/getDocumentData.js'\nimport { getDocumentPermissions } from '../Document/getDocumentPermissions.js'\nimport { getIsLocked } from '../Document/getIsLocked.js'\nimport { getVersions } from '../Document/getVersions.js'\nimport { EditView } from '../Edit/index.js'\nimport { AccountClient } from './index.client.js'\nimport { Settings } from './Settings/index.js'\n\nexport { generateAccountMetadata } from './meta.js'\n\nexport const Account: React.FC<AdminViewProps> = async ({\n initPageResult,\n params,\n searchParams,\n}) => {\n const {\n languageOptions,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = initPageResult\n\n const {\n admin: { theme, user: userSlug },\n routes: { api },\n serverURL,\n } = config\n\n const collectionConfig = config.collections.find((collection) => collection.slug === userSlug)\n\n if (collectionConfig && user?.id) {\n // Fetch the data required for the view\n const data = await getDocumentData({\n id: user.id,\n collectionSlug: collectionConfig.slug,\n locale,\n payload,\n user,\n })\n\n if (!data) {\n throw new Error('not-found')\n }\n\n // Get document preferences\n const docPreferences = await getDocPreferences({\n id: user.id,\n collectionSlug: collectionConfig.slug,\n payload,\n user,\n })\n\n // Get permissions\n const { docPermissions, hasPublishPermission, hasSavePermission } =\n await getDocumentPermissions({\n id: user.id,\n collectionConfig,\n data,\n req,\n })\n\n // Build initial form state from data\n const { state: formState } = await buildFormState({\n id: user.id,\n collectionSlug: collectionConfig.slug,\n data,\n docPermissions,\n docPreferences,\n locale: locale?.code,\n operation: 'update',\n renderAllFields: true,\n req,\n schemaPath: collectionConfig.slug,\n })\n\n // Fetch document lock state\n const { currentEditor, isLocked, lastUpdateTime } = await getIsLocked({\n id: user.id,\n collectionConfig,\n isEditing: true,\n req,\n })\n\n // Get all versions required for UI\n const { hasPublishedDoc, mostRecentVersionIsAutosaved, unpublishedVersionCount, versionCount } =\n await getVersions({\n id: user.id,\n collectionConfig,\n docPermissions,\n locale: locale?.code,\n payload,\n user,\n })\n\n return (\n <DocumentInfoProvider\n AfterFields={<Settings i18n={i18n} languageOptions={languageOptions} theme={theme} />}\n apiURL={`${serverURL}${api}/${userSlug}${user?.id ? `/${user.id}` : ''}`}\n collectionSlug={userSlug}\n currentEditor={currentEditor}\n docPermissions={docPermissions}\n hasPublishedDoc={hasPublishedDoc}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={user?.id}\n initialData={data}\n initialState={formState}\n isEditing\n isLocked={isLocked}\n lastUpdateTime={lastUpdateTime}\n mostRecentVersionIsAutosaved={mostRecentVersionIsAutosaved}\n unpublishedVersionCount={unpublishedVersionCount}\n versionCount={versionCount}\n >\n <EditDepthProvider>\n <DocumentHeader\n collectionConfig={collectionConfig}\n hideTabs\n i18n={i18n}\n payload={payload}\n permissions={permissions}\n />\n <HydrateAuthProvider permissions={permissions} />\n {RenderServerComponent({\n Component: config.admin?.components?.views?.account?.Component,\n Fallback: EditView,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: [],\n searchParams,\n user,\n },\n })}\n <AccountClient />\n </EditDepthProvider>\n </DocumentInfoProvider>\n )\n }\n\n return notFound()\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["DocumentInfoProvider","EditDepthProvider","HydrateAuthProvider","RenderServerComponent","buildFormState","notFound","React","DocumentHeader","getDocPreferences","getDocumentData","getDocumentPermissions","getIsLocked","getVersions","EditView","AccountClient","Settings","generateAccountMetadata","Account","initPageResult","params","searchParams","languageOptions","locale","permissions","req","i18n","payload","config","user","admin","theme","userSlug","routes","api","serverURL","collectionConfig","collections","find","collection","slug","id","data","collectionSlug","Error","docPreferences","docPermissions","hasPublishPermission","hasSavePermission","state","formState","code","operation","renderAllFields","schemaPath","currentEditor","isLocked","lastUpdateTime","isEditing","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","doc","_jsx","AfterFields","apiURL","initialData","initialState","_jsxs","hideTabs","Component","components","views","account","Fallback","importMap","serverProps","routeSegments"],"sources":["../../../src/views/Account/index.tsx"],"sourcesContent":["import type { AdminViewProps } from 'payload'\n\nimport { DocumentInfoProvider, EditDepthProvider, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { buildFormState } from '@payloadcms/ui/utilities/buildFormState'\nimport { notFound } from 'next/navigation.js'\nimport React from 'react'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { getDocPreferences } from '../Document/getDocPreferences.js'\nimport { getDocumentData } from '../Document/getDocumentData.js'\nimport { getDocumentPermissions } from '../Document/getDocumentPermissions.js'\nimport { getIsLocked } from '../Document/getIsLocked.js'\nimport { getVersions } from '../Document/getVersions.js'\nimport { EditView } from '../Edit/index.js'\nimport { AccountClient } from './index.client.js'\nimport { Settings } from './Settings/index.js'\n\nexport { generateAccountMetadata } from './meta.js'\n\nexport const Account: React.FC<AdminViewProps> = async ({\n initPageResult,\n params,\n searchParams,\n}) => {\n const {\n languageOptions,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = initPageResult\n\n const {\n admin: { theme, user: userSlug },\n routes: { api },\n serverURL,\n } = config\n\n const collectionConfig = config.collections.find((collection) => collection.slug === userSlug)\n\n if (collectionConfig && user?.id) {\n // Fetch the data required for the view\n const data = await getDocumentData({\n id: user.id,\n collectionSlug: collectionConfig.slug,\n locale,\n payload,\n user,\n })\n\n if (!data) {\n throw new Error('not-found')\n }\n\n // Get document preferences\n const docPreferences = await getDocPreferences({\n id: user.id,\n collectionSlug: collectionConfig.slug,\n payload,\n user,\n })\n\n // Get permissions\n const { docPermissions, hasPublishPermission, hasSavePermission } =\n await getDocumentPermissions({\n id: user.id,\n collectionConfig,\n data,\n req,\n })\n\n // Build initial form state from data\n const { state: formState } = await buildFormState({\n id: user.id,\n collectionSlug: collectionConfig.slug,\n data,\n docPermissions,\n docPreferences,\n locale: locale?.code,\n operation: 'update',\n renderAllFields: true,\n req,\n schemaPath: collectionConfig.slug,\n })\n\n // Fetch document lock state\n const { currentEditor, isLocked, lastUpdateTime } = await getIsLocked({\n id: user.id,\n collectionConfig,\n isEditing: true,\n req,\n })\n\n // Get all versions required for UI\n const { hasPublishedDoc, mostRecentVersionIsAutosaved, unpublishedVersionCount, versionCount } =\n await getVersions({\n id: user.id,\n collectionConfig,\n doc: data,\n docPermissions,\n locale: locale?.code,\n payload,\n user,\n })\n\n return (\n <DocumentInfoProvider\n AfterFields={<Settings i18n={i18n} languageOptions={languageOptions} theme={theme} />}\n apiURL={`${serverURL}${api}/${userSlug}${user?.id ? `/${user.id}` : ''}`}\n collectionSlug={userSlug}\n currentEditor={currentEditor}\n docPermissions={docPermissions}\n hasPublishedDoc={hasPublishedDoc}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={user?.id}\n initialData={data}\n initialState={formState}\n isEditing\n isLocked={isLocked}\n lastUpdateTime={lastUpdateTime}\n mostRecentVersionIsAutosaved={mostRecentVersionIsAutosaved}\n unpublishedVersionCount={unpublishedVersionCount}\n versionCount={versionCount}\n >\n <EditDepthProvider>\n <DocumentHeader\n collectionConfig={collectionConfig}\n hideTabs\n i18n={i18n}\n payload={payload}\n permissions={permissions}\n />\n <HydrateAuthProvider permissions={permissions} />\n {RenderServerComponent({\n Component: config.admin?.components?.views?.account?.Component,\n Fallback: EditView,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: [],\n searchParams,\n user,\n },\n })}\n <AccountClient />\n </EditDepthProvider>\n </DocumentInfoProvider>\n )\n }\n\n return notFound()\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,13 @@
1
1
  import type { Payload, SanitizedCollectionConfig, SanitizedDocumentPermissions, SanitizedGlobalConfig, TypedUser } from 'payload';
2
2
  type Args = {
3
3
  collectionConfig?: SanitizedCollectionConfig;
4
+ /**
5
+ * Optional - performance optimization.
6
+ * If a document has been fetched before fetching versions, pass it here.
7
+ * If this document is set to published, we can skip the query to find out if a published document exists,
8
+ * as the passed in document is proof of its existence.
9
+ */
10
+ doc?: Record<string, any>;
4
11
  docPermissions: SanitizedDocumentPermissions;
5
12
  globalConfig?: SanitizedGlobalConfig;
6
13
  id?: number | string;
@@ -14,6 +21,6 @@ type Result = Promise<{
14
21
  unpublishedVersionCount: number;
15
22
  versionCount: number;
16
23
  }>;
17
- export declare const getVersions: ({ id: idArg, collectionConfig, docPermissions, globalConfig, locale, payload, user, }: Args) => Result;
24
+ export declare const getVersions: ({ id: idArg, collectionConfig, doc, docPermissions, globalConfig, locale, payload, user, }: Args) => Result;
18
25
  export {};
19
26
  //# sourceMappingURL=getVersions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getVersions.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,SAAS,EACV,MAAM,SAAS,CAAA;AAIhB,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,cAAc,EAAE,4BAA4B,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,KAAK,MAAM,GAAG,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,4BAA4B,EAAE,OAAO,CAAA;IACrC,uBAAuB,EAAE,MAAM,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;CACrB,CAAC,CAAA;AAIF,eAAO,MAAM,WAAW,0FAQrB,IAAI,KAAG,MA6MT,CAAA"}
1
+ {"version":3,"file":"getVersions.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,SAAS,EACV,MAAM,SAAS,CAAA;AAIhB,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,cAAc,EAAE,4BAA4B,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,KAAK,MAAM,GAAG,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,4BAA4B,EAAE,OAAO,CAAA;IACrC,uBAAuB,EAAE,MAAM,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;CACrB,CAAC,CAAA;AAKF,eAAO,MAAM,WAAW,+FASrB,IAAI,KAAG,MAqOT,CAAA"}
@@ -1,9 +1,11 @@
1
1
  import { sanitizeID } from '@payloadcms/ui/shared';
2
2
  // TODO: in the future, we can parallelize some of these queries
3
3
  // this will speed up the API by ~30-100ms or so
4
+ // Note from the future: I have attempted parallelizing these queries, but it made this function almost 2x slower.
4
5
  export const getVersions = async ({
5
6
  id: idArg,
6
7
  collectionConfig,
8
+ doc,
7
9
  docPermissions,
8
10
  globalConfig,
9
11
  locale,
@@ -11,7 +13,7 @@ export const getVersions = async ({
11
13
  user
12
14
  }) => {
13
15
  const id = sanitizeID(idArg);
14
- let publishedQuery;
16
+ let publishedDoc;
15
17
  let hasPublishedDoc = false;
16
18
  let mostRecentVersionIsAutosaved = false;
17
19
  let unpublishedVersionCount = 0;
@@ -38,30 +40,40 @@ export const getVersions = async ({
38
40
  };
39
41
  }
40
42
  if (versionsConfig?.drafts) {
41
- publishedQuery = await payload.find({
42
- collection: collectionConfig.slug,
43
- depth: 0,
44
- locale: locale || undefined,
45
- user,
46
- where: {
47
- and: [{
48
- or: [{
49
- _status: {
50
- equals: 'published'
51
- }
43
+ // Find out if a published document exists
44
+ if (doc?._status === 'published') {
45
+ publishedDoc = doc;
46
+ } else {
47
+ publishedDoc = (await payload.find({
48
+ collection: collectionConfig.slug,
49
+ depth: 0,
50
+ limit: 1,
51
+ locale: locale || undefined,
52
+ pagination: false,
53
+ select: {
54
+ updatedAt: true
55
+ },
56
+ user,
57
+ where: {
58
+ and: [{
59
+ or: [{
60
+ _status: {
61
+ equals: 'published'
62
+ }
63
+ }, {
64
+ _status: {
65
+ exists: false
66
+ }
67
+ }]
52
68
  }, {
53
- _status: {
54
- exists: false
69
+ id: {
70
+ equals: id
55
71
  }
56
72
  }]
57
- }, {
58
- id: {
59
- equals: id
60
- }
61
- }]
62
- }
63
- });
64
- if (publishedQuery.docs?.[0]) {
73
+ }
74
+ }))?.docs?.[0];
75
+ }
76
+ if (publishedDoc) {
65
77
  hasPublishedDoc = true;
66
78
  }
67
79
  if (versionsConfig.drafts?.autosave) {
@@ -69,6 +81,9 @@ export const getVersions = async ({
69
81
  collection: collectionConfig.slug,
70
82
  depth: 0,
71
83
  limit: 1,
84
+ select: {
85
+ autosave: true
86
+ },
72
87
  user,
73
88
  where: {
74
89
  and: [{
@@ -82,7 +97,7 @@ export const getVersions = async ({
82
97
  mostRecentVersionIsAutosaved = true;
83
98
  }
84
99
  }
85
- if (publishedQuery.docs?.[0]?.updatedAt) {
100
+ if (publishedDoc?.updatedAt) {
86
101
  ({
87
102
  totalDocs: unpublishedVersionCount
88
103
  } = await payload.countVersions({
@@ -99,7 +114,7 @@ export const getVersions = async ({
99
114
  }
100
115
  }, {
101
116
  updatedAt: {
102
- greater_than: publishedQuery.docs[0].updatedAt
117
+ greater_than: publishedDoc.updatedAt
103
118
  }
104
119
  }]
105
120
  }
@@ -110,6 +125,7 @@ export const getVersions = async ({
110
125
  totalDocs: versionCount
111
126
  } = await payload.countVersions({
112
127
  collection: collectionConfig.slug,
128
+ depth: 0,
113
129
  user,
114
130
  where: {
115
131
  and: [{
@@ -121,14 +137,22 @@ export const getVersions = async ({
121
137
  }));
122
138
  }
123
139
  if (globalConfig) {
140
+ // Find out if a published document exists
124
141
  if (versionsConfig?.drafts) {
125
- publishedQuery = await payload.findGlobal({
126
- slug: globalConfig.slug,
127
- depth: 0,
128
- locale,
129
- user
130
- });
131
- if (publishedQuery?._status === 'published') {
142
+ if (doc?._status === 'published') {
143
+ publishedDoc = doc;
144
+ } else {
145
+ publishedDoc = await payload.findGlobal({
146
+ slug: globalConfig.slug,
147
+ depth: 0,
148
+ locale,
149
+ select: {
150
+ updatedAt: true
151
+ },
152
+ user
153
+ });
154
+ }
155
+ if (publishedDoc?._status === 'published') {
132
156
  hasPublishedDoc = true;
133
157
  }
134
158
  if (versionsConfig.drafts?.autosave) {
@@ -144,7 +168,7 @@ export const getVersions = async ({
144
168
  mostRecentVersionIsAutosaved = true;
145
169
  }
146
170
  }
147
- if (publishedQuery?.updatedAt) {
171
+ if (publishedDoc?.updatedAt) {
148
172
  ({
149
173
  totalDocs: unpublishedVersionCount
150
174
  } = await payload.countGlobalVersions({
@@ -158,7 +182,7 @@ export const getVersions = async ({
158
182
  }
159
183
  }, {
160
184
  updatedAt: {
161
- greater_than: publishedQuery.updatedAt
185
+ greater_than: publishedDoc.updatedAt
162
186
  }
163
187
  }]
164
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getVersions.js","names":["sanitizeID","getVersions","id","idArg","collectionConfig","docPermissions","globalConfig","locale","payload","user","publishedQuery","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","entityConfig","versionsConfig","versions","shouldFetchVersions","Boolean","readVersions","drafts","find","collection","slug","depth","undefined","where","and","or","_status","equals","exists","docs","autosave","mostRecentVersion","findVersions","limit","parent","updatedAt","totalDocs","countVersions","greater_than","findGlobal","findGlobalVersions","select","countGlobalVersions","global"],"sources":["../../../src/views/Document/getVersions.ts"],"sourcesContent":["import type {\n Payload,\n SanitizedCollectionConfig,\n SanitizedDocumentPermissions,\n SanitizedGlobalConfig,\n TypedUser,\n} from 'payload'\n\nimport { sanitizeID } from '@payloadcms/ui/shared'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n docPermissions: SanitizedDocumentPermissions\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale?: string\n payload: Payload\n user: TypedUser\n}\n\ntype Result = Promise<{\n hasPublishedDoc: boolean\n mostRecentVersionIsAutosaved: boolean\n unpublishedVersionCount: number\n versionCount: number\n}>\n\n// TODO: in the future, we can parallelize some of these queries\n// this will speed up the API by ~30-100ms or so\nexport const getVersions = async ({\n id: idArg,\n collectionConfig,\n docPermissions,\n globalConfig,\n locale,\n payload,\n user,\n}: Args): Result => {\n const id = sanitizeID(idArg)\n let publishedQuery\n let hasPublishedDoc = false\n let mostRecentVersionIsAutosaved = false\n let unpublishedVersionCount = 0\n let versionCount = 0\n\n const entityConfig = collectionConfig || globalConfig\n const versionsConfig = entityConfig?.versions\n\n const shouldFetchVersions = Boolean(versionsConfig && docPermissions?.readVersions)\n\n if (!shouldFetchVersions) {\n const hasPublishedDoc = Boolean((collectionConfig && id) || globalConfig)\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (collectionConfig) {\n if (!id) {\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (versionsConfig?.drafts) {\n publishedQuery = await payload.find({\n collection: collectionConfig.slug,\n depth: 0,\n locale: locale || undefined,\n user,\n where: {\n and: [\n {\n or: [\n {\n _status: {\n equals: 'published',\n },\n },\n {\n _status: {\n exists: false,\n },\n },\n ],\n },\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n\n if (publishedQuery.docs?.[0]) {\n hasPublishedDoc = true\n }\n\n if (versionsConfig.drafts?.autosave) {\n const mostRecentVersion = await payload.findVersions({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n },\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedQuery.docs?.[0]?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedQuery.docs[0].updatedAt,\n },\n },\n ],\n },\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n },\n }))\n }\n\n if (globalConfig) {\n if (versionsConfig?.drafts) {\n publishedQuery = await payload.findGlobal({\n slug: globalConfig.slug,\n depth: 0,\n locale,\n user,\n })\n\n if (publishedQuery?._status === 'published') {\n hasPublishedDoc = true\n }\n\n if (versionsConfig.drafts?.autosave) {\n const mostRecentVersion = await payload.findGlobalVersions({\n slug: globalConfig.slug,\n limit: 1,\n select: {\n autosave: true,\n },\n user,\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedQuery?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countGlobalVersions({\n depth: 0,\n global: globalConfig.slug,\n user,\n where: {\n and: [\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedQuery.updatedAt,\n },\n },\n ],\n },\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countGlobalVersions({\n depth: 0,\n global: globalConfig.slug,\n user,\n }))\n }\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"getVersions.js","names":["sanitizeID","getVersions","id","idArg","collectionConfig","doc","docPermissions","globalConfig","locale","payload","user","publishedDoc","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","entityConfig","versionsConfig","versions","shouldFetchVersions","Boolean","readVersions","drafts","_status","find","collection","slug","depth","limit","undefined","pagination","select","updatedAt","where","and","or","equals","exists","docs","autosave","mostRecentVersion","findVersions","parent","totalDocs","countVersions","greater_than","findGlobal","findGlobalVersions","countGlobalVersions","global"],"sources":["../../../src/views/Document/getVersions.ts"],"sourcesContent":["import type {\n Payload,\n SanitizedCollectionConfig,\n SanitizedDocumentPermissions,\n SanitizedGlobalConfig,\n TypedUser,\n} from 'payload'\n\nimport { sanitizeID } from '@payloadcms/ui/shared'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n /**\n * Optional - performance optimization.\n * If a document has been fetched before fetching versions, pass it here.\n * If this document is set to published, we can skip the query to find out if a published document exists,\n * as the passed in document is proof of its existence.\n */\n doc?: Record<string, any>\n docPermissions: SanitizedDocumentPermissions\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale?: string\n payload: Payload\n user: TypedUser\n}\n\ntype Result = Promise<{\n hasPublishedDoc: boolean\n mostRecentVersionIsAutosaved: boolean\n unpublishedVersionCount: number\n versionCount: number\n}>\n\n// TODO: in the future, we can parallelize some of these queries\n// this will speed up the API by ~30-100ms or so\n// Note from the future: I have attempted parallelizing these queries, but it made this function almost 2x slower.\nexport const getVersions = async ({\n id: idArg,\n collectionConfig,\n doc,\n docPermissions,\n globalConfig,\n locale,\n payload,\n user,\n}: Args): Result => {\n const id = sanitizeID(idArg)\n let publishedDoc\n let hasPublishedDoc = false\n let mostRecentVersionIsAutosaved = false\n let unpublishedVersionCount = 0\n let versionCount = 0\n\n const entityConfig = collectionConfig || globalConfig\n const versionsConfig = entityConfig?.versions\n\n const shouldFetchVersions = Boolean(versionsConfig && docPermissions?.readVersions)\n\n if (!shouldFetchVersions) {\n const hasPublishedDoc = Boolean((collectionConfig && id) || globalConfig)\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (collectionConfig) {\n if (!id) {\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (versionsConfig?.drafts) {\n // Find out if a published document exists\n if (doc?._status === 'published') {\n publishedDoc = doc\n } else {\n publishedDoc = (\n await payload.find({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n locale: locale || undefined,\n pagination: false,\n select: {\n updatedAt: true,\n },\n user,\n where: {\n and: [\n {\n or: [\n {\n _status: {\n equals: 'published',\n },\n },\n {\n _status: {\n exists: false,\n },\n },\n ],\n },\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n )?.docs?.[0]\n }\n\n if (publishedDoc) {\n hasPublishedDoc = true\n }\n\n if (versionsConfig.drafts?.autosave) {\n const mostRecentVersion = await payload.findVersions({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n select: {\n autosave: true,\n },\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n },\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedDoc?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedDoc.updatedAt,\n },\n },\n ],\n },\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n depth: 0,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n },\n }))\n }\n\n if (globalConfig) {\n // Find out if a published document exists\n if (versionsConfig?.drafts) {\n if (doc?._status === 'published') {\n publishedDoc = doc\n } else {\n publishedDoc = await payload.findGlobal({\n slug: globalConfig.slug,\n depth: 0,\n locale,\n select: {\n updatedAt: true,\n },\n user,\n })\n }\n\n if (publishedDoc?._status === 'published') {\n hasPublishedDoc = true\n }\n\n if (versionsConfig.drafts?.autosave) {\n const mostRecentVersion = await payload.findGlobalVersions({\n slug: globalConfig.slug,\n limit: 1,\n select: {\n autosave: true,\n },\n user,\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedDoc?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countGlobalVersions({\n depth: 0,\n global: globalConfig.slug,\n user,\n where: {\n and: [\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedDoc.updatedAt,\n },\n },\n ],\n },\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countGlobalVersions({\n depth: 0,\n global: globalConfig.slug,\n user,\n }))\n }\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,4 @@
1
- import type { I18nClient } from '@payloadcms/translations';
2
- import type { ClientConfig, Data, DocumentPreferences, FormState, ImportMap, PayloadRequest, SanitizedConfig } from 'payload';
3
- export declare const getClientConfig: (args: {
4
- config: SanitizedConfig;
5
- i18n: I18nClient;
6
- importMap: ImportMap;
7
- }) => ClientConfig;
1
+ import type { Data, DocumentPreferences, FormState, PayloadRequest } from 'payload';
8
2
  type RenderDocumentResult = {
9
3
  data: any;
10
4
  Document: React.ReactNode;
@@ -17,6 +11,7 @@ export declare const renderDocumentHandler: (args: {
17
11
  drawerSlug?: string;
18
12
  initialData?: Data;
19
13
  initialState?: FormState;
14
+ overrideEntityVisibility?: boolean;
20
15
  redirectAfterDelete: boolean;
21
16
  redirectAfterDuplicate: boolean;
22
17
  req: PayloadRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"handleServerFunction.d.ts","sourceRoot":"","sources":["../../../src/views/Document/handleServerFunction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,YAAY,EACZ,IAAI,EACJ,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,cAAc,EACd,eAAe,EAEhB,MAAM,SAAS,CAAA;AAahB,eAAO,MAAM,eAAe,SAAU;IACpC,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,YAcH,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,GAAG,CAAA;IACT,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,EAAE,mBAAmB,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,qBAAqB,SAAgB;IAChD,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,oBAAoB,CA2I/B,CAAA"}
1
+ {"version":3,"file":"handleServerFunction.d.ts","sourceRoot":"","sources":["../../../src/views/Document/handleServerFunction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAA;AAQpG,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,GAAG,CAAA;IACT,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,EAAE,mBAAmB,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,qBAAqB,SAAgB;IAChD,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,oBAAoB,CA6I/B,CAAA"}
@@ -1,26 +1,7 @@
1
+ import { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig';
1
2
  import { headers as getHeaders } from 'next/headers.js';
2
- import { createClientConfig, getAccessResults, isEntityHidden, parseCookies } from 'payload';
3
+ import { getAccessResults, isEntityHidden, parseCookies } from 'payload';
3
4
  import { renderDocument } from './index.js';
4
- let cachedClientConfig = global._payload_clientConfig;
5
- if (!cachedClientConfig) {
6
- cachedClientConfig = global._payload_clientConfig = null;
7
- }
8
- export const getClientConfig = args => {
9
- const {
10
- config,
11
- i18n,
12
- importMap
13
- } = args;
14
- if (cachedClientConfig && process.env.NODE_ENV !== 'development') {
15
- return cachedClientConfig;
16
- }
17
- cachedClientConfig = createClientConfig({
18
- config,
19
- i18n,
20
- importMap
21
- });
22
- return cachedClientConfig;
23
- };
24
5
  export const renderDocumentHandler = async args => {
25
6
  const {
26
7
  collectionSlug,
@@ -28,6 +9,7 @@ export const renderDocumentHandler = async args => {
28
9
  docID,
29
10
  drawerSlug,
30
11
  initialData,
12
+ overrideEntityVisibility,
31
13
  redirectAfterDelete,
32
14
  redirectAfterDuplicate,
33
15
  req,
@@ -136,13 +118,14 @@ export const renderDocumentHandler = async args => {
136
118
  collectionConfig: payload.config.collections.find(collection => collection.slug === collectionSlug),
137
119
  cookies,
138
120
  docID,
139
- globalConfig: payload.config.globals.find(global1 => global1.slug === collectionSlug),
121
+ globalConfig: payload.config.globals.find(global => global.slug === collectionSlug),
140
122
  languageOptions: undefined,
141
123
  permissions,
142
124
  req,
143
125
  translations: undefined,
144
126
  visibleEntities
145
127
  },
128
+ overrideEntityVisibility,
146
129
  params: {
147
130
  segments: ['collections', collectionSlug, docID]
148
131
  },
@@ -1 +1 @@
1
- {"version":3,"file":"handleServerFunction.js","names":["headers","getHeaders","createClientConfig","getAccessResults","isEntityHidden","parseCookies","renderDocument","cachedClientConfig","global","_payload_clientConfig","getClientConfig","args","config","i18n","importMap","process","env","NODE_ENV","renderDocumentHandler","collectionSlug","disableActions","docID","drawerSlug","initialData","redirectAfterDelete","redirectAfterDuplicate","req","payload","user","cookies","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","preferences","preferencesKey","where","and","key","equals","id","then","res","value","visibleEntities","map","slug","hidden","filter","Boolean","globals","permissions","data","Document","initPageResult","collectionConfig","globalConfig","global1","languageOptions","undefined","translations","params","segments","searchParams"],"sources":["../../../src/views/Document/handleServerFunction.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n ClientConfig,\n Data,\n DocumentPreferences,\n FormState,\n ImportMap,\n PayloadRequest,\n SanitizedConfig,\n VisibleEntities,\n} from 'payload'\n\nimport { headers as getHeaders } from 'next/headers.js'\nimport { createClientConfig, getAccessResults, isEntityHidden, parseCookies } from 'payload'\n\nimport { renderDocument } from './index.js'\n\nlet cachedClientConfig = global._payload_clientConfig\n\nif (!cachedClientConfig) {\n cachedClientConfig = global._payload_clientConfig = null\n}\n\nexport const getClientConfig = (args: {\n config: SanitizedConfig\n i18n: I18nClient\n importMap: ImportMap\n}): ClientConfig => {\n const { config, i18n, importMap } = args\n\n if (cachedClientConfig && process.env.NODE_ENV !== 'development') {\n return cachedClientConfig\n }\n\n cachedClientConfig = createClientConfig({\n config,\n i18n,\n importMap,\n })\n\n return cachedClientConfig\n}\n\ntype RenderDocumentResult = {\n data: any\n Document: React.ReactNode\n preferences: DocumentPreferences\n}\n\nexport const renderDocumentHandler = async (args: {\n collectionSlug: string\n disableActions?: boolean\n docID: string\n drawerSlug?: string\n initialData?: Data\n initialState?: FormState\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n req: PayloadRequest\n}): Promise<RenderDocumentResult> => {\n const {\n collectionSlug,\n disableActions,\n docID,\n drawerSlug,\n initialData,\n redirectAfterDelete,\n redirectAfterDuplicate,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = args\n\n const headers = await getHeaders()\n\n const cookies = parseCookies(headers)\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: req.payload.importMap,\n })\n\n let preferences: DocumentPreferences\n\n if (docID) {\n const preferencesKey = `${collectionSlug}-edit-${docID}`\n\n preferences = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as DocumentPreferences)\n }\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const permissions = await getAccessResults({\n req,\n })\n\n const { data, Document } = await renderDocument({\n clientConfig,\n disableActions,\n drawerSlug,\n importMap: payload.importMap,\n initialData,\n initPageResult: {\n collectionConfig: payload.config.collections.find(\n (collection) => collection.slug === collectionSlug,\n ),\n cookies,\n docID,\n globalConfig: payload.config.globals.find((global) => global.slug === collectionSlug),\n languageOptions: undefined, // TODO\n permissions,\n req,\n translations: undefined, // TODO\n visibleEntities,\n },\n params: {\n segments: ['collections', collectionSlug, docID],\n },\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams: {},\n })\n\n return {\n data,\n Document,\n preferences,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"handleServerFunction.js","names":["getClientConfig","headers","getHeaders","getAccessResults","isEntityHidden","parseCookies","renderDocument","renderDocumentHandler","args","collectionSlug","disableActions","docID","drawerSlug","initialData","overrideEntityVisibility","redirectAfterDelete","redirectAfterDuplicate","req","i18n","payload","config","user","cookies","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","importMap","preferences","preferencesKey","where","and","key","equals","id","then","res","value","visibleEntities","map","slug","hidden","filter","Boolean","globals","permissions","data","Document","initPageResult","collectionConfig","globalConfig","global","languageOptions","undefined","translations","params","segments","searchParams"],"sources":["../../../src/views/Document/handleServerFunction.tsx"],"sourcesContent":["import type { Data, DocumentPreferences, FormState, PayloadRequest, VisibleEntities } from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { getAccessResults, isEntityHidden, parseCookies } from 'payload'\n\nimport { renderDocument } from './index.js'\n\ntype RenderDocumentResult = {\n data: any\n Document: React.ReactNode\n preferences: DocumentPreferences\n}\n\nexport const renderDocumentHandler = async (args: {\n collectionSlug: string\n disableActions?: boolean\n docID: string\n drawerSlug?: string\n initialData?: Data\n initialState?: FormState\n overrideEntityVisibility?: boolean\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n req: PayloadRequest\n}): Promise<RenderDocumentResult> => {\n const {\n collectionSlug,\n disableActions,\n docID,\n drawerSlug,\n initialData,\n overrideEntityVisibility,\n redirectAfterDelete,\n redirectAfterDuplicate,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = args\n\n const headers = await getHeaders()\n\n const cookies = parseCookies(headers)\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: req.payload.importMap,\n })\n\n let preferences: DocumentPreferences\n\n if (docID) {\n const preferencesKey = `${collectionSlug}-edit-${docID}`\n\n preferences = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as DocumentPreferences)\n }\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const permissions = await getAccessResults({\n req,\n })\n\n const { data, Document } = await renderDocument({\n clientConfig,\n disableActions,\n drawerSlug,\n importMap: payload.importMap,\n initialData,\n initPageResult: {\n collectionConfig: payload.config.collections.find(\n (collection) => collection.slug === collectionSlug,\n ),\n cookies,\n docID,\n globalConfig: payload.config.globals.find((global) => global.slug === collectionSlug),\n languageOptions: undefined, // TODO\n permissions,\n req,\n translations: undefined, // TODO\n visibleEntities,\n },\n overrideEntityVisibility,\n params: {\n segments: ['collections', collectionSlug, docID],\n },\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams: {},\n })\n\n return {\n data,\n Document,\n preferences,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,9 @@ import type { AdminViewProps, Data } from 'payload';
2
2
  import React from 'react';
3
3
  import type { GenerateEditViewMetadata } from './getMetaBySegment.js';
4
4
  export declare const generateMetadata: GenerateEditViewMetadata;
5
- export declare const renderDocument: ({ disableActions, drawerSlug, importMap, initialData, initPageResult, params, redirectAfterDelete, redirectAfterDuplicate, searchParams, }: AdminViewProps) => Promise<{
5
+ export declare const renderDocument: ({ disableActions, drawerSlug, importMap, initialData, initPageResult, overrideEntityVisibility, params, redirectAfterDelete, redirectAfterDuplicate, searchParams, }: {
6
+ overrideEntityVisibility?: boolean;
7
+ } & AdminViewProps) => Promise<{
6
8
  data: Data;
7
9
  Document: React.ReactNode;
8
10
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,IAAI,EAIL,MAAM,SAAS,CAAA;AAQhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAcrE,eAAO,MAAM,gBAAgB,EAAE,wBAAiE,CAAA;AAKhG,eAAO,MAAM,cAAc,+IAUxB,cAAc,KAAG,OAAO,CAAC;IAC1B,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAwUA,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAc7C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAA6C,MAAM,SAAS,CAAA;AAQ9F,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAcrE,eAAO,MAAM,gBAAgB,EAAE,wBAAiE,CAAA;AAKhG,eAAO,MAAM,cAAc,yKAWxB;IACD,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC,GAAG,cAAc,KAAG,OAAO,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CA4UA,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAc7C,CAAA"}
@@ -26,6 +26,7 @@ export const renderDocument = async ({
26
26
  importMap,
27
27
  initialData,
28
28
  initPageResult,
29
+ overrideEntityVisibility,
29
30
  params,
30
31
  redirectAfterDelete,
31
32
  redirectAfterDuplicate,
@@ -123,6 +124,7 @@ export const renderDocument = async ({
123
124
  }] = await Promise.all([getVersions({
124
125
  id: idFromArgs,
125
126
  collectionConfig,
127
+ doc,
126
128
  docPermissions,
127
129
  globalConfig,
128
130
  locale: locale?.code,
@@ -155,7 +157,7 @@ export const renderDocument = async ({
155
157
  user
156
158
  };
157
159
  if (collectionConfig) {
158
- if (!visibleEntities?.collections?.find(visibleSlug => visibleSlug === collectionSlug)) {
160
+ if (!visibleEntities?.collections?.find(visibleSlug => visibleSlug === collectionSlug) && !overrideEntityVisibility) {
159
161
  throw new Error('not-found');
160
162
  }
161
163
  const params = new URLSearchParams();