@payloadcms/next 3.0.0-alpha.61 → 3.0.0-alpha.62

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 (237) hide show
  1. package/dist/cjs/withPayload.cjs +95 -0
  2. package/dist/cjs/withPayload.cjs.map +1 -0
  3. package/dist/exports/routes.d.ts +1 -1
  4. package/dist/exports/routes.d.ts.map +1 -1
  5. package/dist/exports/routes.js +1 -1
  6. package/dist/exports/routes.js.map +1 -1
  7. package/dist/exports/utilities.d.ts +4 -1
  8. package/dist/exports/utilities.d.ts.map +1 -1
  9. package/dist/exports/utilities.js +4 -1
  10. package/dist/exports/utilities.js.map +1 -1
  11. package/dist/layouts/Root/index.d.ts.map +1 -1
  12. package/dist/layouts/Root/index.js +23 -1
  13. package/dist/layouts/Root/index.js.map +1 -1
  14. package/dist/next-fileupload/handlers.js.map +1 -1
  15. package/dist/next-fileupload/isEligibleRequest.js +1 -1
  16. package/dist/next-fileupload/isEligibleRequest.js.map +1 -1
  17. package/dist/next-fileupload/processMultipart.d.ts.map +1 -1
  18. package/dist/next-fileupload/processMultipart.js +29 -6
  19. package/dist/next-fileupload/processMultipart.js.map +1 -1
  20. package/dist/next-fileupload/utilities.d.ts.map +1 -1
  21. package/dist/next-fileupload/utilities.js +4 -4
  22. package/dist/next-fileupload/utilities.js.map +1 -1
  23. package/dist/prod/styles.css +1 -1
  24. package/dist/routes/graphql/handler.d.ts.map +1 -1
  25. package/dist/routes/graphql/handler.js +8 -3
  26. package/dist/routes/graphql/handler.js.map +1 -1
  27. package/dist/routes/rest/auth/access.d.ts.map +1 -1
  28. package/dist/routes/rest/auth/access.js +5 -0
  29. package/dist/routes/rest/auth/access.js.map +1 -1
  30. package/dist/routes/rest/auth/forgotPassword.d.ts.map +1 -1
  31. package/dist/routes/rest/auth/forgotPassword.js +7 -2
  32. package/dist/routes/rest/auth/forgotPassword.js.map +1 -1
  33. package/dist/routes/rest/auth/init.d.ts.map +1 -1
  34. package/dist/routes/rest/auth/init.js +6 -0
  35. package/dist/routes/rest/auth/init.js.map +1 -1
  36. package/dist/routes/rest/auth/login.d.ts.map +1 -1
  37. package/dist/routes/rest/auth/login.js +8 -5
  38. package/dist/routes/rest/auth/login.js.map +1 -1
  39. package/dist/routes/rest/auth/logout.d.ts.map +1 -1
  40. package/dist/routes/rest/auth/logout.js +12 -7
  41. package/dist/routes/rest/auth/logout.js.map +1 -1
  42. package/dist/routes/rest/auth/me.d.ts.map +1 -1
  43. package/dist/routes/rest/auth/me.js +5 -0
  44. package/dist/routes/rest/auth/me.js.map +1 -1
  45. package/dist/routes/rest/auth/refresh.d.ts.map +1 -1
  46. package/dist/routes/rest/auth/refresh.js +11 -7
  47. package/dist/routes/rest/auth/refresh.js.map +1 -1
  48. package/dist/routes/rest/auth/registerFirstUser.d.ts.map +1 -1
  49. package/dist/routes/rest/auth/registerFirstUser.js +17 -5
  50. package/dist/routes/rest/auth/registerFirstUser.js.map +1 -1
  51. package/dist/routes/rest/auth/resetPassword.d.ts.map +1 -1
  52. package/dist/routes/rest/auth/resetPassword.js +8 -5
  53. package/dist/routes/rest/auth/resetPassword.js.map +1 -1
  54. package/dist/routes/rest/auth/unlock.d.ts.map +1 -1
  55. package/dist/routes/rest/auth/unlock.js +7 -2
  56. package/dist/routes/rest/auth/unlock.js.map +1 -1
  57. package/dist/routes/rest/auth/verifyEmail.d.ts.map +1 -1
  58. package/dist/routes/rest/auth/verifyEmail.js +7 -2
  59. package/dist/routes/rest/auth/verifyEmail.js.map +1 -1
  60. package/dist/routes/rest/buildFormState.d.ts.map +1 -1
  61. package/dist/routes/rest/buildFormState.js +16 -1
  62. package/dist/routes/rest/buildFormState.js.map +1 -1
  63. package/dist/routes/rest/collections/count.d.ts +3 -0
  64. package/dist/routes/rest/collections/count.d.ts.map +1 -0
  65. package/dist/routes/rest/collections/count.js +15 -0
  66. package/dist/routes/rest/collections/count.js.map +1 -0
  67. package/dist/routes/rest/collections/create.d.ts.map +1 -1
  68. package/dist/routes/rest/collections/create.js +5 -0
  69. package/dist/routes/rest/collections/create.js.map +1 -1
  70. package/dist/routes/rest/collections/delete.d.ts.map +1 -1
  71. package/dist/routes/rest/collections/delete.js +7 -0
  72. package/dist/routes/rest/collections/delete.js.map +1 -1
  73. package/dist/routes/rest/collections/deleteByID.d.ts.map +1 -1
  74. package/dist/routes/rest/collections/deleteByID.js +14 -1
  75. package/dist/routes/rest/collections/deleteByID.js.map +1 -1
  76. package/dist/routes/rest/collections/docAccess.d.ts.map +1 -1
  77. package/dist/routes/rest/collections/docAccess.js +5 -0
  78. package/dist/routes/rest/collections/docAccess.js.map +1 -1
  79. package/dist/routes/rest/collections/duplicate.d.ts.map +1 -1
  80. package/dist/routes/rest/collections/duplicate.js +12 -1
  81. package/dist/routes/rest/collections/duplicate.js.map +1 -1
  82. package/dist/routes/rest/collections/find.d.ts.map +1 -1
  83. package/dist/routes/rest/collections/find.js +5 -0
  84. package/dist/routes/rest/collections/find.js.map +1 -1
  85. package/dist/routes/rest/collections/findByID.d.ts.map +1 -1
  86. package/dist/routes/rest/collections/findByID.js +12 -1
  87. package/dist/routes/rest/collections/findByID.js.map +1 -1
  88. package/dist/routes/rest/collections/findVersionByID.d.ts.map +1 -1
  89. package/dist/routes/rest/collections/findVersionByID.js +12 -1
  90. package/dist/routes/rest/collections/findVersionByID.js.map +1 -1
  91. package/dist/routes/rest/collections/findVersions.d.ts.map +1 -1
  92. package/dist/routes/rest/collections/findVersions.js +5 -0
  93. package/dist/routes/rest/collections/findVersions.js.map +1 -1
  94. package/dist/routes/rest/collections/preview.d.ts.map +1 -1
  95. package/dist/routes/rest/collections/preview.js +11 -2
  96. package/dist/routes/rest/collections/preview.js.map +1 -1
  97. package/dist/routes/rest/collections/restoreVersion.d.ts.map +1 -1
  98. package/dist/routes/rest/collections/restoreVersion.js +12 -1
  99. package/dist/routes/rest/collections/restoreVersion.js.map +1 -1
  100. package/dist/routes/rest/collections/update.d.ts.map +1 -1
  101. package/dist/routes/rest/collections/update.js +7 -0
  102. package/dist/routes/rest/collections/update.js.map +1 -1
  103. package/dist/routes/rest/collections/updateByID.d.ts.map +1 -1
  104. package/dist/routes/rest/collections/updateByID.js +12 -1
  105. package/dist/routes/rest/collections/updateByID.js.map +1 -1
  106. package/dist/routes/rest/files/getFile.d.ts.map +1 -1
  107. package/dist/routes/rest/files/getFile.js +15 -8
  108. package/dist/routes/rest/files/getFile.js.map +1 -1
  109. package/dist/routes/rest/files/getFileTypeFallback.d.ts +7 -0
  110. package/dist/routes/rest/files/getFileTypeFallback.d.ts.map +1 -0
  111. package/dist/routes/rest/files/getFileTypeFallback.js +21 -0
  112. package/dist/routes/rest/files/getFileTypeFallback.js.map +1 -0
  113. package/dist/routes/rest/globals/docAccess.d.ts.map +1 -1
  114. package/dist/routes/rest/globals/docAccess.js +5 -0
  115. package/dist/routes/rest/globals/docAccess.js.map +1 -1
  116. package/dist/routes/rest/globals/findOne.d.ts.map +1 -1
  117. package/dist/routes/rest/globals/findOne.js +5 -0
  118. package/dist/routes/rest/globals/findOne.js.map +1 -1
  119. package/dist/routes/rest/globals/findVersionByID.d.ts.map +1 -1
  120. package/dist/routes/rest/globals/findVersionByID.js +5 -0
  121. package/dist/routes/rest/globals/findVersionByID.js.map +1 -1
  122. package/dist/routes/rest/globals/findVersions.d.ts.map +1 -1
  123. package/dist/routes/rest/globals/findVersions.js +5 -0
  124. package/dist/routes/rest/globals/findVersions.js.map +1 -1
  125. package/dist/routes/rest/globals/preview.d.ts.map +1 -1
  126. package/dist/routes/rest/globals/preview.js +11 -2
  127. package/dist/routes/rest/globals/preview.js.map +1 -1
  128. package/dist/routes/rest/globals/restoreVersion.d.ts.map +1 -1
  129. package/dist/routes/rest/globals/restoreVersion.js +5 -0
  130. package/dist/routes/rest/globals/restoreVersion.js.map +1 -1
  131. package/dist/routes/rest/globals/update.d.ts.map +1 -1
  132. package/dist/routes/rest/globals/update.js +5 -0
  133. package/dist/routes/rest/globals/update.js.map +1 -1
  134. package/dist/routes/rest/index.d.ts +1 -0
  135. package/dist/routes/rest/index.d.ts.map +1 -1
  136. package/dist/routes/rest/index.js +51 -5
  137. package/dist/routes/rest/index.js.map +1 -1
  138. package/dist/routes/rest/routeError.d.ts +4 -3
  139. package/dist/routes/rest/routeError.d.ts.map +1 -1
  140. package/dist/routes/rest/routeError.js +23 -9
  141. package/dist/routes/rest/routeError.js.map +1 -1
  142. package/dist/routes/rest/utilities/sanitizeCollectionID.d.ts +9 -0
  143. package/dist/routes/rest/utilities/sanitizeCollectionID.d.ts.map +1 -0
  144. package/dist/routes/rest/utilities/sanitizeCollectionID.js +13 -0
  145. package/dist/routes/rest/utilities/sanitizeCollectionID.js.map +1 -0
  146. package/dist/scss/app.scss +2 -3
  147. package/dist/scss/vars.scss +0 -7
  148. package/dist/utilities/getDataAndFile.d.ts.map +1 -1
  149. package/dist/utilities/getDataAndFile.js +26 -42
  150. package/dist/utilities/getDataAndFile.js.map +1 -1
  151. package/dist/utilities/getNextRequestI18n.d.ts +11 -0
  152. package/dist/utilities/getNextRequestI18n.d.ts.map +1 -0
  153. package/dist/utilities/getNextRequestI18n.js +18 -0
  154. package/dist/utilities/getNextRequestI18n.js.map +1 -0
  155. package/dist/utilities/getPayloadHMR.d.ts.map +1 -1
  156. package/dist/utilities/getPayloadHMR.js +2 -1
  157. package/dist/utilities/getPayloadHMR.js.map +1 -1
  158. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  159. package/dist/utilities/getRequestLanguage.js +13 -5
  160. package/dist/utilities/getRequestLanguage.js.map +1 -1
  161. package/dist/utilities/headersWithCors.d.ts +8 -0
  162. package/dist/utilities/headersWithCors.d.ts.map +1 -0
  163. package/dist/utilities/headersWithCors.js +17 -0
  164. package/dist/utilities/headersWithCors.js.map +1 -0
  165. package/dist/utilities/initPage.d.ts.map +1 -1
  166. package/dist/utilities/initPage.js +15 -2
  167. package/dist/utilities/initPage.js.map +1 -1
  168. package/dist/views/API/index.client.js +2 -2
  169. package/dist/views/API/index.client.js.map +1 -1
  170. package/dist/views/CreateFirstUser/index.client.js +2 -2
  171. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  172. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  173. package/dist/views/CreateFirstUser/index.js +27 -1
  174. package/dist/views/CreateFirstUser/index.js.map +1 -1
  175. package/dist/views/Document/getMetaBySegment.js +2 -2
  176. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  177. package/dist/views/Edit/Default/{SetStepNav → SetDocumentStepNav}/index.d.ts +1 -1
  178. package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts.map +1 -0
  179. package/dist/views/Edit/Default/{SetStepNav → SetDocumentStepNav}/index.js +12 -5
  180. package/dist/views/Edit/Default/SetDocumentStepNav/index.js.map +1 -0
  181. package/dist/views/Edit/Default/index.d.ts.map +1 -1
  182. package/dist/views/Edit/Default/index.js +5 -4
  183. package/dist/views/Edit/Default/index.js.map +1 -1
  184. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts +3 -0
  185. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -0
  186. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +55 -0
  187. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -0
  188. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  189. package/dist/views/ForgotPassword/index.js +3 -39
  190. package/dist/views/ForgotPassword/index.js.map +1 -1
  191. package/dist/views/List/index.js +2 -2
  192. package/dist/views/List/index.js.map +1 -1
  193. package/dist/views/LivePreview/Toolbar/Controls/index.d.ts.map +1 -1
  194. package/dist/views/LivePreview/Toolbar/Controls/index.js +6 -4
  195. package/dist/views/LivePreview/Toolbar/Controls/index.js.map +1 -1
  196. package/dist/views/LivePreview/index.client.js +2 -2
  197. package/dist/views/LivePreview/index.client.js.map +1 -1
  198. package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
  199. package/dist/views/Login/LoginForm/index.js +26 -2
  200. package/dist/views/Login/LoginForm/index.js.map +1 -1
  201. package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
  202. package/dist/views/Logout/LogoutClient.js +1 -2
  203. package/dist/views/Logout/LogoutClient.js.map +1 -1
  204. package/dist/views/NotFound/index.js +2 -2
  205. package/dist/views/NotFound/index.js.map +1 -1
  206. package/dist/views/Root/meta.js +2 -2
  207. package/dist/views/Root/meta.js.map +1 -1
  208. package/dist/views/Versions/index.js +3 -3
  209. package/dist/views/Versions/index.js.map +1 -1
  210. package/dist/withPayload.d.ts +1 -2
  211. package/dist/withPayload.d.ts.map +1 -1
  212. package/dist/withPayload.js +5 -1
  213. package/dist/withPayload.js.map +1 -1
  214. package/package.json +16 -13
  215. package/dist/prod/payload/SuisseIntl-Bold.woff +0 -0
  216. package/dist/prod/payload/SuisseIntl-Bold.woff2 +0 -0
  217. package/dist/prod/payload/SuisseIntl-Medium.woff +0 -0
  218. package/dist/prod/payload/SuisseIntl-Medium.woff2 +0 -0
  219. package/dist/prod/payload/SuisseIntl-SemiBold.woff +0 -0
  220. package/dist/prod/payload/SuisseIntl-SemiBold.woff2 +0 -0
  221. package/dist/prod/payload/SuisseIntl.woff +0 -0
  222. package/dist/prod/payload/SuisseIntl.woff2 +0 -0
  223. package/dist/prod/payload/merriweather-v30-latin-900.woff +0 -0
  224. package/dist/prod/payload/merriweather-v30-latin-900.woff2 +0 -0
  225. package/dist/prod/payload/merriweather-v30-latin-900italic.woff +0 -0
  226. package/dist/prod/payload/merriweather-v30-latin-900italic.woff2 +0 -0
  227. package/dist/prod/payload/merriweather-v30-latin-italic.woff +0 -0
  228. package/dist/prod/payload/merriweather-v30-latin-italic.woff2 +0 -0
  229. package/dist/prod/payload/merriweather-v30-latin-regular.woff +0 -0
  230. package/dist/prod/payload/merriweather-v30-latin-regular.woff2 +0 -0
  231. package/dist/scss/fonts.scss +0 -75
  232. package/dist/utilities/getNextI18n.d.ts +0 -7
  233. package/dist/utilities/getNextI18n.d.ts.map +0 -1
  234. package/dist/utilities/getNextI18n.js +0 -14
  235. package/dist/utilities/getNextI18n.js.map +0 -1
  236. package/dist/views/Edit/Default/SetStepNav/index.d.ts.map +0 -1
  237. package/dist/views/Edit/Default/SetStepNav/index.js.map +0 -1
@@ -1,56 +1,40 @@
1
1
  import { nextFileUpload } from '../next-fileupload/index.js';
2
- export const getDataAndFile = async ({ collection, config, request })=>{
2
+ export const getDataAndFile = async ({ collection, config, request: incomingRequest })=>{
3
3
  let data = undefined;
4
4
  let file = undefined;
5
5
  if ([
6
6
  'PATCH',
7
7
  'POST',
8
8
  'PUT'
9
- ].includes(request.method.toUpperCase()) && request.body) {
9
+ ].includes(incomingRequest.method.toUpperCase()) && incomingRequest.body) {
10
+ const request = new Request(incomingRequest);
10
11
  const [contentType] = (request.headers.get('Content-Type') || '').split(';');
11
12
  if (contentType === 'application/json') {
12
- data = await request.json();
13
- } else if (contentType === 'multipart/form-data') {
14
- // possible upload request
15
- if (collection?.config?.upload) {
16
- // load file in memory
17
- if (!config.upload?.useTempFiles) {
18
- const formData = await request.formData();
19
- const formFile = formData.get('file');
20
- if (formFile instanceof Blob) {
21
- const bytes = await formFile.arrayBuffer();
22
- const buffer = Buffer.from(bytes);
23
- file = {
24
- name: formFile.name,
25
- data: buffer,
26
- mimetype: formFile.type,
27
- size: formFile.size
28
- };
29
- }
30
- const payloadData = formData.get('_payload');
31
- if (typeof payloadData === 'string') {
32
- data = JSON.parse(payloadData);
33
- }
34
- } else {
35
- // store temp file on disk
36
- const { error, fields, files } = await nextFileUpload({
37
- options: config.upload,
38
- request
39
- });
40
- if (error) {
41
- throw new Error(error.message);
42
- }
43
- if (files?.file) file = files.file;
44
- if (fields?._payload && typeof fields._payload === 'string') {
45
- data = JSON.parse(fields._payload);
46
- }
13
+ const bodyByteSize = parseInt(request.headers.get('Content-Length') || '0', 10);
14
+ const upperByteLimit = typeof config.upload?.limits?.fieldSize === 'number' ? config.upload.limits.fields : undefined;
15
+ if (bodyByteSize <= upperByteLimit || upperByteLimit === undefined) {
16
+ try {
17
+ data = await request.json();
18
+ } catch (error) {
19
+ data = {};
47
20
  }
48
21
  } else {
49
- // non upload request
50
- const formData = await request.formData();
51
- const payloadData = formData.get('_payload');
52
- if (typeof payloadData === 'string') {
53
- data = JSON.parse(payloadData);
22
+ throw new Error('Request body size exceeds the limit');
23
+ }
24
+ } else {
25
+ if (request.headers.has('Content-Length') && request.headers.get('Content-Length') !== '0') {
26
+ const { error, fields, files } = await nextFileUpload({
27
+ options: config.upload,
28
+ request
29
+ });
30
+ if (error) {
31
+ throw new Error(error.message);
32
+ }
33
+ if (collection?.config?.upload && files?.file) {
34
+ file = files.file;
35
+ }
36
+ if (fields?._payload && typeof fields._payload === 'string') {
37
+ data = JSON.parse(fields._payload);
54
38
  }
55
39
  }
56
40
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getDataAndFile.ts"],"sourcesContent":["import type { Collection, CustomPayloadRequest, SanitizedConfig } from 'payload/types'\n\nimport { nextFileUpload } from '../next-fileupload/index.js'\n\ntype GetDataAndFile = (args: {\n collection: Collection\n config: SanitizedConfig\n request: Request\n}) => Promise<{\n data: Record<string, any>\n file: CustomPayloadRequest['file']\n}>\nexport const getDataAndFile: GetDataAndFile = async ({ collection, config, request }) => {\n let data: Record<string, any> = undefined\n let file: CustomPayloadRequest['file'] = undefined\n\n if (['PATCH', 'POST', 'PUT'].includes(request.method.toUpperCase()) && request.body) {\n const [contentType] = (request.headers.get('Content-Type') || '').split(';')\n\n if (contentType === 'application/json') {\n data = await request.json()\n } else if (contentType === 'multipart/form-data') {\n // possible upload request\n if (collection?.config?.upload) {\n // load file in memory\n if (!config.upload?.useTempFiles) {\n const formData = await request.formData()\n const formFile = formData.get('file')\n\n if (formFile instanceof Blob) {\n const bytes = await formFile.arrayBuffer()\n const buffer = Buffer.from(bytes)\n\n file = {\n name: formFile.name,\n data: buffer,\n mimetype: formFile.type,\n size: formFile.size,\n }\n }\n\n const payloadData = formData.get('_payload')\n\n if (typeof payloadData === 'string') {\n data = JSON.parse(payloadData)\n }\n } else {\n // store temp file on disk\n const { error, fields, files } = await nextFileUpload({\n options: config.upload as any,\n request,\n })\n\n if (error) {\n throw new Error(error.message)\n }\n\n if (files?.file) file = files.file\n\n if (fields?._payload && typeof fields._payload === 'string') {\n data = JSON.parse(fields._payload)\n }\n }\n } else {\n // non upload request\n const formData = await request.formData()\n const payloadData = formData.get('_payload')\n\n if (typeof payloadData === 'string') {\n data = JSON.parse(payloadData)\n }\n }\n }\n }\n\n return {\n data,\n file,\n }\n}\n"],"names":["nextFileUpload","getDataAndFile","collection","config","request","data","undefined","file","includes","method","toUpperCase","body","contentType","headers","get","split","json","upload","useTempFiles","formData","formFile","Blob","bytes","arrayBuffer","buffer","Buffer","from","name","mimetype","type","size","payloadData","JSON","parse","error","fields","files","options","Error","message","_payload"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,cAAc,QAAQ,8BAA6B;AAU5D,OAAO,MAAMC,iBAAiC,OAAO,EAAEC,UAAU,EAAEC,MAAM,EAAEC,OAAO,EAAE;IAClF,IAAIC,OAA4BC;IAChC,IAAIC,OAAqCD;IAEzC,IAAI;QAAC;QAAS;QAAQ;KAAM,CAACE,QAAQ,CAACJ,QAAQK,MAAM,CAACC,WAAW,OAAON,QAAQO,IAAI,EAAE;QACnF,MAAM,CAACC,YAAY,GAAG,AAACR,CAAAA,QAAQS,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAC,EAAGC,KAAK,CAAC;QAExE,IAAIH,gBAAgB,oBAAoB;YACtCP,OAAO,MAAMD,QAAQY,IAAI;QAC3B,OAAO,IAAIJ,gBAAgB,uBAAuB;YAChD,0BAA0B;YAC1B,IAAIV,YAAYC,QAAQc,QAAQ;gBAC9B,sBAAsB;gBACtB,IAAI,CAACd,OAAOc,MAAM,EAAEC,cAAc;oBAChC,MAAMC,WAAW,MAAMf,QAAQe,QAAQ;oBACvC,MAAMC,WAAWD,SAASL,GAAG,CAAC;oBAE9B,IAAIM,oBAAoBC,MAAM;wBAC5B,MAAMC,QAAQ,MAAMF,SAASG,WAAW;wBACxC,MAAMC,SAASC,OAAOC,IAAI,CAACJ;wBAE3Bf,OAAO;4BACLoB,MAAMP,SAASO,IAAI;4BACnBtB,MAAMmB;4BACNI,UAAUR,SAASS,IAAI;4BACvBC,MAAMV,SAASU,IAAI;wBACrB;oBACF;oBAEA,MAAMC,cAAcZ,SAASL,GAAG,CAAC;oBAEjC,IAAI,OAAOiB,gBAAgB,UAAU;wBACnC1B,OAAO2B,KAAKC,KAAK,CAACF;oBACpB;gBACF,OAAO;oBACL,0BAA0B;oBAC1B,MAAM,EAAEG,KAAK,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAMpC,eAAe;wBACpDqC,SAASlC,OAAOc,MAAM;wBACtBb;oBACF;oBAEA,IAAI8B,OAAO;wBACT,MAAM,IAAII,MAAMJ,MAAMK,OAAO;oBAC/B;oBAEA,IAAIH,OAAO7B,MAAMA,OAAO6B,MAAM7B,IAAI;oBAElC,IAAI4B,QAAQK,YAAY,OAAOL,OAAOK,QAAQ,KAAK,UAAU;wBAC3DnC,OAAO2B,KAAKC,KAAK,CAACE,OAAOK,QAAQ;oBACnC;gBACF;YACF,OAAO;gBACL,qBAAqB;gBACrB,MAAMrB,WAAW,MAAMf,QAAQe,QAAQ;gBACvC,MAAMY,cAAcZ,SAASL,GAAG,CAAC;gBAEjC,IAAI,OAAOiB,gBAAgB,UAAU;oBACnC1B,OAAO2B,KAAKC,KAAK,CAACF;gBACpB;YACF;QACF;IACF;IAEA,OAAO;QACL1B;QACAE;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/getDataAndFile.ts"],"sourcesContent":["import type { Collection, CustomPayloadRequest, SanitizedConfig } from 'payload/types'\n\nimport type { NextFileUploadOptions } from '../next-fileupload/index.js'\n\nimport { nextFileUpload } from '../next-fileupload/index.js'\n\ntype GetDataAndFile = (args: {\n collection: Collection\n config: SanitizedConfig\n request: Request\n}) => Promise<{\n data: Record<string, any>\n file: CustomPayloadRequest['file']\n}>\nexport const getDataAndFile: GetDataAndFile = async ({\n collection,\n config,\n request: incomingRequest,\n}) => {\n let data: Record<string, any> = undefined\n let file: CustomPayloadRequest['file'] = undefined\n\n if (\n ['PATCH', 'POST', 'PUT'].includes(incomingRequest.method.toUpperCase()) &&\n incomingRequest.body\n ) {\n const request = new Request(incomingRequest)\n const [contentType] = (request.headers.get('Content-Type') || '').split(';')\n\n if (contentType === 'application/json') {\n const bodyByteSize = parseInt(request.headers.get('Content-Length') || '0', 10)\n const upperByteLimit =\n typeof config.upload?.limits?.fieldSize === 'number'\n ? config.upload.limits.fields\n : undefined\n if (bodyByteSize <= upperByteLimit || upperByteLimit === undefined) {\n try {\n data = await request.json()\n } catch (error) {\n data = {}\n }\n } else {\n throw new Error('Request body size exceeds the limit')\n }\n } else {\n if (request.headers.has('Content-Length') && request.headers.get('Content-Length') !== '0') {\n const { error, fields, files } = await nextFileUpload({\n options: config.upload as NextFileUploadOptions,\n request,\n })\n\n if (error) {\n throw new Error(error.message)\n }\n\n if (collection?.config?.upload && files?.file) {\n file = files.file\n }\n\n if (fields?._payload && typeof fields._payload === 'string') {\n data = JSON.parse(fields._payload)\n }\n }\n }\n }\n\n return {\n data,\n file,\n }\n}\n"],"names":["nextFileUpload","getDataAndFile","collection","config","request","incomingRequest","data","undefined","file","includes","method","toUpperCase","body","Request","contentType","headers","get","split","bodyByteSize","parseInt","upperByteLimit","upload","limits","fieldSize","fields","json","error","Error","has","files","options","message","_payload","JSON","parse"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,cAAc,QAAQ,8BAA6B;AAU5D,OAAO,MAAMC,iBAAiC,OAAO,EACnDC,UAAU,EACVC,MAAM,EACNC,SAASC,eAAe,EACzB;IACC,IAAIC,OAA4BC;IAChC,IAAIC,OAAqCD;IAEzC,IACE;QAAC;QAAS;QAAQ;KAAM,CAACE,QAAQ,CAACJ,gBAAgBK,MAAM,CAACC,WAAW,OACpEN,gBAAgBO,IAAI,EACpB;QACA,MAAMR,UAAU,IAAIS,QAAQR;QAC5B,MAAM,CAACS,YAAY,GAAG,AAACV,CAAAA,QAAQW,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAC,EAAGC,KAAK,CAAC;QAExE,IAAIH,gBAAgB,oBAAoB;YACtC,MAAMI,eAAeC,SAASf,QAAQW,OAAO,CAACC,GAAG,CAAC,qBAAqB,KAAK;YAC5E,MAAMI,iBACJ,OAAOjB,OAAOkB,MAAM,EAAEC,QAAQC,cAAc,WACxCpB,OAAOkB,MAAM,CAACC,MAAM,CAACE,MAAM,GAC3BjB;YACN,IAAIW,gBAAgBE,kBAAkBA,mBAAmBb,WAAW;gBAClE,IAAI;oBACFD,OAAO,MAAMF,QAAQqB,IAAI;gBAC3B,EAAE,OAAOC,OAAO;oBACdpB,OAAO,CAAC;gBACV;YACF,OAAO;gBACL,MAAM,IAAIqB,MAAM;YAClB;QACF,OAAO;YACL,IAAIvB,QAAQW,OAAO,CAACa,GAAG,CAAC,qBAAqBxB,QAAQW,OAAO,CAACC,GAAG,CAAC,sBAAsB,KAAK;gBAC1F,MAAM,EAAEU,KAAK,EAAEF,MAAM,EAAEK,KAAK,EAAE,GAAG,MAAM7B,eAAe;oBACpD8B,SAAS3B,OAAOkB,MAAM;oBACtBjB;gBACF;gBAEA,IAAIsB,OAAO;oBACT,MAAM,IAAIC,MAAMD,MAAMK,OAAO;gBAC/B;gBAEA,IAAI7B,YAAYC,QAAQkB,UAAUQ,OAAOrB,MAAM;oBAC7CA,OAAOqB,MAAMrB,IAAI;gBACnB;gBAEA,IAAIgB,QAAQQ,YAAY,OAAOR,OAAOQ,QAAQ,KAAK,UAAU;oBAC3D1B,OAAO2B,KAAKC,KAAK,CAACV,OAAOQ,QAAQ;gBACnC;YACF;QACF;IACF;IAEA,OAAO;QACL1B;QACAE;IACF;AACF,EAAC"}
@@ -0,0 +1,11 @@
1
+ import type { I18n } from '@payloadcms/translations';
2
+ import type { SanitizedConfig } from 'payload/types';
3
+ /**
4
+ * In the context of NextJS, this function initializes the i18n object for the current request.
5
+ *
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
+ */
8
+ export declare const getNextRequestI18n: ({ config }: {
9
+ config: SanitizedConfig;
10
+ }) => Promise<I18n>;
11
+ //# sourceMappingURL=getNextRequestI18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getNextRequestI18n.d.ts","sourceRoot":"","sources":["../../src/utilities/getNextRequestI18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAOpD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,eAAsB;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,KAAG,QAAQ,IAAI,CAK3F,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { initI18n } from '@payloadcms/translations';
2
+ import { cookies, headers } from 'next/headers.js';
3
+ import { getRequestLanguage } from './getRequestLanguage.js';
4
+ /**
5
+ * In the context of NextJS, this function initializes the i18n object for the current request.
6
+ *
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
+ */ export const getNextRequestI18n = async ({ config })=>initI18n({
9
+ config: config.i18n,
10
+ context: 'client',
11
+ language: getRequestLanguage({
12
+ config,
13
+ cookies: cookies(),
14
+ headers: headers()
15
+ })
16
+ });
17
+
18
+ //# sourceMappingURL=getNextRequestI18n.js.map
@@ -0,0 +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 +1 @@
1
- {"version":3,"file":"getPayloadHMR.d.ts","sourceRoot":"","sources":["../../src/utilities/getPayloadHMR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,OAAO,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAgBjD,eAAO,MAAM,aAAa,YAAmB,WAAW,KAAG,QAAQ,OAAO,CA6EzE,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,MAAM,gBAAgB,CAAA;AAgBjD,eAAO,MAAM,aAAa,YAAmB,WAAW,KAAG,QAAQ,OAAO,CAgFzE,CAAA"}
@@ -25,7 +25,8 @@ export const getPayloadHMR = async (options)=>{
25
25
  cached.payload.config = config;
26
26
  cached.payload.collections = config.collections.reduce((collections, collection)=>{
27
27
  collections[collection.slug] = {
28
- config: collection
28
+ config: collection,
29
+ customIDType: cached.payload.collections[collection.slug]?.customIDType
29
30
  };
30
31
  return collections;
31
32
  }, {});
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getPayloadHMR.ts"],"sourcesContent":["import type { GeneratedTypes, Payload } from 'payload'\nimport type { InitOptions } from 'payload/config'\n\nimport { BasePayload } from 'payload'\nimport WebSocket from 'ws'\n\nlet cached: {\n payload: Payload | null\n promise: Promise<Payload> | null\n reload: Promise<boolean> | boolean\n} = global._payload\n\nif (!cached) {\n // eslint-disable-next-line no-multi-assign\n cached = global._payload = { payload: null, promise: null, reload: false }\n}\n\nexport const getPayloadHMR = async (options: InitOptions): Promise<Payload> => {\n if (!options?.config) {\n throw new Error('Error: the payload config is required for getPayload to work.')\n }\n\n if (cached.payload) {\n const config = await options.config // TODO: check if we can move this inside the cached.reload === true condition\n\n if (cached.reload === true) {\n let resolve\n\n cached.reload = new Promise((res) => (resolve = res))\n\n if (typeof cached.payload.db.destroy === 'function') {\n await cached.payload.db.destroy()\n }\n\n cached.payload.config = config\n\n cached.payload.collections = config.collections.reduce((collections, collection) => {\n collections[collection.slug] = { config: collection }\n return collections\n }, {})\n\n cached.payload.globals = {\n config: config.globals,\n }\n\n // TODO: support HMR for other props in the future (see payload/src/index init()) hat may change on Payload singleton\n\n await cached.payload.db.init()\n await cached.payload.db.connect({ hotReload: true })\n resolve()\n }\n\n if (cached.reload instanceof Promise) {\n await cached.reload\n }\n\n return cached.payload\n }\n\n if (!cached.promise) {\n cached.promise = new BasePayload<GeneratedTypes>().init(options)\n }\n\n try {\n cached.payload = await cached.promise\n\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n process.env.DISABLE_PAYLOAD_HMR !== 'true'\n ) {\n try {\n const port = process.env.PORT || '3000'\n const ws = new WebSocket(`ws://localhost:${port}/_next/webpack-hmr`)\n\n ws.onmessage = (event) => {\n if (typeof event.data === 'string') {\n const data = JSON.parse(event.data)\n\n if ('action' in data && data.action === 'serverComponentChanges') {\n cached.reload = true\n }\n }\n }\n } catch (_) {\n // swallow e\n }\n }\n } catch (e) {\n cached.promise = null\n throw e\n }\n\n return cached.payload\n}\n"],"names":["BasePayload","WebSocket","cached","global","_payload","payload","promise","reload","getPayloadHMR","options","config","Error","resolve","Promise","res","db","destroy","collections","reduce","collection","slug","globals","init","connect","hotReload","process","env","NODE_ENV","DISABLE_PAYLOAD_HMR","port","PORT","ws","onmessage","event","data","JSON","parse","action","_","e"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,WAAW,QAAQ,UAAS;AACrC,OAAOC,eAAe,KAAI;AAE1B,IAAIC,SAIAC,OAAOC,QAAQ;AAEnB,IAAI,CAACF,QAAQ;IACX,2CAA2C;IAC3CA,SAASC,OAAOC,QAAQ,GAAG;QAAEC,SAAS;QAAMC,SAAS;QAAMC,QAAQ;IAAM;AAC3E;AAEA,OAAO,MAAMC,gBAAgB,OAAOC;IAClC,IAAI,CAACA,SAASC,QAAQ;QACpB,MAAM,IAAIC,MAAM;IAClB;IAEA,IAAIT,OAAOG,OAAO,EAAE;QAClB,MAAMK,SAAS,MAAMD,QAAQC,MAAM,CAAC,8EAA8E;;QAElH,IAAIR,OAAOK,MAAM,KAAK,MAAM;YAC1B,IAAIK;YAEJV,OAAOK,MAAM,GAAG,IAAIM,QAAQ,CAACC,MAASF,UAAUE;YAEhD,IAAI,OAAOZ,OAAOG,OAAO,CAACU,EAAE,CAACC,OAAO,KAAK,YAAY;gBACnD,MAAMd,OAAOG,OAAO,CAACU,EAAE,CAACC,OAAO;YACjC;YAEAd,OAAOG,OAAO,CAACK,MAAM,GAAGA;YAExBR,OAAOG,OAAO,CAACY,WAAW,GAAGP,OAAOO,WAAW,CAACC,MAAM,CAAC,CAACD,aAAaE;gBACnEF,WAAW,CAACE,WAAWC,IAAI,CAAC,GAAG;oBAAEV,QAAQS;gBAAW;gBACpD,OAAOF;YACT,GAAG,CAAC;YAEJf,OAAOG,OAAO,CAACgB,OAAO,GAAG;gBACvBX,QAAQA,OAAOW,OAAO;YACxB;YAEA,qHAAqH;YAErH,MAAMnB,OAAOG,OAAO,CAACU,EAAE,CAACO,IAAI;YAC5B,MAAMpB,OAAOG,OAAO,CAACU,EAAE,CAACQ,OAAO,CAAC;gBAAEC,WAAW;YAAK;YAClDZ;QACF;QAEA,IAAIV,OAAOK,MAAM,YAAYM,SAAS;YACpC,MAAMX,OAAOK,MAAM;QACrB;QAEA,OAAOL,OAAOG,OAAO;IACvB;IAEA,IAAI,CAACH,OAAOI,OAAO,EAAE;QACnBJ,OAAOI,OAAO,GAAG,IAAIN,cAA8BsB,IAAI,CAACb;IAC1D;IAEA,IAAI;QACFP,OAAOG,OAAO,GAAG,MAAMH,OAAOI,OAAO;QAErC,IACEmB,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,IAAI9B,UAAU,CAAC,eAAe,EAAE4B,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;4BAChEnC,OAAOK,MAAM,GAAG;wBAClB;oBACF;gBACF;YACF,EAAE,OAAO+B,GAAG;YACV,YAAY;YACd;QACF;IACF,EAAE,OAAOC,GAAG;QACVrC,OAAOI,OAAO,GAAG;QACjB,MAAMiC;IACR;IAEA,OAAOrC,OAAOG,OAAO;AACvB,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/getPayloadHMR.ts"],"sourcesContent":["import type { GeneratedTypes, Payload } from 'payload'\nimport type { InitOptions } from 'payload/config'\n\nimport { BasePayload } from 'payload'\nimport WebSocket from 'ws'\n\nlet cached: {\n payload: Payload | null\n promise: Promise<Payload> | null\n reload: Promise<boolean> | boolean\n} = global._payload\n\nif (!cached) {\n // eslint-disable-next-line no-multi-assign\n cached = global._payload = { payload: null, promise: null, reload: false }\n}\n\nexport const getPayloadHMR = async (options: InitOptions): Promise<Payload> => {\n if (!options?.config) {\n throw new Error('Error: the payload config is required for getPayload to work.')\n }\n\n if (cached.payload) {\n const config = await options.config // TODO: check if we can move this inside the cached.reload === true condition\n\n if (cached.reload === true) {\n let resolve\n\n cached.reload = new Promise((res) => (resolve = res))\n\n if (typeof cached.payload.db.destroy === 'function') {\n await cached.payload.db.destroy()\n }\n\n cached.payload.config = config\n\n cached.payload.collections = config.collections.reduce((collections, collection) => {\n collections[collection.slug] = {\n config: collection,\n customIDType: cached.payload.collections[collection.slug]?.customIDType,\n }\n return collections\n }, {})\n\n cached.payload.globals = {\n config: config.globals,\n }\n\n // TODO: support HMR for other props in the future (see payload/src/index init()) hat may change on Payload singleton\n\n await cached.payload.db.init()\n await cached.payload.db.connect({ hotReload: true })\n resolve()\n }\n\n if (cached.reload instanceof Promise) {\n await cached.reload\n }\n\n return cached.payload\n }\n\n if (!cached.promise) {\n cached.promise = new BasePayload<GeneratedTypes>().init(options)\n }\n\n try {\n cached.payload = await cached.promise\n\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n process.env.DISABLE_PAYLOAD_HMR !== 'true'\n ) {\n try {\n const port = process.env.PORT || '3000'\n const ws = new WebSocket(`ws://localhost:${port}/_next/webpack-hmr`)\n\n ws.onmessage = (event) => {\n if (typeof event.data === 'string') {\n const data = JSON.parse(event.data)\n\n if ('action' in data && data.action === 'serverComponentChanges') {\n cached.reload = true\n }\n }\n }\n } catch (_) {\n // swallow e\n }\n }\n } catch (e) {\n cached.promise = null\n throw e\n }\n\n return cached.payload\n}\n"],"names":["BasePayload","WebSocket","cached","global","_payload","payload","promise","reload","getPayloadHMR","options","config","Error","resolve","Promise","res","db","destroy","collections","reduce","collection","slug","customIDType","globals","init","connect","hotReload","process","env","NODE_ENV","DISABLE_PAYLOAD_HMR","port","PORT","ws","onmessage","event","data","JSON","parse","action","_","e"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,WAAW,QAAQ,UAAS;AACrC,OAAOC,eAAe,KAAI;AAE1B,IAAIC,SAIAC,OAAOC,QAAQ;AAEnB,IAAI,CAACF,QAAQ;IACX,2CAA2C;IAC3CA,SAASC,OAAOC,QAAQ,GAAG;QAAEC,SAAS;QAAMC,SAAS;QAAMC,QAAQ;IAAM;AAC3E;AAEA,OAAO,MAAMC,gBAAgB,OAAOC;IAClC,IAAI,CAACA,SAASC,QAAQ;QACpB,MAAM,IAAIC,MAAM;IAClB;IAEA,IAAIT,OAAOG,OAAO,EAAE;QAClB,MAAMK,SAAS,MAAMD,QAAQC,MAAM,CAAC,8EAA8E;;QAElH,IAAIR,OAAOK,MAAM,KAAK,MAAM;YAC1B,IAAIK;YAEJV,OAAOK,MAAM,GAAG,IAAIM,QAAQ,CAACC,MAASF,UAAUE;YAEhD,IAAI,OAAOZ,OAAOG,OAAO,CAACU,EAAE,CAACC,OAAO,KAAK,YAAY;gBACnD,MAAMd,OAAOG,OAAO,CAACU,EAAE,CAACC,OAAO;YACjC;YAEAd,OAAOG,OAAO,CAACK,MAAM,GAAGA;YAExBR,OAAOG,OAAO,CAACY,WAAW,GAAGP,OAAOO,WAAW,CAACC,MAAM,CAAC,CAACD,aAAaE;gBACnEF,WAAW,CAACE,WAAWC,IAAI,CAAC,GAAG;oBAC7BV,QAAQS;oBACRE,cAAcnB,OAAOG,OAAO,CAACY,WAAW,CAACE,WAAWC,IAAI,CAAC,EAAEC;gBAC7D;gBACA,OAAOJ;YACT,GAAG,CAAC;YAEJf,OAAOG,OAAO,CAACiB,OAAO,GAAG;gBACvBZ,QAAQA,OAAOY,OAAO;YACxB;YAEA,qHAAqH;YAErH,MAAMpB,OAAOG,OAAO,CAACU,EAAE,CAACQ,IAAI;YAC5B,MAAMrB,OAAOG,OAAO,CAACU,EAAE,CAACS,OAAO,CAAC;gBAAEC,WAAW;YAAK;YAClDb;QACF;QAEA,IAAIV,OAAOK,MAAM,YAAYM,SAAS;YACpC,MAAMX,OAAOK,MAAM;QACrB;QAEA,OAAOL,OAAOG,OAAO;IACvB;IAEA,IAAI,CAACH,OAAOI,OAAO,EAAE;QACnBJ,OAAOI,OAAO,GAAG,IAAIN,cAA8BuB,IAAI,CAACd;IAC1D;IAEA,IAAI;QACFP,OAAOG,OAAO,GAAG,MAAMH,OAAOI,OAAO;QAErC,IACEoB,QAAQC,GAAG,CAACC,QAAQ,KAAK,gBACzBF,QAAQC,GAAG,CAACC,QAAQ,KAAK,UACzBF,QAAQC,GAAG,CAACE,mBAAmB,KAAK,QACpC;YACA,IAAI;gBACF,MAAMC,OAAOJ,QAAQC,GAAG,CAACI,IAAI,IAAI;gBACjC,MAAMC,KAAK,IAAI/B,UAAU,CAAC,eAAe,EAAE6B,KAAK,kBAAkB,CAAC;gBAEnEE,GAAGC,SAAS,GAAG,CAACC;oBACd,IAAI,OAAOA,MAAMC,IAAI,KAAK,UAAU;wBAClC,MAAMA,OAAOC,KAAKC,KAAK,CAACH,MAAMC,IAAI;wBAElC,IAAI,YAAYA,QAAQA,KAAKG,MAAM,KAAK,0BAA0B;4BAChEpC,OAAOK,MAAM,GAAG;wBAClB;oBACF;gBACF;YACF,EAAE,OAAOgC,GAAG;YACV,YAAY;YACd;QACF;IACF,EAAE,OAAOC,GAAG;QACVtC,OAAOI,OAAO,GAAG;QACjB,MAAMkC;IACR;IAEA,OAAOtC,OAAOG,OAAO;AACvB,EAAC"}
@@ -1 +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,mDAK5B,sBAAsB,KAAG,iBAW3B,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,mDAK5B,sBAAsB,KAAG,iBAmB3B,CAAA"}
@@ -1,9 +1,17 @@
1
- import { matchLanguage } from '@payloadcms/translations';
1
+ import { extractHeaderLanguage } from '@payloadcms/translations';
2
2
  export const getRequestLanguage = ({ config, cookies, defaultLanguage = 'en', headers })=>{
3
- const acceptLanguage = headers.get('Accept-Language');
4
- const cookieLanguage = cookies.get(`${config.cookiePrefix || 'payload'}-lng`);
5
- const reqLanguage = (typeof cookieLanguage === 'string' ? cookieLanguage : cookieLanguage?.value) || acceptLanguage || config.i18n.fallbackLanguage || defaultLanguage;
6
- return matchLanguage(reqLanguage) || defaultLanguage;
3
+ const langCookie = cookies.get(`${config.cookiePrefix || 'payload'}-lng`);
4
+ const languageFromCookie = typeof langCookie === 'string' ? langCookie : langCookie?.value;
5
+ const languageFromHeader = headers.get('Accept-Language') ? extractHeaderLanguage(headers.get('Accept-Language')) : undefined;
6
+ const fallbackLang = config?.i18n?.fallbackLanguage || defaultLanguage;
7
+ const supportedLanguageKeys = Object.keys(config?.i18n?.supportedLanguages || {});
8
+ if (languageFromCookie && supportedLanguageKeys.includes(languageFromCookie)) {
9
+ return languageFromCookie;
10
+ }
11
+ if (languageFromHeader && supportedLanguageKeys.includes(languageFromHeader)) {
12
+ return languageFromHeader;
13
+ }
14
+ return supportedLanguageKeys.includes(fallbackLang) ? fallbackLang : 'en';
7
15
  };
8
16
 
9
17
  //# sourceMappingURL=getRequestLanguage.js.map
@@ -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 { matchLanguage } 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 defaultLanguage = 'en',\n headers,\n}: GetRequestLanguageArgs): AcceptedLanguages => {\n const acceptLanguage = headers.get('Accept-Language')\n const cookieLanguage = cookies.get(`${config.cookiePrefix || 'payload'}-lng`)\n\n const reqLanguage =\n (typeof cookieLanguage === 'string' ? cookieLanguage : cookieLanguage?.value) ||\n acceptLanguage ||\n config.i18n.fallbackLanguage ||\n defaultLanguage\n\n return matchLanguage(reqLanguage) || defaultLanguage\n}\n"],"names":["matchLanguage","getRequestLanguage","config","cookies","defaultLanguage","headers","acceptLanguage","get","cookieLanguage","cookiePrefix","reqLanguage","value","i18n","fallbackLanguage"],"rangeMappings":";;;;;;","mappings":"AAIA,SAASA,aAAa,QAAQ,2BAA0B;AASxD,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,MAAM,EACNC,OAAO,EACPC,kBAAkB,IAAI,EACtBC,OAAO,EACgB;IACvB,MAAMC,iBAAiBD,QAAQE,GAAG,CAAC;IACnC,MAAMC,iBAAiBL,QAAQI,GAAG,CAAC,CAAC,EAAEL,OAAOO,YAAY,IAAI,UAAU,IAAI,CAAC;IAE5E,MAAMC,cACJ,AAAC,CAAA,OAAOF,mBAAmB,WAAWA,iBAAiBA,gBAAgBG,KAAI,KAC3EL,kBACAJ,OAAOU,IAAI,CAACC,gBAAgB,IAC5BT;IAEF,OAAOJ,cAAcU,gBAAgBN;AACvC,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 defaultLanguage = 'en',\n headers,\n}: GetRequestLanguageArgs): AcceptedLanguages => {\n const langCookie = cookies.get(`${config.cookiePrefix || 'payload'}-lng`)\n const languageFromCookie = typeof langCookie === 'string' ? langCookie : langCookie?.value\n const languageFromHeader = headers.get('Accept-Language')\n ? extractHeaderLanguage(headers.get('Accept-Language'))\n : undefined\n const fallbackLang = config?.i18n?.fallbackLanguage || defaultLanguage\n\n const supportedLanguageKeys = Object.keys(config?.i18n?.supportedLanguages || {})\n\n if (languageFromCookie && supportedLanguageKeys.includes(languageFromCookie)) {\n return languageFromCookie as AcceptedLanguages\n }\n\n if (languageFromHeader && supportedLanguageKeys.includes(languageFromHeader)) {\n return languageFromHeader\n }\n\n return supportedLanguageKeys.includes(fallbackLang) ? (fallbackLang as AcceptedLanguages) : 'en'\n}\n"],"names":["extractHeaderLanguage","getRequestLanguage","config","cookies","defaultLanguage","headers","langCookie","get","cookiePrefix","languageFromCookie","value","languageFromHeader","undefined","fallbackLang","i18n","fallbackLanguage","supportedLanguageKeys","Object","keys","supportedLanguages","includes"],"rangeMappings":";;;;;;;;;;;;;;","mappings":"AAIA,SAASA,qBAAqB,QAAQ,2BAA0B;AAShE,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,MAAM,EACNC,OAAO,EACPC,kBAAkB,IAAI,EACtBC,OAAO,EACgB;IACvB,MAAMC,aAAaH,QAAQI,GAAG,CAAC,CAAC,EAAEL,OAAOM,YAAY,IAAI,UAAU,IAAI,CAAC;IACxE,MAAMC,qBAAqB,OAAOH,eAAe,WAAWA,aAAaA,YAAYI;IACrF,MAAMC,qBAAqBN,QAAQE,GAAG,CAAC,qBACnCP,sBAAsBK,QAAQE,GAAG,CAAC,sBAClCK;IACJ,MAAMC,eAAeX,QAAQY,MAAMC,oBAAoBX;IAEvD,MAAMY,wBAAwBC,OAAOC,IAAI,CAAChB,QAAQY,MAAMK,sBAAsB,CAAC;IAE/E,IAAIV,sBAAsBO,sBAAsBI,QAAQ,CAACX,qBAAqB;QAC5E,OAAOA;IACT;IAEA,IAAIE,sBAAsBK,sBAAsBI,QAAQ,CAACT,qBAAqB;QAC5E,OAAOA;IACT;IAEA,OAAOK,sBAAsBI,QAAQ,CAACP,gBAAiBA,eAAqC;AAC9F,EAAC"}
@@ -0,0 +1,8 @@
1
+ import type { PayloadRequest } from 'payload/types';
2
+ type CorsArgs = {
3
+ headers: Headers;
4
+ req: PayloadRequest;
5
+ };
6
+ export declare const headersWithCors: ({ headers, req }: CorsArgs) => Headers;
7
+ export {};
8
+ //# sourceMappingURL=headersWithCors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headersWithCors.d.ts","sourceRoot":"","sources":["../../src/utilities/headersWithCors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AACD,eAAO,MAAM,eAAe,qBAAsB,QAAQ,KAAG,OAoB5D,CAAA"}
@@ -0,0 +1,17 @@
1
+ export const headersWithCors = ({ headers, req })=>{
2
+ const cors = req.payload.config.cors;
3
+ const requestOrigin = req.headers.get('Origin');
4
+ if (cors) {
5
+ headers.set('Access-Control-Allow-Methods', 'PUT, PATCH, POST, GET, DELETE, OPTIONS');
6
+ headers.set('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization, Content-Encoding, x-apollo-tracing');
7
+ if (cors === '*') {
8
+ headers.set('Access-Control-Allow-Origin', '*');
9
+ } else if (Array.isArray(cors) && cors.indexOf(requestOrigin) > -1) {
10
+ headers.set('Access-Control-Allow-Credentials', 'true');
11
+ headers.set('Access-Control-Allow-Origin', requestOrigin);
12
+ }
13
+ }
14
+ return headers;
15
+ };
16
+
17
+ //# sourceMappingURL=headersWithCors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/headersWithCors.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload/types'\n\ntype CorsArgs = {\n headers: Headers\n req: PayloadRequest\n}\nexport const headersWithCors = ({ headers, req }: CorsArgs): Headers => {\n const cors = req.payload.config.cors\n const requestOrigin = req.headers.get('Origin')\n\n if (cors) {\n headers.set('Access-Control-Allow-Methods', 'PUT, PATCH, POST, GET, DELETE, OPTIONS')\n headers.set(\n 'Access-Control-Allow-Headers',\n 'Origin, X-Requested-With, Content-Type, Accept, Authorization, Content-Encoding, x-apollo-tracing',\n )\n\n if (cors === '*') {\n headers.set('Access-Control-Allow-Origin', '*')\n } else if (Array.isArray(cors) && cors.indexOf(requestOrigin) > -1) {\n headers.set('Access-Control-Allow-Credentials', 'true')\n headers.set('Access-Control-Allow-Origin', requestOrigin)\n }\n }\n\n return headers\n}\n"],"names":["headersWithCors","headers","req","cors","payload","config","requestOrigin","get","set","Array","isArray","indexOf"],"rangeMappings":";;;;;;;;;;;;;;","mappings":"AAMA,OAAO,MAAMA,kBAAkB,CAAC,EAAEC,OAAO,EAAEC,GAAG,EAAY;IACxD,MAAMC,OAAOD,IAAIE,OAAO,CAACC,MAAM,CAACF,IAAI;IACpC,MAAMG,gBAAgBJ,IAAID,OAAO,CAACM,GAAG,CAAC;IAEtC,IAAIJ,MAAM;QACRF,QAAQO,GAAG,CAAC,gCAAgC;QAC5CP,QAAQO,GAAG,CACT,gCACA;QAGF,IAAIL,SAAS,KAAK;YAChBF,QAAQO,GAAG,CAAC,+BAA+B;QAC7C,OAAO,IAAIC,MAAMC,OAAO,CAACP,SAASA,KAAKQ,OAAO,CAACL,iBAAiB,CAAC,GAAG;YAClEL,QAAQO,GAAG,CAAC,oCAAoC;YAChDP,QAAQO,GAAG,CAAC,+BAA+BF;QAC7C;IACF;IAEA,OAAOL;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"initPage.d.ts","sourceRoot":"","sources":["../../src/utilities/initPage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGd,eAAe,EAGhB,MAAM,eAAe,CAAA;AAatB,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IAClD,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CAAA;AAED,eAAO,MAAM,QAAQ,iFAKlB,IAAI,KAAG,QAAQ,cAAc,CA+F/B,CAAA"}
1
+ {"version":3,"file":"initPage.d.ts","sourceRoot":"","sources":["../../src/utilities/initPage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGd,eAAe,EAGhB,MAAM,eAAe,CAAA;AAatB,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IAClD,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CAAA;AAID,eAAO,MAAM,QAAQ,iFAKlB,IAAI,KAAG,QAAQ,cAAc,CAyG/B,CAAA"}
@@ -7,6 +7,14 @@ import { createLocalReq, isEntityHidden } from 'payload/utilities';
7
7
  import qs from 'qs';
8
8
  import { getPayloadHMR } from '../utilities/getPayloadHMR.js';
9
9
  import { getRequestLanguage } from './getRequestLanguage.js';
10
+ const authRoutes = [
11
+ '/login',
12
+ '/logout',
13
+ '/create-first-user',
14
+ '/forgot',
15
+ '/reset',
16
+ '/verify'
17
+ ];
10
18
  export const initPage = async ({ config: configPromise, redirectUnauthenticatedUser = false, route, searchParams })=>{
11
19
  const headers = getHeaders();
12
20
  const localeParam = searchParams?.locale;
@@ -58,16 +66,21 @@ export const initPage = async ({ config: configPromise, redirectUnauthenticatedU
58
66
  user
59
67
  }) ? slug : null).filter(Boolean)
60
68
  };
61
- const routeSegments = route.replace(payload.config.routes.admin, '').split('/').filter(Boolean);
69
+ const { routes: { admin: adminRoute } } = payload.config;
70
+ const routeSegments = route.replace(adminRoute, '').split('/').filter(Boolean);
62
71
  const [entityType, entitySlug, createOrID] = routeSegments;
63
72
  const collectionSlug = entityType === 'collections' ? entitySlug : undefined;
64
73
  const globalSlug = entityType === 'globals' ? entitySlug : undefined;
65
74
  const docID = collectionSlug && createOrID !== 'create' ? createOrID : undefined;
66
- if (redirectUnauthenticatedUser && !user && route !== '/login') {
75
+ const isAuthRoute = authRoutes.some((r)=>r === route.replace(adminRoute, ''));
76
+ if (redirectUnauthenticatedUser && !user && !isAuthRoute) {
67
77
  if (searchParams && 'redirect' in searchParams) delete searchParams.redirect;
68
78
  const stringifiedSearchParams = Object.keys(searchParams ?? {}).length ? `?${qs.stringify(searchParams)}` : '';
69
79
  redirect(`${routes.admin}/login?redirect=${route + stringifiedSearchParams}`);
70
80
  }
81
+ if (!permissions.canAccessAdmin && !isAuthRoute) {
82
+ notFound();
83
+ }
71
84
  let collectionConfig;
72
85
  let globalConfig;
73
86
  if (collectionSlug) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/initPage.ts"],"sourcesContent":["import type {\n InitPageResult,\n PayloadRequest,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n VisibleEntities,\n} from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { findLocaleFromCode } from '@payloadcms/ui/utilities/findLocaleFromCode'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { notFound, redirect } from 'next/navigation.js'\nimport { parseCookies } from 'payload/auth'\nimport { createLocalReq, isEntityHidden } from 'payload/utilities'\nimport qs from 'qs'\n\nimport { getPayloadHMR } from '../utilities/getPayloadHMR.js'\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\ntype Args = {\n config: Promise<SanitizedConfig> | SanitizedConfig\n redirectUnauthenticatedUser?: boolean\n route: string\n searchParams: { [key: string]: string | string[] | undefined }\n}\n\nexport const initPage = async ({\n config: configPromise,\n redirectUnauthenticatedUser = false,\n route,\n searchParams,\n}: Args): Promise<InitPageResult> => {\n const headers = getHeaders()\n const localeParam = searchParams?.locale as string\n const payload = await getPayloadHMR({ config: configPromise })\n const { collections, globals, localization, routes } = payload.config\n\n const queryString = `${qs.stringify(searchParams ?? {}, { addQueryPrefix: true })}`\n const defaultLocale =\n localization && localization.defaultLocale ? localization.defaultLocale : 'en'\n const localeCode = localeParam || defaultLocale\n const locale = localization && findLocaleFromCode(localization, localeCode)\n const cookies = parseCookies(headers)\n const language = getRequestLanguage({ config: payload.config, cookies, headers })\n\n const i18n = await initI18n({\n config: payload.config.i18n,\n context: 'client',\n language,\n })\n\n const req = await createLocalReq(\n {\n fallbackLocale: null,\n locale: locale.code,\n req: {\n i18n,\n query: qs.parse(queryString, {\n depth: 10,\n ignoreQueryPrefix: true,\n }),\n url: `${payload.config.serverURL}${route}${searchParams ? queryString : ''}`,\n } as PayloadRequest,\n },\n payload,\n )\n\n const { permissions, user } = await payload.auth({ headers, req })\n\n req.user = user\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const routeSegments = route.replace(payload.config.routes.admin, '').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 if (redirectUnauthenticatedUser && !user && route !== '/login') {\n if (searchParams && 'redirect' in searchParams) delete searchParams.redirect\n\n const stringifiedSearchParams = Object.keys(searchParams ?? {}).length\n ? `?${qs.stringify(searchParams)}`\n : ''\n\n redirect(`${routes.admin}/login?redirect=${route + stringifiedSearchParams}`)\n }\n\n let collectionConfig: SanitizedCollectionConfig\n let globalConfig: SanitizedGlobalConfig\n\n if (collectionSlug) {\n collectionConfig = collections.find((collection) => collection.slug === collectionSlug)\n\n if (!collectionConfig) {\n notFound()\n }\n }\n\n if (globalSlug) {\n globalConfig = globals.find((global) => global.slug === globalSlug)\n\n if (!globalConfig) {\n notFound()\n }\n }\n\n return {\n collectionConfig,\n cookies,\n docID,\n globalConfig,\n locale,\n permissions,\n req,\n translations: i18n.translations,\n visibleEntities,\n }\n}\n"],"names":["initI18n","findLocaleFromCode","headers","getHeaders","notFound","redirect","parseCookies","createLocalReq","isEntityHidden","qs","getPayloadHMR","getRequestLanguage","initPage","config","configPromise","redirectUnauthenticatedUser","route","searchParams","localeParam","locale","payload","collections","globals","localization","routes","queryString","stringify","addQueryPrefix","defaultLocale","localeCode","cookies","language","i18n","context","req","fallbackLocale","code","query","parse","depth","ignoreQueryPrefix","url","serverURL","permissions","user","auth","visibleEntities","map","slug","admin","hidden","filter","Boolean","routeSegments","replace","split","entityType","entitySlug","createOrID","collectionSlug","undefined","globalSlug","docID","stringifiedSearchParams","Object","keys","length","collectionConfig","globalConfig","find","collection","global","translations"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/utilities/initPage.ts"],"sourcesContent":["import type {\n InitPageResult,\n PayloadRequest,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n VisibleEntities,\n} from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { findLocaleFromCode } from '@payloadcms/ui/utilities/findLocaleFromCode'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { notFound, redirect } from 'next/navigation.js'\nimport { parseCookies } from 'payload/auth'\nimport { createLocalReq, isEntityHidden } from 'payload/utilities'\nimport qs from 'qs'\n\nimport { getPayloadHMR } from '../utilities/getPayloadHMR.js'\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\ntype Args = {\n config: Promise<SanitizedConfig> | SanitizedConfig\n redirectUnauthenticatedUser?: boolean\n route: string\n searchParams: { [key: string]: string | string[] | undefined }\n}\n\nconst authRoutes = ['/login', '/logout', '/create-first-user', '/forgot', '/reset', '/verify']\n\nexport const initPage = async ({\n config: configPromise,\n redirectUnauthenticatedUser = false,\n route,\n searchParams,\n}: Args): Promise<InitPageResult> => {\n const headers = getHeaders()\n const localeParam = searchParams?.locale as string\n const payload = await getPayloadHMR({ config: configPromise })\n const { collections, globals, localization, routes } = payload.config\n\n const queryString = `${qs.stringify(searchParams ?? {}, { addQueryPrefix: true })}`\n const defaultLocale =\n localization && localization.defaultLocale ? localization.defaultLocale : 'en'\n const localeCode = localeParam || defaultLocale\n const locale = localization && findLocaleFromCode(localization, localeCode)\n const cookies = parseCookies(headers)\n const language = getRequestLanguage({ config: payload.config, cookies, headers })\n\n const i18n = await initI18n({\n config: payload.config.i18n,\n context: 'client',\n language,\n })\n\n const req = await createLocalReq(\n {\n fallbackLocale: null,\n locale: locale.code,\n req: {\n i18n,\n query: qs.parse(queryString, {\n depth: 10,\n ignoreQueryPrefix: true,\n }),\n url: `${payload.config.serverURL}${route}${searchParams ? queryString : ''}`,\n } as PayloadRequest,\n },\n payload,\n )\n\n const { permissions, user } = await payload.auth({ headers, req })\n\n req.user = user\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const {\n routes: { admin: adminRoute },\n } = payload.config\n\n const routeSegments = route.replace(adminRoute, '').split('/').filter(Boolean)\n const [entityType, entitySlug, createOrID] = routeSegments\n const collectionSlug = entityType === 'collections' ? entitySlug : undefined\n const globalSlug = entityType === 'globals' ? entitySlug : undefined\n const docID = collectionSlug && createOrID !== 'create' ? createOrID : undefined\n\n const isAuthRoute = authRoutes.some((r) => r === route.replace(adminRoute, ''))\n\n if (redirectUnauthenticatedUser && !user && !isAuthRoute) {\n if (searchParams && 'redirect' in searchParams) delete searchParams.redirect\n\n const stringifiedSearchParams = Object.keys(searchParams ?? {}).length\n ? `?${qs.stringify(searchParams)}`\n : ''\n\n redirect(`${routes.admin}/login?redirect=${route + stringifiedSearchParams}`)\n }\n\n if (!permissions.canAccessAdmin && !isAuthRoute) {\n notFound()\n }\n\n let collectionConfig: SanitizedCollectionConfig\n let globalConfig: SanitizedGlobalConfig\n\n if (collectionSlug) {\n collectionConfig = collections.find((collection) => collection.slug === collectionSlug)\n\n if (!collectionConfig) {\n notFound()\n }\n }\n\n if (globalSlug) {\n globalConfig = globals.find((global) => global.slug === globalSlug)\n\n if (!globalConfig) {\n notFound()\n }\n }\n\n return {\n collectionConfig,\n cookies,\n docID,\n globalConfig,\n locale,\n permissions,\n req,\n translations: i18n.translations,\n visibleEntities,\n }\n}\n"],"names":["initI18n","findLocaleFromCode","headers","getHeaders","notFound","redirect","parseCookies","createLocalReq","isEntityHidden","qs","getPayloadHMR","getRequestLanguage","authRoutes","initPage","config","configPromise","redirectUnauthenticatedUser","route","searchParams","localeParam","locale","payload","collections","globals","localization","routes","queryString","stringify","addQueryPrefix","defaultLocale","localeCode","cookies","language","i18n","context","req","fallbackLocale","code","query","parse","depth","ignoreQueryPrefix","url","serverURL","permissions","user","auth","visibleEntities","map","slug","admin","hidden","filter","Boolean","adminRoute","routeSegments","replace","split","entityType","entitySlug","createOrID","collectionSlug","undefined","globalSlug","docID","isAuthRoute","some","r","stringifiedSearchParams","Object","keys","length","canAccessAdmin","collectionConfig","globalConfig","find","collection","global","translations"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -16,7 +16,7 @@ import { useSearchParams } from 'next/navigation.js';
16
16
  import qs from 'qs';
17
17
  import * as React from 'react';
18
18
  import { toast } from 'react-toastify';
19
- import { SetStepNav } from '../Edit/Default/SetStepNav/index.js';
19
+ import { SetDocumentStepNav } from '../Edit/Default/SetDocumentStepNav/index.js';
20
20
  import { RenderJSON } from './RenderJSON/index.js';
21
21
  const baseClass = 'query-inspector';
22
22
  export const APIViewClient = ()=>{
@@ -93,7 +93,7 @@ export const APIViewClient = ()=>{
93
93
  fullscreen && `${baseClass}--fullscreen`
94
94
  ].filter(Boolean).join(' '),
95
95
  right: false
96
- }, /*#__PURE__*/ React.createElement(SetStepNav, {
96
+ }, /*#__PURE__*/ React.createElement(SetDocumentStepNav, {
97
97
  collectionSlug: collectionSlug,
98
98
  globalLabel: globalConfig?.label,
99
99
  globalSlug: globalSlug,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/API/index.client.tsx"],"sourcesContent":["'use client'\n\nimport { CopyToClipboard } from '@payloadcms/ui/elements/CopyToClipboard'\nimport { Gutter } from '@payloadcms/ui/elements/Gutter'\nimport { Checkbox } from '@payloadcms/ui/fields/Checkbox'\nimport { NumberField as NumberInput } from '@payloadcms/ui/fields/Number'\nimport { Select } from '@payloadcms/ui/fields/Select'\nimport { Form } from '@payloadcms/ui/forms/Form'\nimport { MinimizeMaximize } from '@payloadcms/ui/icons/MinimizeMaximize'\nimport { SetViewActions } from '@payloadcms/ui/providers/Actions'\nimport { useComponentMap } from '@payloadcms/ui/providers/ComponentMap'\nimport { useConfig } from '@payloadcms/ui/providers/Config'\nimport { useDocumentInfo } from '@payloadcms/ui/providers/DocumentInfo'\nimport { useLocale } from '@payloadcms/ui/providers/Locale'\nimport { useTranslation } from '@payloadcms/ui/providers/Translation'\nimport { useSearchParams } from 'next/navigation.js'\nimport qs from 'qs'\nimport * as React from 'react'\nimport { toast } from 'react-toastify'\n\nimport { SetStepNav } from '../Edit/Default/SetStepNav/index.js'\nimport { RenderJSON } from './RenderJSON/index.js'\nimport './index.scss'\n\nconst baseClass = 'query-inspector'\n\nexport const APIViewClient: React.FC = () => {\n const { id, collectionSlug, globalSlug, initialData } = useDocumentInfo()\n\n const searchParams = useSearchParams()\n const { i18n } = useTranslation()\n const { code } = useLocale()\n\n const { getComponentMap } = useComponentMap()\n\n const componentMap = getComponentMap({ collectionSlug, globalSlug })\n\n const {\n collections,\n globals,\n localization,\n routes: { api: apiRoute },\n serverURL,\n } = useConfig()\n\n const collectionConfig =\n collectionSlug && collections.find((collection) => collection.slug === collectionSlug)\n\n const globalConfig = globalSlug && globals.find((global) => global.slug === globalSlug)\n\n const localeOptions =\n localization &&\n localization.locales.map((locale) => ({ label: locale.label, value: locale.code }))\n\n let draftsEnabled: boolean = false\n let docEndpoint: string = ''\n\n if (collectionConfig) {\n draftsEnabled = Boolean(collectionConfig.versions?.drafts)\n docEndpoint = `/${collectionSlug}/${id}`\n }\n\n if (globalConfig) {\n draftsEnabled = Boolean(globalConfig.versions?.drafts)\n docEndpoint = `/globals/${globalSlug}`\n }\n\n const [data, setData] = React.useState<any>(initialData)\n const [draft, setDraft] = React.useState<boolean>(searchParams.get('draft') === 'true')\n const [locale, setLocale] = React.useState<string>(searchParams?.get('locale') || code)\n const [depth, setDepth] = React.useState<string>(searchParams.get('depth') || '1')\n const [authenticated, setAuthenticated] = React.useState<boolean>(true)\n const [fullscreen, setFullscreen] = React.useState<boolean>(false)\n\n const fetchURL = `${serverURL}${apiRoute}${docEndpoint}${qs.stringify(\n {\n depth,\n draft,\n locale,\n },\n { addQueryPrefix: true },\n )}`\n\n React.useEffect(() => {\n const fetchData = async () => {\n try {\n const res = await fetch(fetchURL, {\n credentials: authenticated ? 'include' : 'omit',\n headers: {\n 'Accept-Language': i18n.language,\n },\n method: 'GET',\n })\n\n try {\n const json = await res.json()\n setData(json)\n } catch (error) {\n toast.error('Error parsing response')\n console.error(error)\n }\n } catch (error) {\n toast.error('Error making request')\n console.error(error)\n }\n }\n\n void fetchData()\n }, [i18n.language, fetchURL, authenticated])\n\n return (\n <Gutter\n className={[baseClass, fullscreen && `${baseClass}--fullscreen`].filter(Boolean).join(' ')}\n right={false}\n >\n <SetStepNav\n collectionSlug={collectionSlug}\n globalLabel={globalConfig?.label}\n globalSlug={globalSlug}\n id={id}\n pluralLabel={collectionConfig ? collectionConfig?.labels?.plural : undefined}\n useAsTitle={collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined}\n view=\"API\"\n />\n <SetViewActions actions={componentMap?.actionsMap?.Edit?.API} />\n <div className={`${baseClass}__configuration`}>\n <div className={`${baseClass}__api-url`}>\n <span className={`${baseClass}__label`}>\n API URL <CopyToClipboard value={fetchURL} />\n </span>\n <a href={fetchURL} rel=\"noopener noreferrer\" target=\"_blank\">\n {fetchURL}\n </a>\n </div>\n <Form\n initialState={{\n authenticated: {\n initialValue: authenticated || false,\n valid: true,\n value: authenticated || false,\n },\n depth: {\n initialValue: Number(depth || 0),\n valid: true,\n value: Number(depth || 0),\n },\n draft: {\n initialValue: draft || false,\n valid: true,\n value: draft || false,\n },\n locale: {\n initialValue: locale,\n valid: true,\n value: locale,\n },\n }}\n >\n <div className={`${baseClass}__form-fields`}>\n <div className={`${baseClass}__filter-query-checkboxes`}>\n {draftsEnabled && (\n <Checkbox\n label=\"Draft\"\n name=\"draft\"\n onChange={() => setDraft(!draft)}\n path=\"draft\"\n />\n )}\n <Checkbox\n label=\"Authenticated\"\n name=\"authenticated\"\n onChange={() => setAuthenticated(!authenticated)}\n path=\"authenticated\"\n />\n </div>\n {localeOptions && (\n <Select\n label=\"Locale\"\n name=\"locale\"\n onChange={(value) => setLocale(value)}\n options={localeOptions}\n path=\"locale\"\n />\n )}\n <NumberInput\n label=\"Depth\"\n max={10}\n min={0}\n name=\"depth\"\n onChange={(value) => setDepth(value.toString())}\n path=\"depth\"\n step={1}\n />\n </div>\n </Form>\n </div>\n <div className={`${baseClass}__results-wrapper`}>\n <div className={`${baseClass}__toggle-fullscreen-button-container`}>\n <button\n aria-label=\"toggle fullscreen\"\n className={`${baseClass}__toggle-fullscreen-button`}\n onClick={() => setFullscreen(!fullscreen)}\n type=\"button\"\n >\n <MinimizeMaximize isMinimized={!fullscreen} />\n </button>\n </div>\n <div className={`${baseClass}__results`}>\n <RenderJSON object={data} />\n </div>\n </div>\n </Gutter>\n )\n}\n"],"names":["CopyToClipboard","Gutter","Checkbox","NumberField","NumberInput","Select","Form","MinimizeMaximize","SetViewActions","useComponentMap","useConfig","useDocumentInfo","useLocale","useTranslation","useSearchParams","qs","React","toast","SetStepNav","RenderJSON","baseClass","APIViewClient","id","collectionSlug","globalSlug","initialData","searchParams","i18n","code","getComponentMap","componentMap","collections","globals","localization","routes","api","apiRoute","serverURL","collectionConfig","find","collection","slug","globalConfig","global","localeOptions","locales","map","locale","label","value","draftsEnabled","docEndpoint","Boolean","versions","drafts","data","setData","useState","draft","setDraft","get","setLocale","depth","setDepth","authenticated","setAuthenticated","fullscreen","setFullscreen","fetchURL","stringify","addQueryPrefix","useEffect","fetchData","res","fetch","credentials","headers","language","method","json","error","console","className","filter","join","right","globalLabel","pluralLabel","labels","plural","undefined","useAsTitle","admin","view","actions","actionsMap","Edit","API","div","span","a","href","rel","target","initialState","initialValue","valid","Number","name","onChange","path","options","max","min","toString","step","button","aria-label","onClick","type","isMinimized","object"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/views/API/index.client.tsx"],"sourcesContent":["'use client'\n\nimport { CopyToClipboard } from '@payloadcms/ui/elements/CopyToClipboard'\nimport { Gutter } from '@payloadcms/ui/elements/Gutter'\nimport { Checkbox } from '@payloadcms/ui/fields/Checkbox'\nimport { NumberField as NumberInput } from '@payloadcms/ui/fields/Number'\nimport { Select } from '@payloadcms/ui/fields/Select'\nimport { Form } from '@payloadcms/ui/forms/Form'\nimport { MinimizeMaximize } from '@payloadcms/ui/icons/MinimizeMaximize'\nimport { SetViewActions } from '@payloadcms/ui/providers/Actions'\nimport { useComponentMap } from '@payloadcms/ui/providers/ComponentMap'\nimport { useConfig } from '@payloadcms/ui/providers/Config'\nimport { useDocumentInfo } from '@payloadcms/ui/providers/DocumentInfo'\nimport { useLocale } from '@payloadcms/ui/providers/Locale'\nimport { useTranslation } from '@payloadcms/ui/providers/Translation'\nimport { useSearchParams } from 'next/navigation.js'\nimport qs from 'qs'\nimport * as React from 'react'\nimport { toast } from 'react-toastify'\n\nimport { SetDocumentStepNav } from '../Edit/Default/SetDocumentStepNav/index.js'\nimport { RenderJSON } from './RenderJSON/index.js'\nimport './index.scss'\n\nconst baseClass = 'query-inspector'\n\nexport const APIViewClient: React.FC = () => {\n const { id, collectionSlug, globalSlug, initialData } = useDocumentInfo()\n\n const searchParams = useSearchParams()\n const { i18n } = useTranslation()\n const { code } = useLocale()\n\n const { getComponentMap } = useComponentMap()\n\n const componentMap = getComponentMap({ collectionSlug, globalSlug })\n\n const {\n collections,\n globals,\n localization,\n routes: { api: apiRoute },\n serverURL,\n } = useConfig()\n\n const collectionConfig =\n collectionSlug && collections.find((collection) => collection.slug === collectionSlug)\n\n const globalConfig = globalSlug && globals.find((global) => global.slug === globalSlug)\n\n const localeOptions =\n localization &&\n localization.locales.map((locale) => ({ label: locale.label, value: locale.code }))\n\n let draftsEnabled: boolean = false\n let docEndpoint: string = ''\n\n if (collectionConfig) {\n draftsEnabled = Boolean(collectionConfig.versions?.drafts)\n docEndpoint = `/${collectionSlug}/${id}`\n }\n\n if (globalConfig) {\n draftsEnabled = Boolean(globalConfig.versions?.drafts)\n docEndpoint = `/globals/${globalSlug}`\n }\n\n const [data, setData] = React.useState<any>(initialData)\n const [draft, setDraft] = React.useState<boolean>(searchParams.get('draft') === 'true')\n const [locale, setLocale] = React.useState<string>(searchParams?.get('locale') || code)\n const [depth, setDepth] = React.useState<string>(searchParams.get('depth') || '1')\n const [authenticated, setAuthenticated] = React.useState<boolean>(true)\n const [fullscreen, setFullscreen] = React.useState<boolean>(false)\n\n const fetchURL = `${serverURL}${apiRoute}${docEndpoint}${qs.stringify(\n {\n depth,\n draft,\n locale,\n },\n { addQueryPrefix: true },\n )}`\n\n React.useEffect(() => {\n const fetchData = async () => {\n try {\n const res = await fetch(fetchURL, {\n credentials: authenticated ? 'include' : 'omit',\n headers: {\n 'Accept-Language': i18n.language,\n },\n method: 'GET',\n })\n\n try {\n const json = await res.json()\n setData(json)\n } catch (error) {\n toast.error('Error parsing response')\n console.error(error)\n }\n } catch (error) {\n toast.error('Error making request')\n console.error(error)\n }\n }\n\n void fetchData()\n }, [i18n.language, fetchURL, authenticated])\n\n return (\n <Gutter\n className={[baseClass, fullscreen && `${baseClass}--fullscreen`].filter(Boolean).join(' ')}\n right={false}\n >\n <SetDocumentStepNav\n collectionSlug={collectionSlug}\n globalLabel={globalConfig?.label}\n globalSlug={globalSlug}\n id={id}\n pluralLabel={collectionConfig ? collectionConfig?.labels?.plural : undefined}\n useAsTitle={collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined}\n view=\"API\"\n />\n <SetViewActions actions={componentMap?.actionsMap?.Edit?.API} />\n <div className={`${baseClass}__configuration`}>\n <div className={`${baseClass}__api-url`}>\n <span className={`${baseClass}__label`}>\n API URL <CopyToClipboard value={fetchURL} />\n </span>\n <a href={fetchURL} rel=\"noopener noreferrer\" target=\"_blank\">\n {fetchURL}\n </a>\n </div>\n <Form\n initialState={{\n authenticated: {\n initialValue: authenticated || false,\n valid: true,\n value: authenticated || false,\n },\n depth: {\n initialValue: Number(depth || 0),\n valid: true,\n value: Number(depth || 0),\n },\n draft: {\n initialValue: draft || false,\n valid: true,\n value: draft || false,\n },\n locale: {\n initialValue: locale,\n valid: true,\n value: locale,\n },\n }}\n >\n <div className={`${baseClass}__form-fields`}>\n <div className={`${baseClass}__filter-query-checkboxes`}>\n {draftsEnabled && (\n <Checkbox\n label=\"Draft\"\n name=\"draft\"\n onChange={() => setDraft(!draft)}\n path=\"draft\"\n />\n )}\n <Checkbox\n label=\"Authenticated\"\n name=\"authenticated\"\n onChange={() => setAuthenticated(!authenticated)}\n path=\"authenticated\"\n />\n </div>\n {localeOptions && (\n <Select\n label=\"Locale\"\n name=\"locale\"\n onChange={(value) => setLocale(value)}\n options={localeOptions}\n path=\"locale\"\n />\n )}\n <NumberInput\n label=\"Depth\"\n max={10}\n min={0}\n name=\"depth\"\n onChange={(value) => setDepth(value.toString())}\n path=\"depth\"\n step={1}\n />\n </div>\n </Form>\n </div>\n <div className={`${baseClass}__results-wrapper`}>\n <div className={`${baseClass}__toggle-fullscreen-button-container`}>\n <button\n aria-label=\"toggle fullscreen\"\n className={`${baseClass}__toggle-fullscreen-button`}\n onClick={() => setFullscreen(!fullscreen)}\n type=\"button\"\n >\n <MinimizeMaximize isMinimized={!fullscreen} />\n </button>\n </div>\n <div className={`${baseClass}__results`}>\n <RenderJSON object={data} />\n </div>\n </div>\n </Gutter>\n )\n}\n"],"names":["CopyToClipboard","Gutter","Checkbox","NumberField","NumberInput","Select","Form","MinimizeMaximize","SetViewActions","useComponentMap","useConfig","useDocumentInfo","useLocale","useTranslation","useSearchParams","qs","React","toast","SetDocumentStepNav","RenderJSON","baseClass","APIViewClient","id","collectionSlug","globalSlug","initialData","searchParams","i18n","code","getComponentMap","componentMap","collections","globals","localization","routes","api","apiRoute","serverURL","collectionConfig","find","collection","slug","globalConfig","global","localeOptions","locales","map","locale","label","value","draftsEnabled","docEndpoint","Boolean","versions","drafts","data","setData","useState","draft","setDraft","get","setLocale","depth","setDepth","authenticated","setAuthenticated","fullscreen","setFullscreen","fetchURL","stringify","addQueryPrefix","useEffect","fetchData","res","fetch","credentials","headers","language","method","json","error","console","className","filter","join","right","globalLabel","pluralLabel","labels","plural","undefined","useAsTitle","admin","view","actions","actionsMap","Edit","API","div","span","a","href","rel","target","initialState","initialValue","valid","Number","name","onChange","path","options","max","min","toString","step","button","aria-label","onClick","type","isMinimized","object"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -9,8 +9,8 @@ export const CreateFirstUserFields = ({ createFirstUserFieldMap, userSlug })=>{
9
9
  });
10
10
  return /*#__PURE__*/ React.createElement(RenderFields, {
11
11
  fieldMap: [
12
- ...fieldMap || [],
13
- ...createFirstUserFieldMap || []
12
+ ...createFirstUserFieldMap || [],
13
+ ...fieldMap || []
14
14
  ],
15
15
  operation: "create",
16
16
  path: "",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FieldMap } from '@payloadcms/ui/utilities/buildComponentMap'\n\nimport { RenderFields } from '@payloadcms/ui/forms/RenderFields'\nimport { useComponentMap } from '@payloadcms/ui/providers/ComponentMap'\nimport React from 'react'\n\nexport const CreateFirstUserFields: React.FC<{\n createFirstUserFieldMap: FieldMap\n userSlug: string\n}> = ({ createFirstUserFieldMap, userSlug }) => {\n const { getFieldMap } = useComponentMap()\n\n const fieldMap = getFieldMap({ collectionSlug: userSlug })\n\n return (\n <RenderFields\n fieldMap={[...(fieldMap || []), ...(createFirstUserFieldMap || [])]}\n operation=\"create\"\n path=\"\"\n readOnly={false}\n schemaPath={userSlug}\n />\n )\n}\n"],"names":["RenderFields","useComponentMap","React","CreateFirstUserFields","createFirstUserFieldMap","userSlug","getFieldMap","fieldMap","collectionSlug","operation","path","readOnly","schemaPath"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAGA,SAASA,YAAY,QAAQ,oCAAmC;AAChE,SAASC,eAAe,QAAQ,wCAAuC;AACvE,OAAOC,WAAW,QAAO;AAEzB,OAAO,MAAMC,wBAGR,CAAC,EAAEC,uBAAuB,EAAEC,QAAQ,EAAE;IACzC,MAAM,EAAEC,WAAW,EAAE,GAAGL;IAExB,MAAMM,WAAWD,YAAY;QAAEE,gBAAgBH;IAAS;IAExD,qBACE,oBAACL;QACCO,UAAU;eAAKA,YAAY,EAAE;eAAOH,2BAA2B,EAAE;SAAE;QACnEK,WAAU;QACVC,MAAK;QACLC,UAAU;QACVC,YAAYP;;AAGlB,EAAC"}
1
+ {"version":3,"sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FieldMap } from '@payloadcms/ui/utilities/buildComponentMap'\n\nimport { RenderFields } from '@payloadcms/ui/forms/RenderFields'\nimport { useComponentMap } from '@payloadcms/ui/providers/ComponentMap'\nimport React from 'react'\n\nexport const CreateFirstUserFields: React.FC<{\n createFirstUserFieldMap: FieldMap\n userSlug: string\n}> = ({ createFirstUserFieldMap, userSlug }) => {\n const { getFieldMap } = useComponentMap()\n\n const fieldMap = getFieldMap({ collectionSlug: userSlug })\n\n return (\n <RenderFields\n fieldMap={[...(createFirstUserFieldMap || []), ...(fieldMap || [])]}\n operation=\"create\"\n path=\"\"\n readOnly={false}\n schemaPath={userSlug}\n />\n )\n}\n"],"names":["RenderFields","useComponentMap","React","CreateFirstUserFields","createFirstUserFieldMap","userSlug","getFieldMap","fieldMap","collectionSlug","operation","path","readOnly","schemaPath"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAGA,SAASA,YAAY,QAAQ,oCAAmC;AAChE,SAASC,eAAe,QAAQ,wCAAuC;AACvE,OAAOC,WAAW,QAAO;AAEzB,OAAO,MAAMC,wBAGR,CAAC,EAAEC,uBAAuB,EAAEC,QAAQ,EAAE;IACzC,MAAM,EAAEC,WAAW,EAAE,GAAGL;IAExB,MAAMM,WAAWD,YAAY;QAAEE,gBAAgBH;IAAS;IAExD,qBACE,oBAACL;QACCO,UAAU;eAAKH,2BAA2B,EAAE;eAAOG,YAAY,EAAE;SAAE;QACnEE,WAAU;QACVC,MAAK;QACLC,UAAU;QACVC,YAAYP;;AAGlB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAMnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,+BAA+B,EAAE,MAAM,WAAW,CAAA;AAE3D,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAsExD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAOnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,+BAA+B,EAAE,MAAM,WAAW,CAAA;AAE3D,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA+FxD,CAAA"}
@@ -1,12 +1,13 @@
1
1
  import { Form } from '@payloadcms/ui/forms/Form';
2
2
  import { FormSubmit } from '@payloadcms/ui/forms/Submit';
3
3
  import { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema';
4
+ import { WithServerSideProps as WithServerSidePropsGeneric } from '@payloadcms/ui/providers/ComponentMap';
4
5
  import { mapFields } from '@payloadcms/ui/utilities/buildComponentMap';
5
6
  import React from 'react';
6
7
  import { CreateFirstUserFields } from './index.client.js';
7
8
  export { generateCreateFirstUserMetadata } from './meta.js';
8
9
  export const CreateFirstUserView = async ({ initPageResult })=>{
9
- const { req, req: { i18n, payload: { config, config: { admin: { user: userSlug }, routes: { admin: adminRoute, api: apiRoute }, serverURL } } } } = initPageResult;
10
+ const { req, req: { i18n, payload, payload: { config, config: { admin: { user: userSlug }, routes: { admin: adminRoute, api: apiRoute }, serverURL } } } } = initPageResult;
10
11
  const fields = [
11
12
  {
12
13
  name: 'email',
@@ -27,11 +28,36 @@ export const CreateFirstUserView = async ({ initPageResult })=>{
27
28
  required: true
28
29
  }
29
30
  ];
31
+ const WithServerSideProps = ({ Component, ...rest })=>{
32
+ return /*#__PURE__*/ React.createElement(WithServerSidePropsGeneric, {
33
+ Component: Component,
34
+ payload: payload,
35
+ ...rest
36
+ });
37
+ };
30
38
  const createFirstUserFieldMap = mapFields({
39
+ WithServerSideProps,
31
40
  config,
32
41
  fieldSchema: fields,
33
42
  i18n,
34
43
  parentPath: userSlug
44
+ }).map((field)=>{
45
+ // Transform field types for the password and confirm-password fields
46
+ if (field.name === 'password') {
47
+ const type = 'password';
48
+ return {
49
+ ...field,
50
+ type
51
+ };
52
+ }
53
+ if (field.name === 'confirm-password') {
54
+ const type = 'confirmPassword';
55
+ return {
56
+ ...field,
57
+ type
58
+ };
59
+ }
60
+ return field;
35
61
  });
36
62
  const formState = await buildStateFromSchema({
37
63
  fieldSchema: fields,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/CreateFirstUser/index.tsx"],"sourcesContent":["import type { Field } from 'payload/types'\nimport type { AdminViewProps } from 'payload/types'\n\nimport { Form } from '@payloadcms/ui/forms/Form'\nimport { FormSubmit } from '@payloadcms/ui/forms/Submit'\nimport { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema'\nimport { mapFields } from '@payloadcms/ui/utilities/buildComponentMap'\nimport React from 'react'\n\nimport { CreateFirstUserFields } from './index.client.js'\nimport './index.scss'\n\nexport { generateCreateFirstUserMetadata } from './meta.js'\n\nexport const CreateFirstUserView: React.FC<AdminViewProps> = async ({ initPageResult }) => {\n const {\n req,\n req: {\n i18n,\n payload: {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n },\n },\n } = initPageResult\n\n const fields: Field[] = [\n {\n name: 'email',\n type: 'email',\n label: req.t('general:emailAddress'),\n required: true,\n },\n {\n name: 'password',\n type: 'text',\n label: req.t('general:password'),\n required: true,\n },\n {\n name: 'confirm-password',\n type: 'text',\n label: req.t('authentication:confirmPassword'),\n required: true,\n },\n ]\n\n const createFirstUserFieldMap = mapFields({\n config,\n fieldSchema: fields,\n i18n,\n parentPath: userSlug,\n })\n\n const formState = await buildStateFromSchema({\n fieldSchema: fields,\n operation: 'create',\n preferences: {},\n req,\n })\n\n return (\n <React.Fragment>\n <h1>{req.t('general:welcome')}</h1>\n <p>{req.t('authentication:beginCreateFirstUser')}</p>\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/first-register`}\n initialState={formState}\n method=\"POST\"\n redirect={adminRoute}\n validationOperation=\"create\"\n >\n <CreateFirstUserFields\n createFirstUserFieldMap={createFirstUserFieldMap}\n userSlug={userSlug}\n />\n <FormSubmit>{req.t('general:create')}</FormSubmit>\n </Form>\n </React.Fragment>\n )\n}\n"],"names":["Form","FormSubmit","buildStateFromSchema","mapFields","React","CreateFirstUserFields","generateCreateFirstUserMetadata","CreateFirstUserView","initPageResult","req","i18n","payload","config","admin","user","userSlug","routes","adminRoute","api","apiRoute","serverURL","fields","name","type","label","t","required","createFirstUserFieldMap","fieldSchema","parentPath","formState","operation","preferences","Fragment","h1","p","action","initialState","method","redirect","validationOperation"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,IAAI,QAAQ,4BAA2B;AAChD,SAASC,UAAU,QAAQ,8BAA6B;AACxD,SAASC,oBAAoB,QAAQ,4CAA2C;AAChF,SAASC,SAAS,QAAQ,6CAA4C;AACtE,OAAOC,WAAW,QAAO;AAEzB,SAASC,qBAAqB,QAAQ,oBAAmB;AAGzD,SAASC,+BAA+B,QAAQ,YAAW;AAE3D,OAAO,MAAMC,sBAAgD,OAAO,EAAEC,cAAc,EAAE;IACpF,MAAM,EACJC,GAAG,EACHA,KAAK,EACHC,IAAI,EACJC,SAAS,EACPC,MAAM,EACNA,QAAQ,EACNC,OAAO,EAAEC,MAAMC,QAAQ,EAAE,EACzBC,QAAQ,EAAEH,OAAOI,UAAU,EAAEC,KAAKC,QAAQ,EAAE,EAC5CC,SAAS,EACV,EACF,EACF,EACF,GAAGZ;IAEJ,MAAMa,SAAkB;QACtB;YACEC,MAAM;YACNC,MAAM;YACNC,OAAOf,IAAIgB,CAAC,CAAC;YACbC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNC,OAAOf,IAAIgB,CAAC,CAAC;YACbC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNC,OAAOf,IAAIgB,CAAC,CAAC;YACbC,UAAU;QACZ;KACD;IAED,MAAMC,0BAA0BxB,UAAU;QACxCS;QACAgB,aAAaP;QACbX;QACAmB,YAAYd;IACd;IAEA,MAAMe,YAAY,MAAM5B,qBAAqB;QAC3C0B,aAAaP;QACbU,WAAW;QACXC,aAAa,CAAC;QACdvB;IACF;IAEA,qBACE,oBAACL,MAAM6B,QAAQ,sBACb,oBAACC,YAAIzB,IAAIgB,CAAC,CAAC,mCACX,oBAACU,WAAG1B,IAAIgB,CAAC,CAAC,uDACV,oBAACzB;QACCoC,QAAQ,CAAC,EAAEhB,UAAU,EAAED,SAAS,CAAC,EAAEJ,SAAS,eAAe,CAAC;QAC5DsB,cAAcP;QACdQ,QAAO;QACPC,UAAUtB;QACVuB,qBAAoB;qBAEpB,oBAACnC;QACCsB,yBAAyBA;QACzBZ,UAAUA;sBAEZ,oBAACd,kBAAYQ,IAAIgB,CAAC,CAAC;AAI3B,EAAC"}
1
+ {"version":3,"sources":["../../../src/views/CreateFirstUser/index.tsx"],"sourcesContent":["import type { FieldTypes } from 'payload/config'\nimport type { Field, WithServerSideProps as WithServerSidePropsType } from 'payload/types'\nimport type { AdminViewProps } from 'payload/types'\n\nimport { Form } from '@payloadcms/ui/forms/Form'\nimport { FormSubmit } from '@payloadcms/ui/forms/Submit'\nimport { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema'\nimport { WithServerSideProps as WithServerSidePropsGeneric } from '@payloadcms/ui/providers/ComponentMap'\nimport { mapFields } from '@payloadcms/ui/utilities/buildComponentMap'\nimport React from 'react'\n\nimport { CreateFirstUserFields } from './index.client.js'\nimport './index.scss'\n\nexport { generateCreateFirstUserMetadata } from './meta.js'\n\nexport const CreateFirstUserView: React.FC<AdminViewProps> = async ({ initPageResult }) => {\n const {\n req,\n req: {\n i18n,\n payload,\n payload: {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n },\n },\n } = initPageResult\n\n const fields: Field[] = [\n {\n name: 'email',\n type: 'email',\n label: req.t('general:emailAddress'),\n required: true,\n },\n {\n name: 'password',\n type: 'text',\n label: req.t('general:password'),\n required: true,\n },\n {\n name: 'confirm-password',\n type: 'text',\n label: req.t('authentication:confirmPassword'),\n required: true,\n },\n ]\n\n const WithServerSideProps: WithServerSidePropsType = ({ Component, ...rest }) => {\n return <WithServerSidePropsGeneric Component={Component} payload={payload} {...rest} />\n }\n\n const createFirstUserFieldMap = mapFields({\n WithServerSideProps,\n config,\n fieldSchema: fields,\n i18n,\n parentPath: userSlug,\n }).map((field) => {\n // Transform field types for the password and confirm-password fields\n if (field.name === 'password') {\n const type: keyof FieldTypes = 'password'\n\n return {\n ...field,\n type,\n }\n }\n if (field.name === 'confirm-password') {\n const type: keyof FieldTypes = 'confirmPassword'\n\n return {\n ...field,\n type,\n }\n }\n return field\n })\n\n const formState = await buildStateFromSchema({\n fieldSchema: fields,\n operation: 'create',\n preferences: {},\n req,\n })\n\n return (\n <React.Fragment>\n <h1>{req.t('general:welcome')}</h1>\n <p>{req.t('authentication:beginCreateFirstUser')}</p>\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/first-register`}\n initialState={formState}\n method=\"POST\"\n redirect={adminRoute}\n validationOperation=\"create\"\n >\n <CreateFirstUserFields\n createFirstUserFieldMap={createFirstUserFieldMap}\n userSlug={userSlug}\n />\n <FormSubmit>{req.t('general:create')}</FormSubmit>\n </Form>\n </React.Fragment>\n )\n}\n"],"names":["Form","FormSubmit","buildStateFromSchema","WithServerSideProps","WithServerSidePropsGeneric","mapFields","React","CreateFirstUserFields","generateCreateFirstUserMetadata","CreateFirstUserView","initPageResult","req","i18n","payload","config","admin","user","userSlug","routes","adminRoute","api","apiRoute","serverURL","fields","name","type","label","t","required","Component","rest","createFirstUserFieldMap","fieldSchema","parentPath","map","field","formState","operation","preferences","Fragment","h1","p","action","initialState","method","redirect","validationOperation"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,IAAI,QAAQ,4BAA2B;AAChD,SAASC,UAAU,QAAQ,8BAA6B;AACxD,SAASC,oBAAoB,QAAQ,4CAA2C;AAChF,SAASC,uBAAuBC,0BAA0B,QAAQ,wCAAuC;AACzG,SAASC,SAAS,QAAQ,6CAA4C;AACtE,OAAOC,WAAW,QAAO;AAEzB,SAASC,qBAAqB,QAAQ,oBAAmB;AAGzD,SAASC,+BAA+B,QAAQ,YAAW;AAE3D,OAAO,MAAMC,sBAAgD,OAAO,EAAEC,cAAc,EAAE;IACpF,MAAM,EACJC,GAAG,EACHA,KAAK,EACHC,IAAI,EACJC,OAAO,EACPA,SAAS,EACPC,MAAM,EACNA,QAAQ,EACNC,OAAO,EAAEC,MAAMC,QAAQ,EAAE,EACzBC,QAAQ,EAAEH,OAAOI,UAAU,EAAEC,KAAKC,QAAQ,EAAE,EAC5CC,SAAS,EACV,EACF,EACF,EACF,GAAGZ;IAEJ,MAAMa,SAAkB;QACtB;YACEC,MAAM;YACNC,MAAM;YACNC,OAAOf,IAAIgB,CAAC,CAAC;YACbC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNC,OAAOf,IAAIgB,CAAC,CAAC;YACbC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNC,OAAOf,IAAIgB,CAAC,CAAC;YACbC,UAAU;QACZ;KACD;IAED,MAAMzB,sBAA+C,CAAC,EAAE0B,SAAS,EAAE,GAAGC,MAAM;QAC1E,qBAAO,oBAAC1B;YAA2ByB,WAAWA;YAAWhB,SAASA;YAAU,GAAGiB,IAAI;;IACrF;IAEA,MAAMC,0BAA0B1B,UAAU;QACxCF;QACAW;QACAkB,aAAaT;QACbX;QACAqB,YAAYhB;IACd,GAAGiB,GAAG,CAAC,CAACC;QACN,qEAAqE;QACrE,IAAIA,MAAMX,IAAI,KAAK,YAAY;YAC7B,MAAMC,OAAyB;YAE/B,OAAO;gBACL,GAAGU,KAAK;gBACRV;YACF;QACF;QACA,IAAIU,MAAMX,IAAI,KAAK,oBAAoB;YACrC,MAAMC,OAAyB;YAE/B,OAAO;gBACL,GAAGU,KAAK;gBACRV;YACF;QACF;QACA,OAAOU;IACT;IAEA,MAAMC,YAAY,MAAMlC,qBAAqB;QAC3C8B,aAAaT;QACbc,WAAW;QACXC,aAAa,CAAC;QACd3B;IACF;IAEA,qBACE,oBAACL,MAAMiC,QAAQ,sBACb,oBAACC,YAAI7B,IAAIgB,CAAC,CAAC,mCACX,oBAACc,WAAG9B,IAAIgB,CAAC,CAAC,uDACV,oBAAC3B;QACC0C,QAAQ,CAAC,EAAEpB,UAAU,EAAED,SAAS,CAAC,EAAEJ,SAAS,eAAe,CAAC;QAC5D0B,cAAcP;QACdQ,QAAO;QACPC,UAAU1B;QACV2B,qBAAoB;qBAEpB,oBAACvC;QACCwB,yBAAyBA;QACzBd,UAAUA;sBAEZ,oBAAChB,kBAAYU,IAAIgB,CAAC,CAAC;AAI3B,EAAC"}