@payloadcms/next 3.0.0-canary.6041f49 → 3.0.0-canary.f1db24e

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 (347) hide show
  1. package/dist/cjs/withPayload.cjs +36 -10
  2. package/dist/cjs/withPayload.cjs.map +1 -1
  3. package/dist/elements/LeaveWithoutSaving/index.js +35 -15
  4. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  5. package/dist/exports/utilities.d.ts +0 -2
  6. package/dist/exports/utilities.d.ts.map +1 -1
  7. package/dist/exports/utilities.js +0 -2
  8. package/dist/exports/utilities.js.map +1 -1
  9. package/dist/exports/views.d.ts +2 -1
  10. package/dist/exports/views.d.ts.map +1 -1
  11. package/dist/exports/views.js +2 -1
  12. package/dist/exports/views.js.map +1 -1
  13. package/dist/fetchAPI-multipart/index.d.ts +2 -4
  14. package/dist/fetchAPI-multipart/index.d.ts.map +1 -1
  15. package/dist/fetchAPI-multipart/index.js +2 -4
  16. package/dist/fetchAPI-multipart/index.js.map +1 -1
  17. package/dist/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
  18. package/dist/fetchAPI-multipart/processMultipart.js +17 -11
  19. package/dist/fetchAPI-multipart/processMultipart.js.map +1 -1
  20. package/dist/layouts/Root/index.d.ts.map +1 -1
  21. package/dist/layouts/Root/index.js +36 -21
  22. package/dist/layouts/Root/index.js.map +1 -1
  23. package/dist/prod/payload/payload-favicon-dark.png +0 -0
  24. package/dist/prod/payload/payload-favicon-light.png +0 -0
  25. package/dist/prod/styles.css +1 -1
  26. package/dist/routes/rest/auth/access.d.ts.map +1 -1
  27. package/dist/routes/rest/auth/access.js +17 -7
  28. package/dist/routes/rest/auth/access.js.map +1 -1
  29. package/dist/routes/rest/buildFormState.d.ts +0 -2
  30. package/dist/routes/rest/buildFormState.d.ts.map +1 -1
  31. package/dist/routes/rest/buildFormState.js +16 -166
  32. package/dist/routes/rest/buildFormState.js.map +1 -1
  33. package/dist/routes/rest/index.d.ts.map +1 -1
  34. package/dist/routes/rest/index.js +3 -1
  35. package/dist/routes/rest/index.js.map +1 -1
  36. package/dist/routes/rest/og/image.d.ts +9 -0
  37. package/dist/routes/rest/og/image.d.ts.map +1 -0
  38. package/dist/routes/rest/og/image.js +79 -0
  39. package/dist/routes/rest/og/image.js.map +1 -0
  40. package/dist/routes/rest/og/index.d.ts +11 -0
  41. package/dist/routes/rest/og/index.d.ts.map +1 -0
  42. package/dist/routes/rest/og/index.js +73 -0
  43. package/dist/routes/rest/og/index.js.map +1 -0
  44. package/dist/routes/rest/og/roboto-regular.woff +0 -0
  45. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
  46. package/dist/utilities/addDataAndFileToRequest.js +12 -41
  47. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  48. package/dist/utilities/getNextRequestI18n.d.ts +1 -1
  49. package/dist/utilities/getNextRequestI18n.js +1 -1
  50. package/dist/utilities/getNextRequestI18n.js.map +1 -1
  51. package/dist/utilities/getPayloadHMR.d.ts.map +1 -1
  52. package/dist/utilities/getPayloadHMR.js +5 -3
  53. package/dist/utilities/getPayloadHMR.js.map +1 -1
  54. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  55. package/dist/utilities/getRequestLanguage.js +1 -1
  56. package/dist/utilities/getRequestLanguage.js.map +1 -1
  57. package/dist/utilities/getRequestTheme.d.ts +11 -0
  58. package/dist/utilities/getRequestTheme.d.ts.map +1 -0
  59. package/dist/utilities/getRequestTheme.js +19 -0
  60. package/dist/utilities/getRequestTheme.js.map +1 -0
  61. package/dist/utilities/initPage/handleAdminPage.js +1 -1
  62. package/dist/utilities/initPage/handleAdminPage.js.map +1 -1
  63. package/dist/utilities/initPage/handleAuthRedirect.d.ts +2 -2
  64. package/dist/utilities/initPage/handleAuthRedirect.d.ts.map +1 -1
  65. package/dist/utilities/initPage/handleAuthRedirect.js +5 -4
  66. package/dist/utilities/initPage/handleAuthRedirect.js.map +1 -1
  67. package/dist/utilities/initPage/index.d.ts.map +1 -1
  68. package/dist/utilities/initPage/index.js +12 -1
  69. package/dist/utilities/initPage/index.js.map +1 -1
  70. package/dist/utilities/initPage/shared.d.ts +2 -2
  71. package/dist/utilities/initPage/shared.d.ts.map +1 -1
  72. package/dist/utilities/initPage/shared.js +10 -9
  73. package/dist/utilities/initPage/shared.js.map +1 -1
  74. package/dist/utilities/meta.d.ts +4 -8
  75. package/dist/utilities/meta.d.ts.map +1 -1
  76. package/dist/utilities/meta.js +64 -25
  77. package/dist/utilities/meta.js.map +1 -1
  78. package/dist/views/API/LocaleSelector/index.d.ts +9 -0
  79. package/dist/views/API/LocaleSelector/index.d.ts.map +1 -0
  80. package/dist/views/API/LocaleSelector/index.js +16 -0
  81. package/dist/views/API/LocaleSelector/index.js.map +1 -0
  82. package/dist/views/API/RenderJSON/index.js +100 -68
  83. package/dist/views/API/RenderJSON/index.js.map +1 -1
  84. package/dist/views/API/index.client.d.ts.map +1 -1
  85. package/dist/views/API/index.client.js +126 -92
  86. package/dist/views/API/index.client.js.map +1 -1
  87. package/dist/views/API/index.js +2 -1
  88. package/dist/views/API/index.js.map +1 -1
  89. package/dist/views/API/meta.d.ts.map +1 -1
  90. package/dist/views/API/meta.js +13 -6
  91. package/dist/views/API/meta.js.map +1 -1
  92. package/dist/views/Account/Settings/LanguageSelector.d.ts +6 -0
  93. package/dist/views/Account/Settings/LanguageSelector.d.ts.map +1 -0
  94. package/dist/views/Account/Settings/LanguageSelector.js +19 -0
  95. package/dist/views/Account/Settings/LanguageSelector.js.map +1 -0
  96. package/dist/views/Account/Settings/index.d.ts +4 -0
  97. package/dist/views/Account/Settings/index.d.ts.map +1 -1
  98. package/dist/views/Account/Settings/index.js +24 -20
  99. package/dist/views/Account/Settings/index.js.map +1 -1
  100. package/dist/views/Account/ToggleTheme/index.js +2 -1
  101. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  102. package/dist/views/Account/index.d.ts.map +1 -1
  103. package/dist/views/Account/index.js +66 -31
  104. package/dist/views/Account/index.js.map +1 -1
  105. package/dist/views/Account/meta.d.ts.map +1 -1
  106. package/dist/views/Account/meta.js +4 -5
  107. package/dist/views/Account/meta.js.map +1 -1
  108. package/dist/views/CreateFirstUser/index.client.js +29 -19
  109. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  110. package/dist/views/CreateFirstUser/index.js +16 -6
  111. package/dist/views/CreateFirstUser/index.js.map +1 -1
  112. package/dist/views/CreateFirstUser/meta.d.ts.map +1 -1
  113. package/dist/views/CreateFirstUser/meta.js +4 -5
  114. package/dist/views/CreateFirstUser/meta.js.map +1 -1
  115. package/dist/views/Dashboard/Default/index.d.ts +5 -3
  116. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  117. package/dist/views/Dashboard/Default/index.js +118 -20
  118. package/dist/views/Dashboard/Default/index.js.map +1 -1
  119. package/dist/views/Dashboard/index.d.ts.map +1 -1
  120. package/dist/views/Dashboard/index.js +51 -11
  121. package/dist/views/Dashboard/index.js.map +1 -1
  122. package/dist/views/Dashboard/meta.d.ts.map +1 -1
  123. package/dist/views/Dashboard/meta.js +8 -5
  124. package/dist/views/Dashboard/meta.js.map +1 -1
  125. package/dist/views/Document/getCustomViewByKey.d.ts.map +1 -1
  126. package/dist/views/Document/getCustomViewByKey.js +2 -1
  127. package/dist/views/Document/getCustomViewByKey.js.map +1 -1
  128. package/dist/views/Document/getDocumentData.d.ts +9 -0
  129. package/dist/views/Document/getDocumentData.d.ts.map +1 -0
  130. package/dist/views/Document/getDocumentData.js +31 -0
  131. package/dist/views/Document/getDocumentData.js.map +1 -0
  132. package/dist/views/Document/getDocumentPermissions.d.ts +14 -0
  133. package/dist/views/Document/getDocumentPermissions.d.ts.map +1 -0
  134. package/dist/views/Document/getDocumentPermissions.js +83 -0
  135. package/dist/views/Document/getDocumentPermissions.js.map +1 -0
  136. package/dist/views/Document/getMetaBySegment.d.ts +0 -1
  137. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  138. package/dist/views/Document/getMetaBySegment.js +1 -1
  139. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  140. package/dist/views/Document/getViewsFromConfig.d.ts.map +1 -1
  141. package/dist/views/Document/getViewsFromConfig.js +172 -171
  142. package/dist/views/Document/getViewsFromConfig.js.map +1 -1
  143. package/dist/views/Document/index.d.ts.map +1 -1
  144. package/dist/views/Document/index.js +70 -47
  145. package/dist/views/Document/index.js.map +1 -1
  146. package/dist/views/Edit/Default/Auth/APIKey.js +42 -26
  147. package/dist/views/Edit/Default/Auth/APIKey.js.map +1 -1
  148. package/dist/views/Edit/Default/Auth/index.d.ts.map +1 -1
  149. package/dist/views/Edit/Default/Auth/index.js +85 -51
  150. package/dist/views/Edit/Default/Auth/index.js.map +1 -1
  151. package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts.map +1 -1
  152. package/dist/views/Edit/Default/SetDocumentStepNav/index.js +25 -22
  153. package/dist/views/Edit/Default/SetDocumentStepNav/index.js.map +1 -1
  154. package/dist/views/Edit/Default/index.d.ts.map +1 -1
  155. package/dist/views/Edit/Default/index.js +78 -68
  156. package/dist/views/Edit/Default/index.js.map +1 -1
  157. package/dist/views/Edit/index.client.d.ts.map +1 -1
  158. package/dist/views/Edit/index.client.js +11 -7
  159. package/dist/views/Edit/index.client.js.map +1 -1
  160. package/dist/views/Edit/index.js +2 -1
  161. package/dist/views/Edit/index.js.map +1 -1
  162. package/dist/views/Edit/meta.d.ts.map +1 -1
  163. package/dist/views/Edit/meta.js +17 -15
  164. package/dist/views/Edit/meta.js.map +1 -1
  165. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +42 -20
  166. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  167. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  168. package/dist/views/ForgotPassword/index.js +38 -18
  169. package/dist/views/ForgotPassword/index.js.map +1 -1
  170. package/dist/views/ForgotPassword/meta.d.ts.map +1 -1
  171. package/dist/views/ForgotPassword/meta.js +4 -5
  172. package/dist/views/ForgotPassword/meta.js.map +1 -1
  173. package/dist/views/List/Default/index.d.ts.map +1 -1
  174. package/dist/views/List/Default/index.js +162 -87
  175. package/dist/views/List/Default/index.js.map +1 -1
  176. package/dist/views/List/index.d.ts.map +1 -1
  177. package/dist/views/List/index.js +56 -36
  178. package/dist/views/List/index.js.map +1 -1
  179. package/dist/views/List/meta.d.ts.map +1 -1
  180. package/dist/views/List/meta.js +4 -2
  181. package/dist/views/List/meta.js.map +1 -1
  182. package/dist/views/LivePreview/Context/context.d.ts +1 -1
  183. package/dist/views/LivePreview/Context/context.d.ts.map +1 -1
  184. package/dist/views/LivePreview/Context/context.js.map +1 -1
  185. package/dist/views/LivePreview/Context/index.js +9 -6
  186. package/dist/views/LivePreview/Context/index.js.map +1 -1
  187. package/dist/views/LivePreview/Device/index.js +5 -3
  188. package/dist/views/LivePreview/Device/index.js.map +1 -1
  189. package/dist/views/LivePreview/DeviceContainer/index.js +5 -3
  190. package/dist/views/LivePreview/DeviceContainer/index.js.map +1 -1
  191. package/dist/views/LivePreview/IFrame/index.js +2 -1
  192. package/dist/views/LivePreview/IFrame/index.js.map +1 -1
  193. package/dist/views/LivePreview/Preview/index.js +25 -14
  194. package/dist/views/LivePreview/Preview/index.js.map +1 -1
  195. package/dist/views/LivePreview/Toolbar/Controls/index.js +105 -57
  196. package/dist/views/LivePreview/Toolbar/Controls/index.js.map +1 -1
  197. package/dist/views/LivePreview/Toolbar/SizeInput/index.js +2 -1
  198. package/dist/views/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  199. package/dist/views/LivePreview/Toolbar/index.js +29 -14
  200. package/dist/views/LivePreview/Toolbar/index.js.map +1 -1
  201. package/dist/views/LivePreview/ToolbarArea/index.js +5 -3
  202. package/dist/views/LivePreview/ToolbarArea/index.js.map +1 -1
  203. package/dist/views/LivePreview/index.client.d.ts.map +1 -1
  204. package/dist/views/LivePreview/index.client.js +103 -80
  205. package/dist/views/LivePreview/index.client.js.map +1 -1
  206. package/dist/views/LivePreview/index.js +2 -1
  207. package/dist/views/LivePreview/index.js.map +1 -1
  208. package/dist/views/LivePreview/meta.d.ts.map +1 -1
  209. package/dist/views/LivePreview/meta.js +6 -22
  210. package/dist/views/LivePreview/meta.js.map +1 -1
  211. package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
  212. package/dist/views/Login/LoginForm/index.js +59 -50
  213. package/dist/views/Login/LoginForm/index.js.map +1 -1
  214. package/dist/views/Login/index.d.ts.map +1 -1
  215. package/dist/views/Login/index.js +47 -18
  216. package/dist/views/Login/index.js.map +1 -1
  217. package/dist/views/Login/meta.d.ts.map +1 -1
  218. package/dist/views/Login/meta.js +4 -5
  219. package/dist/views/Login/meta.js.map +1 -1
  220. package/dist/views/Logout/LogoutClient.js +21 -7
  221. package/dist/views/Logout/LogoutClient.js.map +1 -1
  222. package/dist/views/Logout/index.d.ts.map +1 -1
  223. package/dist/views/Logout/index.js +10 -11
  224. package/dist/views/Logout/index.js.map +1 -1
  225. package/dist/views/Logout/meta.d.ts.map +1 -1
  226. package/dist/views/Logout/meta.js +2 -4
  227. package/dist/views/Logout/meta.js.map +1 -1
  228. package/dist/views/NotFound/index.client.js +22 -10
  229. package/dist/views/NotFound/index.client.js.map +1 -1
  230. package/dist/views/NotFound/index.d.ts +1 -1
  231. package/dist/views/NotFound/index.d.ts.map +1 -1
  232. package/dist/views/NotFound/index.js +22 -9
  233. package/dist/views/NotFound/index.js.map +1 -1
  234. package/dist/views/NotFound/meta.d.ts.map +1 -1
  235. package/dist/views/NotFound/meta.js +2 -4
  236. package/dist/views/NotFound/meta.js.map +1 -1
  237. package/dist/views/ResetPassword/index.client.js +18 -11
  238. package/dist/views/ResetPassword/index.client.js.map +1 -1
  239. package/dist/views/ResetPassword/index.d.ts.map +1 -1
  240. package/dist/views/ResetPassword/index.js +47 -26
  241. package/dist/views/ResetPassword/index.js.map +1 -1
  242. package/dist/views/ResetPassword/meta.d.ts.map +1 -1
  243. package/dist/views/ResetPassword/meta.js +4 -5
  244. package/dist/views/ResetPassword/meta.js.map +1 -1
  245. package/dist/views/Root/getViewFromConfig.d.ts.map +1 -1
  246. package/dist/views/Root/getViewFromConfig.js +29 -12
  247. package/dist/views/Root/getViewFromConfig.js.map +1 -1
  248. package/dist/views/Root/index.d.ts +1 -0
  249. package/dist/views/Root/index.d.ts.map +1 -1
  250. package/dist/views/Root/index.js +41 -15
  251. package/dist/views/Root/index.js.map +1 -1
  252. package/dist/views/Root/meta.d.ts.map +1 -1
  253. package/dist/views/Root/meta.js +0 -19
  254. package/dist/views/Root/meta.js.map +1 -1
  255. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  256. package/dist/views/Unauthorized/index.js +20 -9
  257. package/dist/views/Unauthorized/index.js.map +1 -1
  258. package/dist/views/Unauthorized/meta.d.ts.map +1 -1
  259. package/dist/views/Unauthorized/meta.js +4 -5
  260. package/dist/views/Unauthorized/meta.js.map +1 -1
  261. package/dist/views/Verify/index.d.ts.map +1 -1
  262. package/dist/views/Verify/index.js +23 -8
  263. package/dist/views/Verify/index.js.map +1 -1
  264. package/dist/views/Verify/meta.d.ts.map +1 -1
  265. package/dist/views/Verify/meta.js +4 -5
  266. package/dist/views/Verify/meta.js.map +1 -1
  267. package/dist/views/Version/Default/index.js +83 -57
  268. package/dist/views/Version/Default/index.js.map +1 -1
  269. package/dist/views/Version/RenderFieldsToDiff/Label/index.js +5 -3
  270. package/dist/views/Version/RenderFieldsToDiff/Label/index.js.map +1 -1
  271. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +65 -50
  272. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  273. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js +30 -18
  274. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js.map +1 -1
  275. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +23 -12
  276. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  277. package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js +2 -1
  278. package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js.map +1 -1
  279. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +22 -11
  280. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  281. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +31 -30
  282. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  283. package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js +2 -1
  284. package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js.map +1 -1
  285. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +22 -11
  286. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  287. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +2 -2
  288. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +1 -1
  289. package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -1
  290. package/dist/views/Version/RenderFieldsToDiff/index.js +90 -87
  291. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  292. package/dist/views/Version/RenderFieldsToDiff/types.d.ts +2 -2
  293. package/dist/views/Version/RenderFieldsToDiff/types.d.ts.map +1 -1
  294. package/dist/views/Version/RenderFieldsToDiff/types.js.map +1 -1
  295. package/dist/views/Version/Restore/index.js +38 -18
  296. package/dist/views/Version/Restore/index.js.map +1 -1
  297. package/dist/views/Version/SelectComparison/index.js +32 -24
  298. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  299. package/dist/views/Version/SelectLocales/index.d.ts.map +1 -1
  300. package/dist/views/Version/SelectLocales/index.js +18 -11
  301. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  302. package/dist/views/Version/index.js +2 -1
  303. package/dist/views/Version/index.js.map +1 -1
  304. package/dist/views/Version/meta.d.ts.map +1 -1
  305. package/dist/views/Version/meta.js +5 -2
  306. package/dist/views/Version/meta.js.map +1 -1
  307. package/dist/views/Versions/buildColumns.js +7 -6
  308. package/dist/views/Versions/buildColumns.js.map +1 -1
  309. package/dist/views/Versions/cells/AutosaveCell/index.js +25 -3
  310. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  311. package/dist/views/Versions/cells/CreatedAt/index.js +9 -7
  312. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  313. package/dist/views/Versions/cells/ID/index.js +4 -1
  314. package/dist/views/Versions/cells/ID/index.js.map +1 -1
  315. package/dist/views/Versions/index.client.js +61 -29
  316. package/dist/views/Versions/index.client.js.map +1 -1
  317. package/dist/views/Versions/index.js +31 -22
  318. package/dist/views/Versions/index.js.map +1 -1
  319. package/dist/views/Versions/meta.d.ts.map +1 -1
  320. package/dist/views/Versions/meta.js +8 -4
  321. package/dist/views/Versions/meta.js.map +1 -1
  322. package/dist/withPayload.d.ts.map +1 -1
  323. package/dist/withPayload.js +36 -10
  324. package/dist/withPayload.js.map +1 -1
  325. package/package.json +15 -11
  326. package/dist/utilities/buildFieldSchemaMap/index.d.ts +0 -4
  327. package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +0 -1
  328. package/dist/utilities/buildFieldSchemaMap/index.js +0 -28
  329. package/dist/utilities/buildFieldSchemaMap/index.js.map +0 -1
  330. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts +0 -14
  331. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +0 -1
  332. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +0 -75
  333. package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +0 -1
  334. package/dist/utilities/buildFieldSchemaMap/types.d.ts +0 -3
  335. package/dist/utilities/buildFieldSchemaMap/types.d.ts.map +0 -1
  336. package/dist/utilities/buildFieldSchemaMap/types.js +0 -3
  337. package/dist/utilities/buildFieldSchemaMap/types.js.map +0 -1
  338. package/dist/utilities/getDataAndFile.d.ts +0 -12
  339. package/dist/utilities/getDataAndFile.d.ts.map +0 -1
  340. package/dist/utilities/getDataAndFile.js +0 -48
  341. package/dist/utilities/getDataAndFile.js.map +0 -1
  342. package/dist/views/Dashboard/Default/index.client.d.ts +0 -10
  343. package/dist/views/Dashboard/Default/index.client.d.ts.map +0 -1
  344. package/dist/views/Dashboard/Default/index.client.js +0 -103
  345. package/dist/views/Dashboard/Default/index.client.js.map +0 -1
  346. /package/dist/prod/payload/{favicon.svg → payload-favicon.svg} +0 -0
  347. /package/dist/prod/payload/{og-image.png → static-og-image.png} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/routes/rest/og/image.tsx"],"sourcesContent":["import React from 'react'\n\nexport const OGImage: React.FC<{\n Icon: React.ComponentType<any>\n description?: string\n fontFamily?: string\n leader?: string\n title?: string\n}> = ({ Icon, description, fontFamily = 'Arial, sans-serif', leader, title }) => {\n return (\n <div\n style={{\n backgroundColor: '#000',\n color: '#fff',\n display: 'flex',\n flexDirection: 'column',\n fontFamily,\n height: '100%',\n justifyContent: 'space-between',\n padding: '100px',\n width: '100%',\n }}\n >\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n fontSize: 50,\n height: '100%',\n }}\n >\n {leader && (\n <div\n style={{\n fontSize: 30,\n marginBottom: 10,\n }}\n >\n {leader}\n </div>\n )}\n <p\n style={{\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n display: '-webkit-box',\n fontSize: 90,\n lineHeight: 1,\n marginBottom: 0,\n marginTop: 0,\n textOverflow: 'ellipsis',\n }}\n >\n {title}\n </p>\n {description && (\n <p\n style={{\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n display: '-webkit-box',\n flexGrow: 1,\n fontSize: 30,\n lineHeight: 1,\n marginBottom: 0,\n marginTop: 40,\n textOverflow: 'ellipsis',\n }}\n >\n {description}\n </p>\n )}\n </div>\n <div\n style={{\n alignItems: 'flex-end',\n display: 'flex',\n flexShrink: 0,\n height: '38px',\n justifyContent: 'center',\n width: '38px',\n }}\n >\n <Icon fill=\"white\" />\n </div>\n </div>\n )\n}\n"],"names":["React","OGImage","Icon","description","fontFamily","leader","title","div","style","backgroundColor","color","display","flexDirection","height","justifyContent","padding","width","flexGrow","fontSize","marginBottom","p","WebkitBoxOrient","WebkitLineClamp","lineHeight","marginTop","textOverflow","alignItems","flexShrink","fill"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,OAAOA,WAAW,QAAO;AAEzB,OAAO,MAAMC,UAMR,CAAC,EAAEC,IAAI,EAAEC,WAAW,EAAEC,aAAa,mBAAmB,EAAEC,MAAM,EAAEC,KAAK,EAAE;IAC1E,qBACE,MAACC;QACCC,OAAO;YACLC,iBAAiB;YACjBC,OAAO;YACPC,SAAS;YACTC,eAAe;YACfR;YACAS,QAAQ;YACRC,gBAAgB;YAChBC,SAAS;YACTC,OAAO;QACT;;0BAEA,MAACT;gBACCC,OAAO;oBACLG,SAAS;oBACTC,eAAe;oBACfK,UAAU;oBACVC,UAAU;oBACVL,QAAQ;gBACV;;oBAECR,wBACC,KAACE;wBACCC,OAAO;4BACLU,UAAU;4BACVC,cAAc;wBAChB;kCAECd;;kCAGL,KAACe;wBACCZ,OAAO;4BACLa,iBAAiB;4BACjBC,iBAAiB;4BACjBX,SAAS;4BACTO,UAAU;4BACVK,YAAY;4BACZJ,cAAc;4BACdK,WAAW;4BACXC,cAAc;wBAChB;kCAECnB;;oBAEFH,6BACC,KAACiB;wBACCZ,OAAO;4BACLa,iBAAiB;4BACjBC,iBAAiB;4BACjBX,SAAS;4BACTM,UAAU;4BACVC,UAAU;4BACVK,YAAY;4BACZJ,cAAc;4BACdK,WAAW;4BACXC,cAAc;wBAChB;kCAECtB;;;;0BAIP,KAACI;gBACCC,OAAO;oBACLkB,YAAY;oBACZf,SAAS;oBACTgB,YAAY;oBACZd,QAAQ;oBACRC,gBAAgB;oBAChBE,OAAO;gBACT;0BAEA,cAAA,KAACd;oBAAK0B,MAAK;;;;;AAInB,EAAC"}
@@ -0,0 +1,11 @@
1
+ import type { PayloadRequestWithData } from 'payload/types';
2
+ import { ImageResponse } from 'next/og.js';
3
+ import { NextResponse } from 'next/server.js';
4
+ export declare const runtime = "nodejs";
5
+ export declare const contentType = "image/png";
6
+ export declare const generateOGImage: ({ req }: {
7
+ req: PayloadRequestWithData;
8
+ }) => Promise<NextResponse<{
9
+ error: string;
10
+ }> | ImageResponse>;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/routes/rest/og/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAI3D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAU7C,eAAO,MAAM,OAAO,WAAW,CAAA;AAE/B,eAAO,MAAM,WAAW,cAAc,CAAA;AAEtC,eAAO,MAAM,eAAe,YAAmB;IAAE,GAAG,EAAE,sBAAsB,CAAA;CAAE;;mBA6D7E,CAAA"}
@@ -0,0 +1,73 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PayloadIcon } from '@payloadcms/ui/graphics/Icon';
3
+ import fs from 'fs/promises';
4
+ import { ImageResponse } from 'next/og.js';
5
+ import { NextResponse } from 'next/server.js';
6
+ import path from 'path';
7
+ import React from 'react';
8
+ import { fileURLToPath } from 'url';
9
+ import { OGImage } from './image.js';
10
+ const filename = fileURLToPath(import.meta.url);
11
+ const dirname = path.dirname(filename);
12
+ export const runtime = 'nodejs';
13
+ export const contentType = 'image/png';
14
+ export const generateOGImage = async ({ req })=>{
15
+ const config = req.payload.config;
16
+ if (config.admin.meta.defaultOGImageType === 'off') {
17
+ return NextResponse.json({
18
+ error: `Open Graph images are disabled`
19
+ }, {
20
+ status: 400
21
+ });
22
+ }
23
+ try {
24
+ const { searchParams } = new URL(req.url);
25
+ const hasTitle = searchParams.has('title');
26
+ const title = hasTitle ? searchParams.get('title')?.slice(0, 100) : '';
27
+ const hasLeader = searchParams.has('leader');
28
+ const leader = hasLeader ? searchParams.get('leader')?.slice(0, 100).replace('-', ' ') : '';
29
+ const description = searchParams.has('description') ? searchParams.get('description') : '';
30
+ const Icon = config.admin?.components?.graphics?.Icon || PayloadIcon;
31
+ let fontData;
32
+ try {
33
+ // TODO: replace with `.woff2` file when supported
34
+ // See https://github.com/vercel/next.js/issues/63935
35
+ // Or better yet, use a CDN like Google Fonts if ever supported
36
+ fontData = fs.readFile(path.join(dirname, 'roboto-regular.woff'));
37
+ } catch (e) {
38
+ console.error(`Error reading font file or not readable: ${e.message}`) // eslint-disable-line no-console
39
+ ;
40
+ }
41
+ const fontFamily = 'Roboto, sans-serif';
42
+ return new ImageResponse(/*#__PURE__*/ _jsx(OGImage, {
43
+ Icon: Icon,
44
+ description: description,
45
+ fontFamily: fontFamily,
46
+ leader: leader,
47
+ title: title
48
+ }), {
49
+ ...fontData ? {
50
+ fonts: [
51
+ {
52
+ name: 'Roboto',
53
+ data: await fontData,
54
+ style: 'normal',
55
+ weight: 400
56
+ }
57
+ ]
58
+ } : {},
59
+ height: 630,
60
+ width: 1200
61
+ });
62
+ } catch (e) {
63
+ console.error(`${e.message}`) // eslint-disable-line no-console
64
+ ;
65
+ return NextResponse.json({
66
+ error: `Internal Server Error: ${e.message}`
67
+ }, {
68
+ status: 500
69
+ });
70
+ }
71
+ };
72
+
73
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/routes/rest/og/index.tsx"],"sourcesContent":["import type { PayloadRequestWithData } from 'payload/types'\n\nimport { PayloadIcon } from '@payloadcms/ui/graphics/Icon'\nimport fs from 'fs/promises'\nimport { ImageResponse } from 'next/og.js'\nimport { NextResponse } from 'next/server.js'\nimport path from 'path'\nimport React from 'react'\nimport { fileURLToPath } from 'url'\n\nimport { OGImage } from './image.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nexport const runtime = 'nodejs'\n\nexport const contentType = 'image/png'\n\nexport const generateOGImage = async ({ req }: { req: PayloadRequestWithData }) => {\n const config = req.payload.config\n\n if (config.admin.meta.defaultOGImageType === 'off') {\n return NextResponse.json({ error: `Open Graph images are disabled` }, { status: 400 })\n }\n\n try {\n const { searchParams } = new URL(req.url)\n\n const hasTitle = searchParams.has('title')\n const title = hasTitle ? searchParams.get('title')?.slice(0, 100) : ''\n const hasLeader = searchParams.has('leader')\n const leader = hasLeader ? searchParams.get('leader')?.slice(0, 100).replace('-', ' ') : ''\n const description = searchParams.has('description') ? searchParams.get('description') : ''\n const Icon = config.admin?.components?.graphics?.Icon || PayloadIcon\n\n let fontData\n\n try {\n // TODO: replace with `.woff2` file when supported\n // See https://github.com/vercel/next.js/issues/63935\n // Or better yet, use a CDN like Google Fonts if ever supported\n fontData = fs.readFile(path.join(dirname, 'roboto-regular.woff'))\n } catch (e) {\n console.error(`Error reading font file or not readable: ${e.message}`) // eslint-disable-line no-console\n }\n\n const fontFamily = 'Roboto, sans-serif'\n\n return new ImageResponse(\n (\n <OGImage\n Icon={Icon}\n description={description}\n fontFamily={fontFamily}\n leader={leader}\n title={title}\n />\n ),\n {\n ...(fontData\n ? {\n fonts: [\n {\n name: 'Roboto',\n data: await fontData,\n style: 'normal',\n weight: 400,\n },\n ],\n }\n : {}),\n height: 630,\n width: 1200,\n },\n )\n } catch (e: any) {\n console.error(`${e.message}`) // eslint-disable-line no-console\n return NextResponse.json({ error: `Internal Server Error: ${e.message}` }, { status: 500 })\n }\n}\n"],"names":["PayloadIcon","fs","ImageResponse","NextResponse","path","React","fileURLToPath","OGImage","filename","url","dirname","runtime","contentType","generateOGImage","req","config","payload","admin","meta","defaultOGImageType","json","error","status","searchParams","URL","hasTitle","has","title","get","slice","hasLeader","leader","replace","description","Icon","components","graphics","fontData","readFile","join","e","console","message","fontFamily","fonts","name","data","style","weight","height","width"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAEA,SAASA,WAAW,QAAQ,+BAA8B;AAC1D,OAAOC,QAAQ,cAAa;AAC5B,SAASC,aAAa,QAAQ,aAAY;AAC1C,SAASC,YAAY,QAAQ,iBAAgB;AAC7C,OAAOC,UAAU,OAAM;AACvB,OAAOC,WAAW,QAAO;AACzB,SAASC,aAAa,QAAQ,MAAK;AAEnC,SAASC,OAAO,QAAQ,aAAY;AAEpC,MAAMC,WAAWF,cAAc,YAAYG,GAAG;AAC9C,MAAMC,UAAUN,KAAKM,OAAO,CAACF;AAE7B,OAAO,MAAMG,UAAU,SAAQ;AAE/B,OAAO,MAAMC,cAAc,YAAW;AAEtC,OAAO,MAAMC,kBAAkB,OAAO,EAAEC,GAAG,EAAmC;IAC5E,MAAMC,SAASD,IAAIE,OAAO,CAACD,MAAM;IAEjC,IAAIA,OAAOE,KAAK,CAACC,IAAI,CAACC,kBAAkB,KAAK,OAAO;QAClD,OAAOhB,aAAaiB,IAAI,CAAC;YAAEC,OAAO,CAAC,8BAA8B,CAAC;QAAC,GAAG;YAAEC,QAAQ;QAAI;IACtF;IAEA,IAAI;QACF,MAAM,EAAEC,YAAY,EAAE,GAAG,IAAIC,IAAIV,IAAIL,GAAG;QAExC,MAAMgB,WAAWF,aAAaG,GAAG,CAAC;QAClC,MAAMC,QAAQF,WAAWF,aAAaK,GAAG,CAAC,UAAUC,MAAM,GAAG,OAAO;QACpE,MAAMC,YAAYP,aAAaG,GAAG,CAAC;QACnC,MAAMK,SAASD,YAAYP,aAAaK,GAAG,CAAC,WAAWC,MAAM,GAAG,KAAKG,QAAQ,KAAK,OAAO;QACzF,MAAMC,cAAcV,aAAaG,GAAG,CAAC,iBAAiBH,aAAaK,GAAG,CAAC,iBAAiB;QACxF,MAAMM,OAAOnB,OAAOE,KAAK,EAAEkB,YAAYC,UAAUF,QAAQlC;QAEzD,IAAIqC;QAEJ,IAAI;YACF,kDAAkD;YAClD,qDAAqD;YACrD,+DAA+D;YAC/DA,WAAWpC,GAAGqC,QAAQ,CAAClC,KAAKmC,IAAI,CAAC7B,SAAS;QAC5C,EAAE,OAAO8B,GAAG;YACVC,QAAQpB,KAAK,CAAC,CAAC,yCAAyC,EAAEmB,EAAEE,OAAO,CAAC,CAAC,EAAE,iCAAiC;;QAC1G;QAEA,MAAMC,aAAa;QAEnB,OAAO,IAAIzC,4BAEP,KAACK;YACC2B,MAAMA;YACND,aAAaA;YACbU,YAAYA;YACZZ,QAAQA;YACRJ,OAAOA;YAGX;YACE,GAAIU,WACA;gBACEO,OAAO;oBACL;wBACEC,MAAM;wBACNC,MAAM,MAAMT;wBACZU,OAAO;wBACPC,QAAQ;oBACV;iBACD;YACH,IACA,CAAC,CAAC;YACNC,QAAQ;YACRC,OAAO;QACT;IAEJ,EAAE,OAAOV,GAAQ;QACfC,QAAQpB,KAAK,CAAC,CAAC,EAAEmB,EAAEE,OAAO,CAAC,CAAC,EAAE,iCAAiC;;QAC/D,OAAOvC,aAAaiB,IAAI,CAAC;YAAEC,OAAO,CAAC,uBAAuB,EAAEmB,EAAEE,OAAO,CAAC,CAAC;QAAC,GAAG;YAAEpB,QAAQ;QAAI;IAC3F;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"addDataAndFileToRequest.d.ts","sourceRoot":"","sources":["../../src/utilities/addDataAndFileToRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAWvE,KAAK,UAAU,GAAG,cAAc,GAAG,kBAAkB,CAAA;AACrD,KAAK,uBAAuB,GAAG,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;AAEzF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,uBAgFrC,CAAA"}
1
+ {"version":3,"file":"addDataAndFileToRequest.d.ts","sourceRoot":"","sources":["../../src/utilities/addDataAndFileToRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAQvE,KAAK,UAAU,GAAG,cAAc,GAAG,kBAAkB,CAAA;AACrD,KAAK,uBAAuB,GAAG,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;AAEzF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,uBA+CrC,CAAA"}
@@ -1,7 +1,5 @@
1
1
  import { APIError } from 'payload/errors';
2
2
  import { fetchAPIFileUpload } from '../fetchAPI-multipart/index.js';
3
- const KB = 1024;
4
- const MB = KB * KB;
5
3
  /**
6
4
  * Mutates the Request to contain 'data' and 'file' if present
7
5
  */ export const addDataAndFileToRequest = async ({ request: incomingRequest })=>{
@@ -25,45 +23,18 @@ const MB = KB * KB;
25
23
  mutableRequest.json = ()=>Promise.resolve(data);
26
24
  }
27
25
  } else if (bodyByteSize && contentType.includes('multipart/')) {
28
- // body is <= 4MB
29
- if (bodyByteSize <= 4 * MB) {
30
- const formData = await mutableRequest.formData();
31
- mutableRequest.formData = async ()=>Promise.resolve(formData);
32
- const payloadData = formData.get('_payload');
33
- if (typeof payloadData === 'string') {
34
- mutableRequest.data = JSON.parse(payloadData);
35
- }
36
- const formFile = formData.get('file');
37
- if (formFile instanceof Blob) {
38
- const maxFileSizeLimit = config.upload.limits?.fileSize ?? undefined;
39
- if (maxFileSizeLimit === undefined || maxFileSizeLimit && formFile.size <= maxFileSizeLimit) {
40
- const fileBytes = await formFile.arrayBuffer();
41
- const buffer = Buffer.from(fileBytes);
42
- mutableRequest.file = {
43
- name: formFile.name,
44
- data: buffer,
45
- mimetype: formFile.type,
46
- size: formFile.size
47
- };
48
- } else if (config.upload?.abortOnLimit) {
49
- throw new APIError('File size limit has been reached', 413);
50
- }
51
- }
52
- } else {
53
- // body is > 4MB
54
- const { error, fields, files } = await fetchAPIFileUpload({
55
- options: config.upload,
56
- request: mutableRequest
57
- });
58
- if (error) {
59
- throw new Error(error.message);
60
- }
61
- if (files?.file) {
62
- mutableRequest.file = files.file;
63
- }
64
- if (fields?._payload && typeof fields._payload === 'string') {
65
- mutableRequest.data = JSON.parse(fields._payload);
66
- }
26
+ const { error, fields, files } = await fetchAPIFileUpload({
27
+ options: config.upload,
28
+ request: mutableRequest
29
+ });
30
+ if (error) {
31
+ throw new APIError(error.message);
32
+ }
33
+ if (files?.file) {
34
+ mutableRequest.file = files.file;
35
+ }
36
+ if (fields?._payload && typeof fields._payload === 'string') {
37
+ mutableRequest.data = JSON.parse(fields._payload);
67
38
  }
68
39
  }
69
40
  return mutableRequest;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/addDataAndFileToRequest.ts"],"sourcesContent":["import type { PayloadRequest, PayloadRequestData } from 'payload/types'\n\nimport { APIError } from 'payload/errors'\n\nimport type { FetchAPIFileUploadOptions } from '../fetchAPI-multipart/index.js'\n\nimport { fetchAPIFileUpload } from '../fetchAPI-multipart/index.js'\n\nconst KB = 1024\nconst MB = KB * KB\n\ntype ReturnType = PayloadRequest & PayloadRequestData\ntype AddDataAndFileToRequest = (args: { request: PayloadRequest }) => Promise<ReturnType>\n\n/**\n * Mutates the Request to contain 'data' and 'file' if present\n */\nexport const addDataAndFileToRequest: AddDataAndFileToRequest = async ({\n request: incomingRequest,\n}) => {\n const config = incomingRequest.payload.config\n\n if (\n incomingRequest.method &&\n ['PATCH', 'POST', 'PUT'].includes(incomingRequest.method.toUpperCase()) &&\n incomingRequest.body\n ) {\n const [contentType] = (incomingRequest.headers.get('Content-Type') || '').split(';')\n const mutableRequest = incomingRequest as ReturnType\n const bodyByteSize = parseInt(incomingRequest.headers.get('Content-Length') || '0', 10)\n\n if (contentType === 'application/json') {\n let data = {}\n try {\n data = await mutableRequest.json()\n } catch (error) {\n mutableRequest.payload.logger.error(error)\n } finally {\n mutableRequest.data = data\n mutableRequest.json = () => Promise.resolve(data)\n }\n } else if (bodyByteSize && contentType.includes('multipart/')) {\n // body is <= 4MB\n if (bodyByteSize <= 4 * MB) {\n const formData = await mutableRequest.formData()\n mutableRequest.formData = async () => Promise.resolve(formData)\n\n const payloadData = formData.get('_payload')\n if (typeof payloadData === 'string') {\n mutableRequest.data = JSON.parse(payloadData)\n }\n\n const formFile = formData.get('file')\n if (formFile instanceof Blob) {\n const maxFileSizeLimit = config.upload.limits?.fileSize ?? undefined\n if (\n maxFileSizeLimit === undefined ||\n (maxFileSizeLimit && formFile.size <= maxFileSizeLimit)\n ) {\n const fileBytes = await formFile.arrayBuffer()\n const buffer = Buffer.from(fileBytes)\n\n mutableRequest.file = {\n name: formFile.name,\n data: buffer,\n mimetype: formFile.type,\n size: formFile.size,\n }\n } else if (config.upload?.abortOnLimit) {\n throw new APIError('File size limit has been reached', 413)\n }\n }\n } else {\n // body is > 4MB\n const { error, fields, files } = await fetchAPIFileUpload({\n options: config.upload as FetchAPIFileUploadOptions,\n request: mutableRequest as Request,\n })\n\n if (error) {\n throw new Error(error.message)\n }\n\n if (files?.file) {\n mutableRequest.file = files.file\n }\n\n if (fields?._payload && typeof fields._payload === 'string') {\n mutableRequest.data = JSON.parse(fields._payload)\n }\n }\n }\n\n return mutableRequest\n }\n\n return incomingRequest\n}\n"],"names":["APIError","fetchAPIFileUpload","KB","MB","addDataAndFileToRequest","request","incomingRequest","config","payload","method","includes","toUpperCase","body","contentType","headers","get","split","mutableRequest","bodyByteSize","parseInt","data","json","error","logger","Promise","resolve","formData","payloadData","JSON","parse","formFile","Blob","maxFileSizeLimit","upload","limits","fileSize","undefined","size","fileBytes","arrayBuffer","buffer","Buffer","from","file","name","mimetype","type","abortOnLimit","fields","files","options","Error","message","_payload"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,QAAQ,QAAQ,iBAAgB;AAIzC,SAASC,kBAAkB,QAAQ,iCAAgC;AAEnE,MAAMC,KAAK;AACX,MAAMC,KAAKD,KAAKA;AAKhB;;CAEC,GACD,OAAO,MAAME,0BAAmD,OAAO,EACrEC,SAASC,eAAe,EACzB;IACC,MAAMC,SAASD,gBAAgBE,OAAO,CAACD,MAAM;IAE7C,IACED,gBAAgBG,MAAM,IACtB;QAAC;QAAS;QAAQ;KAAM,CAACC,QAAQ,CAACJ,gBAAgBG,MAAM,CAACE,WAAW,OACpEL,gBAAgBM,IAAI,EACpB;QACA,MAAM,CAACC,YAAY,GAAG,AAACP,CAAAA,gBAAgBQ,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAC,EAAGC,KAAK,CAAC;QAChF,MAAMC,iBAAiBX;QACvB,MAAMY,eAAeC,SAASb,gBAAgBQ,OAAO,CAACC,GAAG,CAAC,qBAAqB,KAAK;QAEpF,IAAIF,gBAAgB,oBAAoB;YACtC,IAAIO,OAAO,CAAC;YACZ,IAAI;gBACFA,OAAO,MAAMH,eAAeI,IAAI;YAClC,EAAE,OAAOC,OAAO;gBACdL,eAAeT,OAAO,CAACe,MAAM,CAACD,KAAK,CAACA;YACtC,SAAU;gBACRL,eAAeG,IAAI,GAAGA;gBACtBH,eAAeI,IAAI,GAAG,IAAMG,QAAQC,OAAO,CAACL;YAC9C;QACF,OAAO,IAAIF,gBAAgBL,YAAYH,QAAQ,CAAC,eAAe;YAC7D,iBAAiB;YACjB,IAAIQ,gBAAgB,IAAIf,IAAI;gBAC1B,MAAMuB,WAAW,MAAMT,eAAeS,QAAQ;gBAC9CT,eAAeS,QAAQ,GAAG,UAAYF,QAAQC,OAAO,CAACC;gBAEtD,MAAMC,cAAcD,SAASX,GAAG,CAAC;gBACjC,IAAI,OAAOY,gBAAgB,UAAU;oBACnCV,eAAeG,IAAI,GAAGQ,KAAKC,KAAK,CAACF;gBACnC;gBAEA,MAAMG,WAAWJ,SAASX,GAAG,CAAC;gBAC9B,IAAIe,oBAAoBC,MAAM;oBAC5B,MAAMC,mBAAmBzB,OAAO0B,MAAM,CAACC,MAAM,EAAEC,YAAYC;oBAC3D,IACEJ,qBAAqBI,aACpBJ,oBAAoBF,SAASO,IAAI,IAAIL,kBACtC;wBACA,MAAMM,YAAY,MAAMR,SAASS,WAAW;wBAC5C,MAAMC,SAASC,OAAOC,IAAI,CAACJ;wBAE3BrB,eAAe0B,IAAI,GAAG;4BACpBC,MAAMd,SAASc,IAAI;4BACnBxB,MAAMoB;4BACNK,UAAUf,SAASgB,IAAI;4BACvBT,MAAMP,SAASO,IAAI;wBACrB;oBACF,OAAO,IAAI9B,OAAO0B,MAAM,EAAEc,cAAc;wBACtC,MAAM,IAAI/C,SAAS,oCAAoC;oBACzD;gBACF;YACF,OAAO;gBACL,gBAAgB;gBAChB,MAAM,EAAEsB,KAAK,EAAE0B,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAMhD,mBAAmB;oBACxDiD,SAAS3C,OAAO0B,MAAM;oBACtB5B,SAASY;gBACX;gBAEA,IAAIK,OAAO;oBACT,MAAM,IAAI6B,MAAM7B,MAAM8B,OAAO;gBAC/B;gBAEA,IAAIH,OAAON,MAAM;oBACf1B,eAAe0B,IAAI,GAAGM,MAAMN,IAAI;gBAClC;gBAEA,IAAIK,QAAQK,YAAY,OAAOL,OAAOK,QAAQ,KAAK,UAAU;oBAC3DpC,eAAeG,IAAI,GAAGQ,KAAKC,KAAK,CAACmB,OAAOK,QAAQ;gBAClD;YACF;QACF;QAEA,OAAOpC;IACT;IAEA,OAAOX;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/addDataAndFileToRequest.ts"],"sourcesContent":["import type { PayloadRequest, PayloadRequestData } from 'payload/types'\n\nimport { APIError } from 'payload/errors'\n\nimport type { FetchAPIFileUploadOptions } from '../fetchAPI-multipart/index.js'\n\nimport { fetchAPIFileUpload } from '../fetchAPI-multipart/index.js'\n\ntype ReturnType = PayloadRequest & PayloadRequestData\ntype AddDataAndFileToRequest = (args: { request: PayloadRequest }) => Promise<ReturnType>\n\n/**\n * Mutates the Request to contain 'data' and 'file' if present\n */\nexport const addDataAndFileToRequest: AddDataAndFileToRequest = async ({\n request: incomingRequest,\n}) => {\n const config = incomingRequest.payload.config\n\n if (\n incomingRequest.method &&\n ['PATCH', 'POST', 'PUT'].includes(incomingRequest.method.toUpperCase()) &&\n incomingRequest.body\n ) {\n const [contentType] = (incomingRequest.headers.get('Content-Type') || '').split(';')\n const mutableRequest = incomingRequest as ReturnType\n const bodyByteSize = parseInt(incomingRequest.headers.get('Content-Length') || '0', 10)\n\n if (contentType === 'application/json') {\n let data = {}\n try {\n data = await mutableRequest.json()\n } catch (error) {\n mutableRequest.payload.logger.error(error)\n } finally {\n mutableRequest.data = data\n mutableRequest.json = () => Promise.resolve(data)\n }\n } else if (bodyByteSize && contentType.includes('multipart/')) {\n const { error, fields, files } = await fetchAPIFileUpload({\n options: config.upload as FetchAPIFileUploadOptions,\n request: mutableRequest as Request,\n })\n\n if (error) {\n throw new APIError(error.message)\n }\n\n if (files?.file) {\n mutableRequest.file = files.file\n }\n\n if (fields?._payload && typeof fields._payload === 'string') {\n mutableRequest.data = JSON.parse(fields._payload)\n }\n }\n\n return mutableRequest\n }\n\n return incomingRequest\n}\n"],"names":["APIError","fetchAPIFileUpload","addDataAndFileToRequest","request","incomingRequest","config","payload","method","includes","toUpperCase","body","contentType","headers","get","split","mutableRequest","bodyByteSize","parseInt","data","json","error","logger","Promise","resolve","fields","files","options","upload","message","file","_payload","JSON","parse"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,QAAQ,QAAQ,iBAAgB;AAIzC,SAASC,kBAAkB,QAAQ,iCAAgC;AAKnE;;CAEC,GACD,OAAO,MAAMC,0BAAmD,OAAO,EACrEC,SAASC,eAAe,EACzB;IACC,MAAMC,SAASD,gBAAgBE,OAAO,CAACD,MAAM;IAE7C,IACED,gBAAgBG,MAAM,IACtB;QAAC;QAAS;QAAQ;KAAM,CAACC,QAAQ,CAACJ,gBAAgBG,MAAM,CAACE,WAAW,OACpEL,gBAAgBM,IAAI,EACpB;QACA,MAAM,CAACC,YAAY,GAAG,AAACP,CAAAA,gBAAgBQ,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAC,EAAGC,KAAK,CAAC;QAChF,MAAMC,iBAAiBX;QACvB,MAAMY,eAAeC,SAASb,gBAAgBQ,OAAO,CAACC,GAAG,CAAC,qBAAqB,KAAK;QAEpF,IAAIF,gBAAgB,oBAAoB;YACtC,IAAIO,OAAO,CAAC;YACZ,IAAI;gBACFA,OAAO,MAAMH,eAAeI,IAAI;YAClC,EAAE,OAAOC,OAAO;gBACdL,eAAeT,OAAO,CAACe,MAAM,CAACD,KAAK,CAACA;YACtC,SAAU;gBACRL,eAAeG,IAAI,GAAGA;gBACtBH,eAAeI,IAAI,GAAG,IAAMG,QAAQC,OAAO,CAACL;YAC9C;QACF,OAAO,IAAIF,gBAAgBL,YAAYH,QAAQ,CAAC,eAAe;YAC7D,MAAM,EAAEY,KAAK,EAAEI,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAMxB,mBAAmB;gBACxDyB,SAASrB,OAAOsB,MAAM;gBACtBxB,SAASY;YACX;YAEA,IAAIK,OAAO;gBACT,MAAM,IAAIpB,SAASoB,MAAMQ,OAAO;YAClC;YAEA,IAAIH,OAAOI,MAAM;gBACfd,eAAec,IAAI,GAAGJ,MAAMI,IAAI;YAClC;YAEA,IAAIL,QAAQM,YAAY,OAAON,OAAOM,QAAQ,KAAK,UAAU;gBAC3Df,eAAeG,IAAI,GAAGa,KAAKC,KAAK,CAACR,OAAOM,QAAQ;YAClD;QACF;QAEA,OAAOf;IACT;IAEA,OAAOX;AACT,EAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { I18n } from '@payloadcms/translations';
2
2
  import type { SanitizedConfig } from 'payload/types';
3
3
  /**
4
- * In the context of NextJS, this function initializes the i18n object for the current request.
4
+ * In the context of Next.js, this function initializes the i18n object for the current request.
5
5
  *
6
6
  * It must be called on the server side, and within the lifecycle of a request since it relies on the request headers and cookies.
7
7
  */
@@ -2,7 +2,7 @@ import { initI18n } from '@payloadcms/translations';
2
2
  import { cookies, headers } from 'next/headers.js';
3
3
  import { getRequestLanguage } from './getRequestLanguage.js';
4
4
  /**
5
- * In the context of NextJS, this function initializes the i18n object for the current request.
5
+ * In the context of Next.js, this function initializes the i18n object for the current request.
6
6
  *
7
7
  * It must be called on the server side, and within the lifecycle of a request since it relies on the request headers and cookies.
8
8
  */ export const getNextRequestI18n = async ({ config })=>initI18n({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getNextRequestI18n.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { SanitizedConfig } from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { cookies, headers } from 'next/headers.js'\n\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\n/**\n * In the context of NextJS, this function initializes the i18n object for the current request.\n *\n * It must be called on the server side, and within the lifecycle of a request since it relies on the request headers and cookies.\n */\nexport const getNextRequestI18n = async ({ config }: { config: SanitizedConfig }): Promise<I18n> =>\n initI18n({\n config: config.i18n,\n context: 'client',\n language: getRequestLanguage({ config, cookies: cookies(), headers: headers() }),\n })\n"],"names":["initI18n","cookies","headers","getRequestLanguage","getNextRequestI18n","config","i18n","context","language"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,OAAO,EAAEC,OAAO,QAAQ,kBAAiB;AAElD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D;;;;CAIC,GACD,OAAO,MAAMC,qBAAqB,OAAO,EAAEC,MAAM,EAA+B,GAC9EL,SAAS;QACPK,QAAQA,OAAOC,IAAI;QACnBC,SAAS;QACTC,UAAUL,mBAAmB;YAAEE;YAAQJ,SAASA;YAAWC,SAASA;QAAU;IAChF,GAAE"}
1
+ {"version":3,"sources":["../../src/utilities/getNextRequestI18n.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { SanitizedConfig } from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { cookies, headers } from 'next/headers.js'\n\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\n/**\n * In the context of Next.js, this function initializes the i18n object for the current request.\n *\n * It must be called on the server side, and within the lifecycle of a request since it relies on the request headers and cookies.\n */\nexport const getNextRequestI18n = async ({ config }: { config: SanitizedConfig }): Promise<I18n> =>\n initI18n({\n config: config.i18n,\n context: 'client',\n language: getRequestLanguage({ config, cookies: cookies(), headers: headers() }),\n })\n"],"names":["initI18n","cookies","headers","getRequestLanguage","getNextRequestI18n","config","i18n","context","language"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,OAAO,EAAEC,OAAO,QAAQ,kBAAiB;AAElD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D;;;;CAIC,GACD,OAAO,MAAMC,qBAAqB,OAAO,EAAEC,MAAM,EAA+B,GAC9EL,SAAS;QACPK,QAAQA,OAAOC,IAAI;QACnBC,SAAS;QACTC,UAAUL,mBAAmB;YAAEE;YAAQJ,SAASA;YAAWC,SAASA;QAAU;IAChF,GAAE"}
@@ -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,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"}
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,CAyBpF,CAAA;AAED,eAAO,MAAM,aAAa,YAAmB,WAAW,KAAG,QAAQ,OAAO,CA4DzE,CAAA"}
@@ -26,9 +26,11 @@ export const reload = async (config, payload)=>{
26
26
  };
27
27
  // TODO: support HMR for other props in the future (see payload/src/index init()) hat may change on Payload singleton
28
28
  await payload.db.init();
29
- await payload.db.connect({
30
- hotReload: true
31
- });
29
+ if (payload.db.connect) {
30
+ await payload.db.connect({
31
+ hotReload: true
32
+ });
33
+ }
32
34
  };
33
35
  export const getPayloadHMR = async (options)=>{
34
36
  if (!options?.config) {
@@ -1 +1 @@
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"}
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 if (payload.db.connect) {\n await payload.db.connect({ hotReload: true })\n }\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,IAAIZ,QAAQI,EAAE,CAACS,OAAO,EAAE;QACtB,MAAMb,QAAQI,EAAE,CAACS,OAAO,CAAC;YAAEC,WAAW;QAAK;IAC7C;AACF,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getRequestLanguage.d.ts","sourceRoot":"","sources":["../../src/utilities/getRequestLanguage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAA;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIrD,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAAA;IACrD,eAAe,CAAC,EAAE,iBAAiB,CAAA;IACnC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,kBAAkB,kCAI5B,sBAAsB,KAAG,iBAmB3B,CAAA"}
1
+ {"version":3,"file":"getRequestLanguage.d.ts","sourceRoot":"","sources":["../../src/utilities/getRequestLanguage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAA;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIrD,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAAA;IACrD,eAAe,CAAC,EAAE,iBAAiB,CAAA;IACnC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,kBAAkB,kCAI5B,sBAAsB,KAAG,iBAqB3B,CAAA"}
@@ -3,10 +3,10 @@ export const getRequestLanguage = ({ config, cookies, headers })=>{
3
3
  const supportedLanguageKeys = Object.keys(config.i18n.supportedLanguages);
4
4
  const langCookie = cookies.get(`${config.cookiePrefix || 'payload'}-lng`);
5
5
  const languageFromCookie = typeof langCookie === 'string' ? langCookie : langCookie?.value;
6
- const languageFromHeader = headers.get('Accept-Language') ? extractHeaderLanguage(headers.get('Accept-Language')) : undefined;
7
6
  if (languageFromCookie && supportedLanguageKeys.includes(languageFromCookie)) {
8
7
  return languageFromCookie;
9
8
  }
9
+ const languageFromHeader = headers.get('Accept-Language') ? extractHeaderLanguage(headers.get('Accept-Language')) : undefined;
10
10
  if (languageFromHeader && supportedLanguageKeys.includes(languageFromHeader)) {
11
11
  return languageFromHeader;
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getRequestLanguage.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\nimport type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies.js'\nimport type { SanitizedConfig } from 'payload/config'\n\nimport { extractHeaderLanguage } from '@payloadcms/translations'\n\ntype GetRequestLanguageArgs = {\n config: SanitizedConfig\n cookies: Map<string, string> | ReadonlyRequestCookies\n defaultLanguage?: AcceptedLanguages\n headers: Request['headers']\n}\n\nexport const getRequestLanguage = ({\n config,\n cookies,\n headers,\n}: GetRequestLanguageArgs): AcceptedLanguages => {\n const supportedLanguageKeys = <AcceptedLanguages[]>Object.keys(config.i18n.supportedLanguages)\n const langCookie = cookies.get(`${config.cookiePrefix || 'payload'}-lng`)\n const languageFromCookie: AcceptedLanguages = (\n typeof langCookie === 'string' ? langCookie : langCookie?.value\n ) as AcceptedLanguages\n const languageFromHeader = headers.get('Accept-Language')\n ? extractHeaderLanguage(headers.get('Accept-Language'))\n : undefined\n\n if (languageFromCookie && supportedLanguageKeys.includes(languageFromCookie)) {\n return languageFromCookie\n }\n\n if (languageFromHeader && supportedLanguageKeys.includes(languageFromHeader)) {\n return languageFromHeader\n }\n\n return config.i18n.fallbackLanguage\n}\n"],"names":["extractHeaderLanguage","getRequestLanguage","config","cookies","headers","supportedLanguageKeys","Object","keys","i18n","supportedLanguages","langCookie","get","cookiePrefix","languageFromCookie","value","languageFromHeader","undefined","includes","fallbackLanguage"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAIA,SAASA,qBAAqB,QAAQ,2BAA0B;AAShE,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,MAAM,EACNC,OAAO,EACPC,OAAO,EACgB;IACvB,MAAMC,wBAA6CC,OAAOC,IAAI,CAACL,OAAOM,IAAI,CAACC,kBAAkB;IAC7F,MAAMC,aAAaP,QAAQQ,GAAG,CAAC,CAAC,EAAET,OAAOU,YAAY,IAAI,UAAU,IAAI,CAAC;IACxE,MAAMC,qBACJ,OAAOH,eAAe,WAAWA,aAAaA,YAAYI;IAE5D,MAAMC,qBAAqBX,QAAQO,GAAG,CAAC,qBACnCX,sBAAsBI,QAAQO,GAAG,CAAC,sBAClCK;IAEJ,IAAIH,sBAAsBR,sBAAsBY,QAAQ,CAACJ,qBAAqB;QAC5E,OAAOA;IACT;IAEA,IAAIE,sBAAsBV,sBAAsBY,QAAQ,CAACF,qBAAqB;QAC5E,OAAOA;IACT;IAEA,OAAOb,OAAOM,IAAI,CAACU,gBAAgB;AACrC,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/getRequestLanguage.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\nimport type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies.js'\nimport type { SanitizedConfig } from 'payload/config'\n\nimport { extractHeaderLanguage } from '@payloadcms/translations'\n\ntype GetRequestLanguageArgs = {\n config: SanitizedConfig\n cookies: Map<string, string> | ReadonlyRequestCookies\n defaultLanguage?: AcceptedLanguages\n headers: Request['headers']\n}\n\nexport const getRequestLanguage = ({\n config,\n cookies,\n headers,\n}: GetRequestLanguageArgs): AcceptedLanguages => {\n const supportedLanguageKeys = <AcceptedLanguages[]>Object.keys(config.i18n.supportedLanguages)\n const langCookie = cookies.get(`${config.cookiePrefix || 'payload'}-lng`)\n\n const languageFromCookie: AcceptedLanguages = (\n typeof langCookie === 'string' ? langCookie : langCookie?.value\n ) as AcceptedLanguages\n\n if (languageFromCookie && supportedLanguageKeys.includes(languageFromCookie)) {\n return languageFromCookie\n }\n\n const languageFromHeader = headers.get('Accept-Language')\n ? extractHeaderLanguage(headers.get('Accept-Language'))\n : undefined\n\n if (languageFromHeader && supportedLanguageKeys.includes(languageFromHeader)) {\n return languageFromHeader\n }\n\n return config.i18n.fallbackLanguage\n}\n"],"names":["extractHeaderLanguage","getRequestLanguage","config","cookies","headers","supportedLanguageKeys","Object","keys","i18n","supportedLanguages","langCookie","get","cookiePrefix","languageFromCookie","value","includes","languageFromHeader","undefined","fallbackLanguage"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAIA,SAASA,qBAAqB,QAAQ,2BAA0B;AAShE,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,MAAM,EACNC,OAAO,EACPC,OAAO,EACgB;IACvB,MAAMC,wBAA6CC,OAAOC,IAAI,CAACL,OAAOM,IAAI,CAACC,kBAAkB;IAC7F,MAAMC,aAAaP,QAAQQ,GAAG,CAAC,CAAC,EAAET,OAAOU,YAAY,IAAI,UAAU,IAAI,CAAC;IAExE,MAAMC,qBACJ,OAAOH,eAAe,WAAWA,aAAaA,YAAYI;IAG5D,IAAID,sBAAsBR,sBAAsBU,QAAQ,CAACF,qBAAqB;QAC5E,OAAOA;IACT;IAEA,MAAMG,qBAAqBZ,QAAQO,GAAG,CAAC,qBACnCX,sBAAsBI,QAAQO,GAAG,CAAC,sBAClCM;IAEJ,IAAID,sBAAsBX,sBAAsBU,QAAQ,CAACC,qBAAqB;QAC5E,OAAOA;IACT;IAEA,OAAOd,OAAOM,IAAI,CAACU,gBAAgB;AACrC,EAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Theme } from '@payloadcms/ui/providers/Theme';
2
+ import type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies.js';
3
+ import type { SanitizedConfig } from 'payload/config';
4
+ type GetRequestLanguageArgs = {
5
+ config: SanitizedConfig;
6
+ cookies: Map<string, string> | ReadonlyRequestCookies;
7
+ headers: Request['headers'];
8
+ };
9
+ export declare const getRequestTheme: ({ config, cookies, headers }: GetRequestLanguageArgs) => Theme;
10
+ export {};
11
+ //# sourceMappingURL=getRequestTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRequestTheme.d.ts","sourceRoot":"","sources":["../../src/utilities/getRequestTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAA;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIrD,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAAA;IACrD,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;CAC5B,CAAA;AAID,eAAO,MAAM,eAAe,iCAAkC,sBAAsB,KAAG,KAkBtF,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { defaultTheme } from '@payloadcms/ui/providers/Theme';
2
+ const acceptedThemes = [
3
+ 'dark',
4
+ 'light'
5
+ ];
6
+ export const getRequestTheme = ({ config, cookies, headers })=>{
7
+ const themeCookie = cookies.get(`${config.cookiePrefix || 'payload'}-theme`);
8
+ const themeFromCookie = typeof themeCookie === 'string' ? themeCookie : themeCookie?.value;
9
+ if (themeFromCookie && acceptedThemes.includes(themeFromCookie)) {
10
+ return themeFromCookie;
11
+ }
12
+ const themeFromHeader = headers.get('Sec-CH-Prefers-Color-Scheme');
13
+ if (themeFromHeader && acceptedThemes.includes(themeFromHeader)) {
14
+ return themeFromHeader;
15
+ }
16
+ return defaultTheme;
17
+ };
18
+
19
+ //# sourceMappingURL=getRequestTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/getRequestTheme.ts"],"sourcesContent":["import type { Theme } from '@payloadcms/ui/providers/Theme'\nimport type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies.js'\nimport type { SanitizedConfig } from 'payload/config'\n\nimport { defaultTheme } from '@payloadcms/ui/providers/Theme'\n\ntype GetRequestLanguageArgs = {\n config: SanitizedConfig\n cookies: Map<string, string> | ReadonlyRequestCookies\n headers: Request['headers']\n}\n\nconst acceptedThemes: Theme[] = ['dark', 'light']\n\nexport const getRequestTheme = ({ config, cookies, headers }: GetRequestLanguageArgs): Theme => {\n const themeCookie = cookies.get(`${config.cookiePrefix || 'payload'}-theme`)\n\n const themeFromCookie: Theme = (\n typeof themeCookie === 'string' ? themeCookie : themeCookie?.value\n ) as Theme\n\n if (themeFromCookie && acceptedThemes.includes(themeFromCookie)) {\n return themeFromCookie\n }\n\n const themeFromHeader = headers.get('Sec-CH-Prefers-Color-Scheme') as Theme\n\n if (themeFromHeader && acceptedThemes.includes(themeFromHeader)) {\n return themeFromHeader\n }\n\n return defaultTheme\n}\n"],"names":["defaultTheme","acceptedThemes","getRequestTheme","config","cookies","headers","themeCookie","get","cookiePrefix","themeFromCookie","value","includes","themeFromHeader"],"rangeMappings":";;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,YAAY,QAAQ,iCAAgC;AAQ7D,MAAMC,iBAA0B;IAAC;IAAQ;CAAQ;AAEjD,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAA0B;IAClF,MAAMC,cAAcF,QAAQG,GAAG,CAAC,CAAC,EAAEJ,OAAOK,YAAY,IAAI,UAAU,MAAM,CAAC;IAE3E,MAAMC,kBACJ,OAAOH,gBAAgB,WAAWA,cAAcA,aAAaI;IAG/D,IAAID,mBAAmBR,eAAeU,QAAQ,CAACF,kBAAkB;QAC/D,OAAOA;IACT;IAEA,MAAMG,kBAAkBP,QAAQE,GAAG,CAAC;IAEpC,IAAIK,mBAAmBX,eAAeU,QAAQ,CAACC,kBAAkB;QAC/D,OAAOA;IACT;IAEA,OAAOZ;AACT,EAAC"}
@@ -21,7 +21,7 @@ export const handleAdminPage = ({ adminRoute, config, permissions, route })=>{
21
21
  notFound();
22
22
  }
23
23
  }
24
- if (!permissions.canAccessAdmin && !isAdminAuthRoute(route, adminRoute)) {
24
+ if (!permissions.canAccessAdmin && !isAdminAuthRoute(config, route, adminRoute)) {
25
25
  notFound();
26
26
  }
27
27
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utilities/initPage/handleAdminPage.ts"],"sourcesContent":["import type { Permissions } from 'payload/auth'\nimport type {\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload/types'\n\nimport { notFound } from 'next/navigation.js'\n\nimport { isAdminAuthRoute, isAdminRoute } from './shared.js'\n\nexport const handleAdminPage = ({\n adminRoute,\n config,\n permissions,\n route,\n}: {\n adminRoute: string\n config: SanitizedConfig\n permissions: Permissions\n route: string\n}) => {\n if (isAdminRoute(route, adminRoute)) {\n const routeSegments = route.replace(adminRoute, '').split('/').filter(Boolean)\n const [entityType, entitySlug, createOrID] = routeSegments\n const collectionSlug = entityType === 'collections' ? entitySlug : undefined\n const globalSlug = entityType === 'globals' ? entitySlug : undefined\n const docID = collectionSlug && createOrID !== 'create' ? createOrID : undefined\n\n let collectionConfig: SanitizedCollectionConfig | undefined\n let globalConfig: SanitizedGlobalConfig | undefined\n\n if (collectionSlug) {\n collectionConfig = config.collections.find((collection) => collection.slug === collectionSlug)\n\n if (!collectionConfig) {\n notFound()\n }\n }\n\n if (globalSlug) {\n globalConfig = config.globals.find((global) => global.slug === globalSlug)\n\n if (!globalConfig) {\n notFound()\n }\n }\n\n if (!permissions.canAccessAdmin && !isAdminAuthRoute(route, adminRoute)) {\n notFound()\n }\n\n return {\n collectionConfig,\n docID,\n globalConfig,\n }\n }\n}\n"],"names":["notFound","isAdminAuthRoute","isAdminRoute","handleAdminPage","adminRoute","config","permissions","route","routeSegments","replace","split","filter","Boolean","entityType","entitySlug","createOrID","collectionSlug","undefined","globalSlug","docID","collectionConfig","globalConfig","collections","find","collection","slug","globals","global","canAccessAdmin"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAOA,SAASA,QAAQ,QAAQ,qBAAoB;AAE7C,SAASC,gBAAgB,EAAEC,YAAY,QAAQ,cAAa;AAE5D,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,UAAU,EACVC,MAAM,EACNC,WAAW,EACXC,KAAK,EAMN;IACC,IAAIL,aAAaK,OAAOH,aAAa;QACnC,MAAMI,gBAAgBD,MAAME,OAAO,CAACL,YAAY,IAAIM,KAAK,CAAC,KAAKC,MAAM,CAACC;QACtE,MAAM,CAACC,YAAYC,YAAYC,WAAW,GAAGP;QAC7C,MAAMQ,iBAAiBH,eAAe,gBAAgBC,aAAaG;QACnE,MAAMC,aAAaL,eAAe,YAAYC,aAAaG;QAC3D,MAAME,QAAQH,kBAAkBD,eAAe,WAAWA,aAAaE;QAEvE,IAAIG;QACJ,IAAIC;QAEJ,IAAIL,gBAAgB;YAClBI,mBAAmBf,OAAOiB,WAAW,CAACC,IAAI,CAAC,CAACC,aAAeA,WAAWC,IAAI,KAAKT;YAE/E,IAAI,CAACI,kBAAkB;gBACrBpB;YACF;QACF;QAEA,IAAIkB,YAAY;YACdG,eAAehB,OAAOqB,OAAO,CAACH,IAAI,CAAC,CAACI,SAAWA,OAAOF,IAAI,KAAKP;YAE/D,IAAI,CAACG,cAAc;gBACjBrB;YACF;QACF;QAEA,IAAI,CAACM,YAAYsB,cAAc,IAAI,CAAC3B,iBAAiBM,OAAOH,aAAa;YACvEJ;QACF;QAEA,OAAO;YACLoB;YACAD;YACAE;QACF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/utilities/initPage/handleAdminPage.ts"],"sourcesContent":["import type { Permissions } from 'payload/auth'\nimport type {\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload/types'\n\nimport { notFound } from 'next/navigation.js'\n\nimport { isAdminAuthRoute, isAdminRoute } from './shared.js'\n\nexport const handleAdminPage = ({\n adminRoute,\n config,\n permissions,\n route,\n}: {\n adminRoute: string\n config: SanitizedConfig\n permissions: Permissions\n route: string\n}) => {\n if (isAdminRoute(route, adminRoute)) {\n const routeSegments = route.replace(adminRoute, '').split('/').filter(Boolean)\n const [entityType, entitySlug, createOrID] = routeSegments\n const collectionSlug = entityType === 'collections' ? entitySlug : undefined\n const globalSlug = entityType === 'globals' ? entitySlug : undefined\n const docID = collectionSlug && createOrID !== 'create' ? createOrID : undefined\n\n let collectionConfig: SanitizedCollectionConfig | undefined\n let globalConfig: SanitizedGlobalConfig | undefined\n\n if (collectionSlug) {\n collectionConfig = config.collections.find((collection) => collection.slug === collectionSlug)\n\n if (!collectionConfig) {\n notFound()\n }\n }\n\n if (globalSlug) {\n globalConfig = config.globals.find((global) => global.slug === globalSlug)\n\n if (!globalConfig) {\n notFound()\n }\n }\n\n if (!permissions.canAccessAdmin && !isAdminAuthRoute(config, route, adminRoute)) {\n notFound()\n }\n\n return {\n collectionConfig,\n docID,\n globalConfig,\n }\n }\n}\n"],"names":["notFound","isAdminAuthRoute","isAdminRoute","handleAdminPage","adminRoute","config","permissions","route","routeSegments","replace","split","filter","Boolean","entityType","entitySlug","createOrID","collectionSlug","undefined","globalSlug","docID","collectionConfig","globalConfig","collections","find","collection","slug","globals","global","canAccessAdmin"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAOA,SAASA,QAAQ,QAAQ,qBAAoB;AAE7C,SAASC,gBAAgB,EAAEC,YAAY,QAAQ,cAAa;AAE5D,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,UAAU,EACVC,MAAM,EACNC,WAAW,EACXC,KAAK,EAMN;IACC,IAAIL,aAAaK,OAAOH,aAAa;QACnC,MAAMI,gBAAgBD,MAAME,OAAO,CAACL,YAAY,IAAIM,KAAK,CAAC,KAAKC,MAAM,CAACC;QACtE,MAAM,CAACC,YAAYC,YAAYC,WAAW,GAAGP;QAC7C,MAAMQ,iBAAiBH,eAAe,gBAAgBC,aAAaG;QACnE,MAAMC,aAAaL,eAAe,YAAYC,aAAaG;QAC3D,MAAME,QAAQH,kBAAkBD,eAAe,WAAWA,aAAaE;QAEvE,IAAIG;QACJ,IAAIC;QAEJ,IAAIL,gBAAgB;YAClBI,mBAAmBf,OAAOiB,WAAW,CAACC,IAAI,CAAC,CAACC,aAAeA,WAAWC,IAAI,KAAKT;YAE/E,IAAI,CAACI,kBAAkB;gBACrBpB;YACF;QACF;QAEA,IAAIkB,YAAY;YACdG,eAAehB,OAAOqB,OAAO,CAACH,IAAI,CAAC,CAACI,SAAWA,OAAOF,IAAI,KAAKP;YAE/D,IAAI,CAACG,cAAc;gBACjBrB;YACF;QACF;QAEA,IAAI,CAACM,YAAYsB,cAAc,IAAI,CAAC3B,iBAAiBI,QAAQE,OAAOH,aAAa;YAC/EJ;QACF;QAEA,OAAO;YACLoB;YACAD;YACAE;QACF;IACF;AACF,EAAC"}
@@ -1,5 +1,5 @@
1
- export declare const handleAuthRedirect: ({ adminRoute, redirectUnauthenticatedUser, route, searchParams, }: {
2
- adminRoute: string;
1
+ export declare const handleAuthRedirect: ({ config, redirectUnauthenticatedUser, route, searchParams, }: {
2
+ config;
3
3
  redirectUnauthenticatedUser: boolean | string;
4
4
  route: string;
5
5
  searchParams: {
@@ -1 +1 @@
1
- {"version":3,"file":"handleAuthRedirect.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,kBAAkB,sEAK5B;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,2BAA2B,EAAE,OAAO,GAAG,MAAM,CAAA;IAC7C,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CACnD,SA+BA,CAAA"}
1
+ {"version":3,"file":"handleAuthRedirect.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,kBAAkB,kEAK5B;IACD,MAAM,CAAA;IACN,2BAA2B,EAAE,OAAO,GAAG,MAAM,CAAA;IAC7C,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CACnD,SAsCA,CAAA"}
@@ -1,15 +1,16 @@
1
1
  import { redirect } from 'next/navigation.js';
2
2
  import QueryString from 'qs';
3
3
  import { isAdminAuthRoute, isAdminRoute } from './shared.js';
4
- export const handleAuthRedirect = ({ adminRoute, redirectUnauthenticatedUser, route, searchParams })=>{
5
- if (!isAdminAuthRoute(route, adminRoute)) {
4
+ export const handleAuthRedirect = ({ config, redirectUnauthenticatedUser, route, searchParams })=>{
5
+ const { admin: { routes: { login: loginRouteFromConfig } }, routes: { admin: adminRoute } } = config;
6
+ if (!isAdminAuthRoute(config, route, adminRoute)) {
6
7
  if (searchParams && 'redirect' in searchParams) delete searchParams.redirect;
7
8
  const redirectRoute = encodeURIComponent(route + Object.keys(searchParams ?? {}).length ? `${QueryString.stringify(searchParams, {
8
9
  addQueryPrefix: true
9
10
  })}` : undefined);
10
- const adminLoginRoute = `${adminRoute}/login`;
11
+ const adminLoginRoute = `${adminRoute}${loginRouteFromConfig}`;
11
12
  const customLoginRoute = typeof redirectUnauthenticatedUser === 'string' ? redirectUnauthenticatedUser : undefined;
12
- const loginRoute = isAdminRoute(route, adminRoute) ? adminLoginRoute : customLoginRoute || '/login';
13
+ const loginRoute = isAdminRoute(route, adminRoute) ? adminLoginRoute : customLoginRoute || loginRouteFromConfig;
13
14
  const parsedLoginRouteSearchParams = QueryString.parse(loginRoute.split('?')[1] ?? '');
14
15
  const searchParamsWithRedirect = `${QueryString.stringify({
15
16
  ...parsedLoginRouteSearchParams,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"sourcesContent":["import { redirect } from 'next/navigation.js'\nimport QueryString from 'qs'\n\nimport { isAdminAuthRoute, isAdminRoute } from './shared.js'\n\nexport const handleAuthRedirect = ({\n adminRoute,\n redirectUnauthenticatedUser,\n route,\n searchParams,\n}: {\n adminRoute: string\n redirectUnauthenticatedUser: boolean | string\n route: string\n searchParams: { [key: string]: string | string[] }\n}) => {\n if (!isAdminAuthRoute(route, adminRoute)) {\n if (searchParams && 'redirect' in searchParams) delete searchParams.redirect\n\n const redirectRoute = encodeURIComponent(\n route + Object.keys(searchParams ?? {}).length\n ? `${QueryString.stringify(searchParams, { addQueryPrefix: true })}`\n : undefined,\n )\n\n const adminLoginRoute = `${adminRoute}/login`\n\n const customLoginRoute =\n typeof redirectUnauthenticatedUser === 'string' ? redirectUnauthenticatedUser : undefined\n\n const loginRoute = isAdminRoute(route, adminRoute)\n ? adminLoginRoute\n : customLoginRoute || '/login'\n\n const parsedLoginRouteSearchParams = QueryString.parse(loginRoute.split('?')[1] ?? '')\n\n const searchParamsWithRedirect = `${QueryString.stringify(\n {\n ...parsedLoginRouteSearchParams,\n ...(redirectRoute ? { redirect: redirectRoute } : {}),\n },\n { addQueryPrefix: true },\n )}`\n\n redirect(`${loginRoute.split('?')[0]}${searchParamsWithRedirect}`)\n }\n}\n"],"names":["redirect","QueryString","isAdminAuthRoute","isAdminRoute","handleAuthRedirect","adminRoute","redirectUnauthenticatedUser","route","searchParams","redirectRoute","encodeURIComponent","Object","keys","length","stringify","addQueryPrefix","undefined","adminLoginRoute","customLoginRoute","loginRoute","parsedLoginRouteSearchParams","parse","split","searchParamsWithRedirect"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,QAAQ,QAAQ,qBAAoB;AAC7C,OAAOC,iBAAiB,KAAI;AAE5B,SAASC,gBAAgB,EAAEC,YAAY,QAAQ,cAAa;AAE5D,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,UAAU,EACVC,2BAA2B,EAC3BC,KAAK,EACLC,YAAY,EAMb;IACC,IAAI,CAACN,iBAAiBK,OAAOF,aAAa;QACxC,IAAIG,gBAAgB,cAAcA,cAAc,OAAOA,aAAaR,QAAQ;QAE5E,MAAMS,gBAAgBC,mBACpBH,QAAQI,OAAOC,IAAI,CAACJ,gBAAgB,CAAC,GAAGK,MAAM,GAC1C,CAAC,EAAEZ,YAAYa,SAAS,CAACN,cAAc;YAAEO,gBAAgB;QAAK,GAAG,CAAC,GAClEC;QAGN,MAAMC,kBAAkB,CAAC,EAAEZ,WAAW,MAAM,CAAC;QAE7C,MAAMa,mBACJ,OAAOZ,gCAAgC,WAAWA,8BAA8BU;QAElF,MAAMG,aAAahB,aAAaI,OAAOF,cACnCY,kBACAC,oBAAoB;QAExB,MAAME,+BAA+BnB,YAAYoB,KAAK,CAACF,WAAWG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI;QAEnF,MAAMC,2BAA2B,CAAC,EAAEtB,YAAYa,SAAS,CACvD;YACE,GAAGM,4BAA4B;YAC/B,GAAIX,gBAAgB;gBAAET,UAAUS;YAAc,IAAI,CAAC,CAAC;QACtD,GACA;YAAEM,gBAAgB;QAAK,GACvB,CAAC;QAEHf,SAAS,CAAC,EAAEmB,WAAWG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAEC,yBAAyB,CAAC;IACnE;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"sourcesContent":["import { redirect } from 'next/navigation.js'\nimport QueryString from 'qs'\n\nimport { isAdminAuthRoute, isAdminRoute } from './shared.js'\n\nexport const handleAuthRedirect = ({\n config,\n redirectUnauthenticatedUser,\n route,\n searchParams,\n}: {\n config\n redirectUnauthenticatedUser: boolean | string\n route: string\n searchParams: { [key: string]: string | string[] }\n}) => {\n const {\n admin: {\n routes: { login: loginRouteFromConfig },\n },\n routes: { admin: adminRoute },\n } = config\n\n if (!isAdminAuthRoute(config, route, adminRoute)) {\n if (searchParams && 'redirect' in searchParams) delete searchParams.redirect\n\n const redirectRoute = encodeURIComponent(\n route + Object.keys(searchParams ?? {}).length\n ? `${QueryString.stringify(searchParams, { addQueryPrefix: true })}`\n : undefined,\n )\n\n const adminLoginRoute = `${adminRoute}${loginRouteFromConfig}`\n\n const customLoginRoute =\n typeof redirectUnauthenticatedUser === 'string' ? redirectUnauthenticatedUser : undefined\n\n const loginRoute = isAdminRoute(route, adminRoute)\n ? adminLoginRoute\n : customLoginRoute || loginRouteFromConfig\n\n const parsedLoginRouteSearchParams = QueryString.parse(loginRoute.split('?')[1] ?? '')\n\n const searchParamsWithRedirect = `${QueryString.stringify(\n {\n ...parsedLoginRouteSearchParams,\n ...(redirectRoute ? { redirect: redirectRoute } : {}),\n },\n { addQueryPrefix: true },\n )}`\n\n redirect(`${loginRoute.split('?')[0]}${searchParamsWithRedirect}`)\n }\n}\n"],"names":["redirect","QueryString","isAdminAuthRoute","isAdminRoute","handleAuthRedirect","config","redirectUnauthenticatedUser","route","searchParams","admin","routes","login","loginRouteFromConfig","adminRoute","redirectRoute","encodeURIComponent","Object","keys","length","stringify","addQueryPrefix","undefined","adminLoginRoute","customLoginRoute","loginRoute","parsedLoginRouteSearchParams","parse","split","searchParamsWithRedirect"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,QAAQ,QAAQ,qBAAoB;AAC7C,OAAOC,iBAAiB,KAAI;AAE5B,SAASC,gBAAgB,EAAEC,YAAY,QAAQ,cAAa;AAE5D,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,MAAM,EACNC,2BAA2B,EAC3BC,KAAK,EACLC,YAAY,EAMb;IACC,MAAM,EACJC,OAAO,EACLC,QAAQ,EAAEC,OAAOC,oBAAoB,EAAE,EACxC,EACDF,QAAQ,EAAED,OAAOI,UAAU,EAAE,EAC9B,GAAGR;IAEJ,IAAI,CAACH,iBAAiBG,QAAQE,OAAOM,aAAa;QAChD,IAAIL,gBAAgB,cAAcA,cAAc,OAAOA,aAAaR,QAAQ;QAE5E,MAAMc,gBAAgBC,mBACpBR,QAAQS,OAAOC,IAAI,CAACT,gBAAgB,CAAC,GAAGU,MAAM,GAC1C,CAAC,EAAEjB,YAAYkB,SAAS,CAACX,cAAc;YAAEY,gBAAgB;QAAK,GAAG,CAAC,GAClEC;QAGN,MAAMC,kBAAkB,CAAC,EAAET,WAAW,EAAED,qBAAqB,CAAC;QAE9D,MAAMW,mBACJ,OAAOjB,gCAAgC,WAAWA,8BAA8Be;QAElF,MAAMG,aAAarB,aAAaI,OAAOM,cACnCS,kBACAC,oBAAoBX;QAExB,MAAMa,+BAA+BxB,YAAYyB,KAAK,CAACF,WAAWG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI;QAEnF,MAAMC,2BAA2B,CAAC,EAAE3B,YAAYkB,SAAS,CACvD;YACE,GAAGM,4BAA4B;YAC/B,GAAIX,gBAAgB;gBAAEd,UAAUc;YAAc,IAAI,CAAC,CAAC;QACtD,GACA;YAAEM,gBAAgB;QAAK,GACvB,CAAC;QAEHpB,SAAS,CAAC,EAAEwB,WAAWG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAEC,yBAAyB,CAAC;IACnE;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,eAAe,CAAA;AAS5F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAOtC,eAAO,MAAM,QAAQ,iFAKlB,IAAI,KAAG,QAAQ,cAAc,CAmF/B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,eAAe,CAAA;AAS5F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAOtC,eAAO,MAAM,QAAQ,iFAKlB,IAAI,KAAG,QAAQ,cAAc,CAmG/B,CAAA"}
@@ -32,10 +32,20 @@ export const initPage = async ({ config: configPromise, redirectUnauthenticatedU
32
32
  context: 'client',
33
33
  language
34
34
  });
35
+ const languageOptions = Object.entries(payload.config.i18n.supportedLanguages || {}).reduce((acc, [language, languageConfig])=>{
36
+ if (Object.keys(payload.config.i18n.supportedLanguages).includes(language)) {
37
+ acc.push({
38
+ label: languageConfig.translations.general.thisLanguage,
39
+ value: language
40
+ });
41
+ }
42
+ return acc;
43
+ }, []);
35
44
  const req = await createLocalReq({
36
45
  fallbackLocale: null,
37
46
  locale: locale.code,
38
47
  req: {
48
+ host: headers.get('host'),
39
49
  i18n,
40
50
  query: qs.parse(queryString, {
41
51
  depth: 10,
@@ -61,7 +71,7 @@ export const initPage = async ({ config: configPromise, redirectUnauthenticatedU
61
71
  };
62
72
  if (redirectUnauthenticatedUser && !user) {
63
73
  handleAuthRedirect({
64
- adminRoute,
74
+ config: payload.config,
65
75
  redirectUnauthenticatedUser,
66
76
  route,
67
77
  searchParams
@@ -78,6 +88,7 @@ export const initPage = async ({ config: configPromise, redirectUnauthenticatedU
78
88
  cookies,
79
89
  docID,
80
90
  globalConfig,
91
+ languageOptions,
81
92
  locale,
82
93
  permissions,
83
94
  req,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utilities/initPage/index.ts"],"sourcesContent":["import type { InitPageResult, PayloadRequestWithData, VisibleEntities } from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { findLocaleFromCode } from '@payloadcms/ui/utilities/findLocaleFromCode'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { parseCookies } from 'payload/auth'\nimport { createLocalReq, isEntityHidden } from 'payload/utilities'\nimport qs from 'qs'\n\nimport type { Args } from './types.js'\n\nimport { getPayloadHMR } from '../getPayloadHMR.js'\nimport { getRequestLanguage } from '../getRequestLanguage.js'\nimport { handleAdminPage } from './handleAdminPage.js'\nimport { handleAuthRedirect } from './handleAuthRedirect.js'\n\nexport const initPage = async ({\n config: configPromise,\n redirectUnauthenticatedUser = false,\n route,\n searchParams,\n}: Args): Promise<InitPageResult> => {\n const headers = getHeaders()\n const localeParam = searchParams?.locale as string\n const payload = await getPayloadHMR({ config: configPromise })\n\n const {\n collections,\n globals,\n i18n: i18nConfig,\n localization,\n routes: { admin: adminRoute },\n } = payload.config\n\n const queryString = `${qs.stringify(searchParams ?? {}, { addQueryPrefix: true })}`\n const defaultLocale =\n localization && localization.defaultLocale ? localization.defaultLocale : 'en'\n const localeCode = localeParam || defaultLocale\n const locale = localization && findLocaleFromCode(localization, localeCode)\n const cookies = parseCookies(headers)\n const language = getRequestLanguage({ config: payload.config, cookies, headers })\n\n const i18n = await initI18n({\n config: i18nConfig,\n context: 'client',\n language,\n })\n\n const req = await createLocalReq(\n {\n fallbackLocale: null,\n locale: locale.code,\n req: {\n i18n,\n query: qs.parse(queryString, {\n depth: 10,\n ignoreQueryPrefix: true,\n }),\n url: `${payload.config.serverURL}${route}${searchParams ? queryString : ''}`,\n } as PayloadRequestWithData,\n },\n payload,\n )\n\n const { permissions, user } = await payload.auth({ headers, req })\n\n req.user = user\n\n const visibleEntities: VisibleEntities = {\n collections: collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n if (redirectUnauthenticatedUser && !user) {\n handleAuthRedirect({\n adminRoute,\n redirectUnauthenticatedUser,\n route,\n searchParams,\n })\n }\n\n const { collectionConfig, docID, globalConfig } = handleAdminPage({\n adminRoute,\n config: payload.config,\n permissions,\n route,\n })\n\n return {\n collectionConfig,\n cookies,\n docID,\n globalConfig,\n locale,\n permissions,\n req,\n translations: i18n.translations,\n visibleEntities,\n }\n}\n"],"names":["initI18n","findLocaleFromCode","headers","getHeaders","parseCookies","createLocalReq","isEntityHidden","qs","getPayloadHMR","getRequestLanguage","handleAdminPage","handleAuthRedirect","initPage","config","configPromise","redirectUnauthenticatedUser","route","searchParams","localeParam","locale","payload","collections","globals","i18n","i18nConfig","localization","routes","admin","adminRoute","queryString","stringify","addQueryPrefix","defaultLocale","localeCode","cookies","language","context","req","fallbackLocale","code","query","parse","depth","ignoreQueryPrefix","url","serverURL","permissions","user","auth","visibleEntities","map","slug","hidden","filter","Boolean","collectionConfig","docID","globalConfig","translations"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,kBAAkB,QAAQ,8CAA6C;AAChF,SAASC,WAAWC,UAAU,QAAQ,kBAAiB;AACvD,SAASC,YAAY,QAAQ,eAAc;AAC3C,SAASC,cAAc,EAAEC,cAAc,QAAQ,oBAAmB;AAClE,OAAOC,QAAQ,KAAI;AAInB,SAASC,aAAa,QAAQ,sBAAqB;AACnD,SAASC,kBAAkB,QAAQ,2BAA0B;AAC7D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D,OAAO,MAAMC,WAAW,OAAO,EAC7BC,QAAQC,aAAa,EACrBC,8BAA8B,KAAK,EACnCC,KAAK,EACLC,YAAY,EACP;IACL,MAAMf,UAAUC;IAChB,MAAMe,cAAcD,cAAcE;IAClC,MAAMC,UAAU,MAAMZ,cAAc;QAAEK,QAAQC;IAAc;IAE5D,MAAM,EACJO,WAAW,EACXC,OAAO,EACPC,MAAMC,UAAU,EAChBC,YAAY,EACZC,QAAQ,EAAEC,OAAOC,UAAU,EAAE,EAC9B,GAAGR,QAAQP,MAAM;IAElB,MAAMgB,cAAc,CAAC,EAAEtB,GAAGuB,SAAS,CAACb,gBAAgB,CAAC,GAAG;QAAEc,gBAAgB;IAAK,GAAG,CAAC;IACnF,MAAMC,gBACJP,gBAAgBA,aAAaO,aAAa,GAAGP,aAAaO,aAAa,GAAG;IAC5E,MAAMC,aAAaf,eAAec;IAClC,MAAMb,SAASM,gBAAgBxB,mBAAmBwB,cAAcQ;IAChE,MAAMC,UAAU9B,aAAaF;IAC7B,MAAMiC,WAAW1B,mBAAmB;QAAEI,QAAQO,QAAQP,MAAM;QAAEqB;QAAShC;IAAQ;IAE/E,MAAMqB,OAAO,MAAMvB,SAAS;QAC1Ba,QAAQW;QACRY,SAAS;QACTD;IACF;IAEA,MAAME,MAAM,MAAMhC,eAChB;QACEiC,gBAAgB;QAChBnB,QAAQA,OAAOoB,IAAI;QACnBF,KAAK;YACHd;YACAiB,OAAOjC,GAAGkC,KAAK,CAACZ,aAAa;gBAC3Ba,OAAO;gBACPC,mBAAmB;YACrB;YACAC,KAAK,CAAC,EAAExB,QAAQP,MAAM,CAACgC,SAAS,CAAC,EAAE7B,MAAM,EAAEC,eAAeY,cAAc,GAAG,CAAC;QAC9E;IACF,GACAT;IAGF,MAAM,EAAE0B,WAAW,EAAEC,IAAI,EAAE,GAAG,MAAM3B,QAAQ4B,IAAI,CAAC;QAAE9C;QAASmC;IAAI;IAEhEA,IAAIU,IAAI,GAAGA;IAEX,MAAME,kBAAmC;QACvC5B,aAAaA,YACV6B,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAExB,OAAO,EAAEyB,MAAM,EAAE,EAAE,GAAM,CAAC9C,eAAe;gBAAE8C;gBAAQL;YAAK,KAAKI,OAAO,MACjFE,MAAM,CAACC;QACVhC,SAASA,QACN4B,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAExB,OAAO,EAAEyB,MAAM,EAAE,EAAE,GAAM,CAAC9C,eAAe;gBAAE8C;gBAAQL;YAAK,KAAKI,OAAO,MACjFE,MAAM,CAACC;IACZ;IAEA,IAAIvC,+BAA+B,CAACgC,MAAM;QACxCpC,mBAAmB;YACjBiB;YACAb;YACAC;YACAC;QACF;IACF;IAEA,MAAM,EAAEsC,gBAAgB,EAAEC,KAAK,EAAEC,YAAY,EAAE,GAAG/C,gBAAgB;QAChEkB;QACAf,QAAQO,QAAQP,MAAM;QACtBiC;QACA9B;IACF;IAEA,OAAO;QACLuC;QACArB;QACAsB;QACAC;QACAtC;QACA2B;QACAT;QACAqB,cAAcnC,KAAKmC,YAAY;QAC/BT;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/utilities/initPage/index.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { InitPageResult, PayloadRequestWithData, VisibleEntities } from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { findLocaleFromCode } from '@payloadcms/ui/utilities/findLocaleFromCode'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { parseCookies } from 'payload/auth'\nimport { createLocalReq, isEntityHidden } from 'payload/utilities'\nimport qs from 'qs'\n\nimport type { Args } from './types.js'\n\nimport { getPayloadHMR } from '../getPayloadHMR.js'\nimport { getRequestLanguage } from '../getRequestLanguage.js'\nimport { handleAdminPage } from './handleAdminPage.js'\nimport { handleAuthRedirect } from './handleAuthRedirect.js'\n\nexport const initPage = async ({\n config: configPromise,\n redirectUnauthenticatedUser = false,\n route,\n searchParams,\n}: Args): Promise<InitPageResult> => {\n const headers = getHeaders()\n const localeParam = searchParams?.locale as string\n const payload = await getPayloadHMR({ config: configPromise })\n\n const {\n collections,\n globals,\n i18n: i18nConfig,\n localization,\n routes: { admin: adminRoute },\n } = payload.config\n\n const queryString = `${qs.stringify(searchParams ?? {}, { addQueryPrefix: true })}`\n const defaultLocale =\n localization && localization.defaultLocale ? localization.defaultLocale : 'en'\n const localeCode = localeParam || defaultLocale\n const locale = localization && findLocaleFromCode(localization, localeCode)\n const cookies = parseCookies(headers)\n const language = getRequestLanguage({ config: payload.config, cookies, headers })\n\n const i18n: I18nClient = await initI18n({\n config: i18nConfig,\n context: 'client',\n language,\n })\n\n const languageOptions = Object.entries(payload.config.i18n.supportedLanguages || {}).reduce(\n (acc, [language, languageConfig]) => {\n if (Object.keys(payload.config.i18n.supportedLanguages).includes(language)) {\n acc.push({\n label: languageConfig.translations.general.thisLanguage,\n value: language,\n })\n }\n\n return acc\n },\n [],\n )\n\n const req = await createLocalReq(\n {\n fallbackLocale: null,\n locale: locale.code,\n req: {\n host: headers.get('host'),\n i18n,\n query: qs.parse(queryString, {\n depth: 10,\n ignoreQueryPrefix: true,\n }),\n url: `${payload.config.serverURL}${route}${searchParams ? queryString : ''}`,\n } as PayloadRequestWithData,\n },\n payload,\n )\n\n const { permissions, user } = await payload.auth({ headers, req })\n\n req.user = user\n\n const visibleEntities: VisibleEntities = {\n collections: collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n if (redirectUnauthenticatedUser && !user) {\n handleAuthRedirect({\n config: payload.config,\n redirectUnauthenticatedUser,\n route,\n searchParams,\n })\n }\n\n const { collectionConfig, docID, globalConfig } = handleAdminPage({\n adminRoute,\n config: payload.config,\n permissions,\n route,\n })\n\n return {\n collectionConfig,\n cookies,\n docID,\n globalConfig,\n languageOptions,\n locale,\n permissions,\n req,\n translations: i18n.translations,\n visibleEntities,\n }\n}\n"],"names":["initI18n","findLocaleFromCode","headers","getHeaders","parseCookies","createLocalReq","isEntityHidden","qs","getPayloadHMR","getRequestLanguage","handleAdminPage","handleAuthRedirect","initPage","config","configPromise","redirectUnauthenticatedUser","route","searchParams","localeParam","locale","payload","collections","globals","i18n","i18nConfig","localization","routes","admin","adminRoute","queryString","stringify","addQueryPrefix","defaultLocale","localeCode","cookies","language","context","languageOptions","Object","entries","supportedLanguages","reduce","acc","languageConfig","keys","includes","push","label","translations","general","thisLanguage","value","req","fallbackLocale","code","host","get","query","parse","depth","ignoreQueryPrefix","url","serverURL","permissions","user","auth","visibleEntities","map","slug","hidden","filter","Boolean","collectionConfig","docID","globalConfig"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,kBAAkB,QAAQ,8CAA6C;AAChF,SAASC,WAAWC,UAAU,QAAQ,kBAAiB;AACvD,SAASC,YAAY,QAAQ,eAAc;AAC3C,SAASC,cAAc,EAAEC,cAAc,QAAQ,oBAAmB;AAClE,OAAOC,QAAQ,KAAI;AAInB,SAASC,aAAa,QAAQ,sBAAqB;AACnD,SAASC,kBAAkB,QAAQ,2BAA0B;AAC7D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D,OAAO,MAAMC,WAAW,OAAO,EAC7BC,QAAQC,aAAa,EACrBC,8BAA8B,KAAK,EACnCC,KAAK,EACLC,YAAY,EACP;IACL,MAAMf,UAAUC;IAChB,MAAMe,cAAcD,cAAcE;IAClC,MAAMC,UAAU,MAAMZ,cAAc;QAAEK,QAAQC;IAAc;IAE5D,MAAM,EACJO,WAAW,EACXC,OAAO,EACPC,MAAMC,UAAU,EAChBC,YAAY,EACZC,QAAQ,EAAEC,OAAOC,UAAU,EAAE,EAC9B,GAAGR,QAAQP,MAAM;IAElB,MAAMgB,cAAc,CAAC,EAAEtB,GAAGuB,SAAS,CAACb,gBAAgB,CAAC,GAAG;QAAEc,gBAAgB;IAAK,GAAG,CAAC;IACnF,MAAMC,gBACJP,gBAAgBA,aAAaO,aAAa,GAAGP,aAAaO,aAAa,GAAG;IAC5E,MAAMC,aAAaf,eAAec;IAClC,MAAMb,SAASM,gBAAgBxB,mBAAmBwB,cAAcQ;IAChE,MAAMC,UAAU9B,aAAaF;IAC7B,MAAMiC,WAAW1B,mBAAmB;QAAEI,QAAQO,QAAQP,MAAM;QAAEqB;QAAShC;IAAQ;IAE/E,MAAMqB,OAAmB,MAAMvB,SAAS;QACtCa,QAAQW;QACRY,SAAS;QACTD;IACF;IAEA,MAAME,kBAAkBC,OAAOC,OAAO,CAACnB,QAAQP,MAAM,CAACU,IAAI,CAACiB,kBAAkB,IAAI,CAAC,GAAGC,MAAM,CACzF,CAACC,KAAK,CAACP,UAAUQ,eAAe;QAC9B,IAAIL,OAAOM,IAAI,CAACxB,QAAQP,MAAM,CAACU,IAAI,CAACiB,kBAAkB,EAAEK,QAAQ,CAACV,WAAW;YAC1EO,IAAII,IAAI,CAAC;gBACPC,OAAOJ,eAAeK,YAAY,CAACC,OAAO,CAACC,YAAY;gBACvDC,OAAOhB;YACT;QACF;QAEA,OAAOO;IACT,GACA,EAAE;IAGJ,MAAMU,MAAM,MAAM/C,eAChB;QACEgD,gBAAgB;QAChBlC,QAAQA,OAAOmC,IAAI;QACnBF,KAAK;YACHG,MAAMrD,QAAQsD,GAAG,CAAC;YAClBjC;YACAkC,OAAOlD,GAAGmD,KAAK,CAAC7B,aAAa;gBAC3B8B,OAAO;gBACPC,mBAAmB;YACrB;YACAC,KAAK,CAAC,EAAEzC,QAAQP,MAAM,CAACiD,SAAS,CAAC,EAAE9C,MAAM,EAAEC,eAAeY,cAAc,GAAG,CAAC;QAC9E;IACF,GACAT;IAGF,MAAM,EAAE2C,WAAW,EAAEC,IAAI,EAAE,GAAG,MAAM5C,QAAQ6C,IAAI,CAAC;QAAE/D;QAASkD;IAAI;IAEhEA,IAAIY,IAAI,GAAGA;IAEX,MAAME,kBAAmC;QACvC7C,aAAaA,YACV8C,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAEzC,OAAO,EAAE0C,MAAM,EAAE,EAAE,GAAM,CAAC/D,eAAe;gBAAE+D;gBAAQL;YAAK,KAAKI,OAAO,MACjFE,MAAM,CAACC;QACVjD,SAASA,QACN6C,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAEzC,OAAO,EAAE0C,MAAM,EAAE,EAAE,GAAM,CAAC/D,eAAe;gBAAE+D;gBAAQL;YAAK,KAAKI,OAAO,MACjFE,MAAM,CAACC;IACZ;IAEA,IAAIxD,+BAA+B,CAACiD,MAAM;QACxCrD,mBAAmB;YACjBE,QAAQO,QAAQP,MAAM;YACtBE;YACAC;YACAC;QACF;IACF;IAEA,MAAM,EAAEuD,gBAAgB,EAAEC,KAAK,EAAEC,YAAY,EAAE,GAAGhE,gBAAgB;QAChEkB;QACAf,QAAQO,QAAQP,MAAM;QACtBkD;QACA/C;IACF;IAEA,OAAO;QACLwD;QACAtC;QACAuC;QACAC;QACArC;QACAlB;QACA4C;QACAX;QACAJ,cAAczB,KAAKyB,YAAY;QAC/BkB;IACF;AACF,EAAC"}
@@ -1,4 +1,4 @@
1
- export declare const authRoutes: string[];
1
+ import type { SanitizedConfig } from 'payload/types';
2
2
  export declare const isAdminRoute: (route: string, adminRoute: string) => boolean;
3
- export declare const isAdminAuthRoute: (route: string, adminRoute: string) => boolean;
3
+ export declare const isAdminAuthRoute: (config: SanitizedConfig, route: string, adminRoute: string) => boolean;
4
4
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/shared.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,UAQtB,CAAA;AAED,eAAO,MAAM,YAAY,UAAW,MAAM,cAAc,MAAM,YAE7D,CAAA;AAED,eAAO,MAAM,gBAAgB,UAAW,MAAM,cAAc,MAAM,YAEjE,CAAA"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAYpD,eAAO,MAAM,YAAY,UAAW,MAAM,cAAc,MAAM,YAE7D,CAAA;AAED,eAAO,MAAM,gBAAgB,WAAY,eAAe,SAAS,MAAM,cAAc,MAAM,YAQ1F,CAAA"}
@@ -1,16 +1,17 @@
1
- export const authRoutes = [
2
- '/login',
3
- '/logout',
4
- '/create-first-user',
5
- '/forgot',
6
- '/reset',
7
- '/verify',
8
- '/logout-inactivity'
1
+ const authRouteKeys = [
2
+ 'createFirstUser',
3
+ 'forgot',
4
+ 'login',
5
+ 'logout',
6
+ 'forgot',
7
+ 'inactivity',
8
+ 'unauthorized'
9
9
  ];
10
10
  export const isAdminRoute = (route, adminRoute)=>{
11
11
  return route.startsWith(adminRoute);
12
12
  };
13
- export const isAdminAuthRoute = (route, adminRoute)=>{
13
+ export const isAdminAuthRoute = (config, route, adminRoute)=>{
14
+ const authRoutes = config.admin?.routes ? Object.entries(config.admin.routes).filter(([key])=>authRouteKeys.includes(key)).map(([_, value])=>value) : [];
14
15
  return authRoutes.some((r)=>route.replace(adminRoute, '').startsWith(r));
15
16
  };
16
17