@payloadcms/next 3.0.0-beta.4 → 3.0.0-beta.41

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 (586) hide show
  1. package/dist/cjs/withPayload.cjs +46 -10
  2. package/dist/cjs/withPayload.cjs.map +1 -1
  3. package/dist/elements/LeaveWithoutSaving/index.js +35 -15
  4. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  5. package/dist/exports/routes.d.ts +1 -1
  6. package/dist/exports/routes.d.ts.map +1 -1
  7. package/dist/exports/routes.js +1 -1
  8. package/dist/exports/routes.js.map +1 -1
  9. package/dist/exports/utilities.d.ts +5 -1
  10. package/dist/exports/utilities.d.ts.map +1 -1
  11. package/dist/exports/utilities.js +5 -1
  12. package/dist/exports/utilities.js.map +1 -1
  13. package/dist/exports/views.d.ts +2 -1
  14. package/dist/exports/views.d.ts.map +1 -1
  15. package/dist/exports/views.js +2 -1
  16. package/dist/exports/views.js.map +1 -1
  17. package/dist/{next-fileupload → fetchAPI-multipart}/fileFactory.d.ts +2 -2
  18. package/dist/fetchAPI-multipart/fileFactory.d.ts.map +1 -0
  19. package/dist/fetchAPI-multipart/fileFactory.js.map +1 -0
  20. package/dist/{next-fileupload → fetchAPI-multipart}/handlers.d.ts +2 -2
  21. package/dist/fetchAPI-multipart/handlers.d.ts.map +1 -0
  22. package/dist/fetchAPI-multipart/handlers.js.map +1 -0
  23. package/dist/{next-fileupload → fetchAPI-multipart}/index.d.ts +10 -12
  24. package/dist/fetchAPI-multipart/index.d.ts.map +1 -0
  25. package/dist/{next-fileupload → fetchAPI-multipart}/index.js +3 -5
  26. package/dist/fetchAPI-multipart/index.js.map +1 -0
  27. package/dist/fetchAPI-multipart/isEligibleRequest.d.ts.map +1 -0
  28. package/dist/{next-fileupload → fetchAPI-multipart}/isEligibleRequest.js +1 -1
  29. package/dist/fetchAPI-multipart/isEligibleRequest.js.map +1 -0
  30. package/dist/fetchAPI-multipart/processMultipart.d.ts +8 -0
  31. package/dist/fetchAPI-multipart/processMultipart.d.ts.map +1 -0
  32. package/dist/{next-fileupload → fetchAPI-multipart}/processMultipart.js +43 -14
  33. package/dist/fetchAPI-multipart/processMultipart.js.map +1 -0
  34. package/dist/fetchAPI-multipart/processNested.d.ts.map +1 -0
  35. package/dist/{next-fileupload → fetchAPI-multipart}/processNested.js +2 -1
  36. package/dist/fetchAPI-multipart/processNested.js.map +1 -0
  37. package/dist/fetchAPI-multipart/uploadTimer.d.ts.map +1 -0
  38. package/dist/fetchAPI-multipart/uploadTimer.js.map +1 -0
  39. package/dist/{next-fileupload → fetchAPI-multipart}/utilities.d.ts +4 -4
  40. package/dist/fetchAPI-multipart/utilities.d.ts.map +1 -0
  41. package/dist/{next-fileupload → fetchAPI-multipart}/utilities.js +4 -4
  42. package/dist/fetchAPI-multipart/utilities.js.map +1 -0
  43. package/dist/fetchAPI-stream-file/index.d.ts.map +1 -0
  44. package/dist/fetchAPI-stream-file/index.js.map +1 -0
  45. package/dist/layouts/Root/index.d.ts.map +1 -1
  46. package/dist/layouts/Root/index.js +48 -16
  47. package/dist/layouts/Root/index.js.map +1 -1
  48. package/dist/prod/payload/payload-favicon-dark.png +0 -0
  49. package/dist/prod/payload/payload-favicon-light.png +0 -0
  50. package/dist/prod/styles.css +1 -1
  51. package/dist/routes/graphql/handler.d.ts.map +1 -1
  52. package/dist/routes/graphql/handler.js +22 -10
  53. package/dist/routes/graphql/handler.js.map +1 -1
  54. package/dist/routes/index.d.ts +1 -1
  55. package/dist/routes/index.d.ts.map +1 -1
  56. package/dist/routes/index.js +1 -1
  57. package/dist/routes/index.js.map +1 -1
  58. package/dist/routes/rest/auth/access.d.ts.map +1 -1
  59. package/dist/routes/rest/auth/access.js +19 -4
  60. package/dist/routes/rest/auth/access.js.map +1 -1
  61. package/dist/routes/rest/auth/forgotPassword.d.ts.map +1 -1
  62. package/dist/routes/rest/auth/forgotPassword.js +7 -2
  63. package/dist/routes/rest/auth/forgotPassword.js.map +1 -1
  64. package/dist/routes/rest/auth/init.d.ts.map +1 -1
  65. package/dist/routes/rest/auth/init.js +6 -0
  66. package/dist/routes/rest/auth/init.js.map +1 -1
  67. package/dist/routes/rest/auth/login.d.ts.map +1 -1
  68. package/dist/routes/rest/auth/login.js +8 -5
  69. package/dist/routes/rest/auth/login.js.map +1 -1
  70. package/dist/routes/rest/auth/logout.d.ts.map +1 -1
  71. package/dist/routes/rest/auth/logout.js +12 -7
  72. package/dist/routes/rest/auth/logout.js.map +1 -1
  73. package/dist/routes/rest/auth/me.d.ts.map +1 -1
  74. package/dist/routes/rest/auth/me.js +5 -0
  75. package/dist/routes/rest/auth/me.js.map +1 -1
  76. package/dist/routes/rest/auth/refresh.d.ts.map +1 -1
  77. package/dist/routes/rest/auth/refresh.js +11 -7
  78. package/dist/routes/rest/auth/refresh.js.map +1 -1
  79. package/dist/routes/rest/auth/registerFirstUser.d.ts.map +1 -1
  80. package/dist/routes/rest/auth/registerFirstUser.js +8 -5
  81. package/dist/routes/rest/auth/registerFirstUser.js.map +1 -1
  82. package/dist/routes/rest/auth/resetPassword.d.ts.map +1 -1
  83. package/dist/routes/rest/auth/resetPassword.js +8 -5
  84. package/dist/routes/rest/auth/resetPassword.js.map +1 -1
  85. package/dist/routes/rest/auth/unlock.d.ts.map +1 -1
  86. package/dist/routes/rest/auth/unlock.js +7 -2
  87. package/dist/routes/rest/auth/unlock.js.map +1 -1
  88. package/dist/routes/rest/auth/verifyEmail.d.ts.map +1 -1
  89. package/dist/routes/rest/auth/verifyEmail.js +7 -2
  90. package/dist/routes/rest/auth/verifyEmail.js.map +1 -1
  91. package/dist/routes/rest/buildFormState.d.ts +2 -4
  92. package/dist/routes/rest/buildFormState.d.ts.map +1 -1
  93. package/dist/routes/rest/buildFormState.js +30 -145
  94. package/dist/routes/rest/buildFormState.js.map +1 -1
  95. package/dist/routes/rest/collections/count.d.ts +3 -0
  96. package/dist/routes/rest/collections/count.d.ts.map +1 -0
  97. package/dist/routes/rest/collections/count.js +15 -0
  98. package/dist/routes/rest/collections/count.js.map +1 -0
  99. package/dist/routes/rest/collections/create.d.ts.map +1 -1
  100. package/dist/routes/rest/collections/create.js +5 -0
  101. package/dist/routes/rest/collections/create.js.map +1 -1
  102. package/dist/routes/rest/collections/delete.d.ts.map +1 -1
  103. package/dist/routes/rest/collections/delete.js +7 -0
  104. package/dist/routes/rest/collections/delete.js.map +1 -1
  105. package/dist/routes/rest/collections/deleteByID.d.ts.map +1 -1
  106. package/dist/routes/rest/collections/deleteByID.js +7 -0
  107. package/dist/routes/rest/collections/deleteByID.js.map +1 -1
  108. package/dist/routes/rest/collections/docAccess.d.ts.map +1 -1
  109. package/dist/routes/rest/collections/docAccess.js +5 -0
  110. package/dist/routes/rest/collections/docAccess.js.map +1 -1
  111. package/dist/routes/rest/collections/duplicate.d.ts.map +1 -1
  112. package/dist/routes/rest/collections/duplicate.js +5 -0
  113. package/dist/routes/rest/collections/duplicate.js.map +1 -1
  114. package/dist/routes/rest/collections/find.d.ts.map +1 -1
  115. package/dist/routes/rest/collections/find.js +5 -0
  116. package/dist/routes/rest/collections/find.js.map +1 -1
  117. package/dist/routes/rest/collections/findByID.d.ts.map +1 -1
  118. package/dist/routes/rest/collections/findByID.js +5 -0
  119. package/dist/routes/rest/collections/findByID.js.map +1 -1
  120. package/dist/routes/rest/collections/findVersionByID.d.ts.map +1 -1
  121. package/dist/routes/rest/collections/findVersionByID.js +5 -0
  122. package/dist/routes/rest/collections/findVersionByID.js.map +1 -1
  123. package/dist/routes/rest/collections/findVersions.d.ts.map +1 -1
  124. package/dist/routes/rest/collections/findVersions.js +5 -0
  125. package/dist/routes/rest/collections/findVersions.js.map +1 -1
  126. package/dist/routes/rest/collections/preview.d.ts.map +1 -1
  127. package/dist/routes/rest/collections/preview.js +7 -1
  128. package/dist/routes/rest/collections/preview.js.map +1 -1
  129. package/dist/routes/rest/collections/restoreVersion.d.ts.map +1 -1
  130. package/dist/routes/rest/collections/restoreVersion.js +5 -0
  131. package/dist/routes/rest/collections/restoreVersion.js.map +1 -1
  132. package/dist/routes/rest/collections/update.d.ts.map +1 -1
  133. package/dist/routes/rest/collections/update.js +7 -0
  134. package/dist/routes/rest/collections/update.js.map +1 -1
  135. package/dist/routes/rest/collections/updateByID.d.ts.map +1 -1
  136. package/dist/routes/rest/collections/updateByID.js +5 -0
  137. package/dist/routes/rest/collections/updateByID.js.map +1 -1
  138. package/dist/routes/rest/files/checkFileAccess.d.ts +3 -3
  139. package/dist/routes/rest/files/checkFileAccess.d.ts.map +1 -1
  140. package/dist/routes/rest/files/checkFileAccess.js +1 -0
  141. package/dist/routes/rest/files/checkFileAccess.js.map +1 -1
  142. package/dist/routes/rest/files/getFile.d.ts +2 -2
  143. package/dist/routes/rest/files/getFile.d.ts.map +1 -1
  144. package/dist/routes/rest/files/getFile.js +19 -10
  145. package/dist/routes/rest/files/getFile.js.map +1 -1
  146. package/dist/routes/rest/files/getFileTypeFallback.d.ts +7 -0
  147. package/dist/routes/rest/files/getFileTypeFallback.d.ts.map +1 -0
  148. package/dist/routes/rest/files/getFileTypeFallback.js +21 -0
  149. package/dist/routes/rest/files/getFileTypeFallback.js.map +1 -0
  150. package/dist/routes/rest/globals/docAccess.d.ts.map +1 -1
  151. package/dist/routes/rest/globals/docAccess.js +5 -0
  152. package/dist/routes/rest/globals/docAccess.js.map +1 -1
  153. package/dist/routes/rest/globals/findOne.d.ts.map +1 -1
  154. package/dist/routes/rest/globals/findOne.js +5 -0
  155. package/dist/routes/rest/globals/findOne.js.map +1 -1
  156. package/dist/routes/rest/globals/findVersionByID.d.ts.map +1 -1
  157. package/dist/routes/rest/globals/findVersionByID.js +5 -0
  158. package/dist/routes/rest/globals/findVersionByID.js.map +1 -1
  159. package/dist/routes/rest/globals/findVersions.d.ts.map +1 -1
  160. package/dist/routes/rest/globals/findVersions.js +5 -0
  161. package/dist/routes/rest/globals/findVersions.js.map +1 -1
  162. package/dist/routes/rest/globals/preview.d.ts.map +1 -1
  163. package/dist/routes/rest/globals/preview.js +7 -1
  164. package/dist/routes/rest/globals/preview.js.map +1 -1
  165. package/dist/routes/rest/globals/restoreVersion.d.ts.map +1 -1
  166. package/dist/routes/rest/globals/restoreVersion.js +5 -0
  167. package/dist/routes/rest/globals/restoreVersion.js.map +1 -1
  168. package/dist/routes/rest/globals/update.d.ts.map +1 -1
  169. package/dist/routes/rest/globals/update.js +5 -0
  170. package/dist/routes/rest/globals/update.js.map +1 -1
  171. package/dist/routes/rest/index.d.ts +1 -0
  172. package/dist/routes/rest/index.d.ts.map +1 -1
  173. package/dist/routes/rest/index.js +338 -215
  174. package/dist/routes/rest/index.js.map +1 -1
  175. package/dist/routes/rest/og/image.d.ts +9 -0
  176. package/dist/routes/rest/og/image.d.ts.map +1 -0
  177. package/dist/routes/rest/og/image.js +79 -0
  178. package/dist/routes/rest/og/image.js.map +1 -0
  179. package/dist/routes/rest/og/index.d.ts +11 -0
  180. package/dist/routes/rest/og/index.d.ts.map +1 -0
  181. package/dist/routes/rest/og/index.js +73 -0
  182. package/dist/routes/rest/og/index.js.map +1 -0
  183. package/dist/routes/rest/og/roboto-regular.woff +0 -0
  184. package/dist/routes/rest/routeError.d.ts +5 -4
  185. package/dist/routes/rest/routeError.d.ts.map +1 -1
  186. package/dist/routes/rest/routeError.js +25 -11
  187. package/dist/routes/rest/routeError.js.map +1 -1
  188. package/dist/routes/rest/types.d.ts +7 -7
  189. package/dist/routes/rest/types.d.ts.map +1 -1
  190. package/dist/routes/rest/types.js.map +1 -1
  191. package/dist/scss/app.scss +2 -3
  192. package/dist/scss/vars.scss +0 -7
  193. package/dist/utilities/addDataAndFileToRequest.d.ts +11 -0
  194. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -0
  195. package/dist/utilities/addDataAndFileToRequest.js +45 -0
  196. package/dist/utilities/addDataAndFileToRequest.js.map +1 -0
  197. package/dist/utilities/addLocalesToRequest.d.ts +20 -0
  198. package/dist/utilities/addLocalesToRequest.d.ts.map +1 -0
  199. package/dist/utilities/addLocalesToRequest.js +44 -0
  200. package/dist/utilities/addLocalesToRequest.js.map +1 -0
  201. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  202. package/dist/utilities/createPayloadRequest.js +15 -28
  203. package/dist/utilities/createPayloadRequest.js.map +1 -1
  204. package/dist/utilities/getNextRequestI18n.d.ts +1 -1
  205. package/dist/utilities/getNextRequestI18n.js +1 -1
  206. package/dist/utilities/getNextRequestI18n.js.map +1 -1
  207. package/dist/utilities/getPayloadHMR.d.ts +2 -1
  208. package/dist/utilities/getPayloadHMR.d.ts.map +1 -1
  209. package/dist/utilities/getPayloadHMR.js +25 -20
  210. package/dist/utilities/getPayloadHMR.js.map +1 -1
  211. package/dist/utilities/getRequestLanguage.d.ts +1 -1
  212. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  213. package/dist/utilities/getRequestLanguage.js +4 -5
  214. package/dist/utilities/getRequestLanguage.js.map +1 -1
  215. package/dist/utilities/getRequestTheme.d.ts +11 -0
  216. package/dist/utilities/getRequestTheme.d.ts.map +1 -0
  217. package/dist/utilities/getRequestTheme.js +19 -0
  218. package/dist/utilities/getRequestTheme.js.map +1 -0
  219. package/dist/utilities/headersWithCors.d.ts +8 -0
  220. package/dist/utilities/headersWithCors.d.ts.map +1 -0
  221. package/dist/utilities/headersWithCors.js +17 -0
  222. package/dist/utilities/headersWithCors.js.map +1 -0
  223. package/dist/utilities/initPage/handleAdminPage.d.ts +13 -0
  224. package/dist/utilities/initPage/handleAdminPage.d.ts.map +1 -0
  225. package/dist/utilities/initPage/handleAdminPage.js +35 -0
  226. package/dist/utilities/initPage/handleAdminPage.js.map +1 -0
  227. package/dist/utilities/initPage/handleAuthRedirect.d.ts +9 -0
  228. package/dist/utilities/initPage/handleAuthRedirect.d.ts.map +1 -0
  229. package/dist/utilities/initPage/handleAuthRedirect.js +27 -0
  230. package/dist/utilities/initPage/handleAuthRedirect.js.map +1 -0
  231. package/dist/utilities/initPage/index.d.ts +4 -0
  232. package/dist/utilities/initPage/index.d.ts.map +1 -0
  233. package/dist/utilities/{initPage.js → initPage/index.js} +33 -31
  234. package/dist/utilities/initPage/index.js.map +1 -0
  235. package/dist/utilities/initPage/shared.d.ts +4 -0
  236. package/dist/utilities/initPage/shared.d.ts.map +1 -0
  237. package/dist/utilities/initPage/shared.js +18 -0
  238. package/dist/utilities/initPage/shared.js.map +1 -0
  239. package/dist/utilities/initPage/types.d.ts +24 -0
  240. package/dist/utilities/initPage/types.d.ts.map +1 -0
  241. package/dist/utilities/initPage/types.js.map +1 -0
  242. package/dist/utilities/meta.d.ts +4 -8
  243. package/dist/utilities/meta.d.ts.map +1 -1
  244. package/dist/utilities/meta.js +64 -25
  245. package/dist/utilities/meta.js.map +1 -1
  246. package/dist/views/API/LocaleSelector/index.d.ts +9 -0
  247. package/dist/views/API/LocaleSelector/index.d.ts.map +1 -0
  248. package/dist/views/API/LocaleSelector/index.js +16 -0
  249. package/dist/views/API/LocaleSelector/index.js.map +1 -0
  250. package/dist/views/API/RenderJSON/index.js +100 -68
  251. package/dist/views/API/RenderJSON/index.js.map +1 -1
  252. package/dist/views/API/index.client.d.ts.map +1 -1
  253. package/dist/views/API/index.client.js +128 -94
  254. package/dist/views/API/index.client.js.map +1 -1
  255. package/dist/views/API/index.js +2 -1
  256. package/dist/views/API/index.js.map +1 -1
  257. package/dist/views/API/meta.d.ts.map +1 -1
  258. package/dist/views/API/meta.js +13 -6
  259. package/dist/views/API/meta.js.map +1 -1
  260. package/dist/views/Account/Settings/LanguageSelector.d.ts +6 -0
  261. package/dist/views/Account/Settings/LanguageSelector.d.ts.map +1 -0
  262. package/dist/views/Account/Settings/LanguageSelector.js +19 -0
  263. package/dist/views/Account/Settings/LanguageSelector.js.map +1 -0
  264. package/dist/views/Account/Settings/index.d.ts +4 -0
  265. package/dist/views/Account/Settings/index.d.ts.map +1 -1
  266. package/dist/views/Account/Settings/index.js +24 -20
  267. package/dist/views/Account/Settings/index.js.map +1 -1
  268. package/dist/views/Account/ToggleTheme/index.js +2 -1
  269. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  270. package/dist/views/Account/index.d.ts.map +1 -1
  271. package/dist/views/Account/index.js +66 -30
  272. package/dist/views/Account/index.js.map +1 -1
  273. package/dist/views/Account/meta.d.ts.map +1 -1
  274. package/dist/views/Account/meta.js +4 -5
  275. package/dist/views/Account/meta.js.map +1 -1
  276. package/dist/views/CreateFirstUser/index.client.d.ts +3 -3
  277. package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
  278. package/dist/views/CreateFirstUser/index.client.js +61 -9
  279. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  280. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  281. package/dist/views/CreateFirstUser/index.js +21 -31
  282. package/dist/views/CreateFirstUser/index.js.map +1 -1
  283. package/dist/views/CreateFirstUser/index.scss +2 -12
  284. package/dist/views/CreateFirstUser/meta.d.ts.map +1 -1
  285. package/dist/views/CreateFirstUser/meta.js +4 -5
  286. package/dist/views/CreateFirstUser/meta.js.map +1 -1
  287. package/dist/views/Dashboard/Default/index.d.ts +5 -3
  288. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  289. package/dist/views/Dashboard/Default/index.js +118 -20
  290. package/dist/views/Dashboard/Default/index.js.map +1 -1
  291. package/dist/views/Dashboard/index.d.ts.map +1 -1
  292. package/dist/views/Dashboard/index.js +51 -11
  293. package/dist/views/Dashboard/index.js.map +1 -1
  294. package/dist/views/Dashboard/meta.d.ts.map +1 -1
  295. package/dist/views/Dashboard/meta.js +8 -5
  296. package/dist/views/Dashboard/meta.js.map +1 -1
  297. package/dist/views/Document/getCustomViewByKey.d.ts.map +1 -1
  298. package/dist/views/Document/getCustomViewByKey.js +2 -1
  299. package/dist/views/Document/getCustomViewByKey.js.map +1 -1
  300. package/dist/views/Document/getDocumentData.d.ts +10 -0
  301. package/dist/views/Document/getDocumentData.d.ts.map +1 -0
  302. package/dist/views/Document/getDocumentData.js +31 -0
  303. package/dist/views/Document/getDocumentData.js.map +1 -0
  304. package/dist/views/Document/getDocumentPermissions.d.ts +14 -0
  305. package/dist/views/Document/getDocumentPermissions.d.ts.map +1 -0
  306. package/dist/views/Document/getDocumentPermissions.js +83 -0
  307. package/dist/views/Document/getDocumentPermissions.js.map +1 -0
  308. package/dist/views/Document/getMetaBySegment.d.ts +0 -1
  309. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  310. package/dist/views/Document/getMetaBySegment.js +1 -1
  311. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  312. package/dist/views/Document/getViewsFromConfig.d.ts.map +1 -1
  313. package/dist/views/Document/getViewsFromConfig.js +172 -171
  314. package/dist/views/Document/getViewsFromConfig.js.map +1 -1
  315. package/dist/views/Document/index.d.ts.map +1 -1
  316. package/dist/views/Document/index.js +70 -46
  317. package/dist/views/Document/index.js.map +1 -1
  318. package/dist/views/Edit/Default/Auth/APIKey.d.ts +1 -0
  319. package/dist/views/Edit/Default/Auth/APIKey.d.ts.map +1 -1
  320. package/dist/views/Edit/Default/Auth/APIKey.js +55 -32
  321. package/dist/views/Edit/Default/Auth/APIKey.js.map +1 -1
  322. package/dist/views/Edit/Default/Auth/index.d.ts.map +1 -1
  323. package/dist/views/Edit/Default/Auth/index.js +85 -50
  324. package/dist/views/Edit/Default/Auth/index.js.map +1 -1
  325. package/dist/views/Edit/Default/{SetStepNav → SetDocumentStepNav}/index.d.ts +1 -1
  326. package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts.map +1 -0
  327. package/dist/views/Edit/Default/SetDocumentStepNav/index.js +74 -0
  328. package/dist/views/Edit/Default/SetDocumentStepNav/index.js.map +1 -0
  329. package/dist/views/Edit/Default/index.d.ts.map +1 -1
  330. package/dist/views/Edit/Default/index.js +80 -69
  331. package/dist/views/Edit/Default/index.js.map +1 -1
  332. package/dist/views/Edit/index.client.d.ts.map +1 -1
  333. package/dist/views/Edit/index.client.js +11 -7
  334. package/dist/views/Edit/index.client.js.map +1 -1
  335. package/dist/views/Edit/index.js +2 -1
  336. package/dist/views/Edit/index.js.map +1 -1
  337. package/dist/views/Edit/meta.d.ts.map +1 -1
  338. package/dist/views/Edit/meta.js +17 -15
  339. package/dist/views/Edit/meta.js.map +1 -1
  340. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts +3 -0
  341. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -0
  342. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +80 -0
  343. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -0
  344. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  345. package/dist/views/ForgotPassword/index.js +39 -55
  346. package/dist/views/ForgotPassword/index.js.map +1 -1
  347. package/dist/views/ForgotPassword/meta.d.ts.map +1 -1
  348. package/dist/views/ForgotPassword/meta.js +4 -5
  349. package/dist/views/ForgotPassword/meta.js.map +1 -1
  350. package/dist/views/List/Default/index.d.ts.map +1 -1
  351. package/dist/views/List/Default/index.js +162 -87
  352. package/dist/views/List/Default/index.js.map +1 -1
  353. package/dist/views/List/index.d.ts.map +1 -1
  354. package/dist/views/List/index.js +58 -38
  355. package/dist/views/List/index.js.map +1 -1
  356. package/dist/views/List/meta.d.ts.map +1 -1
  357. package/dist/views/List/meta.js +4 -2
  358. package/dist/views/List/meta.js.map +1 -1
  359. package/dist/views/LivePreview/Context/context.d.ts +1 -1
  360. package/dist/views/LivePreview/Context/context.d.ts.map +1 -1
  361. package/dist/views/LivePreview/Context/context.js.map +1 -1
  362. package/dist/views/LivePreview/Context/index.js +9 -6
  363. package/dist/views/LivePreview/Context/index.js.map +1 -1
  364. package/dist/views/LivePreview/Device/index.js +5 -3
  365. package/dist/views/LivePreview/Device/index.js.map +1 -1
  366. package/dist/views/LivePreview/DeviceContainer/index.js +5 -3
  367. package/dist/views/LivePreview/DeviceContainer/index.js.map +1 -1
  368. package/dist/views/LivePreview/IFrame/index.js +2 -1
  369. package/dist/views/LivePreview/IFrame/index.js.map +1 -1
  370. package/dist/views/LivePreview/Preview/index.d.ts.map +1 -1
  371. package/dist/views/LivePreview/Preview/index.js +48 -14
  372. package/dist/views/LivePreview/Preview/index.js.map +1 -1
  373. package/dist/views/LivePreview/Toolbar/Controls/index.d.ts.map +1 -1
  374. package/dist/views/LivePreview/Toolbar/Controls/index.js +111 -61
  375. package/dist/views/LivePreview/Toolbar/Controls/index.js.map +1 -1
  376. package/dist/views/LivePreview/Toolbar/SizeInput/index.js +2 -1
  377. package/dist/views/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  378. package/dist/views/LivePreview/Toolbar/index.js +29 -14
  379. package/dist/views/LivePreview/Toolbar/index.js.map +1 -1
  380. package/dist/views/LivePreview/ToolbarArea/index.js +5 -3
  381. package/dist/views/LivePreview/ToolbarArea/index.js.map +1 -1
  382. package/dist/views/LivePreview/index.client.d.ts.map +1 -1
  383. package/dist/views/LivePreview/index.client.js +125 -90
  384. package/dist/views/LivePreview/index.client.js.map +1 -1
  385. package/dist/views/LivePreview/index.js +2 -1
  386. package/dist/views/LivePreview/index.js.map +1 -1
  387. package/dist/views/LivePreview/meta.d.ts.map +1 -1
  388. package/dist/views/LivePreview/meta.js +6 -22
  389. package/dist/views/LivePreview/meta.js.map +1 -1
  390. package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
  391. package/dist/views/Login/LoginForm/index.js +61 -22
  392. package/dist/views/Login/LoginForm/index.js.map +1 -1
  393. package/dist/views/Login/index.d.ts.map +1 -1
  394. package/dist/views/Login/index.js +50 -14
  395. package/dist/views/Login/index.js.map +1 -1
  396. package/dist/views/Login/meta.d.ts.map +1 -1
  397. package/dist/views/Login/meta.js +4 -5
  398. package/dist/views/Login/meta.js.map +1 -1
  399. package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
  400. package/dist/views/Logout/LogoutClient.js +21 -8
  401. package/dist/views/Logout/LogoutClient.js.map +1 -1
  402. package/dist/views/Logout/index.d.ts.map +1 -1
  403. package/dist/views/Logout/index.js +10 -11
  404. package/dist/views/Logout/index.js.map +1 -1
  405. package/dist/views/Logout/meta.d.ts.map +1 -1
  406. package/dist/views/Logout/meta.js +2 -4
  407. package/dist/views/Logout/meta.js.map +1 -1
  408. package/dist/views/NotFound/index.client.js +22 -10
  409. package/dist/views/NotFound/index.client.js.map +1 -1
  410. package/dist/views/NotFound/index.d.ts +1 -1
  411. package/dist/views/NotFound/index.d.ts.map +1 -1
  412. package/dist/views/NotFound/index.js +27 -12
  413. package/dist/views/NotFound/index.js.map +1 -1
  414. package/dist/views/NotFound/meta.d.ts.map +1 -1
  415. package/dist/views/NotFound/meta.js +2 -4
  416. package/dist/views/NotFound/meta.js.map +1 -1
  417. package/dist/views/ResetPassword/index.client.d.ts +7 -0
  418. package/dist/views/ResetPassword/index.client.d.ts.map +1 -0
  419. package/dist/views/ResetPassword/index.client.js +90 -0
  420. package/dist/views/ResetPassword/index.client.js.map +1 -0
  421. package/dist/views/ResetPassword/index.d.ts.map +1 -1
  422. package/dist/views/ResetPassword/index.js +49 -53
  423. package/dist/views/ResetPassword/index.js.map +1 -1
  424. package/dist/views/ResetPassword/index.scss +2 -12
  425. package/dist/views/ResetPassword/meta.d.ts.map +1 -1
  426. package/dist/views/ResetPassword/meta.js +4 -5
  427. package/dist/views/ResetPassword/meta.js.map +1 -1
  428. package/dist/views/Root/getViewFromConfig.d.ts +1 -1
  429. package/dist/views/Root/getViewFromConfig.d.ts.map +1 -1
  430. package/dist/views/Root/getViewFromConfig.js +29 -12
  431. package/dist/views/Root/getViewFromConfig.js.map +1 -1
  432. package/dist/views/Root/index.d.ts +1 -0
  433. package/dist/views/Root/index.d.ts.map +1 -1
  434. package/dist/views/Root/index.js +42 -16
  435. package/dist/views/Root/index.js.map +1 -1
  436. package/dist/views/Root/meta.d.ts.map +1 -1
  437. package/dist/views/Root/meta.js +0 -19
  438. package/dist/views/Root/meta.js.map +1 -1
  439. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  440. package/dist/views/Unauthorized/index.js +20 -9
  441. package/dist/views/Unauthorized/index.js.map +1 -1
  442. package/dist/views/Unauthorized/meta.d.ts.map +1 -1
  443. package/dist/views/Unauthorized/meta.js +4 -5
  444. package/dist/views/Unauthorized/meta.js.map +1 -1
  445. package/dist/views/Verify/index.d.ts.map +1 -1
  446. package/dist/views/Verify/index.js +23 -8
  447. package/dist/views/Verify/index.js.map +1 -1
  448. package/dist/views/Verify/meta.d.ts.map +1 -1
  449. package/dist/views/Verify/meta.js +4 -5
  450. package/dist/views/Verify/meta.js.map +1 -1
  451. package/dist/views/Version/Default/index.js +83 -57
  452. package/dist/views/Version/Default/index.js.map +1 -1
  453. package/dist/views/Version/RenderFieldsToDiff/Label/index.js +5 -3
  454. package/dist/views/Version/RenderFieldsToDiff/Label/index.js.map +1 -1
  455. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +65 -50
  456. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  457. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js +30 -18
  458. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js.map +1 -1
  459. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +23 -12
  460. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  461. package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js +2 -1
  462. package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js.map +1 -1
  463. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +22 -11
  464. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  465. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +31 -30
  466. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  467. package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js +2 -1
  468. package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js.map +1 -1
  469. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +22 -11
  470. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  471. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts +0 -2
  472. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
  473. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +2 -2
  474. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +1 -1
  475. package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -1
  476. package/dist/views/Version/RenderFieldsToDiff/index.js +90 -87
  477. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  478. package/dist/views/Version/RenderFieldsToDiff/types.d.ts +2 -2
  479. package/dist/views/Version/RenderFieldsToDiff/types.d.ts.map +1 -1
  480. package/dist/views/Version/RenderFieldsToDiff/types.js.map +1 -1
  481. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  482. package/dist/views/Version/Restore/index.js +49 -26
  483. package/dist/views/Version/Restore/index.js.map +1 -1
  484. package/dist/views/Version/Restore/index.scss +4 -2
  485. package/dist/views/Version/SelectComparison/index.js +32 -24
  486. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  487. package/dist/views/Version/SelectLocales/index.d.ts.map +1 -1
  488. package/dist/views/Version/SelectLocales/index.js +18 -11
  489. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  490. package/dist/views/Version/index.js +2 -1
  491. package/dist/views/Version/index.js.map +1 -1
  492. package/dist/views/Version/meta.d.ts.map +1 -1
  493. package/dist/views/Version/meta.js +5 -2
  494. package/dist/views/Version/meta.js.map +1 -1
  495. package/dist/views/Versions/buildColumns.js +7 -6
  496. package/dist/views/Versions/buildColumns.js.map +1 -1
  497. package/dist/views/Versions/cells/AutosaveCell/index.js +25 -3
  498. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  499. package/dist/views/Versions/cells/CreatedAt/index.js +9 -7
  500. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  501. package/dist/views/Versions/cells/ID/index.js +4 -1
  502. package/dist/views/Versions/cells/ID/index.js.map +1 -1
  503. package/dist/views/Versions/index.client.js +61 -29
  504. package/dist/views/Versions/index.client.js.map +1 -1
  505. package/dist/views/Versions/index.js +32 -23
  506. package/dist/views/Versions/index.js.map +1 -1
  507. package/dist/views/Versions/meta.d.ts.map +1 -1
  508. package/dist/views/Versions/meta.js +8 -4
  509. package/dist/views/Versions/meta.js.map +1 -1
  510. package/dist/withPayload.d.ts.map +1 -1
  511. package/dist/withPayload.js +46 -10
  512. package/dist/withPayload.js.map +1 -1
  513. package/package.json +41 -37
  514. package/dist/next-fileupload/fileFactory.d.ts.map +0 -1
  515. package/dist/next-fileupload/fileFactory.js.map +0 -1
  516. package/dist/next-fileupload/handlers.d.ts.map +0 -1
  517. package/dist/next-fileupload/handlers.js.map +0 -1
  518. package/dist/next-fileupload/index.d.ts.map +0 -1
  519. package/dist/next-fileupload/index.js.map +0 -1
  520. package/dist/next-fileupload/isEligibleRequest.d.ts.map +0 -1
  521. package/dist/next-fileupload/isEligibleRequest.js.map +0 -1
  522. package/dist/next-fileupload/processMultipart.d.ts +0 -8
  523. package/dist/next-fileupload/processMultipart.d.ts.map +0 -1
  524. package/dist/next-fileupload/processMultipart.js.map +0 -1
  525. package/dist/next-fileupload/processNested.d.ts.map +0 -1
  526. package/dist/next-fileupload/processNested.js.map +0 -1
  527. package/dist/next-fileupload/uploadTimer.d.ts.map +0 -1
  528. package/dist/next-fileupload/uploadTimer.js.map +0 -1
  529. package/dist/next-fileupload/utilities.d.ts.map +0 -1
  530. package/dist/next-fileupload/utilities.js.map +0 -1
  531. package/dist/next-stream-file/index.d.ts.map +0 -1
  532. package/dist/next-stream-file/index.js.map +0 -1
  533. package/dist/prod/payload/SuisseIntl-Bold.woff +0 -0
  534. package/dist/prod/payload/SuisseIntl-Bold.woff2 +0 -0
  535. package/dist/prod/payload/SuisseIntl-Medium.woff +0 -0
  536. package/dist/prod/payload/SuisseIntl-Medium.woff2 +0 -0
  537. package/dist/prod/payload/SuisseIntl-SemiBold.woff +0 -0
  538. package/dist/prod/payload/SuisseIntl-SemiBold.woff2 +0 -0
  539. package/dist/prod/payload/SuisseIntl.woff +0 -0
  540. package/dist/prod/payload/SuisseIntl.woff2 +0 -0
  541. package/dist/prod/payload/merriweather-v30-latin-900.woff +0 -0
  542. package/dist/prod/payload/merriweather-v30-latin-900.woff2 +0 -0
  543. package/dist/prod/payload/merriweather-v30-latin-900italic.woff +0 -0
  544. package/dist/prod/payload/merriweather-v30-latin-900italic.woff2 +0 -0
  545. package/dist/prod/payload/merriweather-v30-latin-italic.woff +0 -0
  546. package/dist/prod/payload/merriweather-v30-latin-italic.woff2 +0 -0
  547. package/dist/prod/payload/merriweather-v30-latin-regular.woff +0 -0
  548. package/dist/prod/payload/merriweather-v30-latin-regular.woff2 +0 -0
  549. package/dist/scss/fonts.scss +0 -75
  550. package/dist/utilities/buildFieldSchemaMap/index.d.ts +0 -4
  551. package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +0 -1
  552. package/dist/utilities/buildFieldSchemaMap/index.js +0 -28
  553. package/dist/utilities/buildFieldSchemaMap/index.js.map +0 -1
  554. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts +0 -14
  555. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +0 -1
  556. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +0 -72
  557. package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +0 -1
  558. package/dist/utilities/buildFieldSchemaMap/types.d.ts +0 -3
  559. package/dist/utilities/buildFieldSchemaMap/types.d.ts.map +0 -1
  560. package/dist/utilities/buildFieldSchemaMap/types.js.map +0 -1
  561. package/dist/utilities/getDataAndFile.d.ts +0 -12
  562. package/dist/utilities/getDataAndFile.d.ts.map +0 -1
  563. package/dist/utilities/getDataAndFile.js +0 -64
  564. package/dist/utilities/getDataAndFile.js.map +0 -1
  565. package/dist/utilities/initPage.d.ts +0 -12
  566. package/dist/utilities/initPage.d.ts.map +0 -1
  567. package/dist/utilities/initPage.js.map +0 -1
  568. package/dist/views/Dashboard/Default/index.client.d.ts +0 -10
  569. package/dist/views/Dashboard/Default/index.client.d.ts.map +0 -1
  570. package/dist/views/Dashboard/Default/index.client.js +0 -103
  571. package/dist/views/Dashboard/Default/index.client.js.map +0 -1
  572. package/dist/views/Edit/Default/SetStepNav/index.d.ts.map +0 -1
  573. package/dist/views/Edit/Default/SetStepNav/index.js +0 -64
  574. package/dist/views/Edit/Default/SetStepNav/index.js.map +0 -1
  575. package/src/index.js +0 -1
  576. /package/dist/{next-fileupload → fetchAPI-multipart}/fileFactory.js +0 -0
  577. /package/dist/{next-fileupload → fetchAPI-multipart}/handlers.js +0 -0
  578. /package/dist/{next-fileupload → fetchAPI-multipart}/isEligibleRequest.d.ts +0 -0
  579. /package/dist/{next-fileupload → fetchAPI-multipart}/processNested.d.ts +0 -0
  580. /package/dist/{next-fileupload → fetchAPI-multipart}/uploadTimer.d.ts +0 -0
  581. /package/dist/{next-fileupload → fetchAPI-multipart}/uploadTimer.js +0 -0
  582. /package/dist/{next-stream-file → fetchAPI-stream-file}/index.d.ts +0 -0
  583. /package/dist/{next-stream-file → fetchAPI-stream-file}/index.js +0 -0
  584. /package/dist/prod/payload/{favicon.svg → payload-favicon.svg} +0 -0
  585. /package/dist/prod/payload/{og-image.png → static-og-image.png} +0 -0
  586. /package/dist/utilities/{buildFieldSchemaMap → initPage}/types.js +0 -0
@@ -1,4 +1,5 @@
1
1
  import Busboy from 'busboy';
2
+ import httpStatus from 'http-status';
2
3
  import { APIError } from 'payload/errors';
3
4
  import { fileFactory } from './fileFactory.js';
4
5
  import { memHandler, tempFileHandler } from './handlers.js';
@@ -8,6 +9,14 @@ import { buildFields, debugLog, isFunc, parseFileName } from './utilities.js';
8
9
  const waitFlushProperty = Symbol('wait flush property symbol');
9
10
  export const processMultipart = async ({ options, request })=>{
10
11
  let parsingRequest = true;
12
+ let fileCount = 0;
13
+ let filesCompleted = 0;
14
+ let allFilesHaveResolved;
15
+ let failedResolvingFiles;
16
+ const allFilesComplete = new Promise((res, rej)=>{
17
+ allFilesHaveResolved = res;
18
+ failedResolvingFiles = rej;
19
+ });
11
20
  const result = {
12
21
  fields: undefined,
13
22
  files: undefined
@@ -16,6 +25,11 @@ export const processMultipart = async ({ options, request })=>{
16
25
  request.headers.forEach((value, name)=>{
17
26
  headersObject[name] = value;
18
27
  });
28
+ function abortAndDestroyFile(file, err) {
29
+ file.destroy();
30
+ parsingRequest = false;
31
+ failedResolvingFiles(err);
32
+ }
19
33
  const busboy = Busboy({
20
34
  ...options,
21
35
  headers: headersObject
@@ -26,6 +40,7 @@ export const processMultipart = async ({ options, request })=>{
26
40
  });
27
41
  // Build req.files fields
28
42
  busboy.on('file', (field, file, info)=>{
43
+ fileCount += 1;
29
44
  // Parse file name(cutting huge names, decoding, etc..).
30
45
  const { encoding, filename: name, mimeType: mime } = info;
31
46
  const filename = parseFileName(options, name);
@@ -38,10 +53,7 @@ export const processMultipart = async ({ options, request })=>{
38
53
  cleanup();
39
54
  }) : getWritePromise();
40
55
  const uploadTimer = createUploadTimer(options.uploadTimeout, ()=>{
41
- file.removeAllListeners('data');
42
- file.resume();
43
- const err = new Error(`Upload timeout for ${field}->${filename}, bytes:${getFileSize()}`);
44
- return file.destroy(err);
56
+ return abortAndDestroyFile(file, new APIError(`Upload timeout for ${field}->${filename}, bytes:${getFileSize()}`));
45
57
  });
46
58
  file.on('limit', ()=>{
47
59
  debugLog(options, `Size limit reached for ${field}->${filename}, bytes:${getFileSize()}`);
@@ -54,12 +66,11 @@ export const processMultipart = async ({ options, request })=>{
54
66
  }
55
67
  // Return error and cleanup files if abortOnLimit set.
56
68
  if (options.abortOnLimit) {
57
- debugLog(options, `Aborting upload because of size limit ${field}->${filename}.`);
69
+ debugLog(options, `Upload file size limit reached ${field}->${filename}.`);
58
70
  cleanup();
59
- parsingRequest = false;
60
- throw new APIError(options.responseOnLimit, 413, {
71
+ abortAndDestroyFile(file, new APIError(options.responseOnLimit, httpStatus.REQUEST_ENTITY_TOO_LARGE, {
61
72
  size: getFileSize()
62
- });
73
+ }));
63
74
  }
64
75
  });
65
76
  file.on('data', (data)=>{
@@ -71,12 +82,14 @@ export const processMultipart = async ({ options, request })=>{
71
82
  debugLog(options, `Upload finished ${field}->${filename}, bytes:${size}`);
72
83
  uploadTimer.clear();
73
84
  if (!name && size === 0) {
85
+ fileCount -= 1;
74
86
  if (options.useTempFiles) {
75
87
  cleanup();
76
88
  debugLog(options, `Removing the empty file ${field}->${filename}`);
77
89
  }
78
90
  return debugLog(options, `Don't add file instance if original name and size are empty`);
79
91
  }
92
+ filesCompleted += 1;
80
93
  result.files = buildFields(result.files, field, fileFactory({
81
94
  name: filename,
82
95
  buffer: complete(),
@@ -91,33 +104,44 @@ export const processMultipart = async ({ options, request })=>{
91
104
  request[waitFlushProperty] = [];
92
105
  }
93
106
  request[waitFlushProperty].push(writePromise);
107
+ if (filesCompleted === fileCount) {
108
+ allFilesHaveResolved();
109
+ }
94
110
  });
95
111
  file.on('error', (err)=>{
96
112
  uploadTimer.clear();
97
113
  debugLog(options, `File Error: ${err.message}`);
98
114
  cleanup();
115
+ failedResolvingFiles(err);
99
116
  });
117
+ // Start upload process.
100
118
  debugLog(options, `New upload started ${field}->${filename}, bytes:${getFileSize()}`);
101
119
  uploadTimer.set();
102
120
  });
103
- busboy.on('finish', ()=>{
121
+ busboy.on('finish', async ()=>{
104
122
  debugLog(options, `Busboy finished parsing request.`);
105
123
  if (options.parseNested) {
106
124
  result.fields = processNested(result.fields);
107
125
  result.files = processNested(result.files);
108
126
  }
109
127
  if (request[waitFlushProperty]) {
110
- Promise.all(request[waitFlushProperty]).then(()=>{
111
- delete request[waitFlushProperty];
112
- });
128
+ try {
129
+ await Promise.all(request[waitFlushProperty]).then(()=>{
130
+ delete request[waitFlushProperty];
131
+ });
132
+ } catch (err) {
133
+ debugLog(options, `Error waiting for file write promises: ${err}`);
134
+ }
113
135
  }
136
+ return result;
114
137
  });
115
- busboy.on('error', (err)=>{
138
+ busboy.on('error', (err = new APIError('Busboy error parsing multipart request', httpStatus.BAD_REQUEST))=>{
116
139
  debugLog(options, `Busboy error`);
117
140
  parsingRequest = false;
118
- throw new APIError('Busboy error parsing multipart request', 500);
141
+ throw err;
119
142
  });
120
143
  const reader = request.body.getReader();
144
+ // Start parsing request
121
145
  while(parsingRequest){
122
146
  const { done, value } = await reader.read();
123
147
  if (done) {
@@ -127,6 +151,11 @@ export const processMultipart = async ({ options, request })=>{
127
151
  busboy.write(value);
128
152
  }
129
153
  }
154
+ if (fileCount !== 0) {
155
+ await allFilesComplete.catch((e)=>{
156
+ throw e;
157
+ });
158
+ }
130
159
  return result;
131
160
  };
132
161
 
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/fetchAPI-multipart/processMultipart.ts"],"sourcesContent":["import type { Readable } from 'stream'\n\nimport Busboy from 'busboy'\nimport httpStatus from 'http-status'\nimport { APIError } from 'payload/errors'\n\nimport type { FetchAPIFileUploadOptions, FetchAPIFileUploadResponse } from './index.js'\n\nimport { fileFactory } from './fileFactory.js'\nimport { memHandler, tempFileHandler } from './handlers.js'\nimport { processNested } from './processNested.js'\nimport { createUploadTimer } from './uploadTimer.js'\nimport { buildFields, debugLog, isFunc, parseFileName } from './utilities.js'\n\nconst waitFlushProperty = Symbol('wait flush property symbol')\n\ntype ProcessMultipart = (args: {\n options: FetchAPIFileUploadOptions\n request: Request\n}) => Promise<FetchAPIFileUploadResponse>\nexport const processMultipart: ProcessMultipart = async ({ options, request }) => {\n let parsingRequest = true\n\n let fileCount = 0\n let filesCompleted = 0\n let allFilesHaveResolved: (value?: unknown) => void\n let failedResolvingFiles: (err: Error) => void\n\n const allFilesComplete = new Promise((res, rej) => {\n allFilesHaveResolved = res\n failedResolvingFiles = rej\n })\n\n const result: FetchAPIFileUploadResponse = {\n fields: undefined,\n files: undefined,\n }\n\n const headersObject = {}\n request.headers.forEach((value, name) => {\n headersObject[name] = value\n })\n\n function abortAndDestroyFile(file: Readable, err: APIError) {\n file.destroy()\n parsingRequest = false\n failedResolvingFiles(err)\n }\n\n const busboy = Busboy({ ...options, headers: headersObject })\n\n // Build multipart req.body fields\n busboy.on('field', (field, val) => {\n result.fields = buildFields(result.fields, field, val)\n })\n\n // Build req.files fields\n busboy.on('file', (field, file, info) => {\n fileCount += 1\n // Parse file name(cutting huge names, decoding, etc..).\n const { encoding, filename: name, mimeType: mime } = info\n const filename = parseFileName(options, name)\n\n // Define methods and handlers for upload process.\n const { cleanup, complete, dataHandler, getFilePath, getFileSize, getHash, getWritePromise } =\n options.useTempFiles\n ? tempFileHandler(options, field, filename) // Upload into temporary file.\n : memHandler(options, field, filename) // Upload into RAM.\n\n const writePromise = options.useTempFiles\n ? getWritePromise().catch((err) => {\n busboy.end()\n cleanup()\n })\n : getWritePromise()\n\n const uploadTimer = createUploadTimer(options.uploadTimeout, () => {\n return abortAndDestroyFile(\n file,\n new APIError(`Upload timeout for ${field}->${filename}, bytes:${getFileSize()}`),\n )\n })\n\n file.on('limit', () => {\n debugLog(options, `Size limit reached for ${field}->${filename}, bytes:${getFileSize()}`)\n uploadTimer.clear()\n\n if (isFunc(options.limitHandler)) {\n options.limitHandler({ request, size: getFileSize() })\n }\n\n // Return error and cleanup files if abortOnLimit set.\n if (options.abortOnLimit) {\n debugLog(options, `Upload file size limit reached ${field}->${filename}.`)\n cleanup()\n abortAndDestroyFile(\n file,\n new APIError(options.responseOnLimit, httpStatus.REQUEST_ENTITY_TOO_LARGE, {\n size: getFileSize(),\n }),\n )\n }\n })\n\n file.on('data', (data) => {\n uploadTimer.set()\n dataHandler(data)\n })\n\n file.on('end', () => {\n const size = getFileSize()\n debugLog(options, `Upload finished ${field}->${filename}, bytes:${size}`)\n uploadTimer.clear()\n\n if (!name && size === 0) {\n fileCount -= 1\n if (options.useTempFiles) {\n cleanup()\n debugLog(options, `Removing the empty file ${field}->${filename}`)\n }\n return debugLog(options, `Don't add file instance if original name and size are empty`)\n }\n\n filesCompleted += 1\n\n result.files = buildFields(\n result.files,\n field,\n fileFactory(\n {\n name: filename,\n buffer: complete(),\n encoding,\n hash: getHash(),\n mimetype: mime,\n size,\n tempFilePath: getFilePath(),\n truncated: Boolean('truncated' in file && file.truncated),\n },\n options,\n ),\n )\n\n if (!request[waitFlushProperty]) {\n request[waitFlushProperty] = []\n }\n request[waitFlushProperty].push(writePromise)\n\n if (filesCompleted === fileCount) {\n allFilesHaveResolved()\n }\n })\n\n file.on('error', (err) => {\n uploadTimer.clear()\n debugLog(options, `File Error: ${err.message}`)\n cleanup()\n failedResolvingFiles(err)\n })\n\n // Start upload process.\n debugLog(options, `New upload started ${field}->${filename}, bytes:${getFileSize()}`)\n uploadTimer.set()\n })\n\n busboy.on('finish', async () => {\n debugLog(options, `Busboy finished parsing request.`)\n if (options.parseNested) {\n result.fields = processNested(result.fields)\n result.files = processNested(result.files)\n }\n\n if (request[waitFlushProperty]) {\n try {\n await Promise.all(request[waitFlushProperty]).then(() => {\n delete request[waitFlushProperty]\n })\n } catch (err) {\n debugLog(options, `Error waiting for file write promises: ${err}`)\n }\n }\n\n return result\n })\n\n busboy.on(\n 'error',\n (err = new APIError('Busboy error parsing multipart request', httpStatus.BAD_REQUEST)) => {\n debugLog(options, `Busboy error`)\n parsingRequest = false\n throw err\n },\n )\n\n const reader = request.body.getReader()\n\n // Start parsing request\n while (parsingRequest) {\n const { done, value } = await reader.read()\n\n if (done) {\n parsingRequest = false\n }\n\n if (value) {\n busboy.write(value)\n }\n }\n\n if (fileCount !== 0) {\n await allFilesComplete.catch((e) => {\n throw e\n })\n }\n\n return result\n}\n"],"names":["Busboy","httpStatus","APIError","fileFactory","memHandler","tempFileHandler","processNested","createUploadTimer","buildFields","debugLog","isFunc","parseFileName","waitFlushProperty","Symbol","processMultipart","options","request","parsingRequest","fileCount","filesCompleted","allFilesHaveResolved","failedResolvingFiles","allFilesComplete","Promise","res","rej","result","fields","undefined","files","headersObject","headers","forEach","value","name","abortAndDestroyFile","file","err","destroy","busboy","on","field","val","info","encoding","filename","mimeType","mime","cleanup","complete","dataHandler","getFilePath","getFileSize","getHash","getWritePromise","useTempFiles","writePromise","catch","end","uploadTimer","uploadTimeout","clear","limitHandler","size","abortOnLimit","responseOnLimit","REQUEST_ENTITY_TOO_LARGE","data","set","buffer","hash","mimetype","tempFilePath","truncated","Boolean","push","message","parseNested","all","then","BAD_REQUEST","reader","body","getReader","done","read","write","e"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processNested.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/processNested.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,oBA6BzB,CAAA"}
@@ -3,7 +3,8 @@ export const processNested = function(data) {
3
3
  if (!data || data.length < 1) return Object.create(null);
4
4
  const d = Object.create(null), keys = Object.keys(data);
5
5
  for(let i = 0; i < keys.length; i++){
6
- let key = keys[i], value = data[key], current = d, keyParts = key.replace(new RegExp(/\[/g), '.').replace(new RegExp(/\]/g), '').split('.');
6
+ const key = keys[i], value = data[key], keyParts = key.replace(new RegExp(/\[/g), '.').replace(new RegExp(/\]/g), '').split('.');
7
+ let current = d;
7
8
  for(let index = 0; index < keyParts.length; index++){
8
9
  const k = keyParts[index];
9
10
  // Ensure we don't allow prototype pollution
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/fetchAPI-multipart/processNested.ts"],"sourcesContent":["import { isSafeFromPollution } from './utilities.js'\n\nexport const processNested = function (data) {\n if (!data || data.length < 1) return Object.create(null)\n\n const d = Object.create(null),\n keys = Object.keys(data)\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i],\n value = data[key],\n keyParts = key.replace(new RegExp(/\\[/g), '.').replace(new RegExp(/\\]/g), '').split('.')\n let current = d\n\n for (let index = 0; index < keyParts.length; index++) {\n const k = keyParts[index]\n\n // Ensure we don't allow prototype pollution\n if (!isSafeFromPollution(current, k)) {\n continue\n }\n\n if (index >= keyParts.length - 1) {\n current[k] = value\n } else {\n if (!current[k]) current[k] = !keyParts[index + 1] ? [] : Object.create(null)\n current = current[k]\n }\n }\n }\n return d\n}\n"],"names":["isSafeFromPollution","processNested","data","length","Object","create","d","keys","i","key","value","keyParts","replace","RegExp","split","current","index","k"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,mBAAmB,QAAQ,iBAAgB;AAEpD,OAAO,MAAMC,gBAAgB,SAAUC,IAAI;IACzC,IAAI,CAACA,QAAQA,KAAKC,MAAM,GAAG,GAAG,OAAOC,OAAOC,MAAM,CAAC;IAEnD,MAAMC,IAAIF,OAAOC,MAAM,CAAC,OACtBE,OAAOH,OAAOG,IAAI,CAACL;IAErB,IAAK,IAAIM,IAAI,GAAGA,IAAID,KAAKJ,MAAM,EAAEK,IAAK;QACpC,MAAMC,MAAMF,IAAI,CAACC,EAAE,EACjBE,QAAQR,IAAI,CAACO,IAAI,EACjBE,WAAWF,IAAIG,OAAO,CAAC,IAAIC,OAAO,QAAQ,KAAKD,OAAO,CAAC,IAAIC,OAAO,QAAQ,IAAIC,KAAK,CAAC;QACtF,IAAIC,UAAUT;QAEd,IAAK,IAAIU,QAAQ,GAAGA,QAAQL,SAASR,MAAM,EAAEa,QAAS;YACpD,MAAMC,IAAIN,QAAQ,CAACK,MAAM;YAEzB,4CAA4C;YAC5C,IAAI,CAAChB,oBAAoBe,SAASE,IAAI;gBACpC;YACF;YAEA,IAAID,SAASL,SAASR,MAAM,GAAG,GAAG;gBAChCY,OAAO,CAACE,EAAE,GAAGP;YACf,OAAO;gBACL,IAAI,CAACK,OAAO,CAACE,EAAE,EAAEF,OAAO,CAACE,EAAE,GAAG,CAACN,QAAQ,CAACK,QAAQ,EAAE,GAAG,EAAE,GAAGZ,OAAOC,MAAM,CAAC;gBACxEU,UAAUA,OAAO,CAACE,EAAE;YACtB;QACF;IACF;IACA,OAAOX;AACT,EAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadTimer.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/uploadTimer.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,GAAG,CACvB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,IAAI,KAClB;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,GAAG,EAAE,MAAM,OAAO,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,iBAgB/B,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/fetchAPI-multipart/uploadTimer.ts"],"sourcesContent":["type CreateUploadTimer = (\n timeout?: number,\n callback?: () => void,\n) => {\n clear: () => void\n set: () => boolean\n}\n\nexport const createUploadTimer: CreateUploadTimer = (timeout = 0, callback = () => {}) => {\n let timer = null\n\n const clear = () => {\n clearTimeout(timer)\n }\n\n const set = () => {\n // Do not start a timer if zero timeout or it hasn't been set.\n if (!timeout) return false\n clear()\n timer = setTimeout(callback, timeout)\n return true\n }\n\n return { clear, set }\n}\n"],"names":["createUploadTimer","timeout","callback","timer","clear","clearTimeout","set","setTimeout"],"rangeMappings":";;;;;;;;;;;;;;;;","mappings":"AAQA,OAAO,MAAMA,oBAAuC,CAACC,UAAU,CAAC,EAAEC,WAAW,KAAO,CAAC;IACnF,IAAIC,QAAQ;IAEZ,MAAMC,QAAQ;QACZC,aAAaF;IACf;IAEA,MAAMG,MAAM;QACV,8DAA8D;QAC9D,IAAI,CAACL,SAAS,OAAO;QACrBG;QACAD,QAAQI,WAAWL,UAAUD;QAC7B,OAAO;IACT;IAEA,OAAO;QAAEG;QAAOE;IAAI;AACtB,EAAC"}
@@ -1,8 +1,8 @@
1
- import type { NextFileUploadOptions } from './index.js';
1
+ import type { FetchAPIFileUploadOptions } from './index.js';
2
2
  /**
3
3
  * Logs message to console if options.debug option set to true.
4
4
  */
5
- export declare const debugLog: (options: NextFileUploadOptions, msg: string) => boolean;
5
+ export declare const debugLog: (options: FetchAPIFileUploadOptions, msg: string) => boolean;
6
6
  /**
7
7
  * Generates unique temporary file name. e.g. tmp-5000-156788789789.
8
8
  */
@@ -29,7 +29,7 @@ export declare const buildFields: BuildFields;
29
29
  * Creates a folder if it does not exist
30
30
  * for file specified in the path variable
31
31
  */
32
- type CheckAndMakeDir = (fileUploadOptions: NextFileUploadOptions, filePath: string) => boolean;
32
+ type CheckAndMakeDir = (fileUploadOptions: FetchAPIFileUploadOptions, filePath: string) => boolean;
33
33
  export declare const checkAndMakeDir: CheckAndMakeDir;
34
34
  /**
35
35
  * Delete a file.
@@ -59,7 +59,7 @@ export declare const parseFileNameExtension: ParseFileNameExtension;
59
59
  /**
60
60
  * Parse file name and extension.
61
61
  */
62
- type ParseFileName = (opts: NextFileUploadOptions, fileName: string) => string;
62
+ type ParseFileName = (opts: FetchAPIFileUploadOptions, fileName: string) => string;
63
63
  export declare const parseFileName: ParseFileName;
64
64
  export {};
65
65
  //# sourceMappingURL=utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/utilities.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAW3D;;GAEG;AACH,eAAO,MAAM,QAAQ,YAAa,yBAAyB,OAAO,MAAM,YAKvE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,YAAY,MAAM,WAG7C,CAAA;AAED,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;AACvC,eAAO,MAAM,MAAM,UAAW,GAAG,sBAEhC,CAAA;AAQD;;;GAGG;AACH,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;AAClG,eAAO,MAAM,eAAe,EAAE,eAU7B,CAAA;AAOD;;GAEG;AACH,KAAK,mBAAmB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;AAC9D,eAAO,MAAM,mBAAmB,EAAE,mBAQjC,CAAA;AAED;;GAEG;AACH,KAAK,WAAW,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AACpE,eAAO,MAAM,WAAW,EAAE,WAoBzB,CAAA;AAED;;;GAGG;AACH,KAAK,eAAe,GAAG,CAAC,iBAAiB,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;AAClG,eAAO,MAAM,eAAe,EAAE,eAQ7B,CAAA;AAED;;GAEG;AACH,KAAK,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,CAAA;AAC3E,eAAO,MAAM,UAAU,EAAE,UACM,CAAA;AA4B/B;;;GAGG;AACH,KAAK,QAAQ,GAAG,CACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,KAC9C,IAAI,CAAA;AACT,eAAO,MAAM,QAAQ,EAAE,QASnB,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,oDAwB5B,CAAA;AA+BD;;GAEG;AACH,KAAK,sBAAsB,GAAG,CAC5B,iBAAiB,EAAE,OAAO,GAAG,MAAM,EACnC,QAAQ,EAAE,MAAM,KACb;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AACD,eAAO,MAAM,sBAAsB,EAAE,sBAwBpC,CAAA;AAED;;GAEG;AACH,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;AAClF,eAAO,MAAM,aAAa,EAAE,aAoB3B,CAAA"}
@@ -13,7 +13,7 @@ let tempCounter = 0;
13
13
  */ export const debugLog = (options, msg)=>{
14
14
  const opts = options || {};
15
15
  if (!opts.debug) return false;
16
- console.log(`Express-file-upload: ${msg}`) // eslint-disable-line
16
+ console.log(`Next-file-upload: ${msg}`) // eslint-disable-line
17
17
  ;
18
18
  return true;
19
19
  };
@@ -199,9 +199,9 @@ export const parseFileName = (opts, fileName)=>{
199
199
  // Set regular expression for the file name.
200
200
  const nameRegex = typeof opts.safeFileNames === 'object' && opts.safeFileNames instanceof RegExp ? opts.safeFileNames : SAFE_FILE_NAME_REGEX;
201
201
  // Parse file name extension.
202
- let { name, extension } = parseFileNameExtension(opts.preserveExtension, parsedName);
203
- if (extension.length) extension = '.' + extension.replace(nameRegex, '');
204
- return name.replace(nameRegex, '').concat(extension);
202
+ const parsedFileName = parseFileNameExtension(opts.preserveExtension, parsedName);
203
+ if (parsedFileName.extension.length) parsedFileName.extension = '.' + parsedFileName.extension.replace(nameRegex, '');
204
+ return parsedFileName.name.replace(nameRegex, '').concat(parsedFileName.extension);
205
205
  };
206
206
 
207
207
  //# sourceMappingURL=utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/fetchAPI-multipart/utilities.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport { Readable } from 'stream'\n\nimport type { FetchAPIFileUploadOptions } from './index.js'\n\n// Parameters for safe file name parsing.\nconst SAFE_FILE_NAME_REGEX = /[^\\w-]/g\nconst MAX_EXTENSION_LENGTH = 3\n\n// Parameters to generate unique temporary file names:\nconst TEMP_COUNTER_MAX = 65536\nconst TEMP_PREFIX = 'tmp'\nlet tempCounter = 0\n\n/**\n * Logs message to console if options.debug option set to true.\n */\nexport const debugLog = (options: FetchAPIFileUploadOptions, msg: string) => {\n const opts = options || {}\n if (!opts.debug) return false\n console.log(`Next-file-upload: ${msg}`) // eslint-disable-line\n return true\n}\n\n/**\n * Generates unique temporary file name. e.g. tmp-5000-156788789789.\n */\nexport const getTempFilename = (prefix: string = TEMP_PREFIX) => {\n tempCounter = tempCounter >= TEMP_COUNTER_MAX ? 1 : tempCounter + 1\n return `${prefix}-${tempCounter}-${Date.now()}`\n}\n\ntype FuncType = (...args: any[]) => any\nexport const isFunc = (value: any): value is FuncType => {\n return typeof value === 'function'\n}\n\n/**\n * Set errorFunc to the same value as successFunc for callback mode.\n */\ntype ErrorFunc = (resolve: () => void, reject: (err: Error) => void) => (err: Error) => void\nconst errorFunc: ErrorFunc = (resolve, reject) => (isFunc(reject) ? reject : resolve)\n\n/**\n * Return a callback function for promise resole/reject args.\n * Ensures that callback is called only once.\n */\ntype PromiseCallback = (resolve: () => void, reject: (err: Error) => void) => (err: Error) => void\nexport const promiseCallback: PromiseCallback = (resolve, reject) => {\n let hasFired = false\n return (err: Error) => {\n if (hasFired) {\n return\n }\n\n hasFired = true\n return err ? errorFunc(resolve, reject)(err) : resolve()\n }\n}\n\n// The default prototypes for both objects and arrays.\n// Used by isSafeFromPollution\nconst OBJECT_PROTOTYPE_KEYS = Object.getOwnPropertyNames(Object.prototype)\nconst ARRAY_PROTOTYPE_KEYS = Object.getOwnPropertyNames(Array.prototype)\n\n/**\n * Determines whether a key insertion into an object could result in a prototype pollution\n */\ntype IsSafeFromPollution = (base: any, key: string) => boolean\nexport const isSafeFromPollution: IsSafeFromPollution = (base, key) => {\n // We perform an instanceof check instead of Array.isArray as the former is more\n // permissive for cases in which the object as an Array prototype but was not constructed\n // via an Array constructor or literal.\n const TOUCHES_ARRAY_PROTOTYPE = base instanceof Array && ARRAY_PROTOTYPE_KEYS.includes(key)\n const TOUCHES_OBJECT_PROTOTYPE = OBJECT_PROTOTYPE_KEYS.includes(key)\n\n return !TOUCHES_ARRAY_PROTOTYPE && !TOUCHES_OBJECT_PROTOTYPE\n}\n\n/**\n * Build request field/file objects to return\n */\ntype BuildFields = (instance: any, field: string, value: any) => any\nexport const buildFields: BuildFields = (instance, field, value) => {\n // Do nothing if value is not set.\n if (value === null || value === undefined) return instance\n instance = instance || Object.create(null)\n\n if (!isSafeFromPollution(instance, field)) {\n return instance\n }\n // Non-array fields\n if (!instance[field]) {\n instance[field] = value\n return instance\n }\n // Array fields\n if (instance[field] instanceof Array) {\n instance[field].push(value)\n } else {\n instance[field] = [instance[field], value]\n }\n return instance\n}\n\n/**\n * Creates a folder if it does not exist\n * for file specified in the path variable\n */\ntype CheckAndMakeDir = (fileUploadOptions: FetchAPIFileUploadOptions, filePath: string) => boolean\nexport const checkAndMakeDir: CheckAndMakeDir = (fileUploadOptions, filePath) => {\n if (!fileUploadOptions.createParentPath) return false\n // Check whether folder for the file exists.\n const parentPath = path.dirname(filePath)\n // Create folder if it doesn't exist.\n if (!fs.existsSync(parentPath)) fs.mkdirSync(parentPath, { recursive: true })\n // Checks folder again and return a results.\n return fs.existsSync(parentPath)\n}\n\n/**\n * Delete a file.\n */\ntype DeleteFile = (filePath: string, callback: (args: any) => void) => void\nexport const deleteFile: DeleteFile = (filePath, callback: (args) => void) =>\n fs.unlink(filePath, callback)\n\n/**\n * Copy file via streams\n */\ntype CopyFile = (src: string, dst: string, callback: (err: Error) => void) => void\nconst copyFile: CopyFile = (src, dst, callback) => {\n // cbCalled flag and runCb helps to run cb only once.\n let cbCalled = false\n const runCb = (err?: Error) => {\n if (cbCalled) return\n cbCalled = true\n callback(err)\n }\n // Create read stream\n const readable = fs.createReadStream(src)\n readable.on('error', runCb)\n // Create write stream\n const writable = fs.createWriteStream(dst)\n writable.on('error', (err: Error) => {\n readable.destroy()\n runCb(err)\n })\n writable.on('close', () => runCb())\n // Copy file via piping streams.\n readable.pipe(writable)\n}\n\n/**\n * moveFile: moves the file from src to dst.\n * Firstly trying to rename the file if no luck copying it to dst and then deleting src.\n */\ntype MoveFile = (\n src: string,\n dst: string,\n callback: (err: Error, renamed?: boolean) => void,\n) => void\nexport const moveFile: MoveFile = (src, dst, callback) =>\n fs.rename(src, dst, (err) => {\n if (err) {\n // Try to copy file if rename didn't work.\n copyFile(src, dst, (cpErr) => (cpErr ? callback(cpErr) : deleteFile(src, callback)))\n return\n }\n // File was renamed successfully: Add true to the callback to indicate that.\n callback(null, true)\n })\n\n/**\n * Save buffer data to a file.\n * @param {Buffer} buffer - buffer to save to a file.\n * @param {string} filePath - path to a file.\n */\nexport const saveBufferToFile = (buffer, filePath, callback) => {\n if (!Buffer.isBuffer(buffer)) {\n return callback(new Error('buffer variable should be type of Buffer!'))\n }\n // Setup readable stream from buffer.\n let streamData = buffer\n const readStream = new Readable()\n readStream._read = () => {\n readStream.push(streamData)\n streamData = null\n }\n // Setup file system writable stream.\n const fstream = fs.createWriteStream(filePath)\n // console.log(\"Calling saveBuffer\");\n fstream.on('error', (err) => {\n // console.log(\"err cb\")\n callback(err)\n })\n fstream.on('close', () => {\n // console.log(\"close cb\");\n callback()\n })\n // Copy file via piping streams.\n readStream.pipe(fstream)\n}\n\n/**\n * Decodes uriEncoded file names.\n * @param {Object} opts - middleware options.\n * @param fileName {String} - file name to decode.\n * @returns {String}\n */\nconst uriDecodeFileName = (opts, fileName) => {\n if (!opts || !opts.uriDecodeFileNames) {\n return fileName\n }\n // Decode file name from URI with checking URI malformed errors.\n // See Issue https://github.com/richardgirges/express-fileupload/issues/342.\n try {\n return decodeURIComponent(fileName)\n } catch (err) {\n const matcher = /(%[a-f\\d]{2})/gi\n return fileName\n .split(matcher)\n .map((str) => {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n return ''\n }\n })\n .join('')\n }\n}\n\n/**\n * Parses filename and extension and returns object {name, extension}.\n */\ntype ParseFileNameExtension = (\n preserveExtension: boolean | number,\n fileName: string,\n) => {\n extension: string\n name: string\n}\nexport const parseFileNameExtension: ParseFileNameExtension = (preserveExtension, fileName) => {\n const defaultResult = {\n name: fileName,\n extension: '',\n }\n if (!preserveExtension) return defaultResult\n\n // Define maximum extension length\n const maxExtLength =\n typeof preserveExtension === 'boolean' ? MAX_EXTENSION_LENGTH : preserveExtension\n\n const nameParts = fileName.split('.')\n if (nameParts.length < 2) return defaultResult\n\n let extension = nameParts.pop()\n if (extension.length > maxExtLength && maxExtLength > 0) {\n nameParts[nameParts.length - 1] += '.' + extension.substr(0, extension.length - maxExtLength)\n extension = extension.substr(-maxExtLength)\n }\n\n return {\n name: nameParts.join('.'),\n extension: maxExtLength ? extension : '',\n }\n}\n\n/**\n * Parse file name and extension.\n */\ntype ParseFileName = (opts: FetchAPIFileUploadOptions, fileName: string) => string\nexport const parseFileName: ParseFileName = (opts, fileName) => {\n // Check fileName argument\n if (!fileName || typeof fileName !== 'string') return getTempFilename()\n // Cut off file name if it's length more then 255.\n let parsedName = fileName.length <= 255 ? fileName : fileName.substr(0, 255)\n // Decode file name if uriDecodeFileNames option set true.\n parsedName = uriDecodeFileName(opts, parsedName)\n // Stop parsing file name if safeFileNames options hasn't been set.\n if (!opts.safeFileNames) return parsedName\n // Set regular expression for the file name.\n const nameRegex =\n typeof opts.safeFileNames === 'object' && opts.safeFileNames instanceof RegExp\n ? opts.safeFileNames\n : SAFE_FILE_NAME_REGEX\n // Parse file name extension.\n const parsedFileName = parseFileNameExtension(opts.preserveExtension, parsedName)\n if (parsedFileName.extension.length)\n parsedFileName.extension = '.' + parsedFileName.extension.replace(nameRegex, '')\n\n return parsedFileName.name.replace(nameRegex, '').concat(parsedFileName.extension)\n}\n"],"names":["fs","path","Readable","SAFE_FILE_NAME_REGEX","MAX_EXTENSION_LENGTH","TEMP_COUNTER_MAX","TEMP_PREFIX","tempCounter","debugLog","options","msg","opts","debug","console","log","getTempFilename","prefix","Date","now","isFunc","value","errorFunc","resolve","reject","promiseCallback","hasFired","err","OBJECT_PROTOTYPE_KEYS","Object","getOwnPropertyNames","prototype","ARRAY_PROTOTYPE_KEYS","Array","isSafeFromPollution","base","key","TOUCHES_ARRAY_PROTOTYPE","includes","TOUCHES_OBJECT_PROTOTYPE","buildFields","instance","field","undefined","create","push","checkAndMakeDir","fileUploadOptions","filePath","createParentPath","parentPath","dirname","existsSync","mkdirSync","recursive","deleteFile","callback","unlink","copyFile","src","dst","cbCalled","runCb","readable","createReadStream","on","writable","createWriteStream","destroy","pipe","moveFile","rename","cpErr","saveBufferToFile","buffer","Buffer","isBuffer","Error","streamData","readStream","_read","fstream","uriDecodeFileName","fileName","uriDecodeFileNames","decodeURIComponent","matcher","split","map","str","join","parseFileNameExtension","preserveExtension","defaultResult","name","extension","maxExtLength","nameParts","length","pop","substr","parseFileName","parsedName","safeFileNames","nameRegex","RegExp","parsedFileName","replace","concat"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-stream-file/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,wBAAgB,gBAAgB,CAAC,QAAQ,KAAA,uBAWxC;AAED,wBAAuB,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,6CAIhE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAIvD"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/fetchAPI-stream-file/index.ts"],"sourcesContent":["import fs from 'fs'\n\nexport function iteratorToStream(iterator) {\n return new ReadableStream({\n async pull(controller) {\n const { done, value } = await iterator.next()\n if (done) {\n controller.close()\n } else {\n controller.enqueue(value)\n }\n },\n })\n}\n\nexport async function* nodeStreamToIterator(stream: fs.ReadStream) {\n for await (const chunk of stream) {\n yield new Uint8Array(chunk)\n }\n}\n\nexport function streamFile(path: string): ReadableStream {\n const nodeStream = fs.createReadStream(path)\n const data: ReadableStream = iteratorToStream(nodeStreamToIterator(nodeStream))\n return data\n}\n"],"names":["fs","iteratorToStream","iterator","ReadableStream","pull","controller","done","value","next","close","enqueue","nodeStreamToIterator","stream","chunk","Uint8Array","streamFile","path","nodeStream","createReadStream","data"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,QAAQ,KAAI;AAEnB,OAAO,SAASC,iBAAiBC,QAAQ;IACvC,OAAO,IAAIC,eAAe;QACxB,MAAMC,MAAKC,UAAU;YACnB,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAE,GAAG,MAAML,SAASM,IAAI;YAC3C,IAAIF,MAAM;gBACRD,WAAWI,KAAK;YAClB,OAAO;gBACLJ,WAAWK,OAAO,CAACH;YACrB;QACF;IACF;AACF;AAEA,OAAO,gBAAgBI,qBAAqBC,MAAqB;IAC/D,WAAW,MAAMC,SAASD,OAAQ;QAChC,MAAM,IAAIE,WAAWD;IACvB;AACF;AAEA,OAAO,SAASE,WAAWC,IAAY;IACrC,MAAMC,aAAajB,GAAGkB,gBAAgB,CAACF;IACvC,MAAMG,OAAuBlB,iBAAiBU,qBAAqBM;IACnE,OAAOE;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/Root/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAKpD,OAAO,8BAA8B,CAAA;AAKrC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,uCAAuC,CAAA;AAO9C,eAAO,MAAM,QAAQ;;;CAGpB,CAAA;AAED,eAAO,MAAM,UAAU,yCAGpB;IACD,QAAQ,EAAE,MAAM,SAAS,CAAA;IACzB,MAAM,EAAE,QAAQ,eAAe,CAAC,CAAA;CACjC,+BAyEA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/Root/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAKpD,OAAO,8BAA8B,CAAA;AAMrC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,uCAAuC,CAAA;AAgB9C,eAAO,MAAM,QAAQ;;;CAGpB,CAAA;AAED,eAAO,MAAM,UAAU,yCAGpB;IACD,QAAQ,EAAE,MAAM,SAAS,CAAA;IACzB,MAAM,EAAE,QAAQ,eAAe,CAAC,CAAA;CACjC,+BAqFA,CAAA"}
@@ -1,15 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
2
  import { rtlLanguages } from '@payloadcms/translations';
2
3
  import { initI18n } from '@payloadcms/translations';
3
4
  import { RootProvider } from '@payloadcms/ui/providers/Root';
4
5
  import { buildComponentMap } from '@payloadcms/ui/utilities/buildComponentMap';
6
+ import { Merriweather } from 'next/font/google';
5
7
  import { headers as getHeaders, cookies as nextCookies } from 'next/headers.js';
6
8
  import { parseCookies } from 'payload/auth';
7
9
  import { createClientConfig } from 'payload/config';
8
10
  import React from 'react';
9
11
  import { getPayloadHMR } from '../../utilities/getPayloadHMR.js';
10
12
  import { getRequestLanguage } from '../../utilities/getRequestLanguage.js';
13
+ import { getRequestTheme } from '../../utilities/getRequestTheme.js';
11
14
  import { DefaultEditView } from '../../views/Edit/Default/index.js';
12
15
  import { DefaultListView } from '../../views/List/Default/index.js';
16
+ const merriweather = Merriweather({
17
+ display: 'swap',
18
+ style: [
19
+ 'normal',
20
+ 'italic'
21
+ ],
22
+ subsets: [
23
+ 'latin'
24
+ ],
25
+ variable: '--font-serif',
26
+ weight: [
27
+ '400',
28
+ '900'
29
+ ]
30
+ });
13
31
  export const metadata = {
14
32
  description: 'Generated by Next.js',
15
33
  title: 'Next.js'
@@ -23,6 +41,11 @@ export const RootLayout = async ({ children, config: configPromise })=>{
23
41
  cookies,
24
42
  headers
25
43
  });
44
+ const theme = getRequestTheme({
45
+ config,
46
+ cookies,
47
+ headers
48
+ });
26
49
  const payload = await getPayloadHMR({
27
50
  config
28
51
  });
@@ -58,26 +81,35 @@ export const RootLayout = async ({ children, config: configPromise })=>{
58
81
  DefaultEditView,
59
82
  DefaultListView,
60
83
  children,
61
- config,
62
84
  i18n,
63
85
  payload
64
86
  });
65
- return /*#__PURE__*/ React.createElement("html", {
87
+ return /*#__PURE__*/ _jsx("html", {
88
+ className: merriweather.variable,
89
+ "data-theme": theme,
66
90
  dir: dir,
67
- lang: languageCode
68
- }, /*#__PURE__*/ React.createElement("body", null, /*#__PURE__*/ React.createElement(RootProvider, {
69
- componentMap: componentMap,
70
- config: clientConfig,
71
- dateFNSKey: i18n.dateFNSKey,
72
- fallbackLang: clientConfig.i18n.fallbackLanguage,
73
- languageCode: languageCode,
74
- languageOptions: languageOptions,
75
- // eslint-disable-next-line react/jsx-no-bind
76
- switchLanguageServerAction: switchLanguageServerAction,
77
- translations: i18n.translations
78
- }, wrappedChildren), /*#__PURE__*/ React.createElement("div", {
79
- id: "portal"
80
- })));
91
+ lang: languageCode,
92
+ children: /*#__PURE__*/ _jsxs("body", {
93
+ children: [
94
+ /*#__PURE__*/ _jsx(RootProvider, {
95
+ componentMap: componentMap,
96
+ config: clientConfig,
97
+ dateFNSKey: i18n.dateFNSKey,
98
+ fallbackLang: clientConfig.i18n.fallbackLanguage,
99
+ languageCode: languageCode,
100
+ languageOptions: languageOptions,
101
+ // eslint-disable-next-line react/jsx-no-bind
102
+ switchLanguageServerAction: switchLanguageServerAction,
103
+ theme: theme,
104
+ translations: i18n.translations,
105
+ children: wrappedChildren
106
+ }),
107
+ /*#__PURE__*/ _jsx("div", {
108
+ id: "portal"
109
+ })
110
+ ]
111
+ })
112
+ });
81
113
  };
82
114
 
83
115
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layouts/Root/index.tsx"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\nimport type { SanitizedConfig } from 'payload/types'\n\nimport { rtlLanguages } from '@payloadcms/translations'\nimport { initI18n } from '@payloadcms/translations'\nimport { RootProvider } from '@payloadcms/ui/providers/Root'\nimport '@payloadcms/ui/scss/app.scss'\nimport { buildComponentMap } from '@payloadcms/ui/utilities/buildComponentMap'\nimport { headers as getHeaders, cookies as nextCookies } from 'next/headers.js'\nimport { parseCookies } from 'payload/auth'\nimport { createClientConfig } from 'payload/config'\nimport React from 'react'\nimport 'react-toastify/dist/ReactToastify.css'\n\nimport { getPayloadHMR } from '../../utilities/getPayloadHMR.js'\nimport { getRequestLanguage } from '../../utilities/getRequestLanguage.js'\nimport { DefaultEditView } from '../../views/Edit/Default/index.js'\nimport { DefaultListView } from '../../views/List/Default/index.js'\n\nexport const metadata = {\n description: 'Generated by Next.js',\n title: 'Next.js',\n}\n\nexport const RootLayout = async ({\n children,\n config: configPromise,\n}: {\n children: React.ReactNode\n config: Promise<SanitizedConfig>\n}) => {\n const config = await configPromise\n\n const headers = getHeaders()\n const cookies = parseCookies(headers)\n\n const languageCode = getRequestLanguage({\n config,\n cookies,\n headers,\n })\n\n const payload = await getPayloadHMR({ config })\n const i18n = await initI18n({ config: config.i18n, context: 'client', language: languageCode })\n const clientConfig = await createClientConfig({ config, t: i18n.t })\n\n const dir = (rtlLanguages as unknown as AcceptedLanguages[]).includes(languageCode)\n ? 'RTL'\n : 'LTR'\n\n const languageOptions = Object.entries(config.i18n.supportedLanguages || {}).reduce(\n (acc, [language, languageConfig]) => {\n if (Object.keys(config.i18n.supportedLanguages).includes(language)) {\n acc.push({\n label: languageConfig.translations.general.thisLanguage,\n value: language,\n })\n }\n\n return acc\n },\n [],\n )\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async function switchLanguageServerAction(lang: string): Promise<void> {\n 'use server'\n nextCookies().set({\n name: `${config.cookiePrefix || 'payload'}-lng`,\n path: '/',\n value: lang,\n })\n }\n\n const { componentMap, wrappedChildren } = buildComponentMap({\n DefaultEditView,\n DefaultListView,\n children,\n config,\n i18n,\n payload,\n })\n\n return (\n <html dir={dir} lang={languageCode}>\n <body>\n <RootProvider\n componentMap={componentMap}\n config={clientConfig}\n dateFNSKey={i18n.dateFNSKey}\n fallbackLang={clientConfig.i18n.fallbackLanguage}\n languageCode={languageCode}\n languageOptions={languageOptions}\n // eslint-disable-next-line react/jsx-no-bind\n switchLanguageServerAction={switchLanguageServerAction}\n translations={i18n.translations}\n >\n {wrappedChildren}\n </RootProvider>\n <div id=\"portal\" />\n </body>\n </html>\n )\n}\n"],"names":["rtlLanguages","initI18n","RootProvider","buildComponentMap","headers","getHeaders","cookies","nextCookies","parseCookies","createClientConfig","React","getPayloadHMR","getRequestLanguage","DefaultEditView","DefaultListView","metadata","description","title","RootLayout","children","config","configPromise","languageCode","payload","i18n","context","language","clientConfig","t","dir","includes","languageOptions","Object","entries","supportedLanguages","reduce","acc","languageConfig","keys","push","label","translations","general","thisLanguage","value","switchLanguageServerAction","lang","set","name","cookiePrefix","path","componentMap","wrappedChildren","html","body","dateFNSKey","fallbackLang","fallbackLanguage","div","id"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,YAAY,QAAQ,2BAA0B;AACvD,SAASC,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,YAAY,QAAQ,gCAA+B;AAE5D,SAASC,iBAAiB,QAAQ,6CAA4C;AAC9E,SAASC,WAAWC,UAAU,EAAEC,WAAWC,WAAW,QAAQ,kBAAiB;AAC/E,SAASC,YAAY,QAAQ,eAAc;AAC3C,SAASC,kBAAkB,QAAQ,iBAAgB;AACnD,OAAOC,WAAW,QAAO;AAGzB,SAASC,aAAa,QAAQ,mCAAkC;AAChE,SAASC,kBAAkB,QAAQ,wCAAuC;AAC1E,SAASC,eAAe,QAAQ,oCAAmC;AACnE,SAASC,eAAe,QAAQ,oCAAmC;AAEnE,OAAO,MAAMC,WAAW;IACtBC,aAAa;IACbC,OAAO;AACT,EAAC;AAED,OAAO,MAAMC,aAAa,OAAO,EAC/BC,QAAQ,EACRC,QAAQC,aAAa,EAItB;IACC,MAAMD,SAAS,MAAMC;IAErB,MAAMjB,UAAUC;IAChB,MAAMC,UAAUE,aAAaJ;IAE7B,MAAMkB,eAAeV,mBAAmB;QACtCQ;QACAd;QACAF;IACF;IAEA,MAAMmB,UAAU,MAAMZ,cAAc;QAAES;IAAO;IAC7C,MAAMI,OAAO,MAAMvB,SAAS;QAAEmB,QAAQA,OAAOI,IAAI;QAAEC,SAAS;QAAUC,UAAUJ;IAAa;IAC7F,MAAMK,eAAe,MAAMlB,mBAAmB;QAAEW;QAAQQ,GAAGJ,KAAKI,CAAC;IAAC;IAElE,MAAMC,MAAM,AAAC7B,aAAgD8B,QAAQ,CAACR,gBAClE,QACA;IAEJ,MAAMS,kBAAkBC,OAAOC,OAAO,CAACb,OAAOI,IAAI,CAACU,kBAAkB,IAAI,CAAC,GAAGC,MAAM,CACjF,CAACC,KAAK,CAACV,UAAUW,eAAe;QAC9B,IAAIL,OAAOM,IAAI,CAAClB,OAAOI,IAAI,CAACU,kBAAkB,EAAEJ,QAAQ,CAACJ,WAAW;YAClEU,IAAIG,IAAI,CAAC;gBACPC,OAAOH,eAAeI,YAAY,CAACC,OAAO,CAACC,YAAY;gBACvDC,OAAOlB;YACT;QACF;QAEA,OAAOU;IACT,GACA,EAAE;IAGJ,4DAA4D;IAC5D,eAAeS,2BAA2BC,IAAY;QACpD;QACAvC,cAAcwC,GAAG,CAAC;YAChBC,MAAM,CAAC,EAAE5B,OAAO6B,YAAY,IAAI,UAAU,IAAI,CAAC;YAC/CC,MAAM;YACNN,OAAOE;QACT;IACF;IAEA,MAAM,EAAEK,YAAY,EAAEC,eAAe,EAAE,GAAGjD,kBAAkB;QAC1DU;QACAC;QACAK;QACAC;QACAI;QACAD;IACF;IAEA,qBACE,oBAAC8B;QAAKxB,KAAKA;QAAKiB,MAAMxB;qBACpB,oBAACgC,4BACC,oBAACpD;QACCiD,cAAcA;QACd/B,QAAQO;QACR4B,YAAY/B,KAAK+B,UAAU;QAC3BC,cAAc7B,aAAaH,IAAI,CAACiC,gBAAgB;QAChDnC,cAAcA;QACdS,iBAAiBA;QACjB,6CAA6C;QAC7Cc,4BAA4BA;QAC5BJ,cAAcjB,KAAKiB,YAAY;OAE9BW,gCAEH,oBAACM;QAAIC,IAAG;;AAIhB,EAAC"}
1
+ {"version":3,"sources":["../../../src/layouts/Root/index.tsx"],"sourcesContent":["import type { AcceptedLanguages, I18nClient } from '@payloadcms/translations'\nimport type { SanitizedConfig } from 'payload/types'\n\nimport { rtlLanguages } from '@payloadcms/translations'\nimport { initI18n } from '@payloadcms/translations'\nimport { RootProvider } from '@payloadcms/ui/providers/Root'\nimport '@payloadcms/ui/scss/app.scss'\nimport { buildComponentMap } from '@payloadcms/ui/utilities/buildComponentMap'\nimport { Merriweather } from 'next/font/google'\nimport { headers as getHeaders, cookies as nextCookies } from 'next/headers.js'\nimport { parseCookies } from 'payload/auth'\nimport { createClientConfig } from 'payload/config'\nimport React from 'react'\nimport 'react-toastify/dist/ReactToastify.css'\n\nimport { getPayloadHMR } from '../../utilities/getPayloadHMR.js'\nimport { getRequestLanguage } from '../../utilities/getRequestLanguage.js'\nimport { getRequestTheme } from '../../utilities/getRequestTheme.js'\nimport { DefaultEditView } from '../../views/Edit/Default/index.js'\nimport { DefaultListView } from '../../views/List/Default/index.js'\n\nconst merriweather = Merriweather({\n display: 'swap',\n style: ['normal', 'italic'],\n subsets: ['latin'],\n variable: '--font-serif',\n weight: ['400', '900'],\n})\n\nexport const metadata = {\n description: 'Generated by Next.js',\n title: 'Next.js',\n}\n\nexport const RootLayout = async ({\n children,\n config: configPromise,\n}: {\n children: React.ReactNode\n config: Promise<SanitizedConfig>\n}) => {\n const config = await configPromise\n\n const headers = getHeaders()\n const cookies = parseCookies(headers)\n\n const languageCode = getRequestLanguage({\n config,\n cookies,\n headers,\n })\n\n const theme = getRequestTheme({\n config,\n cookies,\n headers,\n })\n\n const payload = await getPayloadHMR({ config })\n\n const i18n: I18nClient = await initI18n({\n config: config.i18n,\n context: 'client',\n language: languageCode,\n })\n\n const clientConfig = await createClientConfig({ config, t: i18n.t })\n\n const dir = (rtlLanguages as unknown as AcceptedLanguages[]).includes(languageCode)\n ? 'RTL'\n : 'LTR'\n\n const languageOptions = Object.entries(config.i18n.supportedLanguages || {}).reduce(\n (acc, [language, languageConfig]) => {\n if (Object.keys(config.i18n.supportedLanguages).includes(language)) {\n acc.push({\n label: languageConfig.translations.general.thisLanguage,\n value: language,\n })\n }\n\n return acc\n },\n [],\n )\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async function switchLanguageServerAction(lang: string): Promise<void> {\n 'use server'\n nextCookies().set({\n name: `${config.cookiePrefix || 'payload'}-lng`,\n path: '/',\n value: lang,\n })\n }\n\n const { componentMap, wrappedChildren } = buildComponentMap({\n DefaultEditView,\n DefaultListView,\n children,\n i18n,\n payload,\n })\n\n return (\n <html className={merriweather.variable} data-theme={theme} dir={dir} lang={languageCode}>\n <body>\n <RootProvider\n componentMap={componentMap}\n config={clientConfig}\n dateFNSKey={i18n.dateFNSKey}\n fallbackLang={clientConfig.i18n.fallbackLanguage}\n languageCode={languageCode}\n languageOptions={languageOptions}\n // eslint-disable-next-line react/jsx-no-bind\n switchLanguageServerAction={switchLanguageServerAction}\n theme={theme}\n translations={i18n.translations}\n >\n {wrappedChildren}\n </RootProvider>\n <div id=\"portal\" />\n </body>\n </html>\n )\n}\n"],"names":["rtlLanguages","initI18n","RootProvider","buildComponentMap","Merriweather","headers","getHeaders","cookies","nextCookies","parseCookies","createClientConfig","React","getPayloadHMR","getRequestLanguage","getRequestTheme","DefaultEditView","DefaultListView","merriweather","display","style","subsets","variable","weight","metadata","description","title","RootLayout","children","config","configPromise","languageCode","theme","payload","i18n","context","language","clientConfig","t","dir","includes","languageOptions","Object","entries","supportedLanguages","reduce","acc","languageConfig","keys","push","label","translations","general","thisLanguage","value","switchLanguageServerAction","lang","set","name","cookiePrefix","path","componentMap","wrappedChildren","html","className","data-theme","body","dateFNSKey","fallbackLang","fallbackLanguage","div","id"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAGA,SAASA,YAAY,QAAQ,2BAA0B;AACvD,SAASC,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,YAAY,QAAQ,gCAA+B;AAE5D,SAASC,iBAAiB,QAAQ,6CAA4C;AAC9E,SAASC,YAAY,QAAQ,mBAAkB;AAC/C,SAASC,WAAWC,UAAU,EAAEC,WAAWC,WAAW,QAAQ,kBAAiB;AAC/E,SAASC,YAAY,QAAQ,eAAc;AAC3C,SAASC,kBAAkB,QAAQ,iBAAgB;AACnD,OAAOC,WAAW,QAAO;AAGzB,SAASC,aAAa,QAAQ,mCAAkC;AAChE,SAASC,kBAAkB,QAAQ,wCAAuC;AAC1E,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,oCAAmC;AACnE,SAASC,eAAe,QAAQ,oCAAmC;AAEnE,MAAMC,eAAeb,aAAa;IAChCc,SAAS;IACTC,OAAO;QAAC;QAAU;KAAS;IAC3BC,SAAS;QAAC;KAAQ;IAClBC,UAAU;IACVC,QAAQ;QAAC;QAAO;KAAM;AACxB;AAEA,OAAO,MAAMC,WAAW;IACtBC,aAAa;IACbC,OAAO;AACT,EAAC;AAED,OAAO,MAAMC,aAAa,OAAO,EAC/BC,QAAQ,EACRC,QAAQC,aAAa,EAItB;IACC,MAAMD,SAAS,MAAMC;IAErB,MAAMxB,UAAUC;IAChB,MAAMC,UAAUE,aAAaJ;IAE7B,MAAMyB,eAAejB,mBAAmB;QACtCe;QACArB;QACAF;IACF;IAEA,MAAM0B,QAAQjB,gBAAgB;QAC5Bc;QACArB;QACAF;IACF;IAEA,MAAM2B,UAAU,MAAMpB,cAAc;QAAEgB;IAAO;IAE7C,MAAMK,OAAmB,MAAMhC,SAAS;QACtC2B,QAAQA,OAAOK,IAAI;QACnBC,SAAS;QACTC,UAAUL;IACZ;IAEA,MAAMM,eAAe,MAAM1B,mBAAmB;QAAEkB;QAAQS,GAAGJ,KAAKI,CAAC;IAAC;IAElE,MAAMC,MAAM,AAACtC,aAAgDuC,QAAQ,CAACT,gBAClE,QACA;IAEJ,MAAMU,kBAAkBC,OAAOC,OAAO,CAACd,OAAOK,IAAI,CAACU,kBAAkB,IAAI,CAAC,GAAGC,MAAM,CACjF,CAACC,KAAK,CAACV,UAAUW,eAAe;QAC9B,IAAIL,OAAOM,IAAI,CAACnB,OAAOK,IAAI,CAACU,kBAAkB,EAAEJ,QAAQ,CAACJ,WAAW;YAClEU,IAAIG,IAAI,CAAC;gBACPC,OAAOH,eAAeI,YAAY,CAACC,OAAO,CAACC,YAAY;gBACvDC,OAAOlB;YACT;QACF;QAEA,OAAOU;IACT,GACA,EAAE;IAGJ,4DAA4D;IAC5D,eAAeS,2BAA2BC,IAAY;QACpD;QACA/C,cAAcgD,GAAG,CAAC;YAChBC,MAAM,CAAC,EAAE7B,OAAO8B,YAAY,IAAI,UAAU,IAAI,CAAC;YAC/CC,MAAM;YACNN,OAAOE;QACT;IACF;IAEA,MAAM,EAAEK,YAAY,EAAEC,eAAe,EAAE,GAAG1D,kBAAkB;QAC1DY;QACAC;QACAW;QACAM;QACAD;IACF;IAEA,qBACE,KAAC8B;QAAKC,WAAW9C,aAAaI,QAAQ;QAAE2C,cAAYjC;QAAOO,KAAKA;QAAKiB,MAAMzB;kBACzE,cAAA,MAACmC;;8BACC,KAAC/D;oBACC0D,cAAcA;oBACdhC,QAAQQ;oBACR8B,YAAYjC,KAAKiC,UAAU;oBAC3BC,cAAc/B,aAAaH,IAAI,CAACmC,gBAAgB;oBAChDtC,cAAcA;oBACdU,iBAAiBA;oBACjB,6CAA6C;oBAC7Cc,4BAA4BA;oBAC5BvB,OAAOA;oBACPmB,cAAcjB,KAAKiB,YAAY;8BAE9BW;;8BAEH,KAACQ;oBAAIC,IAAG;;;;;AAIhB,EAAC"}