@payloadcms/next 3.0.0-beta.10 → 3.0.0-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exports/routes.d.ts +1 -1
- package/dist/exports/routes.d.ts.map +1 -1
- package/dist/exports/routes.js +1 -1
- package/dist/exports/routes.js.map +1 -1
- package/dist/exports/utilities.d.ts +3 -0
- package/dist/exports/utilities.d.ts.map +1 -1
- package/dist/exports/utilities.js +3 -0
- package/dist/exports/utilities.js.map +1 -1
- package/dist/next-fileupload/handlers.js.map +1 -1
- package/dist/next-fileupload/isEligibleRequest.js +1 -1
- package/dist/next-fileupload/isEligibleRequest.js.map +1 -1
- package/dist/next-fileupload/processMultipart.d.ts.map +1 -1
- package/dist/next-fileupload/processMultipart.js +29 -6
- package/dist/next-fileupload/processMultipart.js.map +1 -1
- package/dist/next-fileupload/utilities.d.ts.map +1 -1
- package/dist/next-fileupload/utilities.js +4 -4
- package/dist/next-fileupload/utilities.js.map +1 -1
- package/dist/routes/graphql/handler.d.ts.map +1 -1
- package/dist/routes/graphql/handler.js +8 -3
- package/dist/routes/graphql/handler.js.map +1 -1
- package/dist/routes/rest/auth/access.d.ts.map +1 -1
- package/dist/routes/rest/auth/access.js +5 -0
- package/dist/routes/rest/auth/access.js.map +1 -1
- package/dist/routes/rest/auth/forgotPassword.d.ts.map +1 -1
- package/dist/routes/rest/auth/forgotPassword.js +7 -2
- package/dist/routes/rest/auth/forgotPassword.js.map +1 -1
- package/dist/routes/rest/auth/init.d.ts.map +1 -1
- package/dist/routes/rest/auth/init.js +6 -0
- package/dist/routes/rest/auth/init.js.map +1 -1
- package/dist/routes/rest/auth/login.d.ts.map +1 -1
- package/dist/routes/rest/auth/login.js +8 -5
- package/dist/routes/rest/auth/login.js.map +1 -1
- package/dist/routes/rest/auth/logout.d.ts.map +1 -1
- package/dist/routes/rest/auth/logout.js +11 -6
- package/dist/routes/rest/auth/logout.js.map +1 -1
- package/dist/routes/rest/auth/me.d.ts.map +1 -1
- package/dist/routes/rest/auth/me.js +5 -0
- package/dist/routes/rest/auth/me.js.map +1 -1
- package/dist/routes/rest/auth/refresh.d.ts.map +1 -1
- package/dist/routes/rest/auth/refresh.js +11 -7
- package/dist/routes/rest/auth/refresh.js.map +1 -1
- package/dist/routes/rest/auth/registerFirstUser.d.ts.map +1 -1
- package/dist/routes/rest/auth/registerFirstUser.js +17 -5
- package/dist/routes/rest/auth/registerFirstUser.js.map +1 -1
- package/dist/routes/rest/auth/resetPassword.d.ts.map +1 -1
- package/dist/routes/rest/auth/resetPassword.js +8 -5
- package/dist/routes/rest/auth/resetPassword.js.map +1 -1
- package/dist/routes/rest/auth/unlock.d.ts.map +1 -1
- package/dist/routes/rest/auth/unlock.js +7 -2
- package/dist/routes/rest/auth/unlock.js.map +1 -1
- package/dist/routes/rest/auth/verifyEmail.d.ts.map +1 -1
- package/dist/routes/rest/auth/verifyEmail.js +7 -2
- package/dist/routes/rest/auth/verifyEmail.js.map +1 -1
- package/dist/routes/rest/buildFormState.d.ts.map +1 -1
- package/dist/routes/rest/buildFormState.js +15 -0
- package/dist/routes/rest/buildFormState.js.map +1 -1
- package/dist/routes/rest/collections/count.d.ts +3 -0
- package/dist/routes/rest/collections/count.d.ts.map +1 -0
- package/dist/routes/rest/collections/count.js +15 -0
- package/dist/routes/rest/collections/count.js.map +1 -0
- package/dist/routes/rest/collections/create.d.ts.map +1 -1
- package/dist/routes/rest/collections/create.js +5 -0
- package/dist/routes/rest/collections/create.js.map +1 -1
- package/dist/routes/rest/collections/delete.d.ts.map +1 -1
- package/dist/routes/rest/collections/delete.js +7 -0
- package/dist/routes/rest/collections/delete.js.map +1 -1
- package/dist/routes/rest/collections/deleteByID.d.ts.map +1 -1
- package/dist/routes/rest/collections/deleteByID.js +7 -0
- package/dist/routes/rest/collections/deleteByID.js.map +1 -1
- package/dist/routes/rest/collections/docAccess.d.ts.map +1 -1
- package/dist/routes/rest/collections/docAccess.js +5 -0
- package/dist/routes/rest/collections/docAccess.js.map +1 -1
- package/dist/routes/rest/collections/duplicate.d.ts.map +1 -1
- package/dist/routes/rest/collections/duplicate.js +5 -0
- package/dist/routes/rest/collections/duplicate.js.map +1 -1
- package/dist/routes/rest/collections/find.d.ts.map +1 -1
- package/dist/routes/rest/collections/find.js +5 -0
- package/dist/routes/rest/collections/find.js.map +1 -1
- package/dist/routes/rest/collections/findByID.d.ts.map +1 -1
- package/dist/routes/rest/collections/findByID.js +5 -0
- package/dist/routes/rest/collections/findByID.js.map +1 -1
- package/dist/routes/rest/collections/findVersionByID.d.ts.map +1 -1
- package/dist/routes/rest/collections/findVersionByID.js +5 -0
- package/dist/routes/rest/collections/findVersionByID.js.map +1 -1
- package/dist/routes/rest/collections/findVersions.d.ts.map +1 -1
- package/dist/routes/rest/collections/findVersions.js +5 -0
- package/dist/routes/rest/collections/findVersions.js.map +1 -1
- package/dist/routes/rest/collections/preview.d.ts.map +1 -1
- package/dist/routes/rest/collections/preview.js +7 -1
- package/dist/routes/rest/collections/preview.js.map +1 -1
- package/dist/routes/rest/collections/restoreVersion.d.ts.map +1 -1
- package/dist/routes/rest/collections/restoreVersion.js +5 -0
- package/dist/routes/rest/collections/restoreVersion.js.map +1 -1
- package/dist/routes/rest/collections/update.d.ts.map +1 -1
- package/dist/routes/rest/collections/update.js +7 -0
- package/dist/routes/rest/collections/update.js.map +1 -1
- package/dist/routes/rest/collections/updateByID.d.ts.map +1 -1
- package/dist/routes/rest/collections/updateByID.js +5 -0
- package/dist/routes/rest/collections/updateByID.js.map +1 -1
- package/dist/routes/rest/files/getFile.d.ts.map +1 -1
- package/dist/routes/rest/files/getFile.js +15 -8
- package/dist/routes/rest/files/getFile.js.map +1 -1
- package/dist/routes/rest/files/getFileTypeFallback.d.ts +7 -0
- package/dist/routes/rest/files/getFileTypeFallback.d.ts.map +1 -0
- package/dist/routes/rest/files/getFileTypeFallback.js +21 -0
- package/dist/routes/rest/files/getFileTypeFallback.js.map +1 -0
- package/dist/routes/rest/globals/docAccess.d.ts.map +1 -1
- package/dist/routes/rest/globals/docAccess.js +5 -0
- package/dist/routes/rest/globals/docAccess.js.map +1 -1
- package/dist/routes/rest/globals/findOne.d.ts.map +1 -1
- package/dist/routes/rest/globals/findOne.js +5 -0
- package/dist/routes/rest/globals/findOne.js.map +1 -1
- package/dist/routes/rest/globals/findVersionByID.d.ts.map +1 -1
- package/dist/routes/rest/globals/findVersionByID.js +5 -0
- package/dist/routes/rest/globals/findVersionByID.js.map +1 -1
- package/dist/routes/rest/globals/findVersions.d.ts.map +1 -1
- package/dist/routes/rest/globals/findVersions.js +5 -0
- package/dist/routes/rest/globals/findVersions.js.map +1 -1
- package/dist/routes/rest/globals/preview.d.ts.map +1 -1
- package/dist/routes/rest/globals/preview.js +7 -1
- package/dist/routes/rest/globals/preview.js.map +1 -1
- package/dist/routes/rest/globals/restoreVersion.d.ts.map +1 -1
- package/dist/routes/rest/globals/restoreVersion.js +5 -0
- package/dist/routes/rest/globals/restoreVersion.js.map +1 -1
- package/dist/routes/rest/globals/update.d.ts.map +1 -1
- package/dist/routes/rest/globals/update.js +5 -0
- package/dist/routes/rest/globals/update.js.map +1 -1
- package/dist/routes/rest/index.d.ts +1 -0
- package/dist/routes/rest/index.d.ts.map +1 -1
- package/dist/routes/rest/index.js +55 -9
- package/dist/routes/rest/index.js.map +1 -1
- package/dist/routes/rest/routeError.d.ts +5 -4
- package/dist/routes/rest/routeError.d.ts.map +1 -1
- package/dist/routes/rest/routeError.js +25 -11
- package/dist/routes/rest/routeError.js.map +1 -1
- package/dist/utilities/getDataAndFile.d.ts.map +1 -1
- package/dist/utilities/getDataAndFile.js +26 -46
- package/dist/utilities/getDataAndFile.js.map +1 -1
- package/dist/utilities/headersWithCors.d.ts +8 -0
- package/dist/utilities/headersWithCors.d.ts.map +1 -0
- package/dist/utilities/headersWithCors.js +17 -0
- package/dist/utilities/headersWithCors.js.map +1 -0
- package/dist/utilities/initPage.d.ts.map +1 -1
- package/dist/utilities/initPage.js +15 -2
- package/dist/utilities/initPage.js.map +1 -1
- package/dist/views/API/index.client.js +2 -2
- package/dist/views/API/index.client.js.map +1 -1
- package/dist/views/CreateFirstUser/index.client.js +2 -2
- package/dist/views/CreateFirstUser/index.client.js.map +1 -1
- package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
- package/dist/views/CreateFirstUser/index.js +17 -0
- package/dist/views/CreateFirstUser/index.js.map +1 -1
- package/dist/views/Edit/Default/{SetStepNav → SetDocumentStepNav}/index.d.ts +1 -1
- package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts.map +1 -0
- package/dist/views/Edit/Default/{SetStepNav → SetDocumentStepNav}/index.js +12 -5
- package/dist/views/Edit/Default/SetDocumentStepNav/index.js.map +1 -0
- package/dist/views/Edit/Default/index.d.ts.map +1 -1
- package/dist/views/Edit/Default/index.js +5 -4
- package/dist/views/Edit/Default/index.js.map +1 -1
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts +3 -0
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -0
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +55 -0
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -0
- package/dist/views/ForgotPassword/index.d.ts.map +1 -1
- package/dist/views/ForgotPassword/index.js +3 -39
- package/dist/views/ForgotPassword/index.js.map +1 -1
- package/dist/views/List/index.js +2 -2
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/LivePreview/Toolbar/Controls/index.d.ts.map +1 -1
- package/dist/views/LivePreview/Toolbar/Controls/index.js +6 -4
- package/dist/views/LivePreview/Toolbar/Controls/index.js.map +1 -1
- package/dist/views/LivePreview/index.client.js +2 -2
- package/dist/views/LivePreview/index.client.js.map +1 -1
- package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
- package/dist/views/Login/LoginForm/index.js +26 -2
- package/dist/views/Login/LoginForm/index.js.map +1 -1
- package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
- package/dist/views/Logout/LogoutClient.js +1 -2
- package/dist/views/Logout/LogoutClient.js.map +1 -1
- package/dist/views/Versions/index.js +2 -2
- package/dist/views/Versions/index.js.map +1 -1
- package/package.json +10 -8
- package/dist/views/Edit/Default/SetStepNav/index.d.ts.map +0 -1
- package/dist/views/Edit/Default/SetStepNav/index.js.map +0 -1
- package/src/index.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/routes/rest/index.ts"],"sourcesContent":["import type { Endpoint } from 'payload/config'\nimport type { Collection, GlobalConfig, PayloadRequest, SanitizedConfig } from 'payload/types'\n\nimport httpStatus from 'http-status'\nimport { match } from 'path-to-regexp'\n\nimport type {\n CollectionRouteHandler,\n CollectionRouteHandlerWithID,\n GlobalRouteHandler,\n GlobalRouteHandlerWithID,\n} from './types.js'\n\nimport { createPayloadRequest } from '../../utilities/createPayloadRequest.js'\nimport { access } from './auth/access.js'\nimport { forgotPassword } from './auth/forgotPassword.js'\nimport { init } from './auth/init.js'\nimport { login } from './auth/login.js'\nimport { logout } from './auth/logout.js'\nimport { me } from './auth/me.js'\nimport { refresh } from './auth/refresh.js'\nimport { registerFirstUser } from './auth/registerFirstUser.js'\nimport { resetPassword } from './auth/resetPassword.js'\nimport { unlock } from './auth/unlock.js'\nimport { verifyEmail } from './auth/verifyEmail.js'\nimport { buildFormState } from './buildFormState.js'\nimport { endpointsAreDisabled } from './checkEndpoints.js'\nimport { create } from './collections/create.js'\nimport { deleteDoc } from './collections/delete.js'\nimport { deleteByID } from './collections/deleteByID.js'\nimport { docAccess } from './collections/docAccess.js'\nimport { duplicate } from './collections/duplicate.js'\nimport { find } from './collections/find.js'\nimport { findByID } from './collections/findByID.js'\nimport { findVersionByID } from './collections/findVersionByID.js'\nimport { findVersions } from './collections/findVersions.js'\nimport { preview as previewCollection } from './collections/preview.js'\nimport { restoreVersion } from './collections/restoreVersion.js'\nimport { update } from './collections/update.js'\nimport { updateByID } from './collections/updateByID.js'\nimport { getFile } from './files/getFile.js'\nimport { docAccess as docAccessGlobal } from './globals/docAccess.js'\nimport { findOne } from './globals/findOne.js'\nimport { findVersionByID as findVersionByIdGlobal } from './globals/findVersionByID.js'\nimport { findVersions as findVersionsGlobal } from './globals/findVersions.js'\nimport { preview as previewGlobal } from './globals/preview.js'\nimport { restoreVersion as restoreVersionGlobal } from './globals/restoreVersion.js'\nimport { update as updateGlobal } from './globals/update.js'\nimport { routeError } from './routeError.js'\n\nconst endpoints = {\n collection: {\n DELETE: {\n delete: deleteDoc,\n deleteByID,\n },\n GET: {\n 'doc-access-by-id': docAccess,\n 'doc-versions-by-id': findVersionByID,\n find,\n findByID,\n getFile,\n init,\n me,\n preview: previewCollection,\n versions: findVersions,\n },\n PATCH: {\n update,\n updateByID,\n },\n POST: {\n access: docAccess,\n create,\n 'doc-access-by-id': docAccess,\n 'doc-verify-by-id': verifyEmail,\n 'doc-versions-by-id': restoreVersion,\n duplicate,\n 'first-register': registerFirstUser,\n 'forgot-password': forgotPassword,\n login,\n logout,\n 'refresh-token': refresh,\n 'reset-password': resetPassword,\n unlock,\n },\n },\n global: {\n GET: {\n 'doc-access': docAccessGlobal,\n 'doc-versions': findVersionsGlobal,\n 'doc-versions-by-id': findVersionByIdGlobal,\n findOne,\n preview: previewGlobal,\n },\n POST: {\n 'doc-access': docAccessGlobal,\n 'doc-versions-by-id': restoreVersionGlobal,\n update: updateGlobal,\n },\n },\n root: {\n GET: {\n access,\n },\n POST: {\n 'form-state': buildFormState,\n },\n },\n}\n\nconst handleCustomEndpoints = ({\n endpoints,\n entitySlug,\n payloadRequest,\n}: {\n endpoints: Endpoint[] | GlobalConfig['endpoints']\n entitySlug?: string\n payloadRequest: PayloadRequest\n}): Promise<Response> | Response => {\n if (endpoints && endpoints.length > 0) {\n let handlerParams = {}\n const { pathname } = payloadRequest\n const pathPrefix =\n payloadRequest.payload.config.routes.api + (entitySlug ? `/${entitySlug}` : '')\n\n const customEndpoint = endpoints.find((endpoint) => {\n if (endpoint.method === payloadRequest.method.toLowerCase()) {\n const pathMatchFn = match(`${pathPrefix}${endpoint.path}`, {\n decode: decodeURIComponent,\n })\n const tempParams = pathMatchFn(pathname)\n if (tempParams) {\n handlerParams = tempParams.params\n return true\n }\n }\n })\n\n if (customEndpoint) {\n payloadRequest.routeParams = handlerParams\n return customEndpoint.handler(payloadRequest)\n }\n }\n\n return null\n}\n\nconst RouteNotFoundResponse = (slug: string[]) =>\n Response.json(\n {\n message: `Route Not Found: \"${slug.join('/')}\"`,\n },\n { status: httpStatus.NOT_FOUND },\n )\n\nexport const GET =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2, slug3, slug4] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n params: {\n collection: slug1,\n },\n request,\n })\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n\n if (disableEndpoints) return disableEndpoints\n\n collection = req.payload.collections?.[slug1]\n\n if (collection) {\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.GET.find({ collection, req })\n break\n case 2:\n if (slug2 in endpoints.collection.GET) {\n // /:collection/init\n // /:collection/me\n // /:collection/versions\n res = await (endpoints.collection.GET[slug2] as CollectionRouteHandler)({\n collection,\n req,\n })\n } else {\n // /:collection/:id\n res = await endpoints.collection.GET.findByID({ id: slug2, collection, req })\n }\n break\n case 3:\n if (slug2 === 'file') {\n // /:collection/file/:filename\n res = await endpoints.collection.GET.getFile({ collection, filename: slug3, req })\n } else if (slug3 in endpoints.collection.GET) {\n // /:collection/:id/preview\n res = await (endpoints.collection.GET[slug3] as CollectionRouteHandlerWithID)({\n id: slug2,\n collection,\n req,\n })\n } else if (`doc-${slug2}-by-id` in endpoints.collection.GET) {\n // /:collection/access/:id\n // /:collection/versions/:id\n res = await (\n endpoints.collection.GET[`doc-${slug2}-by-id`] as CollectionRouteHandlerWithID\n )({ id: slug3, collection, req })\n }\n break\n }\n } else if (slug1 === 'globals') {\n const globalConfig = req.payload.config.globals.find((global) => global.slug === slug2)\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: globalConfig.endpoints,\n request,\n })\n\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: globalConfig.endpoints,\n entitySlug: `${slug1}/${slug2}`,\n payloadRequest: req,\n })\n\n if (customEndpointResponse) return customEndpointResponse\n\n switch (slug.length) {\n case 2:\n // /globals/:slug\n res = await endpoints.global.GET.findOne({ globalConfig, req })\n break\n case 3:\n if (slug3 in endpoints.global.GET) {\n // /globals/:slug/preview\n res = await (endpoints.global.GET[slug3] as GlobalRouteHandler)({\n globalConfig,\n req,\n })\n } else if (`doc-${slug3}` in endpoints.global.GET) {\n // /globals/:slug/access\n // /globals/:slug/versions\n // /globals/:slug/preview\n res = await (endpoints.global.GET?.[`doc-${slug3}`] as GlobalRouteHandler)({\n globalConfig,\n req,\n })\n }\n break\n case 4:\n if (`doc-${slug3}-by-id` in endpoints.global.GET) {\n // /globals/:slug/versions/:id\n res = await (\n endpoints.global.GET?.[`doc-${slug3}-by-id`] as GlobalRouteHandlerWithID\n )({\n id: slug4,\n globalConfig,\n req,\n })\n }\n break\n }\n } else if (slug.length === 1 && slug1 in endpoints.root.GET) {\n res = await endpoints.root.GET[slug1]({ req })\n }\n\n if (res instanceof Response) return res\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse(slug)\n } catch (error) {\n return routeError({\n collection,\n err: error,\n req,\n })\n }\n }\n\nexport const POST =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2, slug3, slug4] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n params: { collection: slug1 },\n request,\n })\n\n collection = req.payload.collections?.[slug1]\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n\n if (disableEndpoints) return disableEndpoints\n\n if (collection) {\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n payloadRequest: req,\n })\n\n if (customEndpointResponse) return customEndpointResponse\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.POST.create({ collection, req })\n break\n case 2:\n if (slug2 in endpoints.collection.POST) {\n // /:collection/login\n // /:collection/logout\n // /:collection/unlock\n // /:collection/access\n // /:collection/first-register\n // /:collection/forgot-password\n // /:collection/reset-password\n // /:collection/refresh-token\n\n res = await (endpoints.collection.POST?.[slug2] as CollectionRouteHandler)({\n collection,\n req,\n })\n }\n break\n case 3:\n if (`doc-${slug2}-by-id` in endpoints.collection.POST) {\n // /:collection/access/:id\n // /:collection/versions/:id\n // /:collection/verify/:token (\"doc-verify-by-id\" uses id as token internally)\n res = await (\n endpoints.collection.POST[`doc-${slug2}-by-id`] as CollectionRouteHandlerWithID\n )({ id: slug3, collection, req })\n } else if (slug3 === 'duplicate' && collection.config.disableDuplicate !== true) {\n // /:collection/:id/duplicate\n res = await endpoints.collection.POST.duplicate({ id: slug2, collection, req })\n }\n break\n }\n } else if (slug1 === 'globals' && slug2) {\n const globalConfig = req.payload.config.globals.find((global) => global.slug === slug2)\n const disableEndpoints = endpointsAreDisabled({\n endpoints: globalConfig.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: globalConfig.endpoints,\n entitySlug: `${slug1}/${slug2}`,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n switch (slug.length) {\n case 2:\n // /globals/:slug\n res = await endpoints.global.POST.update({ globalConfig, req })\n break\n case 3:\n if (`doc-${slug3}` in endpoints.global.POST) {\n // /globals/:slug/access\n res = await (endpoints.global.POST?.[`doc-${slug3}`] as GlobalRouteHandler)({\n globalConfig,\n req,\n })\n }\n break\n case 4:\n if (`doc-${slug3}-by-id` in endpoints.global.POST) {\n // /globals/:slug/versions/:id\n res = await (\n endpoints.global.POST?.[`doc-${slug3}-by-id`] as GlobalRouteHandlerWithID\n )({\n id: slug4,\n globalConfig,\n req,\n })\n }\n break\n default:\n res = new Response('Route Not Found', { status: 404 })\n }\n } else if (slug.length === 1 && slug1 in endpoints.root.POST) {\n res = await endpoints.root.POST[slug1]({ req })\n }\n\n if (res instanceof Response) return res\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse(slug)\n } catch (error) {\n return routeError({\n collection,\n err: error,\n req,\n })\n }\n }\n\nexport const DELETE =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n params: {\n collection: slug1,\n },\n request,\n })\n collection = req.payload.collections?.[slug1]\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n if (collection) {\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.DELETE.delete({ collection, req })\n break\n case 2:\n // /:collection/:id\n res = await endpoints.collection.DELETE.deleteByID({ id: slug2, collection, req })\n break\n }\n }\n\n if (res instanceof Response) return res\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse(slug)\n } catch (error) {\n return routeError({\n collection,\n err: error,\n req,\n })\n }\n }\n\nexport const PATCH =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n params: {\n collection: slug1,\n },\n request,\n })\n collection = req.payload.collections?.[slug1]\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n if (collection) {\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.PATCH.update({ collection, req })\n break\n case 2:\n // /:collection/:id\n res = await endpoints.collection.PATCH.updateByID({ id: slug2, collection, req })\n break\n }\n }\n\n if (res instanceof Response) return res\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse(slug)\n } catch (error) {\n return routeError({\n collection,\n err: error,\n req,\n })\n }\n }\n"],"names":["httpStatus","match","createPayloadRequest","access","forgotPassword","init","login","logout","me","refresh","registerFirstUser","resetPassword","unlock","verifyEmail","buildFormState","endpointsAreDisabled","create","deleteDoc","deleteByID","docAccess","duplicate","find","findByID","findVersionByID","findVersions","preview","previewCollection","restoreVersion","update","updateByID","getFile","docAccessGlobal","findOne","findVersionByIdGlobal","findVersionsGlobal","previewGlobal","restoreVersionGlobal","updateGlobal","routeError","endpoints","collection","DELETE","delete","GET","versions","PATCH","POST","global","root","handleCustomEndpoints","entitySlug","payloadRequest","length","handlerParams","pathname","pathPrefix","payload","config","routes","api","customEndpoint","endpoint","method","toLowerCase","pathMatchFn","path","decode","decodeURIComponent","tempParams","params","routeParams","handler","RouteNotFoundResponse","slug","Response","json","message","join","status","NOT_FOUND","request","slug1","slug2","slug3","slug4","req","res","disableEndpoints","collections","customEndpointResponse","id","filename","globalConfig","globals","error","err","disableDuplicate"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/routes/rest/index.ts"],"sourcesContent":["import type { Endpoint } from 'payload/config'\nimport type { Collection, GlobalConfig, PayloadRequest, SanitizedConfig } from 'payload/types'\n\nimport httpStatus from 'http-status'\nimport { match } from 'path-to-regexp'\n\nimport type {\n CollectionRouteHandler,\n CollectionRouteHandlerWithID,\n GlobalRouteHandler,\n GlobalRouteHandlerWithID,\n} from './types.js'\n\nimport { createPayloadRequest } from '../../utilities/createPayloadRequest.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\nimport { access } from './auth/access.js'\nimport { forgotPassword } from './auth/forgotPassword.js'\nimport { init } from './auth/init.js'\nimport { login } from './auth/login.js'\nimport { logout } from './auth/logout.js'\nimport { me } from './auth/me.js'\nimport { refresh } from './auth/refresh.js'\nimport { registerFirstUser } from './auth/registerFirstUser.js'\nimport { resetPassword } from './auth/resetPassword.js'\nimport { unlock } from './auth/unlock.js'\nimport { verifyEmail } from './auth/verifyEmail.js'\nimport { buildFormState } from './buildFormState.js'\nimport { endpointsAreDisabled } from './checkEndpoints.js'\nimport { count } from './collections/count.js'\nimport { create } from './collections/create.js'\nimport { deleteDoc } from './collections/delete.js'\nimport { deleteByID } from './collections/deleteByID.js'\nimport { docAccess } from './collections/docAccess.js'\nimport { duplicate } from './collections/duplicate.js'\nimport { find } from './collections/find.js'\nimport { findByID } from './collections/findByID.js'\nimport { findVersionByID } from './collections/findVersionByID.js'\nimport { findVersions } from './collections/findVersions.js'\nimport { preview as previewCollection } from './collections/preview.js'\nimport { restoreVersion } from './collections/restoreVersion.js'\nimport { update } from './collections/update.js'\nimport { updateByID } from './collections/updateByID.js'\nimport { getFile } from './files/getFile.js'\nimport { docAccess as docAccessGlobal } from './globals/docAccess.js'\nimport { findOne } from './globals/findOne.js'\nimport { findVersionByID as findVersionByIdGlobal } from './globals/findVersionByID.js'\nimport { findVersions as findVersionsGlobal } from './globals/findVersions.js'\nimport { preview as previewGlobal } from './globals/preview.js'\nimport { restoreVersion as restoreVersionGlobal } from './globals/restoreVersion.js'\nimport { update as updateGlobal } from './globals/update.js'\nimport { routeError } from './routeError.js'\n\nconst endpoints = {\n collection: {\n DELETE: {\n delete: deleteDoc,\n deleteByID,\n },\n GET: {\n count,\n 'doc-access-by-id': docAccess,\n 'doc-versions-by-id': findVersionByID,\n find,\n findByID,\n getFile,\n init,\n me,\n preview: previewCollection,\n versions: findVersions,\n },\n PATCH: {\n update,\n updateByID,\n },\n POST: {\n access: docAccess,\n create,\n 'doc-access-by-id': docAccess,\n 'doc-verify-by-id': verifyEmail,\n 'doc-versions-by-id': restoreVersion,\n duplicate,\n 'first-register': registerFirstUser,\n 'forgot-password': forgotPassword,\n login,\n logout,\n 'refresh-token': refresh,\n 'reset-password': resetPassword,\n unlock,\n },\n },\n global: {\n GET: {\n 'doc-access': docAccessGlobal,\n 'doc-versions': findVersionsGlobal,\n 'doc-versions-by-id': findVersionByIdGlobal,\n findOne,\n preview: previewGlobal,\n },\n POST: {\n 'doc-access': docAccessGlobal,\n 'doc-versions-by-id': restoreVersionGlobal,\n update: updateGlobal,\n },\n },\n root: {\n GET: {\n access,\n },\n POST: {\n 'form-state': buildFormState,\n },\n },\n}\n\nconst handleCustomEndpoints = ({\n endpoints,\n entitySlug,\n payloadRequest,\n}: {\n endpoints: Endpoint[] | GlobalConfig['endpoints']\n entitySlug?: string\n payloadRequest: PayloadRequest\n}): Promise<Response> | Response => {\n if (endpoints && endpoints.length > 0) {\n let handlerParams = {}\n const { pathname } = payloadRequest\n const pathPrefix =\n payloadRequest.payload.config.routes.api + (entitySlug ? `/${entitySlug}` : '')\n\n const customEndpoint = endpoints.find((endpoint) => {\n if (endpoint.method === payloadRequest.method.toLowerCase()) {\n const pathMatchFn = match(`${pathPrefix}${endpoint.path}`, {\n decode: decodeURIComponent,\n })\n const tempParams = pathMatchFn(pathname)\n if (tempParams) {\n handlerParams = tempParams.params\n return true\n }\n }\n })\n\n if (customEndpoint) {\n payloadRequest.routeParams = handlerParams\n return customEndpoint.handler(payloadRequest)\n }\n }\n\n return null\n}\n\nconst RouteNotFoundResponse = ({ slug, req }: { req: PayloadRequest; slug: string[] }) =>\n Response.json(\n {\n message: `Route Not Found: \"${slug.join('/')}\"`,\n },\n {\n headers: headersWithCors({\n headers: new Headers(),\n req,\n }),\n status: httpStatus.NOT_FOUND,\n },\n )\n\nexport const OPTIONS =\n (config: Promise<SanitizedConfig> | SanitizedConfig) => async (request: Request) => {\n let req: PayloadRequest\n\n try {\n req = await createPayloadRequest({\n config,\n request,\n })\n\n return Response.json(\n {},\n {\n headers: headersWithCors({\n headers: new Headers(),\n req,\n }),\n status: 200,\n },\n )\n } catch (error) {\n return routeError({\n config,\n err: error,\n req: req || request,\n })\n }\n }\n\nexport const GET =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2, slug3, slug4] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n params: {\n collection: slug1,\n },\n request,\n })\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n\n if (disableEndpoints) return disableEndpoints\n\n collection = req.payload.collections?.[slug1]\n\n if (collection) {\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.GET.find({ collection, req })\n break\n case 2:\n if (slug2 in endpoints.collection.GET) {\n // /:collection/init\n // /:collection/me\n // /:collection/versions\n // /:collection/count\n res = await (endpoints.collection.GET[slug2] as CollectionRouteHandler)({\n collection,\n req,\n })\n } else {\n // /:collection/:id\n res = await endpoints.collection.GET.findByID({ id: slug2, collection, req })\n }\n break\n case 3:\n if (slug2 === 'file') {\n // /:collection/file/:filename\n res = await endpoints.collection.GET.getFile({ collection, filename: slug3, req })\n } else if (slug3 in endpoints.collection.GET) {\n // /:collection/:id/preview\n res = await (endpoints.collection.GET[slug3] as CollectionRouteHandlerWithID)({\n id: slug2,\n collection,\n req,\n })\n } else if (`doc-${slug2}-by-id` in endpoints.collection.GET) {\n // /:collection/access/:id\n // /:collection/versions/:id\n res = await (\n endpoints.collection.GET[`doc-${slug2}-by-id`] as CollectionRouteHandlerWithID\n )({ id: slug3, collection, req })\n }\n break\n }\n } else if (slug1 === 'globals') {\n const globalConfig = req.payload.config.globals.find((global) => global.slug === slug2)\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: globalConfig.endpoints,\n request,\n })\n\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: globalConfig.endpoints,\n entitySlug: `${slug1}/${slug2}`,\n payloadRequest: req,\n })\n\n if (customEndpointResponse) return customEndpointResponse\n\n switch (slug.length) {\n case 2:\n // /globals/:slug\n res = await endpoints.global.GET.findOne({ globalConfig, req })\n break\n case 3:\n if (slug3 in endpoints.global.GET) {\n // /globals/:slug/preview\n res = await (endpoints.global.GET[slug3] as GlobalRouteHandler)({\n globalConfig,\n req,\n })\n } else if (`doc-${slug3}` in endpoints.global.GET) {\n // /globals/:slug/access\n // /globals/:slug/versions\n // /globals/:slug/preview\n res = await (endpoints.global.GET?.[`doc-${slug3}`] as GlobalRouteHandler)({\n globalConfig,\n req,\n })\n }\n break\n case 4:\n if (`doc-${slug3}-by-id` in endpoints.global.GET) {\n // /globals/:slug/versions/:id\n res = await (\n endpoints.global.GET?.[`doc-${slug3}-by-id`] as GlobalRouteHandlerWithID\n )({\n id: slug4,\n globalConfig,\n req,\n })\n }\n break\n }\n } else if (slug.length === 1 && slug1 in endpoints.root.GET) {\n res = await endpoints.root.GET[slug1]({ req })\n }\n\n if (res instanceof Response) return res\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse({\n slug,\n req,\n })\n } catch (error) {\n return routeError({\n collection,\n config,\n err: error,\n req: req || request,\n })\n }\n }\n\nexport const POST =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2, slug3, slug4] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n params: { collection: slug1 },\n request,\n })\n\n collection = req.payload.collections?.[slug1]\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n\n if (disableEndpoints) return disableEndpoints\n\n if (collection) {\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n payloadRequest: req,\n })\n\n if (customEndpointResponse) return customEndpointResponse\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.POST.create({ collection, req })\n break\n case 2:\n if (slug2 in endpoints.collection.POST) {\n // /:collection/login\n // /:collection/logout\n // /:collection/unlock\n // /:collection/access\n // /:collection/first-register\n // /:collection/forgot-password\n // /:collection/reset-password\n // /:collection/refresh-token\n\n res = await (endpoints.collection.POST?.[slug2] as CollectionRouteHandler)({\n collection,\n req,\n })\n }\n break\n case 3:\n if (`doc-${slug2}-by-id` in endpoints.collection.POST) {\n // /:collection/access/:id\n // /:collection/versions/:id\n // /:collection/verify/:token (\"doc-verify-by-id\" uses id as token internally)\n res = await (\n endpoints.collection.POST[`doc-${slug2}-by-id`] as CollectionRouteHandlerWithID\n )({ id: slug3, collection, req })\n } else if (slug3 === 'duplicate' && collection.config.disableDuplicate !== true) {\n // /:collection/:id/duplicate\n res = await endpoints.collection.POST.duplicate({ id: slug2, collection, req })\n }\n break\n }\n } else if (slug1 === 'globals' && slug2) {\n const globalConfig = req.payload.config.globals.find((global) => global.slug === slug2)\n const disableEndpoints = endpointsAreDisabled({\n endpoints: globalConfig.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: globalConfig.endpoints,\n entitySlug: `${slug1}/${slug2}`,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n switch (slug.length) {\n case 2:\n // /globals/:slug\n res = await endpoints.global.POST.update({ globalConfig, req })\n break\n case 3:\n if (`doc-${slug3}` in endpoints.global.POST) {\n // /globals/:slug/access\n res = await (endpoints.global.POST?.[`doc-${slug3}`] as GlobalRouteHandler)({\n globalConfig,\n req,\n })\n }\n break\n case 4:\n if (`doc-${slug3}-by-id` in endpoints.global.POST) {\n // /globals/:slug/versions/:id\n res = await (\n endpoints.global.POST?.[`doc-${slug3}-by-id`] as GlobalRouteHandlerWithID\n )({\n id: slug4,\n globalConfig,\n req,\n })\n }\n break\n default:\n res = new Response('Route Not Found', { status: 404 })\n }\n } else if (slug.length === 1 && slug1 in endpoints.root.POST) {\n res = await endpoints.root.POST[slug1]({ req })\n }\n\n if (res instanceof Response) return res\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse({\n slug,\n req,\n })\n } catch (error) {\n return routeError({\n collection,\n config,\n err: error,\n req: req || request,\n })\n }\n }\n\nexport const DELETE =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n params: {\n collection: slug1,\n },\n request,\n })\n collection = req.payload.collections?.[slug1]\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n if (collection) {\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.DELETE.delete({ collection, req })\n break\n case 2:\n // /:collection/:id\n res = await endpoints.collection.DELETE.deleteByID({ id: slug2, collection, req })\n break\n }\n }\n\n if (res instanceof Response) return res\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse({\n slug,\n req,\n })\n } catch (error) {\n return routeError({\n collection,\n config,\n err: error,\n req: req || request,\n })\n }\n }\n\nexport const PATCH =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n params: {\n collection: slug1,\n },\n request,\n })\n collection = req.payload.collections?.[slug1]\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n if (collection) {\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.PATCH.update({ collection, req })\n break\n case 2:\n // /:collection/:id\n res = await endpoints.collection.PATCH.updateByID({ id: slug2, collection, req })\n break\n }\n }\n\n if (res instanceof Response) return res\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse({\n slug,\n req,\n })\n } catch (error) {\n return routeError({\n collection,\n config,\n err: error,\n req: req || request,\n })\n }\n }\n"],"names":["httpStatus","match","createPayloadRequest","headersWithCors","access","forgotPassword","init","login","logout","me","refresh","registerFirstUser","resetPassword","unlock","verifyEmail","buildFormState","endpointsAreDisabled","count","create","deleteDoc","deleteByID","docAccess","duplicate","find","findByID","findVersionByID","findVersions","preview","previewCollection","restoreVersion","update","updateByID","getFile","docAccessGlobal","findOne","findVersionByIdGlobal","findVersionsGlobal","previewGlobal","restoreVersionGlobal","updateGlobal","routeError","endpoints","collection","DELETE","delete","GET","versions","PATCH","POST","global","root","handleCustomEndpoints","entitySlug","payloadRequest","length","handlerParams","pathname","pathPrefix","payload","config","routes","api","customEndpoint","endpoint","method","toLowerCase","pathMatchFn","path","decode","decodeURIComponent","tempParams","params","routeParams","handler","RouteNotFoundResponse","slug","req","Response","json","message","join","headers","Headers","status","NOT_FOUND","OPTIONS","request","error","err","slug1","slug2","slug3","slug4","res","disableEndpoints","collections","customEndpointResponse","id","filename","globalConfig","globals","disableDuplicate"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import type { Collection, PayloadRequest } from 'payload/types';
|
|
1
|
+
import type { Collection, PayloadRequest, SanitizedConfig } from 'payload/types';
|
|
2
2
|
import { APIError } from 'payload/errors';
|
|
3
3
|
export type ErrorResponse = {
|
|
4
4
|
data?: any;
|
|
5
5
|
errors: unknown[];
|
|
6
6
|
stack?: string;
|
|
7
7
|
};
|
|
8
|
-
export declare const routeError: ({ collection, err, req, }: {
|
|
8
|
+
export declare const routeError: ({ collection, config: configArg, err, req, }: {
|
|
9
9
|
collection?: Collection;
|
|
10
|
+
config: Promise<SanitizedConfig> | SanitizedConfig;
|
|
10
11
|
err: APIError;
|
|
11
|
-
req: PayloadRequest
|
|
12
|
-
}) => Response
|
|
12
|
+
req: Partial<PayloadRequest>;
|
|
13
|
+
}) => Promise<Response>;
|
|
13
14
|
//# sourceMappingURL=routeError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeError.d.ts","sourceRoot":"","sources":["../../../src/routes/rest/routeError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"routeError.d.ts","sourceRoot":"","sources":["../../../src/routes/rest/routeError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAGhF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAKzC,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AA+D7E,eAAO,MAAM,UAAU,iDAKpB;IACD,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,MAAM,EAAE,QAAQ,eAAe,CAAC,GAAG,eAAe,CAAA;IAClD,GAAG,EAAE,QAAQ,CAAA;IACb,GAAG,EAAE,QAAQ,cAAc,CAAC,CAAA;CAC7B,sBA8DA,CAAA"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import httpStatus from 'http-status';
|
|
2
2
|
import { APIError } from 'payload/errors';
|
|
3
|
+
import { getPayloadHMR } from '../../utilities/getPayloadHMR.js';
|
|
4
|
+
import { headersWithCors } from '../../utilities/headersWithCors.js';
|
|
3
5
|
const formatErrors = (incoming)=>{
|
|
4
6
|
if (incoming) {
|
|
5
7
|
// Cannot use `instanceof` to check error type: https://github.com/microsoft/TypeScript/issues/13965
|
|
@@ -52,16 +54,27 @@ const formatErrors = (incoming)=>{
|
|
|
52
54
|
]
|
|
53
55
|
};
|
|
54
56
|
};
|
|
55
|
-
export const routeError = ({ collection, err, req })=>{
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
})
|
|
57
|
+
export const routeError = async ({ collection, config: configArg, err, req })=>{
|
|
58
|
+
let payload = req?.payload;
|
|
59
|
+
if (!payload) {
|
|
60
|
+
try {
|
|
61
|
+
payload = await getPayloadHMR({
|
|
62
|
+
config: configArg
|
|
63
|
+
});
|
|
64
|
+
} catch (e) {
|
|
65
|
+
return Response.json({
|
|
66
|
+
message: 'There was an error initializing Payload'
|
|
67
|
+
}, {
|
|
68
|
+
status: httpStatus.INTERNAL_SERVER_ERROR
|
|
69
|
+
});
|
|
70
|
+
}
|
|
63
71
|
}
|
|
64
|
-
|
|
72
|
+
req.payload = payload;
|
|
73
|
+
const headers = headersWithCors({
|
|
74
|
+
headers: new Headers(),
|
|
75
|
+
req
|
|
76
|
+
});
|
|
77
|
+
const { config, logger } = payload;
|
|
65
78
|
let response = formatErrors(err);
|
|
66
79
|
let status = err.status || httpStatus.INTERNAL_SERVER_ERROR;
|
|
67
80
|
logger.error(err.stack);
|
|
@@ -74,18 +87,19 @@ export const routeError = ({ collection, err, req })=>{
|
|
|
74
87
|
response.stack = err.stack;
|
|
75
88
|
}
|
|
76
89
|
if (collection && typeof collection.config.hooks.afterError === 'function') {
|
|
77
|
-
({ response, status } = collection.config.hooks.afterError(err, response, req
|
|
90
|
+
({ response, status } = collection.config.hooks.afterError(err, response, req?.context, collection.config) || {
|
|
78
91
|
response,
|
|
79
92
|
status
|
|
80
93
|
});
|
|
81
94
|
}
|
|
82
95
|
if (typeof config.hooks.afterError === 'function') {
|
|
83
|
-
({ response, status } = config.hooks.afterError(err, response, req
|
|
96
|
+
({ response, status } = config.hooks.afterError(err, response, req?.context, collection?.config) || {
|
|
84
97
|
response,
|
|
85
98
|
status
|
|
86
99
|
});
|
|
87
100
|
}
|
|
88
101
|
return Response.json(response, {
|
|
102
|
+
headers,
|
|
89
103
|
status
|
|
90
104
|
});
|
|
91
105
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/routes/rest/routeError.ts"],"sourcesContent":["import type { Collection, PayloadRequest } from 'payload/types'\n\nimport httpStatus from 'http-status'\nimport { APIError } from 'payload/errors'\n\nexport type ErrorResponse = { data?: any; errors: unknown[]; stack?: string }\n\nconst formatErrors = (incoming: { [key: string]: unknown } | APIError): ErrorResponse => {\n if (incoming) {\n // Cannot use `instanceof` to check error type: https://github.com/microsoft/TypeScript/issues/13965\n // Instead, get the prototype of the incoming error and check its constructor name\n const proto = Object.getPrototypeOf(incoming)\n\n // Payload 'ValidationError' and 'APIError'\n if (\n (proto.constructor.name === 'ValidationError' || proto.constructor.name === 'APIError') &&\n incoming.data\n ) {\n return {\n errors: [\n {\n name: incoming.name,\n data: incoming.data,\n message: incoming.message,\n },\n ],\n }\n }\n\n // Mongoose 'ValidationError': https://mongoosejs.com/docs/api/error.html#Error.ValidationError\n if (proto.constructor.name === 'ValidationError' && 'errors' in incoming && incoming.errors) {\n return {\n errors: Object.keys(incoming.errors).reduce((acc, key) => {\n acc.push({\n field: incoming.errors[key].path,\n message: incoming.errors[key].message,\n })\n return acc\n }, []),\n }\n }\n\n if (Array.isArray(incoming.message)) {\n return {\n errors: incoming.message,\n }\n }\n\n if (incoming.name) {\n return {\n errors: [\n {\n message: incoming.message,\n },\n ],\n }\n }\n }\n\n return {\n errors: [\n {\n message: 'An unknown error occurred.',\n },\n ],\n }\n}\n\nexport const routeError = ({\n collection,\n err,\n req,\n}: {\n collection?: Collection\n err: APIError\n req: PayloadRequest
|
|
1
|
+
{"version":3,"sources":["../../../src/routes/rest/routeError.ts"],"sourcesContent":["import type { Collection, PayloadRequest, SanitizedConfig } from 'payload/types'\n\nimport httpStatus from 'http-status'\nimport { APIError } from 'payload/errors'\n\nimport { getPayloadHMR } from '../../utilities/getPayloadHMR.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\n\nexport type ErrorResponse = { data?: any; errors: unknown[]; stack?: string }\n\nconst formatErrors = (incoming: { [key: string]: unknown } | APIError): ErrorResponse => {\n if (incoming) {\n // Cannot use `instanceof` to check error type: https://github.com/microsoft/TypeScript/issues/13965\n // Instead, get the prototype of the incoming error and check its constructor name\n const proto = Object.getPrototypeOf(incoming)\n\n // Payload 'ValidationError' and 'APIError'\n if (\n (proto.constructor.name === 'ValidationError' || proto.constructor.name === 'APIError') &&\n incoming.data\n ) {\n return {\n errors: [\n {\n name: incoming.name,\n data: incoming.data,\n message: incoming.message,\n },\n ],\n }\n }\n\n // Mongoose 'ValidationError': https://mongoosejs.com/docs/api/error.html#Error.ValidationError\n if (proto.constructor.name === 'ValidationError' && 'errors' in incoming && incoming.errors) {\n return {\n errors: Object.keys(incoming.errors).reduce((acc, key) => {\n acc.push({\n field: incoming.errors[key].path,\n message: incoming.errors[key].message,\n })\n return acc\n }, []),\n }\n }\n\n if (Array.isArray(incoming.message)) {\n return {\n errors: incoming.message,\n }\n }\n\n if (incoming.name) {\n return {\n errors: [\n {\n message: incoming.message,\n },\n ],\n }\n }\n }\n\n return {\n errors: [\n {\n message: 'An unknown error occurred.',\n },\n ],\n }\n}\n\nexport const routeError = async ({\n collection,\n config: configArg,\n err,\n req,\n}: {\n collection?: Collection\n config: Promise<SanitizedConfig> | SanitizedConfig\n err: APIError\n req: Partial<PayloadRequest>\n}) => {\n let payload = req?.payload\n\n if (!payload) {\n try {\n payload = await getPayloadHMR({ config: configArg })\n } catch (e) {\n return Response.json(\n {\n message: 'There was an error initializing Payload',\n },\n { status: httpStatus.INTERNAL_SERVER_ERROR },\n )\n }\n }\n\n req.payload = payload\n const headers = headersWithCors({\n headers: new Headers(),\n req,\n })\n\n const { config, logger } = payload\n\n let response = formatErrors(err)\n\n let status = err.status || httpStatus.INTERNAL_SERVER_ERROR\n\n logger.error(err.stack)\n\n // Internal server errors can contain anything, including potentially sensitive data.\n // Therefore, error details will be hidden from the response unless `config.debug` is `true`\n if (!config.debug && status === httpStatus.INTERNAL_SERVER_ERROR) {\n response = formatErrors(new APIError('Something went wrong.'))\n }\n\n if (config.debug && config.debug === true) {\n response.stack = err.stack\n }\n\n if (collection && typeof collection.config.hooks.afterError === 'function') {\n ;({ response, status } = collection.config.hooks.afterError(\n err,\n response,\n req?.context,\n collection.config,\n ) || { response, status })\n }\n\n if (typeof config.hooks.afterError === 'function') {\n ;({ response, status } = config.hooks.afterError(\n err,\n response,\n req?.context,\n collection?.config,\n ) || {\n response,\n status,\n })\n }\n\n return Response.json(response, { headers, status })\n}\n"],"names":["httpStatus","APIError","getPayloadHMR","headersWithCors","formatErrors","incoming","proto","Object","getPrototypeOf","constructor","name","data","errors","message","keys","reduce","acc","key","push","field","path","Array","isArray","routeError","collection","config","configArg","err","req","payload","e","Response","json","status","INTERNAL_SERVER_ERROR","headers","Headers","logger","response","error","stack","debug","hooks","afterError","context"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDataAndFile.d.ts","sourceRoot":"","sources":["../../src/utilities/getDataAndFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"getDataAndFile.d.ts","sourceRoot":"","sources":["../../src/utilities/getDataAndFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAMtF,KAAK,cAAc,GAAG,CAAC,IAAI,EAAE;IAC3B,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAK,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAA;CACnC,CAAC,CAAA;AACF,eAAO,MAAM,cAAc,EAAE,cAwD5B,CAAA"}
|
|
@@ -1,60 +1,40 @@
|
|
|
1
1
|
import { nextFileUpload } from '../next-fileupload/index.js';
|
|
2
|
-
export const getDataAndFile = async ({ collection, config, request })=>{
|
|
2
|
+
export const getDataAndFile = async ({ collection, config, request: incomingRequest })=>{
|
|
3
3
|
let data = undefined;
|
|
4
4
|
let file = undefined;
|
|
5
5
|
if ([
|
|
6
6
|
'PATCH',
|
|
7
7
|
'POST',
|
|
8
8
|
'PUT'
|
|
9
|
-
].includes(
|
|
9
|
+
].includes(incomingRequest.method.toUpperCase()) && incomingRequest.body) {
|
|
10
|
+
const request = new Request(incomingRequest);
|
|
10
11
|
const [contentType] = (request.headers.get('Content-Type') || '').split(';');
|
|
11
12
|
if (contentType === 'application/json') {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (collection?.config?.upload) {
|
|
20
|
-
// load file in memory
|
|
21
|
-
if (!config.upload?.useTempFiles) {
|
|
22
|
-
const formData = await request.formData();
|
|
23
|
-
const formFile = formData.get('file');
|
|
24
|
-
if (formFile instanceof Blob) {
|
|
25
|
-
const bytes = await formFile.arrayBuffer();
|
|
26
|
-
const buffer = Buffer.from(bytes);
|
|
27
|
-
file = {
|
|
28
|
-
name: formFile.name,
|
|
29
|
-
data: buffer,
|
|
30
|
-
mimetype: formFile.type,
|
|
31
|
-
size: formFile.size
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
const payloadData = formData.get('_payload');
|
|
35
|
-
if (typeof payloadData === 'string') {
|
|
36
|
-
data = JSON.parse(payloadData);
|
|
37
|
-
}
|
|
38
|
-
} else {
|
|
39
|
-
// store temp file on disk
|
|
40
|
-
const { error, fields, files } = await nextFileUpload({
|
|
41
|
-
options: config.upload,
|
|
42
|
-
request
|
|
43
|
-
});
|
|
44
|
-
if (error) {
|
|
45
|
-
throw new Error(error.message);
|
|
46
|
-
}
|
|
47
|
-
if (files?.file) file = files.file;
|
|
48
|
-
if (fields?._payload && typeof fields._payload === 'string') {
|
|
49
|
-
data = JSON.parse(fields._payload);
|
|
50
|
-
}
|
|
13
|
+
const bodyByteSize = parseInt(request.headers.get('Content-Length') || '0', 10);
|
|
14
|
+
const upperByteLimit = typeof config.upload?.limits?.fieldSize === 'number' ? config.upload.limits.fields : undefined;
|
|
15
|
+
if (bodyByteSize <= upperByteLimit || upperByteLimit === undefined) {
|
|
16
|
+
try {
|
|
17
|
+
data = await request.json();
|
|
18
|
+
} catch (error) {
|
|
19
|
+
data = {};
|
|
51
20
|
}
|
|
52
21
|
} else {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
22
|
+
throw new Error('Request body size exceeds the limit');
|
|
23
|
+
}
|
|
24
|
+
} else {
|
|
25
|
+
if (request.headers.has('Content-Length') && request.headers.get('Content-Length') !== '0') {
|
|
26
|
+
const { error, fields, files } = await nextFileUpload({
|
|
27
|
+
options: config.upload,
|
|
28
|
+
request
|
|
29
|
+
});
|
|
30
|
+
if (error) {
|
|
31
|
+
throw new Error(error.message);
|
|
32
|
+
}
|
|
33
|
+
if (collection?.config?.upload && files?.file) {
|
|
34
|
+
file = files.file;
|
|
35
|
+
}
|
|
36
|
+
if (fields?._payload && typeof fields._payload === 'string') {
|
|
37
|
+
data = JSON.parse(fields._payload);
|
|
58
38
|
}
|
|
59
39
|
}
|
|
60
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/getDataAndFile.ts"],"sourcesContent":["import type { Collection, CustomPayloadRequest, SanitizedConfig } from 'payload/types'\n\nimport { nextFileUpload } from '../next-fileupload/index.js'\n\ntype GetDataAndFile = (args: {\n collection: Collection\n config: SanitizedConfig\n request: Request\n}) => Promise<{\n data: Record<string, any>\n file: CustomPayloadRequest['file']\n}>\nexport const getDataAndFile: GetDataAndFile = async ({
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/getDataAndFile.ts"],"sourcesContent":["import type { Collection, CustomPayloadRequest, SanitizedConfig } from 'payload/types'\n\nimport type { NextFileUploadOptions } from '../next-fileupload/index.js'\n\nimport { nextFileUpload } from '../next-fileupload/index.js'\n\ntype GetDataAndFile = (args: {\n collection: Collection\n config: SanitizedConfig\n request: Request\n}) => Promise<{\n data: Record<string, any>\n file: CustomPayloadRequest['file']\n}>\nexport const getDataAndFile: GetDataAndFile = async ({\n collection,\n config,\n request: incomingRequest,\n}) => {\n let data: Record<string, any> = undefined\n let file: CustomPayloadRequest['file'] = undefined\n\n if (\n ['PATCH', 'POST', 'PUT'].includes(incomingRequest.method.toUpperCase()) &&\n incomingRequest.body\n ) {\n const request = new Request(incomingRequest)\n const [contentType] = (request.headers.get('Content-Type') || '').split(';')\n\n if (contentType === 'application/json') {\n const bodyByteSize = parseInt(request.headers.get('Content-Length') || '0', 10)\n const upperByteLimit =\n typeof config.upload?.limits?.fieldSize === 'number'\n ? config.upload.limits.fields\n : undefined\n if (bodyByteSize <= upperByteLimit || upperByteLimit === undefined) {\n try {\n data = await request.json()\n } catch (error) {\n data = {}\n }\n } else {\n throw new Error('Request body size exceeds the limit')\n }\n } else {\n if (request.headers.has('Content-Length') && request.headers.get('Content-Length') !== '0') {\n const { error, fields, files } = await nextFileUpload({\n options: config.upload as NextFileUploadOptions,\n request,\n })\n\n if (error) {\n throw new Error(error.message)\n }\n\n if (collection?.config?.upload && files?.file) {\n file = files.file\n }\n\n if (fields?._payload && typeof fields._payload === 'string') {\n data = JSON.parse(fields._payload)\n }\n }\n }\n }\n\n return {\n data,\n file,\n }\n}\n"],"names":["nextFileUpload","getDataAndFile","collection","config","request","incomingRequest","data","undefined","file","includes","method","toUpperCase","body","Request","contentType","headers","get","split","bodyByteSize","parseInt","upperByteLimit","upload","limits","fieldSize","fields","json","error","Error","has","files","options","message","_payload","JSON","parse"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,cAAc,QAAQ,8BAA6B;AAU5D,OAAO,MAAMC,iBAAiC,OAAO,EACnDC,UAAU,EACVC,MAAM,EACNC,SAASC,eAAe,EACzB;IACC,IAAIC,OAA4BC;IAChC,IAAIC,OAAqCD;IAEzC,IACE;QAAC;QAAS;QAAQ;KAAM,CAACE,QAAQ,CAACJ,gBAAgBK,MAAM,CAACC,WAAW,OACpEN,gBAAgBO,IAAI,EACpB;QACA,MAAMR,UAAU,IAAIS,QAAQR;QAC5B,MAAM,CAACS,YAAY,GAAG,AAACV,CAAAA,QAAQW,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAC,EAAGC,KAAK,CAAC;QAExE,IAAIH,gBAAgB,oBAAoB;YACtC,MAAMI,eAAeC,SAASf,QAAQW,OAAO,CAACC,GAAG,CAAC,qBAAqB,KAAK;YAC5E,MAAMI,iBACJ,OAAOjB,OAAOkB,MAAM,EAAEC,QAAQC,cAAc,WACxCpB,OAAOkB,MAAM,CAACC,MAAM,CAACE,MAAM,GAC3BjB;YACN,IAAIW,gBAAgBE,kBAAkBA,mBAAmBb,WAAW;gBAClE,IAAI;oBACFD,OAAO,MAAMF,QAAQqB,IAAI;gBAC3B,EAAE,OAAOC,OAAO;oBACdpB,OAAO,CAAC;gBACV;YACF,OAAO;gBACL,MAAM,IAAIqB,MAAM;YAClB;QACF,OAAO;YACL,IAAIvB,QAAQW,OAAO,CAACa,GAAG,CAAC,qBAAqBxB,QAAQW,OAAO,CAACC,GAAG,CAAC,sBAAsB,KAAK;gBAC1F,MAAM,EAAEU,KAAK,EAAEF,MAAM,EAAEK,KAAK,EAAE,GAAG,MAAM7B,eAAe;oBACpD8B,SAAS3B,OAAOkB,MAAM;oBACtBjB;gBACF;gBAEA,IAAIsB,OAAO;oBACT,MAAM,IAAIC,MAAMD,MAAMK,OAAO;gBAC/B;gBAEA,IAAI7B,YAAYC,QAAQkB,UAAUQ,OAAOrB,MAAM;oBAC7CA,OAAOqB,MAAMrB,IAAI;gBACnB;gBAEA,IAAIgB,QAAQQ,YAAY,OAAOR,OAAOQ,QAAQ,KAAK,UAAU;oBAC3D1B,OAAO2B,KAAKC,KAAK,CAACV,OAAOQ,QAAQ;gBACnC;YACF;QACF;IACF;IAEA,OAAO;QACL1B;QACAE;IACF;AACF,EAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PayloadRequest } from 'payload/types';
|
|
2
|
+
type CorsArgs = {
|
|
3
|
+
headers: Headers;
|
|
4
|
+
req: Partial<PayloadRequest>;
|
|
5
|
+
};
|
|
6
|
+
export declare const headersWithCors: ({ headers, req }: CorsArgs) => Headers;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=headersWithCors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headersWithCors.d.ts","sourceRoot":"","sources":["../../src/utilities/headersWithCors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAC7B,CAAA;AACD,eAAO,MAAM,eAAe,qBAAsB,QAAQ,KAAG,OAoB5D,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const headersWithCors = ({ headers, req })=>{
|
|
2
|
+
const cors = req?.payload.config.cors;
|
|
3
|
+
const requestOrigin = req?.headers.get('Origin');
|
|
4
|
+
if (cors) {
|
|
5
|
+
headers.set('Access-Control-Allow-Methods', 'PUT, PATCH, POST, GET, DELETE, OPTIONS');
|
|
6
|
+
headers.set('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization, Content-Encoding, x-apollo-tracing');
|
|
7
|
+
if (cors === '*') {
|
|
8
|
+
headers.set('Access-Control-Allow-Origin', '*');
|
|
9
|
+
} else if (Array.isArray(cors) && cors.indexOf(requestOrigin) > -1) {
|
|
10
|
+
headers.set('Access-Control-Allow-Credentials', 'true');
|
|
11
|
+
headers.set('Access-Control-Allow-Origin', requestOrigin);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return headers;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=headersWithCors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/headersWithCors.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload/types'\n\ntype CorsArgs = {\n headers: Headers\n req: Partial<PayloadRequest>\n}\nexport const headersWithCors = ({ headers, req }: CorsArgs): Headers => {\n const cors = req?.payload.config.cors\n const requestOrigin = req?.headers.get('Origin')\n\n if (cors) {\n headers.set('Access-Control-Allow-Methods', 'PUT, PATCH, POST, GET, DELETE, OPTIONS')\n headers.set(\n 'Access-Control-Allow-Headers',\n 'Origin, X-Requested-With, Content-Type, Accept, Authorization, Content-Encoding, x-apollo-tracing',\n )\n\n if (cors === '*') {\n headers.set('Access-Control-Allow-Origin', '*')\n } else if (Array.isArray(cors) && cors.indexOf(requestOrigin) > -1) {\n headers.set('Access-Control-Allow-Credentials', 'true')\n headers.set('Access-Control-Allow-Origin', requestOrigin)\n }\n }\n\n return headers\n}\n"],"names":["headersWithCors","headers","req","cors","payload","config","requestOrigin","get","set","Array","isArray","indexOf"],"rangeMappings":";;;;;;;;;;;;;;","mappings":"AAMA,OAAO,MAAMA,kBAAkB,CAAC,EAAEC,OAAO,EAAEC,GAAG,EAAY;IACxD,MAAMC,OAAOD,KAAKE,QAAQC,OAAOF;IACjC,MAAMG,gBAAgBJ,KAAKD,QAAQM,IAAI;IAEvC,IAAIJ,MAAM;QACRF,QAAQO,GAAG,CAAC,gCAAgC;QAC5CP,QAAQO,GAAG,CACT,gCACA;QAGF,IAAIL,SAAS,KAAK;YAChBF,QAAQO,GAAG,CAAC,+BAA+B;QAC7C,OAAO,IAAIC,MAAMC,OAAO,CAACP,SAASA,KAAKQ,OAAO,CAACL,iBAAiB,CAAC,GAAG;YAClEL,QAAQO,GAAG,CAAC,oCAAoC;YAChDP,QAAQO,GAAG,CAAC,+BAA+BF;QAC7C;IACF;IAEA,OAAOL;AACT,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;
|
|
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;AAID,eAAO,MAAM,QAAQ,iFAKlB,IAAI,KAAG,QAAQ,cAAc,CAyG/B,CAAA"}
|
|
@@ -7,6 +7,14 @@ import { createLocalReq, isEntityHidden } from 'payload/utilities';
|
|
|
7
7
|
import qs from 'qs';
|
|
8
8
|
import { getPayloadHMR } from '../utilities/getPayloadHMR.js';
|
|
9
9
|
import { getRequestLanguage } from './getRequestLanguage.js';
|
|
10
|
+
const authRoutes = [
|
|
11
|
+
'/login',
|
|
12
|
+
'/logout',
|
|
13
|
+
'/create-first-user',
|
|
14
|
+
'/forgot',
|
|
15
|
+
'/reset',
|
|
16
|
+
'/verify'
|
|
17
|
+
];
|
|
10
18
|
export const initPage = async ({ config: configPromise, redirectUnauthenticatedUser = false, route, searchParams })=>{
|
|
11
19
|
const headers = getHeaders();
|
|
12
20
|
const localeParam = searchParams?.locale;
|
|
@@ -58,16 +66,21 @@ export const initPage = async ({ config: configPromise, redirectUnauthenticatedU
|
|
|
58
66
|
user
|
|
59
67
|
}) ? slug : null).filter(Boolean)
|
|
60
68
|
};
|
|
61
|
-
const
|
|
69
|
+
const { routes: { admin: adminRoute } } = payload.config;
|
|
70
|
+
const routeSegments = route.replace(adminRoute, '').split('/').filter(Boolean);
|
|
62
71
|
const [entityType, entitySlug, createOrID] = routeSegments;
|
|
63
72
|
const collectionSlug = entityType === 'collections' ? entitySlug : undefined;
|
|
64
73
|
const globalSlug = entityType === 'globals' ? entitySlug : undefined;
|
|
65
74
|
const docID = collectionSlug && createOrID !== 'create' ? createOrID : undefined;
|
|
66
|
-
|
|
75
|
+
const isAuthRoute = authRoutes.some((r)=>r === route.replace(adminRoute, ''));
|
|
76
|
+
if (redirectUnauthenticatedUser && !user && !isAuthRoute) {
|
|
67
77
|
if (searchParams && 'redirect' in searchParams) delete searchParams.redirect;
|
|
68
78
|
const stringifiedSearchParams = Object.keys(searchParams ?? {}).length ? `?${qs.stringify(searchParams)}` : '';
|
|
69
79
|
redirect(`${routes.admin}/login?redirect=${route + stringifiedSearchParams}`);
|
|
70
80
|
}
|
|
81
|
+
if (!permissions.canAccessAdmin && !isAuthRoute) {
|
|
82
|
+
notFound();
|
|
83
|
+
}
|
|
71
84
|
let collectionConfig;
|
|
72
85
|
let globalConfig;
|
|
73
86
|
if (collectionSlug) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/initPage.ts"],"sourcesContent":["import type {\n InitPageResult,\n PayloadRequest,\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\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 PayloadRequest,\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 routeSegments = route.replace(
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/initPage.ts"],"sourcesContent":["import type {\n InitPageResult,\n PayloadRequest,\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 = ['/login', '/logout', '/create-first-user', '/forgot', '/reset', '/verify']\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 PayloadRequest,\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":"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"}
|
|
@@ -16,7 +16,7 @@ import { useSearchParams } from 'next/navigation.js';
|
|
|
16
16
|
import qs from 'qs';
|
|
17
17
|
import * as React from 'react';
|
|
18
18
|
import { toast } from 'react-toastify';
|
|
19
|
-
import {
|
|
19
|
+
import { SetDocumentStepNav } from '../Edit/Default/SetDocumentStepNav/index.js';
|
|
20
20
|
import { RenderJSON } from './RenderJSON/index.js';
|
|
21
21
|
const baseClass = 'query-inspector';
|
|
22
22
|
export const APIViewClient = ()=>{
|
|
@@ -93,7 +93,7 @@ export const APIViewClient = ()=>{
|
|
|
93
93
|
fullscreen && `${baseClass}--fullscreen`
|
|
94
94
|
].filter(Boolean).join(' '),
|
|
95
95
|
right: false
|
|
96
|
-
}, /*#__PURE__*/ React.createElement(
|
|
96
|
+
}, /*#__PURE__*/ React.createElement(SetDocumentStepNav, {
|
|
97
97
|
collectionSlug: collectionSlug,
|
|
98
98
|
globalLabel: globalConfig?.label,
|
|
99
99
|
globalSlug: globalSlug,
|