@payloadcms/next 3.0.0-beta.90 → 3.0.0-beta.91

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 (461) hide show
  1. package/dist/cjs/withPayload.js +111 -0
  2. package/dist/cjs/withPayload.js.map +1 -0
  3. package/dist/config.js +0 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +15 -9
  6. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
  7. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +100 -35
  8. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  9. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +74 -63
  10. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  11. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js +31 -35
  12. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js.map +1 -1
  13. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js +15 -12
  14. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js.map +1 -1
  15. package/dist/elements/DocumentHeader/Tabs/index.js +86 -79
  16. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  17. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +32 -13
  18. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  19. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +60 -52
  20. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  21. package/dist/elements/DocumentHeader/index.js +24 -23
  22. package/dist/elements/DocumentHeader/index.js.map +1 -1
  23. package/dist/elements/EmailAndUsername/index.js +107 -75
  24. package/dist/elements/EmailAndUsername/index.js.map +1 -1
  25. package/dist/elements/LeaveWithoutSaving/index.js +150 -83
  26. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  27. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
  28. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +119 -101
  29. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  30. package/dist/elements/Logo/index.js +36 -21
  31. package/dist/elements/Logo/index.js.map +1 -1
  32. package/dist/elements/Nav/NavHamburger/index.js +41 -13
  33. package/dist/elements/Nav/NavHamburger/index.js.map +1 -1
  34. package/dist/elements/Nav/NavWrapper/index.js +48 -16
  35. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  36. package/dist/elements/Nav/index.client.js +149 -76
  37. package/dist/elements/Nav/index.client.js.map +1 -1
  38. package/dist/elements/Nav/index.js +56 -50
  39. package/dist/elements/Nav/index.js.map +1 -1
  40. package/dist/exports/layouts.js +0 -1
  41. package/dist/exports/layouts.js.map +1 -1
  42. package/dist/exports/routes.js +0 -1
  43. package/dist/exports/routes.js.map +1 -1
  44. package/dist/exports/templates.js +0 -1
  45. package/dist/exports/templates.js.map +1 -1
  46. package/dist/exports/utilities.js +0 -1
  47. package/dist/exports/utilities.js.map +1 -1
  48. package/dist/exports/views.js +0 -1
  49. package/dist/exports/views.js.map +1 -1
  50. package/dist/fetchAPI-multipart/fileFactory.js +35 -34
  51. package/dist/fetchAPI-multipart/fileFactory.js.map +1 -1
  52. package/dist/fetchAPI-multipart/handlers.js +77 -78
  53. package/dist/fetchAPI-multipart/handlers.js.map +1 -1
  54. package/dist/fetchAPI-multipart/index.js +33 -31
  55. package/dist/fetchAPI-multipart/index.js.map +1 -1
  56. package/dist/fetchAPI-multipart/isEligibleRequest.js +13 -21
  57. package/dist/fetchAPI-multipart/isEligibleRequest.js.map +1 -1
  58. package/dist/fetchAPI-multipart/processMultipart.js +158 -141
  59. package/dist/fetchAPI-multipart/processMultipart.js.map +1 -1
  60. package/dist/fetchAPI-multipart/processNested.js +23 -21
  61. package/dist/fetchAPI-multipart/processNested.js.map +1 -1
  62. package/dist/fetchAPI-multipart/uploadTimer.js +16 -17
  63. package/dist/fetchAPI-multipart/uploadTimer.js.map +1 -1
  64. package/dist/fetchAPI-multipart/utilities.js +166 -166
  65. package/dist/fetchAPI-multipart/utilities.js.map +1 -1
  66. package/dist/fetchAPI-stream-file/index.js +19 -17
  67. package/dist/fetchAPI-stream-file/index.js.map +1 -1
  68. package/dist/index.js +0 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/layouts/Root/index.js +118 -115
  71. package/dist/layouts/Root/index.js.map +1 -1
  72. package/dist/prod/styles.css +1 -1
  73. package/dist/routes/graphql/handler.js +109 -103
  74. package/dist/routes/graphql/handler.js.map +1 -1
  75. package/dist/routes/graphql/index.js +0 -1
  76. package/dist/routes/graphql/index.js.map +1 -1
  77. package/dist/routes/graphql/playground.js +23 -24
  78. package/dist/routes/graphql/playground.js.map +1 -1
  79. package/dist/routes/index.js +0 -1
  80. package/dist/routes/index.js.map +1 -1
  81. package/dist/routes/rest/auth/access.js +22 -21
  82. package/dist/routes/rest/auth/access.js.map +1 -1
  83. package/dist/routes/rest/auth/forgotPassword.js +29 -25
  84. package/dist/routes/rest/auth/forgotPassword.js.map +1 -1
  85. package/dist/routes/rest/auth/init.js +16 -14
  86. package/dist/routes/rest/auth/init.js.map +1 -1
  87. package/dist/routes/rest/auth/login.js +43 -38
  88. package/dist/routes/rest/auth/login.js.map +1 -1
  89. package/dist/routes/rest/auth/logout.js +31 -27
  90. package/dist/routes/rest/auth/logout.js.map +1 -1
  91. package/dist/routes/rest/auth/me.js +23 -21
  92. package/dist/routes/rest/auth/me.js.map +1 -1
  93. package/dist/routes/rest/auth/refresh.js +31 -27
  94. package/dist/routes/rest/auth/refresh.js.map +1 -1
  95. package/dist/routes/rest/auth/registerFirstUser.js +43 -38
  96. package/dist/routes/rest/auth/registerFirstUser.js.map +1 -1
  97. package/dist/routes/rest/auth/resetPassword.js +38 -33
  98. package/dist/routes/rest/auth/resetPassword.js.map +1 -1
  99. package/dist/routes/rest/auth/unlock.js +27 -23
  100. package/dist/routes/rest/auth/unlock.js.map +1 -1
  101. package/dist/routes/rest/auth/verifyEmail.js +22 -17
  102. package/dist/routes/rest/auth/verifyEmail.js.map +1 -1
  103. package/dist/routes/rest/buildFormState.js +38 -37
  104. package/dist/routes/rest/buildFormState.js.map +1 -1
  105. package/dist/routes/rest/checkEndpoints.js +11 -9
  106. package/dist/routes/rest/checkEndpoints.js.map +1 -1
  107. package/dist/routes/rest/collections/count.js +15 -11
  108. package/dist/routes/rest/collections/count.js.map +1 -1
  109. package/dist/routes/rest/collections/create.js +30 -26
  110. package/dist/routes/rest/collections/create.js.map +1 -1
  111. package/dist/routes/rest/collections/delete.js +40 -35
  112. package/dist/routes/rest/collections/delete.js.map +1 -1
  113. package/dist/routes/rest/collections/deleteByID.js +36 -31
  114. package/dist/routes/rest/collections/deleteByID.js.map +1 -1
  115. package/dist/routes/rest/collections/docAccess.js +17 -14
  116. package/dist/routes/rest/collections/docAccess.js.map +1 -1
  117. package/dist/routes/rest/collections/duplicate.js +36 -31
  118. package/dist/routes/rest/collections/duplicate.js.map +1 -1
  119. package/dist/routes/rest/collections/find.js +29 -20
  120. package/dist/routes/rest/collections/find.js.map +1 -1
  121. package/dist/routes/rest/collections/findByID.js +28 -23
  122. package/dist/routes/rest/collections/findByID.js.map +1 -1
  123. package/dist/routes/rest/collections/findVersionByID.js +27 -22
  124. package/dist/routes/rest/collections/findVersionByID.js.map +1 -1
  125. package/dist/routes/rest/collections/findVersions.js +27 -19
  126. package/dist/routes/rest/collections/findVersions.js.map +1 -1
  127. package/dist/routes/rest/collections/preview.js +39 -34
  128. package/dist/routes/rest/collections/preview.js.map +1 -1
  129. package/dist/routes/rest/collections/restoreVersion.js +32 -27
  130. package/dist/routes/rest/collections/restoreVersion.js.map +1 -1
  131. package/dist/routes/rest/collections/update.js +43 -37
  132. package/dist/routes/rest/collections/update.js.map +1 -1
  133. package/dist/routes/rest/collections/updateByID.js +38 -33
  134. package/dist/routes/rest/collections/updateByID.js.map +1 -1
  135. package/dist/routes/rest/files/checkFileAccess.js +46 -44
  136. package/dist/routes/rest/files/checkFileAccess.js.map +1 -1
  137. package/dist/routes/rest/files/getFile.js +52 -49
  138. package/dist/routes/rest/files/getFile.js.map +1 -1
  139. package/dist/routes/rest/files/getFileTypeFallback.js +16 -17
  140. package/dist/routes/rest/files/getFileTypeFallback.js.map +1 -1
  141. package/dist/routes/rest/globals/docAccess.js +15 -13
  142. package/dist/routes/rest/globals/docAccess.js.map +1 -1
  143. package/dist/routes/rest/globals/findOne.js +22 -18
  144. package/dist/routes/rest/globals/findOne.js.map +1 -1
  145. package/dist/routes/rest/globals/findVersionByID.js +22 -17
  146. package/dist/routes/rest/globals/findVersionByID.js.map +1 -1
  147. package/dist/routes/rest/globals/findVersions.js +27 -19
  148. package/dist/routes/rest/globals/findVersions.js.map +1 -1
  149. package/dist/routes/rest/globals/preview.js +38 -34
  150. package/dist/routes/rest/globals/preview.js.map +1 -1
  151. package/dist/routes/rest/globals/restoreVersion.js +27 -22
  152. package/dist/routes/rest/globals/restoreVersion.js.map +1 -1
  153. package/dist/routes/rest/globals/update.js +32 -28
  154. package/dist/routes/rest/globals/update.js.map +1 -1
  155. package/dist/routes/rest/index.js +651 -626
  156. package/dist/routes/rest/index.js.map +1 -1
  157. package/dist/routes/rest/og/image.js +74 -76
  158. package/dist/routes/rest/og/image.js.map +1 -1
  159. package/dist/routes/rest/og/index.js +60 -59
  160. package/dist/routes/rest/og/index.js.map +1 -1
  161. package/dist/routes/rest/routeError.js +102 -95
  162. package/dist/routes/rest/routeError.js.map +1 -1
  163. package/dist/routes/rest/types.js +1 -2
  164. package/dist/routes/rest/types.js.map +1 -1
  165. package/dist/routes/rest/utilities/sanitizeCollectionID.js +14 -11
  166. package/dist/routes/rest/utilities/sanitizeCollectionID.js.map +1 -1
  167. package/dist/scss/app.scss +4 -4
  168. package/dist/scss/type.scss +4 -4
  169. package/dist/templates/Default/NavHamburger/index.js +18 -6
  170. package/dist/templates/Default/NavHamburger/index.js.map +1 -1
  171. package/dist/templates/Default/Wrapper/index.js +42 -13
  172. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  173. package/dist/templates/Default/index.js +54 -47
  174. package/dist/templates/Default/index.js.map +1 -1
  175. package/dist/templates/Minimal/index.js +16 -16
  176. package/dist/templates/Minimal/index.js.map +1 -1
  177. package/dist/utilities/addDataAndFileToRequest.js +40 -35
  178. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  179. package/dist/utilities/addLocalesToRequest.js +44 -36
  180. package/dist/utilities/addLocalesToRequest.js.map +1 -1
  181. package/dist/utilities/createPayloadRequest.js +85 -74
  182. package/dist/utilities/createPayloadRequest.js.map +1 -1
  183. package/dist/utilities/getNextRequestI18n.js +13 -11
  184. package/dist/utilities/getNextRequestI18n.js.map +1 -1
  185. package/dist/utilities/getPayloadHMR.d.ts +1 -1
  186. package/dist/utilities/getPayloadHMR.d.ts.map +1 -1
  187. package/dist/utilities/getPayloadHMR.js +91 -94
  188. package/dist/utilities/getPayloadHMR.js.map +1 -1
  189. package/dist/utilities/getRequestLanguage.js +16 -13
  190. package/dist/utilities/getRequestLanguage.js.map +1 -1
  191. package/dist/utilities/getRequestLocales.js +27 -24
  192. package/dist/utilities/getRequestLocales.js.map +1 -1
  193. package/dist/utilities/getRequestTheme.js +16 -16
  194. package/dist/utilities/getRequestTheme.js.map +1 -1
  195. package/dist/utilities/headersWithCors.js +21 -30
  196. package/dist/utilities/headersWithCors.js.map +1 -1
  197. package/dist/utilities/initPage/handleAdminPage.js +46 -42
  198. package/dist/utilities/initPage/handleAdminPage.js.map +1 -1
  199. package/dist/utilities/initPage/handleAuthRedirect.js +45 -32
  200. package/dist/utilities/initPage/handleAuthRedirect.js.map +1 -1
  201. package/dist/utilities/initPage/index.js +146 -120
  202. package/dist/utilities/initPage/index.js.map +1 -1
  203. package/dist/utilities/initPage/shared.js +26 -25
  204. package/dist/utilities/initPage/shared.js.map +1 -1
  205. package/dist/utilities/initPage/types.js +1 -2
  206. package/dist/utilities/initPage/types.js.map +1 -1
  207. package/dist/utilities/mergeHeaders.js +8 -9
  208. package/dist/utilities/mergeHeaders.js.map +1 -1
  209. package/dist/utilities/meta.js +66 -68
  210. package/dist/utilities/meta.js.map +1 -1
  211. package/dist/utilities/timestamp.js +4 -5
  212. package/dist/utilities/timestamp.js.map +1 -1
  213. package/dist/views/API/LocaleSelector/index.d.ts.map +1 -1
  214. package/dist/views/API/LocaleSelector/index.js +38 -11
  215. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  216. package/dist/views/API/RenderJSON/index.js +124 -112
  217. package/dist/views/API/RenderJSON/index.js.map +1 -1
  218. package/dist/views/API/index.client.js +190 -202
  219. package/dist/views/API/index.client.js.map +1 -1
  220. package/dist/views/API/index.js +2 -3
  221. package/dist/views/API/index.js.map +1 -1
  222. package/dist/views/API/meta.js +22 -18
  223. package/dist/views/API/meta.js.map +1 -1
  224. package/dist/views/Account/Settings/LanguageSelector.js +45 -12
  225. package/dist/views/Account/Settings/LanguageSelector.js.map +1 -1
  226. package/dist/views/Account/Settings/index.js +21 -28
  227. package/dist/views/Account/Settings/index.js.map +1 -1
  228. package/dist/views/Account/ToggleTheme/index.js +51 -30
  229. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  230. package/dist/views/Account/index.client.js +32 -16
  231. package/dist/views/Account/index.client.js.map +1 -1
  232. package/dist/views/Account/index.js +99 -68
  233. package/dist/views/Account/index.js.map +1 -1
  234. package/dist/views/Account/meta.js +12 -8
  235. package/dist/views/Account/meta.js.map +1 -1
  236. package/dist/views/CreateFirstUser/index.client.js +95 -57
  237. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  238. package/dist/views/CreateFirstUser/index.js +42 -28
  239. package/dist/views/CreateFirstUser/index.js.map +1 -1
  240. package/dist/views/CreateFirstUser/meta.js +12 -8
  241. package/dist/views/CreateFirstUser/meta.js.map +1 -1
  242. package/dist/views/Dashboard/Default/index.js +132 -115
  243. package/dist/views/Dashboard/Default/index.js.map +1 -1
  244. package/dist/views/Dashboard/index.js +61 -52
  245. package/dist/views/Dashboard/index.js.map +1 -1
  246. package/dist/views/Dashboard/meta.js +16 -12
  247. package/dist/views/Dashboard/meta.js.map +1 -1
  248. package/dist/views/Document/getCustomViewByKey.js +2 -3
  249. package/dist/views/Document/getCustomViewByKey.js.map +1 -1
  250. package/dist/views/Document/getCustomViewByRoute.js +30 -27
  251. package/dist/views/Document/getCustomViewByRoute.js.map +1 -1
  252. package/dist/views/Document/getDocumentData.js +34 -28
  253. package/dist/views/Document/getDocumentData.js.map +1 -1
  254. package/dist/views/Document/getDocumentPermissions.js +83 -74
  255. package/dist/views/Document/getDocumentPermissions.js.map +1 -1
  256. package/dist/views/Document/getMetaBySegment.js +113 -107
  257. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  258. package/dist/views/Document/getViewsFromConfig.js +309 -331
  259. package/dist/views/Document/getViewsFromConfig.js.map +1 -1
  260. package/dist/views/Document/index.d.ts.map +1 -1
  261. package/dist/views/Document/index.js +193 -159
  262. package/dist/views/Document/index.js.map +1 -1
  263. package/dist/views/Document/meta.js +1 -2
  264. package/dist/views/Document/meta.js.map +1 -1
  265. package/dist/views/Edit/Default/Auth/APIKey.js +118 -132
  266. package/dist/views/Edit/Default/Auth/APIKey.js.map +1 -1
  267. package/dist/views/Edit/Default/Auth/index.js +293 -196
  268. package/dist/views/Edit/Default/Auth/index.js.map +1 -1
  269. package/dist/views/Edit/Default/Auth/types.js +1 -2
  270. package/dist/views/Edit/Default/Auth/types.js.map +1 -1
  271. package/dist/views/Edit/Default/SetDocumentStepNav/index.js +121 -70
  272. package/dist/views/Edit/Default/SetDocumentStepNav/index.js.map +1 -1
  273. package/dist/views/Edit/Default/SetDocumentTitle/index.js +74 -29
  274. package/dist/views/Edit/Default/SetDocumentTitle/index.js.map +1 -1
  275. package/dist/views/Edit/Default/index.js +190 -187
  276. package/dist/views/Edit/Default/index.js.map +1 -1
  277. package/dist/views/Edit/Default/types.js +1 -2
  278. package/dist/views/Edit/Default/types.js.map +1 -1
  279. package/dist/views/Edit/index.client.js +45 -21
  280. package/dist/views/Edit/index.client.js.map +1 -1
  281. package/dist/views/Edit/index.js +2 -3
  282. package/dist/views/Edit/index.js.map +1 -1
  283. package/dist/views/Edit/meta.js +43 -35
  284. package/dist/views/Edit/meta.js.map +1 -1
  285. package/dist/views/Edit/sanitizeEditViewProps.js +8 -9
  286. package/dist/views/Edit/sanitizeEditViewProps.js.map +1 -1
  287. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +151 -94
  288. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  289. package/dist/views/ForgotPassword/index.js +59 -46
  290. package/dist/views/ForgotPassword/index.js.map +1 -1
  291. package/dist/views/ForgotPassword/meta.js +12 -8
  292. package/dist/views/ForgotPassword/meta.js.map +1 -1
  293. package/dist/views/List/Default/index.js +348 -208
  294. package/dist/views/List/Default/index.js.map +1 -1
  295. package/dist/views/List/Default/types.js +1 -2
  296. package/dist/views/List/Default/types.js.map +1 -1
  297. package/dist/views/List/index.js +153 -137
  298. package/dist/views/List/index.js.map +1 -1
  299. package/dist/views/List/meta.js +20 -17
  300. package/dist/views/List/meta.js.map +1 -1
  301. package/dist/views/LivePreview/Context/collisionDetection.js +24 -21
  302. package/dist/views/LivePreview/Context/collisionDetection.js.map +1 -1
  303. package/dist/views/LivePreview/Context/context.d.ts +2 -1
  304. package/dist/views/LivePreview/Context/context.d.ts.map +1 -1
  305. package/dist/views/LivePreview/Context/context.js +39 -36
  306. package/dist/views/LivePreview/Context/context.js.map +1 -1
  307. package/dist/views/LivePreview/Context/index.js +134 -142
  308. package/dist/views/LivePreview/Context/index.js.map +1 -1
  309. package/dist/views/LivePreview/Context/sizeReducer.js +18 -19
  310. package/dist/views/LivePreview/Context/sizeReducer.js.map +1 -1
  311. package/dist/views/LivePreview/Device/index.js +78 -71
  312. package/dist/views/LivePreview/Device/index.js.map +1 -1
  313. package/dist/views/LivePreview/DeviceContainer/index.js +47 -23
  314. package/dist/views/LivePreview/DeviceContainer/index.js.map +1 -1
  315. package/dist/views/LivePreview/IFrame/index.js +21 -16
  316. package/dist/views/LivePreview/IFrame/index.js.map +1 -1
  317. package/dist/views/LivePreview/Preview/index.js +145 -92
  318. package/dist/views/LivePreview/Preview/index.js.map +1 -1
  319. package/dist/views/LivePreview/Toolbar/Controls/index.js +136 -115
  320. package/dist/views/LivePreview/Toolbar/Controls/index.js.map +1 -1
  321. package/dist/views/LivePreview/Toolbar/SizeInput/index.js +89 -51
  322. package/dist/views/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  323. package/dist/views/LivePreview/Toolbar/index.js +82 -50
  324. package/dist/views/LivePreview/Toolbar/index.js.map +1 -1
  325. package/dist/views/LivePreview/ToolbarArea/index.js +32 -10
  326. package/dist/views/LivePreview/ToolbarArea/index.js.map +1 -1
  327. package/dist/views/LivePreview/index.client.js +316 -160
  328. package/dist/views/LivePreview/index.client.js.map +1 -1
  329. package/dist/views/LivePreview/index.js +67 -55
  330. package/dist/views/LivePreview/index.js.map +1 -1
  331. package/dist/views/LivePreview/meta.js +14 -9
  332. package/dist/views/LivePreview/meta.js.map +1 -1
  333. package/dist/views/LivePreview/usePopupWindow.js +91 -94
  334. package/dist/views/LivePreview/usePopupWindow.js.map +1 -1
  335. package/dist/views/Login/LoginField/index.js +83 -39
  336. package/dist/views/Login/LoginField/index.js.map +1 -1
  337. package/dist/views/Login/LoginForm/index.js +130 -66
  338. package/dist/views/Login/LoginForm/index.js.map +1 -1
  339. package/dist/views/Login/index.js +77 -54
  340. package/dist/views/Login/index.js.map +1 -1
  341. package/dist/views/Login/meta.js +12 -8
  342. package/dist/views/Login/meta.js.map +1 -1
  343. package/dist/views/Logout/LogoutClient.js +84 -39
  344. package/dist/views/Logout/LogoutClient.js.map +1 -1
  345. package/dist/views/Logout/index.js +29 -16
  346. package/dist/views/Logout/index.js.map +1 -1
  347. package/dist/views/Logout/meta.js +11 -7
  348. package/dist/views/Logout/meta.js.map +1 -1
  349. package/dist/views/NotFound/index.client.js +78 -40
  350. package/dist/views/NotFound/index.client.js.map +1 -1
  351. package/dist/views/NotFound/index.js +47 -37
  352. package/dist/views/NotFound/index.js.map +1 -1
  353. package/dist/views/NotFound/meta.js +9 -7
  354. package/dist/views/NotFound/meta.js.map +1 -1
  355. package/dist/views/ResetPassword/index.client.js +97 -59
  356. package/dist/views/ResetPassword/index.client.js.map +1 -1
  357. package/dist/views/ResetPassword/index.js +68 -53
  358. package/dist/views/ResetPassword/index.js.map +1 -1
  359. package/dist/views/ResetPassword/meta.js +12 -8
  360. package/dist/views/ResetPassword/meta.js.map +1 -1
  361. package/dist/views/Root/generateCustomViewMetadata.js +21 -19
  362. package/dist/views/Root/generateCustomViewMetadata.js.map +1 -1
  363. package/dist/views/Root/getCustomViewByRoute.js +42 -31
  364. package/dist/views/Root/getCustomViewByRoute.js.map +1 -1
  365. package/dist/views/Root/getViewFromConfig.js +162 -156
  366. package/dist/views/Root/getViewFromConfig.js.map +1 -1
  367. package/dist/views/Root/index.js +99 -82
  368. package/dist/views/Root/index.js.map +1 -1
  369. package/dist/views/Root/isPathMatchingRoute.js +18 -13
  370. package/dist/views/Root/isPathMatchingRoute.js.map +1 -1
  371. package/dist/views/Root/meta.js +141 -136
  372. package/dist/views/Root/meta.js.map +1 -1
  373. package/dist/views/Unauthorized/index.js +32 -22
  374. package/dist/views/Unauthorized/index.js.map +1 -1
  375. package/dist/views/Unauthorized/meta.js +12 -8
  376. package/dist/views/Unauthorized/meta.js.map +1 -1
  377. package/dist/views/Verify/index.js +58 -43
  378. package/dist/views/Verify/index.js.map +1 -1
  379. package/dist/views/Verify/meta.js +12 -8
  380. package/dist/views/Verify/meta.js.map +1 -1
  381. package/dist/views/Version/Default/SetStepNav.d.ts.map +1 -1
  382. package/dist/views/Version/Default/SetStepNav.js +147 -103
  383. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  384. package/dist/views/Version/Default/index.js +198 -114
  385. package/dist/views/Version/Default/index.js.map +1 -1
  386. package/dist/views/Version/Default/types.js +1 -2
  387. package/dist/views/Version/Default/types.js.map +1 -1
  388. package/dist/views/Version/RenderFieldsToDiff/Label/index.js +6 -5
  389. package/dist/views/Version/RenderFieldsToDiff/Label/index.js.map +1 -1
  390. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
  391. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +65 -69
  392. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  393. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts.map +1 -1
  394. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js +34 -31
  395. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js.map +1 -1
  396. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +108 -78
  397. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  398. package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js +17 -11
  399. package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js.map +1 -1
  400. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  401. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +40 -38
  402. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  403. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts.map +1 -1
  404. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +42 -32
  405. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  406. package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js +17 -11
  407. package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js.map +1 -1
  408. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts.map +1 -1
  409. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +34 -31
  410. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  411. package/dist/views/Version/RenderFieldsToDiff/fields/diffMethods.js +4 -5
  412. package/dist/views/Version/RenderFieldsToDiff/fields/diffMethods.js.map +1 -1
  413. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +20 -21
  414. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  415. package/dist/views/Version/RenderFieldsToDiff/fields/styles.js +23 -24
  416. package/dist/views/Version/RenderFieldsToDiff/fields/styles.js.map +1 -1
  417. package/dist/views/Version/RenderFieldsToDiff/fields/types.js +1 -2
  418. package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -1
  419. package/dist/views/Version/RenderFieldsToDiff/index.js +102 -97
  420. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  421. package/dist/views/Version/RenderFieldsToDiff/types.js +1 -2
  422. package/dist/views/Version/RenderFieldsToDiff/types.js.map +1 -1
  423. package/dist/views/Version/Restore/index.js +107 -110
  424. package/dist/views/Version/Restore/index.js.map +1 -1
  425. package/dist/views/Version/Restore/types.js +1 -2
  426. package/dist/views/Version/Restore/types.js.map +1 -1
  427. package/dist/views/Version/SelectComparison/index.js +130 -138
  428. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  429. package/dist/views/Version/SelectComparison/types.js +1 -2
  430. package/dist/views/Version/SelectComparison/types.js.map +1 -1
  431. package/dist/views/Version/SelectLocales/index.js +58 -30
  432. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  433. package/dist/views/Version/SelectLocales/types.js +1 -2
  434. package/dist/views/Version/SelectLocales/types.js.map +1 -1
  435. package/dist/views/Version/index.js +126 -105
  436. package/dist/views/Version/index.js.map +1 -1
  437. package/dist/views/Version/meta.js +49 -43
  438. package/dist/views/Version/meta.js.map +1 -1
  439. package/dist/views/Versions/buildColumns.js +87 -82
  440. package/dist/views/Versions/buildColumns.js.map +1 -1
  441. package/dist/views/Versions/cells/AutosaveCell/index.js +69 -42
  442. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  443. package/dist/views/Versions/cells/CreatedAt/index.js +70 -17
  444. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  445. package/dist/views/Versions/cells/ID/index.js +17 -5
  446. package/dist/views/Versions/cells/ID/index.js.map +1 -1
  447. package/dist/views/Versions/getLatestVersion.js +33 -29
  448. package/dist/views/Versions/getLatestVersion.js.map +1 -1
  449. package/dist/views/Versions/index.client.js +80 -77
  450. package/dist/views/Versions/index.client.js.map +1 -1
  451. package/dist/views/Versions/index.js +148 -127
  452. package/dist/views/Versions/index.js.map +1 -1
  453. package/dist/views/Versions/meta.js +43 -37
  454. package/dist/views/Versions/meta.js.map +1 -1
  455. package/dist/views/Versions/types.js +1 -2
  456. package/dist/views/Versions/types.js.map +1 -1
  457. package/dist/withPayload.js +83 -117
  458. package/dist/withPayload.js.map +1 -1
  459. package/package.json +20 -10
  460. package/dist/cjs/withPayload.cjs +0 -145
  461. package/dist/cjs/withPayload.cjs.map +0 -1
@@ -7,156 +7,173 @@ import { processNested } from './processNested.js';
7
7
  import { createUploadTimer } from './uploadTimer.js';
8
8
  import { buildFields, debugLog, isFunc, parseFileName } from './utilities.js';
9
9
  const waitFlushProperty = Symbol('wait flush property symbol');
10
- export const processMultipart = async ({ options, request })=>{
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;
10
+ export const processMultipart = async ({
11
+ options,
12
+ request
13
+ }) => {
14
+ let parsingRequest = true;
15
+ let fileCount = 0;
16
+ let filesCompleted = 0;
17
+ let allFilesHaveResolved;
18
+ let failedResolvingFiles;
19
+ const allFilesComplete = new Promise((res, rej) => {
20
+ allFilesHaveResolved = res;
21
+ failedResolvingFiles = rej;
22
+ });
23
+ const result = {
24
+ fields: undefined,
25
+ files: undefined
26
+ };
27
+ const headersObject = {};
28
+ request.headers.forEach((value, name) => {
29
+ headersObject[name] = value;
30
+ });
31
+ function abortAndDestroyFile(file, err) {
32
+ file.destroy();
33
+ parsingRequest = false;
34
+ failedResolvingFiles(err);
35
+ }
36
+ const busboy = Busboy({
37
+ ...options,
38
+ headers: headersObject
39
+ });
40
+ // Build multipart req.body fields
41
+ busboy.on('field', (field, val) => {
42
+ result.fields = buildFields(result.fields, field, val);
43
+ });
44
+ // Build req.files fields
45
+ busboy.on('file', (field, file, info) => {
46
+ fileCount += 1;
47
+ // Parse file name(cutting huge names, decoding, etc..).
48
+ const {
49
+ encoding,
50
+ filename: name,
51
+ mimeType: mime
52
+ } = info;
53
+ const filename = parseFileName(options, name);
54
+ // Define methods and handlers for upload process.
55
+ const {
56
+ cleanup,
57
+ complete,
58
+ dataHandler,
59
+ getFilePath,
60
+ getFileSize,
61
+ getHash,
62
+ getWritePromise
63
+ } = options.useTempFiles ? tempFileHandler(options, field, filename) // Upload into temporary file.
64
+ : memHandler(options, field, filename) // Upload into RAM.
65
+ ;
66
+ const writePromise = options.useTempFiles ? getWritePromise().catch(err => {
67
+ busboy.end();
68
+ cleanup();
69
+ }) : getWritePromise();
70
+ const uploadTimer = createUploadTimer(options.uploadTimeout, () => {
71
+ return abortAndDestroyFile(file, new APIError(`Upload timeout for ${field}->${filename}, bytes:${getFileSize()}`));
19
72
  });
20
- const result = {
21
- fields: undefined,
22
- files: undefined
23
- };
24
- const headersObject = {};
25
- request.headers.forEach((value, name)=>{
26
- headersObject[name] = value;
27
- });
28
- function abortAndDestroyFile(file, err) {
29
- file.destroy();
30
- parsingRequest = false;
31
- failedResolvingFiles(err);
32
- }
33
- const busboy = Busboy({
34
- ...options,
35
- headers: headersObject
36
- });
37
- // Build multipart req.body fields
38
- busboy.on('field', (field, val)=>{
39
- result.fields = buildFields(result.fields, field, val);
40
- });
41
- // Build req.files fields
42
- busboy.on('file', (field, file, info)=>{
43
- fileCount += 1;
44
- // Parse file name(cutting huge names, decoding, etc..).
45
- const { encoding, filename: name, mimeType: mime } = info;
46
- const filename = parseFileName(options, name);
47
- // Define methods and handlers for upload process.
48
- const { cleanup, complete, dataHandler, getFilePath, getFileSize, getHash, getWritePromise } = options.useTempFiles ? tempFileHandler(options, field, filename) // Upload into temporary file.
49
- : memHandler(options, field, filename) // Upload into RAM.
50
- ;
51
- const writePromise = options.useTempFiles ? getWritePromise().catch((err)=>{
52
- busboy.end();
53
- cleanup();
54
- }) : getWritePromise();
55
- const uploadTimer = createUploadTimer(options.uploadTimeout, ()=>{
56
- return abortAndDestroyFile(file, new APIError(`Upload timeout for ${field}->${filename}, bytes:${getFileSize()}`));
57
- });
58
- file.on('limit', ()=>{
59
- debugLog(options, `Size limit reached for ${field}->${filename}, bytes:${getFileSize()}`);
60
- uploadTimer.clear();
61
- if (isFunc(options.limitHandler)) {
62
- options.limitHandler({
63
- request,
64
- size: getFileSize()
65
- });
66
- }
67
- // Return error and cleanup files if abortOnLimit set.
68
- if (options.abortOnLimit) {
69
- debugLog(options, `Upload file size limit reached ${field}->${filename}.`);
70
- cleanup();
71
- abortAndDestroyFile(file, new APIError(options.responseOnLimit, httpStatus.REQUEST_ENTITY_TOO_LARGE, {
72
- size: getFileSize()
73
- }));
74
- }
75
- });
76
- file.on('data', (data)=>{
77
- uploadTimer.set();
78
- dataHandler(data);
79
- });
80
- file.on('end', ()=>{
81
- const size = getFileSize();
82
- debugLog(options, `Upload finished ${field}->${filename}, bytes:${size}`);
83
- uploadTimer.clear();
84
- if (!name && size === 0) {
85
- fileCount -= 1;
86
- if (options.useTempFiles) {
87
- cleanup();
88
- debugLog(options, `Removing the empty file ${field}->${filename}`);
89
- }
90
- return debugLog(options, `Don't add file instance if original name and size are empty`);
91
- }
92
- filesCompleted += 1;
93
- result.files = buildFields(result.files, field, fileFactory({
94
- name: filename,
95
- buffer: complete(),
96
- encoding,
97
- hash: getHash(),
98
- mimetype: mime,
99
- size,
100
- tempFilePath: getFilePath(),
101
- truncated: Boolean('truncated' in file && file.truncated)
102
- }, options));
103
- if (!request[waitFlushProperty]) {
104
- request[waitFlushProperty] = [];
105
- }
106
- request[waitFlushProperty].push(writePromise);
107
- if (filesCompleted === fileCount) {
108
- allFilesHaveResolved();
109
- }
110
- });
111
- file.on('error', (err)=>{
112
- uploadTimer.clear();
113
- debugLog(options, `File Error: ${err.message}`);
114
- cleanup();
115
- failedResolvingFiles(err);
73
+ file.on('limit', () => {
74
+ debugLog(options, `Size limit reached for ${field}->${filename}, bytes:${getFileSize()}`);
75
+ uploadTimer.clear();
76
+ if (isFunc(options.limitHandler)) {
77
+ options.limitHandler({
78
+ request,
79
+ size: getFileSize()
116
80
  });
117
- // Start upload process.
118
- debugLog(options, `New upload started ${field}->${filename}, bytes:${getFileSize()}`);
119
- uploadTimer.set();
81
+ }
82
+ // Return error and cleanup files if abortOnLimit set.
83
+ if (options.abortOnLimit) {
84
+ debugLog(options, `Upload file size limit reached ${field}->${filename}.`);
85
+ cleanup();
86
+ abortAndDestroyFile(file, new APIError(options.responseOnLimit, httpStatus.REQUEST_ENTITY_TOO_LARGE, {
87
+ size: getFileSize()
88
+ }));
89
+ }
120
90
  });
121
- busboy.on('finish', async ()=>{
122
- debugLog(options, `Busboy finished parsing request.`);
123
- if (options.parseNested) {
124
- result.fields = processNested(result.fields);
125
- result.files = processNested(result.files);
126
- }
127
- if (request[waitFlushProperty]) {
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
- }
91
+ file.on('data', data => {
92
+ uploadTimer.set();
93
+ dataHandler(data);
94
+ });
95
+ file.on('end', () => {
96
+ const size = getFileSize();
97
+ debugLog(options, `Upload finished ${field}->${filename}, bytes:${size}`);
98
+ uploadTimer.clear();
99
+ if (!name && size === 0) {
100
+ fileCount -= 1;
101
+ if (options.useTempFiles) {
102
+ cleanup();
103
+ debugLog(options, `Removing the empty file ${field}->${filename}`);
135
104
  }
136
- return result;
105
+ return debugLog(options, `Don't add file instance if original name and size are empty`);
106
+ }
107
+ filesCompleted += 1;
108
+ result.files = buildFields(result.files, field, fileFactory({
109
+ name: filename,
110
+ buffer: complete(),
111
+ encoding,
112
+ hash: getHash(),
113
+ mimetype: mime,
114
+ size,
115
+ tempFilePath: getFilePath(),
116
+ truncated: Boolean('truncated' in file && file.truncated)
117
+ }, options));
118
+ if (!request[waitFlushProperty]) {
119
+ request[waitFlushProperty] = [];
120
+ }
121
+ request[waitFlushProperty].push(writePromise);
122
+ if (filesCompleted === fileCount) {
123
+ allFilesHaveResolved();
124
+ }
137
125
  });
138
- busboy.on('error', (err = new APIError('Busboy error parsing multipart request', httpStatus.BAD_REQUEST))=>{
139
- debugLog(options, `Busboy error`);
140
- parsingRequest = false;
141
- throw err;
126
+ file.on('error', err => {
127
+ uploadTimer.clear();
128
+ debugLog(options, `File Error: ${err.message}`);
129
+ cleanup();
130
+ failedResolvingFiles(err);
142
131
  });
143
- const reader = request.body.getReader();
144
- // Start parsing request
145
- while(parsingRequest){
146
- const { done, value } = await reader.read();
147
- if (done) {
148
- parsingRequest = false;
149
- }
150
- if (value) {
151
- busboy.write(value);
152
- }
132
+ // Start upload process.
133
+ debugLog(options, `New upload started ${field}->${filename}, bytes:${getFileSize()}`);
134
+ uploadTimer.set();
135
+ });
136
+ busboy.on('finish', async () => {
137
+ debugLog(options, `Busboy finished parsing request.`);
138
+ if (options.parseNested) {
139
+ result.fields = processNested(result.fields);
140
+ result.files = processNested(result.files);
153
141
  }
154
- if (fileCount !== 0) {
155
- await allFilesComplete.catch((e)=>{
156
- throw e;
142
+ if (request[waitFlushProperty]) {
143
+ try {
144
+ await Promise.all(request[waitFlushProperty]).then(() => {
145
+ delete request[waitFlushProperty];
157
146
  });
147
+ } catch (err) {
148
+ debugLog(options, `Error waiting for file write promises: ${err}`);
149
+ }
158
150
  }
159
151
  return result;
152
+ });
153
+ busboy.on('error', (err = new APIError('Busboy error parsing multipart request', httpStatus.BAD_REQUEST)) => {
154
+ debugLog(options, `Busboy error`);
155
+ parsingRequest = false;
156
+ throw err;
157
+ });
158
+ const reader = request.body.getReader();
159
+ // Start parsing request
160
+ while (parsingRequest) {
161
+ const {
162
+ done,
163
+ value
164
+ } = await reader.read();
165
+ if (done) {
166
+ parsingRequest = false;
167
+ }
168
+ if (value) {
169
+ busboy.write(value);
170
+ }
171
+ }
172
+ if (fileCount !== 0) {
173
+ await allFilesComplete.catch(e => {
174
+ throw e;
175
+ });
176
+ }
177
+ return result;
160
178
  };
161
-
162
179
  //# sourceMappingURL=processMultipart.js.map
@@ -1 +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'\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"],"mappings":"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"}
1
+ {"version":3,"file":"processMultipart.js","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"],"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'\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"],"mappings":"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","ignoreList":[]}
@@ -1,25 +1,27 @@
1
1
  import { isSafeFromPollution } from './utilities.js';
2
- export const processNested = function(data) {
3
- if (!data || data.length < 1) return Object.create(null);
4
- const d = Object.create(null), keys = Object.keys(data);
5
- for(let i = 0; i < keys.length; i++){
6
- const key = keys[i], value = data[key], keyParts = key.replace(new RegExp(/\[/g), '.').replace(new RegExp(/\]/g), '').split('.');
7
- let current = d;
8
- for(let index = 0; index < keyParts.length; index++){
9
- const k = keyParts[index];
10
- // Ensure we don't allow prototype pollution
11
- if (!isSafeFromPollution(current, k)) {
12
- continue;
13
- }
14
- if (index >= keyParts.length - 1) {
15
- current[k] = value;
16
- } else {
17
- if (!current[k]) current[k] = !keyParts[index + 1] ? [] : Object.create(null);
18
- current = current[k];
19
- }
20
- }
2
+ export const processNested = function (data) {
3
+ if (!data || data.length < 1) return Object.create(null);
4
+ const d = Object.create(null),
5
+ keys = Object.keys(data);
6
+ for (let i = 0; i < keys.length; i++) {
7
+ const key = keys[i],
8
+ value = data[key],
9
+ keyParts = key.replace(new RegExp(/\[/g), '.').replace(new RegExp(/\]/g), '').split('.');
10
+ let current = d;
11
+ for (let index = 0; index < keyParts.length; index++) {
12
+ const k = keyParts[index];
13
+ // Ensure we don't allow prototype pollution
14
+ if (!isSafeFromPollution(current, k)) {
15
+ continue;
16
+ }
17
+ if (index >= keyParts.length - 1) {
18
+ current[k] = value;
19
+ } else {
20
+ if (!current[k]) current[k] = !keyParts[index + 1] ? [] : Object.create(null);
21
+ current = current[k];
22
+ }
21
23
  }
22
- return d;
24
+ }
25
+ return d;
23
26
  };
24
-
25
27
  //# sourceMappingURL=processNested.js.map
@@ -1 +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"],"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"}
1
+ {"version":3,"file":"processNested.js","names":["isSafeFromPollution","processNested","data","length","Object","create","d","keys","i","key","value","keyParts","replace","RegExp","split","current","index","k"],"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"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ;AAEpC,OAAO,MAAMC,aAAA,GAAgB,SAAAA,CAAUC,IAAI;EACzC,IAAI,CAACA,IAAA,IAAQA,IAAA,CAAKC,MAAM,GAAG,GAAG,OAAOC,MAAA,CAAOC,MAAM,CAAC;EAEnD,MAAMC,CAAA,GAAIF,MAAA,CAAOC,MAAM,CAAC;IACtBE,IAAA,GAAOH,MAAA,CAAOG,IAAI,CAACL,IAAA;EAErB,KAAK,IAAIM,CAAA,GAAI,GAAGA,CAAA,GAAID,IAAA,CAAKJ,MAAM,EAAEK,CAAA,IAAK;IACpC,MAAMC,GAAA,GAAMF,IAAI,CAACC,CAAA,CAAE;MACjBE,KAAA,GAAQR,IAAI,CAACO,GAAA,CAAI;MACjBE,QAAA,GAAWF,GAAA,CAAIG,OAAO,CAAC,IAAIC,MAAA,CAAO,QAAQ,KAAKD,OAAO,CAAC,IAAIC,MAAA,CAAO,QAAQ,IAAIC,KAAK,CAAC;IACtF,IAAIC,OAAA,GAAUT,CAAA;IAEd,KAAK,IAAIU,KAAA,GAAQ,GAAGA,KAAA,GAAQL,QAAA,CAASR,MAAM,EAAEa,KAAA,IAAS;MACpD,MAAMC,CAAA,GAAIN,QAAQ,CAACK,KAAA,CAAM;MAEzB;MACA,IAAI,CAAChB,mBAAA,CAAoBe,OAAA,EAASE,CAAA,GAAI;QACpC;MACF;MAEA,IAAID,KAAA,IAASL,QAAA,CAASR,MAAM,GAAG,GAAG;QAChCY,OAAO,CAACE,CAAA,CAAE,GAAGP,KAAA;MACf,OAAO;QACL,IAAI,CAACK,OAAO,CAACE,CAAA,CAAE,EAAEF,OAAO,CAACE,CAAA,CAAE,GAAG,CAACN,QAAQ,CAACK,KAAA,GAAQ,EAAE,GAAG,EAAE,GAAGZ,MAAA,CAAOC,MAAM,CAAC;QACxEU,OAAA,GAAUA,OAAO,CAACE,CAAA,CAAE;MACtB;IACF;EACF;EACA,OAAOX,CAAA;AACT","ignoreList":[]}
@@ -1,19 +1,18 @@
1
- export const createUploadTimer = (timeout = 0, callback = ()=>{})=>{
2
- let timer = null;
3
- const clear = ()=>{
4
- clearTimeout(timer);
5
- };
6
- const set = ()=>{
7
- // Do not start a timer if zero timeout or it hasn't been set.
8
- if (!timeout) return false;
9
- clear();
10
- timer = setTimeout(callback, timeout);
11
- return true;
12
- };
13
- return {
14
- clear,
15
- set
16
- };
1
+ export const createUploadTimer = (timeout = 0, callback = () => {}) => {
2
+ let timer = null;
3
+ const clear = () => {
4
+ clearTimeout(timer);
5
+ };
6
+ const set = () => {
7
+ // Do not start a timer if zero timeout or it hasn't been set.
8
+ if (!timeout) return false;
9
+ clear();
10
+ timer = setTimeout(callback, timeout);
11
+ return true;
12
+ };
13
+ return {
14
+ clear,
15
+ set
16
+ };
17
17
  };
18
-
19
18
  //# sourceMappingURL=uploadTimer.js.map
@@ -1 +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"],"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
+ {"version":3,"file":"uploadTimer.js","names":["createUploadTimer","timeout","callback","timer","clear","clearTimeout","set","setTimeout"],"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"],"mappings":"AAQA,OAAO,MAAMA,iBAAA,GAAuCA,CAACC,OAAA,GAAU,CAAC,EAAEC,QAAA,GAAWA,CAAA,MAAO,CAAC;EACnF,IAAIC,KAAA,GAAQ;EAEZ,MAAMC,KAAA,GAAQA,CAAA;IACZC,YAAA,CAAaF,KAAA;EACf;EAEA,MAAMG,GAAA,GAAMA,CAAA;IACV;IACA,IAAI,CAACL,OAAA,EAAS,OAAO;IACrBG,KAAA;IACAD,KAAA,GAAQI,UAAA,CAAWL,QAAA,EAAUD,OAAA;IAC7B,OAAO;EACT;EAEA,OAAO;IAAEG,KAAA;IAAOE;EAAI;AACtB","ignoreList":[]}