@payloadcms/next 3.0.0-canary.6041f49 → 3.0.0-canary.f1db24e
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 +36 -10
- package/dist/cjs/withPayload.cjs.map +1 -1
- package/dist/elements/LeaveWithoutSaving/index.js +35 -15
- package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
- package/dist/exports/utilities.d.ts +0 -2
- package/dist/exports/utilities.d.ts.map +1 -1
- package/dist/exports/utilities.js +0 -2
- package/dist/exports/utilities.js.map +1 -1
- package/dist/exports/views.d.ts +2 -1
- package/dist/exports/views.d.ts.map +1 -1
- package/dist/exports/views.js +2 -1
- package/dist/exports/views.js.map +1 -1
- package/dist/fetchAPI-multipart/index.d.ts +2 -4
- package/dist/fetchAPI-multipart/index.d.ts.map +1 -1
- package/dist/fetchAPI-multipart/index.js +2 -4
- package/dist/fetchAPI-multipart/index.js.map +1 -1
- package/dist/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
- package/dist/fetchAPI-multipart/processMultipart.js +17 -11
- package/dist/fetchAPI-multipart/processMultipart.js.map +1 -1
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +36 -21
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/prod/payload/payload-favicon-dark.png +0 -0
- package/dist/prod/payload/payload-favicon-light.png +0 -0
- package/dist/prod/styles.css +1 -1
- package/dist/routes/rest/auth/access.d.ts.map +1 -1
- package/dist/routes/rest/auth/access.js +17 -7
- package/dist/routes/rest/auth/access.js.map +1 -1
- package/dist/routes/rest/buildFormState.d.ts +0 -2
- package/dist/routes/rest/buildFormState.d.ts.map +1 -1
- package/dist/routes/rest/buildFormState.js +16 -166
- package/dist/routes/rest/buildFormState.js.map +1 -1
- package/dist/routes/rest/index.d.ts.map +1 -1
- package/dist/routes/rest/index.js +3 -1
- package/dist/routes/rest/index.js.map +1 -1
- package/dist/routes/rest/og/image.d.ts +9 -0
- package/dist/routes/rest/og/image.d.ts.map +1 -0
- package/dist/routes/rest/og/image.js +79 -0
- package/dist/routes/rest/og/image.js.map +1 -0
- package/dist/routes/rest/og/index.d.ts +11 -0
- package/dist/routes/rest/og/index.d.ts.map +1 -0
- package/dist/routes/rest/og/index.js +73 -0
- package/dist/routes/rest/og/index.js.map +1 -0
- package/dist/routes/rest/og/roboto-regular.woff +0 -0
- package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
- package/dist/utilities/addDataAndFileToRequest.js +12 -41
- package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
- package/dist/utilities/getNextRequestI18n.d.ts +1 -1
- package/dist/utilities/getNextRequestI18n.js +1 -1
- package/dist/utilities/getNextRequestI18n.js.map +1 -1
- package/dist/utilities/getPayloadHMR.d.ts.map +1 -1
- package/dist/utilities/getPayloadHMR.js +5 -3
- package/dist/utilities/getPayloadHMR.js.map +1 -1
- package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
- package/dist/utilities/getRequestLanguage.js +1 -1
- package/dist/utilities/getRequestLanguage.js.map +1 -1
- package/dist/utilities/getRequestTheme.d.ts +11 -0
- package/dist/utilities/getRequestTheme.d.ts.map +1 -0
- package/dist/utilities/getRequestTheme.js +19 -0
- package/dist/utilities/getRequestTheme.js.map +1 -0
- package/dist/utilities/initPage/handleAdminPage.js +1 -1
- package/dist/utilities/initPage/handleAdminPage.js.map +1 -1
- package/dist/utilities/initPage/handleAuthRedirect.d.ts +2 -2
- package/dist/utilities/initPage/handleAuthRedirect.d.ts.map +1 -1
- package/dist/utilities/initPage/handleAuthRedirect.js +5 -4
- package/dist/utilities/initPage/handleAuthRedirect.js.map +1 -1
- package/dist/utilities/initPage/index.d.ts.map +1 -1
- package/dist/utilities/initPage/index.js +12 -1
- package/dist/utilities/initPage/index.js.map +1 -1
- package/dist/utilities/initPage/shared.d.ts +2 -2
- package/dist/utilities/initPage/shared.d.ts.map +1 -1
- package/dist/utilities/initPage/shared.js +10 -9
- package/dist/utilities/initPage/shared.js.map +1 -1
- package/dist/utilities/meta.d.ts +4 -8
- package/dist/utilities/meta.d.ts.map +1 -1
- package/dist/utilities/meta.js +64 -25
- package/dist/utilities/meta.js.map +1 -1
- package/dist/views/API/LocaleSelector/index.d.ts +9 -0
- package/dist/views/API/LocaleSelector/index.d.ts.map +1 -0
- package/dist/views/API/LocaleSelector/index.js +16 -0
- package/dist/views/API/LocaleSelector/index.js.map +1 -0
- package/dist/views/API/RenderJSON/index.js +100 -68
- package/dist/views/API/RenderJSON/index.js.map +1 -1
- package/dist/views/API/index.client.d.ts.map +1 -1
- package/dist/views/API/index.client.js +126 -92
- package/dist/views/API/index.client.js.map +1 -1
- package/dist/views/API/index.js +2 -1
- package/dist/views/API/index.js.map +1 -1
- package/dist/views/API/meta.d.ts.map +1 -1
- package/dist/views/API/meta.js +13 -6
- package/dist/views/API/meta.js.map +1 -1
- package/dist/views/Account/Settings/LanguageSelector.d.ts +6 -0
- package/dist/views/Account/Settings/LanguageSelector.d.ts.map +1 -0
- package/dist/views/Account/Settings/LanguageSelector.js +19 -0
- package/dist/views/Account/Settings/LanguageSelector.js.map +1 -0
- package/dist/views/Account/Settings/index.d.ts +4 -0
- package/dist/views/Account/Settings/index.d.ts.map +1 -1
- package/dist/views/Account/Settings/index.js +24 -20
- package/dist/views/Account/Settings/index.js.map +1 -1
- package/dist/views/Account/ToggleTheme/index.js +2 -1
- package/dist/views/Account/ToggleTheme/index.js.map +1 -1
- package/dist/views/Account/index.d.ts.map +1 -1
- package/dist/views/Account/index.js +66 -31
- package/dist/views/Account/index.js.map +1 -1
- package/dist/views/Account/meta.d.ts.map +1 -1
- package/dist/views/Account/meta.js +4 -5
- package/dist/views/Account/meta.js.map +1 -1
- package/dist/views/CreateFirstUser/index.client.js +29 -19
- package/dist/views/CreateFirstUser/index.client.js.map +1 -1
- package/dist/views/CreateFirstUser/index.js +16 -6
- package/dist/views/CreateFirstUser/index.js.map +1 -1
- package/dist/views/CreateFirstUser/meta.d.ts.map +1 -1
- package/dist/views/CreateFirstUser/meta.js +4 -5
- package/dist/views/CreateFirstUser/meta.js.map +1 -1
- package/dist/views/Dashboard/Default/index.d.ts +5 -3
- package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/index.js +118 -20
- 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 +51 -11
- package/dist/views/Dashboard/index.js.map +1 -1
- package/dist/views/Dashboard/meta.d.ts.map +1 -1
- package/dist/views/Dashboard/meta.js +8 -5
- package/dist/views/Dashboard/meta.js.map +1 -1
- package/dist/views/Document/getCustomViewByKey.d.ts.map +1 -1
- package/dist/views/Document/getCustomViewByKey.js +2 -1
- package/dist/views/Document/getCustomViewByKey.js.map +1 -1
- package/dist/views/Document/getDocumentData.d.ts +9 -0
- package/dist/views/Document/getDocumentData.d.ts.map +1 -0
- package/dist/views/Document/getDocumentData.js +31 -0
- package/dist/views/Document/getDocumentData.js.map +1 -0
- package/dist/views/Document/getDocumentPermissions.d.ts +14 -0
- package/dist/views/Document/getDocumentPermissions.d.ts.map +1 -0
- package/dist/views/Document/getDocumentPermissions.js +83 -0
- package/dist/views/Document/getDocumentPermissions.js.map +1 -0
- package/dist/views/Document/getMetaBySegment.d.ts +0 -1
- package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
- package/dist/views/Document/getMetaBySegment.js +1 -1
- package/dist/views/Document/getMetaBySegment.js.map +1 -1
- package/dist/views/Document/getViewsFromConfig.d.ts.map +1 -1
- package/dist/views/Document/getViewsFromConfig.js +172 -171
- package/dist/views/Document/getViewsFromConfig.js.map +1 -1
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +70 -47
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/Edit/Default/Auth/APIKey.js +42 -26
- package/dist/views/Edit/Default/Auth/APIKey.js.map +1 -1
- package/dist/views/Edit/Default/Auth/index.d.ts.map +1 -1
- package/dist/views/Edit/Default/Auth/index.js +85 -51
- package/dist/views/Edit/Default/Auth/index.js.map +1 -1
- package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts.map +1 -1
- package/dist/views/Edit/Default/SetDocumentStepNav/index.js +25 -22
- package/dist/views/Edit/Default/SetDocumentStepNav/index.js.map +1 -1
- package/dist/views/Edit/Default/index.d.ts.map +1 -1
- package/dist/views/Edit/Default/index.js +78 -68
- package/dist/views/Edit/Default/index.js.map +1 -1
- package/dist/views/Edit/index.client.d.ts.map +1 -1
- package/dist/views/Edit/index.client.js +11 -7
- package/dist/views/Edit/index.client.js.map +1 -1
- package/dist/views/Edit/index.js +2 -1
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/Edit/meta.d.ts.map +1 -1
- package/dist/views/Edit/meta.js +17 -15
- package/dist/views/Edit/meta.js.map +1 -1
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +42 -20
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
- package/dist/views/ForgotPassword/index.d.ts.map +1 -1
- package/dist/views/ForgotPassword/index.js +38 -18
- package/dist/views/ForgotPassword/index.js.map +1 -1
- package/dist/views/ForgotPassword/meta.d.ts.map +1 -1
- package/dist/views/ForgotPassword/meta.js +4 -5
- package/dist/views/ForgotPassword/meta.js.map +1 -1
- package/dist/views/List/Default/index.d.ts.map +1 -1
- package/dist/views/List/Default/index.js +162 -87
- package/dist/views/List/Default/index.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +56 -36
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/List/meta.d.ts.map +1 -1
- package/dist/views/List/meta.js +4 -2
- package/dist/views/List/meta.js.map +1 -1
- package/dist/views/LivePreview/Context/context.d.ts +1 -1
- package/dist/views/LivePreview/Context/context.d.ts.map +1 -1
- package/dist/views/LivePreview/Context/context.js.map +1 -1
- package/dist/views/LivePreview/Context/index.js +9 -6
- package/dist/views/LivePreview/Context/index.js.map +1 -1
- package/dist/views/LivePreview/Device/index.js +5 -3
- package/dist/views/LivePreview/Device/index.js.map +1 -1
- package/dist/views/LivePreview/DeviceContainer/index.js +5 -3
- package/dist/views/LivePreview/DeviceContainer/index.js.map +1 -1
- package/dist/views/LivePreview/IFrame/index.js +2 -1
- package/dist/views/LivePreview/IFrame/index.js.map +1 -1
- package/dist/views/LivePreview/Preview/index.js +25 -14
- package/dist/views/LivePreview/Preview/index.js.map +1 -1
- package/dist/views/LivePreview/Toolbar/Controls/index.js +105 -57
- package/dist/views/LivePreview/Toolbar/Controls/index.js.map +1 -1
- package/dist/views/LivePreview/Toolbar/SizeInput/index.js +2 -1
- package/dist/views/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
- package/dist/views/LivePreview/Toolbar/index.js +29 -14
- package/dist/views/LivePreview/Toolbar/index.js.map +1 -1
- package/dist/views/LivePreview/ToolbarArea/index.js +5 -3
- package/dist/views/LivePreview/ToolbarArea/index.js.map +1 -1
- package/dist/views/LivePreview/index.client.d.ts.map +1 -1
- package/dist/views/LivePreview/index.client.js +103 -80
- package/dist/views/LivePreview/index.client.js.map +1 -1
- package/dist/views/LivePreview/index.js +2 -1
- package/dist/views/LivePreview/index.js.map +1 -1
- package/dist/views/LivePreview/meta.d.ts.map +1 -1
- package/dist/views/LivePreview/meta.js +6 -22
- package/dist/views/LivePreview/meta.js.map +1 -1
- package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
- package/dist/views/Login/LoginForm/index.js +59 -50
- package/dist/views/Login/LoginForm/index.js.map +1 -1
- package/dist/views/Login/index.d.ts.map +1 -1
- package/dist/views/Login/index.js +47 -18
- package/dist/views/Login/index.js.map +1 -1
- package/dist/views/Login/meta.d.ts.map +1 -1
- package/dist/views/Login/meta.js +4 -5
- package/dist/views/Login/meta.js.map +1 -1
- package/dist/views/Logout/LogoutClient.js +21 -7
- package/dist/views/Logout/LogoutClient.js.map +1 -1
- package/dist/views/Logout/index.d.ts.map +1 -1
- package/dist/views/Logout/index.js +10 -11
- package/dist/views/Logout/index.js.map +1 -1
- package/dist/views/Logout/meta.d.ts.map +1 -1
- package/dist/views/Logout/meta.js +2 -4
- package/dist/views/Logout/meta.js.map +1 -1
- package/dist/views/NotFound/index.client.js +22 -10
- package/dist/views/NotFound/index.client.js.map +1 -1
- package/dist/views/NotFound/index.d.ts +1 -1
- package/dist/views/NotFound/index.d.ts.map +1 -1
- package/dist/views/NotFound/index.js +22 -9
- package/dist/views/NotFound/index.js.map +1 -1
- package/dist/views/NotFound/meta.d.ts.map +1 -1
- package/dist/views/NotFound/meta.js +2 -4
- package/dist/views/NotFound/meta.js.map +1 -1
- package/dist/views/ResetPassword/index.client.js +18 -11
- package/dist/views/ResetPassword/index.client.js.map +1 -1
- package/dist/views/ResetPassword/index.d.ts.map +1 -1
- package/dist/views/ResetPassword/index.js +47 -26
- package/dist/views/ResetPassword/index.js.map +1 -1
- package/dist/views/ResetPassword/meta.d.ts.map +1 -1
- package/dist/views/ResetPassword/meta.js +4 -5
- package/dist/views/ResetPassword/meta.js.map +1 -1
- package/dist/views/Root/getViewFromConfig.d.ts.map +1 -1
- package/dist/views/Root/getViewFromConfig.js +29 -12
- package/dist/views/Root/getViewFromConfig.js.map +1 -1
- package/dist/views/Root/index.d.ts +1 -0
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +41 -15
- package/dist/views/Root/index.js.map +1 -1
- package/dist/views/Root/meta.d.ts.map +1 -1
- package/dist/views/Root/meta.js +0 -19
- package/dist/views/Root/meta.js.map +1 -1
- package/dist/views/Unauthorized/index.d.ts.map +1 -1
- package/dist/views/Unauthorized/index.js +20 -9
- package/dist/views/Unauthorized/index.js.map +1 -1
- package/dist/views/Unauthorized/meta.d.ts.map +1 -1
- package/dist/views/Unauthorized/meta.js +4 -5
- package/dist/views/Unauthorized/meta.js.map +1 -1
- package/dist/views/Verify/index.d.ts.map +1 -1
- package/dist/views/Verify/index.js +23 -8
- package/dist/views/Verify/index.js.map +1 -1
- package/dist/views/Verify/meta.d.ts.map +1 -1
- package/dist/views/Verify/meta.js +4 -5
- package/dist/views/Verify/meta.js.map +1 -1
- package/dist/views/Version/Default/index.js +83 -57
- package/dist/views/Version/Default/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/Label/index.js +5 -3
- package/dist/views/Version/RenderFieldsToDiff/Label/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +65 -50
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js +30 -18
- package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +23 -12
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js +2 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +22 -11
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +31 -30
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js +2 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +22 -11
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/index.js +90 -87
- package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/types.d.ts +2 -2
- package/dist/views/Version/RenderFieldsToDiff/types.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/types.js.map +1 -1
- package/dist/views/Version/Restore/index.js +38 -18
- package/dist/views/Version/Restore/index.js.map +1 -1
- package/dist/views/Version/SelectComparison/index.js +32 -24
- package/dist/views/Version/SelectComparison/index.js.map +1 -1
- package/dist/views/Version/SelectLocales/index.d.ts.map +1 -1
- package/dist/views/Version/SelectLocales/index.js +18 -11
- package/dist/views/Version/SelectLocales/index.js.map +1 -1
- package/dist/views/Version/index.js +2 -1
- package/dist/views/Version/index.js.map +1 -1
- package/dist/views/Version/meta.d.ts.map +1 -1
- package/dist/views/Version/meta.js +5 -2
- package/dist/views/Version/meta.js.map +1 -1
- package/dist/views/Versions/buildColumns.js +7 -6
- package/dist/views/Versions/buildColumns.js.map +1 -1
- package/dist/views/Versions/cells/AutosaveCell/index.js +25 -3
- package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
- package/dist/views/Versions/cells/CreatedAt/index.js +9 -7
- package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
- package/dist/views/Versions/cells/ID/index.js +4 -1
- package/dist/views/Versions/cells/ID/index.js.map +1 -1
- package/dist/views/Versions/index.client.js +61 -29
- package/dist/views/Versions/index.client.js.map +1 -1
- package/dist/views/Versions/index.js +31 -22
- package/dist/views/Versions/index.js.map +1 -1
- package/dist/views/Versions/meta.d.ts.map +1 -1
- package/dist/views/Versions/meta.js +8 -4
- package/dist/views/Versions/meta.js.map +1 -1
- package/dist/withPayload.d.ts.map +1 -1
- package/dist/withPayload.js +36 -10
- package/dist/withPayload.js.map +1 -1
- package/package.json +15 -11
- package/dist/utilities/buildFieldSchemaMap/index.d.ts +0 -4
- package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +0 -1
- package/dist/utilities/buildFieldSchemaMap/index.js +0 -28
- package/dist/utilities/buildFieldSchemaMap/index.js.map +0 -1
- package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts +0 -14
- package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +0 -1
- package/dist/utilities/buildFieldSchemaMap/traverseFields.js +0 -75
- package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +0 -1
- package/dist/utilities/buildFieldSchemaMap/types.d.ts +0 -3
- package/dist/utilities/buildFieldSchemaMap/types.d.ts.map +0 -1
- package/dist/utilities/buildFieldSchemaMap/types.js +0 -3
- package/dist/utilities/buildFieldSchemaMap/types.js.map +0 -1
- package/dist/utilities/getDataAndFile.d.ts +0 -12
- package/dist/utilities/getDataAndFile.d.ts.map +0 -1
- package/dist/utilities/getDataAndFile.js +0 -48
- package/dist/utilities/getDataAndFile.js.map +0 -1
- package/dist/views/Dashboard/Default/index.client.d.ts +0 -10
- package/dist/views/Dashboard/Default/index.client.d.ts.map +0 -1
- package/dist/views/Dashboard/Default/index.client.js +0 -103
- package/dist/views/Dashboard/Default/index.client.js.map +0 -1
- /package/dist/prod/payload/{favicon.svg → payload-favicon.svg} +0 -0
- /package/dist/prod/payload/{og-image.png → static-og-image.png} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/routes/rest/og/image.tsx"],"sourcesContent":["import React from 'react'\n\nexport const OGImage: React.FC<{\n Icon: React.ComponentType<any>\n description?: string\n fontFamily?: string\n leader?: string\n title?: string\n}> = ({ Icon, description, fontFamily = 'Arial, sans-serif', leader, title }) => {\n return (\n <div\n style={{\n backgroundColor: '#000',\n color: '#fff',\n display: 'flex',\n flexDirection: 'column',\n fontFamily,\n height: '100%',\n justifyContent: 'space-between',\n padding: '100px',\n width: '100%',\n }}\n >\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n fontSize: 50,\n height: '100%',\n }}\n >\n {leader && (\n <div\n style={{\n fontSize: 30,\n marginBottom: 10,\n }}\n >\n {leader}\n </div>\n )}\n <p\n style={{\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n display: '-webkit-box',\n fontSize: 90,\n lineHeight: 1,\n marginBottom: 0,\n marginTop: 0,\n textOverflow: 'ellipsis',\n }}\n >\n {title}\n </p>\n {description && (\n <p\n style={{\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n display: '-webkit-box',\n flexGrow: 1,\n fontSize: 30,\n lineHeight: 1,\n marginBottom: 0,\n marginTop: 40,\n textOverflow: 'ellipsis',\n }}\n >\n {description}\n </p>\n )}\n </div>\n <div\n style={{\n alignItems: 'flex-end',\n display: 'flex',\n flexShrink: 0,\n height: '38px',\n justifyContent: 'center',\n width: '38px',\n }}\n >\n <Icon fill=\"white\" />\n </div>\n </div>\n )\n}\n"],"names":["React","OGImage","Icon","description","fontFamily","leader","title","div","style","backgroundColor","color","display","flexDirection","height","justifyContent","padding","width","flexGrow","fontSize","marginBottom","p","WebkitBoxOrient","WebkitLineClamp","lineHeight","marginTop","textOverflow","alignItems","flexShrink","fill"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,OAAOA,WAAW,QAAO;AAEzB,OAAO,MAAMC,UAMR,CAAC,EAAEC,IAAI,EAAEC,WAAW,EAAEC,aAAa,mBAAmB,EAAEC,MAAM,EAAEC,KAAK,EAAE;IAC1E,qBACE,MAACC;QACCC,OAAO;YACLC,iBAAiB;YACjBC,OAAO;YACPC,SAAS;YACTC,eAAe;YACfR;YACAS,QAAQ;YACRC,gBAAgB;YAChBC,SAAS;YACTC,OAAO;QACT;;0BAEA,MAACT;gBACCC,OAAO;oBACLG,SAAS;oBACTC,eAAe;oBACfK,UAAU;oBACVC,UAAU;oBACVL,QAAQ;gBACV;;oBAECR,wBACC,KAACE;wBACCC,OAAO;4BACLU,UAAU;4BACVC,cAAc;wBAChB;kCAECd;;kCAGL,KAACe;wBACCZ,OAAO;4BACLa,iBAAiB;4BACjBC,iBAAiB;4BACjBX,SAAS;4BACTO,UAAU;4BACVK,YAAY;4BACZJ,cAAc;4BACdK,WAAW;4BACXC,cAAc;wBAChB;kCAECnB;;oBAEFH,6BACC,KAACiB;wBACCZ,OAAO;4BACLa,iBAAiB;4BACjBC,iBAAiB;4BACjBX,SAAS;4BACTM,UAAU;4BACVC,UAAU;4BACVK,YAAY;4BACZJ,cAAc;4BACdK,WAAW;4BACXC,cAAc;wBAChB;kCAECtB;;;;0BAIP,KAACI;gBACCC,OAAO;oBACLkB,YAAY;oBACZf,SAAS;oBACTgB,YAAY;oBACZd,QAAQ;oBACRC,gBAAgB;oBAChBE,OAAO;gBACT;0BAEA,cAAA,KAACd;oBAAK0B,MAAK;;;;;AAInB,EAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PayloadRequestWithData } from 'payload/types';
|
|
2
|
+
import { ImageResponse } from 'next/og.js';
|
|
3
|
+
import { NextResponse } from 'next/server.js';
|
|
4
|
+
export declare const runtime = "nodejs";
|
|
5
|
+
export declare const contentType = "image/png";
|
|
6
|
+
export declare const generateOGImage: ({ req }: {
|
|
7
|
+
req: PayloadRequestWithData;
|
|
8
|
+
}) => Promise<NextResponse<{
|
|
9
|
+
error: string;
|
|
10
|
+
}> | ImageResponse>;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/routes/rest/og/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAI3D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAU7C,eAAO,MAAM,OAAO,WAAW,CAAA;AAE/B,eAAO,MAAM,WAAW,cAAc,CAAA;AAEtC,eAAO,MAAM,eAAe,YAAmB;IAAE,GAAG,EAAE,sBAAsB,CAAA;CAAE;;mBA6D7E,CAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { PayloadIcon } from '@payloadcms/ui/graphics/Icon';
|
|
3
|
+
import fs from 'fs/promises';
|
|
4
|
+
import { ImageResponse } from 'next/og.js';
|
|
5
|
+
import { NextResponse } from 'next/server.js';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
import { OGImage } from './image.js';
|
|
10
|
+
const filename = fileURLToPath(import.meta.url);
|
|
11
|
+
const dirname = path.dirname(filename);
|
|
12
|
+
export const runtime = 'nodejs';
|
|
13
|
+
export const contentType = 'image/png';
|
|
14
|
+
export const generateOGImage = async ({ req })=>{
|
|
15
|
+
const config = req.payload.config;
|
|
16
|
+
if (config.admin.meta.defaultOGImageType === 'off') {
|
|
17
|
+
return NextResponse.json({
|
|
18
|
+
error: `Open Graph images are disabled`
|
|
19
|
+
}, {
|
|
20
|
+
status: 400
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const { searchParams } = new URL(req.url);
|
|
25
|
+
const hasTitle = searchParams.has('title');
|
|
26
|
+
const title = hasTitle ? searchParams.get('title')?.slice(0, 100) : '';
|
|
27
|
+
const hasLeader = searchParams.has('leader');
|
|
28
|
+
const leader = hasLeader ? searchParams.get('leader')?.slice(0, 100).replace('-', ' ') : '';
|
|
29
|
+
const description = searchParams.has('description') ? searchParams.get('description') : '';
|
|
30
|
+
const Icon = config.admin?.components?.graphics?.Icon || PayloadIcon;
|
|
31
|
+
let fontData;
|
|
32
|
+
try {
|
|
33
|
+
// TODO: replace with `.woff2` file when supported
|
|
34
|
+
// See https://github.com/vercel/next.js/issues/63935
|
|
35
|
+
// Or better yet, use a CDN like Google Fonts if ever supported
|
|
36
|
+
fontData = fs.readFile(path.join(dirname, 'roboto-regular.woff'));
|
|
37
|
+
} catch (e) {
|
|
38
|
+
console.error(`Error reading font file or not readable: ${e.message}`) // eslint-disable-line no-console
|
|
39
|
+
;
|
|
40
|
+
}
|
|
41
|
+
const fontFamily = 'Roboto, sans-serif';
|
|
42
|
+
return new ImageResponse(/*#__PURE__*/ _jsx(OGImage, {
|
|
43
|
+
Icon: Icon,
|
|
44
|
+
description: description,
|
|
45
|
+
fontFamily: fontFamily,
|
|
46
|
+
leader: leader,
|
|
47
|
+
title: title
|
|
48
|
+
}), {
|
|
49
|
+
...fontData ? {
|
|
50
|
+
fonts: [
|
|
51
|
+
{
|
|
52
|
+
name: 'Roboto',
|
|
53
|
+
data: await fontData,
|
|
54
|
+
style: 'normal',
|
|
55
|
+
weight: 400
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
} : {},
|
|
59
|
+
height: 630,
|
|
60
|
+
width: 1200
|
|
61
|
+
});
|
|
62
|
+
} catch (e) {
|
|
63
|
+
console.error(`${e.message}`) // eslint-disable-line no-console
|
|
64
|
+
;
|
|
65
|
+
return NextResponse.json({
|
|
66
|
+
error: `Internal Server Error: ${e.message}`
|
|
67
|
+
}, {
|
|
68
|
+
status: 500
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/routes/rest/og/index.tsx"],"sourcesContent":["import type { PayloadRequestWithData } from 'payload/types'\n\nimport { PayloadIcon } from '@payloadcms/ui/graphics/Icon'\nimport fs from 'fs/promises'\nimport { ImageResponse } from 'next/og.js'\nimport { NextResponse } from 'next/server.js'\nimport path from 'path'\nimport React from 'react'\nimport { fileURLToPath } from 'url'\n\nimport { OGImage } from './image.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nexport const runtime = 'nodejs'\n\nexport const contentType = 'image/png'\n\nexport const generateOGImage = async ({ req }: { req: PayloadRequestWithData }) => {\n const config = req.payload.config\n\n if (config.admin.meta.defaultOGImageType === 'off') {\n return NextResponse.json({ error: `Open Graph images are disabled` }, { status: 400 })\n }\n\n try {\n const { searchParams } = new URL(req.url)\n\n const hasTitle = searchParams.has('title')\n const title = hasTitle ? searchParams.get('title')?.slice(0, 100) : ''\n const hasLeader = searchParams.has('leader')\n const leader = hasLeader ? searchParams.get('leader')?.slice(0, 100).replace('-', ' ') : ''\n const description = searchParams.has('description') ? searchParams.get('description') : ''\n const Icon = config.admin?.components?.graphics?.Icon || PayloadIcon\n\n let fontData\n\n try {\n // TODO: replace with `.woff2` file when supported\n // See https://github.com/vercel/next.js/issues/63935\n // Or better yet, use a CDN like Google Fonts if ever supported\n fontData = fs.readFile(path.join(dirname, 'roboto-regular.woff'))\n } catch (e) {\n console.error(`Error reading font file or not readable: ${e.message}`) // eslint-disable-line no-console\n }\n\n const fontFamily = 'Roboto, sans-serif'\n\n return new ImageResponse(\n (\n <OGImage\n Icon={Icon}\n description={description}\n fontFamily={fontFamily}\n leader={leader}\n title={title}\n />\n ),\n {\n ...(fontData\n ? {\n fonts: [\n {\n name: 'Roboto',\n data: await fontData,\n style: 'normal',\n weight: 400,\n },\n ],\n }\n : {}),\n height: 630,\n width: 1200,\n },\n )\n } catch (e: any) {\n console.error(`${e.message}`) // eslint-disable-line no-console\n return NextResponse.json({ error: `Internal Server Error: ${e.message}` }, { status: 500 })\n }\n}\n"],"names":["PayloadIcon","fs","ImageResponse","NextResponse","path","React","fileURLToPath","OGImage","filename","url","dirname","runtime","contentType","generateOGImage","req","config","payload","admin","meta","defaultOGImageType","json","error","status","searchParams","URL","hasTitle","has","title","get","slice","hasLeader","leader","replace","description","Icon","components","graphics","fontData","readFile","join","e","console","message","fontFamily","fonts","name","data","style","weight","height","width"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAEA,SAASA,WAAW,QAAQ,+BAA8B;AAC1D,OAAOC,QAAQ,cAAa;AAC5B,SAASC,aAAa,QAAQ,aAAY;AAC1C,SAASC,YAAY,QAAQ,iBAAgB;AAC7C,OAAOC,UAAU,OAAM;AACvB,OAAOC,WAAW,QAAO;AACzB,SAASC,aAAa,QAAQ,MAAK;AAEnC,SAASC,OAAO,QAAQ,aAAY;AAEpC,MAAMC,WAAWF,cAAc,YAAYG,GAAG;AAC9C,MAAMC,UAAUN,KAAKM,OAAO,CAACF;AAE7B,OAAO,MAAMG,UAAU,SAAQ;AAE/B,OAAO,MAAMC,cAAc,YAAW;AAEtC,OAAO,MAAMC,kBAAkB,OAAO,EAAEC,GAAG,EAAmC;IAC5E,MAAMC,SAASD,IAAIE,OAAO,CAACD,MAAM;IAEjC,IAAIA,OAAOE,KAAK,CAACC,IAAI,CAACC,kBAAkB,KAAK,OAAO;QAClD,OAAOhB,aAAaiB,IAAI,CAAC;YAAEC,OAAO,CAAC,8BAA8B,CAAC;QAAC,GAAG;YAAEC,QAAQ;QAAI;IACtF;IAEA,IAAI;QACF,MAAM,EAAEC,YAAY,EAAE,GAAG,IAAIC,IAAIV,IAAIL,GAAG;QAExC,MAAMgB,WAAWF,aAAaG,GAAG,CAAC;QAClC,MAAMC,QAAQF,WAAWF,aAAaK,GAAG,CAAC,UAAUC,MAAM,GAAG,OAAO;QACpE,MAAMC,YAAYP,aAAaG,GAAG,CAAC;QACnC,MAAMK,SAASD,YAAYP,aAAaK,GAAG,CAAC,WAAWC,MAAM,GAAG,KAAKG,QAAQ,KAAK,OAAO;QACzF,MAAMC,cAAcV,aAAaG,GAAG,CAAC,iBAAiBH,aAAaK,GAAG,CAAC,iBAAiB;QACxF,MAAMM,OAAOnB,OAAOE,KAAK,EAAEkB,YAAYC,UAAUF,QAAQlC;QAEzD,IAAIqC;QAEJ,IAAI;YACF,kDAAkD;YAClD,qDAAqD;YACrD,+DAA+D;YAC/DA,WAAWpC,GAAGqC,QAAQ,CAAClC,KAAKmC,IAAI,CAAC7B,SAAS;QAC5C,EAAE,OAAO8B,GAAG;YACVC,QAAQpB,KAAK,CAAC,CAAC,yCAAyC,EAAEmB,EAAEE,OAAO,CAAC,CAAC,EAAE,iCAAiC;;QAC1G;QAEA,MAAMC,aAAa;QAEnB,OAAO,IAAIzC,4BAEP,KAACK;YACC2B,MAAMA;YACND,aAAaA;YACbU,YAAYA;YACZZ,QAAQA;YACRJ,OAAOA;YAGX;YACE,GAAIU,WACA;gBACEO,OAAO;oBACL;wBACEC,MAAM;wBACNC,MAAM,MAAMT;wBACZU,OAAO;wBACPC,QAAQ;oBACV;iBACD;YACH,IACA,CAAC,CAAC;YACNC,QAAQ;YACRC,OAAO;QACT;IAEJ,EAAE,OAAOV,GAAQ;QACfC,QAAQpB,KAAK,CAAC,CAAC,EAAEmB,EAAEE,OAAO,CAAC,CAAC,EAAE,iCAAiC;;QAC/D,OAAOvC,aAAaiB,IAAI,CAAC;YAAEC,OAAO,CAAC,uBAAuB,EAAEmB,EAAEE,OAAO,CAAC,CAAC;QAAC,GAAG;YAAEpB,QAAQ;QAAI;IAC3F;AACF,EAAC"}
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addDataAndFileToRequest.d.ts","sourceRoot":"","sources":["../../src/utilities/addDataAndFileToRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"addDataAndFileToRequest.d.ts","sourceRoot":"","sources":["../../src/utilities/addDataAndFileToRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAQvE,KAAK,UAAU,GAAG,cAAc,GAAG,kBAAkB,CAAA;AACrD,KAAK,uBAAuB,GAAG,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;AAEzF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,uBA+CrC,CAAA"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { APIError } from 'payload/errors';
|
|
2
2
|
import { fetchAPIFileUpload } from '../fetchAPI-multipart/index.js';
|
|
3
|
-
const KB = 1024;
|
|
4
|
-
const MB = KB * KB;
|
|
5
3
|
/**
|
|
6
4
|
* Mutates the Request to contain 'data' and 'file' if present
|
|
7
5
|
*/ export const addDataAndFileToRequest = async ({ request: incomingRequest })=>{
|
|
@@ -25,45 +23,18 @@ const MB = KB * KB;
|
|
|
25
23
|
mutableRequest.json = ()=>Promise.resolve(data);
|
|
26
24
|
}
|
|
27
25
|
} else if (bodyByteSize && contentType.includes('multipart/')) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const fileBytes = await formFile.arrayBuffer();
|
|
41
|
-
const buffer = Buffer.from(fileBytes);
|
|
42
|
-
mutableRequest.file = {
|
|
43
|
-
name: formFile.name,
|
|
44
|
-
data: buffer,
|
|
45
|
-
mimetype: formFile.type,
|
|
46
|
-
size: formFile.size
|
|
47
|
-
};
|
|
48
|
-
} else if (config.upload?.abortOnLimit) {
|
|
49
|
-
throw new APIError('File size limit has been reached', 413);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
} else {
|
|
53
|
-
// body is > 4MB
|
|
54
|
-
const { error, fields, files } = await fetchAPIFileUpload({
|
|
55
|
-
options: config.upload,
|
|
56
|
-
request: mutableRequest
|
|
57
|
-
});
|
|
58
|
-
if (error) {
|
|
59
|
-
throw new Error(error.message);
|
|
60
|
-
}
|
|
61
|
-
if (files?.file) {
|
|
62
|
-
mutableRequest.file = files.file;
|
|
63
|
-
}
|
|
64
|
-
if (fields?._payload && typeof fields._payload === 'string') {
|
|
65
|
-
mutableRequest.data = JSON.parse(fields._payload);
|
|
66
|
-
}
|
|
26
|
+
const { error, fields, files } = await fetchAPIFileUpload({
|
|
27
|
+
options: config.upload,
|
|
28
|
+
request: mutableRequest
|
|
29
|
+
});
|
|
30
|
+
if (error) {
|
|
31
|
+
throw new APIError(error.message);
|
|
32
|
+
}
|
|
33
|
+
if (files?.file) {
|
|
34
|
+
mutableRequest.file = files.file;
|
|
35
|
+
}
|
|
36
|
+
if (fields?._payload && typeof fields._payload === 'string') {
|
|
37
|
+
mutableRequest.data = JSON.parse(fields._payload);
|
|
67
38
|
}
|
|
68
39
|
}
|
|
69
40
|
return mutableRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/addDataAndFileToRequest.ts"],"sourcesContent":["import type { PayloadRequest, PayloadRequestData } from 'payload/types'\n\nimport { APIError } from 'payload/errors'\n\nimport type { FetchAPIFileUploadOptions } from '../fetchAPI-multipart/index.js'\n\nimport { fetchAPIFileUpload } from '../fetchAPI-multipart/index.js'\n\
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/addDataAndFileToRequest.ts"],"sourcesContent":["import type { PayloadRequest, PayloadRequestData } from 'payload/types'\n\nimport { APIError } from 'payload/errors'\n\nimport type { FetchAPIFileUploadOptions } from '../fetchAPI-multipart/index.js'\n\nimport { fetchAPIFileUpload } from '../fetchAPI-multipart/index.js'\n\ntype ReturnType = PayloadRequest & PayloadRequestData\ntype AddDataAndFileToRequest = (args: { request: PayloadRequest }) => Promise<ReturnType>\n\n/**\n * Mutates the Request to contain 'data' and 'file' if present\n */\nexport const addDataAndFileToRequest: AddDataAndFileToRequest = async ({\n request: incomingRequest,\n}) => {\n const config = incomingRequest.payload.config\n\n if (\n incomingRequest.method &&\n ['PATCH', 'POST', 'PUT'].includes(incomingRequest.method.toUpperCase()) &&\n incomingRequest.body\n ) {\n const [contentType] = (incomingRequest.headers.get('Content-Type') || '').split(';')\n const mutableRequest = incomingRequest as ReturnType\n const bodyByteSize = parseInt(incomingRequest.headers.get('Content-Length') || '0', 10)\n\n if (contentType === 'application/json') {\n let data = {}\n try {\n data = await mutableRequest.json()\n } catch (error) {\n mutableRequest.payload.logger.error(error)\n } finally {\n mutableRequest.data = data\n mutableRequest.json = () => Promise.resolve(data)\n }\n } else if (bodyByteSize && contentType.includes('multipart/')) {\n const { error, fields, files } = await fetchAPIFileUpload({\n options: config.upload as FetchAPIFileUploadOptions,\n request: mutableRequest as Request,\n })\n\n if (error) {\n throw new APIError(error.message)\n }\n\n if (files?.file) {\n mutableRequest.file = files.file\n }\n\n if (fields?._payload && typeof fields._payload === 'string') {\n mutableRequest.data = JSON.parse(fields._payload)\n }\n }\n\n return mutableRequest\n }\n\n return incomingRequest\n}\n"],"names":["APIError","fetchAPIFileUpload","addDataAndFileToRequest","request","incomingRequest","config","payload","method","includes","toUpperCase","body","contentType","headers","get","split","mutableRequest","bodyByteSize","parseInt","data","json","error","logger","Promise","resolve","fields","files","options","upload","message","file","_payload","JSON","parse"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,QAAQ,QAAQ,iBAAgB;AAIzC,SAASC,kBAAkB,QAAQ,iCAAgC;AAKnE;;CAEC,GACD,OAAO,MAAMC,0BAAmD,OAAO,EACrEC,SAASC,eAAe,EACzB;IACC,MAAMC,SAASD,gBAAgBE,OAAO,CAACD,MAAM;IAE7C,IACED,gBAAgBG,MAAM,IACtB;QAAC;QAAS;QAAQ;KAAM,CAACC,QAAQ,CAACJ,gBAAgBG,MAAM,CAACE,WAAW,OACpEL,gBAAgBM,IAAI,EACpB;QACA,MAAM,CAACC,YAAY,GAAG,AAACP,CAAAA,gBAAgBQ,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAC,EAAGC,KAAK,CAAC;QAChF,MAAMC,iBAAiBX;QACvB,MAAMY,eAAeC,SAASb,gBAAgBQ,OAAO,CAACC,GAAG,CAAC,qBAAqB,KAAK;QAEpF,IAAIF,gBAAgB,oBAAoB;YACtC,IAAIO,OAAO,CAAC;YACZ,IAAI;gBACFA,OAAO,MAAMH,eAAeI,IAAI;YAClC,EAAE,OAAOC,OAAO;gBACdL,eAAeT,OAAO,CAACe,MAAM,CAACD,KAAK,CAACA;YACtC,SAAU;gBACRL,eAAeG,IAAI,GAAGA;gBACtBH,eAAeI,IAAI,GAAG,IAAMG,QAAQC,OAAO,CAACL;YAC9C;QACF,OAAO,IAAIF,gBAAgBL,YAAYH,QAAQ,CAAC,eAAe;YAC7D,MAAM,EAAEY,KAAK,EAAEI,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAMxB,mBAAmB;gBACxDyB,SAASrB,OAAOsB,MAAM;gBACtBxB,SAASY;YACX;YAEA,IAAIK,OAAO;gBACT,MAAM,IAAIpB,SAASoB,MAAMQ,OAAO;YAClC;YAEA,IAAIH,OAAOI,MAAM;gBACfd,eAAec,IAAI,GAAGJ,MAAMI,IAAI;YAClC;YAEA,IAAIL,QAAQM,YAAY,OAAON,OAAOM,QAAQ,KAAK,UAAU;gBAC3Df,eAAeG,IAAI,GAAGa,KAAKC,KAAK,CAACR,OAAOM,QAAQ;YAClD;QACF;QAEA,OAAOf;IACT;IAEA,OAAOX;AACT,EAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { I18n } from '@payloadcms/translations';
|
|
2
2
|
import type { SanitizedConfig } from 'payload/types';
|
|
3
3
|
/**
|
|
4
|
-
* In the context of
|
|
4
|
+
* In the context of Next.js, this function initializes the i18n object for the current request.
|
|
5
5
|
*
|
|
6
6
|
* It must be called on the server side, and within the lifecycle of a request since it relies on the request headers and cookies.
|
|
7
7
|
*/
|
|
@@ -2,7 +2,7 @@ import { initI18n } from '@payloadcms/translations';
|
|
|
2
2
|
import { cookies, headers } from 'next/headers.js';
|
|
3
3
|
import { getRequestLanguage } from './getRequestLanguage.js';
|
|
4
4
|
/**
|
|
5
|
-
* In the context of
|
|
5
|
+
* In the context of Next.js, this function initializes the i18n object for the current request.
|
|
6
6
|
*
|
|
7
7
|
* It must be called on the server side, and within the lifecycle of a request since it relies on the request headers and cookies.
|
|
8
8
|
*/ export const getNextRequestI18n = async ({ config })=>initI18n({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/getNextRequestI18n.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { SanitizedConfig } from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { cookies, headers } from 'next/headers.js'\n\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\n/**\n * In the context of
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/getNextRequestI18n.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { SanitizedConfig } from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { cookies, headers } from 'next/headers.js'\n\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\n/**\n * In the context of Next.js, this function initializes the i18n object for the current request.\n *\n * It must be called on the server side, and within the lifecycle of a request since it relies on the request headers and cookies.\n */\nexport const getNextRequestI18n = async ({ config }: { config: SanitizedConfig }): Promise<I18n> =>\n initI18n({\n config: config.i18n,\n context: 'client',\n language: getRequestLanguage({ config, cookies: cookies(), headers: headers() }),\n })\n"],"names":["initI18n","cookies","headers","getRequestLanguage","getNextRequestI18n","config","i18n","context","language"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,OAAO,EAAEC,OAAO,QAAQ,kBAAiB;AAElD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D;;;;CAIC,GACD,OAAO,MAAMC,qBAAqB,OAAO,EAAEC,MAAM,EAA+B,GAC9EL,SAAS;QACPK,QAAQA,OAAOC,IAAI;QACnBC,SAAS;QACTC,UAAUL,mBAAmB;YAAEE;YAAQJ,SAASA;YAAWC,SAASA;QAAU;IAChF,GAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPayloadHMR.d.ts","sourceRoot":"","sources":["../../src/utilities/getPayloadHMR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,OAAO,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAgBlE,eAAO,MAAM,MAAM,WAAkB,eAAe,uBAAqB,QAAQ,IAAI,
|
|
1
|
+
{"version":3,"file":"getPayloadHMR.d.ts","sourceRoot":"","sources":["../../src/utilities/getPayloadHMR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,OAAO,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAgBlE,eAAO,MAAM,MAAM,WAAkB,eAAe,uBAAqB,QAAQ,IAAI,CAyBpF,CAAA;AAED,eAAO,MAAM,aAAa,YAAmB,WAAW,KAAG,QAAQ,OAAO,CA4DzE,CAAA"}
|
|
@@ -26,9 +26,11 @@ export const reload = async (config, payload)=>{
|
|
|
26
26
|
};
|
|
27
27
|
// TODO: support HMR for other props in the future (see payload/src/index init()) hat may change on Payload singleton
|
|
28
28
|
await payload.db.init();
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
if (payload.db.connect) {
|
|
30
|
+
await payload.db.connect({
|
|
31
|
+
hotReload: true
|
|
32
|
+
});
|
|
33
|
+
}
|
|
32
34
|
};
|
|
33
35
|
export const getPayloadHMR = async (options)=>{
|
|
34
36
|
if (!options?.config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/getPayloadHMR.ts"],"sourcesContent":["import type { GeneratedTypes, Payload } from 'payload'\nimport type { InitOptions, SanitizedConfig } from 'payload/config'\n\nimport { BasePayload } from 'payload'\nimport WebSocket from 'ws'\n\nlet cached: {\n payload: Payload | null\n promise: Promise<Payload> | null\n reload: Promise<boolean> | boolean\n} = global._payload\n\nif (!cached) {\n // eslint-disable-next-line no-multi-assign\n cached = global._payload = { payload: null, promise: null, reload: false }\n}\n\nexport const reload = async (config: SanitizedConfig, payload: Payload): Promise<void> => {\n if (typeof payload.db.destroy === 'function') {\n await payload.db.destroy()\n }\n\n payload.config = config\n\n payload.collections = config.collections.reduce((collections, collection) => {\n collections[collection.slug] = {\n config: collection,\n customIDType: payload.collections[collection.slug]?.customIDType,\n }\n return collections\n }, {})\n\n payload.globals = {\n config: config.globals,\n }\n\n // TODO: support HMR for other props in the future (see payload/src/index init()) hat may change on Payload singleton\n\n await payload.db.init()\n await payload.db.connect({ hotReload: true })\n}\n\nexport const getPayloadHMR = async (options: InitOptions): Promise<Payload> => {\n if (!options?.config) {\n throw new Error('Error: the payload config is required for getPayload to work.')\n }\n\n if (cached.payload) {\n const config = await options.config // TODO: check if we can move this inside the cached.reload === true condition\n\n if (cached.reload === true) {\n let resolve\n\n cached.reload = new Promise((res) => (resolve = res))\n\n await reload(config, cached.payload)\n\n resolve()\n }\n\n if (cached.reload instanceof Promise) {\n await cached.reload\n }\n\n return cached.payload\n }\n\n if (!cached.promise) {\n cached.promise = new BasePayload<GeneratedTypes>().init(options)\n }\n\n try {\n cached.payload = await cached.promise\n\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n process.env.DISABLE_PAYLOAD_HMR !== 'true'\n ) {\n try {\n const port = process.env.PORT || '3000'\n const ws = new WebSocket(`ws://localhost:${port}/_next/webpack-hmr`)\n\n ws.onmessage = (event) => {\n if (typeof event.data === 'string') {\n const data = JSON.parse(event.data)\n\n if ('action' in data && data.action === 'serverComponentChanges') {\n cached.reload = true\n }\n }\n }\n } catch (_) {\n // swallow e\n }\n }\n } catch (e) {\n cached.promise = null\n throw e\n }\n\n return cached.payload\n}\n"],"names":["BasePayload","WebSocket","cached","global","_payload","payload","promise","reload","config","db","destroy","collections","reduce","collection","slug","customIDType","globals","init","connect","hotReload","getPayloadHMR","options","Error","resolve","Promise","res","process","env","NODE_ENV","DISABLE_PAYLOAD_HMR","port","PORT","ws","onmessage","event","data","JSON","parse","action","_","e"],"rangeMappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/getPayloadHMR.ts"],"sourcesContent":["import type { GeneratedTypes, Payload } from 'payload'\nimport type { InitOptions, SanitizedConfig } from 'payload/config'\n\nimport { BasePayload } from 'payload'\nimport WebSocket from 'ws'\n\nlet cached: {\n payload: Payload | null\n promise: Promise<Payload> | null\n reload: Promise<boolean> | boolean\n} = global._payload\n\nif (!cached) {\n // eslint-disable-next-line no-multi-assign\n cached = global._payload = { payload: null, promise: null, reload: false }\n}\n\nexport const reload = async (config: SanitizedConfig, payload: Payload): Promise<void> => {\n if (typeof payload.db.destroy === 'function') {\n await payload.db.destroy()\n }\n\n payload.config = config\n\n payload.collections = config.collections.reduce((collections, collection) => {\n collections[collection.slug] = {\n config: collection,\n customIDType: payload.collections[collection.slug]?.customIDType,\n }\n return collections\n }, {})\n\n payload.globals = {\n config: config.globals,\n }\n\n // TODO: support HMR for other props in the future (see payload/src/index init()) hat may change on Payload singleton\n\n await payload.db.init()\n if (payload.db.connect) {\n await payload.db.connect({ hotReload: true })\n }\n}\n\nexport const getPayloadHMR = async (options: InitOptions): Promise<Payload> => {\n if (!options?.config) {\n throw new Error('Error: the payload config is required for getPayload to work.')\n }\n\n if (cached.payload) {\n const config = await options.config // TODO: check if we can move this inside the cached.reload === true condition\n\n if (cached.reload === true) {\n let resolve\n\n cached.reload = new Promise((res) => (resolve = res))\n\n await reload(config, cached.payload)\n\n resolve()\n }\n\n if (cached.reload instanceof Promise) {\n await cached.reload\n }\n\n return cached.payload\n }\n\n if (!cached.promise) {\n cached.promise = new BasePayload<GeneratedTypes>().init(options)\n }\n\n try {\n cached.payload = await cached.promise\n\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n process.env.DISABLE_PAYLOAD_HMR !== 'true'\n ) {\n try {\n const port = process.env.PORT || '3000'\n const ws = new WebSocket(`ws://localhost:${port}/_next/webpack-hmr`)\n\n ws.onmessage = (event) => {\n if (typeof event.data === 'string') {\n const data = JSON.parse(event.data)\n\n if ('action' in data && data.action === 'serverComponentChanges') {\n cached.reload = true\n }\n }\n }\n } catch (_) {\n // swallow e\n }\n }\n } catch (e) {\n cached.promise = null\n throw e\n }\n\n return cached.payload\n}\n"],"names":["BasePayload","WebSocket","cached","global","_payload","payload","promise","reload","config","db","destroy","collections","reduce","collection","slug","customIDType","globals","init","connect","hotReload","getPayloadHMR","options","Error","resolve","Promise","res","process","env","NODE_ENV","DISABLE_PAYLOAD_HMR","port","PORT","ws","onmessage","event","data","JSON","parse","action","_","e"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,WAAW,QAAQ,UAAS;AACrC,OAAOC,eAAe,KAAI;AAE1B,IAAIC,SAIAC,OAAOC,QAAQ;AAEnB,IAAI,CAACF,QAAQ;IACX,2CAA2C;IAC3CA,SAASC,OAAOC,QAAQ,GAAG;QAAEC,SAAS;QAAMC,SAAS;QAAMC,QAAQ;IAAM;AAC3E;AAEA,OAAO,MAAMA,SAAS,OAAOC,QAAyBH;IACpD,IAAI,OAAOA,QAAQI,EAAE,CAACC,OAAO,KAAK,YAAY;QAC5C,MAAML,QAAQI,EAAE,CAACC,OAAO;IAC1B;IAEAL,QAAQG,MAAM,GAAGA;IAEjBH,QAAQM,WAAW,GAAGH,OAAOG,WAAW,CAACC,MAAM,CAAC,CAACD,aAAaE;QAC5DF,WAAW,CAACE,WAAWC,IAAI,CAAC,GAAG;YAC7BN,QAAQK;YACRE,cAAcV,QAAQM,WAAW,CAACE,WAAWC,IAAI,CAAC,EAAEC;QACtD;QACA,OAAOJ;IACT,GAAG,CAAC;IAEJN,QAAQW,OAAO,GAAG;QAChBR,QAAQA,OAAOQ,OAAO;IACxB;IAEA,qHAAqH;IAErH,MAAMX,QAAQI,EAAE,CAACQ,IAAI;IACrB,IAAIZ,QAAQI,EAAE,CAACS,OAAO,EAAE;QACtB,MAAMb,QAAQI,EAAE,CAACS,OAAO,CAAC;YAAEC,WAAW;QAAK;IAC7C;AACF,EAAC;AAED,OAAO,MAAMC,gBAAgB,OAAOC;IAClC,IAAI,CAACA,SAASb,QAAQ;QACpB,MAAM,IAAIc,MAAM;IAClB;IAEA,IAAIpB,OAAOG,OAAO,EAAE;QAClB,MAAMG,SAAS,MAAMa,QAAQb,MAAM,CAAC,8EAA8E;;QAElH,IAAIN,OAAOK,MAAM,KAAK,MAAM;YAC1B,IAAIgB;YAEJrB,OAAOK,MAAM,GAAG,IAAIiB,QAAQ,CAACC,MAASF,UAAUE;YAEhD,MAAMlB,OAAOC,QAAQN,OAAOG,OAAO;YAEnCkB;QACF;QAEA,IAAIrB,OAAOK,MAAM,YAAYiB,SAAS;YACpC,MAAMtB,OAAOK,MAAM;QACrB;QAEA,OAAOL,OAAOG,OAAO;IACvB;IAEA,IAAI,CAACH,OAAOI,OAAO,EAAE;QACnBJ,OAAOI,OAAO,GAAG,IAAIN,cAA8BiB,IAAI,CAACI;IAC1D;IAEA,IAAI;QACFnB,OAAOG,OAAO,GAAG,MAAMH,OAAOI,OAAO;QAErC,IACEoB,QAAQC,GAAG,CAACC,QAAQ,KAAK,gBACzBF,QAAQC,GAAG,CAACC,QAAQ,KAAK,UACzBF,QAAQC,GAAG,CAACE,mBAAmB,KAAK,QACpC;YACA,IAAI;gBACF,MAAMC,OAAOJ,QAAQC,GAAG,CAACI,IAAI,IAAI;gBACjC,MAAMC,KAAK,IAAI/B,UAAU,CAAC,eAAe,EAAE6B,KAAK,kBAAkB,CAAC;gBAEnEE,GAAGC,SAAS,GAAG,CAACC;oBACd,IAAI,OAAOA,MAAMC,IAAI,KAAK,UAAU;wBAClC,MAAMA,OAAOC,KAAKC,KAAK,CAACH,MAAMC,IAAI;wBAElC,IAAI,YAAYA,QAAQA,KAAKG,MAAM,KAAK,0BAA0B;4BAChEpC,OAAOK,MAAM,GAAG;wBAClB;oBACF;gBACF;YACF,EAAE,OAAOgC,GAAG;YACV,YAAY;YACd;QACF;IACF,EAAE,OAAOC,GAAG;QACVtC,OAAOI,OAAO,GAAG;QACjB,MAAMkC;IACR;IAEA,OAAOtC,OAAOG,OAAO;AACvB,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRequestLanguage.d.ts","sourceRoot":"","sources":["../../src/utilities/getRequestLanguage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAA;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIrD,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAAA;IACrD,eAAe,CAAC,EAAE,iBAAiB,CAAA;IACnC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,kBAAkB,kCAI5B,sBAAsB,KAAG,
|
|
1
|
+
{"version":3,"file":"getRequestLanguage.d.ts","sourceRoot":"","sources":["../../src/utilities/getRequestLanguage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAA;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIrD,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAAA;IACrD,eAAe,CAAC,EAAE,iBAAiB,CAAA;IACnC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,kBAAkB,kCAI5B,sBAAsB,KAAG,iBAqB3B,CAAA"}
|
|
@@ -3,10 +3,10 @@ export const getRequestLanguage = ({ config, cookies, headers })=>{
|
|
|
3
3
|
const supportedLanguageKeys = Object.keys(config.i18n.supportedLanguages);
|
|
4
4
|
const langCookie = cookies.get(`${config.cookiePrefix || 'payload'}-lng`);
|
|
5
5
|
const languageFromCookie = typeof langCookie === 'string' ? langCookie : langCookie?.value;
|
|
6
|
-
const languageFromHeader = headers.get('Accept-Language') ? extractHeaderLanguage(headers.get('Accept-Language')) : undefined;
|
|
7
6
|
if (languageFromCookie && supportedLanguageKeys.includes(languageFromCookie)) {
|
|
8
7
|
return languageFromCookie;
|
|
9
8
|
}
|
|
9
|
+
const languageFromHeader = headers.get('Accept-Language') ? extractHeaderLanguage(headers.get('Accept-Language')) : undefined;
|
|
10
10
|
if (languageFromHeader && supportedLanguageKeys.includes(languageFromHeader)) {
|
|
11
11
|
return languageFromHeader;
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/getRequestLanguage.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\nimport type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies.js'\nimport type { SanitizedConfig } from 'payload/config'\n\nimport { extractHeaderLanguage } from '@payloadcms/translations'\n\ntype GetRequestLanguageArgs = {\n config: SanitizedConfig\n cookies: Map<string, string> | ReadonlyRequestCookies\n defaultLanguage?: AcceptedLanguages\n headers: Request['headers']\n}\n\nexport const getRequestLanguage = ({\n config,\n cookies,\n headers,\n}: GetRequestLanguageArgs): AcceptedLanguages => {\n const supportedLanguageKeys = <AcceptedLanguages[]>Object.keys(config.i18n.supportedLanguages)\n const langCookie = cookies.get(`${config.cookiePrefix || 'payload'}-lng`)\n const languageFromCookie: AcceptedLanguages = (\n typeof langCookie === 'string' ? langCookie : langCookie?.value\n ) as AcceptedLanguages\n const languageFromHeader = headers.get('Accept-Language')\n ? extractHeaderLanguage(headers.get('Accept-Language'))\n : undefined\n\n if (
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/getRequestLanguage.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\nimport type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies.js'\nimport type { SanitizedConfig } from 'payload/config'\n\nimport { extractHeaderLanguage } from '@payloadcms/translations'\n\ntype GetRequestLanguageArgs = {\n config: SanitizedConfig\n cookies: Map<string, string> | ReadonlyRequestCookies\n defaultLanguage?: AcceptedLanguages\n headers: Request['headers']\n}\n\nexport const getRequestLanguage = ({\n config,\n cookies,\n headers,\n}: GetRequestLanguageArgs): AcceptedLanguages => {\n const supportedLanguageKeys = <AcceptedLanguages[]>Object.keys(config.i18n.supportedLanguages)\n const langCookie = cookies.get(`${config.cookiePrefix || 'payload'}-lng`)\n\n const languageFromCookie: AcceptedLanguages = (\n typeof langCookie === 'string' ? langCookie : langCookie?.value\n ) as AcceptedLanguages\n\n if (languageFromCookie && supportedLanguageKeys.includes(languageFromCookie)) {\n return languageFromCookie\n }\n\n const languageFromHeader = headers.get('Accept-Language')\n ? extractHeaderLanguage(headers.get('Accept-Language'))\n : undefined\n\n if (languageFromHeader && supportedLanguageKeys.includes(languageFromHeader)) {\n return languageFromHeader\n }\n\n return config.i18n.fallbackLanguage\n}\n"],"names":["extractHeaderLanguage","getRequestLanguage","config","cookies","headers","supportedLanguageKeys","Object","keys","i18n","supportedLanguages","langCookie","get","cookiePrefix","languageFromCookie","value","includes","languageFromHeader","undefined","fallbackLanguage"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAIA,SAASA,qBAAqB,QAAQ,2BAA0B;AAShE,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,MAAM,EACNC,OAAO,EACPC,OAAO,EACgB;IACvB,MAAMC,wBAA6CC,OAAOC,IAAI,CAACL,OAAOM,IAAI,CAACC,kBAAkB;IAC7F,MAAMC,aAAaP,QAAQQ,GAAG,CAAC,CAAC,EAAET,OAAOU,YAAY,IAAI,UAAU,IAAI,CAAC;IAExE,MAAMC,qBACJ,OAAOH,eAAe,WAAWA,aAAaA,YAAYI;IAG5D,IAAID,sBAAsBR,sBAAsBU,QAAQ,CAACF,qBAAqB;QAC5E,OAAOA;IACT;IAEA,MAAMG,qBAAqBZ,QAAQO,GAAG,CAAC,qBACnCX,sBAAsBI,QAAQO,GAAG,CAAC,sBAClCM;IAEJ,IAAID,sBAAsBX,sBAAsBU,QAAQ,CAACC,qBAAqB;QAC5E,OAAOA;IACT;IAEA,OAAOd,OAAOM,IAAI,CAACU,gBAAgB;AACrC,EAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Theme } from '@payloadcms/ui/providers/Theme';
|
|
2
|
+
import type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies.js';
|
|
3
|
+
import type { SanitizedConfig } from 'payload/config';
|
|
4
|
+
type GetRequestLanguageArgs = {
|
|
5
|
+
config: SanitizedConfig;
|
|
6
|
+
cookies: Map<string, string> | ReadonlyRequestCookies;
|
|
7
|
+
headers: Request['headers'];
|
|
8
|
+
};
|
|
9
|
+
export declare const getRequestTheme: ({ config, cookies, headers }: GetRequestLanguageArgs) => Theme;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=getRequestTheme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRequestTheme.d.ts","sourceRoot":"","sources":["../../src/utilities/getRequestTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAA;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIrD,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAAA;IACrD,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;CAC5B,CAAA;AAID,eAAO,MAAM,eAAe,iCAAkC,sBAAsB,KAAG,KAkBtF,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { defaultTheme } from '@payloadcms/ui/providers/Theme';
|
|
2
|
+
const acceptedThemes = [
|
|
3
|
+
'dark',
|
|
4
|
+
'light'
|
|
5
|
+
];
|
|
6
|
+
export const getRequestTheme = ({ config, cookies, headers })=>{
|
|
7
|
+
const themeCookie = cookies.get(`${config.cookiePrefix || 'payload'}-theme`);
|
|
8
|
+
const themeFromCookie = typeof themeCookie === 'string' ? themeCookie : themeCookie?.value;
|
|
9
|
+
if (themeFromCookie && acceptedThemes.includes(themeFromCookie)) {
|
|
10
|
+
return themeFromCookie;
|
|
11
|
+
}
|
|
12
|
+
const themeFromHeader = headers.get('Sec-CH-Prefers-Color-Scheme');
|
|
13
|
+
if (themeFromHeader && acceptedThemes.includes(themeFromHeader)) {
|
|
14
|
+
return themeFromHeader;
|
|
15
|
+
}
|
|
16
|
+
return defaultTheme;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=getRequestTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/getRequestTheme.ts"],"sourcesContent":["import type { Theme } from '@payloadcms/ui/providers/Theme'\nimport type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies.js'\nimport type { SanitizedConfig } from 'payload/config'\n\nimport { defaultTheme } from '@payloadcms/ui/providers/Theme'\n\ntype GetRequestLanguageArgs = {\n config: SanitizedConfig\n cookies: Map<string, string> | ReadonlyRequestCookies\n headers: Request['headers']\n}\n\nconst acceptedThemes: Theme[] = ['dark', 'light']\n\nexport const getRequestTheme = ({ config, cookies, headers }: GetRequestLanguageArgs): Theme => {\n const themeCookie = cookies.get(`${config.cookiePrefix || 'payload'}-theme`)\n\n const themeFromCookie: Theme = (\n typeof themeCookie === 'string' ? themeCookie : themeCookie?.value\n ) as Theme\n\n if (themeFromCookie && acceptedThemes.includes(themeFromCookie)) {\n return themeFromCookie\n }\n\n const themeFromHeader = headers.get('Sec-CH-Prefers-Color-Scheme') as Theme\n\n if (themeFromHeader && acceptedThemes.includes(themeFromHeader)) {\n return themeFromHeader\n }\n\n return defaultTheme\n}\n"],"names":["defaultTheme","acceptedThemes","getRequestTheme","config","cookies","headers","themeCookie","get","cookiePrefix","themeFromCookie","value","includes","themeFromHeader"],"rangeMappings":";;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,YAAY,QAAQ,iCAAgC;AAQ7D,MAAMC,iBAA0B;IAAC;IAAQ;CAAQ;AAEjD,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAA0B;IAClF,MAAMC,cAAcF,QAAQG,GAAG,CAAC,CAAC,EAAEJ,OAAOK,YAAY,IAAI,UAAU,MAAM,CAAC;IAE3E,MAAMC,kBACJ,OAAOH,gBAAgB,WAAWA,cAAcA,aAAaI;IAG/D,IAAID,mBAAmBR,eAAeU,QAAQ,CAACF,kBAAkB;QAC/D,OAAOA;IACT;IAEA,MAAMG,kBAAkBP,QAAQE,GAAG,CAAC;IAEpC,IAAIK,mBAAmBX,eAAeU,QAAQ,CAACC,kBAAkB;QAC/D,OAAOA;IACT;IAEA,OAAOZ;AACT,EAAC"}
|
|
@@ -21,7 +21,7 @@ export const handleAdminPage = ({ adminRoute, config, permissions, route })=>{
|
|
|
21
21
|
notFound();
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
if (!permissions.canAccessAdmin && !isAdminAuthRoute(route, adminRoute)) {
|
|
24
|
+
if (!permissions.canAccessAdmin && !isAdminAuthRoute(config, route, adminRoute)) {
|
|
25
25
|
notFound();
|
|
26
26
|
}
|
|
27
27
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utilities/initPage/handleAdminPage.ts"],"sourcesContent":["import type { Permissions } from 'payload/auth'\nimport type {\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload/types'\n\nimport { notFound } from 'next/navigation.js'\n\nimport { isAdminAuthRoute, isAdminRoute } from './shared.js'\n\nexport const handleAdminPage = ({\n adminRoute,\n config,\n permissions,\n route,\n}: {\n adminRoute: string\n config: SanitizedConfig\n permissions: Permissions\n route: string\n}) => {\n if (isAdminRoute(route, adminRoute)) {\n const routeSegments = route.replace(adminRoute, '').split('/').filter(Boolean)\n const [entityType, entitySlug, createOrID] = routeSegments\n const collectionSlug = entityType === 'collections' ? entitySlug : undefined\n const globalSlug = entityType === 'globals' ? entitySlug : undefined\n const docID = collectionSlug && createOrID !== 'create' ? createOrID : undefined\n\n let collectionConfig: SanitizedCollectionConfig | undefined\n let globalConfig: SanitizedGlobalConfig | undefined\n\n if (collectionSlug) {\n collectionConfig = config.collections.find((collection) => collection.slug === collectionSlug)\n\n if (!collectionConfig) {\n notFound()\n }\n }\n\n if (globalSlug) {\n globalConfig = config.globals.find((global) => global.slug === globalSlug)\n\n if (!globalConfig) {\n notFound()\n }\n }\n\n if (!permissions.canAccessAdmin && !isAdminAuthRoute(route, adminRoute)) {\n notFound()\n }\n\n return {\n collectionConfig,\n docID,\n globalConfig,\n }\n }\n}\n"],"names":["notFound","isAdminAuthRoute","isAdminRoute","handleAdminPage","adminRoute","config","permissions","route","routeSegments","replace","split","filter","Boolean","entityType","entitySlug","createOrID","collectionSlug","undefined","globalSlug","docID","collectionConfig","globalConfig","collections","find","collection","slug","globals","global","canAccessAdmin"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAOA,SAASA,QAAQ,QAAQ,qBAAoB;AAE7C,SAASC,gBAAgB,EAAEC,YAAY,QAAQ,cAAa;AAE5D,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,UAAU,EACVC,MAAM,EACNC,WAAW,EACXC,KAAK,EAMN;IACC,IAAIL,aAAaK,OAAOH,aAAa;QACnC,MAAMI,gBAAgBD,MAAME,OAAO,CAACL,YAAY,IAAIM,KAAK,CAAC,KAAKC,MAAM,CAACC;QACtE,MAAM,CAACC,YAAYC,YAAYC,WAAW,GAAGP;QAC7C,MAAMQ,iBAAiBH,eAAe,gBAAgBC,aAAaG;QACnE,MAAMC,aAAaL,eAAe,YAAYC,aAAaG;QAC3D,MAAME,QAAQH,kBAAkBD,eAAe,WAAWA,aAAaE;QAEvE,IAAIG;QACJ,IAAIC;QAEJ,IAAIL,gBAAgB;YAClBI,mBAAmBf,OAAOiB,WAAW,CAACC,IAAI,CAAC,CAACC,aAAeA,WAAWC,IAAI,KAAKT;YAE/E,IAAI,CAACI,kBAAkB;gBACrBpB;YACF;QACF;QAEA,IAAIkB,YAAY;YACdG,eAAehB,OAAOqB,OAAO,CAACH,IAAI,CAAC,CAACI,SAAWA,OAAOF,IAAI,KAAKP;YAE/D,IAAI,CAACG,cAAc;gBACjBrB;YACF;QACF;QAEA,IAAI,CAACM,YAAYsB,cAAc,IAAI,CAAC3B,
|
|
1
|
+
{"version":3,"sources":["../../../src/utilities/initPage/handleAdminPage.ts"],"sourcesContent":["import type { Permissions } from 'payload/auth'\nimport type {\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload/types'\n\nimport { notFound } from 'next/navigation.js'\n\nimport { isAdminAuthRoute, isAdminRoute } from './shared.js'\n\nexport const handleAdminPage = ({\n adminRoute,\n config,\n permissions,\n route,\n}: {\n adminRoute: string\n config: SanitizedConfig\n permissions: Permissions\n route: string\n}) => {\n if (isAdminRoute(route, adminRoute)) {\n const routeSegments = route.replace(adminRoute, '').split('/').filter(Boolean)\n const [entityType, entitySlug, createOrID] = routeSegments\n const collectionSlug = entityType === 'collections' ? entitySlug : undefined\n const globalSlug = entityType === 'globals' ? entitySlug : undefined\n const docID = collectionSlug && createOrID !== 'create' ? createOrID : undefined\n\n let collectionConfig: SanitizedCollectionConfig | undefined\n let globalConfig: SanitizedGlobalConfig | undefined\n\n if (collectionSlug) {\n collectionConfig = config.collections.find((collection) => collection.slug === collectionSlug)\n\n if (!collectionConfig) {\n notFound()\n }\n }\n\n if (globalSlug) {\n globalConfig = config.globals.find((global) => global.slug === globalSlug)\n\n if (!globalConfig) {\n notFound()\n }\n }\n\n if (!permissions.canAccessAdmin && !isAdminAuthRoute(config, route, adminRoute)) {\n notFound()\n }\n\n return {\n collectionConfig,\n docID,\n globalConfig,\n }\n }\n}\n"],"names":["notFound","isAdminAuthRoute","isAdminRoute","handleAdminPage","adminRoute","config","permissions","route","routeSegments","replace","split","filter","Boolean","entityType","entitySlug","createOrID","collectionSlug","undefined","globalSlug","docID","collectionConfig","globalConfig","collections","find","collection","slug","globals","global","canAccessAdmin"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAOA,SAASA,QAAQ,QAAQ,qBAAoB;AAE7C,SAASC,gBAAgB,EAAEC,YAAY,QAAQ,cAAa;AAE5D,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,UAAU,EACVC,MAAM,EACNC,WAAW,EACXC,KAAK,EAMN;IACC,IAAIL,aAAaK,OAAOH,aAAa;QACnC,MAAMI,gBAAgBD,MAAME,OAAO,CAACL,YAAY,IAAIM,KAAK,CAAC,KAAKC,MAAM,CAACC;QACtE,MAAM,CAACC,YAAYC,YAAYC,WAAW,GAAGP;QAC7C,MAAMQ,iBAAiBH,eAAe,gBAAgBC,aAAaG;QACnE,MAAMC,aAAaL,eAAe,YAAYC,aAAaG;QAC3D,MAAME,QAAQH,kBAAkBD,eAAe,WAAWA,aAAaE;QAEvE,IAAIG;QACJ,IAAIC;QAEJ,IAAIL,gBAAgB;YAClBI,mBAAmBf,OAAOiB,WAAW,CAACC,IAAI,CAAC,CAACC,aAAeA,WAAWC,IAAI,KAAKT;YAE/E,IAAI,CAACI,kBAAkB;gBACrBpB;YACF;QACF;QAEA,IAAIkB,YAAY;YACdG,eAAehB,OAAOqB,OAAO,CAACH,IAAI,CAAC,CAACI,SAAWA,OAAOF,IAAI,KAAKP;YAE/D,IAAI,CAACG,cAAc;gBACjBrB;YACF;QACF;QAEA,IAAI,CAACM,YAAYsB,cAAc,IAAI,CAAC3B,iBAAiBI,QAAQE,OAAOH,aAAa;YAC/EJ;QACF;QAEA,OAAO;YACLoB;YACAD;YACAE;QACF;IACF;AACF,EAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare const handleAuthRedirect: ({
|
|
2
|
-
|
|
1
|
+
export declare const handleAuthRedirect: ({ config, redirectUnauthenticatedUser, route, searchParams, }: {
|
|
2
|
+
config;
|
|
3
3
|
redirectUnauthenticatedUser: boolean | string;
|
|
4
4
|
route: string;
|
|
5
5
|
searchParams: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleAuthRedirect.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"handleAuthRedirect.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,kBAAkB,kEAK5B;IACD,MAAM,CAAA;IACN,2BAA2B,EAAE,OAAO,GAAG,MAAM,CAAA;IAC7C,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CACnD,SAsCA,CAAA"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { redirect } from 'next/navigation.js';
|
|
2
2
|
import QueryString from 'qs';
|
|
3
3
|
import { isAdminAuthRoute, isAdminRoute } from './shared.js';
|
|
4
|
-
export const handleAuthRedirect = ({
|
|
5
|
-
|
|
4
|
+
export const handleAuthRedirect = ({ config, redirectUnauthenticatedUser, route, searchParams })=>{
|
|
5
|
+
const { admin: { routes: { login: loginRouteFromConfig } }, routes: { admin: adminRoute } } = config;
|
|
6
|
+
if (!isAdminAuthRoute(config, route, adminRoute)) {
|
|
6
7
|
if (searchParams && 'redirect' in searchParams) delete searchParams.redirect;
|
|
7
8
|
const redirectRoute = encodeURIComponent(route + Object.keys(searchParams ?? {}).length ? `${QueryString.stringify(searchParams, {
|
|
8
9
|
addQueryPrefix: true
|
|
9
10
|
})}` : undefined);
|
|
10
|
-
const adminLoginRoute = `${adminRoute}
|
|
11
|
+
const adminLoginRoute = `${adminRoute}${loginRouteFromConfig}`;
|
|
11
12
|
const customLoginRoute = typeof redirectUnauthenticatedUser === 'string' ? redirectUnauthenticatedUser : undefined;
|
|
12
|
-
const loginRoute = isAdminRoute(route, adminRoute) ? adminLoginRoute : customLoginRoute ||
|
|
13
|
+
const loginRoute = isAdminRoute(route, adminRoute) ? adminLoginRoute : customLoginRoute || loginRouteFromConfig;
|
|
13
14
|
const parsedLoginRouteSearchParams = QueryString.parse(loginRoute.split('?')[1] ?? '');
|
|
14
15
|
const searchParamsWithRedirect = `${QueryString.stringify({
|
|
15
16
|
...parsedLoginRouteSearchParams,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"sourcesContent":["import { redirect } from 'next/navigation.js'\nimport QueryString from 'qs'\n\nimport { isAdminAuthRoute, isAdminRoute } from './shared.js'\n\nexport const handleAuthRedirect = ({\n
|
|
1
|
+
{"version":3,"sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"sourcesContent":["import { redirect } from 'next/navigation.js'\nimport QueryString from 'qs'\n\nimport { isAdminAuthRoute, isAdminRoute } from './shared.js'\n\nexport const handleAuthRedirect = ({\n config,\n redirectUnauthenticatedUser,\n route,\n searchParams,\n}: {\n config\n redirectUnauthenticatedUser: boolean | string\n route: string\n searchParams: { [key: string]: string | string[] }\n}) => {\n const {\n admin: {\n routes: { login: loginRouteFromConfig },\n },\n routes: { admin: adminRoute },\n } = config\n\n if (!isAdminAuthRoute(config, route, adminRoute)) {\n if (searchParams && 'redirect' in searchParams) delete searchParams.redirect\n\n const redirectRoute = encodeURIComponent(\n route + Object.keys(searchParams ?? {}).length\n ? `${QueryString.stringify(searchParams, { addQueryPrefix: true })}`\n : undefined,\n )\n\n const adminLoginRoute = `${adminRoute}${loginRouteFromConfig}`\n\n const customLoginRoute =\n typeof redirectUnauthenticatedUser === 'string' ? redirectUnauthenticatedUser : undefined\n\n const loginRoute = isAdminRoute(route, adminRoute)\n ? adminLoginRoute\n : customLoginRoute || loginRouteFromConfig\n\n const parsedLoginRouteSearchParams = QueryString.parse(loginRoute.split('?')[1] ?? '')\n\n const searchParamsWithRedirect = `${QueryString.stringify(\n {\n ...parsedLoginRouteSearchParams,\n ...(redirectRoute ? { redirect: redirectRoute } : {}),\n },\n { addQueryPrefix: true },\n )}`\n\n redirect(`${loginRoute.split('?')[0]}${searchParamsWithRedirect}`)\n }\n}\n"],"names":["redirect","QueryString","isAdminAuthRoute","isAdminRoute","handleAuthRedirect","config","redirectUnauthenticatedUser","route","searchParams","admin","routes","login","loginRouteFromConfig","adminRoute","redirectRoute","encodeURIComponent","Object","keys","length","stringify","addQueryPrefix","undefined","adminLoginRoute","customLoginRoute","loginRoute","parsedLoginRouteSearchParams","parse","split","searchParamsWithRedirect"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,QAAQ,QAAQ,qBAAoB;AAC7C,OAAOC,iBAAiB,KAAI;AAE5B,SAASC,gBAAgB,EAAEC,YAAY,QAAQ,cAAa;AAE5D,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,MAAM,EACNC,2BAA2B,EAC3BC,KAAK,EACLC,YAAY,EAMb;IACC,MAAM,EACJC,OAAO,EACLC,QAAQ,EAAEC,OAAOC,oBAAoB,EAAE,EACxC,EACDF,QAAQ,EAAED,OAAOI,UAAU,EAAE,EAC9B,GAAGR;IAEJ,IAAI,CAACH,iBAAiBG,QAAQE,OAAOM,aAAa;QAChD,IAAIL,gBAAgB,cAAcA,cAAc,OAAOA,aAAaR,QAAQ;QAE5E,MAAMc,gBAAgBC,mBACpBR,QAAQS,OAAOC,IAAI,CAACT,gBAAgB,CAAC,GAAGU,MAAM,GAC1C,CAAC,EAAEjB,YAAYkB,SAAS,CAACX,cAAc;YAAEY,gBAAgB;QAAK,GAAG,CAAC,GAClEC;QAGN,MAAMC,kBAAkB,CAAC,EAAET,WAAW,EAAED,qBAAqB,CAAC;QAE9D,MAAMW,mBACJ,OAAOjB,gCAAgC,WAAWA,8BAA8Be;QAElF,MAAMG,aAAarB,aAAaI,OAAOM,cACnCS,kBACAC,oBAAoBX;QAExB,MAAMa,+BAA+BxB,YAAYyB,KAAK,CAACF,WAAWG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI;QAEnF,MAAMC,2BAA2B,CAAC,EAAE3B,YAAYkB,SAAS,CACvD;YACE,GAAGM,4BAA4B;YAC/B,GAAIX,gBAAgB;gBAAEd,UAAUc;YAAc,IAAI,CAAC,CAAC;QACtD,GACA;YAAEM,gBAAgB;QAAK,GACvB,CAAC;QAEHpB,SAAS,CAAC,EAAEwB,WAAWG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAEC,yBAAyB,CAAC;IACnE;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,eAAe,CAAA;AAS5F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAOtC,eAAO,MAAM,QAAQ,iFAKlB,IAAI,KAAG,QAAQ,cAAc,CAmG/B,CAAA"}
|
|
@@ -32,10 +32,20 @@ export const initPage = async ({ config: configPromise, redirectUnauthenticatedU
|
|
|
32
32
|
context: 'client',
|
|
33
33
|
language
|
|
34
34
|
});
|
|
35
|
+
const languageOptions = Object.entries(payload.config.i18n.supportedLanguages || {}).reduce((acc, [language, languageConfig])=>{
|
|
36
|
+
if (Object.keys(payload.config.i18n.supportedLanguages).includes(language)) {
|
|
37
|
+
acc.push({
|
|
38
|
+
label: languageConfig.translations.general.thisLanguage,
|
|
39
|
+
value: language
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return acc;
|
|
43
|
+
}, []);
|
|
35
44
|
const req = await createLocalReq({
|
|
36
45
|
fallbackLocale: null,
|
|
37
46
|
locale: locale.code,
|
|
38
47
|
req: {
|
|
48
|
+
host: headers.get('host'),
|
|
39
49
|
i18n,
|
|
40
50
|
query: qs.parse(queryString, {
|
|
41
51
|
depth: 10,
|
|
@@ -61,7 +71,7 @@ export const initPage = async ({ config: configPromise, redirectUnauthenticatedU
|
|
|
61
71
|
};
|
|
62
72
|
if (redirectUnauthenticatedUser && !user) {
|
|
63
73
|
handleAuthRedirect({
|
|
64
|
-
|
|
74
|
+
config: payload.config,
|
|
65
75
|
redirectUnauthenticatedUser,
|
|
66
76
|
route,
|
|
67
77
|
searchParams
|
|
@@ -78,6 +88,7 @@ export const initPage = async ({ config: configPromise, redirectUnauthenticatedU
|
|
|
78
88
|
cookies,
|
|
79
89
|
docID,
|
|
80
90
|
globalConfig,
|
|
91
|
+
languageOptions,
|
|
81
92
|
locale,
|
|
82
93
|
permissions,
|
|
83
94
|
req,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utilities/initPage/index.ts"],"sourcesContent":["import type { InitPageResult, PayloadRequestWithData, VisibleEntities } from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { findLocaleFromCode } from '@payloadcms/ui/utilities/findLocaleFromCode'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { parseCookies } from 'payload/auth'\nimport { createLocalReq, isEntityHidden } from 'payload/utilities'\nimport qs from 'qs'\n\nimport type { Args } from './types.js'\n\nimport { getPayloadHMR } from '../getPayloadHMR.js'\nimport { getRequestLanguage } from '../getRequestLanguage.js'\nimport { handleAdminPage } from './handleAdminPage.js'\nimport { handleAuthRedirect } from './handleAuthRedirect.js'\n\nexport const initPage = async ({\n config: configPromise,\n redirectUnauthenticatedUser = false,\n route,\n searchParams,\n}: Args): Promise<InitPageResult> => {\n const headers = getHeaders()\n const localeParam = searchParams?.locale as string\n const payload = await getPayloadHMR({ config: configPromise })\n\n const {\n collections,\n globals,\n i18n: i18nConfig,\n localization,\n routes: { admin: adminRoute },\n } = payload.config\n\n const queryString = `${qs.stringify(searchParams ?? {}, { addQueryPrefix: true })}`\n const defaultLocale =\n localization && localization.defaultLocale ? localization.defaultLocale : 'en'\n const localeCode = localeParam || defaultLocale\n const locale = localization && findLocaleFromCode(localization, localeCode)\n const cookies = parseCookies(headers)\n const language = getRequestLanguage({ config: payload.config, cookies, headers })\n\n const i18n = await initI18n({\n config: i18nConfig,\n context: 'client',\n language,\n })\n\n const req = await createLocalReq(\n {\n fallbackLocale: null,\n locale: locale.code,\n req: {\n i18n,\n query: qs.parse(queryString, {\n depth: 10,\n ignoreQueryPrefix: true,\n }),\n url: `${payload.config.serverURL}${route}${searchParams ? queryString : ''}`,\n } as PayloadRequestWithData,\n },\n payload,\n )\n\n const { permissions, user } = await payload.auth({ headers, req })\n\n req.user = user\n\n const visibleEntities: VisibleEntities = {\n collections: collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n if (redirectUnauthenticatedUser && !user) {\n handleAuthRedirect({\n
|
|
1
|
+
{"version":3,"sources":["../../../src/utilities/initPage/index.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { InitPageResult, PayloadRequestWithData, VisibleEntities } from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { findLocaleFromCode } from '@payloadcms/ui/utilities/findLocaleFromCode'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { parseCookies } from 'payload/auth'\nimport { createLocalReq, isEntityHidden } from 'payload/utilities'\nimport qs from 'qs'\n\nimport type { Args } from './types.js'\n\nimport { getPayloadHMR } from '../getPayloadHMR.js'\nimport { getRequestLanguage } from '../getRequestLanguage.js'\nimport { handleAdminPage } from './handleAdminPage.js'\nimport { handleAuthRedirect } from './handleAuthRedirect.js'\n\nexport const initPage = async ({\n config: configPromise,\n redirectUnauthenticatedUser = false,\n route,\n searchParams,\n}: Args): Promise<InitPageResult> => {\n const headers = getHeaders()\n const localeParam = searchParams?.locale as string\n const payload = await getPayloadHMR({ config: configPromise })\n\n const {\n collections,\n globals,\n i18n: i18nConfig,\n localization,\n routes: { admin: adminRoute },\n } = payload.config\n\n const queryString = `${qs.stringify(searchParams ?? {}, { addQueryPrefix: true })}`\n const defaultLocale =\n localization && localization.defaultLocale ? localization.defaultLocale : 'en'\n const localeCode = localeParam || defaultLocale\n const locale = localization && findLocaleFromCode(localization, localeCode)\n const cookies = parseCookies(headers)\n const language = getRequestLanguage({ config: payload.config, cookies, headers })\n\n const i18n: I18nClient = await initI18n({\n config: i18nConfig,\n context: 'client',\n language,\n })\n\n const languageOptions = Object.entries(payload.config.i18n.supportedLanguages || {}).reduce(\n (acc, [language, languageConfig]) => {\n if (Object.keys(payload.config.i18n.supportedLanguages).includes(language)) {\n acc.push({\n label: languageConfig.translations.general.thisLanguage,\n value: language,\n })\n }\n\n return acc\n },\n [],\n )\n\n const req = await createLocalReq(\n {\n fallbackLocale: null,\n locale: locale.code,\n req: {\n host: headers.get('host'),\n i18n,\n query: qs.parse(queryString, {\n depth: 10,\n ignoreQueryPrefix: true,\n }),\n url: `${payload.config.serverURL}${route}${searchParams ? queryString : ''}`,\n } as PayloadRequestWithData,\n },\n payload,\n )\n\n const { permissions, user } = await payload.auth({ headers, req })\n\n req.user = user\n\n const visibleEntities: VisibleEntities = {\n collections: collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n if (redirectUnauthenticatedUser && !user) {\n handleAuthRedirect({\n config: payload.config,\n redirectUnauthenticatedUser,\n route,\n searchParams,\n })\n }\n\n const { collectionConfig, docID, globalConfig } = handleAdminPage({\n adminRoute,\n config: payload.config,\n permissions,\n route,\n })\n\n return {\n collectionConfig,\n cookies,\n docID,\n globalConfig,\n languageOptions,\n locale,\n permissions,\n req,\n translations: i18n.translations,\n visibleEntities,\n }\n}\n"],"names":["initI18n","findLocaleFromCode","headers","getHeaders","parseCookies","createLocalReq","isEntityHidden","qs","getPayloadHMR","getRequestLanguage","handleAdminPage","handleAuthRedirect","initPage","config","configPromise","redirectUnauthenticatedUser","route","searchParams","localeParam","locale","payload","collections","globals","i18n","i18nConfig","localization","routes","admin","adminRoute","queryString","stringify","addQueryPrefix","defaultLocale","localeCode","cookies","language","context","languageOptions","Object","entries","supportedLanguages","reduce","acc","languageConfig","keys","includes","push","label","translations","general","thisLanguage","value","req","fallbackLocale","code","host","get","query","parse","depth","ignoreQueryPrefix","url","serverURL","permissions","user","auth","visibleEntities","map","slug","hidden","filter","Boolean","collectionConfig","docID","globalConfig"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,kBAAkB,QAAQ,8CAA6C;AAChF,SAASC,WAAWC,UAAU,QAAQ,kBAAiB;AACvD,SAASC,YAAY,QAAQ,eAAc;AAC3C,SAASC,cAAc,EAAEC,cAAc,QAAQ,oBAAmB;AAClE,OAAOC,QAAQ,KAAI;AAInB,SAASC,aAAa,QAAQ,sBAAqB;AACnD,SAASC,kBAAkB,QAAQ,2BAA0B;AAC7D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D,OAAO,MAAMC,WAAW,OAAO,EAC7BC,QAAQC,aAAa,EACrBC,8BAA8B,KAAK,EACnCC,KAAK,EACLC,YAAY,EACP;IACL,MAAMf,UAAUC;IAChB,MAAMe,cAAcD,cAAcE;IAClC,MAAMC,UAAU,MAAMZ,cAAc;QAAEK,QAAQC;IAAc;IAE5D,MAAM,EACJO,WAAW,EACXC,OAAO,EACPC,MAAMC,UAAU,EAChBC,YAAY,EACZC,QAAQ,EAAEC,OAAOC,UAAU,EAAE,EAC9B,GAAGR,QAAQP,MAAM;IAElB,MAAMgB,cAAc,CAAC,EAAEtB,GAAGuB,SAAS,CAACb,gBAAgB,CAAC,GAAG;QAAEc,gBAAgB;IAAK,GAAG,CAAC;IACnF,MAAMC,gBACJP,gBAAgBA,aAAaO,aAAa,GAAGP,aAAaO,aAAa,GAAG;IAC5E,MAAMC,aAAaf,eAAec;IAClC,MAAMb,SAASM,gBAAgBxB,mBAAmBwB,cAAcQ;IAChE,MAAMC,UAAU9B,aAAaF;IAC7B,MAAMiC,WAAW1B,mBAAmB;QAAEI,QAAQO,QAAQP,MAAM;QAAEqB;QAAShC;IAAQ;IAE/E,MAAMqB,OAAmB,MAAMvB,SAAS;QACtCa,QAAQW;QACRY,SAAS;QACTD;IACF;IAEA,MAAME,kBAAkBC,OAAOC,OAAO,CAACnB,QAAQP,MAAM,CAACU,IAAI,CAACiB,kBAAkB,IAAI,CAAC,GAAGC,MAAM,CACzF,CAACC,KAAK,CAACP,UAAUQ,eAAe;QAC9B,IAAIL,OAAOM,IAAI,CAACxB,QAAQP,MAAM,CAACU,IAAI,CAACiB,kBAAkB,EAAEK,QAAQ,CAACV,WAAW;YAC1EO,IAAII,IAAI,CAAC;gBACPC,OAAOJ,eAAeK,YAAY,CAACC,OAAO,CAACC,YAAY;gBACvDC,OAAOhB;YACT;QACF;QAEA,OAAOO;IACT,GACA,EAAE;IAGJ,MAAMU,MAAM,MAAM/C,eAChB;QACEgD,gBAAgB;QAChBlC,QAAQA,OAAOmC,IAAI;QACnBF,KAAK;YACHG,MAAMrD,QAAQsD,GAAG,CAAC;YAClBjC;YACAkC,OAAOlD,GAAGmD,KAAK,CAAC7B,aAAa;gBAC3B8B,OAAO;gBACPC,mBAAmB;YACrB;YACAC,KAAK,CAAC,EAAEzC,QAAQP,MAAM,CAACiD,SAAS,CAAC,EAAE9C,MAAM,EAAEC,eAAeY,cAAc,GAAG,CAAC;QAC9E;IACF,GACAT;IAGF,MAAM,EAAE2C,WAAW,EAAEC,IAAI,EAAE,GAAG,MAAM5C,QAAQ6C,IAAI,CAAC;QAAE/D;QAASkD;IAAI;IAEhEA,IAAIY,IAAI,GAAGA;IAEX,MAAME,kBAAmC;QACvC7C,aAAaA,YACV8C,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAEzC,OAAO,EAAE0C,MAAM,EAAE,EAAE,GAAM,CAAC/D,eAAe;gBAAE+D;gBAAQL;YAAK,KAAKI,OAAO,MACjFE,MAAM,CAACC;QACVjD,SAASA,QACN6C,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAEzC,OAAO,EAAE0C,MAAM,EAAE,EAAE,GAAM,CAAC/D,eAAe;gBAAE+D;gBAAQL;YAAK,KAAKI,OAAO,MACjFE,MAAM,CAACC;IACZ;IAEA,IAAIxD,+BAA+B,CAACiD,MAAM;QACxCrD,mBAAmB;YACjBE,QAAQO,QAAQP,MAAM;YACtBE;YACAC;YACAC;QACF;IACF;IAEA,MAAM,EAAEuD,gBAAgB,EAAEC,KAAK,EAAEC,YAAY,EAAE,GAAGhE,gBAAgB;QAChEkB;QACAf,QAAQO,QAAQP,MAAM;QACtBkD;QACA/C;IACF;IAEA,OAAO;QACLwD;QACAtC;QACAuC;QACAC;QACArC;QACAlB;QACA4C;QACAX;QACAJ,cAAczB,KAAKyB,YAAY;QAC/BkB;IACF;AACF,EAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import type { SanitizedConfig } from 'payload/types';
|
|
2
2
|
export declare const isAdminRoute: (route: string, adminRoute: string) => boolean;
|
|
3
|
-
export declare const isAdminAuthRoute: (route: string, adminRoute: string) => boolean;
|
|
3
|
+
export declare const isAdminAuthRoute: (config: SanitizedConfig, route: string, adminRoute: string) => boolean;
|
|
4
4
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/shared.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAYpD,eAAO,MAAM,YAAY,UAAW,MAAM,cAAc,MAAM,YAE7D,CAAA;AAED,eAAO,MAAM,gBAAgB,WAAY,eAAe,SAAS,MAAM,cAAc,MAAM,YAQ1F,CAAA"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
'
|
|
3
|
-
'
|
|
4
|
-
'
|
|
5
|
-
'
|
|
6
|
-
'
|
|
7
|
-
'
|
|
8
|
-
'
|
|
1
|
+
const authRouteKeys = [
|
|
2
|
+
'createFirstUser',
|
|
3
|
+
'forgot',
|
|
4
|
+
'login',
|
|
5
|
+
'logout',
|
|
6
|
+
'forgot',
|
|
7
|
+
'inactivity',
|
|
8
|
+
'unauthorized'
|
|
9
9
|
];
|
|
10
10
|
export const isAdminRoute = (route, adminRoute)=>{
|
|
11
11
|
return route.startsWith(adminRoute);
|
|
12
12
|
};
|
|
13
|
-
export const isAdminAuthRoute = (route, adminRoute)=>{
|
|
13
|
+
export const isAdminAuthRoute = (config, route, adminRoute)=>{
|
|
14
|
+
const authRoutes = config.admin?.routes ? Object.entries(config.admin.routes).filter(([key])=>authRouteKeys.includes(key)).map(([_, value])=>value) : [];
|
|
14
15
|
return authRoutes.some((r)=>route.replace(adminRoute, '').startsWith(r));
|
|
15
16
|
};
|
|
16
17
|
|