@payloadcms/next 3.0.0-beta.127 → 3.0.0-beta.129
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/withPayload.cjs +10 -0
- package/dist/cjs/withPayload.cjs.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.js +13 -15
- package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/index.js +9 -14
- package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +13 -28
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
- package/dist/elements/DocumentHeader/index.d.ts +0 -1
- package/dist/elements/DocumentHeader/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/index.js +9 -12
- package/dist/elements/DocumentHeader/index.js.map +1 -1
- package/dist/elements/Logo/index.d.ts.map +1 -1
- package/dist/elements/Logo/index.js +5 -6
- package/dist/elements/Logo/index.js.map +1 -1
- package/dist/elements/Nav/index.client.d.ts +4 -1
- package/dist/elements/Nav/index.client.d.ts.map +1 -1
- package/dist/elements/Nav/index.client.js +40 -95
- package/dist/elements/Nav/index.client.js.map +1 -1
- package/dist/elements/Nav/index.d.ts.map +1 -1
- package/dist/elements/Nav/index.js +60 -23
- package/dist/elements/Nav/index.js.map +1 -1
- package/dist/exports/layouts.d.ts +1 -0
- package/dist/exports/layouts.d.ts.map +1 -1
- package/dist/exports/layouts.js +1 -0
- package/dist/exports/layouts.js.map +1 -1
- package/dist/exports/utilities.d.ts.map +1 -1
- package/dist/exports/utilities.js +1 -0
- package/dist/exports/utilities.js.map +1 -1
- package/dist/exports/views.d.ts +0 -2
- package/dist/exports/views.d.ts.map +1 -1
- package/dist/exports/views.js +0 -2
- package/dist/exports/views.js.map +1 -1
- package/dist/fetchAPI-multipart/isEligibleRequest.js +1 -1
- package/dist/fetchAPI-multipart/isEligibleRequest.js.map +1 -1
- package/dist/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
- package/dist/fetchAPI-multipart/processMultipart.js +9 -11
- package/dist/fetchAPI-multipart/processMultipart.js.map +1 -1
- package/dist/layouts/Root/NestProviders.d.ts +11 -0
- package/dist/layouts/Root/NestProviders.d.ts.map +1 -0
- package/dist/layouts/Root/NestProviders.js +21 -0
- package/dist/layouts/Root/NestProviders.js.map +1 -0
- package/dist/layouts/Root/index.d.ts +3 -2
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +14 -18
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/prod/styles.css +1 -1
- package/dist/routes/rest/index.d.ts.map +1 -1
- package/dist/routes/rest/index.js +0 -10
- package/dist/routes/rest/index.js.map +1 -1
- package/dist/routes/rest/og/image.d.ts +4 -2
- package/dist/routes/rest/og/image.d.ts.map +1 -1
- package/dist/routes/rest/og/image.js +7 -3
- package/dist/routes/rest/og/image.js.map +1 -1
- package/dist/routes/rest/og/index.d.ts.map +1 -1
- package/dist/routes/rest/og/index.js +5 -8
- package/dist/routes/rest/og/index.js.map +1 -1
- package/dist/routes/rest/routeError.d.ts.map +1 -1
- package/dist/routes/rest/routeError.js +1 -47
- package/dist/routes/rest/routeError.js.map +1 -1
- package/dist/templates/Default/index.d.ts +2 -1
- package/dist/templates/Default/index.d.ts.map +1 -1
- package/dist/templates/Default/index.js +97 -41
- package/dist/templates/Default/index.js.map +1 -1
- package/dist/utilities/getClientConfig.d.ts +7 -0
- package/dist/utilities/getClientConfig.d.ts.map +1 -0
- package/dist/utilities/getClientConfig.js +14 -0
- package/dist/utilities/getClientConfig.js.map +1 -0
- package/dist/utilities/handleServerFunctions.d.ts +3 -0
- package/dist/utilities/handleServerFunctions.d.ts.map +1 -0
- package/dist/utilities/handleServerFunctions.js +35 -0
- package/dist/utilities/handleServerFunctions.js.map +1 -0
- package/dist/utilities/initPage/handleAdminPage.d.ts +2 -1
- package/dist/utilities/initPage/handleAdminPage.d.ts.map +1 -1
- package/dist/utilities/initPage/handleAdminPage.js +9 -1
- package/dist/utilities/initPage/handleAdminPage.js.map +1 -1
- package/dist/utilities/initPage/index.d.ts.map +1 -1
- package/dist/utilities/initPage/index.js +2 -1
- package/dist/utilities/initPage/index.js.map +1 -1
- package/dist/utilities/initReq.d.ts +1 -1
- package/dist/utilities/initReq.d.ts.map +1 -1
- package/dist/utilities/initReq.js +3 -2
- package/dist/utilities/initReq.js.map +1 -1
- package/dist/views/API/LocaleSelector/index.d.ts.map +1 -1
- package/dist/views/API/LocaleSelector/index.js +0 -1
- package/dist/views/API/LocaleSelector/index.js.map +1 -1
- package/dist/views/API/index.client.d.ts.map +1 -1
- package/dist/views/API/index.client.js +10 -13
- package/dist/views/API/index.client.js.map +1 -1
- package/dist/views/Account/Settings/index.js +0 -1
- package/dist/views/Account/Settings/index.js.map +1 -1
- package/dist/views/Account/index.d.ts.map +1 -1
- package/dist/views/Account/index.js +81 -24
- package/dist/views/Account/index.js.map +1 -1
- package/dist/views/CreateFirstUser/index.client.d.ts +3 -1
- package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
- package/dist/views/CreateFirstUser/index.client.js +83 -109
- package/dist/views/CreateFirstUser/index.client.js.map +1 -1
- package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
- package/dist/views/CreateFirstUser/index.js +36 -4
- package/dist/views/CreateFirstUser/index.js.map +1 -1
- package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/index.js +46 -44
- package/dist/views/Dashboard/Default/index.js.map +1 -1
- package/dist/views/Dashboard/index.d.ts.map +1 -1
- package/dist/views/Dashboard/index.js +22 -21
- package/dist/views/Dashboard/index.js.map +1 -1
- package/dist/views/Document/getDocPreferences.d.ts +11 -0
- package/dist/views/Document/getDocPreferences.d.ts.map +1 -0
- package/dist/views/Document/getDocPreferences.js +44 -0
- package/dist/views/Document/getDocPreferences.js.map +1 -0
- package/dist/views/Document/getDocumentData.d.ts +10 -11
- package/dist/views/Document/getDocumentData.d.ts.map +1 -1
- package/dist/views/Document/getDocumentData.js +35 -47
- package/dist/views/Document/getDocumentData.js.map +1 -1
- package/dist/views/Document/getIsLocked.d.ts +16 -0
- package/dist/views/Document/getIsLocked.d.ts.map +1 -0
- package/dist/views/Document/getIsLocked.js +55 -0
- package/dist/views/Document/getIsLocked.js.map +1 -0
- package/dist/views/Document/getVersions.d.ts +19 -0
- package/dist/views/Document/getVersions.d.ts.map +1 -0
- package/dist/views/Document/getVersions.js +181 -0
- package/dist/views/Document/getVersions.js.map +1 -0
- package/dist/views/Document/getViewsFromConfig.d.ts +1 -1
- package/dist/views/Document/getViewsFromConfig.d.ts.map +1 -1
- package/dist/views/Document/getViewsFromConfig.js +18 -19
- package/dist/views/Document/getViewsFromConfig.js.map +1 -1
- package/dist/views/Document/handleServerFunction.d.ts +24 -0
- package/dist/views/Document/handleServerFunction.d.ts.map +1 -0
- package/dist/views/Document/handleServerFunction.js +156 -0
- package/dist/views/Document/handleServerFunction.js.map +1 -0
- package/dist/views/Document/index.d.ts +5 -1
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +181 -72
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/Document/renderDocumentSlots.d.ts +12 -0
- package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -0
- package/dist/views/Document/renderDocumentSlots.js +92 -0
- package/dist/views/Document/renderDocumentSlots.js.map +1 -0
- package/dist/views/Edit/index.d.ts +3 -2
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +7 -3
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +3 -1
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
- package/dist/views/List/handleServerFunction.d.ts +26 -0
- package/dist/views/List/handleServerFunction.d.ts.map +1 -0
- package/dist/views/List/handleServerFunction.js +155 -0
- package/dist/views/List/handleServerFunction.js.map +1 -0
- package/dist/views/List/index.d.ts +12 -2
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +121 -81
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/List/renderListViewSlots.d.ts +8 -0
- package/dist/views/List/renderListViewSlots.d.ts.map +1 -0
- package/dist/views/List/renderListViewSlots.js +44 -0
- package/dist/views/List/renderListViewSlots.js.map +1 -0
- package/dist/views/LivePreview/Context/sizeReducer.d.ts +1 -1
- package/dist/views/LivePreview/Context/sizeReducer.d.ts.map +1 -1
- package/dist/views/LivePreview/Context/sizeReducer.js +4 -4
- package/dist/views/LivePreview/Context/sizeReducer.js.map +1 -1
- package/dist/views/LivePreview/index.client.d.ts.map +1 -1
- package/dist/views/LivePreview/index.client.js +38 -35
- package/dist/views/LivePreview/index.client.js.map +1 -1
- package/dist/views/Login/LoginField/index.d.ts.map +1 -1
- package/dist/views/Login/LoginField/index.js +3 -1
- package/dist/views/Login/LoginField/index.js.map +1 -1
- package/dist/views/Login/index.d.ts.map +1 -1
- package/dist/views/Login/index.js +25 -19
- package/dist/views/Login/index.js.map +1 -1
- package/dist/views/ResetPassword/ResetPasswordForm/index.d.ts.map +1 -1
- package/dist/views/ResetPassword/ResetPasswordForm/index.js +24 -10
- package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
- package/dist/views/Root/getViewFromConfig.d.ts +3 -1
- package/dist/views/Root/getViewFromConfig.d.ts.map +1 -1
- package/dist/views/Root/getViewFromConfig.js +128 -7
- package/dist/views/Root/getViewFromConfig.js.map +1 -1
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +22 -11
- package/dist/views/Root/index.js.map +1 -1
- package/dist/views/Version/Default/index.d.ts.map +1 -1
- package/dist/views/Version/Default/index.js +2 -4
- package/dist/views/Version/Default/index.js.map +1 -1
- package/dist/views/Versions/buildColumns.d.ts +3 -2
- package/dist/views/Versions/buildColumns.d.ts.map +1 -1
- package/dist/views/Versions/buildColumns.js +33 -61
- package/dist/views/Versions/buildColumns.js.map +1 -1
- package/dist/views/Versions/cells/AutosaveCell/index.d.ts +7 -0
- package/dist/views/Versions/cells/AutosaveCell/index.d.ts.map +1 -1
- package/dist/views/Versions/cells/AutosaveCell/index.js +48 -37
- package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
- package/dist/views/Versions/cells/CreatedAt/index.d.ts +4 -0
- package/dist/views/Versions/cells/CreatedAt/index.d.ts.map +1 -1
- package/dist/views/Versions/cells/CreatedAt/index.js +43 -45
- package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
- package/dist/views/Versions/cells/ID/index.d.ts +3 -1
- package/dist/views/Versions/cells/ID/index.d.ts.map +1 -1
- package/dist/views/Versions/cells/ID/index.js +7 -19
- package/dist/views/Versions/cells/ID/index.js.map +1 -1
- package/dist/views/Versions/index.client.d.ts.map +1 -1
- package/dist/views/Versions/index.client.js +53 -51
- package/dist/views/Versions/index.client.js.map +1 -1
- package/dist/views/Versions/index.d.ts.map +1 -1
- package/dist/views/Versions/index.js +3 -2
- package/dist/views/Versions/index.js.map +1 -1
- package/dist/withPayload.d.ts.map +1 -1
- package/dist/withPayload.js +10 -0
- package/dist/withPayload.js.map +1 -1
- package/license.md +22 -0
- package/package.json +16 -7
- package/dist/elements/DocumentLocked/index.d.ts +0 -12
- package/dist/elements/DocumentLocked/index.d.ts.map +0 -1
- package/dist/elements/DocumentLocked/index.js +0 -152
- package/dist/elements/DocumentLocked/index.js.map +0 -1
- package/dist/elements/DocumentLocked/index.scss +0 -40
- package/dist/elements/DocumentTakeOver/index.d.ts +0 -8
- package/dist/elements/DocumentTakeOver/index.d.ts.map +0 -1
- package/dist/elements/DocumentTakeOver/index.js +0 -98
- package/dist/elements/DocumentTakeOver/index.js.map +0 -1
- package/dist/elements/DocumentTakeOver/index.scss +0 -39
- package/dist/elements/EmailAndUsername/index.d.ts +0 -14
- package/dist/elements/EmailAndUsername/index.d.ts.map +0 -1
- package/dist/elements/EmailAndUsername/index.js +0 -121
- package/dist/elements/EmailAndUsername/index.js.map +0 -1
- package/dist/elements/LeaveWithoutSaving/index.d.ts +0 -4
- package/dist/elements/LeaveWithoutSaving/index.d.ts.map +0 -1
- package/dist/elements/LeaveWithoutSaving/index.js +0 -162
- package/dist/elements/LeaveWithoutSaving/index.js.map +0 -1
- package/dist/elements/LeaveWithoutSaving/index.scss +0 -39
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts +0 -9
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +0 -1
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +0 -136
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +0 -1
- package/dist/routes/rest/buildFormState.d.ts +0 -5
- package/dist/routes/rest/buildFormState.d.ts.map +0 -1
- package/dist/routes/rest/buildFormState.js +0 -46
- package/dist/routes/rest/buildFormState.js.map +0 -1
- package/dist/views/Edit/Default/Auth/APIKey.d.ts +0 -6
- package/dist/views/Edit/Default/Auth/APIKey.d.ts.map +0 -1
- package/dist/views/Edit/Default/Auth/APIKey.js +0 -125
- package/dist/views/Edit/Default/Auth/APIKey.js.map +0 -1
- package/dist/views/Edit/Default/Auth/index.d.ts +0 -5
- package/dist/views/Edit/Default/Auth/index.d.ts.map +0 -1
- package/dist/views/Edit/Default/Auth/index.js +0 -318
- package/dist/views/Edit/Default/Auth/index.js.map +0 -1
- package/dist/views/Edit/Default/Auth/index.scss +0 -78
- package/dist/views/Edit/Default/Auth/types.d.ts +0 -17
- package/dist/views/Edit/Default/Auth/types.d.ts.map +0 -1
- package/dist/views/Edit/Default/Auth/types.js +0 -2
- package/dist/views/Edit/Default/Auth/types.js.map +0 -1
- package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts +0 -11
- package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts.map +0 -1
- package/dist/views/Edit/Default/SetDocumentStepNav/index.js +0 -130
- package/dist/views/Edit/Default/SetDocumentStepNav/index.js.map +0 -1
- package/dist/views/Edit/Default/SetDocumentTitle/index.d.ts +0 -8
- package/dist/views/Edit/Default/SetDocumentTitle/index.d.ts.map +0 -1
- package/dist/views/Edit/Default/SetDocumentTitle/index.js +0 -81
- package/dist/views/Edit/Default/SetDocumentTitle/index.js.map +0 -1
- package/dist/views/Edit/Default/index.d.ts +0 -4
- package/dist/views/Edit/Default/index.d.ts.map +0 -1
- package/dist/views/Edit/Default/index.js +0 -349
- package/dist/views/Edit/Default/index.js.map +0 -1
- package/dist/views/Edit/Default/index.scss +0 -23
- package/dist/views/Edit/Default/types.d.ts +0 -6
- package/dist/views/Edit/Default/types.d.ts.map +0 -1
- package/dist/views/Edit/Default/types.js +0 -2
- package/dist/views/Edit/Default/types.js.map +0 -1
- package/dist/views/Edit/index.client.d.ts +0 -3
- package/dist/views/Edit/index.client.d.ts.map +0 -1
- package/dist/views/Edit/index.client.js +0 -54
- package/dist/views/Edit/index.client.js.map +0 -1
- package/dist/views/List/Default/index.d.ts +0 -4
- package/dist/views/List/Default/index.d.ts.map +0 -1
- package/dist/views/List/Default/index.js +0 -387
- package/dist/views/List/Default/index.js.map +0 -1
- package/dist/views/List/Default/index.scss +0 -179
- package/dist/views/List/Default/types.d.ts +0 -15
- package/dist/views/List/Default/types.d.ts.map +0 -1
- package/dist/views/List/Default/types.js +0 -2
- package/dist/views/List/Default/types.js.map +0 -1
|
@@ -3,103 +3,65 @@
|
|
|
3
3
|
import { c as _c } from "react/compiler-runtime";
|
|
4
4
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
5
|
import { getTranslation } from '@payloadcms/translations';
|
|
6
|
-
import { NavGroup,
|
|
7
|
-
import { EntityType, formatAdminURL
|
|
6
|
+
import { NavGroup, useConfig, useNav, useTranslation } from '@payloadcms/ui';
|
|
7
|
+
import { EntityType, formatAdminURL } from '@payloadcms/ui/shared';
|
|
8
8
|
import LinkWithDefault from 'next/link.js';
|
|
9
9
|
import { usePathname } from 'next/navigation.js';
|
|
10
10
|
import React, { Fragment } from 'react';
|
|
11
11
|
const baseClass = 'nav';
|
|
12
|
-
export const DefaultNavClient =
|
|
13
|
-
const $ = _c(
|
|
12
|
+
export const DefaultNavClient = t0 => {
|
|
13
|
+
const $ = _c(11);
|
|
14
14
|
const {
|
|
15
|
-
|
|
16
|
-
} =
|
|
17
|
-
const {
|
|
18
|
-
isEntityVisible
|
|
19
|
-
} = useEntityVisibility();
|
|
15
|
+
groups
|
|
16
|
+
} = t0;
|
|
20
17
|
const pathname = usePathname();
|
|
21
18
|
const {
|
|
22
|
-
config:
|
|
19
|
+
config: t1
|
|
23
20
|
} = useConfig();
|
|
24
21
|
const {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
routes: t1
|
|
28
|
-
} = t0;
|
|
22
|
+
routes: t2
|
|
23
|
+
} = t1;
|
|
29
24
|
const {
|
|
30
25
|
admin: adminRoute
|
|
31
|
-
} =
|
|
26
|
+
} = t2;
|
|
32
27
|
const {
|
|
33
28
|
i18n
|
|
34
29
|
} = useTranslation();
|
|
35
30
|
const {
|
|
36
31
|
navOpen
|
|
37
32
|
} = useNav();
|
|
38
|
-
let
|
|
39
|
-
if ($[0] !==
|
|
40
|
-
let t3;
|
|
41
|
-
if ($[9] !== isEntityVisible) {
|
|
42
|
-
t3 = t4 => {
|
|
43
|
-
const {
|
|
44
|
-
slug
|
|
45
|
-
} = t4;
|
|
46
|
-
return isEntityVisible({
|
|
47
|
-
collectionSlug: slug
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
$[9] = isEntityVisible;
|
|
51
|
-
$[10] = t3;
|
|
52
|
-
} else {
|
|
53
|
-
t3 = $[10];
|
|
54
|
-
}
|
|
33
|
+
let t3;
|
|
34
|
+
if ($[0] !== adminRoute || $[1] !== pathname || $[2] !== navOpen || $[3] !== i18n || $[4] !== groups) {
|
|
55
35
|
let t4;
|
|
56
|
-
if ($[
|
|
57
|
-
t4 = t5 => {
|
|
58
|
-
const {
|
|
59
|
-
slug: slug_0
|
|
60
|
-
} = t5;
|
|
61
|
-
return isEntityVisible({
|
|
62
|
-
globalSlug: slug_0
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
|
-
$[11] = isEntityVisible;
|
|
66
|
-
$[12] = t4;
|
|
67
|
-
} else {
|
|
68
|
-
t4 = $[12];
|
|
69
|
-
}
|
|
70
|
-
const groups = groupNavItems([...collections.filter(t3).map(_temp), ...globals.filter(t4).map(_temp2)], permissions, i18n);
|
|
71
|
-
let t5;
|
|
72
|
-
if ($[13] !== adminRoute || $[14] !== i18n || $[15] !== pathname || $[16] !== navOpen) {
|
|
73
|
-
t5 = (t6, key) => {
|
|
36
|
+
if ($[6] !== adminRoute || $[7] !== pathname || $[8] !== navOpen || $[9] !== i18n) {
|
|
37
|
+
t4 = (t5, key) => {
|
|
74
38
|
const {
|
|
75
39
|
entities,
|
|
76
40
|
label
|
|
77
|
-
} =
|
|
41
|
+
} = t5;
|
|
78
42
|
return _jsx(NavGroup, {
|
|
79
43
|
label,
|
|
80
|
-
children: entities.map((
|
|
44
|
+
children: entities.map((t6, i) => {
|
|
81
45
|
const {
|
|
46
|
+
slug,
|
|
82
47
|
type,
|
|
83
|
-
|
|
84
|
-
} =
|
|
85
|
-
let entityLabel;
|
|
48
|
+
label: label_0
|
|
49
|
+
} = t6;
|
|
86
50
|
let href;
|
|
87
51
|
let id;
|
|
88
52
|
if (type === EntityType.collection) {
|
|
89
53
|
href = formatAdminURL({
|
|
90
54
|
adminRoute,
|
|
91
|
-
path: `/collections/${
|
|
55
|
+
path: `/collections/${slug}`
|
|
92
56
|
});
|
|
93
|
-
|
|
94
|
-
id = `nav-${entity.slug}`;
|
|
57
|
+
id = `nav-${slug}`;
|
|
95
58
|
}
|
|
96
59
|
if (type === EntityType.global) {
|
|
97
60
|
href = formatAdminURL({
|
|
98
61
|
adminRoute,
|
|
99
|
-
path: `/globals/${
|
|
62
|
+
path: `/globals/${slug}`
|
|
100
63
|
});
|
|
101
|
-
|
|
102
|
-
id = `nav-global-${entity.slug}`;
|
|
64
|
+
id = `nav-global-${slug}`;
|
|
103
65
|
}
|
|
104
66
|
const Link = LinkWithDefault.default || LinkWithDefault;
|
|
105
67
|
const LinkElement = Link || "a";
|
|
@@ -114,49 +76,32 @@ export const DefaultNavClient = () => {
|
|
|
114
76
|
className: `${baseClass}__link-indicator`
|
|
115
77
|
}), _jsx("span", {
|
|
116
78
|
className: `${baseClass}__link-label`,
|
|
117
|
-
children:
|
|
79
|
+
children: getTranslation(label_0, i18n)
|
|
118
80
|
})]
|
|
119
81
|
}, i);
|
|
120
82
|
})
|
|
121
83
|
}, key);
|
|
122
84
|
};
|
|
123
|
-
$[
|
|
124
|
-
$[
|
|
125
|
-
$[
|
|
126
|
-
$[
|
|
127
|
-
$[
|
|
85
|
+
$[6] = adminRoute;
|
|
86
|
+
$[7] = pathname;
|
|
87
|
+
$[8] = navOpen;
|
|
88
|
+
$[9] = i18n;
|
|
89
|
+
$[10] = t4;
|
|
128
90
|
} else {
|
|
129
|
-
|
|
91
|
+
t4 = $[10];
|
|
130
92
|
}
|
|
131
|
-
|
|
132
|
-
children: groups.map(
|
|
93
|
+
t3 = _jsx(Fragment, {
|
|
94
|
+
children: groups.map(t4)
|
|
133
95
|
});
|
|
134
|
-
$[0] =
|
|
135
|
-
$[1] =
|
|
136
|
-
$[2] =
|
|
137
|
-
$[3] =
|
|
138
|
-
$[4] =
|
|
139
|
-
$[5] =
|
|
140
|
-
$[6] = pathname;
|
|
141
|
-
$[7] = navOpen;
|
|
142
|
-
$[8] = t2;
|
|
96
|
+
$[0] = adminRoute;
|
|
97
|
+
$[1] = pathname;
|
|
98
|
+
$[2] = navOpen;
|
|
99
|
+
$[3] = i18n;
|
|
100
|
+
$[4] = groups;
|
|
101
|
+
$[5] = t3;
|
|
143
102
|
} else {
|
|
144
|
-
|
|
103
|
+
t3 = $[5];
|
|
145
104
|
}
|
|
146
|
-
return
|
|
105
|
+
return t3;
|
|
147
106
|
};
|
|
148
|
-
function _temp(collection) {
|
|
149
|
-
const entityToGroup = {
|
|
150
|
-
type: EntityType.collection,
|
|
151
|
-
entity: collection
|
|
152
|
-
};
|
|
153
|
-
return entityToGroup;
|
|
154
|
-
}
|
|
155
|
-
function _temp2(global) {
|
|
156
|
-
const entityToGroup_0 = {
|
|
157
|
-
type: EntityType.global,
|
|
158
|
-
entity: global
|
|
159
|
-
};
|
|
160
|
-
return entityToGroup_0;
|
|
161
|
-
}
|
|
162
107
|
//# sourceMappingURL=index.client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.client.js","names":["c","_c","getTranslation","NavGroup","
|
|
1
|
+
{"version":3,"file":"index.client.js","names":["c","_c","getTranslation","NavGroup","useConfig","useNav","useTranslation","EntityType","formatAdminURL","LinkWithDefault","usePathname","React","Fragment","baseClass","DefaultNavClient","t0","$","groups","pathname","config","t1","routes","t2","admin","adminRoute","i18n","navOpen","t3","t4","t5","key","entities","label","_jsx","children","map","t6","i","slug","type","label_0","href","id","collection","global","Link","default","LinkElement","activeCollection","startsWith","undefined","includes","length","_jsxs","className","filter","Boolean","join","prefetch","tabIndex"],"sources":["../../../src/elements/Nav/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { groupNavItems } from '@payloadcms/ui/shared'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { NavGroup, useConfig, useNav, useTranslation } from '@payloadcms/ui'\nimport { EntityType, formatAdminURL } from '@payloadcms/ui/shared'\nimport LinkWithDefault from 'next/link.js'\nimport { usePathname } from 'next/navigation.js'\nimport React, { Fragment } from 'react'\n\nconst baseClass = 'nav'\n\nexport const DefaultNavClient: React.FC<{\n groups: ReturnType<typeof groupNavItems>\n}> = ({ groups }) => {\n const pathname = usePathname()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n const { navOpen } = useNav()\n\n return (\n <Fragment>\n {groups.map(({ entities, label }, key) => {\n return (\n <NavGroup key={key} label={label}>\n {entities.map(({ slug, type, label }, i) => {\n let href: string\n let id: string\n\n if (type === EntityType.collection) {\n href = formatAdminURL({ adminRoute, path: `/collections/${slug}` })\n id = `nav-${slug}`\n }\n\n if (type === EntityType.global) {\n href = formatAdminURL({ adminRoute, path: `/globals/${slug}` })\n id = `nav-global-${slug}`\n }\n\n const Link = (LinkWithDefault.default ||\n LinkWithDefault) as typeof LinkWithDefault.default\n\n const LinkElement = Link || 'a'\n const activeCollection =\n pathname.startsWith(href) && ['/', undefined].includes(pathname[href.length])\n\n return (\n <LinkElement\n className={[`${baseClass}__link`, activeCollection && `active`]\n .filter(Boolean)\n .join(' ')}\n href={href}\n id={id}\n key={i}\n prefetch={Link ? false : undefined}\n tabIndex={!navOpen ? -1 : undefined}\n >\n {activeCollection && <div className={`${baseClass}__link-indicator`} />}\n <span className={`${baseClass}__link-label`}>{getTranslation(label, i18n)}</span>\n </LinkElement>\n )\n })}\n </NavGroup>\n )\n })}\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Nav/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Nav/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,cAAc,CAAA;AAQrB,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAA;AAElC,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CA8FzC,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Logout } from '@payloadcms/ui';
|
|
3
|
-
import {
|
|
3
|
+
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
|
|
4
|
+
import { EntityType, groupNavItems } from '@payloadcms/ui/shared';
|
|
4
5
|
import React from 'react';
|
|
5
6
|
import { NavHamburger } from './NavHamburger/index.js';
|
|
6
7
|
import { NavWrapper } from './NavWrapper/index.js';
|
|
@@ -14,7 +15,8 @@ export const DefaultNav = props => {
|
|
|
14
15
|
payload,
|
|
15
16
|
permissions,
|
|
16
17
|
searchParams,
|
|
17
|
-
user
|
|
18
|
+
user,
|
|
19
|
+
visibleEntities
|
|
18
20
|
} = props;
|
|
19
21
|
if (!payload?.config) {
|
|
20
22
|
return null;
|
|
@@ -23,35 +25,70 @@ export const DefaultNav = props => {
|
|
|
23
25
|
admin: {
|
|
24
26
|
components: {
|
|
25
27
|
afterNavLinks,
|
|
26
|
-
beforeNavLinks
|
|
28
|
+
beforeNavLinks,
|
|
29
|
+
logout
|
|
27
30
|
}
|
|
28
|
-
}
|
|
31
|
+
},
|
|
32
|
+
collections,
|
|
33
|
+
globals
|
|
29
34
|
} = payload.config;
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
});
|
|
42
|
-
const mappedBeforeNavLinks = createMappedComponent(beforeNavLinks, undefined, undefined, 'beforeNavLinks');
|
|
43
|
-
const mappedAfterNavLinks = createMappedComponent(afterNavLinks, undefined, undefined, 'afterNavLinks');
|
|
35
|
+
const groups = groupNavItems([...collections.filter(({
|
|
36
|
+
slug
|
|
37
|
+
}) => visibleEntities.collections.includes(slug)).map(collection => ({
|
|
38
|
+
type: EntityType.collection,
|
|
39
|
+
entity: collection
|
|
40
|
+
})), ...globals.filter(({
|
|
41
|
+
slug
|
|
42
|
+
}) => visibleEntities.globals.includes(slug)).map(global => ({
|
|
43
|
+
type: EntityType.global,
|
|
44
|
+
entity: global
|
|
45
|
+
}))], permissions, i18n);
|
|
44
46
|
return /*#__PURE__*/_jsxs(NavWrapper, {
|
|
45
47
|
baseClass: baseClass,
|
|
46
48
|
children: [/*#__PURE__*/_jsxs("nav", {
|
|
47
49
|
className: `${baseClass}__wrap`,
|
|
48
|
-
children: [/*#__PURE__*/_jsx(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
children: [/*#__PURE__*/_jsx(RenderServerComponent, {
|
|
51
|
+
Component: beforeNavLinks,
|
|
52
|
+
importMap: payload.importMap,
|
|
53
|
+
serverProps: {
|
|
54
|
+
i18n,
|
|
55
|
+
locale,
|
|
56
|
+
params,
|
|
57
|
+
payload,
|
|
58
|
+
permissions,
|
|
59
|
+
searchParams,
|
|
60
|
+
user
|
|
61
|
+
}
|
|
62
|
+
}), /*#__PURE__*/_jsx(DefaultNavClient, {
|
|
63
|
+
groups: groups
|
|
64
|
+
}), /*#__PURE__*/_jsx(RenderServerComponent, {
|
|
65
|
+
Component: afterNavLinks,
|
|
66
|
+
importMap: payload.importMap,
|
|
67
|
+
serverProps: {
|
|
68
|
+
i18n,
|
|
69
|
+
locale,
|
|
70
|
+
params,
|
|
71
|
+
payload,
|
|
72
|
+
permissions,
|
|
73
|
+
searchParams,
|
|
74
|
+
user
|
|
75
|
+
}
|
|
52
76
|
}), /*#__PURE__*/_jsx("div", {
|
|
53
77
|
className: `${baseClass}__controls`,
|
|
54
|
-
children: /*#__PURE__*/_jsx(
|
|
78
|
+
children: /*#__PURE__*/_jsx(RenderServerComponent, {
|
|
79
|
+
Component: logout?.Button,
|
|
80
|
+
Fallback: Logout,
|
|
81
|
+
importMap: payload.importMap,
|
|
82
|
+
serverProps: {
|
|
83
|
+
i18n,
|
|
84
|
+
locale,
|
|
85
|
+
params,
|
|
86
|
+
payload,
|
|
87
|
+
permissions,
|
|
88
|
+
searchParams,
|
|
89
|
+
user
|
|
90
|
+
}
|
|
91
|
+
})
|
|
55
92
|
})]
|
|
56
93
|
}), /*#__PURE__*/_jsx("div", {
|
|
57
94
|
className: `${baseClass}__header`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Logout","
|
|
1
|
+
{"version":3,"file":"index.js","names":["Logout","RenderServerComponent","EntityType","groupNavItems","React","NavHamburger","NavWrapper","baseClass","DefaultNavClient","DefaultNav","props","i18n","locale","params","payload","permissions","searchParams","user","visibleEntities","config","admin","components","afterNavLinks","beforeNavLinks","logout","collections","globals","groups","filter","slug","includes","map","collection","type","entity","global","_jsxs","className","_jsx","Component","importMap","serverProps","Button","Fallback"],"sources":["../../../src/elements/Nav/index.tsx"],"sourcesContent":["import type { EntityToGroup } from '@payloadcms/ui/shared'\nimport type { ServerProps } from 'payload'\n\nimport { Logout } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { EntityType, groupNavItems } from '@payloadcms/ui/shared'\nimport React from 'react'\n\nimport './index.scss'\nimport { NavHamburger } from './NavHamburger/index.js'\nimport { NavWrapper } from './NavWrapper/index.js'\n\nconst baseClass = 'nav'\n\nimport { DefaultNavClient } from './index.client.js'\n\nexport type NavProps = ServerProps\n\nexport const DefaultNav: React.FC<NavProps> = (props) => {\n const { i18n, locale, params, payload, permissions, searchParams, user, visibleEntities } = props\n\n if (!payload?.config) {\n return null\n }\n\n const {\n admin: {\n components: { afterNavLinks, beforeNavLinks, logout },\n },\n collections,\n globals,\n } = payload.config\n\n const groups = groupNavItems(\n [\n ...collections\n .filter(({ slug }) => visibleEntities.collections.includes(slug))\n .map(\n (collection) =>\n ({\n type: EntityType.collection,\n entity: collection,\n }) satisfies EntityToGroup,\n ),\n ...globals\n .filter(({ slug }) => visibleEntities.globals.includes(slug))\n .map(\n (global) =>\n ({\n type: EntityType.global,\n entity: global,\n }) satisfies EntityToGroup,\n ),\n ],\n permissions,\n i18n,\n )\n\n return (\n <NavWrapper baseClass={baseClass}>\n <nav className={`${baseClass}__wrap`}>\n <RenderServerComponent\n Component={beforeNavLinks}\n importMap={payload.importMap}\n serverProps={{\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }}\n />\n <DefaultNavClient groups={groups} />\n <RenderServerComponent\n Component={afterNavLinks}\n importMap={payload.importMap}\n serverProps={{\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }}\n />\n <div className={`${baseClass}__controls`}>\n <RenderServerComponent\n Component={logout?.Button}\n Fallback={Logout}\n importMap={payload.importMap}\n serverProps={{\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }}\n />\n </div>\n </nav>\n <div className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-content`}>\n <NavHamburger baseClass={baseClass} />\n </div>\n </div>\n </NavWrapper>\n )\n}\n"],"mappings":";AAGA,SAASA,MAAM,QAAQ;AACvB,SAASC,qBAAqB,QAAQ;AACtC,SAASC,UAAU,EAAEC,aAAa,QAAQ;AAC1C,OAAOC,KAAA,MAAW;AAGlB,SAASC,YAAY,QAAQ;AAC7B,SAASC,UAAU,QAAQ;AAE3B,MAAMC,SAAA,GAAY;AAElB,SAASC,gBAAgB,QAAQ;AAIjC,OAAO,MAAMC,UAAA,GAAkCC,KAAA;EAC7C,MAAM;IAAEC,IAAI;IAAEC,MAAM;IAAEC,MAAM;IAAEC,OAAO;IAAEC,WAAW;IAAEC,YAAY;IAAEC,IAAI;IAAEC;EAAe,CAAE,GAAGR,KAAA;EAE5F,IAAI,CAACI,OAAA,EAASK,MAAA,EAAQ;IACpB,OAAO;EACT;EAEA,MAAM;IACJC,KAAA,EAAO;MACLC,UAAA,EAAY;QAAEC,aAAa;QAAEC,cAAc;QAAEC;MAAM;IAAE,CACtD;IACDC,WAAW;IACXC;EAAO,CACR,GAAGZ,OAAA,CAAQK,MAAM;EAElB,MAAMQ,MAAA,GAASxB,aAAA,CACb,C,GACKsB,WAAA,CACAG,MAAM,CAAC,CAAC;IAAEC;EAAI,CAAE,KAAKX,eAAA,CAAgBO,WAAW,CAACK,QAAQ,CAACD,IAAA,GAC1DE,GAAG,CACDC,UAAA,KACE;IACCC,IAAA,EAAM/B,UAAA,CAAW8B,UAAU;IAC3BE,MAAA,EAAQF;EACV,K,GAEHN,OAAA,CACAE,MAAM,CAAC,CAAC;IAAEC;EAAI,CAAE,KAAKX,eAAA,CAAgBQ,OAAO,CAACI,QAAQ,CAACD,IAAA,GACtDE,GAAG,CACDI,MAAA,KACE;IACCF,IAAA,EAAM/B,UAAA,CAAWiC,MAAM;IACvBD,MAAA,EAAQC;EACV,IAEP,EACDpB,WAAA,EACAJ,IAAA;EAGF,oBACEyB,KAAA,CAAC9B,UAAA;IAAWC,SAAA,EAAWA,SAAA;4BACrB6B,KAAA,CAAC;MAAIC,SAAA,EAAW,GAAG9B,SAAA,QAAiB;8BAClC+B,IAAA,CAACrC,qBAAA;QACCsC,SAAA,EAAWhB,cAAA;QACXiB,SAAA,EAAW1B,OAAA,CAAQ0B,SAAS;QAC5BC,WAAA,EAAa;UACX9B,IAAA;UACAC,MAAA;UACAC,MAAA;UACAC,OAAA;UACAC,WAAA;UACAC,YAAA;UACAC;QACF;uBAEFqB,IAAA,CAAC9B,gBAAA;QAAiBmB,MAAA,EAAQA;uBAC1BW,IAAA,CAACrC,qBAAA;QACCsC,SAAA,EAAWjB,aAAA;QACXkB,SAAA,EAAW1B,OAAA,CAAQ0B,SAAS;QAC5BC,WAAA,EAAa;UACX9B,IAAA;UACAC,MAAA;UACAC,MAAA;UACAC,OAAA;UACAC,WAAA;UACAC,YAAA;UACAC;QACF;uBAEFqB,IAAA,CAAC;QAAID,SAAA,EAAW,GAAG9B,SAAA,YAAqB;kBACtC,aAAA+B,IAAA,CAACrC,qBAAA;UACCsC,SAAA,EAAWf,MAAA,EAAQkB,MAAA;UACnBC,QAAA,EAAU3C,MAAA;UACVwC,SAAA,EAAW1B,OAAA,CAAQ0B,SAAS;UAC5BC,WAAA,EAAa;YACX9B,IAAA;YACAC,MAAA;YACAC,MAAA;YACAC,OAAA;YACAC,WAAA;YACAC,YAAA;YACAC;UACF;;;qBAINqB,IAAA,CAAC;MAAID,SAAA,EAAW,GAAG9B,SAAA,UAAmB;gBACpC,aAAA+B,IAAA,CAAC;QAAID,SAAA,EAAW,GAAG9B,SAAA,kBAA2B;kBAC5C,aAAA+B,IAAA,CAACjC,YAAA;UAAaE,SAAA,EAAWA;;;;;AAKnC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../src/exports/layouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA"}
|
|
1
|
+
{"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../src/exports/layouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA"}
|
package/dist/exports/layouts.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layouts.js","names":["metadata","RootLayout"],"sources":["../../src/exports/layouts.ts"],"sourcesContent":["export { metadata, RootLayout } from '../layouts/Root/index.js'\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,UAAU,QAAQ","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"layouts.js","names":["metadata","RootLayout","handleServerFunctions"],"sources":["../../src/exports/layouts.ts"],"sourcesContent":["export { metadata, RootLayout } from '../layouts/Root/index.js'\nexport { handleServerFunctions } from '../utilities/handleServerFunctions.js'\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,UAAU,QAAQ;AACrC,SAASC,qBAAqB,QAAQ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/exports/utilities.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/exports/utilities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAA;AACjF,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// NOTICE: Server-only utilities, do not import anything client-side here.
|
|
1
2
|
export { addDataAndFileToRequest } from '../utilities/addDataAndFileToRequest.js';
|
|
2
3
|
export { addLocalesToRequestFromData, sanitizeLocales } from '../utilities/addLocalesToRequest.js';
|
|
3
4
|
export { createPayloadRequest } from '../utilities/createPayloadRequest.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","names":["addDataAndFileToRequest","addLocalesToRequestFromData","sanitizeLocales","createPayloadRequest","getNextRequestI18n","getPayloadHMR","reload","headersWithCors","mergeHeaders"],"sources":["../../src/exports/utilities.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"utilities.js","names":["addDataAndFileToRequest","addLocalesToRequestFromData","sanitizeLocales","createPayloadRequest","getNextRequestI18n","getPayloadHMR","reload","headersWithCors","mergeHeaders"],"sources":["../../src/exports/utilities.ts"],"sourcesContent":["// NOTICE: Server-only utilities, do not import anything client-side here.\nexport { addDataAndFileToRequest } from '../utilities/addDataAndFileToRequest.js'\nexport { addLocalesToRequestFromData, sanitizeLocales } from '../utilities/addLocalesToRequest.js'\nexport { createPayloadRequest } from '../utilities/createPayloadRequest.js'\nexport { getNextRequestI18n } from '../utilities/getNextRequestI18n.js'\nexport { getPayloadHMR, reload } from '../utilities/getPayloadHMR.js'\nexport { headersWithCors } from '../utilities/headersWithCors.js'\nexport { mergeHeaders } from '../utilities/mergeHeaders.js'\n"],"mappings":"AAAA;AACA,SAASA,uBAAuB,QAAQ;AACxC,SAASC,2BAA2B,EAAEC,eAAe,QAAQ;AAC7D,SAASC,oBAAoB,QAAQ;AACrC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,aAAa,EAAEC,MAAM,QAAQ;AACtC,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAQ","ignoreList":[]}
|
package/dist/exports/views.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export { DefaultEditView as EditView } from '../views/Edit/Default/index.js';
|
|
2
|
-
export { DefaultListView as ListView } from '../views/List/Default/index.js';
|
|
3
1
|
export { NotFoundPage } from '../views/NotFound/index.js';
|
|
4
2
|
export { generatePageMetadata, type GenerateViewMetadata, RootPage } from '../views/Root/index.js';
|
|
5
3
|
//# sourceMappingURL=views.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/exports/views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/exports/views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA"}
|
package/dist/exports/views.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export { DefaultEditView as EditView } from '../views/Edit/Default/index.js';
|
|
2
|
-
export { DefaultListView as ListView } from '../views/List/Default/index.js';
|
|
3
1
|
export { NotFoundPage } from '../views/NotFound/index.js';
|
|
4
2
|
export { generatePageMetadata, RootPage } from '../views/Root/index.js';
|
|
5
3
|
//# sourceMappingURL=views.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.js","names":["
|
|
1
|
+
{"version":3,"file":"views.js","names":["NotFoundPage","generatePageMetadata","RootPage"],"sources":["../../src/exports/views.ts"],"sourcesContent":["export { NotFoundPage } from '../views/NotFound/index.js'\nexport { generatePageMetadata, type GenerateViewMetadata, RootPage } from '../views/Root/index.js'\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ;AAC7B,SAASC,oBAAoB,EAA6BC,QAAQ,QAAQ","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const ACCEPTABLE_CONTENT_TYPE = /multipart\/['"()+-_]+(?:; ?['"()+-_]*)+$/i;
|
|
2
|
-
const UNACCEPTABLE_METHODS = new Set(['
|
|
2
|
+
const UNACCEPTABLE_METHODS = new Set(['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'TRACE']);
|
|
3
3
|
const hasBody = req => {
|
|
4
4
|
return Boolean(req.headers.get('transfer-encoding') || req.headers.get('content-length') && req.headers.get('content-length') !== '0');
|
|
5
5
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isEligibleRequest.js","names":["ACCEPTABLE_CONTENT_TYPE","UNACCEPTABLE_METHODS","Set","hasBody","req","Boolean","headers","get","hasAcceptableMethod","has","method","hasAcceptableContentType","contType","includes","test","isEligibleRequest","e"],"sources":["../../src/fetchAPI-multipart/isEligibleRequest.ts"],"sourcesContent":["const ACCEPTABLE_CONTENT_TYPE = /multipart\\/['\"()+-_]+(?:; ?['\"()+-_]*)+$/i\nconst UNACCEPTABLE_METHODS = new Set(['
|
|
1
|
+
{"version":3,"file":"isEligibleRequest.js","names":["ACCEPTABLE_CONTENT_TYPE","UNACCEPTABLE_METHODS","Set","hasBody","req","Boolean","headers","get","hasAcceptableMethod","has","method","hasAcceptableContentType","contType","includes","test","isEligibleRequest","e"],"sources":["../../src/fetchAPI-multipart/isEligibleRequest.ts"],"sourcesContent":["const ACCEPTABLE_CONTENT_TYPE = /multipart\\/['\"()+-_]+(?:; ?['\"()+-_]*)+$/i\nconst UNACCEPTABLE_METHODS = new Set(['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'TRACE'])\n\nconst hasBody = (req: Request): boolean => {\n return Boolean(\n req.headers.get('transfer-encoding') ||\n (req.headers.get('content-length') && req.headers.get('content-length') !== '0'),\n )\n}\n\nconst hasAcceptableMethod = (req: Request): boolean => !UNACCEPTABLE_METHODS.has(req.method)\n\nconst hasAcceptableContentType = (req: Request): boolean => {\n const contType = req.headers.get('content-type')\n return contType.includes('boundary=') && ACCEPTABLE_CONTENT_TYPE.test(contType)\n}\n\nexport const isEligibleRequest = (req: Request): boolean => {\n try {\n return hasBody(req) && hasAcceptableMethod(req) && hasAcceptableContentType(req)\n } catch (e) {\n return false\n }\n}\n"],"mappings":"AAAA,MAAMA,uBAAA,GAA0B;AAChC,MAAMC,oBAAA,GAAuB,IAAIC,GAAA,CAAI,CAAC,WAAW,UAAU,OAAO,QAAQ,WAAW,QAAQ;AAE7F,MAAMC,OAAA,GAAWC,GAAA;EACf,OAAOC,OAAA,CACLD,GAAA,CAAIE,OAAO,CAACC,GAAG,CAAC,wBACbH,GAAA,CAAIE,OAAO,CAACC,GAAG,CAAC,qBAAqBH,GAAA,CAAIE,OAAO,CAACC,GAAG,CAAC,sBAAsB;AAElF;AAEA,MAAMC,mBAAA,GAAuBJ,GAAA,IAA0B,CAACH,oBAAA,CAAqBQ,GAAG,CAACL,GAAA,CAAIM,MAAM;AAE3F,MAAMC,wBAAA,GAA4BP,GAAA;EAChC,MAAMQ,QAAA,GAAWR,GAAA,CAAIE,OAAO,CAACC,GAAG,CAAC;EACjC,OAAOK,QAAA,CAASC,QAAQ,CAAC,gBAAgBb,uBAAA,CAAwBc,IAAI,CAACF,QAAA;AACxE;AAEA,OAAO,MAAMG,iBAAA,GAAqBX,GAAA;EAChC,IAAI;IACF,OAAOD,OAAA,CAAQC,GAAA,KAAQI,mBAAA,CAAoBJ,GAAA,KAAQO,wBAAA,CAAyBP,GAAA;EAC9E,EAAE,OAAOY,CAAA,EAAG;IACV,OAAO;EACT;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processMultipart.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/processMultipart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAOxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAU5D,KAAK,gBAAgB,GAAG,CAAC,IAAI,EAAE;IAC7B,OAAO,EAAE,yBAAyB,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;CACjB,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAA;AACzC,eAAO,MAAM,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"processMultipart.d.ts","sourceRoot":"","sources":["../../src/fetchAPI-multipart/processMultipart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAOxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAU5D,KAAK,gBAAgB,GAAG,CAAC,IAAI,EAAE;IAC7B,OAAO,EAAE,yBAAyB,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;CACjB,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAA;AACzC,eAAO,MAAM,gBAAgB,EAAE,gBAmM9B,CAAA"}
|
|
@@ -12,6 +12,7 @@ export const processMultipart = async ({
|
|
|
12
12
|
request
|
|
13
13
|
}) => {
|
|
14
14
|
let parsingRequest = true;
|
|
15
|
+
let shouldAbortProccessing = false;
|
|
15
16
|
let fileCount = 0;
|
|
16
17
|
let filesCompleted = 0;
|
|
17
18
|
let allFilesHaveResolved;
|
|
@@ -28,15 +29,16 @@ export const processMultipart = async ({
|
|
|
28
29
|
request.headers.forEach((value, name) => {
|
|
29
30
|
headersObject[name] = value;
|
|
30
31
|
});
|
|
31
|
-
|
|
32
|
-
file.destroy();
|
|
33
|
-
parsingRequest = false;
|
|
34
|
-
failedResolvingFiles(err);
|
|
35
|
-
}
|
|
32
|
+
const reader = request.body.getReader();
|
|
36
33
|
const busboy = Busboy({
|
|
37
34
|
...options,
|
|
38
35
|
headers: headersObject
|
|
39
36
|
});
|
|
37
|
+
function abortAndDestroyFile(file, err) {
|
|
38
|
+
file.destroy();
|
|
39
|
+
shouldAbortProccessing = true;
|
|
40
|
+
failedResolvingFiles(err);
|
|
41
|
+
}
|
|
40
42
|
// Build multipart req.body fields
|
|
41
43
|
busboy.on('field', (field, val) => {
|
|
42
44
|
result.fields = buildFields(result.fields, field, val);
|
|
@@ -113,7 +115,7 @@ export const processMultipart = async ({
|
|
|
113
115
|
mimetype: mime,
|
|
114
116
|
size,
|
|
115
117
|
tempFilePath: getFilePath(),
|
|
116
|
-
truncated: Boolean('truncated' in file && file.truncated)
|
|
118
|
+
truncated: Boolean('truncated' in file && file.truncated) || false
|
|
117
119
|
}, options));
|
|
118
120
|
if (!request[waitFlushProperty]) {
|
|
119
121
|
request[waitFlushProperty] = [];
|
|
@@ -133,7 +135,6 @@ export const processMultipart = async ({
|
|
|
133
135
|
debugLog(options, `New upload started ${field}->${filename}, bytes:${getFileSize()}`);
|
|
134
136
|
uploadTimer.set();
|
|
135
137
|
});
|
|
136
|
-
// TODO: Valid eslint error - this will likely be a floating promise. Evaluate if we need to handle this differently.
|
|
137
138
|
busboy.on('finish', async () => {
|
|
138
139
|
debugLog(options, `Busboy finished parsing request.`);
|
|
139
140
|
if (options.parseNested) {
|
|
@@ -153,11 +154,8 @@ export const processMultipart = async ({
|
|
|
153
154
|
});
|
|
154
155
|
busboy.on('error', (err = new APIError('Busboy error parsing multipart request', httpStatus.BAD_REQUEST)) => {
|
|
155
156
|
debugLog(options, `Busboy error`);
|
|
156
|
-
parsingRequest = false;
|
|
157
157
|
throw err;
|
|
158
158
|
});
|
|
159
|
-
const reader = request.body.getReader();
|
|
160
|
-
// Start parsing request
|
|
161
159
|
while (parsingRequest) {
|
|
162
160
|
const {
|
|
163
161
|
done,
|
|
@@ -166,7 +164,7 @@ export const processMultipart = async ({
|
|
|
166
164
|
if (done) {
|
|
167
165
|
parsingRequest = false;
|
|
168
166
|
}
|
|
169
|
-
if (value) {
|
|
167
|
+
if (value && !shouldAbortProccessing) {
|
|
170
168
|
busboy.write(value);
|
|
171
169
|
}
|
|
172
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processMultipart.js","names":["Busboy","httpStatus","APIError","fileFactory","memHandler","tempFileHandler","processNested","createUploadTimer","buildFields","debugLog","isFunc","parseFileName","waitFlushProperty","Symbol","processMultipart","options","request","parsingRequest","fileCount","filesCompleted","allFilesHaveResolved","failedResolvingFiles","allFilesComplete","Promise","res","rej","result","fields","undefined","files","headersObject","headers","forEach","value","name","abortAndDestroyFile","file","err","destroy","busboy","on","field","val","info","encoding","filename","mimeType","mime","cleanup","complete","dataHandler","getFilePath","getFileSize","getHash","getWritePromise","useTempFiles","writePromise","catch","end","uploadTimer","uploadTimeout","clear","limitHandler","size","abortOnLimit","responseOnLimit","REQUEST_ENTITY_TOO_LARGE","data","set","buffer","hash","mimetype","tempFilePath","truncated","Boolean","push","message","parseNested","all","then","BAD_REQUEST","reader","body","getReader","done","read","write","e"],"sources":["../../src/fetchAPI-multipart/processMultipart.ts"],"sourcesContent":["import type { FetchAPIFileUploadOptions } from 'payload'\nimport type { Readable } from 'stream'\n\nimport Busboy from 'busboy'\nimport httpStatus from 'http-status'\nimport { APIError } from 'payload'\n\nimport type { FetchAPIFileUploadResponse } from './index.js'\n\nimport { fileFactory } from './fileFactory.js'\nimport { memHandler, tempFileHandler } from './handlers.js'\nimport { processNested } from './processNested.js'\nimport { createUploadTimer } from './uploadTimer.js'\nimport { buildFields, debugLog, isFunc, parseFileName } from './utilities.js'\n\nconst waitFlushProperty = Symbol('wait flush property symbol')\n\ntype ProcessMultipart = (args: {\n options: FetchAPIFileUploadOptions\n request: Request\n}) => Promise<FetchAPIFileUploadResponse>\nexport const processMultipart: ProcessMultipart = async ({ options, request }) => {\n let parsingRequest = true\n\n let fileCount = 0\n let filesCompleted = 0\n let allFilesHaveResolved: (value?: unknown) => void\n let failedResolvingFiles: (err: Error) => void\n\n const allFilesComplete = new Promise((res, rej) => {\n allFilesHaveResolved = res\n failedResolvingFiles = rej\n })\n\n const result: FetchAPIFileUploadResponse = {\n fields: undefined,\n files: undefined,\n }\n\n const headersObject = {}\n request.headers.forEach((value, name) => {\n headersObject[name] = value\n })\n\n function abortAndDestroyFile(file: Readable, err: APIError) {\n file.destroy()\n parsingRequest = false\n failedResolvingFiles(err)\n }\n\n const busboy = Busboy({ ...options, headers: headersObject })\n\n // Build multipart req.body fields\n busboy.on('field', (field, val) => {\n result.fields = buildFields(result.fields, field, val)\n })\n\n // Build req.files fields\n busboy.on('file', (field, file, info) => {\n fileCount += 1\n // Parse file name(cutting huge names, decoding, etc..).\n const { encoding, filename: name, mimeType: mime } = info\n const filename = parseFileName(options, name)\n\n // Define methods and handlers for upload process.\n const { cleanup, complete, dataHandler, getFilePath, getFileSize, getHash, getWritePromise } =\n options.useTempFiles\n ? tempFileHandler(options, field, filename) // Upload into temporary file.\n : memHandler(options, field, filename) // Upload into RAM.\n\n const writePromise = options.useTempFiles\n ? getWritePromise().catch((err) => {\n busboy.end()\n cleanup()\n })\n : getWritePromise()\n\n const uploadTimer = createUploadTimer(options.uploadTimeout, () => {\n return abortAndDestroyFile(\n file,\n new APIError(`Upload timeout for ${field}->${filename}, bytes:${getFileSize()}`),\n )\n })\n\n file.on('limit', () => {\n debugLog(options, `Size limit reached for ${field}->${filename}, bytes:${getFileSize()}`)\n uploadTimer.clear()\n\n if (isFunc(options.limitHandler)) {\n options.limitHandler({ request, size: getFileSize() })\n }\n\n // Return error and cleanup files if abortOnLimit set.\n if (options.abortOnLimit) {\n debugLog(options, `Upload file size limit reached ${field}->${filename}.`)\n cleanup()\n abortAndDestroyFile(\n file,\n new APIError(options.responseOnLimit, httpStatus.REQUEST_ENTITY_TOO_LARGE, {\n size: getFileSize(),\n }),\n )\n }\n })\n\n file.on('data', (data) => {\n uploadTimer.set()\n dataHandler(data)\n })\n\n file.on('end', () => {\n const size = getFileSize()\n debugLog(options, `Upload finished ${field}->${filename}, bytes:${size}`)\n uploadTimer.clear()\n\n if (!name && size === 0) {\n fileCount -= 1\n if (options.useTempFiles) {\n cleanup()\n debugLog(options, `Removing the empty file ${field}->${filename}`)\n }\n return debugLog(options, `Don't add file instance if original name and size are empty`)\n }\n\n filesCompleted += 1\n\n result.files = buildFields(\n result.files,\n field,\n fileFactory(\n {\n name: filename,\n buffer: complete(),\n encoding,\n hash: getHash(),\n mimetype: mime,\n size,\n tempFilePath: getFilePath(),\n truncated: Boolean('truncated' in file && file.truncated),\n },\n options,\n ),\n )\n\n if (!request[waitFlushProperty]) {\n request[waitFlushProperty] = []\n }\n request[waitFlushProperty].push(writePromise)\n\n if (filesCompleted === fileCount) {\n allFilesHaveResolved()\n }\n })\n\n file.on('error', (err) => {\n uploadTimer.clear()\n debugLog(options, `File Error: ${err.message}`)\n cleanup()\n failedResolvingFiles(err)\n })\n\n // Start upload process.\n debugLog(options, `New upload started ${field}->${filename}, bytes:${getFileSize()}`)\n uploadTimer.set()\n })\n\n // TODO: Valid eslint error - this will likely be a floating promise. Evaluate if we need to handle this differently.\n\n busboy.on('finish', async () => {\n debugLog(options, `Busboy finished parsing request.`)\n if (options.parseNested) {\n result.fields = processNested(result.fields)\n result.files = processNested(result.files)\n }\n\n if (request[waitFlushProperty]) {\n try {\n await Promise.all(request[waitFlushProperty]).then(() => {\n delete request[waitFlushProperty]\n })\n } catch (err) {\n debugLog(options, `Error waiting for file write promises: ${err}`)\n }\n }\n\n return result\n })\n\n busboy.on(\n 'error',\n (err = new APIError('Busboy error parsing multipart request', httpStatus.BAD_REQUEST)) => {\n debugLog(options, `Busboy error`)\n parsingRequest = false\n throw err\n },\n )\n\n const reader = request.body.getReader()\n\n // Start parsing request\n while (parsingRequest) {\n const { done, value } = await reader.read()\n\n if (done) {\n parsingRequest = false\n }\n\n if (value) {\n busboy.write(value)\n }\n }\n\n if (fileCount !== 0) {\n await allFilesComplete.catch((e) => {\n throw e\n })\n }\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"processMultipart.js","names":["Busboy","httpStatus","APIError","fileFactory","memHandler","tempFileHandler","processNested","createUploadTimer","buildFields","debugLog","isFunc","parseFileName","waitFlushProperty","Symbol","processMultipart","options","request","parsingRequest","shouldAbortProccessing","fileCount","filesCompleted","allFilesHaveResolved","failedResolvingFiles","allFilesComplete","Promise","res","rej","result","fields","undefined","files","headersObject","headers","forEach","value","name","reader","body","getReader","busboy","abortAndDestroyFile","file","err","destroy","on","field","val","info","encoding","filename","mimeType","mime","cleanup","complete","dataHandler","getFilePath","getFileSize","getHash","getWritePromise","useTempFiles","writePromise","catch","end","uploadTimer","uploadTimeout","clear","limitHandler","size","abortOnLimit","responseOnLimit","REQUEST_ENTITY_TOO_LARGE","data","set","buffer","hash","mimetype","tempFilePath","truncated","Boolean","push","message","parseNested","all","then","BAD_REQUEST","done","read","write","e"],"sources":["../../src/fetchAPI-multipart/processMultipart.ts"],"sourcesContent":["import type { FetchAPIFileUploadOptions } from 'payload'\nimport type { Readable } from 'stream'\n\nimport Busboy from 'busboy'\nimport httpStatus from 'http-status'\nimport { APIError } from 'payload'\n\nimport type { FetchAPIFileUploadResponse } from './index.js'\n\nimport { fileFactory } from './fileFactory.js'\nimport { memHandler, tempFileHandler } from './handlers.js'\nimport { processNested } from './processNested.js'\nimport { createUploadTimer } from './uploadTimer.js'\nimport { buildFields, debugLog, isFunc, parseFileName } from './utilities.js'\n\nconst waitFlushProperty = Symbol('wait flush property symbol')\n\ntype ProcessMultipart = (args: {\n options: FetchAPIFileUploadOptions\n request: Request\n}) => Promise<FetchAPIFileUploadResponse>\nexport const processMultipart: ProcessMultipart = async ({ options, request }) => {\n let parsingRequest = true\n\n let shouldAbortProccessing = false\n let fileCount = 0\n let filesCompleted = 0\n let allFilesHaveResolved: (value?: unknown) => void\n let failedResolvingFiles: (err: Error) => void\n\n const allFilesComplete = new Promise((res, rej) => {\n allFilesHaveResolved = res\n failedResolvingFiles = rej\n })\n\n const result: FetchAPIFileUploadResponse = {\n fields: undefined,\n files: undefined,\n }\n\n const headersObject = {}\n request.headers.forEach((value, name) => {\n headersObject[name] = value\n })\n\n const reader = request.body.getReader()\n\n const busboy = Busboy({ ...options, headers: headersObject })\n\n function abortAndDestroyFile(file: Readable, err: APIError) {\n file.destroy()\n shouldAbortProccessing = true\n failedResolvingFiles(err)\n }\n\n // Build multipart req.body fields\n busboy.on('field', (field, val) => {\n result.fields = buildFields(result.fields, field, val)\n })\n\n // Build req.files fields\n busboy.on('file', (field, file, info) => {\n fileCount += 1\n // Parse file name(cutting huge names, decoding, etc..).\n const { encoding, filename: name, mimeType: mime } = info\n const filename = parseFileName(options, name)\n\n // Define methods and handlers for upload process.\n const { cleanup, complete, dataHandler, getFilePath, getFileSize, getHash, getWritePromise } =\n options.useTempFiles\n ? tempFileHandler(options, field, filename) // Upload into temporary file.\n : memHandler(options, field, filename) // Upload into RAM.\n\n const writePromise = options.useTempFiles\n ? getWritePromise().catch((err) => {\n busboy.end()\n cleanup()\n })\n : getWritePromise()\n\n const uploadTimer = createUploadTimer(options.uploadTimeout, () => {\n return abortAndDestroyFile(\n file,\n new APIError(`Upload timeout for ${field}->${filename}, bytes:${getFileSize()}`),\n )\n })\n\n file.on('limit', () => {\n debugLog(options, `Size limit reached for ${field}->${filename}, bytes:${getFileSize()}`)\n uploadTimer.clear()\n\n if (isFunc(options.limitHandler)) {\n options.limitHandler({ request, size: getFileSize() })\n }\n\n // Return error and cleanup files if abortOnLimit set.\n if (options.abortOnLimit) {\n debugLog(options, `Upload file size limit reached ${field}->${filename}.`)\n cleanup()\n abortAndDestroyFile(\n file,\n new APIError(options.responseOnLimit, httpStatus.REQUEST_ENTITY_TOO_LARGE, {\n size: getFileSize(),\n }),\n )\n }\n })\n\n file.on('data', (data) => {\n uploadTimer.set()\n dataHandler(data)\n })\n\n file.on('end', () => {\n const size = getFileSize()\n debugLog(options, `Upload finished ${field}->${filename}, bytes:${size}`)\n uploadTimer.clear()\n\n if (!name && size === 0) {\n fileCount -= 1\n if (options.useTempFiles) {\n cleanup()\n debugLog(options, `Removing the empty file ${field}->${filename}`)\n }\n return debugLog(options, `Don't add file instance if original name and size are empty`)\n }\n\n filesCompleted += 1\n\n result.files = buildFields(\n result.files,\n field,\n fileFactory(\n {\n name: filename,\n buffer: complete(),\n encoding,\n hash: getHash(),\n mimetype: mime,\n size,\n tempFilePath: getFilePath(),\n truncated: Boolean('truncated' in file && file.truncated) || false,\n },\n options,\n ),\n )\n\n if (!request[waitFlushProperty]) {\n request[waitFlushProperty] = []\n }\n request[waitFlushProperty].push(writePromise)\n\n if (filesCompleted === fileCount) {\n allFilesHaveResolved()\n }\n })\n\n file.on('error', (err) => {\n uploadTimer.clear()\n debugLog(options, `File Error: ${err.message}`)\n cleanup()\n failedResolvingFiles(err)\n })\n\n // Start upload process.\n debugLog(options, `New upload started ${field}->${filename}, bytes:${getFileSize()}`)\n uploadTimer.set()\n })\n\n busboy.on('finish', async () => {\n debugLog(options, `Busboy finished parsing request.`)\n if (options.parseNested) {\n result.fields = processNested(result.fields)\n result.files = processNested(result.files)\n }\n\n if (request[waitFlushProperty]) {\n try {\n await Promise.all(request[waitFlushProperty]).then(() => {\n delete request[waitFlushProperty]\n })\n } catch (err) {\n debugLog(options, `Error waiting for file write promises: ${err}`)\n }\n }\n\n return result\n })\n\n busboy.on(\n 'error',\n (err = new APIError('Busboy error parsing multipart request', httpStatus.BAD_REQUEST)) => {\n debugLog(options, `Busboy error`)\n throw err\n },\n )\n\n while (parsingRequest) {\n const { done, value } = await reader.read()\n\n if (done) {\n parsingRequest = false\n }\n\n if (value && !shouldAbortProccessing) {\n busboy.write(value)\n }\n }\n\n if (fileCount !== 0) {\n await allFilesComplete.catch((e) => {\n throw e\n })\n }\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
|