@payloadcms/next 3.0.0-beta.127 → 3.0.0-beta.129

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 (285) hide show
  1. package/dist/cjs/withPayload.cjs +10 -0
  2. package/dist/cjs/withPayload.cjs.map +1 -1
  3. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts +1 -1
  4. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
  5. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +13 -15
  6. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  7. package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
  8. package/dist/elements/DocumentHeader/Tabs/index.js +9 -14
  9. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  10. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.d.ts.map +1 -1
  11. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +13 -28
  12. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  13. package/dist/elements/DocumentHeader/index.d.ts +0 -1
  14. package/dist/elements/DocumentHeader/index.d.ts.map +1 -1
  15. package/dist/elements/DocumentHeader/index.js +9 -12
  16. package/dist/elements/DocumentHeader/index.js.map +1 -1
  17. package/dist/elements/Logo/index.d.ts.map +1 -1
  18. package/dist/elements/Logo/index.js +5 -6
  19. package/dist/elements/Logo/index.js.map +1 -1
  20. package/dist/elements/Nav/index.client.d.ts +4 -1
  21. package/dist/elements/Nav/index.client.d.ts.map +1 -1
  22. package/dist/elements/Nav/index.client.js +40 -95
  23. package/dist/elements/Nav/index.client.js.map +1 -1
  24. package/dist/elements/Nav/index.d.ts.map +1 -1
  25. package/dist/elements/Nav/index.js +60 -23
  26. package/dist/elements/Nav/index.js.map +1 -1
  27. package/dist/exports/layouts.d.ts +1 -0
  28. package/dist/exports/layouts.d.ts.map +1 -1
  29. package/dist/exports/layouts.js +1 -0
  30. package/dist/exports/layouts.js.map +1 -1
  31. package/dist/exports/utilities.d.ts.map +1 -1
  32. package/dist/exports/utilities.js +1 -0
  33. package/dist/exports/utilities.js.map +1 -1
  34. package/dist/exports/views.d.ts +0 -2
  35. package/dist/exports/views.d.ts.map +1 -1
  36. package/dist/exports/views.js +0 -2
  37. package/dist/exports/views.js.map +1 -1
  38. package/dist/fetchAPI-multipart/isEligibleRequest.js +1 -1
  39. package/dist/fetchAPI-multipart/isEligibleRequest.js.map +1 -1
  40. package/dist/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
  41. package/dist/fetchAPI-multipart/processMultipart.js +9 -11
  42. package/dist/fetchAPI-multipart/processMultipart.js.map +1 -1
  43. package/dist/layouts/Root/NestProviders.d.ts +11 -0
  44. package/dist/layouts/Root/NestProviders.d.ts.map +1 -0
  45. package/dist/layouts/Root/NestProviders.js +21 -0
  46. package/dist/layouts/Root/NestProviders.js.map +1 -0
  47. package/dist/layouts/Root/index.d.ts +3 -2
  48. package/dist/layouts/Root/index.d.ts.map +1 -1
  49. package/dist/layouts/Root/index.js +14 -18
  50. package/dist/layouts/Root/index.js.map +1 -1
  51. package/dist/prod/styles.css +1 -1
  52. package/dist/routes/rest/index.d.ts.map +1 -1
  53. package/dist/routes/rest/index.js +0 -10
  54. package/dist/routes/rest/index.js.map +1 -1
  55. package/dist/routes/rest/og/image.d.ts +4 -2
  56. package/dist/routes/rest/og/image.d.ts.map +1 -1
  57. package/dist/routes/rest/og/image.js +7 -3
  58. package/dist/routes/rest/og/image.js.map +1 -1
  59. package/dist/routes/rest/og/index.d.ts.map +1 -1
  60. package/dist/routes/rest/og/index.js +5 -8
  61. package/dist/routes/rest/og/index.js.map +1 -1
  62. package/dist/routes/rest/routeError.d.ts.map +1 -1
  63. package/dist/routes/rest/routeError.js +1 -47
  64. package/dist/routes/rest/routeError.js.map +1 -1
  65. package/dist/templates/Default/index.d.ts +2 -1
  66. package/dist/templates/Default/index.d.ts.map +1 -1
  67. package/dist/templates/Default/index.js +97 -41
  68. package/dist/templates/Default/index.js.map +1 -1
  69. package/dist/utilities/getClientConfig.d.ts +7 -0
  70. package/dist/utilities/getClientConfig.d.ts.map +1 -0
  71. package/dist/utilities/getClientConfig.js +14 -0
  72. package/dist/utilities/getClientConfig.js.map +1 -0
  73. package/dist/utilities/handleServerFunctions.d.ts +3 -0
  74. package/dist/utilities/handleServerFunctions.d.ts.map +1 -0
  75. package/dist/utilities/handleServerFunctions.js +35 -0
  76. package/dist/utilities/handleServerFunctions.js.map +1 -0
  77. package/dist/utilities/initPage/handleAdminPage.d.ts +2 -1
  78. package/dist/utilities/initPage/handleAdminPage.d.ts.map +1 -1
  79. package/dist/utilities/initPage/handleAdminPage.js +9 -1
  80. package/dist/utilities/initPage/handleAdminPage.js.map +1 -1
  81. package/dist/utilities/initPage/index.d.ts.map +1 -1
  82. package/dist/utilities/initPage/index.js +2 -1
  83. package/dist/utilities/initPage/index.js.map +1 -1
  84. package/dist/utilities/initReq.d.ts +1 -1
  85. package/dist/utilities/initReq.d.ts.map +1 -1
  86. package/dist/utilities/initReq.js +3 -2
  87. package/dist/utilities/initReq.js.map +1 -1
  88. package/dist/views/API/LocaleSelector/index.d.ts.map +1 -1
  89. package/dist/views/API/LocaleSelector/index.js +0 -1
  90. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  91. package/dist/views/API/index.client.d.ts.map +1 -1
  92. package/dist/views/API/index.client.js +10 -13
  93. package/dist/views/API/index.client.js.map +1 -1
  94. package/dist/views/Account/Settings/index.js +0 -1
  95. package/dist/views/Account/Settings/index.js.map +1 -1
  96. package/dist/views/Account/index.d.ts.map +1 -1
  97. package/dist/views/Account/index.js +81 -24
  98. package/dist/views/Account/index.js.map +1 -1
  99. package/dist/views/CreateFirstUser/index.client.d.ts +3 -1
  100. package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
  101. package/dist/views/CreateFirstUser/index.client.js +83 -109
  102. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  103. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  104. package/dist/views/CreateFirstUser/index.js +36 -4
  105. package/dist/views/CreateFirstUser/index.js.map +1 -1
  106. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  107. package/dist/views/Dashboard/Default/index.js +46 -44
  108. package/dist/views/Dashboard/Default/index.js.map +1 -1
  109. package/dist/views/Dashboard/index.d.ts.map +1 -1
  110. package/dist/views/Dashboard/index.js +22 -21
  111. package/dist/views/Dashboard/index.js.map +1 -1
  112. package/dist/views/Document/getDocPreferences.d.ts +11 -0
  113. package/dist/views/Document/getDocPreferences.d.ts.map +1 -0
  114. package/dist/views/Document/getDocPreferences.js +44 -0
  115. package/dist/views/Document/getDocPreferences.js.map +1 -0
  116. package/dist/views/Document/getDocumentData.d.ts +10 -11
  117. package/dist/views/Document/getDocumentData.d.ts.map +1 -1
  118. package/dist/views/Document/getDocumentData.js +35 -47
  119. package/dist/views/Document/getDocumentData.js.map +1 -1
  120. package/dist/views/Document/getIsLocked.d.ts +16 -0
  121. package/dist/views/Document/getIsLocked.d.ts.map +1 -0
  122. package/dist/views/Document/getIsLocked.js +55 -0
  123. package/dist/views/Document/getIsLocked.js.map +1 -0
  124. package/dist/views/Document/getVersions.d.ts +19 -0
  125. package/dist/views/Document/getVersions.d.ts.map +1 -0
  126. package/dist/views/Document/getVersions.js +181 -0
  127. package/dist/views/Document/getVersions.js.map +1 -0
  128. package/dist/views/Document/getViewsFromConfig.d.ts +1 -1
  129. package/dist/views/Document/getViewsFromConfig.d.ts.map +1 -1
  130. package/dist/views/Document/getViewsFromConfig.js +18 -19
  131. package/dist/views/Document/getViewsFromConfig.js.map +1 -1
  132. package/dist/views/Document/handleServerFunction.d.ts +24 -0
  133. package/dist/views/Document/handleServerFunction.d.ts.map +1 -0
  134. package/dist/views/Document/handleServerFunction.js +156 -0
  135. package/dist/views/Document/handleServerFunction.js.map +1 -0
  136. package/dist/views/Document/index.d.ts +5 -1
  137. package/dist/views/Document/index.d.ts.map +1 -1
  138. package/dist/views/Document/index.js +181 -72
  139. package/dist/views/Document/index.js.map +1 -1
  140. package/dist/views/Document/renderDocumentSlots.d.ts +12 -0
  141. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -0
  142. package/dist/views/Document/renderDocumentSlots.js +92 -0
  143. package/dist/views/Document/renderDocumentSlots.js.map +1 -0
  144. package/dist/views/Edit/index.d.ts +3 -2
  145. package/dist/views/Edit/index.d.ts.map +1 -1
  146. package/dist/views/Edit/index.js +7 -3
  147. package/dist/views/Edit/index.js.map +1 -1
  148. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  149. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +3 -1
  150. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  151. package/dist/views/List/handleServerFunction.d.ts +26 -0
  152. package/dist/views/List/handleServerFunction.d.ts.map +1 -0
  153. package/dist/views/List/handleServerFunction.js +155 -0
  154. package/dist/views/List/handleServerFunction.js.map +1 -0
  155. package/dist/views/List/index.d.ts +12 -2
  156. package/dist/views/List/index.d.ts.map +1 -1
  157. package/dist/views/List/index.js +121 -81
  158. package/dist/views/List/index.js.map +1 -1
  159. package/dist/views/List/renderListViewSlots.d.ts +8 -0
  160. package/dist/views/List/renderListViewSlots.d.ts.map +1 -0
  161. package/dist/views/List/renderListViewSlots.js +44 -0
  162. package/dist/views/List/renderListViewSlots.js.map +1 -0
  163. package/dist/views/LivePreview/Context/sizeReducer.d.ts +1 -1
  164. package/dist/views/LivePreview/Context/sizeReducer.d.ts.map +1 -1
  165. package/dist/views/LivePreview/Context/sizeReducer.js +4 -4
  166. package/dist/views/LivePreview/Context/sizeReducer.js.map +1 -1
  167. package/dist/views/LivePreview/index.client.d.ts.map +1 -1
  168. package/dist/views/LivePreview/index.client.js +38 -35
  169. package/dist/views/LivePreview/index.client.js.map +1 -1
  170. package/dist/views/Login/LoginField/index.d.ts.map +1 -1
  171. package/dist/views/Login/LoginField/index.js +3 -1
  172. package/dist/views/Login/LoginField/index.js.map +1 -1
  173. package/dist/views/Login/index.d.ts.map +1 -1
  174. package/dist/views/Login/index.js +25 -19
  175. package/dist/views/Login/index.js.map +1 -1
  176. package/dist/views/ResetPassword/ResetPasswordForm/index.d.ts.map +1 -1
  177. package/dist/views/ResetPassword/ResetPasswordForm/index.js +24 -10
  178. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
  179. package/dist/views/Root/getViewFromConfig.d.ts +3 -1
  180. package/dist/views/Root/getViewFromConfig.d.ts.map +1 -1
  181. package/dist/views/Root/getViewFromConfig.js +128 -7
  182. package/dist/views/Root/getViewFromConfig.js.map +1 -1
  183. package/dist/views/Root/index.d.ts.map +1 -1
  184. package/dist/views/Root/index.js +22 -11
  185. package/dist/views/Root/index.js.map +1 -1
  186. package/dist/views/Version/Default/index.d.ts.map +1 -1
  187. package/dist/views/Version/Default/index.js +2 -4
  188. package/dist/views/Version/Default/index.js.map +1 -1
  189. package/dist/views/Versions/buildColumns.d.ts +3 -2
  190. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  191. package/dist/views/Versions/buildColumns.js +33 -61
  192. package/dist/views/Versions/buildColumns.js.map +1 -1
  193. package/dist/views/Versions/cells/AutosaveCell/index.d.ts +7 -0
  194. package/dist/views/Versions/cells/AutosaveCell/index.d.ts.map +1 -1
  195. package/dist/views/Versions/cells/AutosaveCell/index.js +48 -37
  196. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  197. package/dist/views/Versions/cells/CreatedAt/index.d.ts +4 -0
  198. package/dist/views/Versions/cells/CreatedAt/index.d.ts.map +1 -1
  199. package/dist/views/Versions/cells/CreatedAt/index.js +43 -45
  200. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  201. package/dist/views/Versions/cells/ID/index.d.ts +3 -1
  202. package/dist/views/Versions/cells/ID/index.d.ts.map +1 -1
  203. package/dist/views/Versions/cells/ID/index.js +7 -19
  204. package/dist/views/Versions/cells/ID/index.js.map +1 -1
  205. package/dist/views/Versions/index.client.d.ts.map +1 -1
  206. package/dist/views/Versions/index.client.js +53 -51
  207. package/dist/views/Versions/index.client.js.map +1 -1
  208. package/dist/views/Versions/index.d.ts.map +1 -1
  209. package/dist/views/Versions/index.js +3 -2
  210. package/dist/views/Versions/index.js.map +1 -1
  211. package/dist/withPayload.d.ts.map +1 -1
  212. package/dist/withPayload.js +10 -0
  213. package/dist/withPayload.js.map +1 -1
  214. package/license.md +22 -0
  215. package/package.json +16 -7
  216. package/dist/elements/DocumentLocked/index.d.ts +0 -12
  217. package/dist/elements/DocumentLocked/index.d.ts.map +0 -1
  218. package/dist/elements/DocumentLocked/index.js +0 -152
  219. package/dist/elements/DocumentLocked/index.js.map +0 -1
  220. package/dist/elements/DocumentLocked/index.scss +0 -40
  221. package/dist/elements/DocumentTakeOver/index.d.ts +0 -8
  222. package/dist/elements/DocumentTakeOver/index.d.ts.map +0 -1
  223. package/dist/elements/DocumentTakeOver/index.js +0 -98
  224. package/dist/elements/DocumentTakeOver/index.js.map +0 -1
  225. package/dist/elements/DocumentTakeOver/index.scss +0 -39
  226. package/dist/elements/EmailAndUsername/index.d.ts +0 -14
  227. package/dist/elements/EmailAndUsername/index.d.ts.map +0 -1
  228. package/dist/elements/EmailAndUsername/index.js +0 -121
  229. package/dist/elements/EmailAndUsername/index.js.map +0 -1
  230. package/dist/elements/LeaveWithoutSaving/index.d.ts +0 -4
  231. package/dist/elements/LeaveWithoutSaving/index.d.ts.map +0 -1
  232. package/dist/elements/LeaveWithoutSaving/index.js +0 -162
  233. package/dist/elements/LeaveWithoutSaving/index.js.map +0 -1
  234. package/dist/elements/LeaveWithoutSaving/index.scss +0 -39
  235. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts +0 -9
  236. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +0 -1
  237. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +0 -136
  238. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +0 -1
  239. package/dist/routes/rest/buildFormState.d.ts +0 -5
  240. package/dist/routes/rest/buildFormState.d.ts.map +0 -1
  241. package/dist/routes/rest/buildFormState.js +0 -46
  242. package/dist/routes/rest/buildFormState.js.map +0 -1
  243. package/dist/views/Edit/Default/Auth/APIKey.d.ts +0 -6
  244. package/dist/views/Edit/Default/Auth/APIKey.d.ts.map +0 -1
  245. package/dist/views/Edit/Default/Auth/APIKey.js +0 -125
  246. package/dist/views/Edit/Default/Auth/APIKey.js.map +0 -1
  247. package/dist/views/Edit/Default/Auth/index.d.ts +0 -5
  248. package/dist/views/Edit/Default/Auth/index.d.ts.map +0 -1
  249. package/dist/views/Edit/Default/Auth/index.js +0 -318
  250. package/dist/views/Edit/Default/Auth/index.js.map +0 -1
  251. package/dist/views/Edit/Default/Auth/index.scss +0 -78
  252. package/dist/views/Edit/Default/Auth/types.d.ts +0 -17
  253. package/dist/views/Edit/Default/Auth/types.d.ts.map +0 -1
  254. package/dist/views/Edit/Default/Auth/types.js +0 -2
  255. package/dist/views/Edit/Default/Auth/types.js.map +0 -1
  256. package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts +0 -11
  257. package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts.map +0 -1
  258. package/dist/views/Edit/Default/SetDocumentStepNav/index.js +0 -130
  259. package/dist/views/Edit/Default/SetDocumentStepNav/index.js.map +0 -1
  260. package/dist/views/Edit/Default/SetDocumentTitle/index.d.ts +0 -8
  261. package/dist/views/Edit/Default/SetDocumentTitle/index.d.ts.map +0 -1
  262. package/dist/views/Edit/Default/SetDocumentTitle/index.js +0 -81
  263. package/dist/views/Edit/Default/SetDocumentTitle/index.js.map +0 -1
  264. package/dist/views/Edit/Default/index.d.ts +0 -4
  265. package/dist/views/Edit/Default/index.d.ts.map +0 -1
  266. package/dist/views/Edit/Default/index.js +0 -349
  267. package/dist/views/Edit/Default/index.js.map +0 -1
  268. package/dist/views/Edit/Default/index.scss +0 -23
  269. package/dist/views/Edit/Default/types.d.ts +0 -6
  270. package/dist/views/Edit/Default/types.d.ts.map +0 -1
  271. package/dist/views/Edit/Default/types.js +0 -2
  272. package/dist/views/Edit/Default/types.js.map +0 -1
  273. package/dist/views/Edit/index.client.d.ts +0 -3
  274. package/dist/views/Edit/index.client.d.ts.map +0 -1
  275. package/dist/views/Edit/index.client.js +0 -54
  276. package/dist/views/Edit/index.client.js.map +0 -1
  277. package/dist/views/List/Default/index.d.ts +0 -4
  278. package/dist/views/List/Default/index.d.ts.map +0 -1
  279. package/dist/views/List/Default/index.js +0 -387
  280. package/dist/views/List/Default/index.js.map +0 -1
  281. package/dist/views/List/Default/index.scss +0 -179
  282. package/dist/views/List/Default/types.d.ts +0 -15
  283. package/dist/views/List/Default/types.d.ts.map +0 -1
  284. package/dist/views/List/Default/types.js +0 -2
  285. package/dist/views/List/Default/types.js.map +0 -1
@@ -3,103 +3,65 @@
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { getTranslation } from '@payloadcms/translations';
6
- import { NavGroup, useAuth, useConfig, useEntityVisibility, useNav, useTranslation } from '@payloadcms/ui';
7
- import { EntityType, formatAdminURL, groupNavItems } from '@payloadcms/ui/shared';
6
+ import { NavGroup, useConfig, useNav, useTranslation } from '@payloadcms/ui';
7
+ import { EntityType, formatAdminURL } from '@payloadcms/ui/shared';
8
8
  import LinkWithDefault from 'next/link.js';
9
9
  import { usePathname } from 'next/navigation.js';
10
10
  import React, { Fragment } from 'react';
11
11
  const baseClass = 'nav';
12
- export const DefaultNavClient = () => {
13
- const $ = _c(18);
12
+ export const DefaultNavClient = t0 => {
13
+ const $ = _c(11);
14
14
  const {
15
- permissions
16
- } = useAuth();
17
- const {
18
- isEntityVisible
19
- } = useEntityVisibility();
15
+ groups
16
+ } = t0;
20
17
  const pathname = usePathname();
21
18
  const {
22
- config: t0
19
+ config: t1
23
20
  } = useConfig();
24
21
  const {
25
- collections,
26
- globals,
27
- routes: t1
28
- } = t0;
22
+ routes: t2
23
+ } = t1;
29
24
  const {
30
25
  admin: adminRoute
31
- } = t1;
26
+ } = t2;
32
27
  const {
33
28
  i18n
34
29
  } = useTranslation();
35
30
  const {
36
31
  navOpen
37
32
  } = useNav();
38
- let t2;
39
- if ($[0] !== isEntityVisible || $[1] !== collections || $[2] !== globals || $[3] !== permissions || $[4] !== i18n || $[5] !== adminRoute || $[6] !== pathname || $[7] !== navOpen) {
40
- let t3;
41
- if ($[9] !== isEntityVisible) {
42
- t3 = t4 => {
43
- const {
44
- slug
45
- } = t4;
46
- return isEntityVisible({
47
- collectionSlug: slug
48
- });
49
- };
50
- $[9] = isEntityVisible;
51
- $[10] = t3;
52
- } else {
53
- t3 = $[10];
54
- }
33
+ let t3;
34
+ if ($[0] !== adminRoute || $[1] !== pathname || $[2] !== navOpen || $[3] !== i18n || $[4] !== groups) {
55
35
  let t4;
56
- if ($[11] !== isEntityVisible) {
57
- t4 = t5 => {
58
- const {
59
- slug: slug_0
60
- } = t5;
61
- return isEntityVisible({
62
- globalSlug: slug_0
63
- });
64
- };
65
- $[11] = isEntityVisible;
66
- $[12] = t4;
67
- } else {
68
- t4 = $[12];
69
- }
70
- const groups = groupNavItems([...collections.filter(t3).map(_temp), ...globals.filter(t4).map(_temp2)], permissions, i18n);
71
- let t5;
72
- if ($[13] !== adminRoute || $[14] !== i18n || $[15] !== pathname || $[16] !== navOpen) {
73
- t5 = (t6, key) => {
36
+ if ($[6] !== adminRoute || $[7] !== pathname || $[8] !== navOpen || $[9] !== i18n) {
37
+ t4 = (t5, key) => {
74
38
  const {
75
39
  entities,
76
40
  label
77
- } = t6;
41
+ } = t5;
78
42
  return _jsx(NavGroup, {
79
43
  label,
80
- children: entities.map((t7, i) => {
44
+ children: entities.map((t6, i) => {
81
45
  const {
46
+ slug,
82
47
  type,
83
- entity
84
- } = t7;
85
- let entityLabel;
48
+ label: label_0
49
+ } = t6;
86
50
  let href;
87
51
  let id;
88
52
  if (type === EntityType.collection) {
89
53
  href = formatAdminURL({
90
54
  adminRoute,
91
- path: `/collections/${entity.slug}`
55
+ path: `/collections/${slug}`
92
56
  });
93
- entityLabel = getTranslation(entity.labels.plural, i18n);
94
- id = `nav-${entity.slug}`;
57
+ id = `nav-${slug}`;
95
58
  }
96
59
  if (type === EntityType.global) {
97
60
  href = formatAdminURL({
98
61
  adminRoute,
99
- path: `/globals/${entity.slug}`
62
+ path: `/globals/${slug}`
100
63
  });
101
- entityLabel = getTranslation(entity.label, i18n);
102
- id = `nav-global-${entity.slug}`;
64
+ id = `nav-global-${slug}`;
103
65
  }
104
66
  const Link = LinkWithDefault.default || LinkWithDefault;
105
67
  const LinkElement = Link || "a";
@@ -114,49 +76,32 @@ export const DefaultNavClient = () => {
114
76
  className: `${baseClass}__link-indicator`
115
77
  }), _jsx("span", {
116
78
  className: `${baseClass}__link-label`,
117
- children: entityLabel
79
+ children: getTranslation(label_0, i18n)
118
80
  })]
119
81
  }, i);
120
82
  })
121
83
  }, key);
122
84
  };
123
- $[13] = adminRoute;
124
- $[14] = i18n;
125
- $[15] = pathname;
126
- $[16] = navOpen;
127
- $[17] = t5;
85
+ $[6] = adminRoute;
86
+ $[7] = pathname;
87
+ $[8] = navOpen;
88
+ $[9] = i18n;
89
+ $[10] = t4;
128
90
  } else {
129
- t5 = $[17];
91
+ t4 = $[10];
130
92
  }
131
- t2 = _jsx(Fragment, {
132
- children: groups.map(t5)
93
+ t3 = _jsx(Fragment, {
94
+ children: groups.map(t4)
133
95
  });
134
- $[0] = isEntityVisible;
135
- $[1] = collections;
136
- $[2] = globals;
137
- $[3] = permissions;
138
- $[4] = i18n;
139
- $[5] = adminRoute;
140
- $[6] = pathname;
141
- $[7] = navOpen;
142
- $[8] = t2;
96
+ $[0] = adminRoute;
97
+ $[1] = pathname;
98
+ $[2] = navOpen;
99
+ $[3] = i18n;
100
+ $[4] = groups;
101
+ $[5] = t3;
143
102
  } else {
144
- t2 = $[8];
103
+ t3 = $[5];
145
104
  }
146
- return t2;
105
+ return t3;
147
106
  };
148
- function _temp(collection) {
149
- const entityToGroup = {
150
- type: EntityType.collection,
151
- entity: collection
152
- };
153
- return entityToGroup;
154
- }
155
- function _temp2(global) {
156
- const entityToGroup_0 = {
157
- type: EntityType.global,
158
- entity: global
159
- };
160
- return entityToGroup_0;
161
- }
162
107
  //# sourceMappingURL=index.client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.js","names":["c","_c","getTranslation","NavGroup","useAuth","useConfig","useEntityVisibility","useNav","useTranslation","EntityType","formatAdminURL","groupNavItems","LinkWithDefault","usePathname","React","Fragment","baseClass","DefaultNavClient","$","permissions","isEntityVisible","pathname","config","t0","collections","globals","routes","t1","admin","adminRoute","i18n","navOpen","t2","t3","t4","slug","collectionSlug","t5","slug_0","globalSlug","groups","filter","map","_temp","_temp2","t6","key","entities","label","_jsx","children","t7","i","type","entity","entityLabel","href","id","collection","labels","plural","global","Link","default","LinkElement","activeCollection","startsWith","undefined","includes","length","_jsxs","className","Boolean","join","prefetch","tabIndex","entityToGroup","entityToGroup_0"],"sources":["../../../src/elements/Nav/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { EntityToGroup } from '@payloadcms/ui/shared'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n NavGroup,\n useAuth,\n useConfig,\n useEntityVisibility,\n useNav,\n useTranslation,\n} from '@payloadcms/ui'\nimport { EntityType, formatAdminURL, groupNavItems } from '@payloadcms/ui/shared'\nimport LinkWithDefault from 'next/link.js'\nimport { usePathname } from 'next/navigation.js'\nimport React, { Fragment } from 'react'\n\nconst baseClass = 'nav'\n\nexport const DefaultNavClient: React.FC = () => {\n const { permissions } = useAuth()\n const { isEntityVisible } = useEntityVisibility()\n const pathname = usePathname()\n\n const {\n config: {\n collections,\n globals,\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n const { navOpen } = useNav()\n\n const groups = groupNavItems(\n [\n ...collections\n .filter(({ slug }) => isEntityVisible({ collectionSlug: slug }))\n .map((collection) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.collection,\n entity: collection,\n }\n\n return entityToGroup\n }),\n ...globals\n .filter(({ slug }) => isEntityVisible({ globalSlug: slug }))\n .map((global) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.global,\n entity: global,\n }\n\n return entityToGroup\n }),\n ],\n permissions,\n i18n,\n )\n\n return (\n <Fragment>\n {groups.map(({ entities, label }, key) => {\n return (\n <NavGroup key={key} label={label}>\n {entities.map(({ type, entity }, i) => {\n let entityLabel: string\n let href: string\n let id: string\n\n if (type === EntityType.collection) {\n href = formatAdminURL({ adminRoute, path: `/collections/${entity.slug}` })\n entityLabel = getTranslation(entity.labels.plural, i18n)\n id = `nav-${entity.slug}`\n }\n\n if (type === EntityType.global) {\n href = formatAdminURL({ adminRoute, path: `/globals/${entity.slug}` })\n entityLabel = getTranslation(entity.label, i18n)\n id = `nav-global-${entity.slug}`\n }\n\n const Link = (LinkWithDefault.default ||\n LinkWithDefault) as typeof LinkWithDefault.default\n\n const LinkElement = Link || 'a'\n const activeCollection =\n pathname.startsWith(href) && ['/', undefined].includes(pathname[href.length])\n\n return (\n <LinkElement\n className={[`${baseClass}__link`, activeCollection && `active`]\n .filter(Boolean)\n .join(' ')}\n href={href}\n id={id}\n key={i}\n prefetch={Link ? false : undefined}\n tabIndex={!navOpen ? -1 : undefined}\n >\n {activeCollection && <div className={`${baseClass}__link-indicator`} />}\n <span className={`${baseClass}__link-label`}>{entityLabel}</span>\n </LinkElement>\n )\n })}\n </NavGroup>\n )\n })}\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.client.js","names":["c","_c","getTranslation","NavGroup","useConfig","useNav","useTranslation","EntityType","formatAdminURL","LinkWithDefault","usePathname","React","Fragment","baseClass","DefaultNavClient","t0","$","groups","pathname","config","t1","routes","t2","admin","adminRoute","i18n","navOpen","t3","t4","t5","key","entities","label","_jsx","children","map","t6","i","slug","type","label_0","href","id","collection","global","Link","default","LinkElement","activeCollection","startsWith","undefined","includes","length","_jsxs","className","filter","Boolean","join","prefetch","tabIndex"],"sources":["../../../src/elements/Nav/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { groupNavItems } from '@payloadcms/ui/shared'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { NavGroup, useConfig, useNav, useTranslation } from '@payloadcms/ui'\nimport { EntityType, formatAdminURL } from '@payloadcms/ui/shared'\nimport LinkWithDefault from 'next/link.js'\nimport { usePathname } from 'next/navigation.js'\nimport React, { Fragment } from 'react'\n\nconst baseClass = 'nav'\n\nexport const DefaultNavClient: React.FC<{\n groups: ReturnType<typeof groupNavItems>\n}> = ({ groups }) => {\n const pathname = usePathname()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n const { navOpen } = useNav()\n\n return (\n <Fragment>\n {groups.map(({ entities, label }, key) => {\n return (\n <NavGroup key={key} label={label}>\n {entities.map(({ slug, type, label }, i) => {\n let href: string\n let id: string\n\n if (type === EntityType.collection) {\n href = formatAdminURL({ adminRoute, path: `/collections/${slug}` })\n id = `nav-${slug}`\n }\n\n if (type === EntityType.global) {\n href = formatAdminURL({ adminRoute, path: `/globals/${slug}` })\n id = `nav-global-${slug}`\n }\n\n const Link = (LinkWithDefault.default ||\n LinkWithDefault) as typeof LinkWithDefault.default\n\n const LinkElement = Link || 'a'\n const activeCollection =\n pathname.startsWith(href) && ['/', undefined].includes(pathname[href.length])\n\n return (\n <LinkElement\n className={[`${baseClass}__link`, activeCollection && `active`]\n .filter(Boolean)\n .join(' ')}\n href={href}\n id={id}\n key={i}\n prefetch={Link ? false : undefined}\n tabIndex={!navOpen ? -1 : undefined}\n >\n {activeCollection && <div className={`${baseClass}__link-indicator`} />}\n <span className={`${baseClass}__link-label`}>{getTranslation(label, i18n)}</span>\n </LinkElement>\n )\n })}\n </NavGroup>\n )\n })}\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Nav/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI1C,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,cAAc,CAAA;AAQrB,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAA;AAElC,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAwDzC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Nav/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,cAAc,CAAA;AAQrB,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAA;AAElC,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CA8FzC,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Logout } from '@payloadcms/ui';
3
- import { getCreateMappedComponent, RenderComponent } from '@payloadcms/ui/shared';
3
+ import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
4
+ import { EntityType, groupNavItems } from '@payloadcms/ui/shared';
4
5
  import React from 'react';
5
6
  import { NavHamburger } from './NavHamburger/index.js';
6
7
  import { NavWrapper } from './NavWrapper/index.js';
@@ -14,7 +15,8 @@ export const DefaultNav = props => {
14
15
  payload,
15
16
  permissions,
16
17
  searchParams,
17
- user
18
+ user,
19
+ visibleEntities
18
20
  } = props;
19
21
  if (!payload?.config) {
20
22
  return null;
@@ -23,35 +25,70 @@ export const DefaultNav = props => {
23
25
  admin: {
24
26
  components: {
25
27
  afterNavLinks,
26
- beforeNavLinks
28
+ beforeNavLinks,
29
+ logout
27
30
  }
28
- }
31
+ },
32
+ collections,
33
+ globals
29
34
  } = payload.config;
30
- const createMappedComponent = getCreateMappedComponent({
31
- importMap: payload.importMap,
32
- serverProps: {
33
- i18n,
34
- locale,
35
- params,
36
- payload,
37
- permissions,
38
- searchParams,
39
- user
40
- }
41
- });
42
- const mappedBeforeNavLinks = createMappedComponent(beforeNavLinks, undefined, undefined, 'beforeNavLinks');
43
- const mappedAfterNavLinks = createMappedComponent(afterNavLinks, undefined, undefined, 'afterNavLinks');
35
+ const groups = groupNavItems([...collections.filter(({
36
+ slug
37
+ }) => visibleEntities.collections.includes(slug)).map(collection => ({
38
+ type: EntityType.collection,
39
+ entity: collection
40
+ })), ...globals.filter(({
41
+ slug
42
+ }) => visibleEntities.globals.includes(slug)).map(global => ({
43
+ type: EntityType.global,
44
+ entity: global
45
+ }))], permissions, i18n);
44
46
  return /*#__PURE__*/_jsxs(NavWrapper, {
45
47
  baseClass: baseClass,
46
48
  children: [/*#__PURE__*/_jsxs("nav", {
47
49
  className: `${baseClass}__wrap`,
48
- children: [/*#__PURE__*/_jsx(RenderComponent, {
49
- mappedComponent: mappedBeforeNavLinks
50
- }), /*#__PURE__*/_jsx(DefaultNavClient, {}), /*#__PURE__*/_jsx(RenderComponent, {
51
- mappedComponent: mappedAfterNavLinks
50
+ children: [/*#__PURE__*/_jsx(RenderServerComponent, {
51
+ Component: beforeNavLinks,
52
+ importMap: payload.importMap,
53
+ serverProps: {
54
+ i18n,
55
+ locale,
56
+ params,
57
+ payload,
58
+ permissions,
59
+ searchParams,
60
+ user
61
+ }
62
+ }), /*#__PURE__*/_jsx(DefaultNavClient, {
63
+ groups: groups
64
+ }), /*#__PURE__*/_jsx(RenderServerComponent, {
65
+ Component: afterNavLinks,
66
+ importMap: payload.importMap,
67
+ serverProps: {
68
+ i18n,
69
+ locale,
70
+ params,
71
+ payload,
72
+ permissions,
73
+ searchParams,
74
+ user
75
+ }
52
76
  }), /*#__PURE__*/_jsx("div", {
53
77
  className: `${baseClass}__controls`,
54
- children: /*#__PURE__*/_jsx(Logout, {})
78
+ children: /*#__PURE__*/_jsx(RenderServerComponent, {
79
+ Component: logout?.Button,
80
+ Fallback: Logout,
81
+ importMap: payload.importMap,
82
+ serverProps: {
83
+ i18n,
84
+ locale,
85
+ params,
86
+ payload,
87
+ permissions,
88
+ searchParams,
89
+ user
90
+ }
91
+ })
55
92
  })]
56
93
  }), /*#__PURE__*/_jsx("div", {
57
94
  className: `${baseClass}__header`,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Logout","getCreateMappedComponent","RenderComponent","React","NavHamburger","NavWrapper","baseClass","DefaultNavClient","DefaultNav","props","i18n","locale","params","payload","permissions","searchParams","user","config","admin","components","afterNavLinks","beforeNavLinks","createMappedComponent","importMap","serverProps","mappedBeforeNavLinks","undefined","mappedAfterNavLinks","_jsxs","className","_jsx","mappedComponent"],"sources":["../../../src/elements/Nav/index.tsx"],"sourcesContent":["import type { ServerProps } from 'payload'\n\nimport { Logout } from '@payloadcms/ui'\nimport { getCreateMappedComponent, RenderComponent } from '@payloadcms/ui/shared'\nimport React from 'react'\n\nimport './index.scss'\nimport { NavHamburger } from './NavHamburger/index.js'\nimport { NavWrapper } from './NavWrapper/index.js'\n\nconst baseClass = 'nav'\n\nimport { DefaultNavClient } from './index.client.js'\n\nexport type NavProps = ServerProps\n\nexport const DefaultNav: React.FC<NavProps> = (props) => {\n const { i18n, locale, params, payload, permissions, searchParams, user } = props\n\n if (!payload?.config) {\n return null\n }\n\n const {\n admin: {\n components: { afterNavLinks, beforeNavLinks },\n },\n } = payload.config\n\n const createMappedComponent = getCreateMappedComponent({\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n },\n })\n\n const mappedBeforeNavLinks = createMappedComponent(\n beforeNavLinks,\n undefined,\n undefined,\n 'beforeNavLinks',\n )\n const mappedAfterNavLinks = createMappedComponent(\n afterNavLinks,\n undefined,\n undefined,\n 'afterNavLinks',\n )\n\n return (\n <NavWrapper baseClass={baseClass}>\n <nav className={`${baseClass}__wrap`}>\n <RenderComponent mappedComponent={mappedBeforeNavLinks} />\n <DefaultNavClient />\n <RenderComponent mappedComponent={mappedAfterNavLinks} />\n <div className={`${baseClass}__controls`}>\n <Logout />\n </div>\n </nav>\n <div className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-content`}>\n <NavHamburger baseClass={baseClass} />\n </div>\n </div>\n </NavWrapper>\n )\n}\n"],"mappings":";AAEA,SAASA,MAAM,QAAQ;AACvB,SAASC,wBAAwB,EAAEC,eAAe,QAAQ;AAC1D,OAAOC,KAAA,MAAW;AAGlB,SAASC,YAAY,QAAQ;AAC7B,SAASC,UAAU,QAAQ;AAE3B,MAAMC,SAAA,GAAY;AAElB,SAASC,gBAAgB,QAAQ;AAIjC,OAAO,MAAMC,UAAA,GAAkCC,KAAA;EAC7C,MAAM;IAAEC,IAAI;IAAEC,MAAM;IAAEC,MAAM;IAAEC,OAAO;IAAEC,WAAW;IAAEC,YAAY;IAAEC;EAAI,CAAE,GAAGP,KAAA;EAE3E,IAAI,CAACI,OAAA,EAASI,MAAA,EAAQ;IACpB,OAAO;EACT;EAEA,MAAM;IACJC,KAAA,EAAO;MACLC,UAAA,EAAY;QAAEC,aAAa;QAAEC;MAAc;IAAE;EAC9C,CACF,GAAGR,OAAA,CAAQI,MAAM;EAElB,MAAMK,qBAAA,GAAwBrB,wBAAA,CAAyB;IACrDsB,SAAA,EAAWV,OAAA,CAAQU,SAAS;IAC5BC,WAAA,EAAa;MACXd,IAAA;MACAC,MAAA;MACAC,MAAA;MACAC,OAAA;MACAC,WAAA;MACAC,YAAA;MACAC;IACF;EACF;EAEA,MAAMS,oBAAA,GAAuBH,qBAAA,CAC3BD,cAAA,EACAK,SAAA,EACAA,SAAA,EACA;EAEF,MAAMC,mBAAA,GAAsBL,qBAAA,CAC1BF,aAAA,EACAM,SAAA,EACAA,SAAA,EACA;EAGF,oBACEE,KAAA,CAACvB,UAAA;IAAWC,SAAA,EAAWA,SAAA;4BACrBsB,KAAA,CAAC;MAAIC,SAAA,EAAW,GAAGvB,SAAA,QAAiB;8BAClCwB,IAAA,CAAC5B,eAAA;QAAgB6B,eAAA,EAAiBN;uBAClCK,IAAA,CAACvB,gBAAA,O,aACDuB,IAAA,CAAC5B,eAAA;QAAgB6B,eAAA,EAAiBJ;uBAClCG,IAAA,CAAC;QAAID,SAAA,EAAW,GAAGvB,SAAA,YAAqB;kBACtC,aAAAwB,IAAA,CAAC9B,MAAA;;qBAGL8B,IAAA,CAAC;MAAID,SAAA,EAAW,GAAGvB,SAAA,UAAmB;gBACpC,aAAAwB,IAAA,CAAC;QAAID,SAAA,EAAW,GAAGvB,SAAA,kBAA2B;kBAC5C,aAAAwB,IAAA,CAAC1B,YAAA;UAAaE,SAAA,EAAWA;;;;;AAKnC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Logout","RenderServerComponent","EntityType","groupNavItems","React","NavHamburger","NavWrapper","baseClass","DefaultNavClient","DefaultNav","props","i18n","locale","params","payload","permissions","searchParams","user","visibleEntities","config","admin","components","afterNavLinks","beforeNavLinks","logout","collections","globals","groups","filter","slug","includes","map","collection","type","entity","global","_jsxs","className","_jsx","Component","importMap","serverProps","Button","Fallback"],"sources":["../../../src/elements/Nav/index.tsx"],"sourcesContent":["import type { EntityToGroup } from '@payloadcms/ui/shared'\nimport type { ServerProps } from 'payload'\n\nimport { Logout } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { EntityType, groupNavItems } from '@payloadcms/ui/shared'\nimport React from 'react'\n\nimport './index.scss'\nimport { NavHamburger } from './NavHamburger/index.js'\nimport { NavWrapper } from './NavWrapper/index.js'\n\nconst baseClass = 'nav'\n\nimport { DefaultNavClient } from './index.client.js'\n\nexport type NavProps = ServerProps\n\nexport const DefaultNav: React.FC<NavProps> = (props) => {\n const { i18n, locale, params, payload, permissions, searchParams, user, visibleEntities } = props\n\n if (!payload?.config) {\n return null\n }\n\n const {\n admin: {\n components: { afterNavLinks, beforeNavLinks, logout },\n },\n collections,\n globals,\n } = payload.config\n\n const groups = groupNavItems(\n [\n ...collections\n .filter(({ slug }) => visibleEntities.collections.includes(slug))\n .map(\n (collection) =>\n ({\n type: EntityType.collection,\n entity: collection,\n }) satisfies EntityToGroup,\n ),\n ...globals\n .filter(({ slug }) => visibleEntities.globals.includes(slug))\n .map(\n (global) =>\n ({\n type: EntityType.global,\n entity: global,\n }) satisfies EntityToGroup,\n ),\n ],\n permissions,\n i18n,\n )\n\n return (\n <NavWrapper baseClass={baseClass}>\n <nav className={`${baseClass}__wrap`}>\n <RenderServerComponent\n Component={beforeNavLinks}\n importMap={payload.importMap}\n serverProps={{\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }}\n />\n <DefaultNavClient groups={groups} />\n <RenderServerComponent\n Component={afterNavLinks}\n importMap={payload.importMap}\n serverProps={{\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }}\n />\n <div className={`${baseClass}__controls`}>\n <RenderServerComponent\n Component={logout?.Button}\n Fallback={Logout}\n importMap={payload.importMap}\n serverProps={{\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }}\n />\n </div>\n </nav>\n <div className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-content`}>\n <NavHamburger baseClass={baseClass} />\n </div>\n </div>\n </NavWrapper>\n )\n}\n"],"mappings":";AAGA,SAASA,MAAM,QAAQ;AACvB,SAASC,qBAAqB,QAAQ;AACtC,SAASC,UAAU,EAAEC,aAAa,QAAQ;AAC1C,OAAOC,KAAA,MAAW;AAGlB,SAASC,YAAY,QAAQ;AAC7B,SAASC,UAAU,QAAQ;AAE3B,MAAMC,SAAA,GAAY;AAElB,SAASC,gBAAgB,QAAQ;AAIjC,OAAO,MAAMC,UAAA,GAAkCC,KAAA;EAC7C,MAAM;IAAEC,IAAI;IAAEC,MAAM;IAAEC,MAAM;IAAEC,OAAO;IAAEC,WAAW;IAAEC,YAAY;IAAEC,IAAI;IAAEC;EAAe,CAAE,GAAGR,KAAA;EAE5F,IAAI,CAACI,OAAA,EAASK,MAAA,EAAQ;IACpB,OAAO;EACT;EAEA,MAAM;IACJC,KAAA,EAAO;MACLC,UAAA,EAAY;QAAEC,aAAa;QAAEC,cAAc;QAAEC;MAAM;IAAE,CACtD;IACDC,WAAW;IACXC;EAAO,CACR,GAAGZ,OAAA,CAAQK,MAAM;EAElB,MAAMQ,MAAA,GAASxB,aAAA,CACb,C,GACKsB,WAAA,CACAG,MAAM,CAAC,CAAC;IAAEC;EAAI,CAAE,KAAKX,eAAA,CAAgBO,WAAW,CAACK,QAAQ,CAACD,IAAA,GAC1DE,GAAG,CACDC,UAAA,KACE;IACCC,IAAA,EAAM/B,UAAA,CAAW8B,UAAU;IAC3BE,MAAA,EAAQF;EACV,K,GAEHN,OAAA,CACAE,MAAM,CAAC,CAAC;IAAEC;EAAI,CAAE,KAAKX,eAAA,CAAgBQ,OAAO,CAACI,QAAQ,CAACD,IAAA,GACtDE,GAAG,CACDI,MAAA,KACE;IACCF,IAAA,EAAM/B,UAAA,CAAWiC,MAAM;IACvBD,MAAA,EAAQC;EACV,IAEP,EACDpB,WAAA,EACAJ,IAAA;EAGF,oBACEyB,KAAA,CAAC9B,UAAA;IAAWC,SAAA,EAAWA,SAAA;4BACrB6B,KAAA,CAAC;MAAIC,SAAA,EAAW,GAAG9B,SAAA,QAAiB;8BAClC+B,IAAA,CAACrC,qBAAA;QACCsC,SAAA,EAAWhB,cAAA;QACXiB,SAAA,EAAW1B,OAAA,CAAQ0B,SAAS;QAC5BC,WAAA,EAAa;UACX9B,IAAA;UACAC,MAAA;UACAC,MAAA;UACAC,OAAA;UACAC,WAAA;UACAC,YAAA;UACAC;QACF;uBAEFqB,IAAA,CAAC9B,gBAAA;QAAiBmB,MAAA,EAAQA;uBAC1BW,IAAA,CAACrC,qBAAA;QACCsC,SAAA,EAAWjB,aAAA;QACXkB,SAAA,EAAW1B,OAAA,CAAQ0B,SAAS;QAC5BC,WAAA,EAAa;UACX9B,IAAA;UACAC,MAAA;UACAC,MAAA;UACAC,OAAA;UACAC,WAAA;UACAC,YAAA;UACAC;QACF;uBAEFqB,IAAA,CAAC;QAAID,SAAA,EAAW,GAAG9B,SAAA,YAAqB;kBACtC,aAAA+B,IAAA,CAACrC,qBAAA;UACCsC,SAAA,EAAWf,MAAA,EAAQkB,MAAA;UACnBC,QAAA,EAAU3C,MAAA;UACVwC,SAAA,EAAW1B,OAAA,CAAQ0B,SAAS;UAC5BC,WAAA,EAAa;YACX9B,IAAA;YACAC,MAAA;YACAC,MAAA;YACAC,OAAA;YACAC,WAAA;YACAC,YAAA;YACAC;UACF;;;qBAINqB,IAAA,CAAC;MAAID,SAAA,EAAW,GAAG9B,SAAA,UAAmB;gBACpC,aAAA+B,IAAA,CAAC;QAAID,SAAA,EAAW,GAAG9B,SAAA,kBAA2B;kBAC5C,aAAA+B,IAAA,CAACjC,YAAA;UAAaE,SAAA,EAAWA;;;;;AAKnC","ignoreList":[]}
@@ -1,2 +1,3 @@
1
1
  export { metadata, RootLayout } from '../layouts/Root/index.js';
2
+ export { handleServerFunctions } from '../utilities/handleServerFunctions.js';
2
3
  //# sourceMappingURL=layouts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../src/exports/layouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../src/exports/layouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA"}
@@ -1,2 +1,3 @@
1
1
  export { metadata, RootLayout } from '../layouts/Root/index.js';
2
+ export { handleServerFunctions } from '../utilities/handleServerFunctions.js';
2
3
  //# sourceMappingURL=layouts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layouts.js","names":["metadata","RootLayout"],"sources":["../../src/exports/layouts.ts"],"sourcesContent":["export { metadata, RootLayout } from '../layouts/Root/index.js'\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,UAAU,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"layouts.js","names":["metadata","RootLayout","handleServerFunctions"],"sources":["../../src/exports/layouts.ts"],"sourcesContent":["export { metadata, RootLayout } from '../layouts/Root/index.js'\nexport { handleServerFunctions } from '../utilities/handleServerFunctions.js'\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,UAAU,QAAQ;AACrC,SAASC,qBAAqB,QAAQ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/exports/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAA;AACjF,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/exports/utilities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAA;AACjF,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA"}
@@ -1,3 +1,4 @@
1
+ // NOTICE: Server-only utilities, do not import anything client-side here.
1
2
  export { addDataAndFileToRequest } from '../utilities/addDataAndFileToRequest.js';
2
3
  export { addLocalesToRequestFromData, sanitizeLocales } from '../utilities/addLocalesToRequest.js';
3
4
  export { createPayloadRequest } from '../utilities/createPayloadRequest.js';
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.js","names":["addDataAndFileToRequest","addLocalesToRequestFromData","sanitizeLocales","createPayloadRequest","getNextRequestI18n","getPayloadHMR","reload","headersWithCors","mergeHeaders"],"sources":["../../src/exports/utilities.ts"],"sourcesContent":["export { addDataAndFileToRequest } from '../utilities/addDataAndFileToRequest.js'\nexport { addLocalesToRequestFromData, sanitizeLocales } from '../utilities/addLocalesToRequest.js'\nexport { createPayloadRequest } from '../utilities/createPayloadRequest.js'\nexport { getNextRequestI18n } from '../utilities/getNextRequestI18n.js'\nexport { getPayloadHMR, reload } from '../utilities/getPayloadHMR.js'\nexport { headersWithCors } from '../utilities/headersWithCors.js'\nexport { mergeHeaders } from '../utilities/mergeHeaders.js'\n"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ;AACxC,SAASC,2BAA2B,EAAEC,eAAe,QAAQ;AAC7D,SAASC,oBAAoB,QAAQ;AACrC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,aAAa,EAAEC,MAAM,QAAQ;AACtC,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"utilities.js","names":["addDataAndFileToRequest","addLocalesToRequestFromData","sanitizeLocales","createPayloadRequest","getNextRequestI18n","getPayloadHMR","reload","headersWithCors","mergeHeaders"],"sources":["../../src/exports/utilities.ts"],"sourcesContent":["// NOTICE: Server-only utilities, do not import anything client-side here.\nexport { addDataAndFileToRequest } from '../utilities/addDataAndFileToRequest.js'\nexport { addLocalesToRequestFromData, sanitizeLocales } from '../utilities/addLocalesToRequest.js'\nexport { createPayloadRequest } from '../utilities/createPayloadRequest.js'\nexport { getNextRequestI18n } from '../utilities/getNextRequestI18n.js'\nexport { getPayloadHMR, reload } from '../utilities/getPayloadHMR.js'\nexport { headersWithCors } from '../utilities/headersWithCors.js'\nexport { mergeHeaders } from '../utilities/mergeHeaders.js'\n"],"mappings":"AAAA;AACA,SAASA,uBAAuB,QAAQ;AACxC,SAASC,2BAA2B,EAAEC,eAAe,QAAQ;AAC7D,SAASC,oBAAoB,QAAQ;AACrC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,aAAa,EAAEC,MAAM,QAAQ;AACtC,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAQ","ignoreList":[]}
@@ -1,5 +1,3 @@
1
- export { DefaultEditView as EditView } from '../views/Edit/Default/index.js';
2
- export { DefaultListView as ListView } from '../views/List/Default/index.js';
3
1
  export { NotFoundPage } from '../views/NotFound/index.js';
4
2
  export { generatePageMetadata, type GenerateViewMetadata, RootPage } from '../views/Root/index.js';
5
3
  //# sourceMappingURL=views.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/exports/views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAC5E,OAAO,EAAE,eAAe,IAAI,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/exports/views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA"}
@@ -1,5 +1,3 @@
1
- export { DefaultEditView as EditView } from '../views/Edit/Default/index.js';
2
- export { DefaultListView as ListView } from '../views/List/Default/index.js';
3
1
  export { NotFoundPage } from '../views/NotFound/index.js';
4
2
  export { generatePageMetadata, RootPage } from '../views/Root/index.js';
5
3
  //# sourceMappingURL=views.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"views.js","names":["DefaultEditView","EditView","DefaultListView","ListView","NotFoundPage","generatePageMetadata","RootPage"],"sources":["../../src/exports/views.ts"],"sourcesContent":["export { DefaultEditView as EditView } from '../views/Edit/Default/index.js'\nexport { DefaultListView as ListView } from '../views/List/Default/index.js'\nexport { NotFoundPage } from '../views/NotFound/index.js'\nexport { generatePageMetadata, type GenerateViewMetadata, RootPage } from '../views/Root/index.js'\n"],"mappings":"AAAA,SAASA,eAAA,IAAmBC,QAAQ,QAAQ;AAC5C,SAASC,eAAA,IAAmBC,QAAQ,QAAQ;AAC5C,SAASC,YAAY,QAAQ;AAC7B,SAASC,oBAAoB,EAA6BC,QAAQ,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"views.js","names":["NotFoundPage","generatePageMetadata","RootPage"],"sources":["../../src/exports/views.ts"],"sourcesContent":["export { NotFoundPage } from '../views/NotFound/index.js'\nexport { generatePageMetadata, type GenerateViewMetadata, RootPage } from '../views/Root/index.js'\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ;AAC7B,SAASC,oBAAoB,EAA6BC,QAAQ,QAAQ","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  const ACCEPTABLE_CONTENT_TYPE = /multipart\/['"()+-_]+(?:; ?['"()+-_]*)+$/i;
2
- const UNACCEPTABLE_METHODS = new Set(['GET', 'HEAD', 'DELETE', 'OPTIONS', 'CONNECT', 'TRACE']);
2
+ const UNACCEPTABLE_METHODS = new Set(['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'TRACE']);
3
3
  const hasBody = req => {
4
4
  return Boolean(req.headers.get('transfer-encoding') || req.headers.get('content-length') && req.headers.get('content-length') !== '0');
5
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"isEligibleRequest.js","names":["ACCEPTABLE_CONTENT_TYPE","UNACCEPTABLE_METHODS","Set","hasBody","req","Boolean","headers","get","hasAcceptableMethod","has","method","hasAcceptableContentType","contType","includes","test","isEligibleRequest","e"],"sources":["../../src/fetchAPI-multipart/isEligibleRequest.ts"],"sourcesContent":["const ACCEPTABLE_CONTENT_TYPE = /multipart\\/['\"()+-_]+(?:; ?['\"()+-_]*)+$/i\nconst UNACCEPTABLE_METHODS = new Set(['GET', 'HEAD', 'DELETE', 'OPTIONS', 'CONNECT', 'TRACE'])\n\nconst hasBody = (req: Request): boolean => {\n return Boolean(\n req.headers.get('transfer-encoding') ||\n (req.headers.get('content-length') && req.headers.get('content-length') !== '0'),\n )\n}\n\nconst hasAcceptableMethod = (req: Request): boolean => !UNACCEPTABLE_METHODS.has(req.method)\n\nconst hasAcceptableContentType = (req: Request): boolean => {\n const contType = req.headers.get('content-type')\n return contType.includes('boundary=') && ACCEPTABLE_CONTENT_TYPE.test(contType)\n}\n\nexport const isEligibleRequest = (req: Request): boolean => {\n try {\n return hasBody(req) && hasAcceptableMethod(req) && hasAcceptableContentType(req)\n } catch (e) {\n return false\n }\n}\n"],"mappings":"AAAA,MAAMA,uBAAA,GAA0B;AAChC,MAAMC,oBAAA,GAAuB,IAAIC,GAAA,CAAI,CAAC,OAAO,QAAQ,UAAU,WAAW,WAAW,QAAQ;AAE7F,MAAMC,OAAA,GAAWC,GAAA;EACf,OAAOC,OAAA,CACLD,GAAA,CAAIE,OAAO,CAACC,GAAG,CAAC,wBACbH,GAAA,CAAIE,OAAO,CAACC,GAAG,CAAC,qBAAqBH,GAAA,CAAIE,OAAO,CAACC,GAAG,CAAC,sBAAsB;AAElF;AAEA,MAAMC,mBAAA,GAAuBJ,GAAA,IAA0B,CAACH,oBAAA,CAAqBQ,GAAG,CAACL,GAAA,CAAIM,MAAM;AAE3F,MAAMC,wBAAA,GAA4BP,GAAA;EAChC,MAAMQ,QAAA,GAAWR,GAAA,CAAIE,OAAO,CAACC,GAAG,CAAC;EACjC,OAAOK,QAAA,CAASC,QAAQ,CAAC,gBAAgBb,uBAAA,CAAwBc,IAAI,CAACF,QAAA;AACxE;AAEA,OAAO,MAAMG,iBAAA,GAAqBX,GAAA;EAChC,IAAI;IACF,OAAOD,OAAA,CAAQC,GAAA,KAAQI,mBAAA,CAAoBJ,GAAA,KAAQO,wBAAA,CAAyBP,GAAA;EAC9E,EAAE,OAAOY,CAAA,EAAG;IACV,OAAO;EACT;AACF","ignoreList":[]}
1
+ {"version":3,"file":"isEligibleRequest.js","names":["ACCEPTABLE_CONTENT_TYPE","UNACCEPTABLE_METHODS","Set","hasBody","req","Boolean","headers","get","hasAcceptableMethod","has","method","hasAcceptableContentType","contType","includes","test","isEligibleRequest","e"],"sources":["../../src/fetchAPI-multipart/isEligibleRequest.ts"],"sourcesContent":["const ACCEPTABLE_CONTENT_TYPE = /multipart\\/['\"()+-_]+(?:; ?['\"()+-_]*)+$/i\nconst UNACCEPTABLE_METHODS = new Set(['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'TRACE'])\n\nconst hasBody = (req: Request): boolean => {\n return Boolean(\n req.headers.get('transfer-encoding') ||\n (req.headers.get('content-length') && req.headers.get('content-length') !== '0'),\n )\n}\n\nconst hasAcceptableMethod = (req: Request): boolean => !UNACCEPTABLE_METHODS.has(req.method)\n\nconst hasAcceptableContentType = (req: Request): boolean => {\n const contType = req.headers.get('content-type')\n return contType.includes('boundary=') && ACCEPTABLE_CONTENT_TYPE.test(contType)\n}\n\nexport const isEligibleRequest = (req: Request): boolean => {\n try {\n return hasBody(req) && hasAcceptableMethod(req) && hasAcceptableContentType(req)\n } catch (e) {\n return false\n }\n}\n"],"mappings":"AAAA,MAAMA,uBAAA,GAA0B;AAChC,MAAMC,oBAAA,GAAuB,IAAIC,GAAA,CAAI,CAAC,WAAW,UAAU,OAAO,QAAQ,WAAW,QAAQ;AAE7F,MAAMC,OAAA,GAAWC,GAAA;EACf,OAAOC,OAAA,CACLD,GAAA,CAAIE,OAAO,CAACC,GAAG,CAAC,wBACbH,GAAA,CAAIE,OAAO,CAACC,GAAG,CAAC,qBAAqBH,GAAA,CAAIE,OAAO,CAACC,GAAG,CAAC,sBAAsB;AAElF;AAEA,MAAMC,mBAAA,GAAuBJ,GAAA,IAA0B,CAACH,oBAAA,CAAqBQ,GAAG,CAACL,GAAA,CAAIM,MAAM;AAE3F,MAAMC,wBAAA,GAA4BP,GAAA;EAChC,MAAMQ,QAAA,GAAWR,GAAA,CAAIE,OAAO,CAACC,GAAG,CAAC;EACjC,OAAOK,QAAA,CAASC,QAAQ,CAAC,gBAAgBb,uBAAA,CAAwBc,IAAI,CAACF,QAAA;AACxE;AAEA,OAAO,MAAMG,iBAAA,GAAqBX,GAAA;EAChC,IAAI;IACF,OAAOD,OAAA,CAAQC,GAAA,KAAQI,mBAAA,CAAoBJ,GAAA,KAAQO,wBAAA,CAAyBP,GAAA;EAC9E,EAAE,OAAOY,CAAA,EAAG;IACV,OAAO;EACT;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"processMultipart.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/processMultipart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAOxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAU5D,KAAK,gBAAgB,GAAG,CAAC,IAAI,EAAE;IAC7B,OAAO,EAAE,yBAAyB,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;CACjB,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAA;AACzC,eAAO,MAAM,gBAAgB,EAAE,gBAsM9B,CAAA"}
1
+ {"version":3,"file":"processMultipart.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/processMultipart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAOxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAU5D,KAAK,gBAAgB,GAAG,CAAC,IAAI,EAAE;IAC7B,OAAO,EAAE,yBAAyB,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;CACjB,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAA;AACzC,eAAO,MAAM,gBAAgB,EAAE,gBAmM9B,CAAA"}
@@ -12,6 +12,7 @@ export const processMultipart = async ({
12
12
  request
13
13
  }) => {
14
14
  let parsingRequest = true;
15
+ let shouldAbortProccessing = false;
15
16
  let fileCount = 0;
16
17
  let filesCompleted = 0;
17
18
  let allFilesHaveResolved;
@@ -28,15 +29,16 @@ export const processMultipart = async ({
28
29
  request.headers.forEach((value, name) => {
29
30
  headersObject[name] = value;
30
31
  });
31
- function abortAndDestroyFile(file, err) {
32
- file.destroy();
33
- parsingRequest = false;
34
- failedResolvingFiles(err);
35
- }
32
+ const reader = request.body.getReader();
36
33
  const busboy = Busboy({
37
34
  ...options,
38
35
  headers: headersObject
39
36
  });
37
+ function abortAndDestroyFile(file, err) {
38
+ file.destroy();
39
+ shouldAbortProccessing = true;
40
+ failedResolvingFiles(err);
41
+ }
40
42
  // Build multipart req.body fields
41
43
  busboy.on('field', (field, val) => {
42
44
  result.fields = buildFields(result.fields, field, val);
@@ -113,7 +115,7 @@ export const processMultipart = async ({
113
115
  mimetype: mime,
114
116
  size,
115
117
  tempFilePath: getFilePath(),
116
- truncated: Boolean('truncated' in file && file.truncated)
118
+ truncated: Boolean('truncated' in file && file.truncated) || false
117
119
  }, options));
118
120
  if (!request[waitFlushProperty]) {
119
121
  request[waitFlushProperty] = [];
@@ -133,7 +135,6 @@ export const processMultipart = async ({
133
135
  debugLog(options, `New upload started ${field}->${filename}, bytes:${getFileSize()}`);
134
136
  uploadTimer.set();
135
137
  });
136
- // TODO: Valid eslint error - this will likely be a floating promise. Evaluate if we need to handle this differently.
137
138
  busboy.on('finish', async () => {
138
139
  debugLog(options, `Busboy finished parsing request.`);
139
140
  if (options.parseNested) {
@@ -153,11 +154,8 @@ export const processMultipart = async ({
153
154
  });
154
155
  busboy.on('error', (err = new APIError('Busboy error parsing multipart request', httpStatus.BAD_REQUEST)) => {
155
156
  debugLog(options, `Busboy error`);
156
- parsingRequest = false;
157
157
  throw err;
158
158
  });
159
- const reader = request.body.getReader();
160
- // Start parsing request
161
159
  while (parsingRequest) {
162
160
  const {
163
161
  done,
@@ -166,7 +164,7 @@ export const processMultipart = async ({
166
164
  if (done) {
167
165
  parsingRequest = false;
168
166
  }
169
- if (value) {
167
+ if (value && !shouldAbortProccessing) {
170
168
  busboy.write(value);
171
169
  }
172
170
  }
@@ -1 +1 @@
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 { FetchAPIFileUploadOptions } from 'payload'\nimport type { Readable } from 'stream'\n\nimport Busboy from 'busboy'\nimport httpStatus from 'http-status'\nimport { APIError } from 'payload'\n\nimport type { 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 // TODO: Valid eslint error - this will likely be a floating promise. Evaluate if we need to handle this differently.\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
+ {"version":3,"file":"processMultipart.js","names":["Busboy","httpStatus","APIError","fileFactory","memHandler","tempFileHandler","processNested","createUploadTimer","buildFields","debugLog","isFunc","parseFileName","waitFlushProperty","Symbol","processMultipart","options","request","parsingRequest","shouldAbortProccessing","fileCount","filesCompleted","allFilesHaveResolved","failedResolvingFiles","allFilesComplete","Promise","res","rej","result","fields","undefined","files","headersObject","headers","forEach","value","name","reader","body","getReader","busboy","abortAndDestroyFile","file","err","destroy","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","done","read","write","e"],"sources":["../../src/fetchAPI-multipart/processMultipart.ts"],"sourcesContent":["import type { FetchAPIFileUploadOptions } from 'payload'\nimport type { Readable } from 'stream'\n\nimport Busboy from 'busboy'\nimport httpStatus from 'http-status'\nimport { APIError } from 'payload'\n\nimport type { 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 shouldAbortProccessing = false\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 const reader = request.body.getReader()\n\n const busboy = Busboy({ ...options, headers: headersObject })\n\n function abortAndDestroyFile(file: Readable, err: APIError) {\n file.destroy()\n shouldAbortProccessing = true\n failedResolvingFiles(err)\n }\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) || false,\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 throw err\n },\n )\n\n while (parsingRequest) {\n const { done, value } = await reader.read()\n\n if (done) {\n parsingRequest = false\n }\n\n if (value && !shouldAbortProccessing) {\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":[]}