@payloadcms/next 3.0.0-beta.20 → 3.0.0-beta.22

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.
@@ -5,4 +5,5 @@ export { createPayloadRequest } from '../utilities/createPayloadRequest.js';
5
5
  export { getNextRequestI18n } from '../utilities/getNextRequestI18n.js';
6
6
  export { getPayloadHMR, reload } from '../utilities/getPayloadHMR.js';
7
7
  export { headersWithCors } from '../utilities/headersWithCors.js';
8
+ export { initPage } from '../utilities/initPage.js';
8
9
  //# sourceMappingURL=utilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/exports/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAA;AACjF,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/exports/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAA;AACjF,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA"}
@@ -5,5 +5,6 @@ export { createPayloadRequest } from '../utilities/createPayloadRequest.js';
5
5
  export { getNextRequestI18n } from '../utilities/getNextRequestI18n.js';
6
6
  export { getPayloadHMR, reload } from '../utilities/getPayloadHMR.js';
7
7
  export { headersWithCors } from '../utilities/headersWithCors.js';
8
+ export { initPage } from '../utilities/initPage.js';
8
9
 
9
10
  //# sourceMappingURL=utilities.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/exports/utilities.ts"],"sourcesContent":["export { addDataAndFileToRequest } from '../utilities/addDataAndFileToRequest.js'\nexport { addLocalesToRequestFromData, sanitizeLocales } from '../utilities/addLocalesToRequest.js'\nexport { traverseFields } from '../utilities/buildFieldSchemaMap/traverseFields.js'\nexport { createPayloadRequest } from '../utilities/createPayloadRequest.js'\nexport { getNextRequestI18n } from '../utilities/getNextRequestI18n.js'\nexport { getPayloadHMR, reload } from '../utilities/getPayloadHMR.js'\nexport { headersWithCors } from '../utilities/headersWithCors.js'\n"],"names":["addDataAndFileToRequest","addLocalesToRequestFromData","sanitizeLocales","traverseFields","createPayloadRequest","getNextRequestI18n","getPayloadHMR","reload","headersWithCors"],"rangeMappings":";;;;;;","mappings":"AAAA,SAASA,uBAAuB,QAAQ,0CAAyC;AACjF,SAASC,2BAA2B,EAAEC,eAAe,QAAQ,sCAAqC;AAClG,SAASC,cAAc,QAAQ,qDAAoD;AACnF,SAASC,oBAAoB,QAAQ,uCAAsC;AAC3E,SAASC,kBAAkB,QAAQ,qCAAoC;AACvE,SAASC,aAAa,EAAEC,MAAM,QAAQ,gCAA+B;AACrE,SAASC,eAAe,QAAQ,kCAAiC"}
1
+ {"version":3,"sources":["../../src/exports/utilities.ts"],"sourcesContent":["export { addDataAndFileToRequest } from '../utilities/addDataAndFileToRequest.js'\nexport { addLocalesToRequestFromData, sanitizeLocales } from '../utilities/addLocalesToRequest.js'\nexport { traverseFields } from '../utilities/buildFieldSchemaMap/traverseFields.js'\nexport { createPayloadRequest } from '../utilities/createPayloadRequest.js'\nexport { getNextRequestI18n } from '../utilities/getNextRequestI18n.js'\nexport { getPayloadHMR, reload } from '../utilities/getPayloadHMR.js'\nexport { headersWithCors } from '../utilities/headersWithCors.js'\nexport { initPage } from '../utilities/initPage.js'\n"],"names":["addDataAndFileToRequest","addLocalesToRequestFromData","sanitizeLocales","traverseFields","createPayloadRequest","getNextRequestI18n","getPayloadHMR","reload","headersWithCors","initPage"],"rangeMappings":";;;;;;;","mappings":"AAAA,SAASA,uBAAuB,QAAQ,0CAAyC;AACjF,SAASC,2BAA2B,EAAEC,eAAe,QAAQ,sCAAqC;AAClG,SAASC,cAAc,QAAQ,qDAAoD;AACnF,SAASC,oBAAoB,QAAQ,uCAAsC;AAC3E,SAASC,kBAAkB,QAAQ,qCAAoC;AACvE,SAASC,aAAa,EAAEC,MAAM,QAAQ,gCAA+B;AACrE,SAASC,eAAe,QAAQ,kCAAiC;AACjE,SAASC,QAAQ,QAAQ,2BAA0B"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../../src/routes/rest/buildFormState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA8B,sBAAsB,EAAc,MAAM,eAAe,CAAA;AAMnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAalF,eAAO,MAAM,iBAAiB,QAAS,sBAAsB,mBAQ5D,CAAA;AAED,eAAO,MAAM,cAAc,YAAmB;IAAE,GAAG,EAAE,sBAAsB,CAAA;CAAE,sBA6M5E,CAAA"}
1
+ {"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../../src/routes/rest/buildFormState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA8B,sBAAsB,EAAc,MAAM,eAAe,CAAA;AAMnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAalF,eAAO,MAAM,iBAAiB,QAAS,sBAAsB,mBAQ5D,CAAA;AAED,eAAO,MAAM,cAAc,YAAmB;IAAE,GAAG,EAAE,sBAAsB,CAAA;CAAE,sBA+M5E,CAAA"}
@@ -179,6 +179,10 @@ export const buildFormState = async ({ req })=>{
179
179
  status: httpStatus.OK
180
180
  });
181
181
  } catch (err) {
182
+ req.payload.logger.error({
183
+ err,
184
+ msg: `There was an error building form state`
185
+ });
182
186
  return routeError({
183
187
  config: req.payload.config,
184
188
  err,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/rest/buildFormState.ts"],"sourcesContent":["import type { BuildFormStateArgs } from '@payloadcms/ui/forms/buildStateFromSchema'\nimport type { DocumentPreferences, Field, PayloadRequestWithData, TypeWithID } from 'payload/types'\n\nimport { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema'\nimport { reduceFieldsToValues } from '@payloadcms/ui/utilities/reduceFieldsToValues'\nimport httpStatus from 'http-status'\n\nimport type { FieldSchemaMap } from '../../utilities/buildFieldSchemaMap/types.js'\n\nimport { buildFieldSchemaMap } from '../../utilities/buildFieldSchemaMap/index.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\nimport { routeError } from './routeError.js'\n\nlet cached = global._payload_fieldSchemaMap\n\nif (!cached) {\n // eslint-disable-next-line no-multi-assign\n cached = global._payload_fieldSchemaMap = null\n}\n\nexport const getFieldSchemaMap = (req: PayloadRequestWithData): FieldSchemaMap => {\n if (cached && process.env.NODE_ENV !== 'development') {\n return cached\n }\n\n cached = buildFieldSchemaMap(req)\n\n return cached\n}\n\nexport const buildFormState = async ({ req }: { req: PayloadRequestWithData }) => {\n const headers = headersWithCors({\n headers: new Headers(),\n req,\n })\n\n try {\n const reqData: BuildFormStateArgs = req.data as BuildFormStateArgs\n const { collectionSlug, formState, globalSlug, locale, operation, schemaPath } = reqData\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = req.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 return Response.json(null, {\n headers,\n status: httpStatus.UNAUTHORIZED,\n })\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n return Response.json(null, {\n headers,\n status: httpStatus.UNAUTHORIZED,\n })\n }\n } else {\n const hasUsers = await req.payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n return Response.json(null, {\n headers,\n status: httpStatus.UNAUTHORIZED,\n })\n }\n }\n\n const fieldSchemaMap = getFieldSchemaMap(req)\n\n const id = collectionSlug ? reqData.id : undefined\n const schemaPathSegments = schemaPath.split('.')\n\n let fieldSchema: Field[]\n\n if (schemaPathSegments.length === 1) {\n if (req.payload.collections[schemaPath]) {\n fieldSchema = req.payload.collections[schemaPath].config.fields\n } else {\n fieldSchema = req.payload.config.globals.find(\n (global) => global.slug === schemaPath,\n )?.fields\n }\n } else if (fieldSchemaMap.has(schemaPath)) {\n fieldSchema = fieldSchemaMap.get(schemaPath)\n }\n\n if (!fieldSchema) {\n return Response.json(\n {\n message: 'Could not find field schema for given path',\n },\n {\n headers,\n status: httpStatus.BAD_REQUEST,\n },\n )\n }\n\n let docPreferences = reqData.docPreferences\n let data = reqData.data\n\n const promises: {\n data?: Promise<void>\n preferences?: Promise<void>\n } = {}\n\n // If the request does not include doc preferences,\n // we should fetch them. This is useful for DocumentInfoProvider\n // as it reduces the amount of client-side fetches necessary\n // when we fetch data for the Edit view\n if (!docPreferences) {\n let preferencesKey\n\n if (collectionSlug && id) {\n preferencesKey = `collection-${collectionSlug}-${id}`\n }\n\n if (globalSlug) {\n preferencesKey = `global-${globalSlug}`\n }\n\n if (preferencesKey) {\n const fetchPreferences = async () => {\n const preferencesResult = (await req.payload.find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n key: {\n equals: preferencesKey,\n },\n },\n })) as unknown as { docs: { value: DocumentPreferences }[] }\n\n if (preferencesResult?.docs?.[0]?.value) docPreferences = preferencesResult.docs[0].value\n }\n\n promises.preferences = fetchPreferences()\n }\n }\n\n // If there is a form state,\n // then we can deduce data from that form state\n if (formState) data = reduceFieldsToValues(formState, true)\n\n // If we do not have data at this point,\n // we can fetch it. This is useful for DocumentInfoProvider\n // to reduce the amount of fetches required\n if (!data) {\n const fetchData = async () => {\n let resolvedData: TypeWithID\n\n if (collectionSlug && id) {\n resolvedData = await req.payload.findByID({\n id,\n collection: collectionSlug,\n depth: 0,\n draft: true,\n fallbackLocale: null,\n locale,\n overrideAccess: false,\n user: req.user,\n })\n }\n\n if (globalSlug && schemaPath === globalSlug) {\n resolvedData = await req.payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n draft: true,\n fallbackLocale: null,\n locale,\n overrideAccess: false,\n user: req.user,\n })\n }\n\n data = resolvedData\n }\n\n promises.data = fetchData()\n }\n\n if (Object.keys(promises).length > 0) {\n await Promise.all(Object.values(promises))\n }\n\n const result = await buildStateFromSchema({\n id,\n data,\n fieldSchema,\n operation,\n preferences: docPreferences || { fields: {} },\n req,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (req.payload.collections[collectionSlug]?.config?.upload && formState.file) {\n result.file = formState.file\n }\n\n if (\n req.payload.collections[collectionSlug]?.config?.auth &&\n !req.payload.collections[collectionSlug].config.auth.disableLocalStrategy\n ) {\n if (formState.password) result.password = formState.password\n if (formState.email) result.email = formState.email\n }\n }\n\n return Response.json(result, {\n headers,\n status: httpStatus.OK,\n })\n } catch (err) {\n return routeError({\n config: req.payload.config,\n err,\n req,\n })\n }\n}\n"],"names":["buildStateFromSchema","reduceFieldsToValues","httpStatus","buildFieldSchemaMap","headersWithCors","routeError","cached","global","_payload_fieldSchemaMap","getFieldSchemaMap","req","process","env","NODE_ENV","buildFormState","headers","Headers","reqData","data","collectionSlug","formState","globalSlug","locale","operation","schemaPath","incomingUserSlug","user","collection","adminUserSlug","payload","config","admin","adminAccessFunction","collections","access","canAccessAdmin","Response","json","status","UNAUTHORIZED","hasUsers","find","depth","limit","pagination","docs","length","fieldSchemaMap","id","undefined","schemaPathSegments","split","fieldSchema","fields","globals","slug","has","get","message","BAD_REQUEST","docPreferences","promises","preferencesKey","fetchPreferences","preferencesResult","where","key","equals","value","preferences","fetchData","resolvedData","findByID","draft","fallbackLocale","overrideAccess","findGlobal","Object","keys","Promise","all","values","result","upload","file","auth","disableLocalStrategy","password","email","OK","err"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/routes/rest/buildFormState.ts"],"sourcesContent":["import type { BuildFormStateArgs } from '@payloadcms/ui/forms/buildStateFromSchema'\nimport type { DocumentPreferences, Field, PayloadRequestWithData, TypeWithID } from 'payload/types'\n\nimport { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema'\nimport { reduceFieldsToValues } from '@payloadcms/ui/utilities/reduceFieldsToValues'\nimport httpStatus from 'http-status'\n\nimport type { FieldSchemaMap } from '../../utilities/buildFieldSchemaMap/types.js'\n\nimport { buildFieldSchemaMap } from '../../utilities/buildFieldSchemaMap/index.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\nimport { routeError } from './routeError.js'\n\nlet cached = global._payload_fieldSchemaMap\n\nif (!cached) {\n // eslint-disable-next-line no-multi-assign\n cached = global._payload_fieldSchemaMap = null\n}\n\nexport const getFieldSchemaMap = (req: PayloadRequestWithData): FieldSchemaMap => {\n if (cached && process.env.NODE_ENV !== 'development') {\n return cached\n }\n\n cached = buildFieldSchemaMap(req)\n\n return cached\n}\n\nexport const buildFormState = async ({ req }: { req: PayloadRequestWithData }) => {\n const headers = headersWithCors({\n headers: new Headers(),\n req,\n })\n\n try {\n const reqData: BuildFormStateArgs = req.data as BuildFormStateArgs\n const { collectionSlug, formState, globalSlug, locale, operation, schemaPath } = reqData\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = req.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 return Response.json(null, {\n headers,\n status: httpStatus.UNAUTHORIZED,\n })\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n return Response.json(null, {\n headers,\n status: httpStatus.UNAUTHORIZED,\n })\n }\n } else {\n const hasUsers = await req.payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n return Response.json(null, {\n headers,\n status: httpStatus.UNAUTHORIZED,\n })\n }\n }\n\n const fieldSchemaMap = getFieldSchemaMap(req)\n\n const id = collectionSlug ? reqData.id : undefined\n const schemaPathSegments = schemaPath.split('.')\n\n let fieldSchema: Field[]\n\n if (schemaPathSegments.length === 1) {\n if (req.payload.collections[schemaPath]) {\n fieldSchema = req.payload.collections[schemaPath].config.fields\n } else {\n fieldSchema = req.payload.config.globals.find(\n (global) => global.slug === schemaPath,\n )?.fields\n }\n } else if (fieldSchemaMap.has(schemaPath)) {\n fieldSchema = fieldSchemaMap.get(schemaPath)\n }\n\n if (!fieldSchema) {\n return Response.json(\n {\n message: 'Could not find field schema for given path',\n },\n {\n headers,\n status: httpStatus.BAD_REQUEST,\n },\n )\n }\n\n let docPreferences = reqData.docPreferences\n let data = reqData.data\n\n const promises: {\n data?: Promise<void>\n preferences?: Promise<void>\n } = {}\n\n // If the request does not include doc preferences,\n // we should fetch them. This is useful for DocumentInfoProvider\n // as it reduces the amount of client-side fetches necessary\n // when we fetch data for the Edit view\n if (!docPreferences) {\n let preferencesKey\n\n if (collectionSlug && id) {\n preferencesKey = `collection-${collectionSlug}-${id}`\n }\n\n if (globalSlug) {\n preferencesKey = `global-${globalSlug}`\n }\n\n if (preferencesKey) {\n const fetchPreferences = async () => {\n const preferencesResult = (await req.payload.find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n key: {\n equals: preferencesKey,\n },\n },\n })) as unknown as { docs: { value: DocumentPreferences }[] }\n\n if (preferencesResult?.docs?.[0]?.value) docPreferences = preferencesResult.docs[0].value\n }\n\n promises.preferences = fetchPreferences()\n }\n }\n\n // If there is a form state,\n // then we can deduce data from that form state\n if (formState) data = reduceFieldsToValues(formState, true)\n\n // If we do not have data at this point,\n // we can fetch it. This is useful for DocumentInfoProvider\n // to reduce the amount of fetches required\n if (!data) {\n const fetchData = async () => {\n let resolvedData: TypeWithID\n\n if (collectionSlug && id) {\n resolvedData = await req.payload.findByID({\n id,\n collection: collectionSlug,\n depth: 0,\n draft: true,\n fallbackLocale: null,\n locale,\n overrideAccess: false,\n user: req.user,\n })\n }\n\n if (globalSlug && schemaPath === globalSlug) {\n resolvedData = await req.payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n draft: true,\n fallbackLocale: null,\n locale,\n overrideAccess: false,\n user: req.user,\n })\n }\n\n data = resolvedData\n }\n\n promises.data = fetchData()\n }\n\n if (Object.keys(promises).length > 0) {\n await Promise.all(Object.values(promises))\n }\n\n const result = await buildStateFromSchema({\n id,\n data,\n fieldSchema,\n operation,\n preferences: docPreferences || { fields: {} },\n req,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (req.payload.collections[collectionSlug]?.config?.upload && formState.file) {\n result.file = formState.file\n }\n\n if (\n req.payload.collections[collectionSlug]?.config?.auth &&\n !req.payload.collections[collectionSlug].config.auth.disableLocalStrategy\n ) {\n if (formState.password) result.password = formState.password\n if (formState.email) result.email = formState.email\n }\n }\n\n return Response.json(result, {\n headers,\n status: httpStatus.OK,\n })\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n return routeError({\n config: req.payload.config,\n err,\n req,\n })\n }\n}\n"],"names":["buildStateFromSchema","reduceFieldsToValues","httpStatus","buildFieldSchemaMap","headersWithCors","routeError","cached","global","_payload_fieldSchemaMap","getFieldSchemaMap","req","process","env","NODE_ENV","buildFormState","headers","Headers","reqData","data","collectionSlug","formState","globalSlug","locale","operation","schemaPath","incomingUserSlug","user","collection","adminUserSlug","payload","config","admin","adminAccessFunction","collections","access","canAccessAdmin","Response","json","status","UNAUTHORIZED","hasUsers","find","depth","limit","pagination","docs","length","fieldSchemaMap","id","undefined","schemaPathSegments","split","fieldSchema","fields","globals","slug","has","get","message","BAD_REQUEST","docPreferences","promises","preferencesKey","fetchPreferences","preferencesResult","where","key","equals","value","preferences","fetchData","resolvedData","findByID","draft","fallbackLocale","overrideAccess","findGlobal","Object","keys","Promise","all","values","result","upload","file","auth","disableLocalStrategy","password","email","OK","err","logger","error","msg"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,4 +1,4 @@
1
- import getFileType from 'file-type';
1
+ import { fileTypeFromFile } from 'file-type';
2
2
  import fsPromises from 'fs/promises';
3
3
  import httpStatus from 'http-status';
4
4
  import path from 'path';
@@ -37,7 +37,7 @@ export const getFile = async ({ collection, filename, req })=>{
37
37
  const headers = new Headers({
38
38
  'Content-Length': stats.size + ''
39
39
  });
40
- const fileTypeResult = await getFileType.fromFile(filePath) || getFileTypeFallback(filePath);
40
+ const fileTypeResult = await fileTypeFromFile(filePath) || getFileTypeFallback(filePath);
41
41
  headers.set('Content-Type', fileTypeResult.mime);
42
42
  return new Response(data, {
43
43
  headers: headersWithCors({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/routes/rest/files/getFile.ts"],"sourcesContent":["import type { Collection, PayloadRequestWithData } from 'payload/types'\n\nimport getFileType from 'file-type'\nimport fsPromises from 'fs/promises'\nimport httpStatus from 'http-status'\nimport path from 'path'\nimport { APIError } from 'payload/errors'\n\nimport { streamFile } from '../../../fetchAPI-stream-file/index.js'\nimport { headersWithCors } from '../../../utilities/headersWithCors.js'\nimport { routeError } from '../routeError.js'\nimport { checkFileAccess } from './checkFileAccess.js'\nimport { getFileTypeFallback } from './getFileTypeFallback.js'\n\n// /:collectionSlug/file/:filename\ntype Args = {\n collection: Collection\n filename: string\n req: PayloadRequestWithData\n}\nexport const getFile = async ({ collection, filename, req }: Args): Promise<Response> => {\n try {\n if (!collection.config.upload) {\n throw new APIError(\n `This collection is not an upload collection: ${collection.config.slug}`,\n httpStatus.BAD_REQUEST,\n )\n }\n\n await checkFileAccess({\n collection,\n filename,\n req,\n })\n\n let response: Response = null\n if (collection.config.upload.handlers?.length) {\n for (const handler of collection.config.upload.handlers) {\n response = await handler(req, {\n params: {\n collection: collection.config.slug,\n filename,\n },\n })\n }\n\n if (response instanceof Response) return response\n }\n\n const fileDir = collection.config.upload?.staticDir || collection.config.slug\n const filePath = path.resolve(`${fileDir}/${filename}`)\n\n const stats = await fsPromises.stat(filePath)\n\n const data = streamFile(filePath)\n\n const headers = new Headers({\n 'Content-Length': stats.size + '',\n })\n\n const fileTypeResult = (await getFileType.fromFile(filePath)) || getFileTypeFallback(filePath)\n headers.set('Content-Type', fileTypeResult.mime)\n\n return new Response(data, {\n headers: headersWithCors({\n headers,\n req,\n }),\n status: httpStatus.OK,\n })\n } catch (err) {\n return routeError({\n collection,\n config: req.payload.config,\n err,\n req,\n })\n }\n}\n"],"names":["getFileType","fsPromises","httpStatus","path","APIError","streamFile","headersWithCors","routeError","checkFileAccess","getFileTypeFallback","getFile","collection","filename","req","config","upload","slug","BAD_REQUEST","response","handlers","length","handler","params","Response","fileDir","staticDir","filePath","resolve","stats","stat","data","headers","Headers","size","fileTypeResult","fromFile","set","mime","status","OK","err","payload"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAOA,iBAAiB,YAAW;AACnC,OAAOC,gBAAgB,cAAa;AACpC,OAAOC,gBAAgB,cAAa;AACpC,OAAOC,UAAU,OAAM;AACvB,SAASC,QAAQ,QAAQ,iBAAgB;AAEzC,SAASC,UAAU,QAAQ,yCAAwC;AACnE,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,UAAU,QAAQ,mBAAkB;AAC7C,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,mBAAmB,QAAQ,2BAA0B;AAQ9D,OAAO,MAAMC,UAAU,OAAO,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,GAAG,EAAQ;IAC/D,IAAI;QACF,IAAI,CAACF,WAAWG,MAAM,CAACC,MAAM,EAAE;YAC7B,MAAM,IAAIX,SACR,CAAC,6CAA6C,EAAEO,WAAWG,MAAM,CAACE,IAAI,CAAC,CAAC,EACxEd,WAAWe,WAAW;QAE1B;QAEA,MAAMT,gBAAgB;YACpBG;YACAC;YACAC;QACF;QAEA,IAAIK,WAAqB;QACzB,IAAIP,WAAWG,MAAM,CAACC,MAAM,CAACI,QAAQ,EAAEC,QAAQ;YAC7C,KAAK,MAAMC,WAAWV,WAAWG,MAAM,CAACC,MAAM,CAACI,QAAQ,CAAE;gBACvDD,WAAW,MAAMG,QAAQR,KAAK;oBAC5BS,QAAQ;wBACNX,YAAYA,WAAWG,MAAM,CAACE,IAAI;wBAClCJ;oBACF;gBACF;YACF;YAEA,IAAIM,oBAAoBK,UAAU,OAAOL;QAC3C;QAEA,MAAMM,UAAUb,WAAWG,MAAM,CAACC,MAAM,EAAEU,aAAad,WAAWG,MAAM,CAACE,IAAI;QAC7E,MAAMU,WAAWvB,KAAKwB,OAAO,CAAC,CAAC,EAAEH,QAAQ,CAAC,EAAEZ,SAAS,CAAC;QAEtD,MAAMgB,QAAQ,MAAM3B,WAAW4B,IAAI,CAACH;QAEpC,MAAMI,OAAOzB,WAAWqB;QAExB,MAAMK,UAAU,IAAIC,QAAQ;YAC1B,kBAAkBJ,MAAMK,IAAI,GAAG;QACjC;QAEA,MAAMC,iBAAiB,AAAC,MAAMlC,YAAYmC,QAAQ,CAACT,aAAcjB,oBAAoBiB;QACrFK,QAAQK,GAAG,CAAC,gBAAgBF,eAAeG,IAAI;QAE/C,OAAO,IAAId,SAASO,MAAM;YACxBC,SAASzB,gBAAgB;gBACvByB;gBACAlB;YACF;YACAyB,QAAQpC,WAAWqC,EAAE;QACvB;IACF,EAAE,OAAOC,KAAK;QACZ,OAAOjC,WAAW;YAChBI;YACAG,QAAQD,IAAI4B,OAAO,CAAC3B,MAAM;YAC1B0B;YACA3B;QACF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/routes/rest/files/getFile.ts"],"sourcesContent":["import type { Collection, PayloadRequestWithData } from 'payload/types'\n\nimport { fileTypeFromFile } from 'file-type'\nimport fsPromises from 'fs/promises'\nimport httpStatus from 'http-status'\nimport path from 'path'\nimport { APIError } from 'payload/errors'\n\nimport { streamFile } from '../../../fetchAPI-stream-file/index.js'\nimport { headersWithCors } from '../../../utilities/headersWithCors.js'\nimport { routeError } from '../routeError.js'\nimport { checkFileAccess } from './checkFileAccess.js'\nimport { getFileTypeFallback } from './getFileTypeFallback.js'\n\n// /:collectionSlug/file/:filename\ntype Args = {\n collection: Collection\n filename: string\n req: PayloadRequestWithData\n}\nexport const getFile = async ({ collection, filename, req }: Args): Promise<Response> => {\n try {\n if (!collection.config.upload) {\n throw new APIError(\n `This collection is not an upload collection: ${collection.config.slug}`,\n httpStatus.BAD_REQUEST,\n )\n }\n\n await checkFileAccess({\n collection,\n filename,\n req,\n })\n\n let response: Response = null\n if (collection.config.upload.handlers?.length) {\n for (const handler of collection.config.upload.handlers) {\n response = await handler(req, {\n params: {\n collection: collection.config.slug,\n filename,\n },\n })\n }\n\n if (response instanceof Response) return response\n }\n\n const fileDir = collection.config.upload?.staticDir || collection.config.slug\n const filePath = path.resolve(`${fileDir}/${filename}`)\n\n const stats = await fsPromises.stat(filePath)\n\n const data = streamFile(filePath)\n\n const headers = new Headers({\n 'Content-Length': stats.size + '',\n })\n\n const fileTypeResult = (await fileTypeFromFile(filePath)) || getFileTypeFallback(filePath)\n headers.set('Content-Type', fileTypeResult.mime)\n\n return new Response(data, {\n headers: headersWithCors({\n headers,\n req,\n }),\n status: httpStatus.OK,\n })\n } catch (err) {\n return routeError({\n collection,\n config: req.payload.config,\n err,\n req,\n })\n }\n}\n"],"names":["fileTypeFromFile","fsPromises","httpStatus","path","APIError","streamFile","headersWithCors","routeError","checkFileAccess","getFileTypeFallback","getFile","collection","filename","req","config","upload","slug","BAD_REQUEST","response","handlers","length","handler","params","Response","fileDir","staticDir","filePath","resolve","stats","stat","data","headers","Headers","size","fileTypeResult","set","mime","status","OK","err","payload"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,gBAAgB,QAAQ,YAAW;AAC5C,OAAOC,gBAAgB,cAAa;AACpC,OAAOC,gBAAgB,cAAa;AACpC,OAAOC,UAAU,OAAM;AACvB,SAASC,QAAQ,QAAQ,iBAAgB;AAEzC,SAASC,UAAU,QAAQ,yCAAwC;AACnE,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,UAAU,QAAQ,mBAAkB;AAC7C,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,mBAAmB,QAAQ,2BAA0B;AAQ9D,OAAO,MAAMC,UAAU,OAAO,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,GAAG,EAAQ;IAC/D,IAAI;QACF,IAAI,CAACF,WAAWG,MAAM,CAACC,MAAM,EAAE;YAC7B,MAAM,IAAIX,SACR,CAAC,6CAA6C,EAAEO,WAAWG,MAAM,CAACE,IAAI,CAAC,CAAC,EACxEd,WAAWe,WAAW;QAE1B;QAEA,MAAMT,gBAAgB;YACpBG;YACAC;YACAC;QACF;QAEA,IAAIK,WAAqB;QACzB,IAAIP,WAAWG,MAAM,CAACC,MAAM,CAACI,QAAQ,EAAEC,QAAQ;YAC7C,KAAK,MAAMC,WAAWV,WAAWG,MAAM,CAACC,MAAM,CAACI,QAAQ,CAAE;gBACvDD,WAAW,MAAMG,QAAQR,KAAK;oBAC5BS,QAAQ;wBACNX,YAAYA,WAAWG,MAAM,CAACE,IAAI;wBAClCJ;oBACF;gBACF;YACF;YAEA,IAAIM,oBAAoBK,UAAU,OAAOL;QAC3C;QAEA,MAAMM,UAAUb,WAAWG,MAAM,CAACC,MAAM,EAAEU,aAAad,WAAWG,MAAM,CAACE,IAAI;QAC7E,MAAMU,WAAWvB,KAAKwB,OAAO,CAAC,CAAC,EAAEH,QAAQ,CAAC,EAAEZ,SAAS,CAAC;QAEtD,MAAMgB,QAAQ,MAAM3B,WAAW4B,IAAI,CAACH;QAEpC,MAAMI,OAAOzB,WAAWqB;QAExB,MAAMK,UAAU,IAAIC,QAAQ;YAC1B,kBAAkBJ,MAAMK,IAAI,GAAG;QACjC;QAEA,MAAMC,iBAAiB,AAAC,MAAMlC,iBAAiB0B,aAAcjB,oBAAoBiB;QACjFK,QAAQI,GAAG,CAAC,gBAAgBD,eAAeE,IAAI;QAE/C,OAAO,IAAIb,SAASO,MAAM;YACxBC,SAASzB,gBAAgB;gBACvByB;gBACAlB;YACF;YACAwB,QAAQnC,WAAWoC,EAAE;QACvB;IACF,EAAE,OAAOC,KAAK;QACZ,OAAOhC,WAAW;YAChBI;YACAG,QAAQD,IAAI2B,OAAO,CAAC1B,MAAM;YAC1ByB;YACA1B;QACF;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/utilities/buildFieldSchemaMap/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAI3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,cAAc,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,cAAc,yEAOxB,IAAI,SA8EN,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/utilities/buildFieldSchemaMap/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAI3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,cAAc,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,cAAc,yEAOxB,IAAI,SAkFN,CAAA"}
@@ -40,6 +40,9 @@ export const traverseFields = ({ config, fields, i18n, schemaMap, schemaPath, va
40
40
  });
41
41
  break;
42
42
  case 'richText':
43
+ if (typeof field.editor === 'function') {
44
+ throw new Error('Attempted to access unsanitized rich text editor.');
45
+ }
43
46
  if (typeof field.editor.generateSchemaMap === 'function') {
44
47
  field.editor.generateSchemaMap({
45
48
  config,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utilities/buildFieldSchemaMap/traverseFields.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { Field, SanitizedConfig } from 'payload/types'\n\nimport { tabHasName } from 'payload/types'\n\nimport type { FieldSchemaMap } from './types.js'\n\ntype Args = {\n config: SanitizedConfig\n fields: Field[]\n i18n: I18n\n schemaMap: FieldSchemaMap\n schemaPath: string\n validRelationships: string[]\n}\n\nexport const traverseFields = ({\n config,\n fields,\n i18n,\n schemaMap,\n schemaPath,\n validRelationships,\n}: Args) => {\n fields.map((field) => {\n switch (field.type) {\n case 'group':\n case 'array':\n schemaMap.set(`${schemaPath}.${field.name}`, field.fields)\n\n traverseFields({\n config,\n fields: field.fields,\n i18n,\n schemaMap,\n schemaPath: `${schemaPath}.${field.name}`,\n validRelationships,\n })\n break\n\n case 'collapsible':\n case 'row':\n traverseFields({\n config,\n fields: field.fields,\n i18n,\n schemaMap,\n schemaPath,\n validRelationships,\n })\n break\n\n case 'blocks':\n field.blocks.map((block) => {\n const blockSchemaPath = `${schemaPath}.${field.name}.${block.slug}`\n\n schemaMap.set(blockSchemaPath, block.fields)\n\n traverseFields({\n config,\n fields: block.fields,\n i18n,\n schemaMap,\n schemaPath: blockSchemaPath,\n validRelationships,\n })\n })\n break\n\n case 'richText':\n if (typeof field.editor.generateSchemaMap === 'function') {\n field.editor.generateSchemaMap({\n config,\n i18n,\n schemaMap,\n schemaPath: `${schemaPath}.${field.name}`,\n })\n }\n\n break\n\n case 'tabs':\n field.tabs.map((tab) => {\n const tabSchemaPath = tabHasName(tab) ? `${schemaPath}.${tab.name}` : schemaPath\n\n if (tabHasName(tab)) {\n schemaMap.set(tabSchemaPath, tab.fields)\n }\n\n traverseFields({\n config,\n fields: tab.fields,\n i18n,\n schemaMap,\n schemaPath: tabSchemaPath,\n validRelationships,\n })\n })\n break\n }\n })\n}\n"],"names":["tabHasName","traverseFields","config","fields","i18n","schemaMap","schemaPath","validRelationships","map","field","type","set","name","blocks","block","blockSchemaPath","slug","editor","generateSchemaMap","tabs","tab","tabSchemaPath"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,UAAU,QAAQ,gBAAe;AAa1C,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,MAAM,EACNC,MAAM,EACNC,IAAI,EACJC,SAAS,EACTC,UAAU,EACVC,kBAAkB,EACb;IACLJ,OAAOK,GAAG,CAAC,CAACC;QACV,OAAQA,MAAMC,IAAI;YAChB,KAAK;YACL,KAAK;gBACHL,UAAUM,GAAG,CAAC,CAAC,EAAEL,WAAW,CAAC,EAAEG,MAAMG,IAAI,CAAC,CAAC,EAAEH,MAAMN,MAAM;gBAEzDF,eAAe;oBACbC;oBACAC,QAAQM,MAAMN,MAAM;oBACpBC;oBACAC;oBACAC,YAAY,CAAC,EAAEA,WAAW,CAAC,EAAEG,MAAMG,IAAI,CAAC,CAAC;oBACzCL;gBACF;gBACA;YAEF,KAAK;YACL,KAAK;gBACHN,eAAe;oBACbC;oBACAC,QAAQM,MAAMN,MAAM;oBACpBC;oBACAC;oBACAC;oBACAC;gBACF;gBACA;YAEF,KAAK;gBACHE,MAAMI,MAAM,CAACL,GAAG,CAAC,CAACM;oBAChB,MAAMC,kBAAkB,CAAC,EAAET,WAAW,CAAC,EAAEG,MAAMG,IAAI,CAAC,CAAC,EAAEE,MAAME,IAAI,CAAC,CAAC;oBAEnEX,UAAUM,GAAG,CAACI,iBAAiBD,MAAMX,MAAM;oBAE3CF,eAAe;wBACbC;wBACAC,QAAQW,MAAMX,MAAM;wBACpBC;wBACAC;wBACAC,YAAYS;wBACZR;oBACF;gBACF;gBACA;YAEF,KAAK;gBACH,IAAI,OAAOE,MAAMQ,MAAM,CAACC,iBAAiB,KAAK,YAAY;oBACxDT,MAAMQ,MAAM,CAACC,iBAAiB,CAAC;wBAC7BhB;wBACAE;wBACAC;wBACAC,YAAY,CAAC,EAAEA,WAAW,CAAC,EAAEG,MAAMG,IAAI,CAAC,CAAC;oBAC3C;gBACF;gBAEA;YAEF,KAAK;gBACHH,MAAMU,IAAI,CAACX,GAAG,CAAC,CAACY;oBACd,MAAMC,gBAAgBrB,WAAWoB,OAAO,CAAC,EAAEd,WAAW,CAAC,EAAEc,IAAIR,IAAI,CAAC,CAAC,GAAGN;oBAEtE,IAAIN,WAAWoB,MAAM;wBACnBf,UAAUM,GAAG,CAACU,eAAeD,IAAIjB,MAAM;oBACzC;oBAEAF,eAAe;wBACbC;wBACAC,QAAQiB,IAAIjB,MAAM;wBAClBC;wBACAC;wBACAC,YAAYe;wBACZd;oBACF;gBACF;gBACA;QACJ;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/utilities/buildFieldSchemaMap/traverseFields.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { Field, SanitizedConfig } from 'payload/types'\n\nimport { tabHasName } from 'payload/types'\n\nimport type { FieldSchemaMap } from './types.js'\n\ntype Args = {\n config: SanitizedConfig\n fields: Field[]\n i18n: I18n\n schemaMap: FieldSchemaMap\n schemaPath: string\n validRelationships: string[]\n}\n\nexport const traverseFields = ({\n config,\n fields,\n i18n,\n schemaMap,\n schemaPath,\n validRelationships,\n}: Args) => {\n fields.map((field) => {\n switch (field.type) {\n case 'group':\n case 'array':\n schemaMap.set(`${schemaPath}.${field.name}`, field.fields)\n\n traverseFields({\n config,\n fields: field.fields,\n i18n,\n schemaMap,\n schemaPath: `${schemaPath}.${field.name}`,\n validRelationships,\n })\n break\n\n case 'collapsible':\n case 'row':\n traverseFields({\n config,\n fields: field.fields,\n i18n,\n schemaMap,\n schemaPath,\n validRelationships,\n })\n break\n\n case 'blocks':\n field.blocks.map((block) => {\n const blockSchemaPath = `${schemaPath}.${field.name}.${block.slug}`\n\n schemaMap.set(blockSchemaPath, block.fields)\n\n traverseFields({\n config,\n fields: block.fields,\n i18n,\n schemaMap,\n schemaPath: blockSchemaPath,\n validRelationships,\n })\n })\n break\n\n case 'richText':\n if (typeof field.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n if (typeof field.editor.generateSchemaMap === 'function') {\n field.editor.generateSchemaMap({\n config,\n i18n,\n schemaMap,\n schemaPath: `${schemaPath}.${field.name}`,\n })\n }\n\n break\n\n case 'tabs':\n field.tabs.map((tab) => {\n const tabSchemaPath = tabHasName(tab) ? `${schemaPath}.${tab.name}` : schemaPath\n\n if (tabHasName(tab)) {\n schemaMap.set(tabSchemaPath, tab.fields)\n }\n\n traverseFields({\n config,\n fields: tab.fields,\n i18n,\n schemaMap,\n schemaPath: tabSchemaPath,\n validRelationships,\n })\n })\n break\n }\n })\n}\n"],"names":["tabHasName","traverseFields","config","fields","i18n","schemaMap","schemaPath","validRelationships","map","field","type","set","name","blocks","block","blockSchemaPath","slug","editor","Error","generateSchemaMap","tabs","tab","tabSchemaPath"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,UAAU,QAAQ,gBAAe;AAa1C,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,MAAM,EACNC,MAAM,EACNC,IAAI,EACJC,SAAS,EACTC,UAAU,EACVC,kBAAkB,EACb;IACLJ,OAAOK,GAAG,CAAC,CAACC;QACV,OAAQA,MAAMC,IAAI;YAChB,KAAK;YACL,KAAK;gBACHL,UAAUM,GAAG,CAAC,CAAC,EAAEL,WAAW,CAAC,EAAEG,MAAMG,IAAI,CAAC,CAAC,EAAEH,MAAMN,MAAM;gBAEzDF,eAAe;oBACbC;oBACAC,QAAQM,MAAMN,MAAM;oBACpBC;oBACAC;oBACAC,YAAY,CAAC,EAAEA,WAAW,CAAC,EAAEG,MAAMG,IAAI,CAAC,CAAC;oBACzCL;gBACF;gBACA;YAEF,KAAK;YACL,KAAK;gBACHN,eAAe;oBACbC;oBACAC,QAAQM,MAAMN,MAAM;oBACpBC;oBACAC;oBACAC;oBACAC;gBACF;gBACA;YAEF,KAAK;gBACHE,MAAMI,MAAM,CAACL,GAAG,CAAC,CAACM;oBAChB,MAAMC,kBAAkB,CAAC,EAAET,WAAW,CAAC,EAAEG,MAAMG,IAAI,CAAC,CAAC,EAAEE,MAAME,IAAI,CAAC,CAAC;oBAEnEX,UAAUM,GAAG,CAACI,iBAAiBD,MAAMX,MAAM;oBAE3CF,eAAe;wBACbC;wBACAC,QAAQW,MAAMX,MAAM;wBACpBC;wBACAC;wBACAC,YAAYS;wBACZR;oBACF;gBACF;gBACA;YAEF,KAAK;gBACH,IAAI,OAAOE,MAAMQ,MAAM,KAAK,YAAY;oBACtC,MAAM,IAAIC,MAAM;gBAClB;gBAEA,IAAI,OAAOT,MAAMQ,MAAM,CAACE,iBAAiB,KAAK,YAAY;oBACxDV,MAAMQ,MAAM,CAACE,iBAAiB,CAAC;wBAC7BjB;wBACAE;wBACAC;wBACAC,YAAY,CAAC,EAAEA,WAAW,CAAC,EAAEG,MAAMG,IAAI,CAAC,CAAC;oBAC3C;gBACF;gBAEA;YAEF,KAAK;gBACHH,MAAMW,IAAI,CAACZ,GAAG,CAAC,CAACa;oBACd,MAAMC,gBAAgBtB,WAAWqB,OAAO,CAAC,EAAEf,WAAW,CAAC,EAAEe,IAAIT,IAAI,CAAC,CAAC,GAAGN;oBAEtE,IAAIN,WAAWqB,MAAM;wBACnBhB,UAAUM,GAAG,CAACW,eAAeD,IAAIlB,MAAM;oBACzC;oBAEAF,eAAe;wBACbC;wBACAC,QAAQkB,IAAIlB,MAAM;wBAClBC;wBACAC;wBACAC,YAAYgB;wBACZf;oBACF;gBACF;gBACA;QACJ;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"initPage.d.ts","sourceRoot":"","sources":["../../src/utilities/initPage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGd,eAAe,EAGhB,MAAM,eAAe,CAAA;AAatB,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IAClD,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CAAA;AAYD,eAAO,MAAM,QAAQ,iFAKlB,IAAI,KAAG,QAAQ,cAAc,CAyG/B,CAAA"}
1
+ {"version":3,"file":"initPage.d.ts","sourceRoot":"","sources":["../../src/utilities/initPage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGd,eAAe,EAGhB,MAAM,eAAe,CAAA;AAatB,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IAClD,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CAAA;AAYD,eAAO,MAAM,QAAQ,iFAKlB,IAAI,KAAG,QAAQ,cAAc,CA0G/B,CAAA"}
@@ -73,13 +73,14 @@ export const initPage = async ({ config: configPromise, redirectUnauthenticatedU
73
73
  const collectionSlug = entityType === 'collections' ? entitySlug : undefined;
74
74
  const globalSlug = entityType === 'globals' ? entitySlug : undefined;
75
75
  const docID = collectionSlug && createOrID !== 'create' ? createOrID : undefined;
76
+ const isAdminRoute = route.startsWith(adminRoute);
76
77
  const isAuthRoute = authRoutes.some((r)=>r === route.replace(adminRoute, ''));
77
78
  if (redirectUnauthenticatedUser && !user && !isAuthRoute) {
78
79
  if (searchParams && 'redirect' in searchParams) delete searchParams.redirect;
79
80
  const stringifiedSearchParams = Object.keys(searchParams ?? {}).length ? `?${qs.stringify(searchParams)}` : '';
80
81
  redirect(`${routes.admin}/login?redirect=${route + stringifiedSearchParams}`);
81
82
  }
82
- if (!permissions.canAccessAdmin && !isAuthRoute) {
83
+ if (!permissions.canAccessAdmin && isAdminRoute && !isAuthRoute) {
83
84
  notFound();
84
85
  }
85
86
  let collectionConfig;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/initPage.ts"],"sourcesContent":["import type {\n InitPageResult,\n PayloadRequestWithData,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n VisibleEntities,\n} from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { findLocaleFromCode } from '@payloadcms/ui/utilities/findLocaleFromCode'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { notFound, redirect } from 'next/navigation.js'\nimport { parseCookies } from 'payload/auth'\nimport { createLocalReq, isEntityHidden } from 'payload/utilities'\nimport qs from 'qs'\n\nimport { getPayloadHMR } from '../utilities/getPayloadHMR.js'\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\ntype Args = {\n config: Promise<SanitizedConfig> | SanitizedConfig\n redirectUnauthenticatedUser?: boolean\n route: string\n searchParams: { [key: string]: string | string[] | undefined }\n}\n\nconst authRoutes = [\n '/login',\n '/logout',\n '/create-first-user',\n '/forgot',\n '/reset',\n '/verify',\n '/logout-inactivity',\n]\n\nexport const initPage = async ({\n config: configPromise,\n redirectUnauthenticatedUser = false,\n route,\n searchParams,\n}: Args): Promise<InitPageResult> => {\n const headers = getHeaders()\n const localeParam = searchParams?.locale as string\n const payload = await getPayloadHMR({ config: configPromise })\n const { collections, globals, localization, routes } = payload.config\n\n const queryString = `${qs.stringify(searchParams ?? {}, { addQueryPrefix: true })}`\n const defaultLocale =\n localization && localization.defaultLocale ? localization.defaultLocale : 'en'\n const localeCode = localeParam || defaultLocale\n const locale = localization && findLocaleFromCode(localization, localeCode)\n const cookies = parseCookies(headers)\n const language = getRequestLanguage({ config: payload.config, cookies, headers })\n\n const i18n = await initI18n({\n config: payload.config.i18n,\n context: 'client',\n language,\n })\n\n const req = await createLocalReq(\n {\n fallbackLocale: null,\n locale: locale.code,\n req: {\n i18n,\n query: qs.parse(queryString, {\n depth: 10,\n ignoreQueryPrefix: true,\n }),\n url: `${payload.config.serverURL}${route}${searchParams ? queryString : ''}`,\n } as PayloadRequestWithData,\n },\n payload,\n )\n\n const { permissions, user } = await payload.auth({ headers, req })\n\n req.user = user\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 {\n routes: { admin: adminRoute },\n } = payload.config\n\n const routeSegments = route.replace(adminRoute, '').split('/').filter(Boolean)\n const [entityType, entitySlug, createOrID] = routeSegments\n const collectionSlug = entityType === 'collections' ? entitySlug : undefined\n const globalSlug = entityType === 'globals' ? entitySlug : undefined\n const docID = collectionSlug && createOrID !== 'create' ? createOrID : undefined\n\n const isAuthRoute = authRoutes.some((r) => r === route.replace(adminRoute, ''))\n\n if (redirectUnauthenticatedUser && !user && !isAuthRoute) {\n if (searchParams && 'redirect' in searchParams) delete searchParams.redirect\n\n const stringifiedSearchParams = Object.keys(searchParams ?? {}).length\n ? `?${qs.stringify(searchParams)}`\n : ''\n\n redirect(`${routes.admin}/login?redirect=${route + stringifiedSearchParams}`)\n }\n\n if (!permissions.canAccessAdmin && !isAuthRoute) {\n notFound()\n }\n\n let collectionConfig: SanitizedCollectionConfig\n let globalConfig: SanitizedGlobalConfig\n\n if (collectionSlug) {\n collectionConfig = collections.find((collection) => collection.slug === collectionSlug)\n\n if (!collectionConfig) {\n notFound()\n }\n }\n\n if (globalSlug) {\n globalConfig = globals.find((global) => global.slug === globalSlug)\n\n if (!globalConfig) {\n notFound()\n }\n }\n\n return {\n collectionConfig,\n cookies,\n docID,\n globalConfig,\n locale,\n permissions,\n req,\n translations: i18n.translations,\n visibleEntities,\n }\n}\n"],"names":["initI18n","findLocaleFromCode","headers","getHeaders","notFound","redirect","parseCookies","createLocalReq","isEntityHidden","qs","getPayloadHMR","getRequestLanguage","authRoutes","initPage","config","configPromise","redirectUnauthenticatedUser","route","searchParams","localeParam","locale","payload","collections","globals","localization","routes","queryString","stringify","addQueryPrefix","defaultLocale","localeCode","cookies","language","i18n","context","req","fallbackLocale","code","query","parse","depth","ignoreQueryPrefix","url","serverURL","permissions","user","auth","visibleEntities","map","slug","admin","hidden","filter","Boolean","adminRoute","routeSegments","replace","split","entityType","entitySlug","createOrID","collectionSlug","undefined","globalSlug","docID","isAuthRoute","some","r","stringifiedSearchParams","Object","keys","length","canAccessAdmin","collectionConfig","globalConfig","find","collection","global","translations"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AASA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,kBAAkB,QAAQ,8CAA6C;AAChF,SAASC,WAAWC,UAAU,QAAQ,kBAAiB;AACvD,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,qBAAoB;AACvD,SAASC,YAAY,QAAQ,eAAc;AAC3C,SAASC,cAAc,EAAEC,cAAc,QAAQ,oBAAmB;AAClE,OAAOC,QAAQ,KAAI;AAEnB,SAASC,aAAa,QAAQ,gCAA+B;AAC7D,SAASC,kBAAkB,QAAQ,0BAAyB;AAS5D,MAAMC,aAAa;IACjB;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,OAAO,MAAMC,WAAW,OAAO,EAC7BC,QAAQC,aAAa,EACrBC,8BAA8B,KAAK,EACnCC,KAAK,EACLC,YAAY,EACP;IACL,MAAMhB,UAAUC;IAChB,MAAMgB,cAAcD,cAAcE;IAClC,MAAMC,UAAU,MAAMX,cAAc;QAAEI,QAAQC;IAAc;IAC5D,MAAM,EAAEO,WAAW,EAAEC,OAAO,EAAEC,YAAY,EAAEC,MAAM,EAAE,GAAGJ,QAAQP,MAAM;IAErE,MAAMY,cAAc,CAAC,EAAEjB,GAAGkB,SAAS,CAACT,gBAAgB,CAAC,GAAG;QAAEU,gBAAgB;IAAK,GAAG,CAAC;IACnF,MAAMC,gBACJL,gBAAgBA,aAAaK,aAAa,GAAGL,aAAaK,aAAa,GAAG;IAC5E,MAAMC,aAAaX,eAAeU;IAClC,MAAMT,SAASI,gBAAgBvB,mBAAmBuB,cAAcM;IAChE,MAAMC,UAAUzB,aAAaJ;IAC7B,MAAM8B,WAAWrB,mBAAmB;QAAEG,QAAQO,QAAQP,MAAM;QAAEiB;QAAS7B;IAAQ;IAE/E,MAAM+B,OAAO,MAAMjC,SAAS;QAC1Bc,QAAQO,QAAQP,MAAM,CAACmB,IAAI;QAC3BC,SAAS;QACTF;IACF;IAEA,MAAMG,MAAM,MAAM5B,eAChB;QACE6B,gBAAgB;QAChBhB,QAAQA,OAAOiB,IAAI;QACnBF,KAAK;YACHF;YACAK,OAAO7B,GAAG8B,KAAK,CAACb,aAAa;gBAC3Bc,OAAO;gBACPC,mBAAmB;YACrB;YACAC,KAAK,CAAC,EAAErB,QAAQP,MAAM,CAAC6B,SAAS,CAAC,EAAE1B,MAAM,EAAEC,eAAeQ,cAAc,GAAG,CAAC;QAC9E;IACF,GACAL;IAGF,MAAM,EAAEuB,WAAW,EAAEC,IAAI,EAAE,GAAG,MAAMxB,QAAQyB,IAAI,CAAC;QAAE5C;QAASiC;IAAI;IAEhEA,IAAIU,IAAI,GAAGA;IAEX,MAAME,kBAAmC;QACvCzB,aAAaD,QAAQP,MAAM,CAACQ,WAAW,CACpC0B,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,MAAM,EAAE,EAAE,GAAM,CAAC3C,eAAe;gBAAE2C;gBAAQN;YAAK,KAAKI,OAAO,MACjFG,MAAM,CAACC;QACV9B,SAASF,QAAQP,MAAM,CAACS,OAAO,CAC5ByB,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,MAAM,EAAE,EAAE,GAAM,CAAC3C,eAAe;gBAAE2C;gBAAQN;YAAK,KAAKI,OAAO,MACjFG,MAAM,CAACC;IACZ;IAEA,MAAM,EACJ5B,QAAQ,EAAEyB,OAAOI,UAAU,EAAE,EAC9B,GAAGjC,QAAQP,MAAM;IAElB,MAAMyC,gBAAgBtC,MAAMuC,OAAO,CAACF,YAAY,IAAIG,KAAK,CAAC,KAAKL,MAAM,CAACC;IACtE,MAAM,CAACK,YAAYC,YAAYC,WAAW,GAAGL;IAC7C,MAAMM,iBAAiBH,eAAe,gBAAgBC,aAAaG;IACnE,MAAMC,aAAaL,eAAe,YAAYC,aAAaG;IAC3D,MAAME,QAAQH,kBAAkBD,eAAe,WAAWA,aAAaE;IAEvE,MAAMG,cAAcrD,WAAWsD,IAAI,CAAC,CAACC,IAAMA,MAAMlD,MAAMuC,OAAO,CAACF,YAAY;IAE3E,IAAItC,+BAA+B,CAAC6B,QAAQ,CAACoB,aAAa;QACxD,IAAI/C,gBAAgB,cAAcA,cAAc,OAAOA,aAAab,QAAQ;QAE5E,MAAM+D,0BAA0BC,OAAOC,IAAI,CAACpD,gBAAgB,CAAC,GAAGqD,MAAM,GAClE,CAAC,CAAC,EAAE9D,GAAGkB,SAAS,CAACT,cAAc,CAAC,GAChC;QAEJb,SAAS,CAAC,EAAEoB,OAAOyB,KAAK,CAAC,gBAAgB,EAAEjC,QAAQmD,wBAAwB,CAAC;IAC9E;IAEA,IAAI,CAACxB,YAAY4B,cAAc,IAAI,CAACP,aAAa;QAC/C7D;IACF;IAEA,IAAIqE;IACJ,IAAIC;IAEJ,IAAIb,gBAAgB;QAClBY,mBAAmBnD,YAAYqD,IAAI,CAAC,CAACC,aAAeA,WAAW3B,IAAI,KAAKY;QAExE,IAAI,CAACY,kBAAkB;YACrBrE;QACF;IACF;IAEA,IAAI2D,YAAY;QACdW,eAAenD,QAAQoD,IAAI,CAAC,CAACE,SAAWA,OAAO5B,IAAI,KAAKc;QAExD,IAAI,CAACW,cAAc;YACjBtE;QACF;IACF;IAEA,OAAO;QACLqE;QACA1C;QACAiC;QACAU;QACAtD;QACAwB;QACAT;QACA2C,cAAc7C,KAAK6C,YAAY;QAC/B/B;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/initPage.ts"],"sourcesContent":["import type {\n InitPageResult,\n PayloadRequestWithData,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n VisibleEntities,\n} from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { findLocaleFromCode } from '@payloadcms/ui/utilities/findLocaleFromCode'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { notFound, redirect } from 'next/navigation.js'\nimport { parseCookies } from 'payload/auth'\nimport { createLocalReq, isEntityHidden } from 'payload/utilities'\nimport qs from 'qs'\n\nimport { getPayloadHMR } from '../utilities/getPayloadHMR.js'\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\ntype Args = {\n config: Promise<SanitizedConfig> | SanitizedConfig\n redirectUnauthenticatedUser?: boolean\n route: string\n searchParams: { [key: string]: string | string[] | undefined }\n}\n\nconst authRoutes = [\n '/login',\n '/logout',\n '/create-first-user',\n '/forgot',\n '/reset',\n '/verify',\n '/logout-inactivity',\n]\n\nexport const initPage = async ({\n config: configPromise,\n redirectUnauthenticatedUser = false,\n route,\n searchParams,\n}: Args): Promise<InitPageResult> => {\n const headers = getHeaders()\n const localeParam = searchParams?.locale as string\n const payload = await getPayloadHMR({ config: configPromise })\n const { collections, globals, localization, routes } = payload.config\n\n const queryString = `${qs.stringify(searchParams ?? {}, { addQueryPrefix: true })}`\n const defaultLocale =\n localization && localization.defaultLocale ? localization.defaultLocale : 'en'\n const localeCode = localeParam || defaultLocale\n const locale = localization && findLocaleFromCode(localization, localeCode)\n const cookies = parseCookies(headers)\n const language = getRequestLanguage({ config: payload.config, cookies, headers })\n\n const i18n = await initI18n({\n config: payload.config.i18n,\n context: 'client',\n language,\n })\n\n const req = await createLocalReq(\n {\n fallbackLocale: null,\n locale: locale.code,\n req: {\n i18n,\n query: qs.parse(queryString, {\n depth: 10,\n ignoreQueryPrefix: true,\n }),\n url: `${payload.config.serverURL}${route}${searchParams ? queryString : ''}`,\n } as PayloadRequestWithData,\n },\n payload,\n )\n\n const { permissions, user } = await payload.auth({ headers, req })\n\n req.user = user\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 {\n routes: { admin: adminRoute },\n } = payload.config\n\n const routeSegments = route.replace(adminRoute, '').split('/').filter(Boolean)\n const [entityType, entitySlug, createOrID] = routeSegments\n const collectionSlug = entityType === 'collections' ? entitySlug : undefined\n const globalSlug = entityType === 'globals' ? entitySlug : undefined\n const docID = collectionSlug && createOrID !== 'create' ? createOrID : undefined\n\n const isAdminRoute = route.startsWith(adminRoute)\n const isAuthRoute = authRoutes.some((r) => r === route.replace(adminRoute, ''))\n\n if (redirectUnauthenticatedUser && !user && !isAuthRoute) {\n if (searchParams && 'redirect' in searchParams) delete searchParams.redirect\n\n const stringifiedSearchParams = Object.keys(searchParams ?? {}).length\n ? `?${qs.stringify(searchParams)}`\n : ''\n\n redirect(`${routes.admin}/login?redirect=${route + stringifiedSearchParams}`)\n }\n\n if (!permissions.canAccessAdmin && isAdminRoute && !isAuthRoute) {\n notFound()\n }\n\n let collectionConfig: SanitizedCollectionConfig\n let globalConfig: SanitizedGlobalConfig\n\n if (collectionSlug) {\n collectionConfig = collections.find((collection) => collection.slug === collectionSlug)\n\n if (!collectionConfig) {\n notFound()\n }\n }\n\n if (globalSlug) {\n globalConfig = globals.find((global) => global.slug === globalSlug)\n\n if (!globalConfig) {\n notFound()\n }\n }\n\n return {\n collectionConfig,\n cookies,\n docID,\n globalConfig,\n locale,\n permissions,\n req,\n translations: i18n.translations,\n visibleEntities,\n }\n}\n"],"names":["initI18n","findLocaleFromCode","headers","getHeaders","notFound","redirect","parseCookies","createLocalReq","isEntityHidden","qs","getPayloadHMR","getRequestLanguage","authRoutes","initPage","config","configPromise","redirectUnauthenticatedUser","route","searchParams","localeParam","locale","payload","collections","globals","localization","routes","queryString","stringify","addQueryPrefix","defaultLocale","localeCode","cookies","language","i18n","context","req","fallbackLocale","code","query","parse","depth","ignoreQueryPrefix","url","serverURL","permissions","user","auth","visibleEntities","map","slug","admin","hidden","filter","Boolean","adminRoute","routeSegments","replace","split","entityType","entitySlug","createOrID","collectionSlug","undefined","globalSlug","docID","isAdminRoute","startsWith","isAuthRoute","some","r","stringifiedSearchParams","Object","keys","length","canAccessAdmin","collectionConfig","globalConfig","find","collection","global","translations"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/NotFound/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAIxE,OAAO,KAAmB,MAAM,OAAO,CAAA;AAMvC,eAAO,MAAM,oBAAoB,+BAE9B;IACD,MAAM,EAAE,QAAQ,eAAe,CAAC,GAAG,eAAe,CAAA;IAClD,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAE9C,KAAG,QAAQ,QAAQ,CAUnB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAC9C,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEvB,eAAO,MAAM,YAAY,6CAGtB;IACD,MAAM,EAAE,QAAQ,eAAe,CAAC,CAAA;IAChC,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,EAAE,CAAA;KACnB,CAAA;IACD,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAA;CACF,+BAmBA,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,kBAE1B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/NotFound/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAIxE,OAAO,KAAmB,MAAM,OAAO,CAAA;AAMvC,eAAO,MAAM,oBAAoB,+BAE9B;IACD,MAAM,EAAE,QAAQ,eAAe,CAAC,GAAG,eAAe,CAAA;IAClD,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAE9C,KAAG,QAAQ,QAAQ,CAUnB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAC9C,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEvB,eAAO,MAAM,YAAY,6CAGtB;IACD,MAAM,EAAE,QAAQ,eAAe,CAAC,CAAA;IAChC,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,EAAE,CAAA;KACnB,CAAA;IACD,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAA;CACF,+BAsBA,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,kBAE1B,CAAA"}
@@ -14,10 +14,12 @@ export const generatePageMetadata = async ({ config: configPromise })=>{
14
14
  };
15
15
  };
16
16
  export const NotFoundPage = async ({ config: configPromise, searchParams })=>{
17
+ const config = await configPromise;
18
+ const { routes: { admin: adminRoute } = {} } = config;
17
19
  const initPageResult = await initPage({
18
- config: configPromise,
20
+ config,
19
21
  redirectUnauthenticatedUser: true,
20
- route: '/not-found',
22
+ route: `${adminRoute}/not-found`,
21
23
  searchParams
22
24
  });
23
25
  return /*#__PURE__*/ React.createElement(Fragment, null, /*#__PURE__*/ React.createElement(HydrateClientUser, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/NotFound/index.tsx"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { Metadata } from 'next'\nimport type { AdminViewComponent, SanitizedConfig } from 'payload/types'\n\nimport { HydrateClientUser } from '@payloadcms/ui/elements/HydrateClientUser'\nimport { DefaultTemplate } from '@payloadcms/ui/templates/Default'\nimport React, { Fragment } from 'react'\n\nimport { getNextRequestI18n } from '../../utilities/getNextRequestI18n.js'\nimport { initPage } from '../../utilities/initPage.js'\nimport { NotFoundClient } from './index.client.js'\n\nexport const generatePageMetadata = async ({\n config: configPromise,\n}: {\n config: Promise<SanitizedConfig> | SanitizedConfig\n params?: { [key: string]: string | string[] }\n //eslint-disable-next-line @typescript-eslint/require-await\n}): Promise<Metadata> => {\n const config = await configPromise\n\n const i18n = await getNextRequestI18n({\n config,\n })\n\n return {\n title: i18n.t('general:notFound'),\n }\n}\n\nexport type GenerateViewMetadata = (args: {\n config: SanitizedConfig\n i18n: I18n\n params?: { [key: string]: string | string[] }\n}) => Promise<Metadata>\n\nexport const NotFoundPage = async ({\n config: configPromise,\n searchParams,\n}: {\n config: Promise<SanitizedConfig>\n params: {\n segments: string[]\n }\n searchParams: {\n [key: string]: string | string[]\n }\n}) => {\n const initPageResult = await initPage({\n config: configPromise,\n redirectUnauthenticatedUser: true,\n route: '/not-found',\n searchParams,\n })\n\n return (\n <Fragment>\n <HydrateClientUser permissions={initPageResult.permissions} user={initPageResult.req.user} />\n <DefaultTemplate\n config={initPageResult.req.payload.config}\n visibleEntities={initPageResult.visibleEntities}\n >\n <NotFoundClient />\n </DefaultTemplate>\n </Fragment>\n )\n}\n\nexport const NotFoundView: AdminViewComponent = () => {\n return <NotFoundClient marginTop=\"large\" />\n}\n"],"names":["HydrateClientUser","DefaultTemplate","React","Fragment","getNextRequestI18n","initPage","NotFoundClient","generatePageMetadata","config","configPromise","i18n","title","t","NotFoundPage","searchParams","initPageResult","redirectUnauthenticatedUser","route","permissions","user","req","payload","visibleEntities","NotFoundView","marginTop"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,iBAAiB,QAAQ,4CAA2C;AAC7E,SAASC,eAAe,QAAQ,mCAAkC;AAClE,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAEvC,SAASC,kBAAkB,QAAQ,wCAAuC;AAC1E,SAASC,QAAQ,QAAQ,8BAA6B;AACtD,SAASC,cAAc,QAAQ,oBAAmB;AAElD,OAAO,MAAMC,uBAAuB,OAAO,EACzCC,QAAQC,aAAa,EAKtB;IACC,MAAMD,SAAS,MAAMC;IAErB,MAAMC,OAAO,MAAMN,mBAAmB;QACpCI;IACF;IAEA,OAAO;QACLG,OAAOD,KAAKE,CAAC,CAAC;IAChB;AACF,EAAC;AAQD,OAAO,MAAMC,eAAe,OAAO,EACjCL,QAAQC,aAAa,EACrBK,YAAY,EASb;IACC,MAAMC,iBAAiB,MAAMV,SAAS;QACpCG,QAAQC;QACRO,6BAA6B;QAC7BC,OAAO;QACPH;IACF;IAEA,qBACE,oBAACX,8BACC,oBAACH;QAAkBkB,aAAaH,eAAeG,WAAW;QAAEC,MAAMJ,eAAeK,GAAG,CAACD,IAAI;sBACzF,oBAAClB;QACCO,QAAQO,eAAeK,GAAG,CAACC,OAAO,CAACb,MAAM;QACzCc,iBAAiBP,eAAeO,eAAe;qBAE/C,oBAAChB;AAIT,EAAC;AAED,OAAO,MAAMiB,eAAmC;IAC9C,qBAAO,oBAACjB;QAAekB,WAAU;;AACnC,EAAC"}
1
+ {"version":3,"sources":["../../../src/views/NotFound/index.tsx"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { Metadata } from 'next'\nimport type { AdminViewComponent, SanitizedConfig } from 'payload/types'\n\nimport { HydrateClientUser } from '@payloadcms/ui/elements/HydrateClientUser'\nimport { DefaultTemplate } from '@payloadcms/ui/templates/Default'\nimport React, { Fragment } from 'react'\n\nimport { getNextRequestI18n } from '../../utilities/getNextRequestI18n.js'\nimport { initPage } from '../../utilities/initPage.js'\nimport { NotFoundClient } from './index.client.js'\n\nexport const generatePageMetadata = async ({\n config: configPromise,\n}: {\n config: Promise<SanitizedConfig> | SanitizedConfig\n params?: { [key: string]: string | string[] }\n //eslint-disable-next-line @typescript-eslint/require-await\n}): Promise<Metadata> => {\n const config = await configPromise\n\n const i18n = await getNextRequestI18n({\n config,\n })\n\n return {\n title: i18n.t('general:notFound'),\n }\n}\n\nexport type GenerateViewMetadata = (args: {\n config: SanitizedConfig\n i18n: I18n\n params?: { [key: string]: string | string[] }\n}) => Promise<Metadata>\n\nexport const NotFoundPage = async ({\n config: configPromise,\n searchParams,\n}: {\n config: Promise<SanitizedConfig>\n params: {\n segments: string[]\n }\n searchParams: {\n [key: string]: string | string[]\n }\n}) => {\n const config = await configPromise\n const { routes: { admin: adminRoute } = {} } = config\n\n const initPageResult = await initPage({\n config,\n redirectUnauthenticatedUser: true,\n route: `${adminRoute}/not-found`,\n searchParams,\n })\n\n return (\n <Fragment>\n <HydrateClientUser permissions={initPageResult.permissions} user={initPageResult.req.user} />\n <DefaultTemplate\n config={initPageResult.req.payload.config}\n visibleEntities={initPageResult.visibleEntities}\n >\n <NotFoundClient />\n </DefaultTemplate>\n </Fragment>\n )\n}\n\nexport const NotFoundView: AdminViewComponent = () => {\n return <NotFoundClient marginTop=\"large\" />\n}\n"],"names":["HydrateClientUser","DefaultTemplate","React","Fragment","getNextRequestI18n","initPage","NotFoundClient","generatePageMetadata","config","configPromise","i18n","title","t","NotFoundPage","searchParams","routes","admin","adminRoute","initPageResult","redirectUnauthenticatedUser","route","permissions","user","req","payload","visibleEntities","NotFoundView","marginTop"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,iBAAiB,QAAQ,4CAA2C;AAC7E,SAASC,eAAe,QAAQ,mCAAkC;AAClE,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAEvC,SAASC,kBAAkB,QAAQ,wCAAuC;AAC1E,SAASC,QAAQ,QAAQ,8BAA6B;AACtD,SAASC,cAAc,QAAQ,oBAAmB;AAElD,OAAO,MAAMC,uBAAuB,OAAO,EACzCC,QAAQC,aAAa,EAKtB;IACC,MAAMD,SAAS,MAAMC;IAErB,MAAMC,OAAO,MAAMN,mBAAmB;QACpCI;IACF;IAEA,OAAO;QACLG,OAAOD,KAAKE,CAAC,CAAC;IAChB;AACF,EAAC;AAQD,OAAO,MAAMC,eAAe,OAAO,EACjCL,QAAQC,aAAa,EACrBK,YAAY,EASb;IACC,MAAMN,SAAS,MAAMC;IACrB,MAAM,EAAEM,QAAQ,EAAEC,OAAOC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,GAAGT;IAE/C,MAAMU,iBAAiB,MAAMb,SAAS;QACpCG;QACAW,6BAA6B;QAC7BC,OAAO,CAAC,EAAEH,WAAW,UAAU,CAAC;QAChCH;IACF;IAEA,qBACE,oBAACX,8BACC,oBAACH;QAAkBqB,aAAaH,eAAeG,WAAW;QAAEC,MAAMJ,eAAeK,GAAG,CAACD,IAAI;sBACzF,oBAACrB;QACCO,QAAQU,eAAeK,GAAG,CAACC,OAAO,CAAChB,MAAM;QACzCiB,iBAAiBP,eAAeO,eAAe;qBAE/C,oBAACnB;AAIT,EAAC;AAED,OAAO,MAAMoB,eAAmC;IAC9C,qBAAO,oBAACpB;QAAeqB,WAAU;;AACnC,EAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/next",
3
- "version": "3.0.0-beta.20",
3
+ "version": "3.0.0-beta.22",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,17 +34,19 @@
34
34
  "@types/busboy": "^1.5.3",
35
35
  "busboy": "^1.6.0",
36
36
  "deep-equal": "2.2.2",
37
+ "file-type": "19.0.0",
37
38
  "graphql-http": "^1.22.0",
38
39
  "graphql-playground-html": "1.6.30",
40
+ "http-status": "1.6.2",
39
41
  "path-to-regexp": "^6.2.1",
40
42
  "qs": "6.11.2",
41
43
  "react-diff-viewer-continued": "3.2.6",
42
44
  "react-toastify": "8.2.0",
43
45
  "sass": "^1.71.1",
44
46
  "ws": "^8.16.0",
45
- "@payloadcms/graphql": "3.0.0-beta.20",
46
- "@payloadcms/ui": "3.0.0-beta.20",
47
- "@payloadcms/translations": "3.0.0-beta.20"
47
+ "@payloadcms/graphql": "3.0.0-beta.22",
48
+ "@payloadcms/ui": "3.0.0-beta.22",
49
+ "@payloadcms/translations": "3.0.0-beta.22"
48
50
  },
49
51
  "devDependencies": {
50
52
  "@next/eslint-plugin-next": "^14.1.0",
@@ -53,7 +55,6 @@
53
55
  "@types/ws": "^8.5.10",
54
56
  "css-loader": "^6.10.0",
55
57
  "css-minimizer-webpack-plugin": "^6.0.0",
56
- "file-type": "16.5.4",
57
58
  "mini-css-extract-plugin": "1.6.2",
58
59
  "postcss-loader": "^8.1.1",
59
60
  "postcss-preset-env": "^9.5.0",
@@ -63,15 +64,13 @@
63
64
  "terser-webpack-plugin": "^5.3.10",
64
65
  "webpack": "^5.78.0",
65
66
  "webpack-cli": "^5.1.4",
66
- "@payloadcms/eslint-config": "1.1.1",
67
- "payload": "3.0.0-beta.20"
67
+ "payload": "3.0.0-beta.22",
68
+ "@payloadcms/eslint-config": "1.1.1"
68
69
  },
69
70
  "peerDependencies": {
70
- "file-type": "16.5.4",
71
71
  "graphql": "^16.8.1",
72
- "http-status": "1.6.2",
73
72
  "next": "^14.3.0-canary.7",
74
- "payload": "3.0.0-beta.20"
73
+ "payload": "3.0.0-beta.22"
75
74
  },
76
75
  "engines": {
77
76
  "node": ">=18.20.2"