@payloadcms/next 3.0.0-beta.11 → 3.0.0-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/dist/cjs/withPayload.cjs +2 -1
  2. package/dist/cjs/withPayload.cjs.map +1 -1
  3. package/dist/exports/routes.d.ts +1 -1
  4. package/dist/exports/routes.d.ts.map +1 -1
  5. package/dist/exports/routes.js +1 -1
  6. package/dist/exports/routes.js.map +1 -1
  7. package/dist/exports/utilities.d.ts +3 -1
  8. package/dist/exports/utilities.d.ts.map +1 -1
  9. package/dist/exports/utilities.js +3 -1
  10. package/dist/exports/utilities.js.map +1 -1
  11. package/dist/next-fileupload/handlers.js.map +1 -1
  12. package/dist/next-fileupload/isEligibleRequest.js +1 -1
  13. package/dist/next-fileupload/isEligibleRequest.js.map +1 -1
  14. package/dist/next-fileupload/processMultipart.d.ts.map +1 -1
  15. package/dist/next-fileupload/processMultipart.js +29 -6
  16. package/dist/next-fileupload/processMultipart.js.map +1 -1
  17. package/dist/next-fileupload/utilities.d.ts.map +1 -1
  18. package/dist/next-fileupload/utilities.js +4 -4
  19. package/dist/next-fileupload/utilities.js.map +1 -1
  20. package/dist/routes/graphql/handler.d.ts.map +1 -1
  21. package/dist/routes/graphql/handler.js +9 -4
  22. package/dist/routes/graphql/handler.js.map +1 -1
  23. package/dist/routes/rest/auth/access.d.ts.map +1 -1
  24. package/dist/routes/rest/auth/access.js +5 -0
  25. package/dist/routes/rest/auth/access.js.map +1 -1
  26. package/dist/routes/rest/auth/forgotPassword.d.ts.map +1 -1
  27. package/dist/routes/rest/auth/forgotPassword.js +7 -2
  28. package/dist/routes/rest/auth/forgotPassword.js.map +1 -1
  29. package/dist/routes/rest/auth/init.d.ts.map +1 -1
  30. package/dist/routes/rest/auth/init.js +6 -0
  31. package/dist/routes/rest/auth/init.js.map +1 -1
  32. package/dist/routes/rest/auth/login.d.ts.map +1 -1
  33. package/dist/routes/rest/auth/login.js +8 -5
  34. package/dist/routes/rest/auth/login.js.map +1 -1
  35. package/dist/routes/rest/auth/logout.d.ts.map +1 -1
  36. package/dist/routes/rest/auth/logout.js +11 -6
  37. package/dist/routes/rest/auth/logout.js.map +1 -1
  38. package/dist/routes/rest/auth/me.d.ts.map +1 -1
  39. package/dist/routes/rest/auth/me.js +5 -0
  40. package/dist/routes/rest/auth/me.js.map +1 -1
  41. package/dist/routes/rest/auth/refresh.d.ts.map +1 -1
  42. package/dist/routes/rest/auth/refresh.js +11 -7
  43. package/dist/routes/rest/auth/refresh.js.map +1 -1
  44. package/dist/routes/rest/auth/registerFirstUser.d.ts.map +1 -1
  45. package/dist/routes/rest/auth/registerFirstUser.js +17 -5
  46. package/dist/routes/rest/auth/registerFirstUser.js.map +1 -1
  47. package/dist/routes/rest/auth/resetPassword.d.ts.map +1 -1
  48. package/dist/routes/rest/auth/resetPassword.js +8 -5
  49. package/dist/routes/rest/auth/resetPassword.js.map +1 -1
  50. package/dist/routes/rest/auth/unlock.d.ts.map +1 -1
  51. package/dist/routes/rest/auth/unlock.js +7 -2
  52. package/dist/routes/rest/auth/unlock.js.map +1 -1
  53. package/dist/routes/rest/auth/verifyEmail.d.ts.map +1 -1
  54. package/dist/routes/rest/auth/verifyEmail.js +7 -2
  55. package/dist/routes/rest/auth/verifyEmail.js.map +1 -1
  56. package/dist/routes/rest/buildFormState.d.ts.map +1 -1
  57. package/dist/routes/rest/buildFormState.js +11 -0
  58. package/dist/routes/rest/buildFormState.js.map +1 -1
  59. package/dist/routes/rest/collections/count.d.ts +3 -0
  60. package/dist/routes/rest/collections/count.d.ts.map +1 -0
  61. package/dist/routes/rest/collections/count.js +15 -0
  62. package/dist/routes/rest/collections/count.js.map +1 -0
  63. package/dist/routes/rest/collections/create.d.ts.map +1 -1
  64. package/dist/routes/rest/collections/create.js +5 -0
  65. package/dist/routes/rest/collections/create.js.map +1 -1
  66. package/dist/routes/rest/collections/delete.d.ts.map +1 -1
  67. package/dist/routes/rest/collections/delete.js +7 -0
  68. package/dist/routes/rest/collections/delete.js.map +1 -1
  69. package/dist/routes/rest/collections/deleteByID.d.ts.map +1 -1
  70. package/dist/routes/rest/collections/deleteByID.js +7 -0
  71. package/dist/routes/rest/collections/deleteByID.js.map +1 -1
  72. package/dist/routes/rest/collections/docAccess.d.ts.map +1 -1
  73. package/dist/routes/rest/collections/docAccess.js +5 -0
  74. package/dist/routes/rest/collections/docAccess.js.map +1 -1
  75. package/dist/routes/rest/collections/duplicate.d.ts.map +1 -1
  76. package/dist/routes/rest/collections/duplicate.js +5 -0
  77. package/dist/routes/rest/collections/duplicate.js.map +1 -1
  78. package/dist/routes/rest/collections/find.d.ts.map +1 -1
  79. package/dist/routes/rest/collections/find.js +5 -0
  80. package/dist/routes/rest/collections/find.js.map +1 -1
  81. package/dist/routes/rest/collections/findByID.d.ts.map +1 -1
  82. package/dist/routes/rest/collections/findByID.js +5 -0
  83. package/dist/routes/rest/collections/findByID.js.map +1 -1
  84. package/dist/routes/rest/collections/findVersionByID.d.ts.map +1 -1
  85. package/dist/routes/rest/collections/findVersionByID.js +5 -0
  86. package/dist/routes/rest/collections/findVersionByID.js.map +1 -1
  87. package/dist/routes/rest/collections/findVersions.d.ts.map +1 -1
  88. package/dist/routes/rest/collections/findVersions.js +5 -0
  89. package/dist/routes/rest/collections/findVersions.js.map +1 -1
  90. package/dist/routes/rest/collections/preview.d.ts.map +1 -1
  91. package/dist/routes/rest/collections/preview.js +7 -1
  92. package/dist/routes/rest/collections/preview.js.map +1 -1
  93. package/dist/routes/rest/collections/restoreVersion.d.ts.map +1 -1
  94. package/dist/routes/rest/collections/restoreVersion.js +5 -0
  95. package/dist/routes/rest/collections/restoreVersion.js.map +1 -1
  96. package/dist/routes/rest/collections/update.d.ts.map +1 -1
  97. package/dist/routes/rest/collections/update.js +7 -0
  98. package/dist/routes/rest/collections/update.js.map +1 -1
  99. package/dist/routes/rest/collections/updateByID.d.ts.map +1 -1
  100. package/dist/routes/rest/collections/updateByID.js +5 -0
  101. package/dist/routes/rest/collections/updateByID.js.map +1 -1
  102. package/dist/routes/rest/files/getFile.d.ts.map +1 -1
  103. package/dist/routes/rest/files/getFile.js +15 -8
  104. package/dist/routes/rest/files/getFile.js.map +1 -1
  105. package/dist/routes/rest/files/getFileTypeFallback.d.ts +7 -0
  106. package/dist/routes/rest/files/getFileTypeFallback.d.ts.map +1 -0
  107. package/dist/routes/rest/files/getFileTypeFallback.js +21 -0
  108. package/dist/routes/rest/files/getFileTypeFallback.js.map +1 -0
  109. package/dist/routes/rest/globals/docAccess.d.ts.map +1 -1
  110. package/dist/routes/rest/globals/docAccess.js +5 -0
  111. package/dist/routes/rest/globals/docAccess.js.map +1 -1
  112. package/dist/routes/rest/globals/findOne.d.ts.map +1 -1
  113. package/dist/routes/rest/globals/findOne.js +5 -0
  114. package/dist/routes/rest/globals/findOne.js.map +1 -1
  115. package/dist/routes/rest/globals/findVersionByID.d.ts.map +1 -1
  116. package/dist/routes/rest/globals/findVersionByID.js +5 -0
  117. package/dist/routes/rest/globals/findVersionByID.js.map +1 -1
  118. package/dist/routes/rest/globals/findVersions.d.ts.map +1 -1
  119. package/dist/routes/rest/globals/findVersions.js +5 -0
  120. package/dist/routes/rest/globals/findVersions.js.map +1 -1
  121. package/dist/routes/rest/globals/preview.d.ts.map +1 -1
  122. package/dist/routes/rest/globals/preview.js +7 -1
  123. package/dist/routes/rest/globals/preview.js.map +1 -1
  124. package/dist/routes/rest/globals/restoreVersion.d.ts.map +1 -1
  125. package/dist/routes/rest/globals/restoreVersion.js +5 -0
  126. package/dist/routes/rest/globals/restoreVersion.js.map +1 -1
  127. package/dist/routes/rest/globals/update.d.ts.map +1 -1
  128. package/dist/routes/rest/globals/update.js +5 -0
  129. package/dist/routes/rest/globals/update.js.map +1 -1
  130. package/dist/routes/rest/index.d.ts +1 -0
  131. package/dist/routes/rest/index.d.ts.map +1 -1
  132. package/dist/routes/rest/index.js +55 -9
  133. package/dist/routes/rest/index.js.map +1 -1
  134. package/dist/routes/rest/routeError.d.ts +5 -4
  135. package/dist/routes/rest/routeError.d.ts.map +1 -1
  136. package/dist/routes/rest/routeError.js +25 -11
  137. package/dist/routes/rest/routeError.js.map +1 -1
  138. package/dist/utilities/getDataAndFile.d.ts.map +1 -1
  139. package/dist/utilities/getDataAndFile.js +26 -46
  140. package/dist/utilities/getDataAndFile.js.map +1 -1
  141. package/dist/utilities/getPayloadHMR.d.ts +2 -1
  142. package/dist/utilities/getPayloadHMR.d.ts.map +1 -1
  143. package/dist/utilities/getPayloadHMR.js +22 -19
  144. package/dist/utilities/getPayloadHMR.js.map +1 -1
  145. package/dist/utilities/headersWithCors.d.ts +8 -0
  146. package/dist/utilities/headersWithCors.d.ts.map +1 -0
  147. package/dist/utilities/headersWithCors.js +17 -0
  148. package/dist/utilities/headersWithCors.js.map +1 -0
  149. package/dist/utilities/initPage.d.ts.map +1 -1
  150. package/dist/utilities/initPage.js +15 -2
  151. package/dist/utilities/initPage.js.map +1 -1
  152. package/dist/views/CreateFirstUser/index.client.js +2 -2
  153. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  154. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  155. package/dist/views/CreateFirstUser/index.js +17 -0
  156. package/dist/views/CreateFirstUser/index.js.map +1 -1
  157. package/dist/views/Edit/Default/index.d.ts.map +1 -1
  158. package/dist/views/Edit/Default/index.js +3 -2
  159. package/dist/views/Edit/Default/index.js.map +1 -1
  160. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts +3 -0
  161. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -0
  162. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +55 -0
  163. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -0
  164. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  165. package/dist/views/ForgotPassword/index.js +3 -39
  166. package/dist/views/ForgotPassword/index.js.map +1 -1
  167. package/dist/views/LivePreview/Toolbar/Controls/index.d.ts.map +1 -1
  168. package/dist/views/LivePreview/Toolbar/Controls/index.js +6 -4
  169. package/dist/views/LivePreview/Toolbar/Controls/index.js.map +1 -1
  170. package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
  171. package/dist/views/Login/LoginForm/index.js +26 -2
  172. package/dist/views/Login/LoginForm/index.js.map +1 -1
  173. package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
  174. package/dist/views/Logout/LogoutClient.js +1 -2
  175. package/dist/views/Logout/LogoutClient.js.map +1 -1
  176. package/dist/withPayload.d.ts.map +1 -1
  177. package/dist/withPayload.js +2 -1
  178. package/dist/withPayload.js.map +1 -1
  179. package/package.json +11 -9
  180. 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":"AAGA,OAAOA,gBAAgB,cAAa;AACpC,SAASC,KAAK,QAAQ,iBAAgB;AAStC,SAASC,oBAAoB,QAAQ,0CAAyC;AAC9E,SAASC,MAAM,QAAQ,mBAAkB;AACzC,SAASC,cAAc,QAAQ,2BAA0B;AACzD,SAASC,IAAI,QAAQ,iBAAgB;AACrC,SAASC,KAAK,QAAQ,kBAAiB;AACvC,SAASC,MAAM,QAAQ,mBAAkB;AACzC,SAASC,EAAE,QAAQ,eAAc;AACjC,SAASC,OAAO,QAAQ,oBAAmB;AAC3C,SAASC,iBAAiB,QAAQ,8BAA6B;AAC/D,SAASC,aAAa,QAAQ,0BAAyB;AACvD,SAASC,MAAM,QAAQ,mBAAkB;AACzC,SAASC,WAAW,QAAQ,wBAAuB;AACnD,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,oBAAoB,QAAQ,sBAAqB;AAC1D,SAASC,MAAM,QAAQ,0BAAyB;AAChD,SAASC,SAAS,QAAQ,0BAAyB;AACnD,SAASC,UAAU,QAAQ,8BAA6B;AACxD,SAASC,SAAS,QAAQ,6BAA4B;AACtD,SAASC,SAAS,QAAQ,6BAA4B;AACtD,SAASC,IAAI,QAAQ,wBAAuB;AAC5C,SAASC,QAAQ,QAAQ,4BAA2B;AACpD,SAASC,eAAe,QAAQ,mCAAkC;AAClE,SAASC,YAAY,QAAQ,gCAA+B;AAC5D,SAASC,WAAWC,iBAAiB,QAAQ,2BAA0B;AACvE,SAASC,cAAc,QAAQ,kCAAiC;AAChE,SAASC,MAAM,QAAQ,0BAAyB;AAChD,SAASC,UAAU,QAAQ,8BAA6B;AACxD,SAASC,OAAO,QAAQ,qBAAoB;AAC5C,SAASX,aAAaY,eAAe,QAAQ,yBAAwB;AACrE,SAASC,OAAO,QAAQ,uBAAsB;AAC9C,SAAST,mBAAmBU,qBAAqB,QAAQ,+BAA8B;AACvF,SAAST,gBAAgBU,kBAAkB,QAAQ,4BAA2B;AAC9E,SAAST,WAAWU,aAAa,QAAQ,uBAAsB;AAC/D,SAASR,kBAAkBS,oBAAoB,QAAQ,8BAA6B;AACpF,SAASR,UAAUS,YAAY,QAAQ,sBAAqB;AAC5D,SAASC,UAAU,QAAQ,kBAAiB;AAE5C,MAAMC,YAAY;IAChBC,YAAY;QACVC,QAAQ;YACNC,QAAQzB;YACRC;QACF;QACAyB,KAAK;YACH,oBAAoBxB;YACpB,sBAAsBI;YACtBF;YACAC;YACAQ;YACAzB;YACAG;YACAiB,SAASC;YACTkB,UAAUpB;QACZ;QACAqB,OAAO;YACLjB;YACAC;QACF;QACAiB,MAAM;YACJ3C,QAAQgB;YACRH;YACA,oBAAoBG;YACpB,oBAAoBN;YACpB,sBAAsBc;YACtBP;YACA,kBAAkBV;YAClB,mBAAmBN;YACnBE;YACAC;YACA,iBAAiBE;YACjB,kBAAkBE;YAClBC;QACF;IACF;IACAmC,QAAQ;QACNJ,KAAK;YACH,cAAcZ;YACd,gBAAgBG;YAChB,sBAAsBD;YACtBD;YACAP,SAASU;QACX;QACAW,MAAM;YACJ,cAAcf;YACd,sBAAsBK;YACtBR,QAAQS;QACV;IACF;IACAW,MAAM;QACJL,KAAK;YACHxC;QACF;QACA2C,MAAM;YACJ,cAAchC;QAChB;IACF;AACF;AAEA,MAAMmC,wBAAwB,CAAC,EAC7BV,SAAS,EACTW,UAAU,EACVC,cAAc,EAKf;IACC,IAAIZ,aAAaA,UAAUa,MAAM,GAAG,GAAG;QACrC,IAAIC,gBAAgB,CAAC;QACrB,MAAM,EAAEC,QAAQ,EAAE,GAAGH;QACrB,MAAMI,aACJJ,eAAeK,OAAO,CAACC,MAAM,CAACC,MAAM,CAACC,GAAG,GAAIT,CAAAA,aAAa,CAAC,CAAC,EAAEA,WAAW,CAAC,GAAG,EAAC;QAE/E,MAAMU,iBAAiBrB,UAAUlB,IAAI,CAAC,CAACwC;YACrC,IAAIA,SAASC,MAAM,KAAKX,eAAeW,MAAM,CAACC,WAAW,IAAI;gBAC3D,MAAMC,cAAc/D,MAAM,CAAC,EAAEsD,WAAW,EAAEM,SAASI,IAAI,CAAC,CAAC,EAAE;oBACzDC,QAAQC;gBACV;gBACA,MAAMC,aAAaJ,YAAYV;gBAC/B,IAAIc,YAAY;oBACdf,gBAAgBe,WAAWC,MAAM;oBACjC,OAAO;gBACT;YACF;QACF;QAEA,IAAIT,gBAAgB;YAClBT,eAAemB,WAAW,GAAGjB;YAC7B,OAAOO,eAAeW,OAAO,CAACpB;QAChC;IACF;IAEA,OAAO;AACT;AAEA,MAAMqB,wBAAwB,CAACC,OAC7BC,SAASC,IAAI,CACX;QACEC,SAAS,CAAC,kBAAkB,EAAEH,KAAKI,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,GACA;QAAEC,QAAQ9E,WAAW+E,SAAS;IAAC;AAGnC,OAAO,MAAMpC,MACX,CAACc,SACD,OAAOuB,SAAkB,EAAEX,QAAQ,EAAEI,IAAI,EAAE,EAAkC;QAC3E,MAAM,CAACQ,OAAOC,OAAOC,OAAOC,MAAM,GAAGX;QACrC,IAAIY;QACJ,IAAIC;QACJ,IAAI9C;QAEJ,IAAI;YACF6C,MAAM,MAAMnF,qBAAqB;gBAC/BuD;gBACAY,QAAQ;oBACN7B,YAAYyC;gBACd;gBACAD;YACF;YAEA,MAAMO,mBAAmBxE,qBAAqB;gBAC5CwB,WAAW8C,IAAI7B,OAAO,CAACC,MAAM,CAAClB,SAAS;gBACvCyC;YACF;YAEA,IAAIO,kBAAkB,OAAOA;YAE7B/C,aAAa6C,IAAI7B,OAAO,CAACgC,WAAW,EAAE,CAACP,MAAM;YAE7C,IAAIzC,YAAY;gBACd,MAAM+C,mBAAmBxE,qBAAqB;oBAC5CwB,WAAWC,WAAWiB,MAAM,CAAClB,SAAS;oBACtCyC;gBACF;gBACA,IAAIO,kBAAkB,OAAOA;gBAE7B,MAAME,yBAAyB,MAAMxC,sBAAsB;oBACzDV,WAAWC,WAAWiB,MAAM,CAAClB,SAAS;oBACtCW,YAAY+B;oBACZ9B,gBAAgBkC;gBAClB;gBACA,IAAII,wBAAwB,OAAOA;gBAEnC,OAAQhB,KAAKrB,MAAM;oBACjB,KAAK;wBACH,eAAe;wBACfkC,MAAM,MAAM/C,UAAUC,UAAU,CAACG,GAAG,CAACtB,IAAI,CAAC;4BAAEmB;4BAAY6C;wBAAI;wBAC5D;oBACF,KAAK;wBACH,IAAIH,SAAS3C,UAAUC,UAAU,CAACG,GAAG,EAAE;4BACrC,oBAAoB;4BACpB,kBAAkB;4BAClB,wBAAwB;4BACxB2C,MAAM,MAAM,AAAC/C,UAAUC,UAAU,CAACG,GAAG,CAACuC,MAAM,CAA4B;gCACtE1C;gCACA6C;4BACF;wBACF,OAAO;4BACL,mBAAmB;4BACnBC,MAAM,MAAM/C,UAAUC,UAAU,CAACG,GAAG,CAACrB,QAAQ,CAAC;gCAAEoE,IAAIR;gCAAO1C;gCAAY6C;4BAAI;wBAC7E;wBACA;oBACF,KAAK;wBACH,IAAIH,UAAU,QAAQ;4BACpB,8BAA8B;4BAC9BI,MAAM,MAAM/C,UAAUC,UAAU,CAACG,GAAG,CAACb,OAAO,CAAC;gCAAEU;gCAAYmD,UAAUR;gCAAOE;4BAAI;wBAClF,OAAO,IAAIF,SAAS5C,UAAUC,UAAU,CAACG,GAAG,EAAE;4BAC5C,2BAA2B;4BAC3B2C,MAAM,MAAM,AAAC/C,UAAUC,UAAU,CAACG,GAAG,CAACwC,MAAM,CAAkC;gCAC5EO,IAAIR;gCACJ1C;gCACA6C;4BACF;wBACF,OAAO,IAAI,CAAC,IAAI,EAAEH,MAAM,MAAM,CAAC,IAAI3C,UAAUC,UAAU,CAACG,GAAG,EAAE;4BAC3D,0BAA0B;4BAC1B,4BAA4B;4BAC5B2C,MAAM,MAAM,AACV/C,UAAUC,UAAU,CAACG,GAAG,CAAC,CAAC,IAAI,EAAEuC,MAAM,MAAM,CAAC,CAAC,CAC9C;gCAAEQ,IAAIP;gCAAO3C;gCAAY6C;4BAAI;wBACjC;wBACA;gBACJ;YACF,OAAO,IAAIJ,UAAU,WAAW;gBAC9B,MAAMW,eAAeP,IAAI7B,OAAO,CAACC,MAAM,CAACoC,OAAO,CAACxE,IAAI,CAAC,CAAC0B,SAAWA,OAAO0B,IAAI,KAAKS;gBAEjF,MAAMK,mBAAmBxE,qBAAqB;oBAC5CwB,WAAWqD,aAAarD,SAAS;oBACjCyC;gBACF;gBAEA,IAAIO,kBAAkB,OAAOA;gBAE7B,MAAME,yBAAyB,MAAMxC,sBAAsB;oBACzDV,WAAWqD,aAAarD,SAAS;oBACjCW,YAAY,CAAC,EAAE+B,MAAM,CAAC,EAAEC,MAAM,CAAC;oBAC/B/B,gBAAgBkC;gBAClB;gBAEA,IAAII,wBAAwB,OAAOA;gBAEnC,OAAQhB,KAAKrB,MAAM;oBACjB,KAAK;wBACH,iBAAiB;wBACjBkC,MAAM,MAAM/C,UAAUQ,MAAM,CAACJ,GAAG,CAACX,OAAO,CAAC;4BAAE4D;4BAAcP;wBAAI;wBAC7D;oBACF,KAAK;wBACH,IAAIF,SAAS5C,UAAUQ,MAAM,CAACJ,GAAG,EAAE;4BACjC,yBAAyB;4BACzB2C,MAAM,MAAM,AAAC/C,UAAUQ,MAAM,CAACJ,GAAG,CAACwC,MAAM,CAAwB;gCAC9DS;gCACAP;4BACF;wBACF,OAAO,IAAI,CAAC,IAAI,EAAEF,MAAM,CAAC,IAAI5C,UAAUQ,MAAM,CAACJ,GAAG,EAAE;4BACjD,wBAAwB;4BACxB,0BAA0B;4BAC1B,yBAAyB;4BACzB2C,MAAM,MAAM,AAAC/C,CAAAA,UAAUQ,MAAM,CAACJ,GAAG,EAAE,CAAC,CAAC,IAAI,EAAEwC,MAAM,CAAC,CAAC,AAAD,EAAyB;gCACzES;gCACAP;4BACF;wBACF;wBACA;oBACF,KAAK;wBACH,IAAI,CAAC,IAAI,EAAEF,MAAM,MAAM,CAAC,IAAI5C,UAAUQ,MAAM,CAACJ,GAAG,EAAE;4BAChD,8BAA8B;4BAC9B2C,MAAM,MAAM,AACV/C,CAAAA,UAAUQ,MAAM,CAACJ,GAAG,EAAE,CAAC,CAAC,IAAI,EAAEwC,MAAM,MAAM,CAAC,CAAC,AAAD,EAC3C;gCACAO,IAAIN;gCACJQ;gCACAP;4BACF;wBACF;wBACA;gBACJ;YACF,OAAO,IAAIZ,KAAKrB,MAAM,KAAK,KAAK6B,SAAS1C,UAAUS,IAAI,CAACL,GAAG,EAAE;gBAC3D2C,MAAM,MAAM/C,UAAUS,IAAI,CAACL,GAAG,CAACsC,MAAM,CAAC;oBAAEI;gBAAI;YAC9C;YAEA,IAAIC,eAAeZ,UAAU,OAAOY;YAEpC,cAAc;YACd,MAAMG,yBAAyB,MAAMxC,sBAAsB;gBACzDV,WAAW8C,IAAI7B,OAAO,CAACC,MAAM,CAAClB,SAAS;gBACvCY,gBAAgBkC;YAClB;YACA,IAAII,wBAAwB,OAAOA;YAEnC,OAAOjB,sBAAsBC;QAC/B,EAAE,OAAOqB,OAAO;YACd,OAAOxD,WAAW;gBAChBE;gBACAuD,KAAKD;gBACLT;YACF;QACF;IACF,EAAC;AAEH,OAAO,MAAMvC,OACX,CAACW,SACD,OAAOuB,SAAkB,EAAEX,QAAQ,EAAEI,IAAI,EAAE,EAAkC;QAC3E,MAAM,CAACQ,OAAOC,OAAOC,OAAOC,MAAM,GAAGX;QACrC,IAAIY;QACJ,IAAIC;QACJ,IAAI9C;QAEJ,IAAI;YACF6C,MAAM,MAAMnF,qBAAqB;gBAC/BuD;gBACAY,QAAQ;oBAAE7B,YAAYyC;gBAAM;gBAC5BD;YACF;YAEAxC,aAAa6C,IAAI7B,OAAO,CAACgC,WAAW,EAAE,CAACP,MAAM;YAE7C,MAAMM,mBAAmBxE,qBAAqB;gBAC5CwB,WAAW8C,IAAI7B,OAAO,CAACC,MAAM,CAAClB,SAAS;gBACvCyC;YACF;YAEA,IAAIO,kBAAkB,OAAOA;YAE7B,IAAI/C,YAAY;gBACd,MAAM+C,mBAAmBxE,qBAAqB;oBAC5CwB,WAAWC,WAAWiB,MAAM,CAAClB,SAAS;oBACtCyC;gBACF;gBACA,IAAIO,kBAAkB,OAAOA;gBAE7B,MAAME,yBAAyB,MAAMxC,sBAAsB;oBACzDV,WAAWC,WAAWiB,MAAM,CAAClB,SAAS;oBACtCW,YAAY+B;oBACZ9B,gBAAgBkC;gBAClB;gBAEA,IAAII,wBAAwB,OAAOA;gBAEnC,OAAQhB,KAAKrB,MAAM;oBACjB,KAAK;wBACH,eAAe;wBACfkC,MAAM,MAAM/C,UAAUC,UAAU,CAACM,IAAI,CAAC9B,MAAM,CAAC;4BAAEwB;4BAAY6C;wBAAI;wBAC/D;oBACF,KAAK;wBACH,IAAIH,SAAS3C,UAAUC,UAAU,CAACM,IAAI,EAAE;4BACtC,qBAAqB;4BACrB,sBAAsB;4BACtB,sBAAsB;4BACtB,sBAAsB;4BACtB,8BAA8B;4BAC9B,+BAA+B;4BAC/B,8BAA8B;4BAC9B,6BAA6B;4BAE7BwC,MAAM,MAAM,AAAC/C,CAAAA,UAAUC,UAAU,CAACM,IAAI,EAAE,CAACoC,MAAM,AAAD,EAA6B;gCACzE1C;gCACA6C;4BACF;wBACF;wBACA;oBACF,KAAK;wBACH,IAAI,CAAC,IAAI,EAAEH,MAAM,MAAM,CAAC,IAAI3C,UAAUC,UAAU,CAACM,IAAI,EAAE;4BACrD,0BAA0B;4BAC1B,4BAA4B;4BAC5B,8EAA8E;4BAC9EwC,MAAM,MAAM,AACV/C,UAAUC,UAAU,CAACM,IAAI,CAAC,CAAC,IAAI,EAAEoC,MAAM,MAAM,CAAC,CAAC,CAC/C;gCAAEQ,IAAIP;gCAAO3C;gCAAY6C;4BAAI;wBACjC,OAAO,IAAIF,UAAU,eAAe3C,WAAWiB,MAAM,CAACuC,gBAAgB,KAAK,MAAM;4BAC/E,6BAA6B;4BAC7BV,MAAM,MAAM/C,UAAUC,UAAU,CAACM,IAAI,CAAC1B,SAAS,CAAC;gCAAEsE,IAAIR;gCAAO1C;gCAAY6C;4BAAI;wBAC/E;wBACA;gBACJ;YACF,OAAO,IAAIJ,UAAU,aAAaC,OAAO;gBACvC,MAAMU,eAAeP,IAAI7B,OAAO,CAACC,MAAM,CAACoC,OAAO,CAACxE,IAAI,CAAC,CAAC0B,SAAWA,OAAO0B,IAAI,KAAKS;gBACjF,MAAMK,mBAAmBxE,qBAAqB;oBAC5CwB,WAAWqD,aAAarD,SAAS;oBACjCyC;gBACF;gBACA,IAAIO,kBAAkB,OAAOA;gBAE7B,MAAME,yBAAyB,MAAMxC,sBAAsB;oBACzDV,WAAWqD,aAAarD,SAAS;oBACjCW,YAAY,CAAC,EAAE+B,MAAM,CAAC,EAAEC,MAAM,CAAC;oBAC/B/B,gBAAgBkC;gBAClB;gBACA,IAAII,wBAAwB,OAAOA;gBAEnC,OAAQhB,KAAKrB,MAAM;oBACjB,KAAK;wBACH,iBAAiB;wBACjBkC,MAAM,MAAM/C,UAAUQ,MAAM,CAACD,IAAI,CAAClB,MAAM,CAAC;4BAAEgE;4BAAcP;wBAAI;wBAC7D;oBACF,KAAK;wBACH,IAAI,CAAC,IAAI,EAAEF,MAAM,CAAC,IAAI5C,UAAUQ,MAAM,CAACD,IAAI,EAAE;4BAC3C,wBAAwB;4BACxBwC,MAAM,MAAM,AAAC/C,CAAAA,UAAUQ,MAAM,CAACD,IAAI,EAAE,CAAC,CAAC,IAAI,EAAEqC,MAAM,CAAC,CAAC,AAAD,EAAyB;gCAC1ES;gCACAP;4BACF;wBACF;wBACA;oBACF,KAAK;wBACH,IAAI,CAAC,IAAI,EAAEF,MAAM,MAAM,CAAC,IAAI5C,UAAUQ,MAAM,CAACD,IAAI,EAAE;4BACjD,8BAA8B;4BAC9BwC,MAAM,MAAM,AACV/C,CAAAA,UAAUQ,MAAM,CAACD,IAAI,EAAE,CAAC,CAAC,IAAI,EAAEqC,MAAM,MAAM,CAAC,CAAC,AAAD,EAC5C;gCACAO,IAAIN;gCACJQ;gCACAP;4BACF;wBACF;wBACA;oBACF;wBACEC,MAAM,IAAIZ,SAAS,mBAAmB;4BAAEI,QAAQ;wBAAI;gBACxD;YACF,OAAO,IAAIL,KAAKrB,MAAM,KAAK,KAAK6B,SAAS1C,UAAUS,IAAI,CAACF,IAAI,EAAE;gBAC5DwC,MAAM,MAAM/C,UAAUS,IAAI,CAACF,IAAI,CAACmC,MAAM,CAAC;oBAAEI;gBAAI;YAC/C;YAEA,IAAIC,eAAeZ,UAAU,OAAOY;YAEpC,cAAc;YACd,MAAMG,yBAAyB,MAAMxC,sBAAsB;gBACzDV,WAAW8C,IAAI7B,OAAO,CAACC,MAAM,CAAClB,SAAS;gBACvCY,gBAAgBkC;YAClB;YACA,IAAII,wBAAwB,OAAOA;YAEnC,OAAOjB,sBAAsBC;QAC/B,EAAE,OAAOqB,OAAO;YACd,OAAOxD,WAAW;gBAChBE;gBACAuD,KAAKD;gBACLT;YACF;QACF;IACF,EAAC;AAEH,OAAO,MAAM5C,SACX,CAACgB,SACD,OAAOuB,SAAkB,EAAEX,QAAQ,EAAEI,IAAI,EAAE,EAAkC;QAC3E,MAAM,CAACQ,OAAOC,MAAM,GAAGT;QACvB,IAAIY;QACJ,IAAIC;QACJ,IAAI9C;QAEJ,IAAI;YACF6C,MAAM,MAAMnF,qBAAqB;gBAC/BuD;gBACAY,QAAQ;oBACN7B,YAAYyC;gBACd;gBACAD;YACF;YACAxC,aAAa6C,IAAI7B,OAAO,CAACgC,WAAW,EAAE,CAACP,MAAM;YAE7C,MAAMM,mBAAmBxE,qBAAqB;gBAC5CwB,WAAW8C,IAAI7B,OAAO,CAACC,MAAM,CAAClB,SAAS;gBACvCyC;YACF;YACA,IAAIO,kBAAkB,OAAOA;YAE7B,IAAI/C,YAAY;gBACd,MAAM+C,mBAAmBxE,qBAAqB;oBAC5CwB,WAAWC,WAAWiB,MAAM,CAAClB,SAAS;oBACtCyC;gBACF;gBACA,IAAIO,kBAAkB,OAAOA;gBAE7B,MAAME,yBAAyB,MAAMxC,sBAAsB;oBACzDV,WAAWC,WAAWiB,MAAM,CAAClB,SAAS;oBACtCW,YAAY+B;oBACZ9B,gBAAgBkC;gBAClB;gBACA,IAAII,wBAAwB,OAAOA;gBAEnC,OAAQhB,KAAKrB,MAAM;oBACjB,KAAK;wBACH,eAAe;wBACfkC,MAAM,MAAM/C,UAAUC,UAAU,CAACC,MAAM,CAACC,MAAM,CAAC;4BAAEF;4BAAY6C;wBAAI;wBACjE;oBACF,KAAK;wBACH,mBAAmB;wBACnBC,MAAM,MAAM/C,UAAUC,UAAU,CAACC,MAAM,CAACvB,UAAU,CAAC;4BAAEwE,IAAIR;4BAAO1C;4BAAY6C;wBAAI;wBAChF;gBACJ;YACF;YAEA,IAAIC,eAAeZ,UAAU,OAAOY;YAEpC,cAAc;YACd,MAAMG,yBAAyB,MAAMxC,sBAAsB;gBACzDV,WAAW8C,IAAI7B,OAAO,CAACC,MAAM,CAAClB,SAAS;gBACvCY,gBAAgBkC;YAClB;YACA,IAAII,wBAAwB,OAAOA;YAEnC,OAAOjB,sBAAsBC;QAC/B,EAAE,OAAOqB,OAAO;YACd,OAAOxD,WAAW;gBAChBE;gBACAuD,KAAKD;gBACLT;YACF;QACF;IACF,EAAC;AAEH,OAAO,MAAMxC,QACX,CAACY,SACD,OAAOuB,SAAkB,EAAEX,QAAQ,EAAEI,IAAI,EAAE,EAAkC;QAC3E,MAAM,CAACQ,OAAOC,MAAM,GAAGT;QACvB,IAAIY;QACJ,IAAIC;QACJ,IAAI9C;QAEJ,IAAI;YACF6C,MAAM,MAAMnF,qBAAqB;gBAC/BuD;gBACAY,QAAQ;oBACN7B,YAAYyC;gBACd;gBACAD;YACF;YACAxC,aAAa6C,IAAI7B,OAAO,CAACgC,WAAW,EAAE,CAACP,MAAM;YAE7C,MAAMM,mBAAmBxE,qBAAqB;gBAC5CwB,WAAW8C,IAAI7B,OAAO,CAACC,MAAM,CAAClB,SAAS;gBACvCyC;YACF;YACA,IAAIO,kBAAkB,OAAOA;YAE7B,IAAI/C,YAAY;gBACd,MAAM+C,mBAAmBxE,qBAAqB;oBAC5CwB,WAAWC,WAAWiB,MAAM,CAAClB,SAAS;oBACtCyC;gBACF;gBACA,IAAIO,kBAAkB,OAAOA;gBAE7B,MAAME,yBAAyB,MAAMxC,sBAAsB;oBACzDV,WAAWC,WAAWiB,MAAM,CAAClB,SAAS;oBACtCW,YAAY+B;oBACZ9B,gBAAgBkC;gBAClB;gBACA,IAAII,wBAAwB,OAAOA;gBAEnC,OAAQhB,KAAKrB,MAAM;oBACjB,KAAK;wBACH,eAAe;wBACfkC,MAAM,MAAM/C,UAAUC,UAAU,CAACK,KAAK,CAACjB,MAAM,CAAC;4BAAEY;4BAAY6C;wBAAI;wBAChE;oBACF,KAAK;wBACH,mBAAmB;wBACnBC,MAAM,MAAM/C,UAAUC,UAAU,CAACK,KAAK,CAAChB,UAAU,CAAC;4BAAE6D,IAAIR;4BAAO1C;4BAAY6C;wBAAI;wBAC/E;gBACJ;YACF;YAEA,IAAIC,eAAeZ,UAAU,OAAOY;YAEpC,cAAc;YACd,MAAMG,yBAAyB,MAAMxC,sBAAsB;gBACzDV,WAAW8C,IAAI7B,OAAO,CAACC,MAAM,CAAClB,SAAS;gBACvCY,gBAAgBkC;YAClB;YACA,IAAII,wBAAwB,OAAOA;YAEnC,OAAOjB,sBAAsBC;QAC/B,EAAE,OAAOqB,OAAO;YACd,OAAOxD,WAAW;gBAChBE;gBACAuD,KAAKD;gBACLT;YACF;QACF;IACF,EAAC"}
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;AAG/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,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,8BAIpB;IACD,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,GAAG,EAAE,QAAQ,CAAA;IACb,GAAG,EAAE,cAAc,CAAA;CACpB,aAmDA,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
- if (!req?.payload) {
57
- return Response.json({
58
- message: err.message,
59
- stack: err.stack
60
- }, {
61
- status: httpStatus.INTERNAL_SERVER_ERROR
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
- const { config, logger } = req.payload;
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.context, collection.config) || {
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.context, collection?.config) || {
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\n}) => {\n if (!req?.payload) {\n return Response.json(\n {\n message: err.message,\n stack: err.stack,\n },\n { status: httpStatus.INTERNAL_SERVER_ERROR },\n )\n }\n\n const { config, logger } = req.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, { status })\n}\n"],"names":["httpStatus","APIError","formatErrors","incoming","proto","Object","getPrototypeOf","constructor","name","data","errors","message","keys","reduce","acc","key","push","field","path","Array","isArray","routeError","collection","err","req","payload","Response","json","stack","status","INTERNAL_SERVER_ERROR","config","logger","response","error","debug","hooks","afterError","context"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
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;AAItF,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,cAuE5B,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(request.method.toUpperCase()) && request.body) {
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
- try {
13
- data = await request.json();
14
- } catch (error) {
15
- data = {};
16
- }
17
- } else if (contentType === 'multipart/form-data') {
18
- // possible upload request
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
- // non upload request
54
- const formData = await request.formData();
55
- const payloadData = formData.get('_payload');
56
- if (typeof payloadData === 'string') {
57
- data = JSON.parse(payloadData);
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 ({ collection, config, request }) => {\n let data: Record<string, any> = undefined\n let file: CustomPayloadRequest['file'] = undefined\n\n if (['PATCH', 'POST', 'PUT'].includes(request.method.toUpperCase()) && request.body) {\n const [contentType] = (request.headers.get('Content-Type') || '').split(';')\n\n if (contentType === 'application/json') {\n try {\n data = await request.json()\n } catch (error) {\n data = {}\n }\n } else if (contentType === 'multipart/form-data') {\n // possible upload request\n if (collection?.config?.upload) {\n // load file in memory\n if (!config.upload?.useTempFiles) {\n const formData = await request.formData()\n const formFile = formData.get('file')\n\n if (formFile instanceof Blob) {\n const bytes = await formFile.arrayBuffer()\n const buffer = Buffer.from(bytes)\n\n file = {\n name: formFile.name,\n data: buffer,\n mimetype: formFile.type,\n size: formFile.size,\n }\n }\n\n const payloadData = formData.get('_payload')\n\n if (typeof payloadData === 'string') {\n data = JSON.parse(payloadData)\n }\n } else {\n // store temp file on disk\n const { error, fields, files } = await nextFileUpload({\n options: config.upload as any,\n request,\n })\n\n if (error) {\n throw new Error(error.message)\n }\n\n if (files?.file) file = files.file\n\n if (fields?._payload && typeof fields._payload === 'string') {\n data = JSON.parse(fields._payload)\n }\n }\n } else {\n // non upload request\n const formData = await request.formData()\n const payloadData = formData.get('_payload')\n\n if (typeof payloadData === 'string') {\n data = JSON.parse(payloadData)\n }\n }\n }\n }\n\n return {\n data,\n file,\n }\n}\n"],"names":["nextFileUpload","getDataAndFile","collection","config","request","data","undefined","file","includes","method","toUpperCase","body","contentType","headers","get","split","json","error","upload","useTempFiles","formData","formFile","Blob","bytes","arrayBuffer","buffer","Buffer","from","name","mimetype","type","size","payloadData","JSON","parse","fields","files","options","Error","message","_payload"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,cAAc,QAAQ,8BAA6B;AAU5D,OAAO,MAAMC,iBAAiC,OAAO,EAAEC,UAAU,EAAEC,MAAM,EAAEC,OAAO,EAAE;IAClF,IAAIC,OAA4BC;IAChC,IAAIC,OAAqCD;IAEzC,IAAI;QAAC;QAAS;QAAQ;KAAM,CAACE,QAAQ,CAACJ,QAAQK,MAAM,CAACC,WAAW,OAAON,QAAQO,IAAI,EAAE;QACnF,MAAM,CAACC,YAAY,GAAG,AAACR,CAAAA,QAAQS,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAC,EAAGC,KAAK,CAAC;QAExE,IAAIH,gBAAgB,oBAAoB;YACtC,IAAI;gBACFP,OAAO,MAAMD,QAAQY,IAAI;YAC3B,EAAE,OAAOC,OAAO;gBACdZ,OAAO,CAAC;YACV;QACF,OAAO,IAAIO,gBAAgB,uBAAuB;YAChD,0BAA0B;YAC1B,IAAIV,YAAYC,QAAQe,QAAQ;gBAC9B,sBAAsB;gBACtB,IAAI,CAACf,OAAOe,MAAM,EAAEC,cAAc;oBAChC,MAAMC,WAAW,MAAMhB,QAAQgB,QAAQ;oBACvC,MAAMC,WAAWD,SAASN,GAAG,CAAC;oBAE9B,IAAIO,oBAAoBC,MAAM;wBAC5B,MAAMC,QAAQ,MAAMF,SAASG,WAAW;wBACxC,MAAMC,SAASC,OAAOC,IAAI,CAACJ;wBAE3BhB,OAAO;4BACLqB,MAAMP,SAASO,IAAI;4BACnBvB,MAAMoB;4BACNI,UAAUR,SAASS,IAAI;4BACvBC,MAAMV,SAASU,IAAI;wBACrB;oBACF;oBAEA,MAAMC,cAAcZ,SAASN,GAAG,CAAC;oBAEjC,IAAI,OAAOkB,gBAAgB,UAAU;wBACnC3B,OAAO4B,KAAKC,KAAK,CAACF;oBACpB;gBACF,OAAO;oBACL,0BAA0B;oBAC1B,MAAM,EAAEf,KAAK,EAAEkB,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAMpC,eAAe;wBACpDqC,SAASlC,OAAOe,MAAM;wBACtBd;oBACF;oBAEA,IAAIa,OAAO;wBACT,MAAM,IAAIqB,MAAMrB,MAAMsB,OAAO;oBAC/B;oBAEA,IAAIH,OAAO7B,MAAMA,OAAO6B,MAAM7B,IAAI;oBAElC,IAAI4B,QAAQK,YAAY,OAAOL,OAAOK,QAAQ,KAAK,UAAU;wBAC3DnC,OAAO4B,KAAKC,KAAK,CAACC,OAAOK,QAAQ;oBACnC;gBACF;YACF,OAAO;gBACL,qBAAqB;gBACrB,MAAMpB,WAAW,MAAMhB,QAAQgB,QAAQ;gBACvC,MAAMY,cAAcZ,SAASN,GAAG,CAAC;gBAEjC,IAAI,OAAOkB,gBAAgB,UAAU;oBACnC3B,OAAO4B,KAAKC,KAAK,CAACF;gBACpB;YACF;QACF;IACF;IAEA,OAAO;QACL3B;QACAE;IACF;AACF,EAAC"}
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"}
@@ -1,4 +1,5 @@
1
1
  import type { Payload } from 'payload';
2
- import type { InitOptions } from 'payload/config';
2
+ import type { InitOptions, SanitizedConfig } from 'payload/config';
3
+ export declare const reload: (config: SanitizedConfig, payload: Payload) => Promise<void>;
3
4
  export declare const getPayloadHMR: (options: InitOptions) => Promise<Payload>;
4
5
  //# sourceMappingURL=getPayloadHMR.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPayloadHMR.d.ts","sourceRoot":"","sources":["../../src/utilities/getPayloadHMR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,OAAO,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAgBjD,eAAO,MAAM,aAAa,YAAmB,WAAW,KAAG,QAAQ,OAAO,CAgFzE,CAAA"}
1
+ {"version":3,"file":"getPayloadHMR.d.ts","sourceRoot":"","sources":["../../src/utilities/getPayloadHMR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,OAAO,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAgBlE,eAAO,MAAM,MAAM,WAAkB,eAAe,uBAAqB,QAAQ,IAAI,CAuBpF,CAAA;AAED,eAAO,MAAM,aAAa,YAAmB,WAAW,KAAG,QAAQ,OAAO,CA4DzE,CAAA"}
@@ -9,6 +9,27 @@ if (!cached) {
9
9
  reload: false
10
10
  };
11
11
  }
12
+ export const reload = async (config, payload)=>{
13
+ if (typeof payload.db.destroy === 'function') {
14
+ await payload.db.destroy();
15
+ }
16
+ payload.config = config;
17
+ payload.collections = config.collections.reduce((collections, collection)=>{
18
+ collections[collection.slug] = {
19
+ config: collection,
20
+ customIDType: payload.collections[collection.slug]?.customIDType
21
+ };
22
+ return collections;
23
+ }, {});
24
+ payload.globals = {
25
+ config: config.globals
26
+ };
27
+ // TODO: support HMR for other props in the future (see payload/src/index init()) hat may change on Payload singleton
28
+ await payload.db.init();
29
+ await payload.db.connect({
30
+ hotReload: true
31
+ });
32
+ };
12
33
  export const getPayloadHMR = async (options)=>{
13
34
  if (!options?.config) {
14
35
  throw new Error('Error: the payload config is required for getPayload to work.');
@@ -19,25 +40,7 @@ export const getPayloadHMR = async (options)=>{
19
40
  if (cached.reload === true) {
20
41
  let resolve;
21
42
  cached.reload = new Promise((res)=>resolve = res);
22
- if (typeof cached.payload.db.destroy === 'function') {
23
- await cached.payload.db.destroy();
24
- }
25
- cached.payload.config = config;
26
- cached.payload.collections = config.collections.reduce((collections, collection)=>{
27
- collections[collection.slug] = {
28
- config: collection,
29
- customIDType: cached.payload.collections[collection.slug]?.customIDType
30
- };
31
- return collections;
32
- }, {});
33
- cached.payload.globals = {
34
- config: config.globals
35
- };
36
- // TODO: support HMR for other props in the future (see payload/src/index init()) hat may change on Payload singleton
37
- await cached.payload.db.init();
38
- await cached.payload.db.connect({
39
- hotReload: true
40
- });
43
+ await reload(config, cached.payload);
41
44
  resolve();
42
45
  }
43
46
  if (cached.reload instanceof Promise) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getPayloadHMR.ts"],"sourcesContent":["import type { GeneratedTypes, Payload } from 'payload'\nimport type { InitOptions } from 'payload/config'\n\nimport { BasePayload } from 'payload'\nimport WebSocket from 'ws'\n\nlet cached: {\n payload: Payload | null\n promise: Promise<Payload> | null\n reload: Promise<boolean> | boolean\n} = global._payload\n\nif (!cached) {\n // eslint-disable-next-line no-multi-assign\n cached = global._payload = { payload: null, promise: null, reload: false }\n}\n\nexport const getPayloadHMR = async (options: InitOptions): Promise<Payload> => {\n if (!options?.config) {\n throw new Error('Error: the payload config is required for getPayload to work.')\n }\n\n if (cached.payload) {\n const config = await options.config // TODO: check if we can move this inside the cached.reload === true condition\n\n if (cached.reload === true) {\n let resolve\n\n cached.reload = new Promise((res) => (resolve = res))\n\n if (typeof cached.payload.db.destroy === 'function') {\n await cached.payload.db.destroy()\n }\n\n cached.payload.config = config\n\n cached.payload.collections = config.collections.reduce((collections, collection) => {\n collections[collection.slug] = {\n config: collection,\n customIDType: cached.payload.collections[collection.slug]?.customIDType,\n }\n return collections\n }, {})\n\n cached.payload.globals = {\n config: config.globals,\n }\n\n // TODO: support HMR for other props in the future (see payload/src/index init()) hat may change on Payload singleton\n\n await cached.payload.db.init()\n await cached.payload.db.connect({ hotReload: true })\n resolve()\n }\n\n if (cached.reload instanceof Promise) {\n await cached.reload\n }\n\n return cached.payload\n }\n\n if (!cached.promise) {\n cached.promise = new BasePayload<GeneratedTypes>().init(options)\n }\n\n try {\n cached.payload = await cached.promise\n\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n process.env.DISABLE_PAYLOAD_HMR !== 'true'\n ) {\n try {\n const port = process.env.PORT || '3000'\n const ws = new WebSocket(`ws://localhost:${port}/_next/webpack-hmr`)\n\n ws.onmessage = (event) => {\n if (typeof event.data === 'string') {\n const data = JSON.parse(event.data)\n\n if ('action' in data && data.action === 'serverComponentChanges') {\n cached.reload = true\n }\n }\n }\n } catch (_) {\n // swallow e\n }\n }\n } catch (e) {\n cached.promise = null\n throw e\n }\n\n return cached.payload\n}\n"],"names":["BasePayload","WebSocket","cached","global","_payload","payload","promise","reload","getPayloadHMR","options","config","Error","resolve","Promise","res","db","destroy","collections","reduce","collection","slug","customIDType","globals","init","connect","hotReload","process","env","NODE_ENV","DISABLE_PAYLOAD_HMR","port","PORT","ws","onmessage","event","data","JSON","parse","action","_","e"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,WAAW,QAAQ,UAAS;AACrC,OAAOC,eAAe,KAAI;AAE1B,IAAIC,SAIAC,OAAOC,QAAQ;AAEnB,IAAI,CAACF,QAAQ;IACX,2CAA2C;IAC3CA,SAASC,OAAOC,QAAQ,GAAG;QAAEC,SAAS;QAAMC,SAAS;QAAMC,QAAQ;IAAM;AAC3E;AAEA,OAAO,MAAMC,gBAAgB,OAAOC;IAClC,IAAI,CAACA,SAASC,QAAQ;QACpB,MAAM,IAAIC,MAAM;IAClB;IAEA,IAAIT,OAAOG,OAAO,EAAE;QAClB,MAAMK,SAAS,MAAMD,QAAQC,MAAM,CAAC,8EAA8E;;QAElH,IAAIR,OAAOK,MAAM,KAAK,MAAM;YAC1B,IAAIK;YAEJV,OAAOK,MAAM,GAAG,IAAIM,QAAQ,CAACC,MAASF,UAAUE;YAEhD,IAAI,OAAOZ,OAAOG,OAAO,CAACU,EAAE,CAACC,OAAO,KAAK,YAAY;gBACnD,MAAMd,OAAOG,OAAO,CAACU,EAAE,CAACC,OAAO;YACjC;YAEAd,OAAOG,OAAO,CAACK,MAAM,GAAGA;YAExBR,OAAOG,OAAO,CAACY,WAAW,GAAGP,OAAOO,WAAW,CAACC,MAAM,CAAC,CAACD,aAAaE;gBACnEF,WAAW,CAACE,WAAWC,IAAI,CAAC,GAAG;oBAC7BV,QAAQS;oBACRE,cAAcnB,OAAOG,OAAO,CAACY,WAAW,CAACE,WAAWC,IAAI,CAAC,EAAEC;gBAC7D;gBACA,OAAOJ;YACT,GAAG,CAAC;YAEJf,OAAOG,OAAO,CAACiB,OAAO,GAAG;gBACvBZ,QAAQA,OAAOY,OAAO;YACxB;YAEA,qHAAqH;YAErH,MAAMpB,OAAOG,OAAO,CAACU,EAAE,CAACQ,IAAI;YAC5B,MAAMrB,OAAOG,OAAO,CAACU,EAAE,CAACS,OAAO,CAAC;gBAAEC,WAAW;YAAK;YAClDb;QACF;QAEA,IAAIV,OAAOK,MAAM,YAAYM,SAAS;YACpC,MAAMX,OAAOK,MAAM;QACrB;QAEA,OAAOL,OAAOG,OAAO;IACvB;IAEA,IAAI,CAACH,OAAOI,OAAO,EAAE;QACnBJ,OAAOI,OAAO,GAAG,IAAIN,cAA8BuB,IAAI,CAACd;IAC1D;IAEA,IAAI;QACFP,OAAOG,OAAO,GAAG,MAAMH,OAAOI,OAAO;QAErC,IACEoB,QAAQC,GAAG,CAACC,QAAQ,KAAK,gBACzBF,QAAQC,GAAG,CAACC,QAAQ,KAAK,UACzBF,QAAQC,GAAG,CAACE,mBAAmB,KAAK,QACpC;YACA,IAAI;gBACF,MAAMC,OAAOJ,QAAQC,GAAG,CAACI,IAAI,IAAI;gBACjC,MAAMC,KAAK,IAAI/B,UAAU,CAAC,eAAe,EAAE6B,KAAK,kBAAkB,CAAC;gBAEnEE,GAAGC,SAAS,GAAG,CAACC;oBACd,IAAI,OAAOA,MAAMC,IAAI,KAAK,UAAU;wBAClC,MAAMA,OAAOC,KAAKC,KAAK,CAACH,MAAMC,IAAI;wBAElC,IAAI,YAAYA,QAAQA,KAAKG,MAAM,KAAK,0BAA0B;4BAChEpC,OAAOK,MAAM,GAAG;wBAClB;oBACF;gBACF;YACF,EAAE,OAAOgC,GAAG;YACV,YAAY;YACd;QACF;IACF,EAAE,OAAOC,GAAG;QACVtC,OAAOI,OAAO,GAAG;QACjB,MAAMkC;IACR;IAEA,OAAOtC,OAAOG,OAAO;AACvB,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/getPayloadHMR.ts"],"sourcesContent":["import type { GeneratedTypes, Payload } from 'payload'\nimport type { InitOptions, SanitizedConfig } from 'payload/config'\n\nimport { BasePayload } from 'payload'\nimport WebSocket from 'ws'\n\nlet cached: {\n payload: Payload | null\n promise: Promise<Payload> | null\n reload: Promise<boolean> | boolean\n} = global._payload\n\nif (!cached) {\n // eslint-disable-next-line no-multi-assign\n cached = global._payload = { payload: null, promise: null, reload: false }\n}\n\nexport const reload = async (config: SanitizedConfig, payload: Payload): Promise<void> => {\n if (typeof payload.db.destroy === 'function') {\n await payload.db.destroy()\n }\n\n payload.config = config\n\n payload.collections = config.collections.reduce((collections, collection) => {\n collections[collection.slug] = {\n config: collection,\n customIDType: payload.collections[collection.slug]?.customIDType,\n }\n return collections\n }, {})\n\n payload.globals = {\n config: config.globals,\n }\n\n // TODO: support HMR for other props in the future (see payload/src/index init()) hat may change on Payload singleton\n\n await payload.db.init()\n await payload.db.connect({ hotReload: true })\n}\n\nexport const getPayloadHMR = async (options: InitOptions): Promise<Payload> => {\n if (!options?.config) {\n throw new Error('Error: the payload config is required for getPayload to work.')\n }\n\n if (cached.payload) {\n const config = await options.config // TODO: check if we can move this inside the cached.reload === true condition\n\n if (cached.reload === true) {\n let resolve\n\n cached.reload = new Promise((res) => (resolve = res))\n\n await reload(config, cached.payload)\n\n resolve()\n }\n\n if (cached.reload instanceof Promise) {\n await cached.reload\n }\n\n return cached.payload\n }\n\n if (!cached.promise) {\n cached.promise = new BasePayload<GeneratedTypes>().init(options)\n }\n\n try {\n cached.payload = await cached.promise\n\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n process.env.DISABLE_PAYLOAD_HMR !== 'true'\n ) {\n try {\n const port = process.env.PORT || '3000'\n const ws = new WebSocket(`ws://localhost:${port}/_next/webpack-hmr`)\n\n ws.onmessage = (event) => {\n if (typeof event.data === 'string') {\n const data = JSON.parse(event.data)\n\n if ('action' in data && data.action === 'serverComponentChanges') {\n cached.reload = true\n }\n }\n }\n } catch (_) {\n // swallow e\n }\n }\n } catch (e) {\n cached.promise = null\n throw e\n }\n\n return cached.payload\n}\n"],"names":["BasePayload","WebSocket","cached","global","_payload","payload","promise","reload","config","db","destroy","collections","reduce","collection","slug","customIDType","globals","init","connect","hotReload","getPayloadHMR","options","Error","resolve","Promise","res","process","env","NODE_ENV","DISABLE_PAYLOAD_HMR","port","PORT","ws","onmessage","event","data","JSON","parse","action","_","e"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,WAAW,QAAQ,UAAS;AACrC,OAAOC,eAAe,KAAI;AAE1B,IAAIC,SAIAC,OAAOC,QAAQ;AAEnB,IAAI,CAACF,QAAQ;IACX,2CAA2C;IAC3CA,SAASC,OAAOC,QAAQ,GAAG;QAAEC,SAAS;QAAMC,SAAS;QAAMC,QAAQ;IAAM;AAC3E;AAEA,OAAO,MAAMA,SAAS,OAAOC,QAAyBH;IACpD,IAAI,OAAOA,QAAQI,EAAE,CAACC,OAAO,KAAK,YAAY;QAC5C,MAAML,QAAQI,EAAE,CAACC,OAAO;IAC1B;IAEAL,QAAQG,MAAM,GAAGA;IAEjBH,QAAQM,WAAW,GAAGH,OAAOG,WAAW,CAACC,MAAM,CAAC,CAACD,aAAaE;QAC5DF,WAAW,CAACE,WAAWC,IAAI,CAAC,GAAG;YAC7BN,QAAQK;YACRE,cAAcV,QAAQM,WAAW,CAACE,WAAWC,IAAI,CAAC,EAAEC;QACtD;QACA,OAAOJ;IACT,GAAG,CAAC;IAEJN,QAAQW,OAAO,GAAG;QAChBR,QAAQA,OAAOQ,OAAO;IACxB;IAEA,qHAAqH;IAErH,MAAMX,QAAQI,EAAE,CAACQ,IAAI;IACrB,MAAMZ,QAAQI,EAAE,CAACS,OAAO,CAAC;QAAEC,WAAW;IAAK;AAC7C,EAAC;AAED,OAAO,MAAMC,gBAAgB,OAAOC;IAClC,IAAI,CAACA,SAASb,QAAQ;QACpB,MAAM,IAAIc,MAAM;IAClB;IAEA,IAAIpB,OAAOG,OAAO,EAAE;QAClB,MAAMG,SAAS,MAAMa,QAAQb,MAAM,CAAC,8EAA8E;;QAElH,IAAIN,OAAOK,MAAM,KAAK,MAAM;YAC1B,IAAIgB;YAEJrB,OAAOK,MAAM,GAAG,IAAIiB,QAAQ,CAACC,MAASF,UAAUE;YAEhD,MAAMlB,OAAOC,QAAQN,OAAOG,OAAO;YAEnCkB;QACF;QAEA,IAAIrB,OAAOK,MAAM,YAAYiB,SAAS;YACpC,MAAMtB,OAAOK,MAAM;QACrB;QAEA,OAAOL,OAAOG,OAAO;IACvB;IAEA,IAAI,CAACH,OAAOI,OAAO,EAAE;QACnBJ,OAAOI,OAAO,GAAG,IAAIN,cAA8BiB,IAAI,CAACI;IAC1D;IAEA,IAAI;QACFnB,OAAOG,OAAO,GAAG,MAAMH,OAAOI,OAAO;QAErC,IACEoB,QAAQC,GAAG,CAACC,QAAQ,KAAK,gBACzBF,QAAQC,GAAG,CAACC,QAAQ,KAAK,UACzBF,QAAQC,GAAG,CAACE,mBAAmB,KAAK,QACpC;YACA,IAAI;gBACF,MAAMC,OAAOJ,QAAQC,GAAG,CAACI,IAAI,IAAI;gBACjC,MAAMC,KAAK,IAAI/B,UAAU,CAAC,eAAe,EAAE6B,KAAK,kBAAkB,CAAC;gBAEnEE,GAAGC,SAAS,GAAG,CAACC;oBACd,IAAI,OAAOA,MAAMC,IAAI,KAAK,UAAU;wBAClC,MAAMA,OAAOC,KAAKC,KAAK,CAACH,MAAMC,IAAI;wBAElC,IAAI,YAAYA,QAAQA,KAAKG,MAAM,KAAK,0BAA0B;4BAChEpC,OAAOK,MAAM,GAAG;wBAClB;oBACF;gBACF;YACF,EAAE,OAAOgC,GAAG;YACV,YAAY;YACd;QACF;IACF,EAAE,OAAOC,GAAG;QACVtC,OAAOI,OAAO,GAAG;QACjB,MAAMkC;IACR;IAEA,OAAOtC,OAAOG,OAAO;AACvB,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;AAED,eAAO,MAAM,QAAQ,iFAKlB,IAAI,KAAG,QAAQ,cAAc,CA+F/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;AAID,eAAO,MAAM,QAAQ,iFAKlB,IAAI,KAAG,QAAQ,cAAc,CAyG/B,CAAA"}