@payloadcms/next 3.0.0-canary.ce278e4 → 3.0.0-canary.cf66341

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 (611) hide show
  1. package/dist/cjs/withPayload.cjs +18 -11
  2. package/dist/cjs/withPayload.cjs.map +1 -1
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +1 -1
  6. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
  7. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts.map +1 -1
  8. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +6 -2
  9. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  10. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts +3 -1
  11. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
  12. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +16 -3
  13. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  14. package/dist/elements/DocumentHeader/Tabs/Tab/index.scss +7 -5
  15. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js +2 -2
  16. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js.map +1 -1
  17. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js +2 -2
  18. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js.map +1 -1
  19. package/dist/elements/DocumentHeader/Tabs/index.d.ts +2 -2
  20. package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
  21. package/dist/elements/DocumentHeader/Tabs/index.js +27 -17
  22. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  23. package/dist/elements/DocumentHeader/Tabs/index.scss +0 -1
  24. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.d.ts.map +1 -1
  25. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +4 -6
  26. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  27. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts +4 -2
  28. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  29. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +15 -15
  30. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  31. package/dist/elements/DocumentHeader/index.d.ts +2 -2
  32. package/dist/elements/DocumentHeader/index.d.ts.map +1 -1
  33. package/dist/elements/DocumentHeader/index.js +3 -3
  34. package/dist/elements/DocumentHeader/index.js.map +1 -1
  35. package/dist/elements/DocumentHeader/index.scss +5 -4
  36. package/dist/elements/EmailAndUsername/index.d.ts +14 -0
  37. package/dist/elements/EmailAndUsername/index.d.ts.map +1 -0
  38. package/dist/elements/EmailAndUsername/index.js +89 -0
  39. package/dist/elements/EmailAndUsername/index.js.map +1 -0
  40. package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
  41. package/dist/elements/LeaveWithoutSaving/index.js +10 -1
  42. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  43. package/dist/elements/LeaveWithoutSaving/index.scss +1 -0
  44. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts +2 -1
  45. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
  46. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +3 -1
  47. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  48. package/dist/elements/Logo/index.d.ts.map +1 -1
  49. package/dist/elements/Logo/index.js +8 -5
  50. package/dist/elements/Logo/index.js.map +1 -1
  51. package/dist/elements/Nav/NavHamburger/index.js +1 -1
  52. package/dist/elements/Nav/NavHamburger/index.js.map +1 -1
  53. package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
  54. package/dist/elements/Nav/NavWrapper/index.js +5 -3
  55. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  56. package/dist/elements/Nav/NavWrapper/index.scss +4 -1
  57. package/dist/elements/Nav/index.client.d.ts.map +1 -1
  58. package/dist/elements/Nav/index.client.js +20 -11
  59. package/dist/elements/Nav/index.client.js.map +1 -1
  60. package/dist/elements/Nav/index.d.ts.map +1 -1
  61. package/dist/elements/Nav/index.js +22 -28
  62. package/dist/elements/Nav/index.js.map +1 -1
  63. package/dist/elements/Nav/index.scss +21 -15
  64. package/dist/exports/layouts.js.map +1 -1
  65. package/dist/exports/routes.js.map +1 -1
  66. package/dist/exports/templates.js.map +1 -1
  67. package/dist/exports/utilities.js.map +1 -1
  68. package/dist/exports/views.js.map +1 -1
  69. package/dist/fetchAPI-multipart/fileFactory.d.ts +0 -1
  70. package/dist/fetchAPI-multipart/fileFactory.d.ts.map +1 -1
  71. package/dist/fetchAPI-multipart/fileFactory.js.map +1 -1
  72. package/dist/fetchAPI-multipart/handlers.d.ts +0 -1
  73. package/dist/fetchAPI-multipart/handlers.d.ts.map +1 -1
  74. package/dist/fetchAPI-multipart/handlers.js.map +1 -1
  75. package/dist/fetchAPI-multipart/index.d.ts +0 -1
  76. package/dist/fetchAPI-multipart/index.d.ts.map +1 -1
  77. package/dist/fetchAPI-multipart/index.js.map +1 -1
  78. package/dist/fetchAPI-multipart/isEligibleRequest.js.map +1 -1
  79. package/dist/fetchAPI-multipart/processMultipart.js.map +1 -1
  80. package/dist/fetchAPI-multipart/processNested.js.map +1 -1
  81. package/dist/fetchAPI-multipart/uploadTimer.js.map +1 -1
  82. package/dist/fetchAPI-multipart/utilities.d.ts.map +1 -1
  83. package/dist/fetchAPI-multipart/utilities.js.map +1 -1
  84. package/dist/fetchAPI-stream-file/index.d.ts +0 -1
  85. package/dist/fetchAPI-stream-file/index.d.ts.map +1 -1
  86. package/dist/fetchAPI-stream-file/index.js.map +1 -1
  87. package/dist/index.js.map +1 -1
  88. package/dist/layouts/Root/index.d.ts +5 -4
  89. package/dist/layouts/Root/index.d.ts.map +1 -1
  90. package/dist/layouts/Root/index.js +55 -33
  91. package/dist/layouts/Root/index.js.map +1 -1
  92. package/dist/prod/styles.css +1 -1
  93. package/dist/routes/graphql/handler.d.ts.map +1 -1
  94. package/dist/routes/graphql/handler.js +9 -13
  95. package/dist/routes/graphql/handler.js.map +1 -1
  96. package/dist/routes/graphql/index.js.map +1 -1
  97. package/dist/routes/graphql/playground.d.ts.map +1 -1
  98. package/dist/routes/graphql/playground.js.map +1 -1
  99. package/dist/routes/index.js.map +1 -1
  100. package/dist/routes/rest/auth/access.js.map +1 -1
  101. package/dist/routes/rest/auth/forgotPassword.d.ts.map +1 -1
  102. package/dist/routes/rest/auth/forgotPassword.js +7 -3
  103. package/dist/routes/rest/auth/forgotPassword.js.map +1 -1
  104. package/dist/routes/rest/auth/init.js.map +1 -1
  105. package/dist/routes/rest/auth/login.d.ts.map +1 -1
  106. package/dist/routes/rest/auth/login.js +9 -4
  107. package/dist/routes/rest/auth/login.js.map +1 -1
  108. package/dist/routes/rest/auth/logout.js.map +1 -1
  109. package/dist/routes/rest/auth/me.js.map +1 -1
  110. package/dist/routes/rest/auth/refresh.d.ts.map +1 -1
  111. package/dist/routes/rest/auth/refresh.js +12 -20
  112. package/dist/routes/rest/auth/refresh.js.map +1 -1
  113. package/dist/routes/rest/auth/registerFirstUser.d.ts.map +1 -1
  114. package/dist/routes/rest/auth/registerFirstUser.js +9 -2
  115. package/dist/routes/rest/auth/registerFirstUser.js.map +1 -1
  116. package/dist/routes/rest/auth/resetPassword.js.map +1 -1
  117. package/dist/routes/rest/auth/unlock.d.ts.map +1 -1
  118. package/dist/routes/rest/auth/unlock.js +7 -3
  119. package/dist/routes/rest/auth/unlock.js.map +1 -1
  120. package/dist/routes/rest/auth/verifyEmail.js +1 -1
  121. package/dist/routes/rest/auth/verifyEmail.js.map +1 -1
  122. package/dist/routes/rest/buildFormState.d.ts +2 -2
  123. package/dist/routes/rest/buildFormState.d.ts.map +1 -1
  124. package/dist/routes/rest/buildFormState.js +4 -4
  125. package/dist/routes/rest/buildFormState.js.map +1 -1
  126. package/dist/routes/rest/checkEndpoints.d.ts.map +1 -1
  127. package/dist/routes/rest/checkEndpoints.js.map +1 -1
  128. package/dist/routes/rest/collections/count.js.map +1 -1
  129. package/dist/routes/rest/collections/create.js.map +1 -1
  130. package/dist/routes/rest/collections/delete.js.map +1 -1
  131. package/dist/routes/rest/collections/deleteByID.js.map +1 -1
  132. package/dist/routes/rest/collections/docAccess.js.map +1 -1
  133. package/dist/routes/rest/collections/duplicate.js.map +1 -1
  134. package/dist/routes/rest/collections/find.js.map +1 -1
  135. package/dist/routes/rest/collections/findByID.js.map +1 -1
  136. package/dist/routes/rest/collections/findVersionByID.js.map +1 -1
  137. package/dist/routes/rest/collections/findVersions.js.map +1 -1
  138. package/dist/routes/rest/collections/preview.js.map +1 -1
  139. package/dist/routes/rest/collections/restoreVersion.d.ts.map +1 -1
  140. package/dist/routes/rest/collections/restoreVersion.js +2 -0
  141. package/dist/routes/rest/collections/restoreVersion.js.map +1 -1
  142. package/dist/routes/rest/collections/update.js.map +1 -1
  143. package/dist/routes/rest/collections/updateByID.js.map +1 -1
  144. package/dist/routes/rest/files/checkFileAccess.d.ts +2 -2
  145. package/dist/routes/rest/files/checkFileAccess.d.ts.map +1 -1
  146. package/dist/routes/rest/files/checkFileAccess.js.map +1 -1
  147. package/dist/routes/rest/files/getFile.d.ts +2 -2
  148. package/dist/routes/rest/files/getFile.d.ts.map +1 -1
  149. package/dist/routes/rest/files/getFile.js +8 -6
  150. package/dist/routes/rest/files/getFile.js.map +1 -1
  151. package/dist/routes/rest/files/getFileTypeFallback.js.map +1 -1
  152. package/dist/routes/rest/globals/docAccess.js.map +1 -1
  153. package/dist/routes/rest/globals/findOne.js.map +1 -1
  154. package/dist/routes/rest/globals/findVersionByID.js.map +1 -1
  155. package/dist/routes/rest/globals/findVersions.js.map +1 -1
  156. package/dist/routes/rest/globals/preview.js.map +1 -1
  157. package/dist/routes/rest/globals/restoreVersion.d.ts.map +1 -1
  158. package/dist/routes/rest/globals/restoreVersion.js +2 -0
  159. package/dist/routes/rest/globals/restoreVersion.js.map +1 -1
  160. package/dist/routes/rest/globals/update.js.map +1 -1
  161. package/dist/routes/rest/index.d.ts.map +1 -1
  162. package/dist/routes/rest/index.js +113 -93
  163. package/dist/routes/rest/index.js.map +1 -1
  164. package/dist/routes/rest/og/image.d.ts +2 -1
  165. package/dist/routes/rest/og/image.d.ts.map +1 -1
  166. package/dist/routes/rest/og/image.js +6 -2
  167. package/dist/routes/rest/og/image.js.map +1 -1
  168. package/dist/routes/rest/og/index.d.ts +2 -2
  169. package/dist/routes/rest/og/index.d.ts.map +1 -1
  170. package/dist/routes/rest/og/index.js +7 -3
  171. package/dist/routes/rest/og/index.js.map +1 -1
  172. package/dist/routes/rest/routeError.d.ts +2 -2
  173. package/dist/routes/rest/routeError.d.ts.map +1 -1
  174. package/dist/routes/rest/routeError.js +3 -3
  175. package/dist/routes/rest/routeError.js.map +1 -1
  176. package/dist/routes/rest/types.d.ts +7 -7
  177. package/dist/routes/rest/types.d.ts.map +1 -1
  178. package/dist/routes/rest/types.js.map +1 -1
  179. package/dist/routes/rest/utilities/sanitizeCollectionID.js.map +1 -1
  180. package/dist/scss/app.scss +10 -15
  181. package/dist/scss/colors.scss +76 -76
  182. package/dist/scss/toastify.scss +59 -0
  183. package/dist/scss/toasts.scss +73 -42
  184. package/dist/scss/type.scss +15 -23
  185. package/dist/scss/vars.scss +26 -47
  186. package/dist/templates/Default/NavHamburger/index.js +1 -1
  187. package/dist/templates/Default/NavHamburger/index.js.map +1 -1
  188. package/dist/templates/Default/Wrapper/index.d.ts.map +1 -1
  189. package/dist/templates/Default/Wrapper/index.js +5 -3
  190. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  191. package/dist/templates/Default/Wrapper/index.scss +36 -4
  192. package/dist/templates/Default/index.d.ts +2 -2
  193. package/dist/templates/Default/index.d.ts.map +1 -1
  194. package/dist/templates/Default/index.js +17 -24
  195. package/dist/templates/Default/index.js.map +1 -1
  196. package/dist/templates/Minimal/index.js.map +1 -1
  197. package/dist/utilities/addDataAndFileToRequest.d.ts +3 -6
  198. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
  199. package/dist/utilities/addDataAndFileToRequest.js +15 -18
  200. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  201. package/dist/utilities/addLocalesToRequest.d.ts +2 -5
  202. package/dist/utilities/addLocalesToRequest.d.ts.map +1 -1
  203. package/dist/utilities/addLocalesToRequest.js +8 -9
  204. package/dist/utilities/addLocalesToRequest.js.map +1 -1
  205. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  206. package/dist/utilities/createPayloadRequest.js +14 -10
  207. package/dist/utilities/createPayloadRequest.js.map +1 -1
  208. package/dist/utilities/getNextRequestI18n.d.ts +3 -3
  209. package/dist/utilities/getNextRequestI18n.d.ts.map +1 -1
  210. package/dist/utilities/getNextRequestI18n.js +3 -1
  211. package/dist/utilities/getNextRequestI18n.js.map +1 -1
  212. package/dist/utilities/getPayloadHMR.d.ts +1 -1
  213. package/dist/utilities/getPayloadHMR.d.ts.map +1 -1
  214. package/dist/utilities/getPayloadHMR.js +26 -10
  215. package/dist/utilities/getPayloadHMR.js.map +1 -1
  216. package/dist/utilities/getRequestLanguage.js.map +1 -1
  217. package/dist/utilities/getRequestLocales.js.map +1 -1
  218. package/dist/utilities/getRequestTheme.d.ts +1 -1
  219. package/dist/utilities/getRequestTheme.d.ts.map +1 -1
  220. package/dist/utilities/getRequestTheme.js +1 -1
  221. package/dist/utilities/getRequestTheme.js.map +1 -1
  222. package/dist/utilities/headersWithCors.d.ts +2 -2
  223. package/dist/utilities/headersWithCors.d.ts.map +1 -1
  224. package/dist/utilities/headersWithCors.js +19 -3
  225. package/dist/utilities/headersWithCors.js.map +1 -1
  226. package/dist/utilities/initPage/handleAdminPage.d.ts +4 -0
  227. package/dist/utilities/initPage/handleAdminPage.d.ts.map +1 -1
  228. package/dist/utilities/initPage/handleAdminPage.js +17 -4
  229. package/dist/utilities/initPage/handleAdminPage.js.map +1 -1
  230. package/dist/utilities/initPage/handleAuthRedirect.d.ts +1 -1
  231. package/dist/utilities/initPage/handleAuthRedirect.d.ts.map +1 -1
  232. package/dist/utilities/initPage/handleAuthRedirect.js +19 -7
  233. package/dist/utilities/initPage/handleAuthRedirect.js.map +1 -1
  234. package/dist/utilities/initPage/index.d.ts +1 -1
  235. package/dist/utilities/initPage/index.d.ts.map +1 -1
  236. package/dist/utilities/initPage/index.js +5 -3
  237. package/dist/utilities/initPage/index.js.map +1 -1
  238. package/dist/utilities/initPage/shared.d.ts +14 -2
  239. package/dist/utilities/initPage/shared.d.ts.map +1 -1
  240. package/dist/utilities/initPage/shared.js +14 -4
  241. package/dist/utilities/initPage/shared.js.map +1 -1
  242. package/dist/utilities/initPage/types.d.ts +2 -1
  243. package/dist/utilities/initPage/types.d.ts.map +1 -1
  244. package/dist/utilities/initPage/types.js.map +1 -1
  245. package/dist/utilities/mergeHeaders.d.ts +2 -0
  246. package/dist/utilities/mergeHeaders.d.ts.map +1 -0
  247. package/dist/utilities/mergeHeaders.js +11 -0
  248. package/dist/utilities/mergeHeaders.js.map +1 -0
  249. package/dist/utilities/meta.d.ts +2 -2
  250. package/dist/utilities/meta.d.ts.map +1 -1
  251. package/dist/utilities/meta.js +8 -7
  252. package/dist/utilities/meta.js.map +1 -1
  253. package/dist/utilities/timestamp.js.map +1 -1
  254. package/dist/views/API/LocaleSelector/index.d.ts +2 -2
  255. package/dist/views/API/LocaleSelector/index.d.ts.map +1 -1
  256. package/dist/views/API/LocaleSelector/index.js +8 -6
  257. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  258. package/dist/views/API/RenderJSON/index.js +1 -1
  259. package/dist/views/API/RenderJSON/index.js.map +1 -1
  260. package/dist/views/API/index.client.d.ts.map +1 -1
  261. package/dist/views/API/index.client.js +43 -39
  262. package/dist/views/API/index.client.js.map +1 -1
  263. package/dist/views/API/index.d.ts +2 -2
  264. package/dist/views/API/index.d.ts.map +1 -1
  265. package/dist/views/API/index.js.map +1 -1
  266. package/dist/views/API/index.scss +1 -2
  267. package/dist/views/API/meta.d.ts.map +1 -1
  268. package/dist/views/API/meta.js +10 -6
  269. package/dist/views/API/meta.js.map +1 -1
  270. package/dist/views/Account/Settings/LanguageSelector.js +1 -1
  271. package/dist/views/Account/Settings/LanguageSelector.js.map +1 -1
  272. package/dist/views/Account/Settings/index.d.ts +3 -3
  273. package/dist/views/Account/Settings/index.d.ts.map +1 -1
  274. package/dist/views/Account/Settings/index.js +2 -1
  275. package/dist/views/Account/Settings/index.js.map +1 -1
  276. package/dist/views/Account/ToggleTheme/index.d.ts.map +1 -1
  277. package/dist/views/Account/ToggleTheme/index.js +19 -17
  278. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  279. package/dist/views/Account/index.client.d.ts +3 -0
  280. package/dist/views/Account/index.client.d.ts.map +1 -0
  281. package/dist/views/Account/index.client.js +21 -0
  282. package/dist/views/Account/index.client.js.map +1 -0
  283. package/dist/views/Account/index.d.ts.map +1 -1
  284. package/dist/views/Account/index.js +38 -45
  285. package/dist/views/Account/index.js.map +1 -1
  286. package/dist/views/Account/meta.js.map +1 -1
  287. package/dist/views/CreateFirstUser/index.client.d.ts +2 -1
  288. package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
  289. package/dist/views/CreateFirstUser/index.client.js +22 -20
  290. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  291. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  292. package/dist/views/CreateFirstUser/index.js +11 -29
  293. package/dist/views/CreateFirstUser/index.js.map +1 -1
  294. package/dist/views/CreateFirstUser/index.scss +4 -0
  295. package/dist/views/CreateFirstUser/meta.js.map +1 -1
  296. package/dist/views/Dashboard/Default/index.d.ts +2 -2
  297. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  298. package/dist/views/Dashboard/Default/index.js +34 -31
  299. package/dist/views/Dashboard/Default/index.js.map +1 -1
  300. package/dist/views/Dashboard/Default/index.scss +11 -7
  301. package/dist/views/Dashboard/index.d.ts.map +1 -1
  302. package/dist/views/Dashboard/index.js +26 -30
  303. package/dist/views/Dashboard/index.js.map +1 -1
  304. package/dist/views/Dashboard/meta.js.map +1 -1
  305. package/dist/views/Document/getCustomViewByKey.d.ts +1 -1
  306. package/dist/views/Document/getCustomViewByKey.d.ts.map +1 -1
  307. package/dist/views/Document/getCustomViewByKey.js +1 -2
  308. package/dist/views/Document/getCustomViewByKey.js.map +1 -1
  309. package/dist/views/Document/getCustomViewByRoute.d.ts +5 -2
  310. package/dist/views/Document/getCustomViewByRoute.d.ts.map +1 -1
  311. package/dist/views/Document/getCustomViewByRoute.js +16 -6
  312. package/dist/views/Document/getCustomViewByRoute.js.map +1 -1
  313. package/dist/views/Document/getDocumentData.d.ts +3 -2
  314. package/dist/views/Document/getDocumentData.d.ts.map +1 -1
  315. package/dist/views/Document/getDocumentData.js +4 -3
  316. package/dist/views/Document/getDocumentData.js.map +1 -1
  317. package/dist/views/Document/getDocumentPermissions.d.ts.map +1 -1
  318. package/dist/views/Document/getDocumentPermissions.js.map +1 -1
  319. package/dist/views/Document/getMetaBySegment.d.ts +4 -3
  320. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  321. package/dist/views/Document/getMetaBySegment.js +73 -28
  322. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  323. package/dist/views/Document/getViewsFromConfig.d.ts +18 -7
  324. package/dist/views/Document/getViewsFromConfig.d.ts.map +1 -1
  325. package/dist/views/Document/getViewsFromConfig.js +294 -189
  326. package/dist/views/Document/getViewsFromConfig.js.map +1 -1
  327. package/dist/views/Document/index.d.ts.map +1 -1
  328. package/dist/views/Document/index.js +61 -71
  329. package/dist/views/Document/index.js.map +1 -1
  330. package/dist/views/Document/meta.js.map +1 -1
  331. package/dist/views/Edit/Default/Auth/APIKey.d.ts +2 -2
  332. package/dist/views/Edit/Default/Auth/APIKey.d.ts.map +1 -1
  333. package/dist/views/Edit/Default/Auth/APIKey.js +36 -7
  334. package/dist/views/Edit/Default/Auth/APIKey.js.map +1 -1
  335. package/dist/views/Edit/Default/Auth/index.d.ts.map +1 -1
  336. package/dist/views/Edit/Default/Auth/index.js +95 -39
  337. package/dist/views/Edit/Default/Auth/index.js.map +1 -1
  338. package/dist/views/Edit/Default/Auth/index.scss +17 -2
  339. package/dist/views/Edit/Default/Auth/types.d.ts +4 -0
  340. package/dist/views/Edit/Default/Auth/types.d.ts.map +1 -1
  341. package/dist/views/Edit/Default/Auth/types.js.map +1 -1
  342. package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts +0 -1
  343. package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts.map +1 -1
  344. package/dist/views/Edit/Default/SetDocumentStepNav/index.js +16 -6
  345. package/dist/views/Edit/Default/SetDocumentStepNav/index.js.map +1 -1
  346. package/dist/views/Edit/Default/SetDocumentTitle/index.d.ts +0 -1
  347. package/dist/views/Edit/Default/SetDocumentTitle/index.d.ts.map +1 -1
  348. package/dist/views/Edit/Default/SetDocumentTitle/index.js +1 -1
  349. package/dist/views/Edit/Default/SetDocumentTitle/index.js.map +1 -1
  350. package/dist/views/Edit/Default/index.d.ts.map +1 -1
  351. package/dist/views/Edit/Default/index.js +51 -35
  352. package/dist/views/Edit/Default/index.js.map +1 -1
  353. package/dist/views/Edit/Default/index.scss +2 -2
  354. package/dist/views/Edit/Default/types.js.map +1 -1
  355. package/dist/views/Edit/index.client.d.ts.map +1 -1
  356. package/dist/views/Edit/index.client.js +11 -6
  357. package/dist/views/Edit/index.client.js.map +1 -1
  358. package/dist/views/Edit/index.d.ts +2 -2
  359. package/dist/views/Edit/index.d.ts.map +1 -1
  360. package/dist/views/Edit/index.js.map +1 -1
  361. package/dist/views/Edit/meta.d.ts.map +1 -1
  362. package/dist/views/Edit/meta.js +30 -19
  363. package/dist/views/Edit/meta.js.map +1 -1
  364. package/dist/views/Edit/sanitizeEditViewProps.js.map +1 -1
  365. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  366. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +42 -10
  367. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  368. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  369. package/dist/views/ForgotPassword/index.js +13 -5
  370. package/dist/views/ForgotPassword/index.js.map +1 -1
  371. package/dist/views/ForgotPassword/meta.js.map +1 -1
  372. package/dist/views/List/Default/index.d.ts.map +1 -1
  373. package/dist/views/List/Default/index.js +69 -64
  374. package/dist/views/List/Default/index.js.map +1 -1
  375. package/dist/views/List/Default/index.scss +9 -27
  376. package/dist/views/List/Default/types.d.ts +1 -1
  377. package/dist/views/List/Default/types.d.ts.map +1 -1
  378. package/dist/views/List/Default/types.js.map +1 -1
  379. package/dist/views/List/index.d.ts.map +1 -1
  380. package/dist/views/List/index.js +75 -47
  381. package/dist/views/List/index.js.map +1 -1
  382. package/dist/views/List/meta.d.ts +2 -2
  383. package/dist/views/List/meta.d.ts.map +1 -1
  384. package/dist/views/List/meta.js +1 -1
  385. package/dist/views/List/meta.js.map +1 -1
  386. package/dist/views/LivePreview/Context/collisionDetection.js.map +1 -1
  387. package/dist/views/LivePreview/Context/context.d.ts +1 -1
  388. package/dist/views/LivePreview/Context/context.d.ts.map +1 -1
  389. package/dist/views/LivePreview/Context/context.js.map +1 -1
  390. package/dist/views/LivePreview/Context/index.d.ts +3 -3
  391. package/dist/views/LivePreview/Context/index.d.ts.map +1 -1
  392. package/dist/views/LivePreview/Context/index.js.map +1 -1
  393. package/dist/views/LivePreview/Context/sizeReducer.js.map +1 -1
  394. package/dist/views/LivePreview/Device/index.js +1 -1
  395. package/dist/views/LivePreview/Device/index.js.map +1 -1
  396. package/dist/views/LivePreview/DeviceContainer/index.js.map +1 -1
  397. package/dist/views/LivePreview/IFrame/index.js.map +1 -1
  398. package/dist/views/LivePreview/Preview/index.js +2 -2
  399. package/dist/views/LivePreview/Preview/index.js.map +1 -1
  400. package/dist/views/LivePreview/Toolbar/Controls/index.d.ts.map +1 -1
  401. package/dist/views/LivePreview/Toolbar/Controls/index.js +1 -1
  402. package/dist/views/LivePreview/Toolbar/Controls/index.js.map +1 -1
  403. package/dist/views/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  404. package/dist/views/LivePreview/Toolbar/index.d.ts +2 -2
  405. package/dist/views/LivePreview/Toolbar/index.d.ts.map +1 -1
  406. package/dist/views/LivePreview/Toolbar/index.js +1 -1
  407. package/dist/views/LivePreview/Toolbar/index.js.map +1 -1
  408. package/dist/views/LivePreview/ToolbarArea/index.js.map +1 -1
  409. package/dist/views/LivePreview/index.client.d.ts +3 -3
  410. package/dist/views/LivePreview/index.client.d.ts.map +1 -1
  411. package/dist/views/LivePreview/index.client.js +84 -93
  412. package/dist/views/LivePreview/index.client.js.map +1 -1
  413. package/dist/views/LivePreview/index.d.ts +2 -2
  414. package/dist/views/LivePreview/index.d.ts.map +1 -1
  415. package/dist/views/LivePreview/index.js.map +1 -1
  416. package/dist/views/LivePreview/meta.d.ts.map +1 -1
  417. package/dist/views/LivePreview/meta.js +2 -1
  418. package/dist/views/LivePreview/meta.js.map +1 -1
  419. package/dist/views/LivePreview/usePopupWindow.d.ts +3 -2
  420. package/dist/views/LivePreview/usePopupWindow.d.ts.map +1 -1
  421. package/dist/views/LivePreview/usePopupWindow.js +2 -2
  422. package/dist/views/LivePreview/usePopupWindow.js.map +1 -1
  423. package/dist/views/Login/LoginField/index.d.ts +9 -0
  424. package/dist/views/Login/LoginField/index.d.ts.map +1 -0
  425. package/dist/views/Login/LoginField/index.js +49 -0
  426. package/dist/views/Login/LoginField/index.js.map +1 -0
  427. package/dist/views/Login/LoginForm/index.d.ts +3 -0
  428. package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
  429. package/dist/views/Login/LoginForm/index.js +45 -54
  430. package/dist/views/Login/LoginForm/index.js.map +1 -1
  431. package/dist/views/Login/index.d.ts.map +1 -1
  432. package/dist/views/Login/index.js +28 -27
  433. package/dist/views/Login/index.js.map +1 -1
  434. package/dist/views/Login/meta.js.map +1 -1
  435. package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
  436. package/dist/views/Logout/LogoutClient.js +8 -3
  437. package/dist/views/Logout/LogoutClient.js.map +1 -1
  438. package/dist/views/Logout/index.d.ts +2 -2
  439. package/dist/views/Logout/index.d.ts.map +1 -1
  440. package/dist/views/Logout/index.js +2 -2
  441. package/dist/views/Logout/index.js.map +1 -1
  442. package/dist/views/Logout/meta.js.map +1 -1
  443. package/dist/views/NotFound/index.client.d.ts.map +1 -1
  444. package/dist/views/NotFound/index.client.js +4 -3
  445. package/dist/views/NotFound/index.client.js.map +1 -1
  446. package/dist/views/NotFound/index.d.ts +4 -3
  447. package/dist/views/NotFound/index.d.ts.map +1 -1
  448. package/dist/views/NotFound/index.js +19 -23
  449. package/dist/views/NotFound/index.js.map +1 -1
  450. package/dist/views/NotFound/meta.d.ts +2 -2
  451. package/dist/views/NotFound/meta.d.ts.map +1 -1
  452. package/dist/views/NotFound/meta.js.map +1 -1
  453. package/dist/views/ResetPassword/index.client.d.ts +1 -1
  454. package/dist/views/ResetPassword/index.client.d.ts.map +1 -1
  455. package/dist/views/ResetPassword/index.client.js +23 -32
  456. package/dist/views/ResetPassword/index.client.js.map +1 -1
  457. package/dist/views/ResetPassword/index.d.ts.map +1 -1
  458. package/dist/views/ResetPassword/index.js +8 -4
  459. package/dist/views/ResetPassword/index.js.map +1 -1
  460. package/dist/views/ResetPassword/meta.js.map +1 -1
  461. package/dist/views/Root/generateCustomViewMetadata.d.ts +11 -0
  462. package/dist/views/Root/generateCustomViewMetadata.d.ts.map +1 -0
  463. package/dist/views/Root/generateCustomViewMetadata.js +23 -0
  464. package/dist/views/Root/generateCustomViewMetadata.js.map +1 -0
  465. package/dist/views/Root/getCustomViewByRoute.d.ts +7 -2
  466. package/dist/views/Root/getCustomViewByRoute.d.ts.map +1 -1
  467. package/dist/views/Root/getCustomViewByRoute.js +29 -11
  468. package/dist/views/Root/getCustomViewByRoute.js.map +1 -1
  469. package/dist/views/Root/getViewFromConfig.d.ts +11 -5
  470. package/dist/views/Root/getViewFromConfig.d.ts.map +1 -1
  471. package/dist/views/Root/getViewFromConfig.js +37 -16
  472. package/dist/views/Root/getViewFromConfig.js.map +1 -1
  473. package/dist/views/Root/index.d.ts +8 -7
  474. package/dist/views/Root/index.d.ts.map +1 -1
  475. package/dist/views/Root/index.js +31 -12
  476. package/dist/views/Root/index.js.map +1 -1
  477. package/dist/views/Root/isPathMatchingRoute.js.map +1 -1
  478. package/dist/views/Root/meta.d.ts.map +1 -1
  479. package/dist/views/Root/meta.js +19 -2
  480. package/dist/views/Root/meta.js.map +1 -1
  481. package/dist/views/Unauthorized/index.d.ts +2 -2
  482. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  483. package/dist/views/Unauthorized/index.js +2 -1
  484. package/dist/views/Unauthorized/index.js.map +1 -1
  485. package/dist/views/Unauthorized/meta.js.map +1 -1
  486. package/dist/views/Verify/index.d.ts.map +1 -1
  487. package/dist/views/Verify/index.js +9 -2
  488. package/dist/views/Verify/index.js.map +1 -1
  489. package/dist/views/Verify/meta.js.map +1 -1
  490. package/dist/views/Version/Default/SetStepNav.d.ts +8 -10
  491. package/dist/views/Version/Default/SetStepNav.d.ts.map +1 -1
  492. package/dist/views/Version/Default/SetStepNav.js +35 -20
  493. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  494. package/dist/views/Version/Default/index.d.ts.map +1 -1
  495. package/dist/views/Version/Default/index.js +25 -30
  496. package/dist/views/Version/Default/index.js.map +1 -1
  497. package/dist/views/Version/Default/types.d.ts +8 -8
  498. package/dist/views/Version/Default/types.d.ts.map +1 -1
  499. package/dist/views/Version/Default/types.js.map +1 -1
  500. package/dist/views/Version/RenderFieldsToDiff/Label/index.js.map +1 -1
  501. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts +2 -2
  502. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
  503. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +20 -20
  504. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  505. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts +2 -2
  506. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts.map +1 -1
  507. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js +4 -4
  508. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js.map +1 -1
  509. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts +3 -2
  510. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts.map +1 -1
  511. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +45 -25
  512. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  513. package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js.map +1 -1
  514. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts +3 -6
  515. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  516. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +1 -1
  517. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  518. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts +3 -5
  519. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts.map +1 -1
  520. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +2 -2
  521. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  522. package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js.map +1 -1
  523. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts +3 -2
  524. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts.map +1 -1
  525. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +1 -1
  526. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  527. package/dist/views/Version/RenderFieldsToDiff/fields/diffMethods.js.map +1 -1
  528. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts +21 -56
  529. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
  530. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +4 -3
  531. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  532. package/dist/views/Version/RenderFieldsToDiff/fields/styles.js.map +1 -1
  533. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +15 -16
  534. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +1 -1
  535. package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -1
  536. package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
  537. package/dist/views/Version/RenderFieldsToDiff/index.js +12 -8
  538. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  539. package/dist/views/Version/RenderFieldsToDiff/types.d.ts +11 -12
  540. package/dist/views/Version/RenderFieldsToDiff/types.d.ts.map +1 -1
  541. package/dist/views/Version/RenderFieldsToDiff/types.js.map +1 -1
  542. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  543. package/dist/views/Version/Restore/index.js +46 -13
  544. package/dist/views/Version/Restore/index.js.map +1 -1
  545. package/dist/views/Version/Restore/index.scss +31 -0
  546. package/dist/views/Version/Restore/types.d.ts +1 -0
  547. package/dist/views/Version/Restore/types.d.ts.map +1 -1
  548. package/dist/views/Version/Restore/types.js.map +1 -1
  549. package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
  550. package/dist/views/Version/SelectComparison/index.js +50 -29
  551. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  552. package/dist/views/Version/SelectComparison/index.scss +1 -1
  553. package/dist/views/Version/SelectComparison/types.d.ts +2 -1
  554. package/dist/views/Version/SelectComparison/types.d.ts.map +1 -1
  555. package/dist/views/Version/SelectComparison/types.js.map +1 -1
  556. package/dist/views/Version/SelectLocales/index.js +1 -1
  557. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  558. package/dist/views/Version/SelectLocales/types.js.map +1 -1
  559. package/dist/views/Version/index.d.ts +2 -2
  560. package/dist/views/Version/index.d.ts.map +1 -1
  561. package/dist/views/Version/index.js +55 -43
  562. package/dist/views/Version/index.js.map +1 -1
  563. package/dist/views/Version/meta.d.ts.map +1 -1
  564. package/dist/views/Version/meta.js +24 -19
  565. package/dist/views/Version/meta.js.map +1 -1
  566. package/dist/views/Versions/buildColumns.d.ts +4 -2
  567. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  568. package/dist/views/Versions/buildColumns.js +44 -17
  569. package/dist/views/Versions/buildColumns.js.map +1 -1
  570. package/dist/views/Versions/cells/AutosaveCell/index.d.ts +7 -1
  571. package/dist/views/Versions/cells/AutosaveCell/index.d.ts.map +1 -1
  572. package/dist/views/Versions/cells/AutosaveCell/index.js +32 -14
  573. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  574. package/dist/views/Versions/cells/CreatedAt/index.d.ts.map +1 -1
  575. package/dist/views/Versions/cells/CreatedAt/index.js +11 -5
  576. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  577. package/dist/views/Versions/cells/ID/index.js +1 -1
  578. package/dist/views/Versions/cells/ID/index.js.map +1 -1
  579. package/dist/views/Versions/getLatestVersion.d.ts +14 -0
  580. package/dist/views/Versions/getLatestVersion.d.ts.map +1 -0
  581. package/dist/views/Versions/getLatestVersion.js +34 -0
  582. package/dist/views/Versions/getLatestVersion.js.map +1 -0
  583. package/dist/views/Versions/index.client.d.ts +5 -5
  584. package/dist/views/Versions/index.client.d.ts.map +1 -1
  585. package/dist/views/Versions/index.client.js +11 -8
  586. package/dist/views/Versions/index.client.js.map +1 -1
  587. package/dist/views/Versions/index.d.ts +2 -2
  588. package/dist/views/Versions/index.d.ts.map +1 -1
  589. package/dist/views/Versions/index.js +46 -4
  590. package/dist/views/Versions/index.js.map +1 -1
  591. package/dist/views/Versions/meta.d.ts.map +1 -1
  592. package/dist/views/Versions/meta.js +24 -19
  593. package/dist/views/Versions/meta.js.map +1 -1
  594. package/dist/views/Versions/types.js.map +1 -1
  595. package/dist/withPayload.d.ts +1 -1
  596. package/dist/withPayload.d.ts.map +1 -1
  597. package/dist/withPayload.js +18 -11
  598. package/dist/withPayload.js.map +1 -1
  599. package/package.json +47 -33
  600. package/dist/prod/index.js +0 -55
  601. package/dist/prod/payload/payload-favicon-dark.png +0 -0
  602. package/dist/prod/payload/payload-favicon-light.png +0 -0
  603. package/dist/prod/payload/static-og-image.png +0 -0
  604. package/dist/views/Version/shared.d.ts +0 -9
  605. package/dist/views/Version/shared.d.ts.map +0 -1
  606. package/dist/views/Version/shared.js +0 -10
  607. package/dist/views/Version/shared.js.map +0 -1
  608. package/dist/webpackEntry.d.ts +0 -5
  609. package/dist/webpackEntry.d.ts.map +0 -1
  610. package/dist/webpackEntry.js +0 -6
  611. package/dist/webpackEntry.js.map +0 -1
@@ -1,15 +1,17 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { getTranslation } from '@payloadcms/translations';
4
- import { ChevronIcon, NavGroup, useAuth, useConfig, useEntityVisibility, useNav, useTranslation } from '@payloadcms/ui/client';
5
- import { EntityType, groupNavItems } from '@payloadcms/ui/shared';
4
+ import { NavGroup, useAuth, useConfig, useEntityVisibility, useNav, useTranslation } from '@payloadcms/ui';
5
+ import { EntityType, formatAdminURL, groupNavItems } from '@payloadcms/ui/shared';
6
6
  import LinkWithDefault from 'next/link.js';
7
+ import { usePathname } from 'next/navigation.js';
7
8
  import React, { Fragment } from 'react';
8
9
  const baseClass = 'nav';
9
10
  export const DefaultNavClient = ()=>{
10
11
  const { permissions } = useAuth();
11
12
  const { isEntityVisible } = useEntityVisibility();
12
- const { collections, globals, routes: { admin } } = useConfig();
13
+ const pathname = usePathname();
14
+ const { config: { collections, globals, routes: { admin: adminRoute } } } = useConfig();
13
15
  const { i18n } = useTranslation();
14
16
  const { navOpen } = useNav();
15
17
  const groups = groupNavItems([
@@ -41,28 +43,35 @@ export const DefaultNavClient = ()=>{
41
43
  let href;
42
44
  let id;
43
45
  if (type === EntityType.collection) {
44
- href = `${admin}/collections/${entity.slug}`;
46
+ href = formatAdminURL({
47
+ adminRoute,
48
+ path: `/collections/${entity.slug}`
49
+ });
45
50
  entityLabel = getTranslation(entity.labels.plural, i18n);
46
51
  id = `nav-${entity.slug}`;
47
52
  }
48
53
  if (type === EntityType.global) {
49
- href = `${admin}/globals/${entity.slug}`;
54
+ href = formatAdminURL({
55
+ adminRoute,
56
+ path: `/globals/${entity.slug}`
57
+ });
50
58
  entityLabel = getTranslation(entity.label, i18n);
51
59
  id = `nav-global-${entity.slug}`;
52
60
  }
53
61
  const Link = LinkWithDefault.default || LinkWithDefault;
54
62
  const LinkElement = Link || 'a';
63
+ const activeCollection = pathname.endsWith(href);
55
64
  return /*#__PURE__*/ _jsxs(LinkElement, {
56
- className: `${baseClass}__link`,
65
+ className: [
66
+ `${baseClass}__link`,
67
+ activeCollection && `active`
68
+ ].filter(Boolean).join(' '),
57
69
  href: href,
58
70
  id: id,
59
71
  tabIndex: !navOpen ? -1 : undefined,
60
72
  children: [
61
- /*#__PURE__*/ _jsx("span", {
62
- className: `${baseClass}__link-icon`,
63
- children: /*#__PURE__*/ _jsx(ChevronIcon, {
64
- direction: "right"
65
- })
73
+ activeCollection && /*#__PURE__*/ _jsx("div", {
74
+ className: `${baseClass}__link-indicator`
66
75
  }),
67
76
  /*#__PURE__*/ _jsx("span", {
68
77
  className: `${baseClass}__link-label`,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Nav/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { EntityToGroup } from '@payloadcms/ui/utilities/groupNavItems'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n ChevronIcon,\n NavGroup,\n useAuth,\n useConfig,\n useEntityVisibility,\n useNav,\n useTranslation,\n} from '@payloadcms/ui/client'\nimport { EntityType, groupNavItems } from '@payloadcms/ui/shared'\nimport LinkWithDefault from 'next/link.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\n const {\n collections,\n globals,\n routes: { admin },\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 = `${admin}/collections/${entity.slug}`\n entityLabel = getTranslation(entity.labels.plural, i18n)\n id = `nav-${entity.slug}`\n }\n\n if (type === EntityType.global) {\n href = `${admin}/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\n return (\n <LinkElement\n className={`${baseClass}__link`}\n href={href}\n id={id}\n key={i}\n tabIndex={!navOpen ? -1 : undefined}\n >\n <span className={`${baseClass}__link-icon`}>\n <ChevronIcon direction=\"right\" />\n </span>\n <span className={`${baseClass}__link-label`}>{entityLabel}</span>\n </LinkElement>\n )\n })}\n </NavGroup>\n )\n })}\n </Fragment>\n )\n}\n"],"names":["getTranslation","ChevronIcon","NavGroup","useAuth","useConfig","useEntityVisibility","useNav","useTranslation","EntityType","groupNavItems","LinkWithDefault","React","Fragment","baseClass","DefaultNavClient","permissions","isEntityVisible","collections","globals","routes","admin","i18n","navOpen","groups","filter","slug","collectionSlug","map","collection","entityToGroup","type","entity","globalSlug","global","entities","label","key","i","entityLabel","href","id","labels","plural","Link","default","LinkElement","className","tabIndex","undefined","span","direction"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AAIA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,SACEC,WAAW,EACXC,QAAQ,EACRC,OAAO,EACPC,SAAS,EACTC,mBAAmB,EACnBC,MAAM,EACNC,cAAc,QACT,wBAAuB;AAC9B,SAASC,UAAU,EAAEC,aAAa,QAAQ,wBAAuB;AACjE,OAAOC,qBAAqB,eAAc;AAC1C,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAEvC,MAAMC,YAAY;AAElB,OAAO,MAAMC,mBAA6B;IACxC,MAAM,EAAEC,WAAW,EAAE,GAAGZ;IACxB,MAAM,EAAEa,eAAe,EAAE,GAAGX;IAE5B,MAAM,EACJY,WAAW,EACXC,OAAO,EACPC,QAAQ,EAAEC,KAAK,EAAE,EAClB,GAAGhB;IAEJ,MAAM,EAAEiB,IAAI,EAAE,GAAGd;IACjB,MAAM,EAAEe,OAAO,EAAE,GAAGhB;IAEpB,MAAMiB,SAASd,cACb;WACKQ,YACAO,MAAM,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKT,gBAAgB;gBAAEU,gBAAgBD;YAAK,IAC5DE,GAAG,CAAC,CAACC;YACJ,MAAMC,gBAA+B;gBACnCC,MAAMtB,WAAWoB,UAAU;gBAC3BG,QAAQH;YACV;YAEA,OAAOC;QACT;WACCX,QACAM,MAAM,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKT,gBAAgB;gBAAEgB,YAAYP;YAAK,IACxDE,GAAG,CAAC,CAACM;YACJ,MAAMJ,gBAA+B;gBACnCC,MAAMtB,WAAWyB,MAAM;gBACvBF,QAAQE;YACV;YAEA,OAAOJ;QACT;KACH,EACDd,aACAM;IAGF,qBACE,KAACT;kBACEW,OAAOI,GAAG,CAAC,CAAC,EAAEO,QAAQ,EAAEC,KAAK,EAAE,EAAEC;YAChC,qBACE,KAAClC;gBAAmBiC,OAAOA;0BACxBD,SAASP,GAAG,CAAC,CAAC,EAAEG,IAAI,EAAEC,MAAM,EAAE,EAAEM;oBAC/B,IAAIC;oBACJ,IAAIC;oBACJ,IAAIC;oBAEJ,IAAIV,SAAStB,WAAWoB,UAAU,EAAE;wBAClCW,OAAO,CAAC,EAAEnB,MAAM,aAAa,EAAEW,OAAON,IAAI,CAAC,CAAC;wBAC5Ca,cAActC,eAAe+B,OAAOU,MAAM,CAACC,MAAM,EAAErB;wBACnDmB,KAAK,CAAC,IAAI,EAAET,OAAON,IAAI,CAAC,CAAC;oBAC3B;oBAEA,IAAIK,SAAStB,WAAWyB,MAAM,EAAE;wBAC9BM,OAAO,CAAC,EAAEnB,MAAM,SAAS,EAAEW,OAAON,IAAI,CAAC,CAAC;wBACxCa,cAActC,eAAe+B,OAAOI,KAAK,EAAEd;wBAC3CmB,KAAK,CAAC,WAAW,EAAET,OAAON,IAAI,CAAC,CAAC;oBAClC;oBAEA,MAAMkB,OAAQjC,gBAAgBkC,OAAO,IACnClC;oBAEF,MAAMmC,cAAcF,QAAQ;oBAE5B,qBACE,MAACE;wBACCC,WAAW,CAAC,EAAEjC,UAAU,MAAM,CAAC;wBAC/B0B,MAAMA;wBACNC,IAAIA;wBAEJO,UAAU,CAACzB,UAAU,CAAC,IAAI0B;;0CAE1B,KAACC;gCAAKH,WAAW,CAAC,EAAEjC,UAAU,WAAW,CAAC;0CACxC,cAAA,KAACZ;oCAAYiD,WAAU;;;0CAEzB,KAACD;gCAAKH,WAAW,CAAC,EAAEjC,UAAU,YAAY,CAAC;0CAAGyB;;;uBANzCD;gBASX;eArCaD;QAwCnB;;AAGN,EAAC"}
1
+ {"version":3,"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 ChevronIcon,\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 = pathname.endsWith(href)\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 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"],"names":["getTranslation","NavGroup","useAuth","useConfig","useEntityVisibility","useNav","useTranslation","EntityType","formatAdminURL","groupNavItems","LinkWithDefault","usePathname","React","Fragment","baseClass","DefaultNavClient","permissions","isEntityVisible","pathname","config","collections","globals","routes","admin","adminRoute","i18n","navOpen","groups","filter","slug","collectionSlug","map","collection","entityToGroup","type","entity","globalSlug","global","entities","label","key","i","entityLabel","href","id","path","labels","plural","Link","default","LinkElement","activeCollection","endsWith","className","Boolean","join","tabIndex","undefined","div","span"],"mappings":"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"}
@@ -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;AAG1C,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,cAAc,CAAA;AAQrB,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAA;AAElC,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAkEzC,CAAA"}
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;AAIzB,OAAO,cAAc,CAAA;AAMrB,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAA;AAElC,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAwDzC,CAAA"}
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Logout } from '@payloadcms/ui/client';
2
+ import { Logout } from '@payloadcms/ui';
3
+ import { RenderComponent, getCreateMappedComponent } from '@payloadcms/ui/shared';
3
4
  import React from 'react';
4
5
  import { NavHamburger } from './NavHamburger/index.js';
5
6
  import { NavWrapper } from './NavWrapper/index.js';
6
7
  const baseClass = 'nav';
7
- import { WithServerSideProps } from '@payloadcms/ui/shared';
8
8
  import { DefaultNavClient } from './index.client.js';
9
9
  export const DefaultNav = (props)=>{
10
10
  const { i18n, locale, params, payload, permissions, searchParams, user } = props;
@@ -12,39 +12,33 @@ export const DefaultNav = (props)=>{
12
12
  return null;
13
13
  }
14
14
  const { admin: { components: { afterNavLinks, beforeNavLinks } } } = payload.config;
15
- const BeforeNavLinks = Array.isArray(beforeNavLinks) ? beforeNavLinks.map((Component, i)=>/*#__PURE__*/ _jsx(WithServerSideProps, {
16
- Component: Component,
17
- serverOnlyProps: {
18
- i18n,
19
- locale,
20
- params,
21
- payload,
22
- permissions,
23
- searchParams,
24
- user
25
- }
26
- }, i)) : null;
27
- const AfterNavLinks = Array.isArray(afterNavLinks) ? afterNavLinks.map((Component, i)=>/*#__PURE__*/ _jsx(WithServerSideProps, {
28
- Component: Component,
29
- serverOnlyProps: {
30
- i18n,
31
- locale,
32
- params,
33
- payload,
34
- permissions,
35
- searchParams,
36
- user
37
- }
38
- }, i)) : null;
15
+ const createMappedComponent = getCreateMappedComponent({
16
+ importMap: payload.importMap,
17
+ serverProps: {
18
+ i18n,
19
+ locale,
20
+ params,
21
+ payload,
22
+ permissions,
23
+ searchParams,
24
+ user
25
+ }
26
+ });
27
+ const mappedBeforeNavLinks = createMappedComponent(beforeNavLinks, undefined, undefined, 'beforeNavLinks');
28
+ const mappedAfterNavLinks = createMappedComponent(afterNavLinks, undefined, undefined, 'afterNavLinks');
39
29
  return /*#__PURE__*/ _jsxs(NavWrapper, {
40
30
  baseClass: baseClass,
41
31
  children: [
42
32
  /*#__PURE__*/ _jsxs("nav", {
43
33
  className: `${baseClass}__wrap`,
44
34
  children: [
45
- Array.isArray(BeforeNavLinks) && BeforeNavLinks.map((Component)=>Component),
35
+ /*#__PURE__*/ _jsx(RenderComponent, {
36
+ mappedComponent: mappedBeforeNavLinks
37
+ }),
46
38
  /*#__PURE__*/ _jsx(DefaultNavClient, {}),
47
- Array.isArray(AfterNavLinks) && AfterNavLinks.map((Component)=>Component),
39
+ /*#__PURE__*/ _jsx(RenderComponent, {
40
+ mappedComponent: mappedAfterNavLinks
41
+ }),
48
42
  /*#__PURE__*/ _jsx("div", {
49
43
  className: `${baseClass}__controls`,
50
44
  children: /*#__PURE__*/ _jsx(Logout, {})
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Nav/index.tsx"],"sourcesContent":["import type { ServerProps } from 'payload'\n\nimport { Logout } from '@payloadcms/ui/client'\nimport React from 'react'\n\nimport { NavHamburger } from './NavHamburger/index.js'\nimport { NavWrapper } from './NavWrapper/index.js'\nimport './index.scss'\n\nconst baseClass = 'nav'\n\nimport { WithServerSideProps } from '@payloadcms/ui/shared'\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 BeforeNavLinks = Array.isArray(beforeNavLinks)\n ? beforeNavLinks.map((Component, i) => (\n <WithServerSideProps\n Component={Component}\n key={i}\n serverOnlyProps={{\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }}\n />\n ))\n : null\n\n const AfterNavLinks = Array.isArray(afterNavLinks)\n ? afterNavLinks.map((Component, i) => (\n <WithServerSideProps\n Component={Component}\n key={i}\n serverOnlyProps={{\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }}\n />\n ))\n : null\n\n return (\n <NavWrapper baseClass={baseClass}>\n <nav className={`${baseClass}__wrap`}>\n {Array.isArray(BeforeNavLinks) && BeforeNavLinks.map((Component) => Component)}\n <DefaultNavClient />\n {Array.isArray(AfterNavLinks) && AfterNavLinks.map((Component) => Component)}\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"],"names":["Logout","React","NavHamburger","NavWrapper","baseClass","WithServerSideProps","DefaultNavClient","DefaultNav","props","i18n","locale","params","payload","permissions","searchParams","user","config","admin","components","afterNavLinks","beforeNavLinks","BeforeNavLinks","Array","isArray","map","Component","i","serverOnlyProps","AfterNavLinks","nav","className","div"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAEA,SAASA,MAAM,QAAQ,wBAAuB;AAC9C,OAAOC,WAAW,QAAO;AAEzB,SAASC,YAAY,QAAQ,0BAAyB;AACtD,SAASC,UAAU,QAAQ,wBAAuB;AAGlD,MAAMC,YAAY;AAElB,SAASC,mBAAmB,QAAQ,wBAAuB;AAE3D,SAASC,gBAAgB,QAAQ,oBAAmB;AAIpD,OAAO,MAAMC,aAAiC,CAACC;IAC7C,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,EAAEC,OAAO,EAAEC,WAAW,EAAEC,YAAY,EAAEC,IAAI,EAAE,GAAGP;IAE3E,IAAI,CAACI,SAASI,QAAQ;QACpB,OAAO;IACT;IAEA,MAAM,EACJC,OAAO,EACLC,YAAY,EAAEC,aAAa,EAAEC,cAAc,EAAE,EAC9C,EACF,GAAGR,QAAQI,MAAM;IAElB,MAAMK,iBAAiBC,MAAMC,OAAO,CAACH,kBACjCA,eAAeI,GAAG,CAAC,CAACC,WAAWC,kBAC7B,KAACrB;YACCoB,WAAWA;YAEXE,iBAAiB;gBACflB;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;YACF;WATKW,MAYT;IAEJ,MAAME,gBAAgBN,MAAMC,OAAO,CAACJ,iBAChCA,cAAcK,GAAG,CAAC,CAACC,WAAWC,kBAC5B,KAACrB;YACCoB,WAAWA;YAEXE,iBAAiB;gBACflB;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;YACF;WATKW,MAYT;IAEJ,qBACE,MAACvB;QAAWC,WAAWA;;0BACrB,MAACyB;gBAAIC,WAAW,CAAC,EAAE1B,UAAU,MAAM,CAAC;;oBACjCkB,MAAMC,OAAO,CAACF,mBAAmBA,eAAeG,GAAG,CAAC,CAACC,YAAcA;kCACpE,KAACnB;oBACAgB,MAAMC,OAAO,CAACK,kBAAkBA,cAAcJ,GAAG,CAAC,CAACC,YAAcA;kCAClE,KAACM;wBAAID,WAAW,CAAC,EAAE1B,UAAU,UAAU,CAAC;kCACtC,cAAA,KAACJ;;;;0BAGL,KAAC+B;gBAAID,WAAW,CAAC,EAAE1B,UAAU,QAAQ,CAAC;0BACpC,cAAA,KAAC2B;oBAAID,WAAW,CAAC,EAAE1B,UAAU,gBAAgB,CAAC;8BAC5C,cAAA,KAACF;wBAAaE,WAAWA;;;;;;AAKnC,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/Nav/index.tsx"],"sourcesContent":["import type { ServerProps } from 'payload'\n\nimport { Logout } from '@payloadcms/ui'\nimport { RenderComponent, getCreateMappedComponent } from '@payloadcms/ui/shared'\nimport React from 'react'\n\nimport { NavHamburger } from './NavHamburger/index.js'\nimport { NavWrapper } from './NavWrapper/index.js'\nimport './index.scss'\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"],"names":["Logout","RenderComponent","getCreateMappedComponent","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","nav","className","mappedComponent","div"],"mappings":";AAEA,SAASA,MAAM,QAAQ,iBAAgB;AACvC,SAASC,eAAe,EAAEC,wBAAwB,QAAQ,wBAAuB;AACjF,OAAOC,WAAW,QAAO;AAEzB,SAASC,YAAY,QAAQ,0BAAyB;AACtD,SAASC,UAAU,QAAQ,wBAAuB;AAGlD,MAAMC,YAAY;AAElB,SAASC,gBAAgB,QAAQ,oBAAmB;AAIpD,OAAO,MAAMC,aAAiC,CAACC;IAC7C,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,EAAEC,OAAO,EAAEC,WAAW,EAAEC,YAAY,EAAEC,IAAI,EAAE,GAAGP;IAE3E,IAAI,CAACI,SAASI,QAAQ;QACpB,OAAO;IACT;IAEA,MAAM,EACJC,OAAO,EACLC,YAAY,EAAEC,aAAa,EAAEC,cAAc,EAAE,EAC9C,EACF,GAAGR,QAAQI,MAAM;IAElB,MAAMK,wBAAwBpB,yBAAyB;QACrDqB,WAAWV,QAAQU,SAAS;QAC5BC,aAAa;YACXd;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;QACF;IACF;IAEA,MAAMS,uBAAuBH,sBAC3BD,gBACAK,WACAA,WACA;IAEF,MAAMC,sBAAsBL,sBAC1BF,eACAM,WACAA,WACA;IAGF,qBACE,MAACrB;QAAWC,WAAWA;;0BACrB,MAACsB;gBAAIC,WAAW,CAAC,EAAEvB,UAAU,MAAM,CAAC;;kCAClC,KAACL;wBAAgB6B,iBAAiBL;;kCAClC,KAAClB;kCACD,KAACN;wBAAgB6B,iBAAiBH;;kCAClC,KAACI;wBAAIF,WAAW,CAAC,EAAEvB,UAAU,UAAU,CAAC;kCACtC,cAAA,KAACN;;;;0BAGL,KAAC+B;gBAAIF,WAAW,CAAC,EAAEvB,UAAU,QAAQ,CAAC;0BACpC,cAAA,KAACyB;oBAAIF,WAAW,CAAC,EAAEvB,UAAU,gBAAgB,CAAC;8BAC5C,cAAA,KAACF;wBAAaE,WAAWA;;;;;;AAKnC,EAAC"}
@@ -9,7 +9,11 @@
9
9
  width: var(--nav-width);
10
10
  border-right: 1px solid var(--theme-elevation-100);
11
11
  opacity: 0;
12
- transition: opacity var(--nav-trans-time) ease-in-out;
12
+ overflow: hidden;
13
+
14
+ &--nav-animate {
15
+ transition: opacity var(--nav-trans-time) ease-in-out;
16
+ }
13
17
 
14
18
  &--nav-open {
15
19
  opacity: 1;
@@ -18,7 +22,7 @@
18
22
  &__header {
19
23
  position: absolute;
20
24
  top: 0;
21
- width: 100%;
25
+ width: 100vw;
22
26
  height: var(--app-header-height);
23
27
  }
24
28
 
@@ -26,6 +30,7 @@
26
30
  z-index: 1;
27
31
  position: relative;
28
32
  height: 100%;
33
+ width: 100%;
29
34
  }
30
35
 
31
36
  &__mobile-close {
@@ -33,7 +38,7 @@
33
38
  background: none;
34
39
  border: 0;
35
40
  outline: 0;
36
- padding: calc(var(--base) * 0.75) var(--gutter-h);
41
+ padding: base(0.8) 0;
37
42
  }
38
43
 
39
44
  &__scroll {
@@ -85,7 +90,9 @@
85
90
  nav {
86
91
  a {
87
92
  position: relative;
88
- padding: base(0.125) base(1.5) base(0.125) 0;
93
+ padding-block: base(0.125);
94
+ padding-inline-start: 0;
95
+ padding-inline-end: base(1.5);
89
96
  display: flex;
90
97
  text-decoration: none;
91
98
 
@@ -110,19 +117,18 @@
110
117
  &__link {
111
118
  display: flex;
112
119
  align-items: center;
113
-
114
- &.active {
115
- .nav__link-icon {
116
- display: block;
117
- }
118
- }
119
120
  }
120
121
 
121
- &__link-icon {
122
- display: none;
123
- margin-right: calc(var(--base) * 0.25);
124
- top: -1px;
125
- position: relative;
122
+ &__link-indicator {
123
+ position: absolute;
124
+ display: block;
125
+ // top: 0;
126
+ inset-inline-start: base(-1);
127
+ width: 2px;
128
+ height: 16px;
129
+ border-start-end-radius: 2px;
130
+ border-end-end-radius: 2px;
131
+ background: var(--theme-text);
126
132
  }
127
133
 
128
134
  @include mid-break {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/exports/layouts.ts"],"sourcesContent":["export { RootLayout, metadata } from '../layouts/Root/index.js'\n"],"names":["RootLayout","metadata"],"rangeMappings":"","mappings":"AAAA,SAASA,UAAU,EAAEC,QAAQ,QAAQ,2BAA0B"}
1
+ {"version":3,"sources":["../../src/exports/layouts.ts"],"sourcesContent":["export { RootLayout, metadata } from '../layouts/Root/index.js'\n"],"names":["RootLayout","metadata"],"mappings":"AAAA,SAASA,UAAU,EAAEC,QAAQ,QAAQ,2BAA0B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/exports/routes.ts"],"sourcesContent":["export { GRAPHQL_PLAYGROUND_GET, GRAPHQL_POST } from '../routes/graphql/index.js'\n\nexport {\n DELETE as REST_DELETE,\n GET as REST_GET,\n OPTIONS as REST_OPTIONS,\n PATCH as REST_PATCH,\n POST as REST_POST,\n} from '../routes/rest/index.js'\n"],"names":["GRAPHQL_PLAYGROUND_GET","GRAPHQL_POST","DELETE","REST_DELETE","GET","REST_GET","OPTIONS","REST_OPTIONS","PATCH","REST_PATCH","POST","REST_POST"],"rangeMappings":";","mappings":"AAAA,SAASA,sBAAsB,EAAEC,YAAY,QAAQ,6BAA4B;AAEjF,SACEC,UAAUC,WAAW,EACrBC,OAAOC,QAAQ,EACfC,WAAWC,YAAY,EACvBC,SAASC,UAAU,EACnBC,QAAQC,SAAS,QACZ,0BAAyB"}
1
+ {"version":3,"sources":["../../src/exports/routes.ts"],"sourcesContent":["export { GRAPHQL_PLAYGROUND_GET, GRAPHQL_POST } from '../routes/graphql/index.js'\n\nexport {\n DELETE as REST_DELETE,\n GET as REST_GET,\n OPTIONS as REST_OPTIONS,\n PATCH as REST_PATCH,\n POST as REST_POST,\n} from '../routes/rest/index.js'\n"],"names":["GRAPHQL_PLAYGROUND_GET","GRAPHQL_POST","DELETE","REST_DELETE","GET","REST_GET","OPTIONS","REST_OPTIONS","PATCH","REST_PATCH","POST","REST_POST"],"mappings":"AAAA,SAASA,sBAAsB,EAAEC,YAAY,QAAQ,6BAA4B;AAEjF,SACEC,UAAUC,WAAW,EACrBC,OAAOC,QAAQ,EACfC,WAAWC,YAAY,EACvBC,SAASC,UAAU,EACnBC,QAAQC,SAAS,QACZ,0BAAyB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/exports/templates.ts"],"sourcesContent":["export { DefaultTemplate, type DefaultTemplateProps } from '../templates/Default/index.js'\nexport { MinimalTemplate, type MinimalTemplateProps } from '../templates/Minimal/index.js'\n"],"names":["DefaultTemplate","MinimalTemplate"],"rangeMappings":";","mappings":"AAAA,SAASA,eAAe,QAAmC,gCAA+B;AAC1F,SAASC,eAAe,QAAmC,gCAA+B"}
1
+ {"version":3,"sources":["../../src/exports/templates.ts"],"sourcesContent":["export { DefaultTemplate, type DefaultTemplateProps } from '../templates/Default/index.js'\nexport { MinimalTemplate, type MinimalTemplateProps } from '../templates/Minimal/index.js'\n"],"names":["DefaultTemplate","MinimalTemplate"],"mappings":"AAAA,SAASA,eAAe,QAAmC,gCAA+B;AAC1F,SAASC,eAAe,QAAmC,gCAA+B"}
@@ -1 +1 @@
1
- {"version":3,"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'\n"],"names":["addDataAndFileToRequest","addLocalesToRequestFromData","sanitizeLocales","createPayloadRequest","getNextRequestI18n","getPayloadHMR","reload","headersWithCors"],"rangeMappings":";;;;;","mappings":"AAAA,SAASA,uBAAuB,QAAQ,0CAAyC;AACjF,SAASC,2BAA2B,EAAEC,eAAe,QAAQ,sCAAqC;AAClG,SAASC,oBAAoB,QAAQ,uCAAsC;AAC3E,SAASC,kBAAkB,QAAQ,qCAAoC;AACvE,SAASC,aAAa,EAAEC,MAAM,QAAQ,gCAA+B;AACrE,SAASC,eAAe,QAAQ,kCAAiC"}
1
+ {"version":3,"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'\n"],"names":["addDataAndFileToRequest","addLocalesToRequestFromData","sanitizeLocales","createPayloadRequest","getNextRequestI18n","getPayloadHMR","reload","headersWithCors"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ,0CAAyC;AACjF,SAASC,2BAA2B,EAAEC,eAAe,QAAQ,sCAAqC;AAClG,SAASC,oBAAoB,QAAQ,uCAAsC;AAC3E,SAASC,kBAAkB,QAAQ,qCAAoC;AACvE,SAASC,aAAa,EAAEC,MAAM,QAAQ,gCAA+B;AACrE,SAASC,eAAe,QAAQ,kCAAiC"}
@@ -1 +1 @@
1
- {"version":3,"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 { type GenerateViewMetadata, RootPage, generatePageMetadata } from '../views/Root/index.js'\n"],"names":["DefaultEditView","EditView","DefaultListView","ListView","NotFoundPage","RootPage","generatePageMetadata"],"rangeMappings":";;;","mappings":"AAAA,SAASA,mBAAmBC,QAAQ,QAAQ,iCAAgC;AAC5E,SAASC,mBAAmBC,QAAQ,QAAQ,iCAAgC;AAC5E,SAASC,YAAY,QAAQ,6BAA4B;AACzD,SAAoCC,QAAQ,EAAEC,oBAAoB,QAAQ,yBAAwB"}
1
+ {"version":3,"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 { type GenerateViewMetadata, RootPage, generatePageMetadata } from '../views/Root/index.js'\n"],"names":["DefaultEditView","EditView","DefaultListView","ListView","NotFoundPage","RootPage","generatePageMetadata"],"mappings":"AAAA,SAASA,mBAAmBC,QAAQ,QAAQ,iCAAgC;AAC5E,SAASC,mBAAmBC,QAAQ,QAAQ,iCAAgC;AAC5E,SAASC,YAAY,QAAQ,6BAA4B;AACzD,SAAoCC,QAAQ,EAAEC,oBAAoB,QAAQ,yBAAwB"}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type { FetchAPIFileUploadOptions, FileShape } from './index.js';
3
2
  type FileFactoryOptions = {
4
3
  buffer: Buffer;
@@ -1 +1 @@
1
- {"version":3,"file":"fileFactory.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/fileFactory.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAmCtE,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AACD,KAAK,WAAW,GAAG,CACjB,OAAO,EAAE,kBAAkB,EAC3B,iBAAiB,EAAE,yBAAyB,KACzC,SAAS,CAAA;AACd,eAAO,MAAM,WAAW,EAAE,WA4BzB,CAAA"}
1
+ {"version":3,"file":"fileFactory.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/fileFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAmCtE,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AACD,KAAK,WAAW,GAAG,CACjB,OAAO,EAAE,kBAAkB,EAC3B,iBAAiB,EAAE,yBAAyB,KACzC,SAAS,CAAA;AACd,eAAO,MAAM,WAAW,EAAE,WA4BzB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fetchAPI-multipart/fileFactory.ts"],"sourcesContent":["import type { FetchAPIFileUploadOptions, FileShape } from './index.js'\n\nimport {\n checkAndMakeDir,\n debugLog,\n isFunc,\n moveFile,\n promiseCallback,\n saveBufferToFile,\n} from './utilities.js'\n\ntype MoveFile = (\n filePath: string,\n options: FileFactoryOptions,\n fileUploadOptions: FetchAPIFileUploadOptions,\n) => (resolve: () => void, reject: () => void) => void\n\n/**\n * Returns Local function that moves the file to a different location on the filesystem\n * which takes two function arguments to make it compatible w/ Promise or Callback APIs\n */\nconst moveFromTemp: MoveFile = (filePath, options, fileUploadOptions) => (resolve, reject) => {\n debugLog(fileUploadOptions, `Moving temporary file ${options.tempFilePath} to ${filePath}`)\n moveFile(options.tempFilePath, filePath, promiseCallback(resolve, reject))\n}\n\n/**\n * Returns Local function that moves the file from buffer to a different location on the filesystem\n * which takes two function arguments to make it compatible w/ Promise or Callback APIs\n */\nconst moveFromBuffer: MoveFile = (filePath, options, fileUploadOptions) => (resolve, reject) => {\n debugLog(fileUploadOptions, `Moving uploaded buffer to ${filePath}`)\n saveBufferToFile(options.buffer, filePath, promiseCallback(resolve, reject))\n}\n\ntype FileFactoryOptions = {\n buffer: Buffer\n encoding: string\n hash: Buffer | string\n mimetype: string\n name: string\n size: number\n tempFilePath: string\n truncated: boolean\n}\ntype FileFactory = (\n options: FileFactoryOptions,\n fileUploadOptions: FetchAPIFileUploadOptions,\n) => FileShape\nexport const fileFactory: FileFactory = (options, fileUploadOptions) => {\n // see: https://github.com/richardgirges/express-fileupload/issues/14\n // firefox uploads empty file in case of cache miss when f5ing page.\n // resulting in unexpected behavior. if there is no file data, the file is invalid.\n // if (!fileUploadOptions.useTempFiles && !options.buffer.length) return;\n\n // Create and return file object.\n return {\n name: options.name,\n data: options.buffer,\n encoding: options.encoding,\n md5: options.hash,\n mimetype: options.mimetype,\n mv: (filePath: string, callback) => {\n // Define a proper move function.\n const moveFunc = fileUploadOptions.useTempFiles\n ? moveFromTemp(filePath, options, fileUploadOptions)\n : moveFromBuffer(filePath, options, fileUploadOptions)\n // Create a folder for a file.\n checkAndMakeDir(fileUploadOptions, filePath)\n // If callback is passed in, use the callback API, otherwise return a promise.\n const defaultReject = () => undefined\n return isFunc(callback) ? moveFunc(callback, defaultReject) : new Promise(moveFunc)\n },\n size: options.size,\n tempFilePath: options.tempFilePath,\n truncated: options.truncated,\n }\n}\n"],"names":["checkAndMakeDir","debugLog","isFunc","moveFile","promiseCallback","saveBufferToFile","moveFromTemp","filePath","options","fileUploadOptions","resolve","reject","tempFilePath","moveFromBuffer","buffer","fileFactory","name","data","encoding","md5","hash","mimetype","mv","callback","moveFunc","useTempFiles","defaultReject","undefined","Promise","size","truncated"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SACEA,eAAe,EACfC,QAAQ,EACRC,MAAM,EACNC,QAAQ,EACRC,eAAe,EACfC,gBAAgB,QACX,iBAAgB;AAQvB;;;CAGC,GACD,MAAMC,eAAyB,CAACC,UAAUC,SAASC,oBAAsB,CAACC,SAASC;QACjFV,SAASQ,mBAAmB,CAAC,sBAAsB,EAAED,QAAQI,YAAY,CAAC,IAAI,EAAEL,SAAS,CAAC;QAC1FJ,SAASK,QAAQI,YAAY,EAAEL,UAAUH,gBAAgBM,SAASC;IACpE;AAEA;;;CAGC,GACD,MAAME,iBAA2B,CAACN,UAAUC,SAASC,oBAAsB,CAACC,SAASC;QACnFV,SAASQ,mBAAmB,CAAC,0BAA0B,EAAEF,SAAS,CAAC;QACnEF,iBAAiBG,QAAQM,MAAM,EAAEP,UAAUH,gBAAgBM,SAASC;IACtE;AAgBA,OAAO,MAAMI,cAA2B,CAACP,SAASC;IAChD,qEAAqE;IACrE,oEAAoE;IACpE,mFAAmF;IACnF,yEAAyE;IAEzE,iCAAiC;IACjC,OAAO;QACLO,MAAMR,QAAQQ,IAAI;QAClBC,MAAMT,QAAQM,MAAM;QACpBI,UAAUV,QAAQU,QAAQ;QAC1BC,KAAKX,QAAQY,IAAI;QACjBC,UAAUb,QAAQa,QAAQ;QAC1BC,IAAI,CAACf,UAAkBgB;YACrB,iCAAiC;YACjC,MAAMC,WAAWf,kBAAkBgB,YAAY,GAC3CnB,aAAaC,UAAUC,SAASC,qBAChCI,eAAeN,UAAUC,SAASC;YACtC,8BAA8B;YAC9BT,gBAAgBS,mBAAmBF;YACnC,8EAA8E;YAC9E,MAAMmB,gBAAgB,IAAMC;YAC5B,OAAOzB,OAAOqB,YAAYC,SAASD,UAAUG,iBAAiB,IAAIE,QAAQJ;QAC5E;QACAK,MAAMrB,QAAQqB,IAAI;QAClBjB,cAAcJ,QAAQI,YAAY;QAClCkB,WAAWtB,QAAQsB,SAAS;IAC9B;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/fetchAPI-multipart/fileFactory.ts"],"sourcesContent":["import type { FetchAPIFileUploadOptions, FileShape } from './index.js'\n\nimport {\n checkAndMakeDir,\n debugLog,\n isFunc,\n moveFile,\n promiseCallback,\n saveBufferToFile,\n} from './utilities.js'\n\ntype MoveFile = (\n filePath: string,\n options: FileFactoryOptions,\n fileUploadOptions: FetchAPIFileUploadOptions,\n) => (resolve: () => void, reject: () => void) => void\n\n/**\n * Returns Local function that moves the file to a different location on the filesystem\n * which takes two function arguments to make it compatible w/ Promise or Callback APIs\n */\nconst moveFromTemp: MoveFile = (filePath, options, fileUploadOptions) => (resolve, reject) => {\n debugLog(fileUploadOptions, `Moving temporary file ${options.tempFilePath} to ${filePath}`)\n moveFile(options.tempFilePath, filePath, promiseCallback(resolve, reject))\n}\n\n/**\n * Returns Local function that moves the file from buffer to a different location on the filesystem\n * which takes two function arguments to make it compatible w/ Promise or Callback APIs\n */\nconst moveFromBuffer: MoveFile = (filePath, options, fileUploadOptions) => (resolve, reject) => {\n debugLog(fileUploadOptions, `Moving uploaded buffer to ${filePath}`)\n saveBufferToFile(options.buffer, filePath, promiseCallback(resolve, reject))\n}\n\ntype FileFactoryOptions = {\n buffer: Buffer\n encoding: string\n hash: Buffer | string\n mimetype: string\n name: string\n size: number\n tempFilePath: string\n truncated: boolean\n}\ntype FileFactory = (\n options: FileFactoryOptions,\n fileUploadOptions: FetchAPIFileUploadOptions,\n) => FileShape\nexport const fileFactory: FileFactory = (options, fileUploadOptions) => {\n // see: https://github.com/richardgirges/express-fileupload/issues/14\n // firefox uploads empty file in case of cache miss when f5ing page.\n // resulting in unexpected behavior. if there is no file data, the file is invalid.\n // if (!fileUploadOptions.useTempFiles && !options.buffer.length) return;\n\n // Create and return file object.\n return {\n name: options.name,\n data: options.buffer,\n encoding: options.encoding,\n md5: options.hash,\n mimetype: options.mimetype,\n mv: (filePath: string, callback) => {\n // Define a proper move function.\n const moveFunc = fileUploadOptions.useTempFiles\n ? moveFromTemp(filePath, options, fileUploadOptions)\n : moveFromBuffer(filePath, options, fileUploadOptions)\n // Create a folder for a file.\n checkAndMakeDir(fileUploadOptions, filePath)\n // If callback is passed in, use the callback API, otherwise return a promise.\n const defaultReject = () => undefined\n return isFunc(callback) ? moveFunc(callback, defaultReject) : new Promise(moveFunc)\n },\n size: options.size,\n tempFilePath: options.tempFilePath,\n truncated: options.truncated,\n }\n}\n"],"names":["checkAndMakeDir","debugLog","isFunc","moveFile","promiseCallback","saveBufferToFile","moveFromTemp","filePath","options","fileUploadOptions","resolve","reject","tempFilePath","moveFromBuffer","buffer","fileFactory","name","data","encoding","md5","hash","mimetype","mv","callback","moveFunc","useTempFiles","defaultReject","undefined","Promise","size","truncated"],"mappings":"AAEA,SACEA,eAAe,EACfC,QAAQ,EACRC,MAAM,EACNC,QAAQ,EACRC,eAAe,EACfC,gBAAgB,QACX,iBAAgB;AAQvB;;;CAGC,GACD,MAAMC,eAAyB,CAACC,UAAUC,SAASC,oBAAsB,CAACC,SAASC;QACjFV,SAASQ,mBAAmB,CAAC,sBAAsB,EAAED,QAAQI,YAAY,CAAC,IAAI,EAAEL,SAAS,CAAC;QAC1FJ,SAASK,QAAQI,YAAY,EAAEL,UAAUH,gBAAgBM,SAASC;IACpE;AAEA;;;CAGC,GACD,MAAME,iBAA2B,CAACN,UAAUC,SAASC,oBAAsB,CAACC,SAASC;QACnFV,SAASQ,mBAAmB,CAAC,0BAA0B,EAAEF,SAAS,CAAC;QACnEF,iBAAiBG,QAAQM,MAAM,EAAEP,UAAUH,gBAAgBM,SAASC;IACtE;AAgBA,OAAO,MAAMI,cAA2B,CAACP,SAASC;IAChD,qEAAqE;IACrE,oEAAoE;IACpE,mFAAmF;IACnF,yEAAyE;IAEzE,iCAAiC;IACjC,OAAO;QACLO,MAAMR,QAAQQ,IAAI;QAClBC,MAAMT,QAAQM,MAAM;QACpBI,UAAUV,QAAQU,QAAQ;QAC1BC,KAAKX,QAAQY,IAAI;QACjBC,UAAUb,QAAQa,QAAQ;QAC1BC,IAAI,CAACf,UAAkBgB;YACrB,iCAAiC;YACjC,MAAMC,WAAWf,kBAAkBgB,YAAY,GAC3CnB,aAAaC,UAAUC,SAASC,qBAChCI,eAAeN,UAAUC,SAASC;YACtC,8BAA8B;YAC9BT,gBAAgBS,mBAAmBF;YACnC,8EAA8E;YAC9E,MAAMmB,gBAAgB,IAAMC;YAC5B,OAAOzB,OAAOqB,YAAYC,SAASD,UAAUG,iBAAiB,IAAIE,QAAQJ;QAC5E;QACAK,MAAMrB,QAAQqB,IAAI;QAClBjB,cAAcJ,QAAQI,YAAY;QAClCkB,WAAWtB,QAAQsB,SAAS;IAC9B;AACF,EAAC"}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type { FetchAPIFileUploadOptions } from './index.js';
3
2
  type Handler = (options: FetchAPIFileUploadOptions, fieldname: string, filename: string) => {
4
3
  cleanup: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/handlers.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAI3D,KAAK,OAAO,GAAG,CACb,OAAO,EAAE,yBAAyB,EAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,KACb;IACH,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,MAAM,CAAA;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,WAAW,EAAE,MAAM,MAAM,CAAA;IACzB,WAAW,EAAE,MAAM,MAAM,CAAA;IACzB,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CACxC,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,OAsD7B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,OAgCxB,CAAA"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/handlers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAI3D,KAAK,OAAO,GAAG,CACb,OAAO,EAAE,yBAAyB,EAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,KACb;IACH,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,MAAM,CAAA;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,WAAW,EAAE,MAAM,MAAM,CAAA;IACzB,WAAW,EAAE,MAAM,MAAM,CAAA;IACzB,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CACxC,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,OAsD7B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,OAgCxB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fetchAPI-multipart/handlers.ts"],"sourcesContent":["import crypto from 'crypto'\nimport fs, { WriteStream } from 'fs'\nimport path from 'path'\n\nimport type { FetchAPIFileUploadOptions } from './index.js'\n\nimport { checkAndMakeDir, debugLog, deleteFile, getTempFilename } from './utilities.js'\n\ntype Handler = (\n options: FetchAPIFileUploadOptions,\n fieldname: string,\n filename: string,\n) => {\n cleanup: () => void\n complete: () => Buffer\n dataHandler: (data: Buffer) => void\n getFilePath: () => string\n getFileSize: () => number\n getHash: () => string\n getWritePromise: () => Promise<boolean>\n}\n\nexport const tempFileHandler: Handler = (options, fieldname, filename) => {\n const dir = path.normalize(options.tempFileDir)\n const tempFilePath = path.join(process.cwd(), dir, getTempFilename())\n checkAndMakeDir({ createParentPath: true }, tempFilePath)\n\n debugLog(options, `Temporary file path is ${tempFilePath}`)\n\n const hash = crypto.createHash('md5')\n let fileSize = 0\n let completed = false\n\n debugLog(options, `Opening write stream for ${fieldname}->${filename}...`)\n const writeStream = fs.createWriteStream(tempFilePath)\n const writePromise = new Promise<boolean>((resolve, reject) => {\n writeStream.on('finish', () => resolve(true))\n writeStream.on('error', (err) => {\n debugLog(options, `Error write temp file: ${err}`)\n reject(err)\n })\n })\n\n return {\n cleanup: () => {\n completed = true\n debugLog(options, `Cleaning up temporary file ${tempFilePath}...`)\n writeStream.end()\n deleteFile(tempFilePath, (err) =>\n err\n ? debugLog(options, `Cleaning up temporary file ${tempFilePath} failed: ${err}`)\n : debugLog(options, `Cleaning up temporary file ${tempFilePath} done.`),\n )\n },\n complete: () => {\n completed = true\n debugLog(options, `Upload ${fieldname}->${filename} completed, bytes:${fileSize}.`)\n if (writeStream instanceof WriteStream) writeStream.end()\n // Return empty buff since data was uploaded into a temp file.\n return Buffer.concat([])\n },\n dataHandler: (data) => {\n if (completed === true) {\n debugLog(options, `Error: got ${fieldname}->${filename} data chunk for completed upload!`)\n return\n }\n writeStream.write(data)\n hash.update(data)\n fileSize += data.length\n debugLog(options, `Uploading ${fieldname}->${filename}, bytes:${fileSize}...`)\n },\n getFilePath: () => tempFilePath,\n getFileSize: () => fileSize,\n getHash: () => hash.digest('hex'),\n getWritePromise: () => writePromise,\n }\n}\n\nexport const memHandler: Handler = (options, fieldname, filename) => {\n const buffers: Buffer[] = []\n const hash = crypto.createHash('md5')\n let fileSize = 0\n let completed = false\n\n const getBuffer = () => Buffer.concat(buffers, fileSize)\n\n return {\n cleanup: () => {\n completed = true\n },\n complete: () => {\n debugLog(options, `Upload ${fieldname}->${filename} completed, bytes:${fileSize}.`)\n completed = true\n return getBuffer()\n },\n dataHandler: (data) => {\n if (completed === true) {\n debugLog(options, `Error: got ${fieldname}->${filename} data chunk for completed upload!`)\n return\n }\n buffers.push(data)\n hash.update(data)\n fileSize += data.length\n debugLog(options, `Uploading ${fieldname}->${filename}, bytes:${fileSize}...`)\n },\n getFilePath: () => '',\n getFileSize: () => fileSize,\n getHash: () => hash.digest('hex'),\n getWritePromise: () => Promise.resolve(true),\n }\n}\n"],"names":["crypto","fs","WriteStream","path","checkAndMakeDir","debugLog","deleteFile","getTempFilename","tempFileHandler","options","fieldname","filename","dir","normalize","tempFileDir","tempFilePath","join","process","cwd","createParentPath","hash","createHash","fileSize","completed","writeStream","createWriteStream","writePromise","Promise","resolve","reject","on","err","cleanup","end","complete","Buffer","concat","dataHandler","data","write","update","length","getFilePath","getFileSize","getHash","digest","getWritePromise","memHandler","buffers","getBuffer","push"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/fetchAPI-multipart/handlers.ts"],"sourcesContent":["import crypto from 'crypto'\nimport fs, { WriteStream } from 'fs'\nimport path from 'path'\n\nimport type { FetchAPIFileUploadOptions } from './index.js'\n\nimport { checkAndMakeDir, debugLog, deleteFile, getTempFilename } from './utilities.js'\n\ntype Handler = (\n options: FetchAPIFileUploadOptions,\n fieldname: string,\n filename: string,\n) => {\n cleanup: () => void\n complete: () => Buffer\n dataHandler: (data: Buffer) => void\n getFilePath: () => string\n getFileSize: () => number\n getHash: () => string\n getWritePromise: () => Promise<boolean>\n}\n\nexport const tempFileHandler: Handler = (options, fieldname, filename) => {\n const dir = path.normalize(options.tempFileDir)\n const tempFilePath = path.join(process.cwd(), dir, getTempFilename())\n checkAndMakeDir({ createParentPath: true }, tempFilePath)\n\n debugLog(options, `Temporary file path is ${tempFilePath}`)\n\n const hash = crypto.createHash('md5')\n let fileSize = 0\n let completed = false\n\n debugLog(options, `Opening write stream for ${fieldname}->${filename}...`)\n const writeStream = fs.createWriteStream(tempFilePath)\n const writePromise = new Promise<boolean>((resolve, reject) => {\n writeStream.on('finish', () => resolve(true))\n writeStream.on('error', (err) => {\n debugLog(options, `Error write temp file: ${err}`)\n reject(err)\n })\n })\n\n return {\n cleanup: () => {\n completed = true\n debugLog(options, `Cleaning up temporary file ${tempFilePath}...`)\n writeStream.end()\n deleteFile(tempFilePath, (err) =>\n err\n ? debugLog(options, `Cleaning up temporary file ${tempFilePath} failed: ${err}`)\n : debugLog(options, `Cleaning up temporary file ${tempFilePath} done.`),\n )\n },\n complete: () => {\n completed = true\n debugLog(options, `Upload ${fieldname}->${filename} completed, bytes:${fileSize}.`)\n if (writeStream instanceof WriteStream) writeStream.end()\n // Return empty buff since data was uploaded into a temp file.\n return Buffer.concat([])\n },\n dataHandler: (data) => {\n if (completed === true) {\n debugLog(options, `Error: got ${fieldname}->${filename} data chunk for completed upload!`)\n return\n }\n writeStream.write(data)\n hash.update(data)\n fileSize += data.length\n debugLog(options, `Uploading ${fieldname}->${filename}, bytes:${fileSize}...`)\n },\n getFilePath: () => tempFilePath,\n getFileSize: () => fileSize,\n getHash: () => hash.digest('hex'),\n getWritePromise: () => writePromise,\n }\n}\n\nexport const memHandler: Handler = (options, fieldname, filename) => {\n const buffers: Buffer[] = []\n const hash = crypto.createHash('md5')\n let fileSize = 0\n let completed = false\n\n const getBuffer = () => Buffer.concat(buffers, fileSize)\n\n return {\n cleanup: () => {\n completed = true\n },\n complete: () => {\n debugLog(options, `Upload ${fieldname}->${filename} completed, bytes:${fileSize}.`)\n completed = true\n return getBuffer()\n },\n dataHandler: (data) => {\n if (completed === true) {\n debugLog(options, `Error: got ${fieldname}->${filename} data chunk for completed upload!`)\n return\n }\n buffers.push(data)\n hash.update(data)\n fileSize += data.length\n debugLog(options, `Uploading ${fieldname}->${filename}, bytes:${fileSize}...`)\n },\n getFilePath: () => '',\n getFileSize: () => fileSize,\n getHash: () => hash.digest('hex'),\n getWritePromise: () => Promise.resolve(true),\n }\n}\n"],"names":["crypto","fs","WriteStream","path","checkAndMakeDir","debugLog","deleteFile","getTempFilename","tempFileHandler","options","fieldname","filename","dir","normalize","tempFileDir","tempFilePath","join","process","cwd","createParentPath","hash","createHash","fileSize","completed","writeStream","createWriteStream","writePromise","Promise","resolve","reject","on","err","cleanup","end","complete","Buffer","concat","dataHandler","data","write","update","length","getFilePath","getFileSize","getHash","digest","getWritePromise","memHandler","buffers","getBuffer","push"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type { BusboyConfig } from 'busboy';
3
2
  import { APIError } from 'payload';
4
3
  export type FileShape = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/index.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAsBlC,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAClC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACtC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,OAAO,GAAG,SAAS,CAAA;IACzF;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACjC;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;IAChD;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;IAC5C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACnC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AAEzB,KAAK,8BAA8B,GAAG;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAA;CACtD,CAAA;AAED,KAAK,kBAAkB,GAAG,CAAC,IAAI,EAAE;IAC/B,OAAO,CAAC,EAAE,yBAAyB,CAAA;IACnC,OAAO,EAAE,OAAO,CAAA;CACjB,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAA;AACzC,eAAO,MAAM,kBAAkB,EAAE,kBAYhC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAsBlC,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAClC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACtC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,OAAO,GAAG,SAAS,CAAA;IACzF;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACjC;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;IAChD;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;IAC5C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACnC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AAEzB,KAAK,8BAA8B,GAAG;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAA;CACtD,CAAA;AAED,KAAK,kBAAkB,GAAG,CAAC,IAAI,EAAE;IAC/B,OAAO,CAAC,EAAE,yBAAyB,CAAA;IACnC,OAAO,EAAE,OAAO,CAAA;CACjB,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAA;AACzC,eAAO,MAAM,kBAAkB,EAAE,kBAYhC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fetchAPI-multipart/index.ts"],"sourcesContent":["import type { BusboyConfig } from 'busboy'\n\nimport path from 'path'\nimport { APIError } from 'payload'\n\nimport { isEligibleRequest } from './isEligibleRequest.js'\nimport { processMultipart } from './processMultipart.js'\nimport { debugLog } from './utilities.js'\n\nconst DEFAULT_OPTIONS = {\n abortOnLimit: false,\n createParentPath: false,\n debug: false,\n fileHandler: false,\n limitHandler: false,\n parseNested: false,\n preserveExtension: false,\n responseOnLimit: 'File size limit has been reached',\n safeFileNames: false,\n tempFileDir: path.join(process.cwd(), 'tmp'),\n uploadTimeout: 60000,\n uriDecodeFileNames: false,\n useTempFiles: false,\n}\n\nexport type FileShape = {\n data: Buffer\n encoding: string\n md5: Buffer | string\n mimetype: string\n mv: (filePath: string, callback: () => void) => Promise<void> | void\n name: string\n size: number\n tempFilePath: string\n truncated: boolean\n}\n\nexport type FetchAPIFileUploadOptions = {\n /**\n * Returns a HTTP 413 when the file is bigger than the size limit if `true`.\n * Otherwise, it will add a `truncated = true` to the resulting file structure.\n * @default false\n */\n abortOnLimit?: boolean | undefined\n /**\n * Automatically creates the directory path specified in `.mv(filePathName)`\n * @default false\n */\n createParentPath?: boolean | undefined\n /**\n * Turn on/off upload process logging. Can be useful for troubleshooting.\n * @default false\n */\n debug?: boolean | undefined\n /**\n * User defined limit handler which will be invoked if the file is bigger than configured limits.\n * @default false\n */\n limitHandler?: ((args: { request: Request; size: number }) => void) | boolean | undefined\n /**\n * By default, `req.body` and `req.files` are flattened like this:\n * `{'name': 'John', 'hobbies[0]': 'Cinema', 'hobbies[1]': 'Bike'}\n *\n * When this option is enabled they are parsed in order to be nested like this:\n * `{'name': 'John', 'hobbies': ['Cinema', 'Bike']}`\n * @default false\n */\n parseNested?: boolean | undefined\n /**\n * Preserves filename extension when using `safeFileNames` option.\n * If set to `true`, will default to an extension length of `3`.\n * If set to `number`, this will be the max allowable extension length.\n * If an extension is smaller than the extension length, it remains untouched. If the extension is longer,\n * it is shifted.\n * @default false\n *\n * @example\n * // true\n * app.use(fileUpload({ safeFileNames: true, preserveExtension: true }));\n * // myFileName.ext --> myFileName.ext\n *\n * @example\n * // max extension length 2, extension shifted\n * app.use(fileUpload({ safeFileNames: true, preserveExtension: 2 }));\n * // myFileName.ext --> myFileNamee.xt\n */\n preserveExtension?: boolean | number | undefined\n /**\n * Response which will be send to client if file size limit exceeded when `abortOnLimit` set to `true`.\n * @default 'File size limit has been reached'\n */\n responseOnLimit?: string | undefined\n /**\n * Strips characters from the upload's filename.\n * You can use custom regex to determine what to strip.\n * If set to `true`, non-alphanumeric characters _except_ dashes and underscores will be stripped.\n * This option is off by default.\n * @default false\n *\n * @example\n * // strip slashes from file names\n * app.use(fileUpload({ safeFileNames: /\\\\/g }))\n *\n * @example\n * app.use(fileUpload({ safeFileNames: true }))\n */\n safeFileNames?: RegExp | boolean | undefined\n /**\n * Path to store temporary files.\n * Used along with the `useTempFiles` option. By default this module uses `'tmp'` folder\n * in the current working directory.\n * You can use trailing slash, but it is not necessary.\n * @default './tmp'\n */\n tempFileDir?: string | undefined\n /**\n * This defines how long to wait for data before aborting. Set to `0` if you want to turn off timeout checks.\n * @default 60_000\n */\n uploadTimeout?: number | undefined\n /**\n * Applies uri decoding to file names if set `true`.\n * @default false\n */\n uriDecodeFileNames?: boolean | undefined\n /**\n * By default this module uploads files into RAM.\n * Setting this option to `true` turns on using temporary files instead of utilising RAM.\n * This avoids memory overflow issues when uploading large files or in case of uploading\n * lots of files at same time.\n * @default false\n */\n useTempFiles?: boolean | undefined\n} & Partial<BusboyConfig>\n\ntype FetchAPIFileUploadResponseFile = {\n data: Buffer\n mimetype: string\n name: string\n size: number\n tempFilePath?: string\n}\n\nexport type FetchAPIFileUploadResponse = {\n error?: APIError\n fields: Record<string, string>\n files: Record<string, FetchAPIFileUploadResponseFile>\n}\n\ntype FetchAPIFileUpload = (args: {\n options?: FetchAPIFileUploadOptions\n request: Request\n}) => Promise<FetchAPIFileUploadResponse>\nexport const fetchAPIFileUpload: FetchAPIFileUpload = async ({ options, request }) => {\n const uploadOptions: FetchAPIFileUploadOptions = { ...DEFAULT_OPTIONS, ...options }\n if (!isEligibleRequest(request)) {\n debugLog(uploadOptions, 'Request is not eligible for file upload!')\n return {\n error: new APIError('Request is not eligible for file upload', 500),\n fields: undefined,\n files: undefined,\n }\n } else {\n return processMultipart({ options: uploadOptions, request })\n }\n}\n"],"names":["path","APIError","isEligibleRequest","processMultipart","debugLog","DEFAULT_OPTIONS","abortOnLimit","createParentPath","debug","fileHandler","limitHandler","parseNested","preserveExtension","responseOnLimit","safeFileNames","tempFileDir","join","process","cwd","uploadTimeout","uriDecodeFileNames","useTempFiles","fetchAPIFileUpload","options","request","uploadOptions","error","fields","undefined","files"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAOA,UAAU,OAAM;AACvB,SAASC,QAAQ,QAAQ,UAAS;AAElC,SAASC,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,gBAAgB,QAAQ,wBAAuB;AACxD,SAASC,QAAQ,QAAQ,iBAAgB;AAEzC,MAAMC,kBAAkB;IACtBC,cAAc;IACdC,kBAAkB;IAClBC,OAAO;IACPC,aAAa;IACbC,cAAc;IACdC,aAAa;IACbC,mBAAmB;IACnBC,iBAAiB;IACjBC,eAAe;IACfC,aAAaf,KAAKgB,IAAI,CAACC,QAAQC,GAAG,IAAI;IACtCC,eAAe;IACfC,oBAAoB;IACpBC,cAAc;AAChB;AAkIA,OAAO,MAAMC,qBAAyC,OAAO,EAAEC,OAAO,EAAEC,OAAO,EAAE;IAC/E,MAAMC,gBAA2C;QAAE,GAAGpB,eAAe;QAAE,GAAGkB,OAAO;IAAC;IAClF,IAAI,CAACrB,kBAAkBsB,UAAU;QAC/BpB,SAASqB,eAAe;QACxB,OAAO;YACLC,OAAO,IAAIzB,SAAS,2CAA2C;YAC/D0B,QAAQC;YACRC,OAAOD;QACT;IACF,OAAO;QACL,OAAOzB,iBAAiB;YAAEoB,SAASE;YAAeD;QAAQ;IAC5D;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/fetchAPI-multipart/index.ts"],"sourcesContent":["import type { BusboyConfig } from 'busboy'\n\nimport path from 'path'\nimport { APIError } from 'payload'\n\nimport { isEligibleRequest } from './isEligibleRequest.js'\nimport { processMultipart } from './processMultipart.js'\nimport { debugLog } from './utilities.js'\n\nconst DEFAULT_OPTIONS = {\n abortOnLimit: false,\n createParentPath: false,\n debug: false,\n fileHandler: false,\n limitHandler: false,\n parseNested: false,\n preserveExtension: false,\n responseOnLimit: 'File size limit has been reached',\n safeFileNames: false,\n tempFileDir: path.join(process.cwd(), 'tmp'),\n uploadTimeout: 60000,\n uriDecodeFileNames: false,\n useTempFiles: false,\n}\n\nexport type FileShape = {\n data: Buffer\n encoding: string\n md5: Buffer | string\n mimetype: string\n mv: (filePath: string, callback: () => void) => Promise<void> | void\n name: string\n size: number\n tempFilePath: string\n truncated: boolean\n}\n\nexport type FetchAPIFileUploadOptions = {\n /**\n * Returns a HTTP 413 when the file is bigger than the size limit if `true`.\n * Otherwise, it will add a `truncated = true` to the resulting file structure.\n * @default false\n */\n abortOnLimit?: boolean | undefined\n /**\n * Automatically creates the directory path specified in `.mv(filePathName)`\n * @default false\n */\n createParentPath?: boolean | undefined\n /**\n * Turn on/off upload process logging. Can be useful for troubleshooting.\n * @default false\n */\n debug?: boolean | undefined\n /**\n * User defined limit handler which will be invoked if the file is bigger than configured limits.\n * @default false\n */\n limitHandler?: ((args: { request: Request; size: number }) => void) | boolean | undefined\n /**\n * By default, `req.body` and `req.files` are flattened like this:\n * `{'name': 'John', 'hobbies[0]': 'Cinema', 'hobbies[1]': 'Bike'}\n *\n * When this option is enabled they are parsed in order to be nested like this:\n * `{'name': 'John', 'hobbies': ['Cinema', 'Bike']}`\n * @default false\n */\n parseNested?: boolean | undefined\n /**\n * Preserves filename extension when using `safeFileNames` option.\n * If set to `true`, will default to an extension length of `3`.\n * If set to `number`, this will be the max allowable extension length.\n * If an extension is smaller than the extension length, it remains untouched. If the extension is longer,\n * it is shifted.\n * @default false\n *\n * @example\n * // true\n * app.use(fileUpload({ safeFileNames: true, preserveExtension: true }));\n * // myFileName.ext --> myFileName.ext\n *\n * @example\n * // max extension length 2, extension shifted\n * app.use(fileUpload({ safeFileNames: true, preserveExtension: 2 }));\n * // myFileName.ext --> myFileNamee.xt\n */\n preserveExtension?: boolean | number | undefined\n /**\n * Response which will be send to client if file size limit exceeded when `abortOnLimit` set to `true`.\n * @default 'File size limit has been reached'\n */\n responseOnLimit?: string | undefined\n /**\n * Strips characters from the upload's filename.\n * You can use custom regex to determine what to strip.\n * If set to `true`, non-alphanumeric characters _except_ dashes and underscores will be stripped.\n * This option is off by default.\n * @default false\n *\n * @example\n * // strip slashes from file names\n * app.use(fileUpload({ safeFileNames: /\\\\/g }))\n *\n * @example\n * app.use(fileUpload({ safeFileNames: true }))\n */\n safeFileNames?: RegExp | boolean | undefined\n /**\n * Path to store temporary files.\n * Used along with the `useTempFiles` option. By default this module uses `'tmp'` folder\n * in the current working directory.\n * You can use trailing slash, but it is not necessary.\n * @default './tmp'\n */\n tempFileDir?: string | undefined\n /**\n * This defines how long to wait for data before aborting. Set to `0` if you want to turn off timeout checks.\n * @default 60_000\n */\n uploadTimeout?: number | undefined\n /**\n * Applies uri decoding to file names if set `true`.\n * @default false\n */\n uriDecodeFileNames?: boolean | undefined\n /**\n * By default this module uploads files into RAM.\n * Setting this option to `true` turns on using temporary files instead of utilising RAM.\n * This avoids memory overflow issues when uploading large files or in case of uploading\n * lots of files at same time.\n * @default false\n */\n useTempFiles?: boolean | undefined\n} & Partial<BusboyConfig>\n\ntype FetchAPIFileUploadResponseFile = {\n data: Buffer\n mimetype: string\n name: string\n size: number\n tempFilePath?: string\n}\n\nexport type FetchAPIFileUploadResponse = {\n error?: APIError\n fields: Record<string, string>\n files: Record<string, FetchAPIFileUploadResponseFile>\n}\n\ntype FetchAPIFileUpload = (args: {\n options?: FetchAPIFileUploadOptions\n request: Request\n}) => Promise<FetchAPIFileUploadResponse>\nexport const fetchAPIFileUpload: FetchAPIFileUpload = async ({ options, request }) => {\n const uploadOptions: FetchAPIFileUploadOptions = { ...DEFAULT_OPTIONS, ...options }\n if (!isEligibleRequest(request)) {\n debugLog(uploadOptions, 'Request is not eligible for file upload!')\n return {\n error: new APIError('Request is not eligible for file upload', 500),\n fields: undefined,\n files: undefined,\n }\n } else {\n return processMultipart({ options: uploadOptions, request })\n }\n}\n"],"names":["path","APIError","isEligibleRequest","processMultipart","debugLog","DEFAULT_OPTIONS","abortOnLimit","createParentPath","debug","fileHandler","limitHandler","parseNested","preserveExtension","responseOnLimit","safeFileNames","tempFileDir","join","process","cwd","uploadTimeout","uriDecodeFileNames","useTempFiles","fetchAPIFileUpload","options","request","uploadOptions","error","fields","undefined","files"],"mappings":"AAEA,OAAOA,UAAU,OAAM;AACvB,SAASC,QAAQ,QAAQ,UAAS;AAElC,SAASC,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,gBAAgB,QAAQ,wBAAuB;AACxD,SAASC,QAAQ,QAAQ,iBAAgB;AAEzC,MAAMC,kBAAkB;IACtBC,cAAc;IACdC,kBAAkB;IAClBC,OAAO;IACPC,aAAa;IACbC,cAAc;IACdC,aAAa;IACbC,mBAAmB;IACnBC,iBAAiB;IACjBC,eAAe;IACfC,aAAaf,KAAKgB,IAAI,CAACC,QAAQC,GAAG,IAAI;IACtCC,eAAe;IACfC,oBAAoB;IACpBC,cAAc;AAChB;AAkIA,OAAO,MAAMC,qBAAyC,OAAO,EAAEC,OAAO,EAAEC,OAAO,EAAE;IAC/E,MAAMC,gBAA2C;QAAE,GAAGpB,eAAe;QAAE,GAAGkB,OAAO;IAAC;IAClF,IAAI,CAACrB,kBAAkBsB,UAAU;QAC/BpB,SAASqB,eAAe;QACxB,OAAO;YACLC,OAAO,IAAIzB,SAAS,2CAA2C;YAC/D0B,QAAQC;YACRC,OAAOD;QACT;IACF,OAAO;QACL,OAAOzB,iBAAiB;YAAEoB,SAASE;YAAeD;QAAQ;IAC5D;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"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"],"names":["ACCEPTABLE_CONTENT_TYPE","UNACCEPTABLE_METHODS","Set","hasBody","req","Boolean","headers","get","hasAcceptableMethod","has","method","hasAcceptableContentType","contType","includes","test","isEligibleRequest","e"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,MAAMA,0BAA0B;AAChC,MAAMC,uBAAuB,IAAIC,IAAI;IAAC;IAAO;IAAQ;IAAU;IAAW;IAAW;CAAQ;AAE7F,MAAMC,UAAU,CAACC;IACf,OAAOC,QACLD,IAAIE,OAAO,CAACC,GAAG,CAAC,wBACbH,IAAIE,OAAO,CAACC,GAAG,CAAC,qBAAqBH,IAAIE,OAAO,CAACC,GAAG,CAAC,sBAAsB;AAElF;AAEA,MAAMC,sBAAsB,CAACJ,MAA0B,CAACH,qBAAqBQ,GAAG,CAACL,IAAIM,MAAM;AAE3F,MAAMC,2BAA2B,CAACP;IAChC,MAAMQ,WAAWR,IAAIE,OAAO,CAACC,GAAG,CAAC;IACjC,OAAOK,SAASC,QAAQ,CAAC,gBAAgBb,wBAAwBc,IAAI,CAACF;AACxE;AAEA,OAAO,MAAMG,oBAAoB,CAACX;IAChC,IAAI;QACF,OAAOD,QAAQC,QAAQI,oBAAoBJ,QAAQO,yBAAyBP;IAC9E,EAAE,OAAOY,GAAG;QACV,OAAO;IACT;AACF,EAAC"}
1
+ {"version":3,"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"],"names":["ACCEPTABLE_CONTENT_TYPE","UNACCEPTABLE_METHODS","Set","hasBody","req","Boolean","headers","get","hasAcceptableMethod","has","method","hasAcceptableContentType","contType","includes","test","isEligibleRequest","e"],"mappings":"AAAA,MAAMA,0BAA0B;AAChC,MAAMC,uBAAuB,IAAIC,IAAI;IAAC;IAAO;IAAQ;IAAU;IAAW;IAAW;CAAQ;AAE7F,MAAMC,UAAU,CAACC;IACf,OAAOC,QACLD,IAAIE,OAAO,CAACC,GAAG,CAAC,wBACbH,IAAIE,OAAO,CAACC,GAAG,CAAC,qBAAqBH,IAAIE,OAAO,CAACC,GAAG,CAAC,sBAAsB;AAElF;AAEA,MAAMC,sBAAsB,CAACJ,MAA0B,CAACH,qBAAqBQ,GAAG,CAACL,IAAIM,MAAM;AAE3F,MAAMC,2BAA2B,CAACP;IAChC,MAAMQ,WAAWR,IAAIE,OAAO,CAACC,GAAG,CAAC;IACjC,OAAOK,SAASC,QAAQ,CAAC,gBAAgBb,wBAAwBc,IAAI,CAACF;AACxE;AAEA,OAAO,MAAMG,oBAAoB,CAACX;IAChC,IAAI;QACF,OAAOD,QAAQC,QAAQI,oBAAoBJ,QAAQO,yBAAyBP;IAC9E,EAAE,OAAOY,GAAG;QACV,OAAO;IACT;AACF,EAAC"}
@@ -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"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
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 +1 @@
1
- {"version":3,"sources":["../../src/fetchAPI-multipart/processNested.ts"],"sourcesContent":["import { isSafeFromPollution } from './utilities.js'\n\nexport const processNested = function (data) {\n if (!data || data.length < 1) return Object.create(null)\n\n const d = Object.create(null),\n keys = Object.keys(data)\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i],\n value = data[key],\n keyParts = key.replace(new RegExp(/\\[/g), '.').replace(new RegExp(/\\]/g), '').split('.')\n let current = d\n\n for (let index = 0; index < keyParts.length; index++) {\n const k = keyParts[index]\n\n // Ensure we don't allow prototype pollution\n if (!isSafeFromPollution(current, k)) {\n continue\n }\n\n if (index >= keyParts.length - 1) {\n current[k] = value\n } else {\n if (!current[k]) current[k] = !keyParts[index + 1] ? [] : Object.create(null)\n current = current[k]\n }\n }\n }\n return d\n}\n"],"names":["isSafeFromPollution","processNested","data","length","Object","create","d","keys","i","key","value","keyParts","replace","RegExp","split","current","index","k"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,mBAAmB,QAAQ,iBAAgB;AAEpD,OAAO,MAAMC,gBAAgB,SAAUC,IAAI;IACzC,IAAI,CAACA,QAAQA,KAAKC,MAAM,GAAG,GAAG,OAAOC,OAAOC,MAAM,CAAC;IAEnD,MAAMC,IAAIF,OAAOC,MAAM,CAAC,OACtBE,OAAOH,OAAOG,IAAI,CAACL;IAErB,IAAK,IAAIM,IAAI,GAAGA,IAAID,KAAKJ,MAAM,EAAEK,IAAK;QACpC,MAAMC,MAAMF,IAAI,CAACC,EAAE,EACjBE,QAAQR,IAAI,CAACO,IAAI,EACjBE,WAAWF,IAAIG,OAAO,CAAC,IAAIC,OAAO,QAAQ,KAAKD,OAAO,CAAC,IAAIC,OAAO,QAAQ,IAAIC,KAAK,CAAC;QACtF,IAAIC,UAAUT;QAEd,IAAK,IAAIU,QAAQ,GAAGA,QAAQL,SAASR,MAAM,EAAEa,QAAS;YACpD,MAAMC,IAAIN,QAAQ,CAACK,MAAM;YAEzB,4CAA4C;YAC5C,IAAI,CAAChB,oBAAoBe,SAASE,IAAI;gBACpC;YACF;YAEA,IAAID,SAASL,SAASR,MAAM,GAAG,GAAG;gBAChCY,OAAO,CAACE,EAAE,GAAGP;YACf,OAAO;gBACL,IAAI,CAACK,OAAO,CAACE,EAAE,EAAEF,OAAO,CAACE,EAAE,GAAG,CAACN,QAAQ,CAACK,QAAQ,EAAE,GAAG,EAAE,GAAGZ,OAAOC,MAAM,CAAC;gBACxEU,UAAUA,OAAO,CAACE,EAAE;YACtB;QACF;IACF;IACA,OAAOX;AACT,EAAC"}
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 +1 @@
1
- {"version":3,"sources":["../../src/fetchAPI-multipart/uploadTimer.ts"],"sourcesContent":["type CreateUploadTimer = (\n timeout?: number,\n callback?: () => void,\n) => {\n clear: () => void\n set: () => boolean\n}\n\nexport const createUploadTimer: CreateUploadTimer = (timeout = 0, callback = () => {}) => {\n let timer = null\n\n const clear = () => {\n clearTimeout(timer)\n }\n\n const set = () => {\n // Do not start a timer if zero timeout or it hasn't been set.\n if (!timeout) return false\n clear()\n timer = setTimeout(callback, timeout)\n return true\n }\n\n return { clear, set }\n}\n"],"names":["createUploadTimer","timeout","callback","timer","clear","clearTimeout","set","setTimeout"],"rangeMappings":";;;;;;;;;;;;;;;;","mappings":"AAQA,OAAO,MAAMA,oBAAuC,CAACC,UAAU,CAAC,EAAEC,WAAW,KAAO,CAAC;IACnF,IAAIC,QAAQ;IAEZ,MAAMC,QAAQ;QACZC,aAAaF;IACf;IAEA,MAAMG,MAAM;QACV,8DAA8D;QAC9D,IAAI,CAACL,SAAS,OAAO;QACrBG;QACAD,QAAQI,WAAWL,UAAUD;QAC7B,OAAO;IACT;IAEA,OAAO;QAAEG;QAAOE;IAAI;AACtB,EAAC"}
1
+ {"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 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/utilities.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAW3D;;GAEG;AACH,eAAO,MAAM,QAAQ,YAAa,yBAAyB,OAAO,MAAM,YAKvE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,YAAY,MAAM,WAG7C,CAAA;AAED,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;AACvC,eAAO,MAAM,MAAM,UAAW,GAAG,sBAEhC,CAAA;AAQD;;;GAGG;AACH,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;AAClG,eAAO,MAAM,eAAe,EAAE,eAU7B,CAAA;AAOD;;GAEG;AACH,KAAK,mBAAmB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;AAC9D,eAAO,MAAM,mBAAmB,EAAE,mBAQjC,CAAA;AAED;;GAEG;AACH,KAAK,WAAW,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AACpE,eAAO,MAAM,WAAW,EAAE,WAoBzB,CAAA;AAED;;;GAGG;AACH,KAAK,eAAe,GAAG,CAAC,iBAAiB,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;AAClG,eAAO,MAAM,eAAe,EAAE,eAQ7B,CAAA;AAED;;GAEG;AACH,KAAK,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,CAAA;AAC3E,eAAO,MAAM,UAAU,EAAE,UACM,CAAA;AA4B/B;;;GAGG;AACH,KAAK,QAAQ,GAAG,CACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,KAC9C,IAAI,CAAA;AACT,eAAO,MAAM,QAAQ,EAAE,QASnB,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,oDAwB5B,CAAA;AA+BD;;GAEG;AACH,KAAK,sBAAsB,GAAG,CAC5B,iBAAiB,EAAE,OAAO,GAAG,MAAM,EACnC,QAAQ,EAAE,MAAM,KACb;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AACD,eAAO,MAAM,sBAAsB,EAAE,sBAwBpC,CAAA;AAED;;GAEG;AACH,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;AAClF,eAAO,MAAM,aAAa,EAAE,aAoB3B,CAAA"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/utilities.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAW3D;;GAEG;AACH,eAAO,MAAM,QAAQ,YAAa,yBAAyB,OAAO,MAAM,YAKvE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,YAAY,MAAM,WAG7C,CAAA;AAED,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;AACvC,eAAO,MAAM,MAAM,UAAW,GAAG,KAAG,KAAK,IAAI,QAE5C,CAAA;AAQD;;;GAGG;AACH,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;AAClG,eAAO,MAAM,eAAe,EAAE,eAU7B,CAAA;AAOD;;GAEG;AACH,KAAK,mBAAmB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;AAC9D,eAAO,MAAM,mBAAmB,EAAE,mBAQjC,CAAA;AAED;;GAEG;AACH,KAAK,WAAW,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AACpE,eAAO,MAAM,WAAW,EAAE,WAoBzB,CAAA;AAED;;;GAGG;AACH,KAAK,eAAe,GAAG,CAAC,iBAAiB,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;AAClG,eAAO,MAAM,eAAe,EAAE,eAQ7B,CAAA;AAED;;GAEG;AACH,KAAK,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,CAAA;AAC3E,eAAO,MAAM,UAAU,EAAE,UACM,CAAA;AA4B/B;;;GAGG;AACH,KAAK,QAAQ,GAAG,CACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,KAC9C,IAAI,CAAA;AACT,eAAO,MAAM,QAAQ,EAAE,QASnB,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,oDAwB5B,CAAA;AA+BD;;GAEG;AACH,KAAK,sBAAsB,GAAG,CAC5B,iBAAiB,EAAE,OAAO,GAAG,MAAM,EACnC,QAAQ,EAAE,MAAM,KACb;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AACD,eAAO,MAAM,sBAAsB,EAAE,sBAwBpC,CAAA;AAED;;GAEG;AACH,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;AAClF,eAAO,MAAM,aAAa,EAAE,aAoB3B,CAAA"}