@strapi/admin 4.16.2 → 4.17.1
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/_chunks/AdminSeatInfo-390d8989.js +164 -0
- package/dist/_chunks/AdminSeatInfo-390d8989.js.map +1 -0
- package/dist/_chunks/AdminSeatInfo-bb59ad1f.mjs +164 -0
- package/dist/_chunks/AdminSeatInfo-bb59ad1f.mjs.map +1 -0
- package/dist/_chunks/AuthenticatedApp-b186733c.js +1477 -0
- package/dist/_chunks/AuthenticatedApp-b186733c.js.map +1 -0
- package/dist/_chunks/AuthenticatedApp-b723bf94.mjs +1451 -0
- package/dist/_chunks/AuthenticatedApp-b723bf94.mjs.map +1 -0
- package/dist/_chunks/CreateActionEE-42bd2b19.js +63 -0
- package/dist/_chunks/CreateActionEE-42bd2b19.js.map +1 -0
- package/dist/_chunks/CreateActionEE-eadd5955.mjs +60 -0
- package/dist/_chunks/CreateActionEE-eadd5955.mjs.map +1 -0
- package/dist/_chunks/CreatePage-16d53bda.js +82 -0
- package/dist/_chunks/CreatePage-16d53bda.js.map +1 -0
- package/dist/_chunks/CreatePage-34ad9bdd.mjs +289 -0
- package/dist/_chunks/CreatePage-34ad9bdd.mjs.map +1 -0
- package/dist/_chunks/CreatePage-92f708fa.js +312 -0
- package/dist/_chunks/CreatePage-92f708fa.js.map +1 -0
- package/dist/_chunks/CreatePage-e5d16f0e.mjs +325 -0
- package/dist/_chunks/CreatePage-e5d16f0e.mjs.map +1 -0
- package/dist/_chunks/CreatePage-f321dfbc.mjs +82 -0
- package/dist/_chunks/CreatePage-f321dfbc.mjs.map +1 -0
- package/dist/_chunks/CreatePage-f63362cf.js +346 -0
- package/dist/_chunks/CreatePage-f63362cf.js.map +1 -0
- package/dist/_chunks/CreateView-0da060c0.js +89 -0
- package/dist/_chunks/CreateView-0da060c0.js.map +1 -0
- package/dist/_chunks/CreateView-69c834ba.js +85 -0
- package/dist/_chunks/CreateView-69c834ba.js.map +1 -0
- package/dist/_chunks/CreateView-a5345794.mjs +89 -0
- package/dist/_chunks/CreateView-a5345794.mjs.map +1 -0
- package/dist/_chunks/CreateView-df9f9bf0.mjs +85 -0
- package/dist/_chunks/CreateView-df9f9bf0.mjs.map +1 -0
- package/dist/_chunks/EditPage-39a7cd2d.js +499 -0
- package/dist/_chunks/EditPage-39a7cd2d.js.map +1 -0
- package/dist/_chunks/EditPage-48cdd744.js +796 -0
- package/dist/_chunks/EditPage-48cdd744.js.map +1 -0
- package/dist/_chunks/EditPage-493ac83a.js +404 -0
- package/dist/_chunks/EditPage-493ac83a.js.map +1 -0
- package/dist/_chunks/EditPage-a5a18e61.mjs +305 -0
- package/dist/_chunks/EditPage-a5a18e61.mjs.map +1 -0
- package/dist/_chunks/EditPage-a6578110.mjs +475 -0
- package/dist/_chunks/EditPage-a6578110.mjs.map +1 -0
- package/dist/_chunks/EditPage-e710a231.mjs +775 -0
- package/dist/_chunks/EditPage-e710a231.mjs.map +1 -0
- package/dist/_chunks/EditPage-f5caa375.mjs +383 -0
- package/dist/_chunks/EditPage-f5caa375.mjs.map +1 -0
- package/dist/_chunks/EditPage-f75f04b9.js +325 -0
- package/dist/_chunks/EditPage-f75f04b9.js.map +1 -0
- package/dist/_chunks/EditView-0c216c35.js +452 -0
- package/dist/_chunks/EditView-0c216c35.js.map +1 -0
- package/dist/_chunks/EditView-d3ccb532.mjs +432 -0
- package/dist/_chunks/EditView-d3ccb532.mjs.map +1 -0
- package/dist/_chunks/EditViewPage-57b6e71a.js +910 -0
- package/dist/_chunks/EditViewPage-57b6e71a.js.map +1 -0
- package/dist/_chunks/EditViewPage-77e95780.mjs +883 -0
- package/dist/_chunks/EditViewPage-77e95780.mjs.map +1 -0
- package/dist/_chunks/EventsTable-8e2b0bd9.js +91 -0
- package/dist/_chunks/EventsTable-8e2b0bd9.js.map +1 -0
- package/dist/_chunks/EventsTable-d472e89d.mjs +91 -0
- package/dist/_chunks/EventsTable-d472e89d.mjs.map +1 -0
- package/dist/_chunks/Filters-4d67a6ca.js +61 -0
- package/dist/_chunks/Filters-4d67a6ca.js.map +1 -0
- package/dist/_chunks/Filters-8f3c8fcf.mjs +43 -0
- package/dist/_chunks/Filters-8f3c8fcf.mjs.map +1 -0
- package/dist/_chunks/HomePage-22d90f51.mjs +84 -0
- package/dist/_chunks/HomePage-22d90f51.mjs.map +1 -0
- package/dist/_chunks/HomePage-7bd6070c.js +84 -0
- package/dist/_chunks/HomePage-7bd6070c.js.map +1 -0
- package/dist/_chunks/HomePage-bb29ced3.js +598 -0
- package/dist/_chunks/HomePage-bb29ced3.js.map +1 -0
- package/dist/_chunks/HomePage-e94a37b9.mjs +577 -0
- package/dist/_chunks/HomePage-e94a37b9.mjs.map +1 -0
- package/dist/_chunks/InformationBoxEE-302228b9.mjs +379 -0
- package/dist/_chunks/InformationBoxEE-302228b9.mjs.map +1 -0
- package/dist/_chunks/InformationBoxEE-7d383cec.js +398 -0
- package/dist/_chunks/InformationBoxEE-7d383cec.js.map +1 -0
- package/dist/_chunks/InstalledPluginsPage-73eabc0b.js +189 -0
- package/dist/_chunks/InstalledPluginsPage-73eabc0b.js.map +1 -0
- package/dist/_chunks/InstalledPluginsPage-ff15831e.mjs +170 -0
- package/dist/_chunks/InstalledPluginsPage-ff15831e.mjs.map +1 -0
- package/dist/_chunks/Layout-1dd77bbb.mjs +87 -0
- package/dist/_chunks/Layout-1dd77bbb.mjs.map +1 -0
- package/dist/_chunks/Layout-ef2fc31f.js +88 -0
- package/dist/_chunks/Layout-ef2fc31f.js.map +1 -0
- package/dist/_chunks/LimitsModal-3327be54.js +75 -0
- package/dist/_chunks/LimitsModal-3327be54.js.map +1 -0
- package/dist/_chunks/LimitsModal-d438f513.mjs +74 -0
- package/dist/_chunks/LimitsModal-d438f513.mjs.map +1 -0
- package/dist/_chunks/ListPage-10bf0ce5.js +583 -0
- package/dist/_chunks/ListPage-10bf0ce5.js.map +1 -0
- package/dist/_chunks/ListPage-1de5fb9e.mjs +85 -0
- package/dist/_chunks/ListPage-1de5fb9e.mjs.map +1 -0
- package/dist/_chunks/ListPage-354a539f.js +85 -0
- package/dist/_chunks/ListPage-354a539f.js.map +1 -0
- package/dist/_chunks/ListPage-57f5028e.mjs +698 -0
- package/dist/_chunks/ListPage-57f5028e.mjs.map +1 -0
- package/dist/_chunks/ListPage-7304822d.js +719 -0
- package/dist/_chunks/ListPage-7304822d.js.map +1 -0
- package/dist/_chunks/ListPage-887f0f02.mjs +370 -0
- package/dist/_chunks/ListPage-887f0f02.mjs.map +1 -0
- package/dist/_chunks/ListPage-96026788.mjs +345 -0
- package/dist/_chunks/ListPage-96026788.mjs.map +1 -0
- package/dist/_chunks/ListPage-ac287db9.js +389 -0
- package/dist/_chunks/ListPage-ac287db9.js.map +1 -0
- package/dist/_chunks/ListPage-ba1aec01.js +366 -0
- package/dist/_chunks/ListPage-ba1aec01.js.map +1 -0
- package/dist/_chunks/ListPage-c878fda8.mjs +348 -0
- package/dist/_chunks/ListPage-c878fda8.mjs.map +1 -0
- package/dist/_chunks/ListPage-f256fcb7.mjs +580 -0
- package/dist/_chunks/ListPage-f256fcb7.mjs.map +1 -0
- package/dist/_chunks/ListPage-f582ff65.js +351 -0
- package/dist/_chunks/ListPage-f582ff65.js.map +1 -0
- package/dist/_chunks/ListView-1b370206.mjs +310 -0
- package/dist/_chunks/ListView-1b370206.mjs.map +1 -0
- package/dist/_chunks/ListView-1fb891a4.js +331 -0
- package/dist/_chunks/ListView-1fb891a4.js.map +1 -0
- package/dist/_chunks/ListView-96fe1016.js +292 -0
- package/dist/_chunks/ListView-96fe1016.js.map +1 -0
- package/dist/_chunks/ListView-bf4ccdba.mjs +271 -0
- package/dist/_chunks/ListView-bf4ccdba.mjs.map +1 -0
- package/dist/_chunks/Login-09040dec.js +103 -0
- package/dist/_chunks/Login-09040dec.js.map +1 -0
- package/dist/_chunks/Login-6670c9b9.mjs +101 -0
- package/dist/_chunks/Login-6670c9b9.mjs.map +1 -0
- package/dist/_chunks/MagicLinkEE-6d9ed1b1.mjs +92 -0
- package/dist/_chunks/MagicLinkEE-6d9ed1b1.mjs.map +1 -0
- package/dist/_chunks/MagicLinkEE-79ab8b22.js +92 -0
- package/dist/_chunks/MagicLinkEE-79ab8b22.js.map +1 -0
- package/dist/_chunks/MarketplacePage-54a925f9.mjs +1046 -0
- package/dist/_chunks/MarketplacePage-54a925f9.mjs.map +1 -0
- package/dist/_chunks/MarketplacePage-ec91b073.js +1070 -0
- package/dist/_chunks/MarketplacePage-ec91b073.js.map +1 -0
- package/dist/_chunks/ModalForm-7057f0f5.mjs +28 -0
- package/dist/_chunks/ModalForm-7057f0f5.mjs.map +1 -0
- package/dist/_chunks/ModalForm-715b963e.js +28 -0
- package/dist/_chunks/ModalForm-715b963e.js.map +1 -0
- package/dist/_chunks/ProfilePage-091a4db8.mjs +676 -0
- package/dist/_chunks/ProfilePage-091a4db8.mjs.map +1 -0
- package/dist/_chunks/ProfilePage-a28fc7c8.js +699 -0
- package/dist/_chunks/ProfilePage-a28fc7c8.js.map +1 -0
- package/dist/_chunks/PurchaseAuditLogs-a9c1457c.js +48 -0
- package/dist/_chunks/PurchaseAuditLogs-a9c1457c.js.map +1 -0
- package/dist/_chunks/PurchaseAuditLogs-e50bb68e.mjs +48 -0
- package/dist/_chunks/PurchaseAuditLogs-e50bb68e.mjs.map +1 -0
- package/dist/_chunks/PurchaseReviewWorkflows-72d34d9b.mjs +51 -0
- package/dist/_chunks/PurchaseReviewWorkflows-72d34d9b.mjs.map +1 -0
- package/dist/_chunks/PurchaseReviewWorkflows-afa3d8ae.js +51 -0
- package/dist/_chunks/PurchaseReviewWorkflows-afa3d8ae.js.map +1 -0
- package/dist/_chunks/PurchaseSingleSignOn-70c10e60.mjs +51 -0
- package/dist/_chunks/PurchaseSingleSignOn-70c10e60.mjs.map +1 -0
- package/dist/_chunks/PurchaseSingleSignOn-b84a4ad2.js +51 -0
- package/dist/_chunks/PurchaseSingleSignOn-b84a4ad2.js.map +1 -0
- package/dist/_chunks/ReviewWorkflowsColumn-5a3ca279.mjs +99 -0
- package/dist/_chunks/ReviewWorkflowsColumn-5a3ca279.mjs.map +1 -0
- package/dist/_chunks/ReviewWorkflowsColumn-b2d53622.js +99 -0
- package/dist/_chunks/ReviewWorkflowsColumn-b2d53622.js.map +1 -0
- package/dist/_chunks/SelectRoles-b55e6376.js +115 -0
- package/dist/_chunks/SelectRoles-b55e6376.js.map +1 -0
- package/dist/_chunks/SelectRoles-f0565968.mjs +114 -0
- package/dist/_chunks/SelectRoles-f0565968.mjs.map +1 -0
- package/dist/_chunks/SettingsPage-7567e138.mjs +1074 -0
- package/dist/_chunks/SettingsPage-7567e138.mjs.map +1 -0
- package/dist/_chunks/SettingsPage-b5d5dd0b.js +1097 -0
- package/dist/_chunks/SettingsPage-b5d5dd0b.js.map +1 -0
- package/dist/_chunks/SingleSignOnPage-4d1d2448.mjs +325 -0
- package/dist/_chunks/SingleSignOnPage-4d1d2448.mjs.map +1 -0
- package/dist/_chunks/SingleSignOnPage-51dfde4b.js +344 -0
- package/dist/_chunks/SingleSignOnPage-51dfde4b.js.map +1 -0
- package/dist/_chunks/Table-3f09118e.mjs +206 -0
- package/dist/_chunks/Table-3f09118e.mjs.map +1 -0
- package/dist/_chunks/Table-69c2c269.js +226 -0
- package/dist/_chunks/Table-69c2c269.js.map +1 -0
- package/dist/_chunks/TokenTypeSelect-3e46ae6e.mjs +374 -0
- package/dist/_chunks/TokenTypeSelect-3e46ae6e.mjs.map +1 -0
- package/dist/_chunks/TokenTypeSelect-c75581af.js +392 -0
- package/dist/_chunks/TokenTypeSelect-c75581af.js.map +1 -0
- package/dist/_chunks/build-5bfa2e99.js +68 -0
- package/dist/_chunks/build-5bfa2e99.js.map +1 -0
- package/dist/_chunks/build-81e67209.mjs +68 -0
- package/dist/_chunks/build-81e67209.mjs.map +1 -0
- package/dist/_chunks/colors-bda951e9.mjs +34 -0
- package/dist/_chunks/colors-bda951e9.mjs.map +1 -0
- package/dist/_chunks/colors-c17c9c3c.js +33 -0
- package/dist/_chunks/colors-c17c9c3c.js.map +1 -0
- package/dist/_chunks/constants-28fd3788.js +134 -0
- package/dist/_chunks/constants-28fd3788.js.map +1 -0
- package/dist/_chunks/constants-2a8f4e41.mjs.map +1 -1
- package/dist/_chunks/constants-2ccf2787.mjs +119 -0
- package/dist/_chunks/constants-2ccf2787.mjs.map +1 -0
- package/dist/_chunks/constants-40ffa931.js.map +1 -1
- package/dist/_chunks/constants-54043280.js +121 -0
- package/dist/_chunks/constants-54043280.js.map +1 -0
- package/dist/_chunks/constants-74ce2d53.js +242 -0
- package/dist/_chunks/constants-74ce2d53.js.map +1 -0
- package/dist/_chunks/constants-8092eeb5.mjs.map +1 -1
- package/dist/_chunks/constants-81c376c5.mjs +242 -0
- package/dist/_chunks/constants-81c376c5.mjs.map +1 -0
- package/dist/_chunks/constants-85da8cc4.js.map +1 -1
- package/dist/_chunks/constants-a5b1e9d4.js +52 -0
- package/dist/_chunks/constants-a5b1e9d4.js.map +1 -0
- package/dist/_chunks/constants-a92ce583.mjs.map +1 -1
- package/dist/_chunks/constants-b156a1b6.mjs +52 -0
- package/dist/_chunks/constants-b156a1b6.mjs.map +1 -0
- package/dist/_chunks/constants-d3dd8ed6.mjs.map +1 -1
- package/dist/_chunks/constants-d5d67ca8.js.map +1 -1
- package/dist/_chunks/constants-da2542a3.js.map +1 -1
- package/dist/_chunks/constants-e1d0f820.mjs +113 -0
- package/dist/_chunks/constants-e1d0f820.mjs.map +1 -0
- package/dist/_chunks/develop-ab3daae0.js +61 -0
- package/dist/_chunks/develop-ab3daae0.js.map +1 -0
- package/dist/_chunks/develop-b194ba9b.mjs +61 -0
- package/dist/_chunks/develop-b194ba9b.mjs.map +1 -0
- package/dist/_chunks/en-390fd1f1.mjs +1029 -0
- package/dist/_chunks/en-390fd1f1.mjs.map +1 -0
- package/dist/_chunks/en-f40febb9.js +1029 -0
- package/dist/_chunks/en-f40febb9.js.map +1 -0
- package/dist/_chunks/index-3956d072.js +18416 -0
- package/dist/_chunks/index-3956d072.js.map +1 -0
- package/dist/_chunks/index-3bbbb14c.mjs +18337 -0
- package/dist/_chunks/index-3bbbb14c.mjs.map +1 -0
- package/dist/_chunks/index-dfdaf309.mjs +1265 -0
- package/dist/_chunks/index-dfdaf309.mjs.map +1 -0
- package/dist/_chunks/index-ea5b8bc5.js +1336 -0
- package/dist/_chunks/index-ea5b8bc5.js.map +1 -0
- package/dist/_chunks/useAdminRolePermissions-9f9361e7.mjs +2036 -0
- package/dist/_chunks/useAdminRolePermissions-9f9361e7.mjs.map +1 -0
- package/dist/_chunks/useAdminRolePermissions-c97323e2.js +2065 -0
- package/dist/_chunks/useAdminRolePermissions-c97323e2.js.map +1 -0
- package/dist/_chunks/useAdminRoles-485a39e5.js +65 -0
- package/dist/_chunks/useAdminRoles-485a39e5.js.map +1 -0
- package/dist/_chunks/useAdminRoles-501e111a.mjs +47 -0
- package/dist/_chunks/useAdminRoles-501e111a.mjs.map +1 -0
- package/dist/_chunks/useLicenseLimitNotification-92085192.js +100 -0
- package/dist/_chunks/useLicenseLimitNotification-92085192.js.map +1 -0
- package/dist/_chunks/useLicenseLimitNotification-b59fb6f9.mjs +80 -0
- package/dist/_chunks/useLicenseLimitNotification-b59fb6f9.mjs.map +1 -0
- package/dist/_chunks/useLicenseLimits-497c0f5f.mjs +34 -0
- package/dist/_chunks/useLicenseLimits-497c0f5f.mjs.map +1 -0
- package/dist/_chunks/useLicenseLimits-e60a01b1.js +52 -0
- package/dist/_chunks/useLicenseLimits-e60a01b1.js.map +1 -0
- package/dist/_chunks/useReviewWorkflows-26f7e558.js +71 -0
- package/dist/_chunks/useReviewWorkflows-26f7e558.js.map +1 -0
- package/dist/_chunks/useReviewWorkflows-3e0bcb69.mjs +53 -0
- package/dist/_chunks/useReviewWorkflows-3e0bcb69.mjs.map +1 -0
- package/dist/_chunks/validateWorkflow-5208ca73.mjs +1055 -0
- package/dist/_chunks/validateWorkflow-5208ca73.mjs.map +1 -0
- package/dist/_chunks/validateWorkflow-f6947b4c.js +1078 -0
- package/dist/_chunks/validateWorkflow-f6947b4c.js.map +1 -0
- package/dist/_chunks/validation-2e4cec2b.mjs +16 -0
- package/dist/_chunks/validation-2e4cec2b.mjs.map +1 -0
- package/dist/_chunks/validation-fabd21cc.js +34 -0
- package/dist/_chunks/validation-fabd21cc.js.map +1 -0
- package/dist/admin/index.js +43 -4
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +45 -6
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/App.d.ts +7 -1
- package/dist/admin/src/StrapiApp.d.ts +5 -5
- package/dist/admin/src/components/DragLayer.d.ts +4 -1
- package/dist/admin/src/components/InjectionZone.d.ts +59 -0
- package/dist/admin/src/components/LanguageProvider.d.ts +3 -14
- package/dist/admin/src/components/Providers.d.ts +3 -5
- package/dist/admin/src/components/Theme.d.ts +7 -1
- package/dist/admin/src/constants.d.ts +1 -4
- package/dist/admin/src/content-manager/components/BlocksInput/Blocks/Code.d.ts +3 -0
- package/dist/admin/src/content-manager/components/BlocksInput/Blocks/Heading.d.ts +3 -0
- package/dist/admin/src/content-manager/components/BlocksInput/Blocks/Image.d.ts +3 -0
- package/dist/admin/src/content-manager/components/BlocksInput/Blocks/Link.d.ts +3 -0
- package/dist/admin/src/content-manager/components/BlocksInput/Blocks/List.d.ts +3 -0
- package/dist/admin/src/content-manager/components/BlocksInput/Blocks/Paragraph.d.ts +3 -0
- package/dist/admin/src/content-manager/components/BlocksInput/Blocks/Quote.d.ts +3 -0
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksEditor.d.ts +36 -2
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksInput.d.ts +2 -2
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksToolbar.d.ts +9 -1
- package/dist/admin/src/content-manager/components/BlocksInput/EditorLayout.d.ts +10 -0
- package/dist/admin/src/content-manager/components/BlocksInput/Modifiers.d.ts +16 -0
- package/dist/admin/src/content-manager/components/BlocksInput/plugins/withImages.d.ts +11 -0
- package/dist/admin/src/content-manager/components/BlocksInput/plugins/withLinks.d.ts +1 -0
- package/dist/admin/src/content-manager/components/BlocksInput/utils/conversions.d.ts +13 -0
- package/dist/admin/src/content-manager/components/BlocksInput/utils/enterKey.d.ts +6 -0
- package/dist/admin/src/content-manager/components/BlocksInput/utils/types.d.ts +7 -3
- package/dist/admin/src/content-manager/components/ComponentIcon.d.ts +8 -0
- package/dist/admin/src/content-manager/components/ComponentInitializer.d.ts +10 -0
- package/dist/admin/src/content-manager/components/ContentTypeFormWrapper.d.ts +32 -0
- package/dist/admin/src/content-manager/components/DragPreviews/CardDragPreview.d.ts +7 -0
- package/dist/admin/src/content-manager/components/DragPreviews/ComponentDragPreview.d.ts +6 -0
- package/dist/admin/src/content-manager/components/DragPreviews/RelationDragPreview.d.ts +9 -0
- package/dist/admin/src/content-manager/components/DynamicZone/AddComponentButton.d.ts +11 -0
- package/dist/admin/src/content-manager/components/DynamicZone/ComponentCard.d.ts +9 -0
- package/dist/admin/src/content-manager/components/DynamicZone/ComponentCategory.d.ts +17 -0
- package/dist/admin/src/content-manager/components/DynamicZone/ComponentPicker.d.ts +9 -0
- package/dist/admin/src/content-manager/components/DynamicZone/DynamicComponent.d.ts +15 -0
- package/dist/admin/src/content-manager/components/DynamicZone/DynamicZoneLabel.d.ts +13 -0
- package/dist/admin/src/content-manager/components/DynamicZone/Field.d.ts +32 -0
- package/dist/admin/src/content-manager/components/EditViewDataManagerProvider/Provider.d.ts +18 -0
- package/dist/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.d.ts +150 -0
- package/dist/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.d.ts +6 -0
- package/dist/admin/src/content-manager/components/EditViewDataManagerProvider/utils/findAllAndReplace.d.ts +33 -0
- package/dist/admin/src/content-manager/components/EditViewDataManagerProvider/utils/getAPIInnerError.d.ts +6 -0
- package/dist/admin/src/content-manager/components/EditViewDataManagerProvider/utils/moveFields.d.ts +2 -0
- package/dist/admin/src/content-manager/components/FieldComponent.d.ts +16 -0
- package/dist/admin/src/content-manager/components/FieldTypeIcon.d.ts +32 -0
- package/dist/admin/src/content-manager/components/Hint.d.ts +9 -0
- package/dist/admin/src/content-manager/components/InputUID.d.ts +16 -0
- package/dist/admin/src/content-manager/components/Inputs.d.ts +11 -0
- package/dist/admin/src/content-manager/components/LeftMenu.d.ts +2 -0
- package/dist/admin/src/content-manager/components/NonRepeatableComponent.d.ts +9 -0
- package/dist/admin/src/content-manager/components/Relations/RelationInput.d.ts +62 -0
- package/dist/admin/src/content-manager/components/Relations/RelationInputDataManager.d.ts +26 -0
- package/dist/admin/src/content-manager/components/Relations/useRelation.d.ts +31 -0
- package/dist/admin/src/content-manager/components/Relations/utils/diffRelations.d.ts +2 -0
- package/dist/admin/src/content-manager/components/Relations/utils/getRelationLink.d.ts +2 -0
- package/dist/admin/src/content-manager/components/Relations/utils/normalizeRelations.d.ts +13 -0
- package/dist/admin/src/content-manager/components/Relations/utils/normalizeSearchResults.d.ts +149 -0
- package/dist/admin/src/content-manager/components/RepeatableComponent.d.ts +14 -0
- package/dist/admin/src/content-manager/components/Wysiwyg/Editor.d.ts +28 -0
- package/dist/admin/src/content-manager/components/Wysiwyg/EditorLayout.d.ts +59 -0
- package/dist/admin/src/content-manager/components/Wysiwyg/Field.d.ts +14 -0
- package/dist/admin/src/content-manager/components/Wysiwyg/PreviewWysiwyg.d.ts +5 -0
- package/dist/admin/src/content-manager/components/Wysiwyg/WysiwygFooter.d.ts +7 -0
- package/dist/admin/src/content-manager/components/Wysiwyg/WysiwygNav.d.ts +17 -0
- package/dist/admin/src/content-manager/components/Wysiwyg/WysiwygStyles.d.ts +54 -0
- package/dist/admin/src/content-manager/components/Wysiwyg/utils/continueList.d.ts +5 -0
- package/dist/admin/src/content-manager/components/Wysiwyg/utils/mdRenderer.d.ts +3 -0
- package/dist/admin/src/content-manager/components/Wysiwyg/utils/utils.d.ts +16 -0
- package/dist/admin/src/content-manager/constants/attributes.d.ts +2 -0
- package/dist/admin/src/content-manager/contexts/models.d.ts +5 -0
- package/dist/admin/src/content-manager/hooks/useContentManagerInitData.d.ts +29 -0
- package/dist/admin/src/content-manager/hooks/useContentTypeLayout.d.ts +6 -0
- package/dist/admin/src/content-manager/hooks/useDragAndDrop.d.ts +48 -0
- package/dist/admin/src/content-manager/hooks/useFindRedirectionLink.d.ts +2 -0
- package/dist/admin/src/content-manager/hooks/useKeyboardDragAndDrop.d.ts +14 -0
- package/dist/admin/src/content-manager/hooks/useLayouts.d.ts +10 -0
- package/dist/admin/src/content-manager/hooks/useLazyComponents.d.ts +13 -0
- package/dist/admin/src/content-manager/hooks/usePrev.d.ts +1 -0
- package/dist/admin/src/content-manager/hooks/useSyncRbac.d.ts +28 -0
- package/dist/admin/src/content-manager/pages/App.d.ts +47 -0
- package/dist/admin/src/content-manager/pages/CollectionTypePages.d.ts +12 -0
- package/dist/admin/src/content-manager/pages/ComponentSettingsView.d.ts +2 -0
- package/dist/admin/src/content-manager/pages/EditView/EditViewPage.d.ts +18 -0
- package/dist/admin/src/content-manager/pages/EditView/components/DeleteLink.d.ts +6 -0
- package/dist/admin/src/content-manager/pages/EditView/components/DraftAndPublishBadge.d.ts +2 -0
- package/dist/admin/src/content-manager/pages/EditView/components/Header.d.ts +7 -0
- package/dist/admin/src/content-manager/pages/EditView/components/Information.d.ts +10 -0
- package/dist/admin/src/content-manager/pages/EditView/components/InformationBoxCE.d.ts +2 -0
- package/dist/admin/src/content-manager/pages/EditViewLayoutManager.d.ts +26 -0
- package/dist/admin/src/content-manager/pages/ListView/ListViewPage.d.ts +25 -0
- package/dist/admin/src/content-manager/pages/ListView/components/AdminUsersFilter.d.ts +6 -0
- package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/Buttons.d.ts +27 -0
- package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.d.ts +15 -0
- package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/SelectedEntriesModal.d.ts +30 -0
- package/dist/admin/src/content-manager/pages/ListView/components/DialogConfirmDelete.d.ts +9 -0
- package/dist/admin/src/content-manager/pages/ListView/components/Filter.d.ts +7 -0
- package/dist/admin/src/content-manager/pages/ListView/components/InjectionZoneList.d.ts +7 -0
- package/dist/admin/src/content-manager/pages/ListView/components/Table.d.ts +28 -0
- package/dist/admin/src/content-manager/pages/ListView/components/TableCells/CellContent.d.ts +11 -0
- package/dist/admin/src/content-manager/pages/ListView/components/TableCells/CellValue.d.ts +8 -0
- package/dist/admin/src/content-manager/pages/ListView/components/TableCells/Components.d.ts +12 -0
- package/dist/admin/src/content-manager/pages/ListView/components/TableCells/Media.d.ts +23 -0
- package/dist/admin/src/content-manager/pages/ListView/components/TableCells/Relations.d.ts +12 -0
- package/dist/admin/src/content-manager/pages/ListView/components/ViewSettingsMenu.d.ts +6 -0
- package/dist/admin/src/content-manager/pages/ListView/hooks/useAllowedAttributes.d.ts +3 -0
- package/dist/admin/src/content-manager/pages/ListViewLayoutManager.d.ts +75 -0
- package/dist/admin/src/content-manager/pages/NoContentTypePage.d.ts +2 -0
- package/dist/admin/src/content-manager/pages/NoPermissionsPage.d.ts +2 -0
- package/dist/admin/src/content-manager/sharedReducers/crud/actions.d.ts +63 -0
- package/dist/admin/src/content-manager/sharedReducers/crud/constants.d.ts +8 -0
- package/dist/admin/src/content-manager/sharedReducers/crud/reducer.d.ts +24 -0
- package/dist/admin/src/content-manager/utils/api.d.ts +14 -0
- package/dist/admin/src/content-manager/utils/arrayMoveItem.d.ts +2 -0
- package/dist/admin/src/content-manager/utils/attributes.d.ts +3 -0
- package/dist/admin/src/content-manager/utils/data.d.ts +5 -0
- package/dist/admin/src/content-manager/utils/dragAndDrop.d.ts +8 -0
- package/dist/admin/src/content-manager/utils/fields.d.ts +6 -0
- package/dist/admin/src/content-manager/utils/layouts.d.ts +96 -0
- package/dist/admin/src/content-manager/utils/paths.d.ts +7 -0
- package/dist/admin/src/content-manager/utils/permissions.d.ts +8 -0
- package/dist/admin/src/content-manager/utils/refs.d.ts +8 -0
- package/dist/admin/src/content-manager/utils/schemas.d.ts +22 -0
- package/dist/admin/src/content-manager/utils/translations.d.ts +2 -0
- package/dist/admin/src/content-manager/utils/users.d.ts +7 -0
- package/dist/admin/src/content-manager/utils/validation.d.ts +21 -0
- package/dist/admin/src/core/apis/CustomFields.d.ts +4 -4
- package/dist/admin/src/core/store/configure.d.ts +21 -16
- package/dist/admin/src/core/store/hooks.d.ts +18 -18
- package/dist/admin/src/core/utils/createHook.d.ts +3 -2
- package/dist/admin/src/features/Configuration.d.ts +54 -0
- package/dist/admin/src/hooks/useAdminRoles.d.ts +4 -3
- package/dist/admin/src/hooks/useAdminUsers.d.ts +6 -9
- package/dist/admin/src/hooks/useEnterprise.d.ts +1 -1
- package/dist/admin/src/hooks/useInjectionZone.d.ts +6 -0
- package/dist/admin/src/hooks/useOnce.d.ts +2 -0
- package/dist/admin/src/hooks/useSettingsMenu.d.ts +9 -4
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/src/pages/Marketplace/hooks/useMarketplaceData.d.ts +2 -2
- package/dist/admin/src/pages/Settings/SettingsPage.d.ts +4 -0
- package/dist/admin/src/pages/Settings/components/Filters.d.ts +5 -0
- package/dist/admin/src/pages/Settings/components/SettingsNav.d.ts +7 -0
- package/dist/admin/src/pages/Settings/components/Tokens/FormHead.d.ts +19 -0
- package/dist/admin/src/pages/Settings/components/Tokens/LifeSpanInput.d.ts +17 -0
- package/dist/admin/src/pages/Settings/components/Tokens/Table.d.ts +27 -0
- package/dist/admin/src/pages/Settings/components/Tokens/TokenBox.d.ts +6 -0
- package/dist/admin/src/pages/Settings/components/Tokens/TokenDescription.d.ts +8 -0
- package/dist/admin/src/pages/Settings/components/Tokens/TokenName.d.ts +8 -0
- package/dist/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.d.ts +14 -0
- package/dist/admin/src/pages/Settings/components/Tokens/constants.d.ts +2 -0
- package/dist/admin/src/pages/Settings/constants.d.ts +4 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/CreateView.d.ts +1 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.d.ts +36 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.d.ts +1 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.d.ts +10 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollabsableContentType.d.ts +11 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.d.ts +6 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.d.ts +20 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/LoadingView.d.ts +5 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.d.ts +3 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Regenerate.d.ts +6 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.d.ts +17 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.d.ts +40 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.d.ts +1 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.d.ts +17 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/ListView.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.d.ts +14 -0
- package/dist/admin/src/pages/Settings/pages/ApplicationInfo/utils/constants.d.ts +3 -0
- package/dist/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.d.ts +19 -0
- package/dist/admin/src/pages/Settings/pages/PurchaseAuditLogs.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/PurchaseReviewWorkflows.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/PurchaseSingleSignOn.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/Roles/CreatePage.d.ts +7 -0
- package/dist/admin/src/pages/Settings/pages/Roles/EditPage.d.ts +8 -0
- package/dist/admin/src/pages/Settings/pages/Roles/ListPage.d.ts +3 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +52 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.d.ts +35 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +12 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.d.ts +32 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.d.ts +35 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/ContentTypes.d.ts +8 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/GlobalActions.d.ts +10 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +54 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.d.ts +18 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/RequiredSign.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/RoleForm.d.ts +12 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/RoleRow.d.ts +10 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/RowLabelWithCheckbox.d.ts +17 -0
- package/dist/admin/src/pages/Settings/pages/Roles/hooks/useAdminRolePermissions.d.ts +13 -0
- package/dist/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.d.ts +29 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/constants.d.ts +3 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.d.ts +3 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +28 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/getCheckboxState.d.ts +8 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/layouts.d.ts +13 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +8 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/removeConditionKeyFromData.d.ts +8 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.d.ts +5 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/updateValues.d.ts +8 -0
- package/dist/admin/src/pages/Settings/pages/TransferTokens/CreateView.d.ts +1 -0
- package/dist/admin/src/pages/Settings/pages/TransferTokens/EditView.d.ts +7 -0
- package/dist/admin/src/pages/Settings/pages/TransferTokens/ListView.d.ts +3 -0
- package/dist/admin/src/pages/Settings/pages/Users/EditPage.d.ts +3 -0
- package/dist/admin/src/pages/Settings/pages/Users/ListPage.d.ts +22 -0
- package/dist/admin/src/pages/Settings/pages/Users/components/CreateActionCE.d.ts +6 -0
- package/dist/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.d.ts +6 -0
- package/dist/admin/src/pages/Settings/pages/Users/components/MagicLinkWrapper.d.ts +7 -0
- package/dist/admin/src/pages/Settings/pages/Users/components/NewUserForm.d.ts +15 -0
- package/dist/admin/src/pages/Settings/pages/Users/components/SelectRoles.d.ts +8 -0
- package/dist/admin/src/pages/Settings/pages/Users/components/TableRows.d.ts +9 -0
- package/dist/admin/src/pages/Settings/pages/Users/utils/validation.d.ts +13 -0
- package/dist/admin/src/pages/Settings/pages/Webhooks/CreatePage.d.ts +3 -0
- package/dist/admin/src/pages/Settings/pages/Webhooks/EditPage.d.ts +3 -0
- package/dist/admin/src/pages/Settings/pages/Webhooks/ListPage.d.ts +3 -0
- package/dist/admin/src/pages/Settings/pages/Webhooks/components/Events.d.ts +32 -0
- package/dist/admin/src/pages/Settings/pages/Webhooks/components/EventsTable.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.d.ts +13 -0
- package/dist/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.d.ts +22 -0
- package/dist/admin/src/pages/Settings/utils/forms.d.ts +3 -0
- package/dist/admin/src/reducer.d.ts +16 -18
- package/dist/admin/src/selectors.d.ts +18 -12
- package/dist/admin/src/types/form.d.ts +6 -0
- package/dist/admin/src/types/permissions.d.ts +17 -11
- package/dist/admin/src/utils/arrays.d.ts +23 -0
- package/dist/admin/src/utils/objects.d.ts +8 -0
- package/dist/admin/src/utils/strings.d.ts +2 -0
- package/dist/cli.js +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/ee/admin/src/constants.d.ts +8 -0
- package/dist/ee/admin/src/content-manager/pages/EditView/components/AssigneeSelect.d.ts +2 -0
- package/dist/ee/admin/src/content-manager/pages/EditView/components/InformationBoxEE.d.ts +2 -0
- package/dist/ee/admin/src/content-manager/pages/EditView/components/StageSelect.d.ts +1 -0
- package/dist/ee/admin/src/content-manager/pages/EditView/components/constants.d.ts +2 -0
- package/dist/ee/admin/src/content-manager/pages/ListSettingsView/constants.d.ts +7 -0
- package/dist/ee/admin/src/content-manager/pages/ListView/components/AssigneeFilter.d.ts +6 -0
- package/dist/ee/admin/src/content-manager/pages/ListView/components/ReviewWorkflowsAssigneeEE.d.ts +7 -0
- package/dist/ee/admin/src/content-manager/pages/ListView/components/ReviewWorkflowsColumn.d.ts +2 -0
- package/dist/ee/admin/src/content-manager/pages/ListView/components/ReviewWorkflowsStageEE.d.ts +7 -0
- package/dist/ee/admin/src/content-manager/pages/ListView/components/StageFilter.d.ts +7 -0
- package/dist/ee/admin/src/content-manager/pages/ListView/constants.d.ts +86 -0
- package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +20 -0
- package/dist/ee/admin/src/pages/SettingsPage/constants.d.ts +2 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.d.ts +1 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.d.ts +2 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.d.ts +11 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.d.ts +6 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/PaginationFooter.d.ts +6 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/TableRows.d.ts +32 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.d.ts +12 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.d.ts +1 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/tests/utils/data.d.ts +56 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +31 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +75 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/tableHeaders.d.ts +32 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/CreatePage.d.ts +1 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/EditPage.d.ts +1 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/ListPage.d.ts +2 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/actions.d.ts +86 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/AddStage.d.ts +8 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Layout.d.ts +16 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/LimitsModal.d.ts +15 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Stage.d.ts +10 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/StageDragPreview.d.ts +4 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Stages.d.ts +7 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/WorkflowAttributes.d.ts +4 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/constants.d.ts +20 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflows.d.ts +13 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflowsStages.d.ts +16 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/reducer.d.ts +38 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/selectors.d.ts +62 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/utils/colors.d.ts +8 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/utils/validateWorkflow.d.ts +5 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.d.ts +2 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/Users/ListPage.d.ts +1 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.d.ts +8 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.d.ts +2 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.d.ts +15 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.d.ts +2 -0
- package/dist/ee/server/index.js +3866 -0
- package/dist/ee/server/index.js.map +1 -0
- package/dist/ee/server/index.mjs +3857 -0
- package/dist/ee/server/index.mjs.map +1 -0
- package/dist/server/index.js +5579 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +5562 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/server/src/bootstrap.d.ts +6 -0
- package/dist/server/src/bootstrap.d.ts.map +1 -0
- package/dist/server/src/config/admin-actions.d.ts +34 -0
- package/dist/server/src/config/admin-actions.d.ts.map +1 -0
- package/dist/server/src/config/admin-conditions.d.ts +47 -0
- package/dist/server/src/config/admin-conditions.d.ts.map +1 -0
- package/dist/server/src/config/email-templates/forgot-password.d.ts +7 -0
- package/dist/server/src/config/email-templates/forgot-password.d.ts.map +1 -0
- package/dist/server/src/config/index.d.ts +18 -0
- package/dist/server/src/config/index.d.ts.map +1 -0
- package/dist/server/src/config/settings.d.ts +8 -0
- package/dist/server/src/config/settings.d.ts.map +1 -0
- package/dist/server/src/content-types/Permission.d.ts +63 -0
- package/dist/server/src/content-types/Permission.d.ts.map +1 -0
- package/dist/server/src/content-types/Role.d.ts +58 -0
- package/dist/server/src/content-types/Role.d.ts.map +1 -0
- package/dist/server/src/content-types/User.d.ts +107 -0
- package/dist/server/src/content-types/User.d.ts.map +1 -0
- package/dist/server/src/content-types/api-token-permission.d.ts +36 -0
- package/dist/server/src/content-types/api-token-permission.d.ts.map +1 -0
- package/dist/server/src/content-types/api-token.d.ts +74 -0
- package/dist/server/src/content-types/api-token.d.ts.map +1 -0
- package/dist/server/src/content-types/index.d.ts +438 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -0
- package/dist/server/src/content-types/transfer-token-permission.d.ts +36 -0
- package/dist/server/src/content-types/transfer-token-permission.d.ts.map +1 -0
- package/dist/server/src/content-types/transfer-token.d.ts +66 -0
- package/dist/server/src/content-types/transfer-token.d.ts.map +1 -0
- package/dist/server/src/controllers/admin.d.ts +55 -0
- package/dist/server/src/controllers/admin.d.ts.map +1 -0
- package/dist/server/src/controllers/api-token.d.ts +12 -0
- package/dist/server/src/controllers/api-token.d.ts.map +1 -0
- package/dist/server/src/controllers/authenticated-user.d.ts +8 -0
- package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -0
- package/dist/server/src/controllers/authentication.d.ts +14 -0
- package/dist/server/src/controllers/authentication.d.ts.map +1 -0
- package/dist/server/src/controllers/content-api.d.ts +8 -0
- package/dist/server/src/controllers/content-api.d.ts.map +1 -0
- package/dist/server/src/controllers/formatters/conditions.d.ts +4 -0
- package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -0
- package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts +8 -0
- package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts.map +1 -0
- package/dist/server/src/controllers/formatters/index.d.ts +3 -0
- package/dist/server/src/controllers/formatters/index.d.ts.map +1 -0
- package/dist/server/src/controllers/index.d.ts +110 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -0
- package/dist/server/src/controllers/permission.d.ts +15 -0
- package/dist/server/src/controllers/permission.d.ts.map +1 -0
- package/dist/server/src/controllers/role.d.ts +45 -0
- package/dist/server/src/controllers/role.d.ts.map +1 -0
- package/dist/server/src/controllers/transfer/index.d.ts +5 -0
- package/dist/server/src/controllers/transfer/index.d.ts.map +1 -0
- package/dist/server/src/controllers/transfer/runner.d.ts +9 -0
- package/dist/server/src/controllers/transfer/runner.d.ts.map +1 -0
- package/dist/server/src/controllers/transfer/token.d.ts +11 -0
- package/dist/server/src/controllers/transfer/token.d.ts.map +1 -0
- package/dist/server/src/controllers/user.d.ts +15 -0
- package/dist/server/src/controllers/user.d.ts.map +1 -0
- package/dist/server/src/controllers/webhooks.d.ts +12 -0
- package/dist/server/src/controllers/webhooks.d.ts.map +1 -0
- package/dist/server/src/destroy.d.ts +3 -0
- package/dist/server/src/destroy.d.ts.map +1 -0
- package/dist/server/src/domain/action/index.d.ts +34 -0
- package/dist/server/src/domain/action/index.d.ts.map +1 -0
- package/dist/server/src/domain/action/provider.d.ts +40 -0
- package/dist/server/src/domain/action/provider.d.ts.map +1 -0
- package/dist/server/src/domain/condition/index.d.ts +54 -0
- package/dist/server/src/domain/condition/index.d.ts.map +1 -0
- package/dist/server/src/domain/condition/provider.d.ts +31 -0
- package/dist/server/src/domain/condition/provider.d.ts.map +1 -0
- package/dist/server/src/domain/permission/index.d.ts +71 -0
- package/dist/server/src/domain/permission/index.d.ts.map +1 -0
- package/dist/server/src/domain/user.d.ts +26 -0
- package/dist/server/src/domain/user.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +11 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/server/src/middlewares/data-transfer.d.ts +4 -0
- package/dist/server/src/middlewares/data-transfer.d.ts.map +1 -0
- package/dist/server/src/middlewares/index.d.ts +11 -0
- package/dist/server/src/middlewares/index.d.ts.map +1 -0
- package/dist/server/src/middlewares/rateLimit.d.ts +7 -0
- package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -0
- package/dist/server/src/policies/hasPermissions.d.ts +7 -0
- package/dist/server/src/policies/hasPermissions.d.ts.map +1 -0
- package/dist/server/src/policies/index.d.ts +15 -0
- package/dist/server/src/policies/index.d.ts.map +1 -0
- package/dist/server/src/policies/isAuthenticatedAdmin.d.ts +3 -0
- package/dist/server/src/policies/isAuthenticatedAdmin.d.ts.map +1 -0
- package/dist/server/src/policies/isTelemetryEnabled.d.ts +11 -0
- package/dist/server/src/policies/isTelemetryEnabled.d.ts.map +1 -0
- package/dist/server/src/register.d.ts +6 -0
- package/dist/server/src/register.d.ts.map +1 -0
- package/dist/server/src/routes/admin.d.ts +24 -0
- package/dist/server/src/routes/admin.d.ts.map +1 -0
- package/dist/server/src/routes/api-tokens.d.ts +15 -0
- package/dist/server/src/routes/api-tokens.d.ts.map +1 -0
- package/dist/server/src/routes/authentication.d.ts +30 -0
- package/dist/server/src/routes/authentication.d.ts.map +1 -0
- package/dist/server/src/routes/content-api.d.ts +10 -0
- package/dist/server/src/routes/content-api.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts +60 -0
- package/dist/server/src/routes/index.d.ts.map +1 -0
- package/dist/server/src/routes/permissions.d.ts +10 -0
- package/dist/server/src/routes/permissions.d.ts.map +1 -0
- package/dist/server/src/routes/roles.d.ts +15 -0
- package/dist/server/src/routes/roles.d.ts.map +1 -0
- package/dist/server/src/routes/serve-admin-panel.d.ts +6 -0
- package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -0
- package/dist/server/src/routes/transfer.d.ts +49 -0
- package/dist/server/src/routes/transfer.d.ts.map +1 -0
- package/dist/server/src/routes/users.d.ts +15 -0
- package/dist/server/src/routes/users.d.ts.map +1 -0
- package/dist/server/src/routes/webhooks.d.ts +15 -0
- package/dist/server/src/routes/webhooks.d.ts.map +1 -0
- package/dist/server/src/services/action.d.ts +10 -0
- package/dist/server/src/services/action.d.ts.map +1 -0
- package/dist/server/src/services/api-token.d.ts +48 -0
- package/dist/server/src/services/api-token.d.ts.map +1 -0
- package/dist/server/src/services/auth.d.ts +21 -0
- package/dist/server/src/services/auth.d.ts.map +1 -0
- package/dist/server/src/services/condition.d.ts +3 -0
- package/dist/server/src/services/condition.d.ts.map +1 -0
- package/dist/server/src/services/constants.d.ts +34 -0
- package/dist/server/src/services/constants.d.ts.map +1 -0
- package/dist/server/src/services/content-type.d.ts +29 -0
- package/dist/server/src/services/content-type.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +111 -0
- package/dist/server/src/services/index.d.ts.map +1 -0
- package/dist/server/src/services/metrics.d.ts +8 -0
- package/dist/server/src/services/metrics.d.ts.map +1 -0
- package/dist/server/src/services/passport/local-strategy.d.ts +5 -0
- package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -0
- package/dist/server/src/services/passport.d.ts +12 -0
- package/dist/server/src/services/passport.d.ts.map +1 -0
- package/dist/server/src/services/permission/engine.d.ts +20 -0
- package/dist/server/src/services/permission/engine.d.ts.map +1 -0
- package/dist/server/src/services/permission/permissions-manager/index.d.ts +17 -0
- package/dist/server/src/services/permission/permissions-manager/index.d.ts.map +1 -0
- package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts +4 -0
- package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts.map +1 -0
- package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts +7 -0
- package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -0
- package/dist/server/src/services/permission/permissions-manager/validate.d.ts +6 -0
- package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -0
- package/dist/server/src/services/permission/queries.d.ts +43 -0
- package/dist/server/src/services/permission/queries.d.ts.map +1 -0
- package/dist/server/src/services/permission/sections-builder/builder.d.ts +38 -0
- package/dist/server/src/services/permission/sections-builder/builder.d.ts.map +1 -0
- package/dist/server/src/services/permission/sections-builder/handlers.d.ts +55 -0
- package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -0
- package/dist/server/src/services/permission/sections-builder/index.d.ts +9 -0
- package/dist/server/src/services/permission/sections-builder/index.d.ts.map +1 -0
- package/dist/server/src/services/permission/sections-builder/section.d.ts +38 -0
- package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -0
- package/dist/server/src/services/permission/sections-builder/utils.d.ts +13 -0
- package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -0
- package/dist/server/src/services/permission.d.ts +68 -0
- package/dist/server/src/services/permission.d.ts.map +1 -0
- package/dist/server/src/services/project-settings.d.ts +27 -0
- package/dist/server/src/services/project-settings.d.ts.map +1 -0
- package/dist/server/src/services/role.d.ts +41 -0
- package/dist/server/src/services/role.d.ts.map +1 -0
- package/dist/server/src/services/token.d.ts +44 -0
- package/dist/server/src/services/token.d.ts.map +1 -0
- package/dist/server/src/services/transfer/index.d.ts +5 -0
- package/dist/server/src/services/transfer/index.d.ts.map +1 -0
- package/dist/server/src/services/transfer/permission.d.ts +8 -0
- package/dist/server/src/services/transfer/permission.d.ts.map +1 -0
- package/dist/server/src/services/transfer/token.d.ts +59 -0
- package/dist/server/src/services/transfer/token.d.ts.map +1 -0
- package/dist/server/src/services/transfer/utils.d.ts +14 -0
- package/dist/server/src/services/transfer/utils.d.ts.map +1 -0
- package/dist/server/src/services/user.d.ts +32 -0
- package/dist/server/src/services/user.d.ts.map +1 -0
- package/dist/server/src/strategies/admin.d.ts +27 -0
- package/dist/server/src/strategies/admin.d.ts.map +1 -0
- package/dist/server/src/strategies/api-token.d.ts +61 -0
- package/dist/server/src/strategies/api-token.d.ts.map +1 -0
- package/dist/server/src/strategies/data-transfer.d.ts +53 -0
- package/dist/server/src/strategies/data-transfer.d.ts.map +1 -0
- package/dist/server/src/strategies/index.d.ts +18 -0
- package/dist/server/src/strategies/index.d.ts.map +1 -0
- package/dist/server/src/validation/action-provider.d.ts +6 -0
- package/dist/server/src/validation/action-provider.d.ts.map +1 -0
- package/dist/server/src/validation/api-tokens.d.ts +8 -0
- package/dist/server/src/validation/api-tokens.d.ts.map +1 -0
- package/dist/server/src/validation/authentication/forgot-password.d.ts +3 -0
- package/dist/server/src/validation/authentication/forgot-password.d.ts.map +1 -0
- package/dist/server/src/validation/authentication/index.d.ts +6 -0
- package/dist/server/src/validation/authentication/index.d.ts.map +1 -0
- package/dist/server/src/validation/authentication/register.d.ts +10 -0
- package/dist/server/src/validation/authentication/register.d.ts.map +1 -0
- package/dist/server/src/validation/authentication/renew-token.d.ts +3 -0
- package/dist/server/src/validation/authentication/renew-token.d.ts.map +1 -0
- package/dist/server/src/validation/authentication/reset-password.d.ts +3 -0
- package/dist/server/src/validation/authentication/reset-password.d.ts.map +1 -0
- package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts +3 -0
- package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts.map +1 -0
- package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts +3 -0
- package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts.map +1 -0
- package/dist/server/src/validation/common-functions/index.d.ts +4 -0
- package/dist/server/src/validation/common-functions/index.d.ts.map +1 -0
- package/dist/server/src/validation/common-validators.d.ts +61 -0
- package/dist/server/src/validation/common-validators.d.ts.map +1 -0
- package/dist/server/src/validation/permission.d.ts +10 -0
- package/dist/server/src/validation/permission.d.ts.map +1 -0
- package/dist/server/src/validation/policies/hasPermissions.d.ts +6 -0
- package/dist/server/src/validation/policies/hasPermissions.d.ts.map +1 -0
- package/dist/server/src/validation/project-settings.d.ts +10 -0
- package/dist/server/src/validation/project-settings.d.ts.map +1 -0
- package/dist/server/src/validation/role.d.ts +12 -0
- package/dist/server/src/validation/role.d.ts.map +1 -0
- package/dist/server/src/validation/transfer/index.d.ts +2 -0
- package/dist/server/src/validation/transfer/index.d.ts.map +1 -0
- package/dist/server/src/validation/transfer/token.d.ts +8 -0
- package/dist/server/src/validation/transfer/token.d.ts.map +1 -0
- package/dist/server/src/validation/user.d.ts +119 -0
- package/dist/server/src/validation/user.d.ts.map +1 -0
- package/dist/shared/contracts/admin.d.ts +161 -0
- package/dist/shared/contracts/admin.d.ts.map +1 -0
- package/dist/shared/contracts/api-token.d.ts +95 -0
- package/dist/shared/contracts/api-token.d.ts.map +1 -0
- package/dist/shared/contracts/audit-logs.d.ts +42 -0
- package/dist/shared/contracts/audit-logs.d.ts.map +1 -0
- package/dist/shared/contracts/authentication.d.ts +6 -2
- package/dist/shared/contracts/authentication.d.ts.map +1 -0
- package/dist/shared/contracts/content-api/permissions.d.ts +24 -0
- package/dist/shared/contracts/content-api/permissions.d.ts.map +1 -0
- package/dist/shared/contracts/content-api/routes.d.ts +28 -0
- package/dist/shared/contracts/content-api/routes.d.ts.map +1 -0
- package/dist/shared/contracts/content-api.d.ts +31 -0
- package/dist/shared/contracts/content-api.d.ts.map +1 -0
- package/dist/shared/contracts/permissions.d.ts +79 -0
- package/dist/shared/contracts/permissions.d.ts.map +1 -0
- package/dist/shared/contracts/providers.d.ts +1 -0
- package/dist/shared/contracts/providers.d.ts.map +1 -0
- package/dist/shared/contracts/review-workflows.d.ts +80 -0
- package/dist/shared/contracts/review-workflows.d.ts.map +1 -0
- package/dist/shared/contracts/roles.d.ts +91 -5
- package/dist/shared/contracts/roles.d.ts.map +1 -0
- package/dist/shared/contracts/shared.d.ts +24 -9
- package/dist/shared/contracts/shared.d.ts.map +1 -0
- package/dist/shared/contracts/transfer.d.ts +142 -0
- package/dist/shared/contracts/transfer.d.ts.map +1 -0
- package/dist/shared/contracts/user.d.ts +77 -8
- package/dist/shared/contracts/user.d.ts.map +1 -0
- package/dist/shared/contracts/users.d.ts +7 -2
- package/dist/shared/contracts/users.d.ts.map +1 -0
- package/dist/shared/contracts/webhooks.d.ts +111 -0
- package/dist/shared/contracts/webhooks.d.ts.map +1 -0
- package/dist/shared/schema.d.ts +1 -0
- package/dist/shared/schema.d.ts.map +1 -0
- package/index.d.ts +1 -1
- package/package.json +33 -21
- package/strapi-server.js +3 -3
- package/dist/_chunks/AuthenticatedApp-342bf22f.js +0 -1476
- package/dist/_chunks/AuthenticatedApp-342bf22f.js.map +0 -1
- package/dist/_chunks/AuthenticatedApp-bb31f306.mjs +0 -1450
- package/dist/_chunks/AuthenticatedApp-bb31f306.mjs.map +0 -1
- package/dist/_chunks/DragLayer-bff96835.mjs +0 -44
- package/dist/_chunks/DragLayer-bff96835.mjs.map +0 -1
- package/dist/_chunks/DragLayer-f07eee6c.js +0 -43
- package/dist/_chunks/DragLayer-f07eee6c.js.map +0 -1
- package/dist/_chunks/HomePage-0c7717c0.mjs +0 -49
- package/dist/_chunks/HomePage-0c7717c0.mjs.map +0 -1
- package/dist/_chunks/HomePage-175f79c7.js +0 -49
- package/dist/_chunks/HomePage-175f79c7.js.map +0 -1
- package/dist/_chunks/HomePage-246cc590.mjs +0 -542
- package/dist/_chunks/HomePage-246cc590.mjs.map +0 -1
- package/dist/_chunks/HomePage-6ff9e578.js +0 -563
- package/dist/_chunks/HomePage-6ff9e578.js.map +0 -1
- package/dist/_chunks/InstalledPluginsPage-170aff77.mjs +0 -134
- package/dist/_chunks/InstalledPluginsPage-170aff77.mjs.map +0 -1
- package/dist/_chunks/InstalledPluginsPage-3ae5dbb6.js +0 -153
- package/dist/_chunks/InstalledPluginsPage-3ae5dbb6.js.map +0 -1
- package/dist/_chunks/Layout-4b3e434a.js +0 -92
- package/dist/_chunks/Layout-4b3e434a.js.map +0 -1
- package/dist/_chunks/Layout-72fa2ace.mjs +0 -90
- package/dist/_chunks/Layout-72fa2ace.mjs.map +0 -1
- package/dist/_chunks/LimitsModal-203482b8.js +0 -84
- package/dist/_chunks/LimitsModal-203482b8.js.map +0 -1
- package/dist/_chunks/LimitsModal-da04700e.mjs +0 -82
- package/dist/_chunks/LimitsModal-da04700e.mjs.map +0 -1
- package/dist/_chunks/Login-576bbc11.js +0 -64
- package/dist/_chunks/Login-576bbc11.js.map +0 -1
- package/dist/_chunks/Login-d627bb0a.mjs +0 -62
- package/dist/_chunks/Login-d627bb0a.mjs.map +0 -1
- package/dist/_chunks/MarketplacePage-1cbfa8fd.mjs +0 -1011
- package/dist/_chunks/MarketplacePage-1cbfa8fd.mjs.map +0 -1
- package/dist/_chunks/MarketplacePage-e7cd973b.js +0 -1035
- package/dist/_chunks/MarketplacePage-e7cd973b.js.map +0 -1
- package/dist/_chunks/ProfilePage-52844daa.js +0 -665
- package/dist/_chunks/ProfilePage-52844daa.js.map +0 -1
- package/dist/_chunks/ProfilePage-ef400907.mjs +0 -642
- package/dist/_chunks/ProfilePage-ef400907.mjs.map +0 -1
- package/dist/_chunks/SalesPage-4a0a68fb.js +0 -51
- package/dist/_chunks/SalesPage-4a0a68fb.js.map +0 -1
- package/dist/_chunks/SalesPage-56bf9463.mjs +0 -48
- package/dist/_chunks/SalesPage-56bf9463.mjs.map +0 -1
- package/dist/_chunks/SalesPage-66f9ea32.js +0 -51
- package/dist/_chunks/SalesPage-66f9ea32.js.map +0 -1
- package/dist/_chunks/SalesPage-d0cdc1a7.js +0 -48
- package/dist/_chunks/SalesPage-d0cdc1a7.js.map +0 -1
- package/dist/_chunks/SalesPage-f9597ae7.mjs +0 -51
- package/dist/_chunks/SalesPage-f9597ae7.mjs.map +0 -1
- package/dist/_chunks/SalesPage-fceedf48.mjs +0 -51
- package/dist/_chunks/SalesPage-fceedf48.mjs.map +0 -1
- package/dist/_chunks/build-1026ce7c.mjs +0 -68
- package/dist/_chunks/build-1026ce7c.mjs.map +0 -1
- package/dist/_chunks/build-d99bcc06.js +0 -68
- package/dist/_chunks/build-d99bcc06.js.map +0 -1
- package/dist/_chunks/colors-c24a54f0.js +0 -33
- package/dist/_chunks/colors-c24a54f0.js.map +0 -1
- package/dist/_chunks/colors-e7489dd4.mjs +0 -34
- package/dist/_chunks/colors-e7489dd4.mjs.map +0 -1
- package/dist/_chunks/constants-4aca55b6.js +0 -85
- package/dist/_chunks/constants-4aca55b6.js.map +0 -1
- package/dist/_chunks/constants-64899732.js +0 -30
- package/dist/_chunks/constants-64899732.js.map +0 -1
- package/dist/_chunks/constants-6c68e9a0.js +0 -229
- package/dist/_chunks/constants-6c68e9a0.js.map +0 -1
- package/dist/_chunks/constants-6ecddc43.mjs +0 -111
- package/dist/_chunks/constants-6ecddc43.mjs.map +0 -1
- package/dist/_chunks/constants-74b8a935.mjs +0 -52
- package/dist/_chunks/constants-74b8a935.mjs.map +0 -1
- package/dist/_chunks/constants-7596f6f3.js +0 -132
- package/dist/_chunks/constants-7596f6f3.js.map +0 -1
- package/dist/_chunks/constants-a6fd64fc.mjs +0 -80
- package/dist/_chunks/constants-a6fd64fc.mjs.map +0 -1
- package/dist/_chunks/constants-ae0b83df.mjs +0 -227
- package/dist/_chunks/constants-ae0b83df.mjs.map +0 -1
- package/dist/_chunks/constants-c1f1f698.mjs +0 -85
- package/dist/_chunks/constants-c1f1f698.mjs.map +0 -1
- package/dist/_chunks/constants-ddd2d586.js +0 -82
- package/dist/_chunks/constants-ddd2d586.js.map +0 -1
- package/dist/_chunks/constants-def33545.mjs +0 -30
- package/dist/_chunks/constants-def33545.mjs.map +0 -1
- package/dist/_chunks/constants-e05f06d4.js +0 -52
- package/dist/_chunks/constants-e05f06d4.js.map +0 -1
- package/dist/_chunks/develop-72394876.mjs +0 -61
- package/dist/_chunks/develop-72394876.mjs.map +0 -1
- package/dist/_chunks/develop-da585b1e.js +0 -61
- package/dist/_chunks/develop-da585b1e.js.map +0 -1
- package/dist/_chunks/edit-29bdf5d6.js +0 -50
- package/dist/_chunks/edit-29bdf5d6.js.map +0 -1
- package/dist/_chunks/edit-923cefa0.mjs +0 -32
- package/dist/_chunks/edit-923cefa0.mjs.map +0 -1
- package/dist/_chunks/en-0e9e9327.js +0 -1022
- package/dist/_chunks/en-0e9e9327.js.map +0 -1
- package/dist/_chunks/en-e728accb.mjs +0 -1022
- package/dist/_chunks/en-e728accb.mjs.map +0 -1
- package/dist/_chunks/index-10a05917.mjs +0 -51
- package/dist/_chunks/index-10a05917.mjs.map +0 -1
- package/dist/_chunks/index-115d317b.mjs +0 -244
- package/dist/_chunks/index-115d317b.mjs.map +0 -1
- package/dist/_chunks/index-171715e4.js +0 -697
- package/dist/_chunks/index-171715e4.js.map +0 -1
- package/dist/_chunks/index-176cc121.mjs +0 -469
- package/dist/_chunks/index-176cc121.mjs.map +0 -1
- package/dist/_chunks/index-1bac5263.js +0 -338
- package/dist/_chunks/index-1bac5263.js.map +0 -1
- package/dist/_chunks/index-200c5a6a.js +0 -51
- package/dist/_chunks/index-200c5a6a.js.map +0 -1
- package/dist/_chunks/index-215b5421.mjs +0 -51
- package/dist/_chunks/index-215b5421.mjs.map +0 -1
- package/dist/_chunks/index-23401c29.js +0 -418
- package/dist/_chunks/index-23401c29.js.map +0 -1
- package/dist/_chunks/index-242c859c.js +0 -335
- package/dist/_chunks/index-242c859c.js.map +0 -1
- package/dist/_chunks/index-26fcb3ca.mjs +0 -1432
- package/dist/_chunks/index-26fcb3ca.mjs.map +0 -1
- package/dist/_chunks/index-28dd9303.mjs +0 -51
- package/dist/_chunks/index-28dd9303.mjs.map +0 -1
- package/dist/_chunks/index-296c14bf.mjs +0 -362
- package/dist/_chunks/index-296c14bf.mjs.map +0 -1
- package/dist/_chunks/index-2de06c32.js +0 -51
- package/dist/_chunks/index-2de06c32.js.map +0 -1
- package/dist/_chunks/index-2eb69b5d.mjs +0 -399
- package/dist/_chunks/index-2eb69b5d.mjs.map +0 -1
- package/dist/_chunks/index-2f61e3ae.js +0 -585
- package/dist/_chunks/index-2f61e3ae.js.map +0 -1
- package/dist/_chunks/index-308b73ba.mjs +0 -60
- package/dist/_chunks/index-308b73ba.mjs.map +0 -1
- package/dist/_chunks/index-34e41e15.js +0 -134
- package/dist/_chunks/index-34e41e15.js.map +0 -1
- package/dist/_chunks/index-38115cde.js +0 -66
- package/dist/_chunks/index-38115cde.js.map +0 -1
- package/dist/_chunks/index-383efae4.mjs +0 -55
- package/dist/_chunks/index-383efae4.mjs.map +0 -1
- package/dist/_chunks/index-3b426575.js +0 -47
- package/dist/_chunks/index-3b426575.js.map +0 -1
- package/dist/_chunks/index-47af1603.js +0 -253
- package/dist/_chunks/index-47af1603.js.map +0 -1
- package/dist/_chunks/index-49b7e6ff.mjs +0 -1266
- package/dist/_chunks/index-49b7e6ff.mjs.map +0 -1
- package/dist/_chunks/index-4d9b2cb9.js +0 -47
- package/dist/_chunks/index-4d9b2cb9.js.map +0 -1
- package/dist/_chunks/index-4de70b5d.js +0 -3404
- package/dist/_chunks/index-4de70b5d.js.map +0 -1
- package/dist/_chunks/index-59b1f604.js +0 -380
- package/dist/_chunks/index-59b1f604.js.map +0 -1
- package/dist/_chunks/index-5a5217e0.mjs +0 -308
- package/dist/_chunks/index-5a5217e0.mjs.map +0 -1
- package/dist/_chunks/index-5da07c41.js +0 -418
- package/dist/_chunks/index-5da07c41.js.map +0 -1
- package/dist/_chunks/index-600cb5dd.js +0 -51
- package/dist/_chunks/index-600cb5dd.js.map +0 -1
- package/dist/_chunks/index-608d8d10.mjs +0 -393
- package/dist/_chunks/index-608d8d10.mjs.map +0 -1
- package/dist/_chunks/index-74812118.mjs +0 -53
- package/dist/_chunks/index-74812118.mjs.map +0 -1
- package/dist/_chunks/index-7d578921.js +0 -847
- package/dist/_chunks/index-7d578921.js.map +0 -1
- package/dist/_chunks/index-8109fa91.mjs +0 -676
- package/dist/_chunks/index-8109fa91.mjs.map +0 -1
- package/dist/_chunks/index-82c7a120.js +0 -15401
- package/dist/_chunks/index-82c7a120.js.map +0 -1
- package/dist/_chunks/index-83d53962.js +0 -62
- package/dist/_chunks/index-83d53962.js.map +0 -1
- package/dist/_chunks/index-88298941.js +0 -54
- package/dist/_chunks/index-88298941.js.map +0 -1
- package/dist/_chunks/index-8933483b.mjs +0 -3374
- package/dist/_chunks/index-8933483b.mjs.map +0 -1
- package/dist/_chunks/index-91df57b1.mjs +0 -826
- package/dist/_chunks/index-91df57b1.mjs.map +0 -1
- package/dist/_chunks/index-973c363e.mjs +0 -63
- package/dist/_chunks/index-973c363e.mjs.map +0 -1
- package/dist/_chunks/index-989bbeec.mjs +0 -232
- package/dist/_chunks/index-989bbeec.mjs.map +0 -1
- package/dist/_chunks/index-9910dda4.js +0 -55
- package/dist/_chunks/index-9910dda4.js.map +0 -1
- package/dist/_chunks/index-9afb163a.js +0 -418
- package/dist/_chunks/index-9afb163a.js.map +0 -1
- package/dist/_chunks/index-9f61bef8.js +0 -51
- package/dist/_chunks/index-9f61bef8.js.map +0 -1
- package/dist/_chunks/index-ab31623a.mjs +0 -273
- package/dist/_chunks/index-ab31623a.mjs.map +0 -1
- package/dist/_chunks/index-ac85118a.mjs +0 -47
- package/dist/_chunks/index-ac85118a.mjs.map +0 -1
- package/dist/_chunks/index-ad8e55c0.mjs +0 -866
- package/dist/_chunks/index-ad8e55c0.mjs.map +0 -1
- package/dist/_chunks/index-aedeaf5a.js +0 -311
- package/dist/_chunks/index-aedeaf5a.js.map +0 -1
- package/dist/_chunks/index-bbac142a.js +0 -125
- package/dist/_chunks/index-bbac142a.js.map +0 -1
- package/dist/_chunks/index-bd18f803.mjs +0 -15320
- package/dist/_chunks/index-bd18f803.mjs.map +0 -1
- package/dist/_chunks/index-c8b8a2ee.mjs +0 -359
- package/dist/_chunks/index-c8b8a2ee.mjs.map +0 -1
- package/dist/_chunks/index-c97f5820.js +0 -1456
- package/dist/_chunks/index-c97f5820.js.map +0 -1
- package/dist/_chunks/index-cb6a72d2.mjs +0 -127
- package/dist/_chunks/index-cb6a72d2.mjs.map +0 -1
- package/dist/_chunks/index-cbc7c054.js +0 -266
- package/dist/_chunks/index-cbc7c054.js.map +0 -1
- package/dist/_chunks/index-ce5995cd.mjs +0 -132
- package/dist/_chunks/index-ce5995cd.mjs.map +0 -1
- package/dist/_chunks/index-d1152896.js +0 -294
- package/dist/_chunks/index-d1152896.js.map +0 -1
- package/dist/_chunks/index-d1dd825b.js +0 -365
- package/dist/_chunks/index-d1dd825b.js.map +0 -1
- package/dist/_chunks/index-d2d9df41.mjs +0 -270
- package/dist/_chunks/index-d2d9df41.mjs.map +0 -1
- package/dist/_chunks/index-d3e1fd86.js +0 -490
- package/dist/_chunks/index-d3e1fd86.js.map +0 -1
- package/dist/_chunks/index-d4517ac4.mjs +0 -582
- package/dist/_chunks/index-d4517ac4.mjs.map +0 -1
- package/dist/_chunks/index-d49fa655.js +0 -873
- package/dist/_chunks/index-d49fa655.js.map +0 -1
- package/dist/_chunks/index-d6694cab.mjs +0 -125
- package/dist/_chunks/index-d6694cab.mjs.map +0 -1
- package/dist/_chunks/index-e117c643.mjs +0 -55
- package/dist/_chunks/index-e117c643.mjs.map +0 -1
- package/dist/_chunks/index-e1b90981.mjs +0 -314
- package/dist/_chunks/index-e1b90981.mjs.map +0 -1
- package/dist/_chunks/index-e24df0bf.js +0 -403
- package/dist/_chunks/index-e24df0bf.js.map +0 -1
- package/dist/_chunks/index-e2d2f58e.mjs +0 -47
- package/dist/_chunks/index-e2d2f58e.mjs.map +0 -1
- package/dist/_chunks/index-e369d741.mjs +0 -383
- package/dist/_chunks/index-e369d741.mjs.map +0 -1
- package/dist/_chunks/index-e79b2b9e.mjs +0 -338
- package/dist/_chunks/index-e79b2b9e.mjs.map +0 -1
- package/dist/_chunks/index-ea18ff22.mjs +0 -51
- package/dist/_chunks/index-ea18ff22.mjs.map +0 -1
- package/dist/_chunks/index-eb67694f.mjs +0 -261
- package/dist/_chunks/index-eb67694f.mjs.map +0 -1
- package/dist/_chunks/index-ed3696ec.js +0 -272
- package/dist/_chunks/index-ed3696ec.js.map +0 -1
- package/dist/_chunks/index-ee1ea38b.js +0 -129
- package/dist/_chunks/index-ee1ea38b.js.map +0 -1
- package/dist/_chunks/index-efc967f5.js +0 -55
- package/dist/_chunks/index-efc967f5.js.map +0 -1
- package/dist/_chunks/index-fc700e52.js +0 -263
- package/dist/_chunks/index-fc700e52.js.map +0 -1
- package/dist/_chunks/index-fd4e5616.mjs +0 -412
- package/dist/_chunks/index-fd4e5616.mjs.map +0 -1
- package/dist/_chunks/index-ffd2f664.js +0 -1337
- package/dist/_chunks/index-ffd2f664.js.map +0 -1
- package/dist/_chunks/schema-260fec28.js +0 -514
- package/dist/_chunks/schema-260fec28.js.map +0 -1
- package/dist/_chunks/schema-6bd8bd85.mjs +0 -490
- package/dist/_chunks/schema-6bd8bd85.mjs.map +0 -1
- package/dist/_chunks/useAdminRolePermissions-603a2709.mjs +0 -2322
- package/dist/_chunks/useAdminRolePermissions-603a2709.mjs.map +0 -1
- package/dist/_chunks/useAdminRolePermissions-cb1a3ee2.js +0 -2337
- package/dist/_chunks/useAdminRolePermissions-cb1a3ee2.js.map +0 -1
- package/dist/_chunks/useAdminRoles-68d5d608.js +0 -62
- package/dist/_chunks/useAdminRoles-68d5d608.js.map +0 -1
- package/dist/_chunks/useAdminRoles-7ab5d521.mjs +0 -44
- package/dist/_chunks/useAdminRoles-7ab5d521.mjs.map +0 -1
- package/dist/_chunks/useAdminUsers-05d6b26a.js +0 -61
- package/dist/_chunks/useAdminUsers-05d6b26a.js.map +0 -1
- package/dist/_chunks/useAdminUsers-09f86a58.mjs +0 -43
- package/dist/_chunks/useAdminUsers-09f86a58.mjs.map +0 -1
- package/dist/_chunks/useDebounce-4712871e.js +0 -35
- package/dist/_chunks/useDebounce-4712871e.js.map +0 -1
- package/dist/_chunks/useDebounce-9364f340.mjs +0 -17
- package/dist/_chunks/useDebounce-9364f340.mjs.map +0 -1
- package/dist/_chunks/useLicenseLimitNotification-1fd756fa.mjs +0 -80
- package/dist/_chunks/useLicenseLimitNotification-1fd756fa.mjs.map +0 -1
- package/dist/_chunks/useLicenseLimitNotification-8a4d7fc1.js +0 -100
- package/dist/_chunks/useLicenseLimitNotification-8a4d7fc1.js.map +0 -1
- package/dist/_chunks/useLicenseLimits-13a102d3.mjs +0 -31
- package/dist/_chunks/useLicenseLimits-13a102d3.mjs.map +0 -1
- package/dist/_chunks/useLicenseLimits-81ef3cce.js +0 -49
- package/dist/_chunks/useLicenseLimits-81ef3cce.js.map +0 -1
- package/dist/_chunks/useReviewWorkflows-799e0305.js +0 -59
- package/dist/_chunks/useReviewWorkflows-799e0305.js.map +0 -1
- package/dist/_chunks/useReviewWorkflows-9e6b8986.mjs +0 -41
- package/dist/_chunks/useReviewWorkflows-9e6b8986.mjs.map +0 -1
- package/dist/_chunks/validateWorkflow-5693ea2d.js +0 -1124
- package/dist/_chunks/validateWorkflow-5693ea2d.js.map +0 -1
- package/dist/_chunks/validateWorkflow-7a2b6ab8.mjs +0 -1101
- package/dist/_chunks/validateWorkflow-7a2b6ab8.mjs.map +0 -1
- package/dist/admin/src/components/ConfigurationProvider.d.ts +0 -11
- package/dist/admin/src/components/ThemeToggleProvider.d.ts +0 -12
- package/dist/admin/src/content-manager/components/BlocksInput/hooks/useBlocksStore.d.ts +0 -32
- package/dist/admin/src/content-manager/components/BlocksInput/hooks/useModifiersStore.d.ts +0 -20
- package/dist/admin/src/content-manager/components/BlocksInput/tests/mock-schema.d.ts +0 -2
- package/dist/admin/src/contexts/admin.d.ts +0 -14
- package/dist/admin/src/contexts/apiTokenPermissions.d.ts +0 -36
- package/dist/admin/src/contexts/configuration.d.ts +0 -27
- package/dist/admin/src/contexts/themeToggle.d.ts +0 -22
- package/dist/admin/src/hooks/__mocks__/useAdminUsers.d.ts +0 -2
- package/dist/admin/src/hooks/__mocks__/useContentTypes.d.ts +0 -2
- package/dist/admin/src/hooks/__mocks__/useSettingsMenu.d.ts +0 -2
- package/dist/admin/src/pages/Marketplace/hooks/__mocks__/useNavigatorOnline.d.ts +0 -1
- package/dist/admin/src/pages/SettingsPage/pages/Roles/EditPage/hooks/usePermissionsDataManager.d.ts +0 -24
- package/dist/admin/src/pages/SettingsPage/pages/Roles/hooks/__mocks__/useAdminRolePermissions.d.ts +0 -2
- package/dist/admin/src/pages/SettingsPage/pages/Roles/hooks/useAdminRolePermissions.d.ts +0 -11
- package/dist/admin/src/pages/SettingsPage/utils/makeUniqueRoutes.d.ts +0 -6
- package/dist/admin/src/shared/components/InjectionZone.d.ts +0 -53
- package/dist/admin/src/shared/hooks/__mocks__/useInjectionZone.d.ts +0 -1
- package/dist/admin/src/shared/hooks/useInjectionZone.d.ts +0 -2
- package/ee/server/bootstrap.js +0 -41
- package/ee/server/config/admin-actions.js +0 -72
- package/ee/server/constants/default-stages.json +0 -18
- package/ee/server/constants/default-workflow.json +0 -3
- package/ee/server/constants/webhookEvents.js +0 -5
- package/ee/server/constants/workflows.js +0 -33
- package/ee/server/content-types/index.js +0 -9
- package/ee/server/content-types/workflow/index.js +0 -41
- package/ee/server/content-types/workflow-stage/index.js +0 -51
- package/ee/server/controllers/__tests__/stages.test.js +0 -174
- package/ee/server/controllers/admin.js +0 -50
- package/ee/server/controllers/audit-logs.js +0 -24
- package/ee/server/controllers/authentication/constants.js +0 -11
- package/ee/server/controllers/authentication/index.js +0 -11
- package/ee/server/controllers/authentication/middlewares.js +0 -117
- package/ee/server/controllers/authentication/utils.js +0 -23
- package/ee/server/controllers/authentication.js +0 -64
- package/ee/server/controllers/index.js +0 -12
- package/ee/server/controllers/role.js +0 -64
- package/ee/server/controllers/user.js +0 -110
- package/ee/server/controllers/workflows/assignees/index.js +0 -44
- package/ee/server/controllers/workflows/index.js +0 -188
- package/ee/server/controllers/workflows/stages/index.js +0 -189
- package/ee/server/destroy.js +0 -12
- package/ee/server/index.js +0 -11
- package/ee/server/middlewares/__tests__/review-workflows.test.js +0 -40
- package/ee/server/middlewares/review-workflows.js +0 -40
- package/ee/server/migrations/audit-logs-table.js +0 -45
- package/ee/server/migrations/review-workflows-content-types.js +0 -29
- package/ee/server/migrations/review-workflows-deleted-ct-in-workflows.js +0 -39
- package/ee/server/migrations/review-workflows-stage-attribute.js +0 -49
- package/ee/server/migrations/review-workflows-stages-color.js +0 -20
- package/ee/server/migrations/review-workflows-stages-roles.js +0 -68
- package/ee/server/migrations/review-workflows-workflow-name.js +0 -28
- package/ee/server/register.js +0 -40
- package/ee/server/routes/audit-logs.js +0 -43
- package/ee/server/routes/index.js +0 -8
- package/ee/server/routes/license-limit.js +0 -29
- package/ee/server/routes/review-workflows.js +0 -164
- package/ee/server/routes/sso.js +0 -69
- package/ee/server/routes/utils.js +0 -15
- package/ee/server/services/__tests__/assignees.test.js +0 -76
- package/ee/server/services/__tests__/audit-logs.test.js +0 -300
- package/ee/server/services/__tests__/passport.test.js +0 -95
- package/ee/server/services/__tests__/review-workflows-validation.test.js +0 -100
- package/ee/server/services/__tests__/review-workflows.test.js +0 -163
- package/ee/server/services/__tests__/sso.test.js +0 -117
- package/ee/server/services/__tests__/stages.test.js +0 -275
- package/ee/server/services/__tests__/workflows.test.js +0 -203
- package/ee/server/services/audit-logs.js +0 -236
- package/ee/server/services/auth.js +0 -75
- package/ee/server/services/index.js +0 -18
- package/ee/server/services/passport/provider-registry.js +0 -27
- package/ee/server/services/passport/sso.js +0 -37
- package/ee/server/services/passport.js +0 -46
- package/ee/server/services/review-workflows/__tests__/entity-service-decorator.test.js +0 -211
- package/ee/server/services/review-workflows/assignees.js +0 -54
- package/ee/server/services/review-workflows/entity-service-decorator.js +0 -101
- package/ee/server/services/review-workflows/metrics/__tests__/weekly-metrics.test.js +0 -65
- package/ee/server/services/review-workflows/metrics/index.js +0 -56
- package/ee/server/services/review-workflows/metrics/weekly-metrics.js +0 -76
- package/ee/server/services/review-workflows/review-workflows.js +0 -133
- package/ee/server/services/review-workflows/stage-permissions.js +0 -60
- package/ee/server/services/review-workflows/stages.js +0 -384
- package/ee/server/services/review-workflows/validation.js +0 -68
- package/ee/server/services/review-workflows/workflows/__tests__/content-types.test.js +0 -146
- package/ee/server/services/review-workflows/workflows/content-types.js +0 -89
- package/ee/server/services/review-workflows/workflows/index.js +0 -237
- package/ee/server/services/role.js +0 -24
- package/ee/server/services/seat-enforcement.js +0 -114
- package/ee/server/services/user.js +0 -234
- package/ee/server/utils/__tests__/persisted-tables.test.js +0 -38
- package/ee/server/utils/__tests__/sso-lock.test.js +0 -84
- package/ee/server/utils/index.js +0 -8
- package/ee/server/utils/persisted-tables.js +0 -139
- package/ee/server/utils/review-workflows.js +0 -39
- package/ee/server/utils/sso-lock.js +0 -42
- package/ee/server/validation/audit-logs.js +0 -18
- package/ee/server/validation/authentication.js +0 -36
- package/ee/server/validation/review-workflows.js +0 -92
- package/ee/server/validation/role.js +0 -68
- package/ee/server/validation/user.js +0 -27
- package/ee/strapi-server.js +0 -3
- package/server/bootstrap.js +0 -101
- package/server/config/admin-actions.js +0 -216
- package/server/config/admin-conditions.js +0 -26
- package/server/config/email-templates/forgot-password.js +0 -25
- package/server/config/index.js +0 -9
- package/server/config/settings.js +0 -9
- package/server/content-types/Permission.js +0 -64
- package/server/content-types/Role.js +0 -59
- package/server/content-types/User.js +0 -112
- package/server/content-types/api-token-permission.js +0 -36
- package/server/content-types/api-token.js +0 -76
- package/server/content-types/index.js +0 -11
- package/server/content-types/transfer-token-permission.js +0 -36
- package/server/content-types/transfer-token.js +0 -66
- package/server/controllers/__tests__/admin.test.js +0 -106
- package/server/controllers/__tests__/api-token.test.js +0 -496
- package/server/controllers/__tests__/content-api.test.js +0 -173
- package/server/controllers/__tests__/permission.test.js +0 -200
- package/server/controllers/__tests__/role.test.js +0 -201
- package/server/controllers/__tests__/transfer/token.test.js +0 -520
- package/server/controllers/__tests__/user.test.js +0 -326
- package/server/controllers/admin.js +0 -151
- package/server/controllers/api-token.js +0 -135
- package/server/controllers/authenticated-user.js +0 -52
- package/server/controllers/authentication.js +0 -172
- package/server/controllers/content-api.js +0 -15
- package/server/controllers/formatters/conditions.js +0 -12
- package/server/controllers/formatters/format-actions-by-sections.js +0 -40
- package/server/controllers/formatters/index.js +0 -9
- package/server/controllers/index.js +0 -14
- package/server/controllers/permission.js +0 -45
- package/server/controllers/role.js +0 -198
- package/server/controllers/transfer/index.js +0 -13
- package/server/controllers/transfer/runner.js +0 -28
- package/server/controllers/transfer/token.js +0 -131
- package/server/controllers/user.js +0 -141
- package/server/controllers/webhooks.js +0 -132
- package/server/destroy.js +0 -10
- package/server/domain/action/__tests__/action-domain.test.js +0 -230
- package/server/domain/action/__tests__/action-provider.test.js +0 -376
- package/server/domain/action/index.js +0 -142
- package/server/domain/action/provider.js +0 -83
- package/server/domain/condition/__tests__/condition-domain.test.js +0 -122
- package/server/domain/condition/__tests__/condition-provider.test.js +0 -156
- package/server/domain/condition/index.js +0 -92
- package/server/domain/condition/provider.js +0 -42
- package/server/domain/permission/__tests__/permission-domain.test.js +0 -285
- package/server/domain/permission/index.js +0 -156
- package/server/domain/user.js +0 -28
- package/server/index.js +0 -26
- package/server/middlewares/data-transfer.js +0 -29
- package/server/middlewares/index.js +0 -8
- package/server/middlewares/rateLimit.js +0 -47
- package/server/policies/hasPermissions.js +0 -38
- package/server/policies/index.js +0 -7
- package/server/policies/isAuthenticatedAdmin.js +0 -5
- package/server/policies/isTelemetryEnabled.js +0 -16
- package/server/register.js +0 -19
- package/server/routes/admin.js +0 -71
- package/server/routes/api-tokens.js +0 -70
- package/server/routes/authentication.js +0 -57
- package/server/routes/content-api.js +0 -20
- package/server/routes/index.js +0 -28
- package/server/routes/permissions.js +0 -20
- package/server/routes/roles.js +0 -107
- package/server/routes/serve-admin-panel.js +0 -71
- package/server/routes/transfer.js +0 -102
- package/server/routes/users.js +0 -88
- package/server/routes/webhooks.js +0 -81
- package/server/services/__tests__/action.test.js +0 -98
- package/server/services/__tests__/api-token.test.js +0 -980
- package/server/services/__tests__/auth.test.js +0 -319
- package/server/services/__tests__/content-type.test.js +0 -405
- package/server/services/__tests__/metrics.test.js +0 -65
- package/server/services/__tests__/passport.test.js +0 -90
- package/server/services/__tests__/permission.test.js +0 -177
- package/server/services/__tests__/permissions-manager-sanitize.test.js +0 -117
- package/server/services/__tests__/permissions-manager-validate.test.js +0 -119
- package/server/services/__tests__/permissions-manager.test.js +0 -318
- package/server/services/__tests__/permissions.section-builder.section.test.js +0 -136
- package/server/services/__tests__/project-settings.test.js +0 -397
- package/server/services/__tests__/role.test.js +0 -970
- package/server/services/__tests__/token.test.js +0 -217
- package/server/services/__tests__/transfer/token.test.js +0 -878
- package/server/services/__tests__/user.test.js +0 -786
- package/server/services/action.js +0 -35
- package/server/services/api-token.js +0 -453
- package/server/services/auth.js +0 -117
- package/server/services/condition.js +0 -14
- package/server/services/constants.js +0 -37
- package/server/services/content-type.js +0 -208
- package/server/services/index.js +0 -18
- package/server/services/metrics.js +0 -44
- package/server/services/passport/local-strategy.js +0 -28
- package/server/services/passport.js +0 -45
- package/server/services/permission/engine.js +0 -85
- package/server/services/permission/permissions-manager/index.js +0 -53
- package/server/services/permission/permissions-manager/query-builders.js +0 -72
- package/server/services/permission/permissions-manager/sanitize.js +0 -286
- package/server/services/permission/permissions-manager/validate.js +0 -218
- package/server/services/permission/queries.js +0 -190
- package/server/services/permission/sections-builder/builder.js +0 -84
- package/server/services/permission/sections-builder/handlers.js +0 -156
- package/server/services/permission/sections-builder/index.js +0 -50
- package/server/services/permission/sections-builder/section.js +0 -71
- package/server/services/permission/sections-builder/utils.js +0 -26
- package/server/services/permission.js +0 -33
- package/server/services/project-settings.js +0 -174
- package/server/services/role.js +0 -471
- package/server/services/token.js +0 -70
- package/server/services/transfer/index.js +0 -7
- package/server/services/transfer/permission.js +0 -22
- package/server/services/transfer/token.js +0 -449
- package/server/services/transfer/utils.js +0 -38
- package/server/services/user.js +0 -363
- package/server/strategies/__tests__/admin.test.js +0 -118
- package/server/strategies/__tests__/api-token.test.js +0 -364
- package/server/strategies/admin.js +0 -52
- package/server/strategies/api-token.js +0 -140
- package/server/strategies/data-transfer.js +0 -113
- package/server/strategies/index.js +0 -26
- package/server/utils/index.d.ts +0 -25
- package/server/utils/index.js +0 -9
- package/server/validation/__tests__/common-functions.test.js +0 -54
- package/server/validation/action-provider.js +0 -67
- package/server/validation/api-tokens.js +0 -32
- package/server/validation/authentication/forgot-password.js +0 -14
- package/server/validation/authentication/index.js +0 -19
- package/server/validation/authentication/register.js +0 -45
- package/server/validation/authentication/renew-token.js +0 -7
- package/server/validation/authentication/reset-password.js +0 -15
- package/server/validation/common-functions/check-fields-are-correctly-nested.js +0 -28
- package/server/validation/common-functions/check-fields-dont-have-duplicates.js +0 -17
- package/server/validation/common-functions/index.js +0 -9
- package/server/validation/common-validators.js +0 -209
- package/server/validation/permission.js +0 -53
- package/server/validation/policies/hasPermissions.js +0 -27
- package/server/validation/project-settings.js +0 -48
- package/server/validation/role.js +0 -59
- package/server/validation/transfer/index.js +0 -5
- package/server/validation/transfer/token.js +0 -42
- package/server/validation/user.js +0 -65
- /package/dist/admin/src/pages/{SettingsPage → Settings}/hooks/useRegenerate.d.ts +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-4de70b5d.js","sources":["../../admin/src/components/NoJavascript.tsx","../../admin/src/components/DefaultDocument.tsx","../../admin/src/components/PrivateRoute.tsx","../../admin/src/constants.ts","../../admin/src/contexts/configuration.ts","../../admin/src/hooks/useEnterprise.ts","../../admin/src/components/LanguageProvider.tsx","../../admin/src/components/UnauthenticatedLogo.tsx","../../admin/src/layouts/UnauthenticatedLayout.tsx","../../admin/src/pages/Auth/components/FieldActionWrapper.tsx","../../admin/src/pages/Auth/components/Login.tsx","../../admin/src/pages/Auth/components/ForgotPassword.tsx","../../admin/src/pages/Auth/components/ForgotPasswordSuccess.tsx","../../admin/src/pages/Auth/components/Oops.tsx","../../admin/src/components/NpsSurvey.tsx","../../admin/src/pages/Auth/components/Register.tsx","../../admin/src/pages/Auth/components/ResetPassword.tsx","../../admin/src/pages/Auth/constants.ts","../../admin/src/pages/Auth/AuthPage.tsx","../../admin/src/pages/NotFoundPage.tsx","../../admin/src/pages/UseCasePage.tsx","../../admin/src/utils/createRoute.tsx","../../admin/src/App.tsx","../../admin/src/assets/images/logo-strapi-2022.svg","../../admin/src/contexts/admin.ts","../../admin/src/components/ConfigurationProvider.tsx","../../admin/src/components/GuidedTour/Provider.tsx","../../admin/src/contexts/themeToggle.ts","../../admin/src/components/Theme.tsx","../../admin/src/components/ThemeToggleProvider.tsx","../../admin/src/components/Providers.tsx","../../admin/src/core/apis/Components.ts","../../admin/src/core/apis/CustomFields.ts","../../admin/src/core/apis/Fields.ts","../../admin/src/core/apis/Middlewares.ts","../../admin/src/core/apis/Plugin.ts","../../admin/src/core/apis/Reducers.ts","../../admin/src/core/store/hooks.ts","../../admin/src/components/RBACProvider.tsx","../../admin/src/content-manager/hooks/useSyncRbac/constants.js","../../admin/src/content-manager/hooks/useSyncRbac/reducer.js","../../admin/src/content-manager/pages/App/constants.js","../../admin/src/content-manager/pages/App/reducer.js","../../admin/src/content-manager/pages/EditViewLayoutManager/constants.js","../../admin/src/content-manager/pages/EditViewLayoutManager/reducer.js","../../admin/src/content-manager/pages/ListView/constants.js","../../admin/src/content-manager/pages/ListView/reducer.js","../../admin/src/content-manager/sharedReducers/crudReducer/constants.js","../../admin/src/content-manager/sharedReducers/crudReducer/reducer.js","../../admin/src/reducer.ts","../../admin/src/core/store/configure.ts","../../admin/src/core/utils/basename.ts","../../admin/src/core/utils/createHook.ts","../../admin/src/shared/hooks/useInjectionZone.ts","../../admin/src/shared/components/InjectionZone.tsx","../../admin/src/translations/languageNativeNames.ts","../../admin/src/StrapiApp.tsx","../../admin/src/render.ts"],"sourcesContent":["const styles = `\n.strapi--root {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: #fff;\n}\n\n.strapi--no-js {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n font-family: helvetica, arial, sans-serif;\n}\n`;\n\n/**\n * @internal\n *\n * @description this belongs to our default document that we render.\n */\nconst NoJavascript = () => {\n return (\n <noscript>\n <div className=\"strapi--root\">\n <div className=\"strapi--no-js\">\n <style type=\"text/css\">{styles}</style>\n <h1>JavaScript disabled</h1>\n <p>\n Please <a href=\"https://www.enable-javascript.com/\">enable JavaScript</a> in your\n browser and reload the page to proceed.\n </p>\n </div>\n </div>\n </noscript>\n );\n};\n\nexport { NoJavascript };\n","import { NoJavascript } from './NoJavascript';\n\n/**\n * TODO: add favicons.........\n */\n\nconst globalStyles = `\n html,\n body,\n #strapi {\n height: 100%;\n }\n body {\n margin: 0;\n -webkit-font-smoothing: antialiased;\n }\n`;\n\n/**\n * @internal\n */\nconst DefaultDocument = () => {\n return (\n <html lang=\"en\">\n <head>\n <meta charSet=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\" />\n <meta name=\"robots\" content=\"noindex\" />\n <meta name=\"referrer\" content=\"same-origin\" />\n\n <title>Strapi Admin</title>\n <style>{globalStyles}</style>\n </head>\n <body>\n <div id=\"strapi\" />\n <NoJavascript />\n </body>\n </html>\n );\n};\n\nexport { DefaultDocument };\n","import * as React from 'react';\n\nimport { auth } from '@strapi/helper-plugin';\nimport { Redirect, Route, useLocation } from 'react-router-dom';\n\ntype PropsOf<T> = T extends React.ComponentType<infer P> ? P : object;\n\ntype PrivateRouteProps<TComponent extends React.ElementType> = {\n component: TComponent;\n path: string;\n} & PropsOf<TComponent>;\n\nconst PrivateRoute = <TComponent extends React.ElementType>({\n component: Component,\n path,\n ...rest\n}: PrivateRouteProps<TComponent>) => {\n const { pathname, search } = useLocation();\n\n return (\n <Route\n path={path}\n render={(props) =>\n auth.getToken() !== null ? (\n <Component {...rest} {...props} />\n ) : (\n <Redirect\n to={{\n pathname: '/auth/login',\n search:\n pathname !== '/'\n ? `?redirectTo=${encodeURIComponent(`${pathname}${search}`)}`\n : undefined,\n }}\n />\n )\n }\n />\n );\n};\n\nexport { PrivateRoute };\n","import { StrapiAppSettingLink } from '@strapi/helper-plugin';\n\nexport const ADMIN_PERMISSIONS_CE = {\n contentManager: {\n main: [],\n collectionTypesConfigurations: [\n {\n action: 'plugin::content-manager.collection-types.configure-view',\n subject: null,\n },\n ],\n componentsConfigurations: [\n {\n action: 'plugin::content-manager.components.configure-layout',\n subject: null,\n },\n ],\n singleTypesConfigurations: [\n {\n action: 'plugin::content-manager.single-types.configure-view',\n subject: null,\n },\n ],\n },\n marketplace: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n settings: {\n roles: {\n main: [\n { action: 'admin::roles.create', subject: null },\n { action: 'admin::roles.update', subject: null },\n { action: 'admin::roles.read', subject: null },\n { action: 'admin::roles.delete', subject: null },\n ],\n create: [{ action: 'admin::roles.create', subject: null }],\n delete: [{ action: 'admin::roles.delete', subject: null }],\n read: [{ action: 'admin::roles.read', subject: null }],\n update: [{ action: 'admin::roles.update', subject: null }],\n },\n users: {\n main: [\n { action: 'admin::users.create', subject: null },\n { action: 'admin::users.read', subject: null },\n { action: 'admin::users.update', subject: null },\n { action: 'admin::users.delete', subject: null },\n ],\n create: [{ action: 'admin::users.create', subject: null }],\n delete: [{ action: 'admin::users.delete', subject: null }],\n read: [{ action: 'admin::users.read', subject: null }],\n update: [{ action: 'admin::users.update', subject: null }],\n },\n webhooks: {\n main: [\n { action: 'admin::webhooks.create', subject: null },\n { action: 'admin::webhooks.read', subject: null },\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n create: [{ action: 'admin::webhooks.create', subject: null }],\n delete: [{ action: 'admin::webhooks.delete', subject: null }],\n read: [\n { action: 'admin::webhooks.read', subject: null },\n // NOTE: We need to check with the API\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n update: [{ action: 'admin::webhooks.update', subject: null }],\n },\n 'api-tokens': {\n main: [{ action: 'admin::api-tokens.access', subject: null }],\n create: [{ action: 'admin::api-tokens.create', subject: null }],\n delete: [{ action: 'admin::api-tokens.delete', subject: null }],\n read: [{ action: 'admin::api-tokens.read', subject: null }],\n update: [{ action: 'admin::api-tokens.update', subject: null }],\n regenerate: [{ action: 'admin::api-tokens.regenerate', subject: null }],\n },\n 'transfer-tokens': {\n main: [{ action: 'admin::transfer.tokens.access', subject: null }],\n create: [{ action: 'admin::transfer.tokens.create', subject: null }],\n delete: [{ action: 'admin::transfer.tokens.delete', subject: null }],\n read: [{ action: 'admin::transfer.tokens.read', subject: null }],\n update: [{ action: 'admin::transfer.tokens.update', subject: null }],\n regenerate: [{ action: 'admin::transfer.tokens.regenerate', subject: null }],\n },\n 'project-settings': {\n read: [{ action: 'admin::project-settings.read', subject: null }],\n update: [{ action: 'admin::project-settings.update', subject: null }],\n },\n },\n};\n\nexport const HOOKS = {\n /**\n * Hook that allows to mutate the displayed headers of the list view table\n * @constant\n * @type {string}\n */\n INJECT_COLUMN_IN_TABLE: 'Admin/CM/pages/ListView/inject-column-in-table',\n\n /**\n * Hook that allows to mutate the CM's collection types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_COLLECTION_TYPES_LINKS: 'Admin/CM/pages/App/mutate-collection-types-links',\n\n /**\n * Hook that allows to mutate the CM's edit view layout\n * @constant\n * @type {string}\n */\n MUTATE_EDIT_VIEW_LAYOUT: 'Admin/CM/pages/EditView/mutate-edit-view-layout',\n\n /**\n * Hook that allows to mutate the CM's single types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_SINGLE_TYPES_LINKS: 'Admin/CM/pages/App/mutate-single-types-links',\n};\n\nexport const ACTION_SET_APP_RUNTIME_STATUS = 'StrapiAdmin/APP/SET_APP_RUNTIME_STATUS';\nexport const ACTION_SET_ADMIN_PERMISSIONS = 'StrapiAdmin/App/SET_ADMIN_PERMISSIONS';\n\nexport interface SettingsMenuLink extends Omit<StrapiAppSettingLink, 'Component' | 'permissions'> {\n Component?: never;\n lockIcon?: boolean;\n}\n\nexport type SettingsMenu = {\n admin: SettingsMenuLink[];\n global: SettingsMenuLink[];\n};\n\nexport const SETTINGS_LINKS_CE = (): SettingsMenu => ({\n global: [\n {\n intlLabel: { id: 'Settings.application.title', defaultMessage: 'Overview' },\n to: '/settings/application-infos',\n id: '000-application-infos',\n },\n {\n intlLabel: { id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' },\n to: '/settings/webhooks',\n id: 'webhooks',\n },\n {\n intlLabel: { id: 'Settings.apiTokens.title', defaultMessage: 'API Tokens' },\n to: '/settings/api-tokens?sort=name:ASC',\n id: 'api-tokens',\n },\n {\n intlLabel: { id: 'Settings.transferTokens.title', defaultMessage: 'Transfer Tokens' },\n to: '/settings/transfer-tokens?sort=name:ASC',\n id: 'transfer-tokens',\n },\n // If the Enterprise feature is not enabled and if the config doesn't disable it, we promote the Enterprise feature by displaying them in the settings menu.\n // Disable this by adding \"promoteEE: false\" to your `./config/admin.js` file\n ...(!window.strapi.features.isEnabled(window.strapi.features.SSO) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' },\n to: '/settings/purchase-single-sign-on',\n id: 'sso',\n lockIcon: true,\n },\n ]\n : []),\n\n ...(!window.strapi.features.isEnabled(window.strapi.features.REVIEW_WORKFLOWS) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: {\n id: 'Settings.review-workflows.page.title',\n defaultMessage: 'Review Workflows',\n },\n to: '/settings/purchase-review-workflows',\n id: 'review-workflows',\n lockIcon: true,\n },\n ]\n : []),\n ],\n\n admin: [\n {\n intlLabel: { id: 'global.roles', defaultMessage: 'Roles' },\n to: '/settings/roles',\n id: 'roles',\n },\n {\n intlLabel: { id: 'global.users', defaultMessage: 'Users' },\n // Init the search params directly\n to: '/settings/users?pageSize=10&page=1&sort=firstname',\n id: 'users',\n },\n ...(!window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'global.auditLogs', defaultMessage: 'Audit Logs' },\n to: '/settings/purchase-audit-logs',\n id: 'auditLogs',\n lockIcon: true,\n },\n ]\n : []),\n ],\n});\n","import { createContext } from '@radix-ui/react-context';\n\nexport interface ConfigurationContextValue {\n logos: {\n auth: { custom?: string | null; default: string };\n menu: { custom?: string | null; default: string };\n };\n showTutorials: boolean;\n showReleaseNotification: boolean;\n updateProjectSettings: (settings: { authLogo?: string; menuLogo?: string }) => void;\n}\n\nconst [ConfigurationContextProvider, useConfigurationContext] =\n createContext<ConfigurationContextValue>('ConfigurationContext');\n\nconst useConfiguration = () => useConfigurationContext('useConfiguration');\n\nexport { ConfigurationContextProvider, useConfiguration };\n","import * as React from 'react';\n\nimport { useCallbackRef } from '@strapi/helper-plugin';\n\nfunction isEnterprise() {\n return window.strapi.isEE;\n}\n\nexport interface UseEnterpriseOptions<TCEData, TEEData, TDefaultValue, TCombinedValue> {\n defaultValue?: TDefaultValue;\n combine?: (ceData: TCEData, eeData: TEEData) => TCombinedValue;\n enabled?: boolean;\n}\n\ntype UseEnterpriseReturn<TCEData, TEEData, TDefaultValue, TCombinedValue> =\n TDefaultValue extends null\n ? TCEData | TEEData | TCombinedValue | null\n : TCEData | TEEData | TCombinedValue | TDefaultValue;\n\nexport const useEnterprise = <\n TCEData,\n TEEData = TCEData,\n TCombinedValue = TEEData,\n TDefaultValue = TCEData | null\n>(\n ceData: TCEData,\n eeCallback: () => Promise<TEEData>,\n opts: UseEnterpriseOptions<TCEData, TEEData, TDefaultValue, TCombinedValue> = {}\n): UseEnterpriseReturn<TCEData, TEEData, TDefaultValue, TCombinedValue> => {\n const { defaultValue = null, combine = (_ceData, eeData) => eeData, enabled = true } = opts;\n const eeCallbackRef = useCallbackRef(eeCallback);\n const combineCallbackRef = useCallbackRef(combine);\n\n // We have to use a nested object here, because functions (e.g. Components)\n // can not be stored as value directly\n const [{ data }, setData] = React.useState<{\n data: TCEData | TEEData | TDefaultValue | TCombinedValue | null;\n }>({\n data: isEnterprise() && enabled ? defaultValue : ceData,\n });\n\n React.useEffect(() => {\n async function importEE() {\n const eeData = await eeCallbackRef();\n const combinedValue = combineCallbackRef(ceData, eeData);\n\n setData({ data: combinedValue ? combinedValue : eeData });\n }\n\n if (isEnterprise() && enabled) {\n importEE();\n }\n }, [ceData, eeCallbackRef, combineCallbackRef, enabled]);\n\n // @ts-expect-error – the hook type assertion works in practice. But seems to have issues here...\n return data;\n};\n","/*\n *\n * LanguageProvider\n *\n * this component connects the redux state language locale to the\n * IntlProvider component and i18n messages (loaded from `app/translations`)\n */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport defaultsDeep from 'lodash/defaultsDeep';\nimport { IntlProvider } from 'react-intl';\n\n/* -------------------------------------------------------------------------------------------------\n * LocalesContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LocalesContextValue {\n changeLocale: (locale: keyof State['localeNames']) => void;\n localeNames: Record<string, string>;\n}\n\nconst [LocalesContextProvider, useLocalesContext] =\n createContext<LocalesContextValue>('LocalesContext');\n\nconst useLocales = () => useLocalesContext('useLocales');\n\n/* -------------------------------------------------------------------------------------------------\n * LanguageProvider\n * -----------------------------------------------------------------------------------------------*/\n\nconst LANGUAGE_LOCAL_STORAGE_KEY = 'strapi-admin-language';\n\ninterface LanguageProviderProps {\n children: React.ReactNode;\n localeNames: Record<string, string>;\n messages: Record<string, Record<string, string>>;\n}\n\nconst LanguageProvider = ({ children, localeNames, messages }: LanguageProviderProps) => {\n const [{ locale }, dispatch] = React.useReducer<React.Reducer<State, Action>, State>(\n reducer,\n initialState,\n () => {\n const languageFromLocaleStorage = window.localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY);\n if (languageFromLocaleStorage && localeNames[languageFromLocaleStorage]) {\n return {\n locale: languageFromLocaleStorage,\n localeNames,\n };\n } else {\n return {\n locale: 'en',\n localeNames,\n };\n }\n }\n );\n\n React.useEffect(() => {\n // Set user language in local storage.\n window.localStorage.setItem(LANGUAGE_LOCAL_STORAGE_KEY, locale);\n document.documentElement.setAttribute('lang', locale);\n }, [locale]);\n\n const changeLocale = React.useCallback((locale: keyof State['localeNames']) => {\n dispatch({\n type: 'CHANGE_LOCALE',\n locale,\n });\n }, []);\n\n const appMessages = defaultsDeep(messages[locale], messages.en);\n\n return (\n <IntlProvider locale={locale} defaultLocale=\"en\" messages={appMessages} textComponent=\"span\">\n <LocalesContextProvider changeLocale={changeLocale} localeNames={localeNames}>\n {children}\n </LocalesContextProvider>\n </IntlProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface State {\n localeNames: Record<string, string>;\n locale: keyof State['localeNames'];\n}\n\nconst initialState: State = {\n localeNames: { en: 'English' },\n locale: 'en',\n};\n\ninterface ChangeLocaleAction {\n type: 'CHANGE_LOCALE';\n locale: keyof State['localeNames'];\n}\n\ntype Action = ChangeLocaleAction;\n\nconst reducer = (state = initialState, action: Action) => {\n switch (action.type) {\n case 'CHANGE_LOCALE': {\n const { locale } = action;\n\n if (!state.localeNames[locale]) {\n return state;\n }\n\n return { ...state, locale };\n }\n default: {\n return state;\n }\n }\n};\n\nexport { LanguageProvider, useLocales, LANGUAGE_LOCAL_STORAGE_KEY };\nexport type { LanguageProviderProps, LocalesContextValue };\n","import styled from 'styled-components';\n\nimport { useConfiguration } from '../contexts/configuration';\n\nconst Img = styled.img`\n height: ${72 / 16}rem;\n`;\n\nconst Logo = () => {\n const {\n logos: { auth },\n } = useConfiguration();\n\n return <Img src={auth?.custom ?? auth.default} aria-hidden alt=\"\" />;\n};\n\nexport { Logo };\n","import * as React from 'react';\n\nimport { Box, Flex, SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLocales } from '../components/LanguageProvider';\n\nconst Wrapper = styled(Box)`\n margin: 0 auto;\n width: 552px;\n`;\n\nexport const Column = styled(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const { changeLocale, localeNames } = useLocales();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n changeLocale(language as string);\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={9}\n paddingBottom={9}\n paddingLeft={10}\n paddingRight={10}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex as=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={8}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box paddingTop={2} paddingBottom={11}>\n {children}\n </Box>\n </div>\n );\n};\n","import { FieldAction } from '@strapi/design-system';\nimport styled from 'styled-components';\n\nconst FieldActionWrapper = styled(FieldAction)`\n svg {\n height: 1rem;\n width: 1rem;\n path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n`;\n\nexport { FieldActionWrapper };\n","import * as React from 'react';\n\nimport { Box, Button, Checkbox, Flex, Main, TextInput, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { Form, auth, translatedErrors, useFetchClient, useQuery } from '@strapi/helper-plugin';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport camelCase from 'lodash/camelCase';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { NavLink, useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\n\nimport { Login } from '../../../../../shared/contracts/authentication';\nimport { useLocales } from '../../../components/LanguageProvider';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n UnauthenticatedLayout,\n Column,\n LayoutContent,\n} from '../../../layouts/UnauthenticatedLayout';\n\nimport { FieldActionWrapper } from './FieldActionWrapper';\n\nimport type { AxiosError } from 'axios';\n\ninterface LoginProps {\n children?: React.ReactNode;\n}\n\nconst LOGIN_SCHEMA = yup.object().shape({\n email: yup.string().email(translatedErrors.email).required(translatedErrors.required),\n password: yup.string().required(translatedErrors.required),\n rememberMe: yup.bool().nullable(),\n});\n\nconst Login = ({ children }: LoginProps) => {\n const [apiError, setApiError] = React.useState<string>();\n const [passwordShown, setPasswordShown] = React.useState(false);\n const { formatMessage } = useIntl();\n const { post } = useFetchClient();\n const { changeLocale } = useLocales();\n const query = useQuery();\n const { push } = useHistory();\n\n const mutation = useMutation(\n async (body: Login.Request['body'] & { rememberMe: boolean }) => {\n const {\n data: { data },\n } = await post<Login.Response>('/admin/login', body);\n\n return { ...data, rememberMe: body.rememberMe };\n },\n {\n onSuccess(data) {\n if (data) {\n const { token, user } = data;\n\n if (user.preferedLanguage) {\n changeLocale(user.preferedLanguage);\n }\n\n auth.setToken(token, data.rememberMe);\n auth.setUserInfo(user, data.rememberMe);\n\n const redirectTo = query.get('redirectTo');\n const redirectUrl = redirectTo ? decodeURIComponent(redirectTo) : '/';\n\n push(redirectUrl);\n }\n },\n onError(err: AxiosError<{ error: Login.Response['errors'] }>) {\n const message = err.response?.data?.error?.message ?? 'Something went wrong';\n\n if (camelCase(message).toLowerCase() === 'usernotactive') {\n push('/auth/oops');\n return;\n }\n\n setApiError(message);\n },\n }\n );\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={1}>\n <Typography variant=\"alpha\" as=\"h1\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome!',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={7}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Auth.form.welcome.subtitle',\n defaultMessage: 'Log in to your Strapi account',\n })}\n </Typography>\n </Box>\n {mutation.isError && apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Column>\n <Formik\n enableReinitialize\n initialValues={{\n email: '',\n password: '',\n rememberMe: false,\n }}\n onSubmit={(values) => {\n mutation.mutate(values);\n }}\n validationSchema={LOGIN_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <TextInput\n error={\n errors.email\n ? formatMessage({\n id: errors.email,\n defaultMessage: 'This value is required.',\n })\n : ''\n }\n value={values.email}\n onChange={handleChange}\n label={formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' })}\n placeholder={formatMessage({\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'kai@doe.com',\n })}\n name=\"email\"\n required\n />\n <PasswordInput\n error={\n errors.password\n ? formatMessage({\n id: errors.password,\n defaultMessage: 'This value is required.',\n })\n : ''\n }\n onChange={handleChange}\n value={values.password}\n label={formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n })}\n name=\"password\"\n type={passwordShown ? 'text' : 'password'}\n endAction={\n <FieldActionWrapper\n onClick={(e) => {\n e.stopPropagation();\n setPasswordShown((prev) => !prev);\n }}\n label={formatMessage(\n passwordShown\n ? {\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n }\n : {\n id: 'Auth.form.password.hide-password',\n defaultMessage: 'Hide password',\n }\n )}\n >\n {passwordShown ? <Eye /> : <EyeStriked />}\n </FieldActionWrapper>\n }\n required\n />\n <Checkbox\n onValueChange={(checked) => {\n handleChange({ target: { value: checked, name: 'rememberMe' } });\n }}\n value={values.rememberMe}\n aria-label=\"rememberMe\"\n name=\"rememberMe\"\n >\n {formatMessage({\n id: 'Auth.form.rememberMe.label',\n defaultMessage: 'Remember me',\n })}\n </Checkbox>\n <Button fullWidth type=\"submit\">\n {formatMessage({ id: 'Auth.form.button.login', defaultMessage: 'Login' })}\n </Button>\n </Flex>\n </Form>\n )}\n </Formik>\n {children}\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/forgot-password\">\n {formatMessage({\n id: 'Auth.link.forgot-password',\n defaultMessage: 'Forgot your password?',\n })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nconst PasswordInput = styled(TextInput)`\n ::-ms-reveal {\n display: none;\n }\n`;\n\nexport { Login };\nexport type { LoginProps };\n","import { Box, Button, Flex, Main, TextInput, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { Form, translatedErrors, useFetchClient } from '@strapi/helper-plugin';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { NavLink, useHistory } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { ForgotPassword } from '../../../../../shared/contracts/authentication';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\n\nconst ForgotPassword = () => {\n const { push } = useHistory();\n const { post } = useFetchClient();\n const { formatMessage } = useIntl();\n\n const { mutate, isError } = useMutation(\n async (body: ForgotPassword.Request['body']) => {\n await post('/admin/forgot-password', body);\n },\n {\n onSuccess() {\n push('/auth/forgot-password-success');\n },\n }\n );\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'Auth.form.button.password-recovery',\n defaultMessage: 'Password Recovery',\n })}\n </Typography>\n </Box>\n {isError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n })}\n </Typography>\n ) : null}\n </Column>\n <Formik\n enableReinitialize\n initialValues={{\n email: '',\n }}\n onSubmit={(values) => {\n mutate(values);\n }}\n validationSchema={yup.object().shape({\n email: yup.string().email(translatedErrors.email).required(translatedErrors.required),\n })}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <TextInput\n error={\n errors.email\n ? formatMessage({\n id: errors.email,\n defaultMessage: 'This email is invalid.',\n })\n : ''\n }\n value={values.email}\n onChange={handleChange}\n label={formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' })}\n placeholder={formatMessage({\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'kai@doe.com',\n })}\n name=\"email\"\n required\n />\n <Button type=\"submit\" fullWidth>\n {formatMessage({\n id: 'Auth.form.button.forgot-password',\n defaultMessage: 'Send Email',\n })}\n </Button>\n </Flex>\n </Form>\n )}\n </Formik>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.ready', defaultMessage: 'Ready to sign in?' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ForgotPassword };\n","import { Box, Flex, Main, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\n\nconst ForgotPasswordSuccess = () => {\n const { formatMessage } = useIntl();\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'app.containers.AuthPage.ForgotPasswordSuccess.title',\n defaultMessage: 'Email sent',\n })}\n </Typography>\n </Box>\n <Typography>\n {formatMessage({\n id: 'app.containers.AuthPage.ForgotPasswordSuccess.text.email',\n defaultMessage: 'It can take a few minutes to receive your password recovery link.',\n })}\n </Typography>\n <Box paddingTop={4}>\n <Typography>\n {formatMessage({\n id: 'app.containers.AuthPage.ForgotPasswordSuccess.text.contact-admin',\n defaultMessage:\n 'If you do not receive this link, please contact your administrator.',\n })}\n </Typography>\n </Box>\n </Column>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.signin', defaultMessage: 'Sign in' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ForgotPasswordSuccess };\n","import { Box, Flex, Main, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { useQuery } from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\n\nconst Oops = () => {\n const { formatMessage } = useIntl();\n const query = useQuery();\n\n const message =\n query.get('info') ||\n formatMessage({\n id: 'Auth.components.Oops.text',\n defaultMessage: 'Your account has been suspended.',\n });\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({ id: 'Auth.components.Oops.title', defaultMessage: 'Oops...' })}\n </Typography>\n </Box>\n <Typography>{message}</Typography>\n <Box paddingTop={4}>\n <Typography>\n {formatMessage({\n id: 'Auth.components.Oops.text.admin',\n defaultMessage: 'If this is a mistake, please contact your administrator.',\n })}\n </Typography>\n </Box>\n </Column>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.signin', defaultMessage: 'Sign in' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { Oops };\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Button,\n Typography,\n Textarea,\n Portal,\n Field,\n FieldLabel,\n FieldInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { auth, useNotification, useAppInfo, usePersistentState } from '@strapi/helper-plugin';\nimport { Cross } from '@strapi/icons';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport styled, { useTheme } from 'styled-components';\nimport * as yup from 'yup';\n\nconst FieldWrapper = styled(Field)`\n height: ${32 / 16}rem;\n width: ${32 / 16}rem;\n\n > label,\n ~ input {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n > label {\n color: inherit;\n cursor: pointer;\n padding: ${({ theme }) => theme.spaces[2]};\n text-align: center;\n vertical-align: middle;\n }\n\n &:hover,\n &:focus-within {\n background-color: ${({ theme }) => theme.colors.neutral0};\n }\n\n &:active,\n &.selected {\n color: ${({ theme }) => theme.colors.primary700};\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-color: ${({ theme }) => theme.colors.primary700};\n }\n`;\n\nconst delays = {\n postResponse: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n postFirstDismissal: 7 * 24 * 60 * 60 * 1000, // 7 days in ms\n postSubsequentDismissal: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n display: 5 * 60 * 1000, // 5 minutes in ms\n};\n\nconst ratingArray = [...Array(11).keys()];\n\nconst checkIfShouldShowSurvey = (settings: NpsSurveySettings) => {\n const { enabled, lastResponseDate, firstDismissalDate, lastDismissalDate } = settings;\n\n // This function goes through all the cases where we'd want to not show the survey:\n // 1. If the survey is disabled by strapi, abort mission, don't bother checking the other settings.\n // 2. If the survey is disabled by user, abort mission, don't bother checking the other settings.\n // 3. If the user has already responded to the survey, check if enough time has passed since the last response.\n // 4. If the user has dismissed the survey twice or more before, check if enough time has passed since the last dismissal.\n // 5. If the user has only dismissed the survey once before, check if enough time has passed since the first dismissal.\n // If none of these cases check out, then we show the survey.\n // Note that submitting a response resets the dismissal counts.\n // Checks 4 and 5 should not be reversed, since the first dismissal will also exist if the user has dismissed the survey twice or more before.\n\n // For users who had created an account before the NPS feature was introduced,\n // we assume that they would have enabled the NPS feature if they had the chance.\n\n // Global strapi disable for NSP.\n if (window.strapi.flags.nps === false) {\n return false;\n }\n\n // User chose not to enable the NPS feature when signing up\n if (enabled === false) {\n return false;\n }\n\n // The user has already responded to the survey\n if (lastResponseDate) {\n const timeSinceLastResponse = Date.now() - new Date(lastResponseDate).getTime();\n\n if (timeSinceLastResponse >= delays.postResponse) {\n return true;\n }\n\n return false;\n }\n\n // The user has dismissed the survey twice or more before\n if (lastDismissalDate) {\n const timeSinceLastDismissal = Date.now() - new Date(lastDismissalDate).getTime();\n\n if (timeSinceLastDismissal >= delays.postSubsequentDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has only dismissed the survey once before\n if (firstDismissalDate) {\n const timeSinceFirstDismissal = Date.now() - new Date(firstDismissalDate).getTime();\n\n if (timeSinceFirstDismissal >= delays.postFirstDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has not interacted with the survey before\n return true;\n};\n\nconst NpsSurvey = () => {\n const theme = useTheme();\n const { formatMessage } = useIntl();\n const { npsSurveySettings, setNpsSurveySettings } = useNpsSurveySettings();\n const [isFeedbackResponse, setIsFeedbackResponse] = React.useState(false);\n const toggleNotification = useNotification();\n const { currentEnvironment, strapiVersion } = useAppInfo();\n\n interface NpsSurveyMutationBody {\n email: string;\n rating: number | null;\n comment: string;\n environment?: string;\n version?: string;\n license: 'Enterprise' | 'Community';\n }\n\n const { mutate, isLoading } = useMutation<unknown, unknown, NpsSurveyMutationBody>(\n async (form) => {\n const res = await fetch('https://analytics.strapi.io/submit-nps', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(form),\n });\n\n if (!res.ok) {\n throw new Error('Failed to submit NPS survey');\n }\n\n return res;\n },\n {\n onSuccess() {\n setNpsSurveySettings((settings) => ({\n ...settings,\n lastResponseDate: new Date().toString(),\n firstDismissalDate: null,\n lastDismissalDate: null,\n }));\n setIsFeedbackResponse(true);\n // Thank you message displayed in the banner should disappear after few seconds.\n setTimeout(() => {\n setSurveyIsShown(false);\n }, 3000);\n },\n onError() {\n toggleNotification({\n type: 'warning',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n },\n }\n );\n\n // Only check on first render if the survey should be shown\n const [surveyIsShown, setSurveyIsShown] = React.useState(\n checkIfShouldShowSurvey(npsSurveySettings)\n );\n\n // Set a cooldown to show the survey when session begins\n const [displaySurvey, setDisplaySurvey] = React.useState(false);\n\n React.useEffect(() => {\n const displayTime = setTimeout(() => {\n setDisplaySurvey(true);\n }, delays.display);\n\n return () => {\n clearTimeout(displayTime);\n };\n }, []);\n\n if (!displaySurvey) {\n return null;\n }\n\n if (!surveyIsShown) {\n return null;\n }\n\n const handleSubmitResponse = ({\n npsSurveyRating,\n npsSurveyFeedback,\n }: {\n npsSurveyRating: NpsSurveyMutationBody['rating'];\n npsSurveyFeedback: NpsSurveyMutationBody['comment'];\n }) => {\n const userInfo = auth.getUserInfo();\n mutate({\n email: typeof userInfo === 'object' && userInfo !== null ? userInfo.email : '',\n rating: npsSurveyRating,\n comment: npsSurveyFeedback,\n environment: currentEnvironment,\n version: strapiVersion ?? undefined,\n license: window.strapi.projectType,\n });\n };\n\n const handleDismiss = () => {\n setNpsSurveySettings((settings) => {\n const nextSettings = {\n ...settings,\n lastResponseDate: null,\n };\n\n if (settings.firstDismissalDate) {\n // If the user dismisses the survey for the second time\n nextSettings.lastDismissalDate = new Date().toString();\n } else {\n // If the user dismisses the survey for the first time\n nextSettings.firstDismissalDate = new Date().toString();\n }\n\n return nextSettings;\n });\n\n setSurveyIsShown(false);\n };\n\n return (\n <Portal>\n <Formik\n initialValues={{ npsSurveyFeedback: '', npsSurveyRating: null }}\n onSubmit={handleSubmitResponse}\n validationSchema={yup.object({\n npsSurveyFeedback: yup.string(),\n npsSurveyRating: yup.number().required(),\n })}\n >\n {({ values, handleChange, setFieldValue }) => (\n <Form name=\"npsSurveyForm\">\n <Flex\n hasRadius\n direction=\"column\"\n padding={4}\n borderColor=\"primary200\"\n background=\"neutral0\"\n shadow=\"popupShadow\"\n position=\"fixed\"\n bottom={0}\n left=\"50%\"\n transform=\"translateX(-50%)\"\n zIndex={theme.zIndices[2]}\n width=\"50%\"\n >\n {isFeedbackResponse ? (\n <Typography fontWeight=\"semiBold\">\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-response',\n defaultMessage: 'Thank you very much for your feedback!',\n })}\n </Typography>\n ) : (\n <Box as=\"fieldset\" width=\"100%\">\n <Flex justifyContent=\"space-between\" width=\"100%\">\n <Box marginLeft=\"auto\" marginRight=\"auto\">\n <Typography fontWeight=\"semiBold\" as=\"legend\">\n {formatMessage({\n id: 'app.components.NpsSurvey.banner-title',\n defaultMessage:\n 'How likely are you to recommend Strapi to a friend or colleague?',\n })}\n </Typography>\n </Box>\n <IconButton\n onClick={handleDismiss}\n aria-label={formatMessage({\n id: 'app.components.NpsSurvey.dismiss-survey-label',\n defaultMessage: 'Dismiss survey',\n })}\n icon={<Cross />}\n />\n </Flex>\n <Flex gap={2} marginTop={2} marginBottom={2} justifyContent=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })}\n </Typography>\n {ratingArray.map((number) => {\n return (\n <FieldWrapper\n key={number}\n className={values.npsSurveyRating === number ? 'selected' : undefined} // \"selected\" class added when child radio button is checked\n hasRadius\n background=\"primary100\"\n borderColor=\"primary200\"\n color=\"primary600\"\n position=\"relative\"\n cursor=\"pointer\"\n >\n <FieldLabel htmlFor={`nps-survey-rating-${number}-input`}>\n <VisuallyHidden>\n <FieldInput\n type=\"radio\"\n id={`nps-survey-rating-${number}-input`}\n name=\"npsSurveyRating\"\n checked={values.npsSurveyRating === number}\n onChange={(e) =>\n setFieldValue('npsSurveyRating', parseInt(e.target.value, 10))\n }\n value={number}\n />\n </VisuallyHidden>\n {number}\n </FieldLabel>\n </FieldWrapper>\n );\n })}\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })}\n </Typography>\n </Flex>\n {values.npsSurveyRating !== null && (\n <Flex direction=\"column\">\n <Box marginTop={2}>\n <FieldLabel htmlFor=\"npsSurveyFeedback\" fontWeight=\"semiBold\" fontSize={2}>\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-question',\n defaultMessage: 'Do you have any suggestion for improvements?',\n })}\n </FieldLabel>\n </Box>\n <Box width=\"62%\" marginTop={3} marginBottom={4}>\n <Textarea\n id=\"npsSurveyFeedback\" // formik element attribute \"id\" should be same as the values key to work\n width=\"100%\"\n onChange={handleChange}\n >\n {values.npsSurveyFeedback}\n </Textarea>\n </Box>\n <Button marginBottom={2} type=\"submit\" loading={isLoading}>\n {formatMessage({\n id: 'app.components.NpsSurvey.submit-feedback',\n defaultMessage: 'Submit Feedback',\n })}\n </Button>\n </Flex>\n )}\n </Box>\n )}\n </Flex>\n </Form>\n )}\n </Formik>\n </Portal>\n );\n};\n\ninterface NpsSurveySettings {\n enabled: boolean;\n lastResponseDate: string | null;\n firstDismissalDate: string | null;\n lastDismissalDate: string | null;\n}\n\n/**\n * We exported to make it available during admin user registration.\n * Because we only enable the NPS for users who subscribe to the newsletter when signing up\n */\nfunction useNpsSurveySettings() {\n const [npsSurveySettings, setNpsSurveySettings] = usePersistentState<NpsSurveySettings>(\n 'STRAPI_NPS_SURVEY_SETTINGS',\n {\n enabled: true,\n lastResponseDate: null,\n firstDismissalDate: null,\n lastDismissalDate: null,\n }\n );\n\n /**\n * TODO: should this just be an array so we can alias the `usePersistentState` hook?\n */\n return { npsSurveySettings, setNpsSurveySettings };\n}\n\nexport { NpsSurvey, useNpsSurveySettings };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Checkbox,\n Flex,\n Grid,\n GridItem,\n Main,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport {\n Form,\n auth,\n getYupInnerErrors,\n translatedErrors,\n useAPIErrorHandler,\n useFetchClient,\n useGuidedTour,\n useNotification,\n useQuery,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport omit from 'lodash/omit';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { useQuery as useReactQuery, useMutation } from 'react-query';\nimport { NavLink, Redirect, useHistory, useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register,\n RegisterAdmin,\n RegistrationInfo,\n} from '../../../../../shared/contracts/authentication';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { AuthType } from '../constants';\n\nimport { FieldActionWrapper } from './FieldActionWrapper';\n\nimport type { AxiosError } from 'axios';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, translatedErrors.minLength)\n .matches(/[a-z]/, 'components.Input.error.contain.lowercase')\n .matches(/[A-Z]/, 'components.Input.error.contain.uppercase')\n .matches(/\\d/, 'components.Input.error.contain.number')\n .required(translatedErrors.required),\n confirmPassword: yup\n .string()\n .oneOf([yup.ref('password'), null], 'components.Input.error.password.noMatch')\n .required(translatedErrors.required),\n registrationToken: yup.string().required(translatedErrors.required),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, translatedErrors.minLength)\n .matches(/[a-z]/, 'components.Input.error.contain.lowercase')\n .matches(/[A-Z]/, 'components.Input.error.contain.uppercase')\n .matches(/\\d/, 'components.Input.error.contain.number')\n .required(translatedErrors.required),\n email: yup\n .string()\n .email(translatedErrors.email)\n .strict()\n .lowercase(translatedErrors.lowercase)\n .required(translatedErrors.required),\n confirmPassword: yup\n .string()\n .oneOf([yup.ref('password'), null], 'components.Input.error.password.noMatch')\n .required(translatedErrors.required),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const toggleNotification = useNotification();\n const { push } = useHistory();\n const [passwordShown, setPasswordShown] = React.useState(false);\n const [confirmPasswordShown, setConfirmPasswordShown] = React.useState(false);\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { setSkipped } = useGuidedTour();\n const query = useQuery();\n const match = useRouteMatch<{ authType: Extract<AuthType, `register${string}`> }>(\n '/auth/:authType'\n );\n const { formatAPIError } = useAPIErrorHandler();\n const { get, post } = useFetchClient();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo } = useReactQuery({\n queryKey: ['admin', 'registration-info', registrationToken],\n async queryFn() {\n const {\n data: { data },\n } = await get<RegistrationInfo.Response>(`/admin/registration-info`, {\n params: {\n registrationToken,\n },\n });\n\n return data;\n },\n enabled: !!registrationToken,\n initialData: {},\n onError(err: AxiosError<{ error: Exclude<RegistrationInfo.Response['errors'], undefined> }>) {\n const message = formatAPIError(err);\n\n toggleNotification({\n type: 'warning',\n message,\n });\n\n push(`/auth/oops?info=${encodeURIComponent(message)}`);\n },\n });\n\n const registerAdminMutation = useMutation(\n async (body: RegisterAdmin.Request['body'] & { news: boolean }) => {\n const { news, ...restBody } = body;\n const { data } = await post<RegisterAdmin.Response>('/admin/register-admin', restBody);\n\n return { ...data.data, news };\n },\n {\n onSuccess(data) {\n const { token, user, news } = data;\n\n auth.setToken(token, false);\n auth.setUserInfo(user, false);\n\n const { roles } = user;\n\n if (roles) {\n const isUserSuperAdmin = roles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin) {\n auth.set(false, 'GUIDED_TOUR_SKIPPED', true);\n setSkipped(false);\n trackUsage('didLaunchGuidedtour');\n }\n }\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n push({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n push('/');\n }\n },\n onError(err: AxiosError<{ error: Exclude<RegisterAdmin.Response['errors'], undefined> }>) {\n trackUsage('didNotCreateFirstAdmin');\n\n const error = formatAPIError(err);\n setApiError(error);\n },\n }\n );\n\n const registerUserMutation = useMutation(\n async (body: Register.Request['body'] & { news: boolean }) => {\n const { news, ...restBody } = body;\n const { data } = await post<Register.Response>('/admin/register', restBody);\n\n return { ...data.data, news };\n },\n {\n onSuccess(data) {\n const { token, user, news } = data;\n\n auth.setToken(token, false);\n auth.setUserInfo(user, false);\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n push({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n push('/');\n }\n },\n onError(err: AxiosError<{ error: Exclude<RegisterAdmin.Response['errors'], undefined> }>) {\n trackUsage('didNotCreateFirstAdmin');\n\n const error = formatAPIError(err);\n setApiError(error);\n },\n }\n );\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Redirect to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography as=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Formik\n enableReinitialize\n initialValues={{\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n }}\n onSubmit={async (data, formik) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n registerUserMutation.mutate({\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n });\n } else {\n registerAdminMutation.mutate(\n omit(normalizedData, ['registrationToken', 'confirmPassword'])\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n const errors = getYupInnerErrors(err);\n\n formik.setErrors(errors);\n }\n setSubmitCount(submitCount + 1);\n }\n }}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => {\n return (\n <Form>\n <Main>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n name=\"firstname\"\n required\n value={values.firstname}\n error={\n errors.firstname\n ? formatMessage(errors.firstname as MessageDescriptor)\n : undefined\n }\n onChange={handleChange}\n label={formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\n })}\n />\n </GridItem>\n <GridItem col={6}>\n <TextInput\n name=\"lastname\"\n value={values.lastname}\n onChange={handleChange}\n label={formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Lastname',\n })}\n />\n </GridItem>\n </Grid>\n <TextInput\n name=\"email\"\n disabled={!isAdminRegistration}\n value={values.email}\n onChange={handleChange}\n error={\n errors.email ? formatMessage(errors.email as MessageDescriptor) : undefined\n }\n required\n label={formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n })}\n type=\"email\"\n />\n <PasswordInput\n name=\"password\"\n onChange={handleChange}\n value={values.password}\n error={\n errors.password\n ? formatMessage(errors.password as MessageDescriptor)\n : undefined\n }\n endAction={\n <FieldActionWrapper\n onClick={(e) => {\n e.preventDefault();\n setPasswordShown((prev) => !prev);\n }}\n label={formatMessage(\n passwordShown\n ? {\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n }\n : {\n id: 'Auth.form.password.hide-password',\n defaultMessage: 'Hide password',\n }\n )}\n >\n {passwordShown ? <Eye /> : <EyeStriked />}\n </FieldActionWrapper>\n }\n hint={formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n })}\n required\n label={formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n })}\n type={passwordShown ? 'text' : 'password'}\n />\n <PasswordInput\n name=\"confirmPassword\"\n onChange={handleChange}\n value={values.confirmPassword}\n error={\n errors.confirmPassword\n ? formatMessage(errors.confirmPassword as MessageDescriptor)\n : undefined\n }\n endAction={\n <FieldActionWrapper\n onClick={(e) => {\n e.preventDefault();\n setConfirmPasswordShown((prev) => !prev);\n }}\n label={formatMessage(\n confirmPasswordShown\n ? {\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n }\n : {\n id: 'Auth.form.password.hide-password',\n defaultMessage: 'Hide password',\n }\n )}\n >\n {confirmPasswordShown ? <Eye /> : <EyeStriked />}\n </FieldActionWrapper>\n }\n required\n label={formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n })}\n type={confirmPasswordShown ? 'text' : 'password'}\n />\n <Checkbox\n onValueChange={(checked) => {\n handleChange({ target: { value: checked, name: 'news' } });\n }}\n value={values.news}\n name=\"news\"\n aria-label=\"news\"\n >\n {formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n )}\n </Checkbox>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Main>\n </Form>\n );\n }}\n </Formik>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nconst PasswordInput = styled(TextInput)`\n ::-ms-reveal {\n display: none;\n }\n`;\n\nexport { Register };\nexport type { RegisterProps };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Main, TextInput, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { Form, auth, translatedErrors, useFetchClient, useQuery } from '@strapi/helper-plugin';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { NavLink, useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\n\nimport { ResetPassword } from '../../../../../shared/contracts/authentication';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\n\nimport { FieldActionWrapper } from './FieldActionWrapper';\n\nconst RESET_PASSWORD_SCHEMA = yup.object().shape({\n password: yup\n .string()\n .min(8, translatedErrors.minLength)\n .matches(/[a-z]/, 'components.Input.error.contain.lowercase')\n .matches(/[A-Z]/, 'components.Input.error.contain.uppercase')\n .matches(/\\d/, 'components.Input.error.contain.number')\n .required(translatedErrors.required),\n confirmPassword: yup\n .string()\n .oneOf([yup.ref('password'), null], 'components.Input.error.password.noMatch')\n .required(translatedErrors.required),\n});\n\nconst ResetPassword = () => {\n const [passwordShown, setPasswordShown] = React.useState(false);\n const [confirmPasswordShown, setConfirmPasswordShown] = React.useState(false);\n const { formatMessage } = useIntl();\n const { post } = useFetchClient();\n const { push } = useHistory();\n const query = useQuery();\n\n const { mutate, isError } = useMutation(\n async (body: Pick<ResetPassword.Request['body'], 'password'>) => {\n const {\n data: { data },\n } = await post<ResetPassword.Response>('/admin/reset-password', {\n ...body,\n resetPasswordToken: query.get('code'),\n });\n\n return data;\n },\n {\n onSuccess(data) {\n if (data) {\n const { token, user } = data;\n auth.setToken(token, false);\n auth.setUserInfo(user, false);\n\n // Redirect to the homePage\n push('/');\n }\n },\n }\n );\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'global.reset-password',\n defaultMessage: 'Reset password',\n })}\n </Typography>\n </Box>\n {isError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n })}\n </Typography>\n ) : null}\n </Column>\n <Formik\n enableReinitialize\n initialValues={{\n password: '',\n confirmPassword: '',\n }}\n onSubmit={(values) => {\n mutate({ password: values.password });\n }}\n validationSchema={RESET_PASSWORD_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <PasswordInput\n name=\"password\"\n onChange={handleChange}\n value={values.password}\n error={\n errors.password\n ? formatMessage(\n {\n id: errors.password,\n defaultMessage: 'This field is required.',\n },\n {\n min: 8,\n }\n )\n : undefined\n }\n endAction={\n <FieldActionWrapper\n onClick={(e) => {\n e.preventDefault();\n setPasswordShown((prev) => !prev);\n }}\n label={formatMessage(\n passwordShown\n ? {\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n }\n : {\n id: 'Auth.form.password.hide-password',\n defaultMessage: 'Hide password',\n }\n )}\n >\n {passwordShown ? <Eye /> : <EyeStriked />}\n </FieldActionWrapper>\n }\n hint={formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Password must contain at least 8 characters, 1 uppercase, 1 lowercase and 1 number',\n })}\n required\n label={formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n })}\n type={passwordShown ? 'text' : 'password'}\n />\n <PasswordInput\n name=\"confirmPassword\"\n onChange={handleChange}\n value={values.confirmPassword}\n error={\n errors.confirmPassword\n ? formatMessage({\n id: errors.confirmPassword,\n defaultMessage: 'This value is required.',\n })\n : undefined\n }\n endAction={\n <FieldActionWrapper\n onClick={(e) => {\n e.preventDefault();\n setConfirmPasswordShown((prev) => !prev);\n }}\n label={formatMessage(\n passwordShown\n ? {\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n }\n : {\n id: 'Auth.form.password.hide-password',\n defaultMessage: 'Hide password',\n }\n )}\n >\n {confirmPasswordShown ? <Eye /> : <EyeStriked />}\n </FieldActionWrapper>\n }\n required\n label={formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n })}\n type={confirmPasswordShown ? 'text' : 'password'}\n />\n <Button fullWidth type=\"submit\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Button>\n </Flex>\n </Form>\n )}\n </Formik>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.ready', defaultMessage: 'Ready to sign in?' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nconst PasswordInput = styled(TextInput)`\n ::-ms-reveal {\n display: none;\n }\n`;\n\nexport { ResetPassword };\n","import type { ComponentType } from 'react';\n\nimport { ForgotPassword } from './components/ForgotPassword';\nimport { ForgotPasswordSuccess } from './components/ForgotPasswordSuccess';\nimport { Oops } from './components/Oops';\nimport { Register, RegisterProps } from './components/Register';\nimport { ResetPassword } from './components/ResetPassword';\n\nexport type AuthType =\n | 'login'\n | 'register'\n | 'register-admin'\n | 'forgot-password'\n | 'reset-password'\n | 'forgot-password-success'\n | 'oops'\n | 'providers';\n\nexport type FormDictionary = Record<AuthType, ComponentType | ComponentType<RegisterProps>>;\n\nexport const FORMS = {\n 'forgot-password': ForgotPassword,\n 'forgot-password-success': ForgotPasswordSuccess,\n // the `Component` attribute is set after all forms and CE/EE components are loaded, but since we\n // are here outside of a React component we can not use the hook directly\n login: () => null,\n oops: Oops,\n register: Register,\n 'register-admin': Register,\n 'reset-password': ResetPassword,\n providers: () => null,\n} satisfies FormDictionary;\n","import { auth } from '@strapi/helper-plugin';\nimport { Redirect, useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useEnterprise } from '../../hooks/useEnterprise';\n\nimport { Login as LoginCE } from './components/Login';\nimport { AuthType, FORMS, FormDictionary } from './constants';\n\n/* -------------------------------------------------------------------------------------------------\n * AuthPage\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AuthPageProps {\n hasAdmin: boolean;\n}\n\nconst AuthPage = ({ hasAdmin }: AuthPageProps) => {\n const {\n location: { search },\n } = useHistory();\n const match = useRouteMatch<{ authType: AuthType }>('/auth/:authType');\n const authType = match?.params.authType;\n const Login = useEnterprise(\n LoginCE,\n async () => (await import('../../../../ee/admin/src/pages/AuthPage/components/Login')).LoginEE\n );\n const forms = useEnterprise<FormDictionary, Partial<FormDictionary>>(\n FORMS,\n async () => (await import('../../../../ee/admin/src/pages/AuthPage/constants')).FORMS,\n {\n combine(ceForms, eeForms) {\n return {\n ...ceForms,\n ...eeForms,\n };\n },\n defaultValue: FORMS,\n }\n );\n\n if (!authType || !forms) {\n return <Redirect to=\"/\" />;\n }\n\n const Component = forms[authType];\n\n // Redirect the user to the login page if\n // the endpoint does not exist or\n // there is already an admin user oo\n // the user is already logged in\n if (!Component || (hasAdmin && authType === 'register-admin') || auth.getToken()) {\n return <Redirect to=\"/\" />;\n }\n\n // Redirect the user to the register-admin if it is the first user\n if (!hasAdmin && authType !== 'register-admin') {\n return (\n <Redirect\n to={{\n pathname: '/auth/register-admin',\n // Forward the `?redirectTo` from /auth/login\n // /abc => /auth/login?redirectTo=%2Fabc => /auth/register-admin?redirectTo=%2Fabc\n search,\n }}\n />\n );\n }\n\n if (Login && authType === 'login') {\n // Assign the component to render for the login form\n return <Login />;\n } else if (authType === 'login' && !Login) {\n // block rendering until the Login EE component is fully loaded\n return null;\n }\n\n return <Component hasAdmin={hasAdmin} />;\n};\n\nexport { AuthPage };\nexport type { AuthPageProps };\n","/**\n * NotFoundPage\n *\n * This is the page we show when the user visits a url that doesn't have a route\n *\n */\nimport {\n ContentLayout,\n EmptyStateLayout,\n HeaderLayout,\n LinkButton,\n Main,\n} from '@strapi/design-system';\nimport { useFocusWhenNavigate } from '@strapi/helper-plugin';\nimport { ArrowRight, EmptyPictures } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nexport const NotFoundPage = () => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main labelledBy=\"title\">\n <HeaderLayout\n id=\"title\"\n title={formatMessage({\n id: 'content-manager.pageNotFound',\n defaultMessage: 'Page not found',\n })}\n />\n <ContentLayout>\n <EmptyStateLayout\n action={\n <LinkButton variant=\"secondary\" endIcon={<ArrowRight />} to=\"/\">\n {formatMessage({\n id: 'app.components.NotFoundPage.back',\n defaultMessage: 'Back to homepage',\n })}\n </LinkButton>\n }\n content={formatMessage({\n id: 'app.page.not.found',\n defaultMessage: \"Oops! We can't seem to find the page you're looging for...\",\n })}\n hasRadius\n icon={<EmptyPictures width=\"10rem\" />}\n shadow=\"tableShadow\"\n />\n </ContentLayout>\n </Main>\n );\n};\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Main,\n Option,\n Select,\n TextButton,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { auth, pxToRem, useFetchClient, useNotification } from '@strapi/helper-plugin';\nimport { parse } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { Logo } from '../components/UnauthenticatedLogo';\nimport { LayoutContent, UnauthenticatedLayout } from '../layouts/UnauthenticatedLayout';\n\nexport const options = [\n {\n intlLabel: {\n id: 'Usecase.front-end',\n defaultMessage: 'Front-end developer',\n },\n value: 'front_end_developer',\n },\n {\n intlLabel: {\n id: 'Usecase.back-end',\n defaultMessage: 'Back-end developer',\n },\n value: 'back_end_developer',\n },\n {\n intlLabel: {\n id: 'Usecase.full-stack',\n defaultMessage: 'Full-stack developer',\n },\n value: 'full_stack_developer',\n },\n {\n intlLabel: {\n id: 'global.content-manager',\n defaultMessage: 'Content Manager',\n },\n value: 'content_manager',\n },\n {\n intlLabel: {\n id: 'Usecase.content-creator',\n defaultMessage: 'Content Creator',\n },\n value: 'content_creator',\n },\n {\n intlLabel: {\n id: 'Usecase.other',\n defaultMessage: 'Other',\n },\n value: 'other',\n },\n];\n\nconst TypographyCenter = styled(Typography)`\n text-align: center;\n`;\n\nexport const UseCasePage = () => {\n const toggleNotification = useNotification();\n const { push, location } = useHistory();\n const { formatMessage } = useIntl();\n const [role, setRole] = React.useState<string | number | null>(null);\n const [otherRole, setOtherRole] = React.useState('');\n const { post } = useFetchClient();\n\n const { firstname, email } = auth.get('userInfo') ?? {};\n const { hasAdmin } = parse(location?.search, { ignoreQueryPrefix: true });\n const isOther = role === 'other';\n\n const handleSubmit = async (event: React.FormEvent, skipPersona: boolean) => {\n event.preventDefault();\n try {\n await post('https://analytics.strapi.io/register', {\n email,\n username: firstname,\n firstAdmin: Boolean(!hasAdmin),\n persona: {\n role: skipPersona ? undefined : role,\n otherRole: skipPersona ? undefined : otherRole,\n },\n });\n\n toggleNotification({\n type: 'success',\n message: {\n id: 'Usecase.notification.success.project-created',\n defaultMessage: 'Project has been successfully created',\n },\n });\n push('/');\n } catch (err) {\n // Silent\n }\n };\n\n return (\n <UnauthenticatedLayout>\n <Main labelledBy=\"usecase-title\">\n <LayoutContent>\n <form onSubmit={(e) => handleSubmit(e, false)}>\n <Flex direction=\"column\" paddingBottom={7}>\n <Logo />\n <Box paddingTop={6} paddingBottom={1} width={pxToRem(250)}>\n <TypographyCenter variant=\"alpha\" as=\"h1\" id=\"usecase-title\">\n {formatMessage({\n id: 'Usecase.title',\n defaultMessage: 'Tell us a bit more about yourself',\n })}\n </TypographyCenter>\n </Box>\n </Flex>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Select\n id=\"usecase\"\n data-testid=\"usecase\"\n label={formatMessage({\n id: 'Usecase.input.work-type',\n defaultMessage: 'What type of work do you do?',\n })}\n // onClear={() => setRole(null)}\n // clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n onChange={(value) => setRole(value)}\n value={role}\n >\n {options.map(({ intlLabel, value }) => (\n <Option key={value} value={value}>\n {formatMessage(intlLabel)}\n </Option>\n ))}\n </Select>\n {isOther && (\n <TextInput\n name=\"other\"\n label={formatMessage({ id: 'Usecase.other', defaultMessage: 'Other' })}\n value={otherRole}\n onChange={(e) => setOtherRole(e.target.value)}\n data-testid=\"other\"\n />\n )}\n <Button type=\"submit\" size=\"L\" fullWidth disabled={!role}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <TextButton onClick={(event) => handleSubmit(event, true)}>\n {formatMessage({\n id: 'Usecase.button.skip',\n defaultMessage: 'Skip this question',\n })}\n </TextButton>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { LoadingIndicatorPage, MenuItem } from '@strapi/helper-plugin';\nimport { Route } from 'react-router-dom';\n\ninterface LazyCompoProps {\n loadComponent: Required<MenuItem>['Component'];\n}\n\nconst LazyCompo = ({ loadComponent }: LazyCompoProps) => {\n const [Compo, setCompo] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadCompo = async () => {\n try {\n const loadedCompo = await loadComponent();\n\n // TODO the loaded component provided can currently come from a default or named export\n // We will move the entire codebase to use named exports only\n // Until then we support both cases with priority given to the existing default exports\n if (typeof loadedCompo === 'function') {\n setCompo(() => loadedCompo);\n } else if (loadedCompo.default) {\n setCompo(() => loadedCompo.default!);\n }\n } catch (err) {}\n };\n\n loadCompo();\n }, [loadComponent]);\n\n if (Compo) {\n return <Compo />;\n }\n\n return <LoadingIndicatorPage />;\n};\n\nexport const createRoute = (\n loadComponent: LazyCompoProps['loadComponent'],\n to: MenuItem['to'],\n exact: MenuItem['exact'] = false\n) => {\n return (\n <Route\n render={() => <LazyCompo loadComponent={loadComponent} />}\n key={to}\n path={to}\n exact={exact || false}\n />\n );\n};\n","/**\n *\n * App.js\n *\n */\n\nimport * as React from 'react';\n\nimport { SkipToContent } from '@strapi/design-system';\nimport {\n auth,\n LoadingIndicatorPage,\n MenuItem,\n prefixFileUrlWithBackendUrl,\n TrackingProvider,\n useAppInfo,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport merge from 'lodash/merge';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { Route, Switch } from 'react-router-dom';\n\nimport { PrivateRoute } from './components/PrivateRoute';\nimport { ADMIN_PERMISSIONS_CE, ACTION_SET_ADMIN_PERMISSIONS } from './constants';\nimport { useConfiguration } from './contexts/configuration';\nimport { useEnterprise } from './hooks/useEnterprise';\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { NotFoundPage } from './pages/NotFoundPage';\nimport { UseCasePage } from './pages/UseCasePage';\nimport { createRoute } from './utils/createRoute';\n\ntype StrapiRoute = Pick<MenuItem, 'exact' | 'to'> & Required<Pick<MenuItem, 'Component'>>;\n\nconst ROUTES_CE: StrapiRoute[] | null = null;\n\nconst AuthenticatedApp = React.lazy(() =>\n import('./components/AuthenticatedApp').then((mod) => ({ default: mod.AuthenticatedApp }))\n);\n\nexport const App = () => {\n const adminPermissions = useEnterprise(\n ADMIN_PERMISSIONS_CE,\n async () => (await import('../../ee/admin/src/constants')).ADMIN_PERMISSIONS_EE,\n {\n combine(cePermissions, eePermissions) {\n // the `settings` NS e.g. are deep nested objects, that need a deep merge\n return merge({}, cePermissions, eePermissions);\n },\n\n defaultValue: ADMIN_PERMISSIONS_CE,\n }\n );\n const routes = useEnterprise(\n ROUTES_CE,\n async () => (await import('../../ee/admin/src/constants')).ROUTES_EE,\n {\n defaultValue: [],\n }\n );\n const toggleNotification = useNotification();\n const { updateProjectSettings } = useConfiguration();\n const { formatMessage } = useIntl();\n const [{ isLoading, hasAdmin, uuid, deviceId }, setState] = React.useState({\n isLoading: true,\n deviceId: undefined,\n hasAdmin: false,\n uuid: false,\n });\n const dispatch = useDispatch();\n const appInfo = useAppInfo();\n const { get, post } = useFetchClient();\n\n const authRoutes = React.useMemo(() => {\n if (!routes) {\n return null;\n }\n\n return routes.map(({ to, Component, exact }) => createRoute(Component, to, exact));\n }, [routes]);\n\n const [telemetryProperties, setTelemetryProperties] = React.useState(undefined);\n\n React.useEffect(() => {\n dispatch({ type: ACTION_SET_ADMIN_PERMISSIONS, payload: adminPermissions });\n }, [adminPermissions, dispatch]);\n\n React.useEffect(() => {\n const currentToken = auth.getToken();\n\n const renewToken = async () => {\n try {\n const {\n data: {\n data: { token },\n },\n } = await post('/admin/renew-token', { token: currentToken });\n auth.updateToken(token);\n } catch (err) {\n // Refresh app\n auth.clearAppStorage();\n window.location.reload();\n }\n };\n\n if (currentToken) {\n renewToken();\n }\n }, [post]);\n\n React.useEffect(() => {\n const getData = async () => {\n try {\n const {\n data: {\n data: { hasAdmin, uuid, menuLogo, authLogo },\n },\n } = await get(`/admin/init`);\n\n updateProjectSettings({\n menuLogo: prefixFileUrlWithBackendUrl(menuLogo),\n authLogo: prefixFileUrlWithBackendUrl(authLogo),\n });\n\n if (uuid) {\n const {\n data: { data: properties },\n } = await get(`/admin/telemetry-properties`, {\n // NOTE: needed because the interceptors of the fetchClient redirect to /login when receive a 401 and it would end up in an infinite loop when the user doesn't have a session.\n validateStatus: (status) => status < 500,\n });\n\n setTelemetryProperties(properties);\n\n try {\n const event = 'didInitializeAdministration';\n await post(\n 'https://analytics.strapi.io/api/v2/track',\n {\n // This event is anonymous\n event,\n userId: '',\n deviceId,\n eventPropeties: {},\n userProperties: { environment: appInfo.currentEnvironment },\n groupProperties: { ...properties, projectId: uuid },\n },\n {\n headers: {\n 'X-Strapi-Event': event,\n },\n }\n );\n } catch (e) {\n // Silent.\n }\n }\n\n setState({ isLoading: false, hasAdmin, uuid, deviceId });\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: { id: 'app.containers.App.notification.error.init' },\n });\n }\n };\n\n getData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toggleNotification, updateProjectSettings]);\n\n const trackingInfo = React.useMemo(\n () => ({\n uuid,\n telemetryProperties,\n deviceId,\n }),\n [uuid, telemetryProperties, deviceId]\n );\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <React.Suspense fallback={<LoadingIndicatorPage />}>\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <TrackingProvider value={trackingInfo}>\n <Switch>\n {authRoutes}\n <Route\n path=\"/auth/:authType\"\n render={(routerProps) => <AuthPage {...routerProps} hasAdmin={hasAdmin} />}\n exact\n />\n <PrivateRoute path=\"/usecase\" component={UseCasePage} />\n <PrivateRoute path=\"/\" component={AuthenticatedApp} />\n <Route path=\"\" component={NotFoundPage} />\n </Switch>\n </TrackingProvider>\n </React.Suspense>\n );\n};\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjgwMCIgdmlld0JveD0iMCAwIDgwMCA4MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cGF0aCBkPSJNMzkgMjgyYzAtMTE4IDAtMTc2LjkgMzYuNi0yMTMuNUMxMTIuMiAzMiAxNzEuMSAzMiAyODguOSAzMmgyMjEuMmMxMTcuOCAwIDE3Ni43IDAgMjEzLjMgMzYuNkM3NjAgMTA1LjIgNzYwIDE2NC4xIDc2MCAyODEuOXYyMjEuMmMwIDExNy44IDAgMTc2LjctMzYuNiAyMTMuM0M2ODYuOCA3NTMgNjI3LjkgNzUzIDUxMC4xIDc1M0gyODguOWMtMTE3LjggMC0xNzYuNyAwLTIxMy4zLTM2LjZDMzkgNjc5LjggMzkgNjIwLjkgMzkgNTAzLjFWMjgxLjlaIiBmaWxsPSIjNDk0NUZGIi8+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUzNi40IDI1MC43SDI5My43djEyMy44aDEyMy44djEyMy43aDEyMy44VjI1NS41YzAtMi42LTIuMi00LjgtNC45LTQuOFoiIGZpbGw9IiNmZmYiLz4KICAgIDxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik00MTIuNyAzNzQuNWg0Ljh2NC44aC00Ljh6Ii8+CiAgICA8cGF0aCBkPSJNMjkzLjggMzc0LjVoMTE5YzIuNiAwIDQuOCAyLjEgNC44IDQuOHYxMTloLTExOWE0LjggNC44IDAgMCAxLTQuOC00Ljl2LTExOVoiIGZpbGw9IiM5NTkzRkYiLz4KICAgIDxwYXRoIGQ9Ik00MTcuNSA0OTguMmgxMjMuOEw0MjEuNiA2MThhMi40IDIuNCAwIDAgMS00LTEuN3YtMTE4Wk0yOTMuOCAzNzQuNWgtMTE4YTIuNCAyLjQgMCAwIDEtMS43LTQuMWwxMTkuNy0xMTkuN3YxMjMuOFoiIGZpbGw9IiM5NTkzRkYiLz4KPC9zdmc+Cg==\"","import { createContext } from '@radix-ui/react-context';\n\nimport type { StrapiApp } from '../StrapiApp';\ninterface AdminContextValue {\n getAdminInjectedComponents: StrapiApp['getAdminInjectedComponents'];\n}\n\nconst [AdminContextProvider, useAdminContext] = createContext<AdminContextValue>('AdminContext');\n\nconst useAdmin = () => useAdminContext('useAdmin');\n\nexport { AdminContextProvider, useAdmin };\nexport type { AdminContextValue };\n","import * as React from 'react';\n\nimport { ConfigurationContextProvider, ConfigurationContextValue } from '../contexts/configuration';\n\ninterface ConfigurationProviderProps {\n children: React.ReactNode;\n authLogo: string;\n menuLogo: string;\n showReleaseNotification?: boolean;\n showTutorials?: boolean;\n}\n\ntype LogoKeys = keyof ConfigurationContextValue['logos'];\n\nconst ConfigurationProvider = ({\n children,\n authLogo: defaultAuthLogo,\n menuLogo: defaultMenuLogo,\n showReleaseNotification = false,\n showTutorials = false,\n}: ConfigurationProviderProps) => {\n const [{ menuLogo, authLogo }, setLogos] = React.useState<{\n [_Key in `${LogoKeys}Logo`]?: ConfigurationContextValue['logos'][LogoKeys]['custom'];\n }>({\n menuLogo: null,\n authLogo: null,\n });\n\n const updateProjectSettings: ConfigurationContextValue['updateProjectSettings'] =\n React.useCallback(\n ({ menuLogo, authLogo }) => {\n setLogos({\n menuLogo: menuLogo || defaultMenuLogo,\n authLogo: authLogo || defaultAuthLogo,\n });\n },\n [defaultAuthLogo, defaultMenuLogo]\n );\n\n return (\n <ConfigurationContextProvider\n updateProjectSettings={updateProjectSettings}\n showReleaseNotification={showReleaseNotification}\n showTutorials={showTutorials}\n logos={{\n menu: { custom: menuLogo, default: defaultMenuLogo },\n auth: { custom: authLogo, default: defaultAuthLogo },\n }}\n >\n {children}\n </ConfigurationContextProvider>\n );\n};\n\nexport { ConfigurationProvider };\nexport type { ConfigurationProviderProps };\n","import * as React from 'react';\n\nimport {\n GuidedTourContextValue,\n GuidedTourProvider as GuidedTourProviderComponent,\n GuidedTourSectionKey,\n GuidedTourStep,\n GuidedTourStepKey,\n auth,\n} from '@strapi/helper-plugin';\nimport produce from 'immer';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GuidedTourProviderProps {\n children: React.ReactNode;\n}\n\nconst GuidedTourProvider = ({ children }: GuidedTourProviderProps) => {\n const [{ currentStep, guidedTourState, isGuidedTourVisible, isSkipped }, dispatch] =\n React.useReducer(reducer, initialState, initialiseState);\n\n const setCurrentStep = (step: SetCurrentStepAction['step']) => {\n // if step is null it is intentional, we need to dispatch it\n if (step !== null) {\n const isStepAlreadyDone = get(guidedTourState, step);\n const [sectionName, stepName] = step.split('.') as [GuidedTourSectionKey, GuidedTourStepKey];\n const sectionArray = Object.entries(guidedTourState[sectionName]);\n\n const currentStepIndex = sectionArray.findIndex(([key]) => key === stepName);\n const previousSteps = sectionArray.slice(0, currentStepIndex);\n\n const isStepToShow = previousSteps.every(([, sectionValue]) => sectionValue);\n\n if (isStepAlreadyDone || isSkipped || !isStepToShow) {\n return null;\n }\n }\n\n auth.set(null, 'GUIDED_TOUR_CURRENT_STEP', true);\n\n return dispatch({\n type: 'SET_CURRENT_STEP',\n step,\n });\n };\n\n const setGuidedTourVisibility = (value: SetGuidedTourVisibilityAction['value']) => {\n dispatch({\n type: 'SET_GUIDED_TOUR_VISIBILITY',\n value,\n });\n };\n\n const setStepState = (currentStep: GuidedTourStep, value: SetStepStateAction['value']) => {\n addCompletedStep(currentStep);\n\n dispatch({\n type: 'SET_STEP_STATE',\n currentStep,\n value,\n });\n };\n\n const startSection = (sectionName: GuidedTourSectionKey) => {\n const sectionSteps = guidedTourState[sectionName];\n\n if (sectionSteps) {\n const guidedTourArray = Object.entries(guidedTourState);\n\n // Find current section position in the guidedTourArray\n // Get only previous sections based on current section position\n const currentSectionIndex = guidedTourArray.findIndex(([key]) => key === sectionName);\n const previousSections = guidedTourArray.slice(0, currentSectionIndex);\n\n // Check if every steps from previous section are done\n const isSectionToShow = previousSections.every(([, sectionValue]) =>\n Object.values(sectionValue).every(Boolean)\n );\n\n const [firstStep] = Object.keys(sectionSteps) as [GuidedTourStepKey];\n const isFirstStepDone = sectionSteps[firstStep];\n\n if (isSectionToShow && !currentStep && !isFirstStepDone) {\n setCurrentStep(`${sectionName}.${firstStep}`);\n }\n }\n };\n\n const setSkipped = (value: SetSkippedAction['value']) => {\n auth.set(value, 'GUIDED_TOUR_SKIPPED', true);\n\n dispatch({\n type: 'SET_SKIPPED',\n value,\n });\n };\n\n return (\n <GuidedTourProviderComponent\n guidedTourState={guidedTourState}\n currentStep={currentStep}\n setCurrentStep={setCurrentStep}\n setGuidedTourVisibility={setGuidedTourVisibility}\n setSkipped={setSkipped}\n setStepState={setStepState}\n startSection={startSection}\n isGuidedTourVisible={isGuidedTourVisible}\n isSkipped={isSkipped}\n >\n {children}\n </GuidedTourProviderComponent>\n );\n};\n\ntype State = Pick<\n GuidedTourContextValue,\n 'guidedTourState' | 'currentStep' | 'isGuidedTourVisible' | 'isSkipped'\n>;\n\nconst initialState = {\n currentStep: null,\n guidedTourState: {\n contentTypeBuilder: {\n create: false,\n success: false,\n },\n contentManager: {\n create: false,\n success: false,\n },\n apiTokens: {\n create: false,\n success: false,\n },\n },\n isGuidedTourVisible: false,\n isSkipped: false,\n} satisfies State;\n\ninterface SetCurrentStepAction {\n type: 'SET_CURRENT_STEP';\n step: GuidedTourStep | null;\n}\n\ninterface SetStepStateAction {\n type: 'SET_STEP_STATE';\n currentStep: GuidedTourStep;\n value: boolean;\n}\n\ninterface SetSkippedAction {\n type: 'SET_SKIPPED';\n value: boolean;\n}\n\ninterface SetGuidedTourVisibilityAction {\n type: 'SET_GUIDED_TOUR_VISIBILITY';\n value: boolean;\n}\n\ntype Action =\n | SetCurrentStepAction\n | SetStepStateAction\n | SetSkippedAction\n | SetGuidedTourVisibilityAction;\n\nconst reducer: React.Reducer<State, Action> = (state: State = initialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'SET_CURRENT_STEP': {\n draftState.currentStep = action.step;\n break;\n }\n case 'SET_STEP_STATE': {\n const [section, step] = action.currentStep.split('.') as [\n GuidedTourSectionKey,\n GuidedTourStepKey\n ];\n draftState.guidedTourState[section][step] = action.value;\n break;\n }\n case 'SET_SKIPPED': {\n draftState.isSkipped = action.value;\n break;\n }\n case 'SET_GUIDED_TOUR_VISIBILITY': {\n draftState.isGuidedTourVisible = action.value;\n break;\n }\n default: {\n return draftState;\n }\n }\n });\n\nconst initialiseState = (initialState: State) => {\n const copyInitialState = { ...initialState };\n const guidedTourLocaleStorage = auth.get('GUIDED_TOUR_COMPLETED_STEPS');\n const currentStepLocaleStorage = auth.get('GUIDED_TOUR_CURRENT_STEP');\n const skippedLocaleStorage = auth.get('GUIDED_TOUR_SKIPPED');\n\n if (Array.isArray(guidedTourLocaleStorage)) {\n guidedTourLocaleStorage.forEach((step) => {\n const [sectionName, stepName] = step.split('.');\n set(copyInitialState, ['guidedTourState', sectionName, stepName], true);\n });\n }\n\n // if current step when initializing mark it as done\n if (currentStepLocaleStorage) {\n const [sectionName, stepName] = currentStepLocaleStorage.split('.') as [\n GuidedTourSectionKey,\n GuidedTourStepKey\n ];\n set(copyInitialState, ['guidedTourState', sectionName, stepName], true);\n\n addCompletedStep(currentStepLocaleStorage as GuidedTourStep);\n\n auth.set(null, 'GUIDED_TOUR_CURRENT_STEP', true);\n }\n\n if (skippedLocaleStorage !== null) {\n set(copyInitialState, 'isSkipped', skippedLocaleStorage);\n }\n\n return copyInitialState;\n};\n\n/**\n * @description Add a completed step to the local storage if it does not already exist.\n */\nconst addCompletedStep = (completedStep: GuidedTourStep) => {\n const currentSteps = auth.get('GUIDED_TOUR_COMPLETED_STEPS') ?? [];\n\n if (!Array.isArray(currentSteps)) {\n return;\n }\n\n const isAlreadyStored = currentSteps.includes(completedStep);\n\n if (isAlreadyStored) {\n return;\n }\n\n auth.set([...currentSteps, completedStep], 'GUIDED_TOUR_COMPLETED_STEPS', true);\n};\n\nexport { GuidedTourProvider };\n","import { createContext } from '@radix-ui/react-context';\nimport { DefaultTheme } from 'styled-components';\n\ntype ThemeName = 'light' | 'dark' | 'system';\ntype NonSystemThemeName = Exclude<ThemeName, 'system'>;\n\ninterface ThemeToggleContextContextValue {\n currentTheme?: ThemeName;\n onChangeTheme?: (nextTheme: ThemeName) => void;\n themes?: {\n dark: DefaultTheme;\n light: DefaultTheme;\n };\n systemTheme?: NonSystemThemeName;\n}\n\nconst [ThemeToggleContextProvider, useThemeToggleContext] =\n createContext<ThemeToggleContextContextValue>('ThemeToggleContext');\n\nconst useThemeToggle = () => useThemeToggleContext('useThemeToggle');\n\nexport { ThemeToggleContextProvider, useThemeToggle };\nexport type { ThemeName, NonSystemThemeName, ThemeToggleContextContextValue };\n","import * as React from 'react';\n\nimport { DesignSystemProvider } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { createGlobalStyle } from 'styled-components';\n\nimport { useThemeToggle } from '../contexts/themeToggle';\n\ninterface ThemeProps {\n children: React.ReactNode;\n}\n\nconst Theme = ({ children }: ThemeProps) => {\n const { currentTheme, themes, systemTheme } = useThemeToggle();\n const { locale } = useIntl();\n\n const computedThemeName = currentTheme === 'system' ? systemTheme : currentTheme;\n\n return (\n <DesignSystemProvider\n locale={locale}\n /**\n * TODO: could we make this neater i.e. by setting up the context to throw\n * if it can't find it, that way the type is always fully defined and we're\n * not checking it all the time...\n */\n theme={themes?.[computedThemeName || 'light']}\n >\n {children}\n <GlobalStyle />\n </DesignSystemProvider>\n );\n};\n\nconst GlobalStyle = createGlobalStyle`\n body {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nexport { Theme };\n","import * as React from 'react';\n\nimport { DefaultTheme } from 'styled-components';\n\nimport { ThemeToggleContextProvider, ThemeName, NonSystemThemeName } from '../contexts/themeToggle';\n\nconst THEME_KEY = 'STRAPI_THEME';\n\nconst getDefaultTheme = () => {\n const persistedTheme = localStorage.getItem(THEME_KEY) as ThemeName | null;\n\n return persistedTheme || 'system';\n};\n\ninterface ThemeToggleProviderProps {\n children: React.ReactNode;\n themes: {\n light: DefaultTheme;\n dark: DefaultTheme;\n };\n}\n\nconst ThemeToggleProvider = ({ children, themes }: ThemeToggleProviderProps) => {\n const [currentTheme, setCurrentTheme] = React.useState<ThemeName>(getDefaultTheme());\n const [systemTheme, setSystemTheme] = React.useState<NonSystemThemeName>();\n\n const handleChangeTheme = React.useCallback(\n (nextTheme: ThemeName) => {\n setCurrentTheme(nextTheme);\n localStorage.setItem(THEME_KEY, nextTheme);\n },\n [setCurrentTheme]\n );\n\n // Listen to changes in the system theme\n React.useEffect(() => {\n const themeWatcher = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemTheme(themeWatcher.matches ? 'dark' : 'light');\n\n const listener = (event: MediaQueryListEvent) => {\n setSystemTheme(event.matches ? 'dark' : 'light');\n };\n themeWatcher.addEventListener('change', listener);\n\n // Remove listener on cleanup\n return () => {\n themeWatcher.removeEventListener('change', listener);\n };\n }, []);\n\n return (\n <ThemeToggleContextProvider\n currentTheme={currentTheme}\n onChangeTheme={handleChangeTheme}\n themes={themes}\n systemTheme={systemTheme}\n >\n {children}\n </ThemeToggleContextProvider>\n );\n};\n\nexport { ThemeToggleProvider };\nexport type { ThemeToggleProviderProps };\n","import * as React from 'react';\n\nimport {\n AutoReloadOverlayBlockerProvider,\n CustomFieldsProvider,\n CustomFieldsProviderProps,\n LibraryProvider,\n LibraryProviderProps,\n NotificationsProvider,\n OverlayBlockerProvider,\n StrapiAppProvider,\n StrapiAppProviderProps,\n} from '@strapi/helper-plugin';\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\n\nimport { AdminContextProvider, AdminContextValue } from '../contexts/admin';\n\nimport { ConfigurationProvider, ConfigurationProviderProps } from './ConfigurationProvider';\nimport { GuidedTourProvider } from './GuidedTour/Provider';\nimport { LanguageProvider, LanguageProviderProps } from './LanguageProvider';\nimport { Theme } from './Theme';\nimport { ThemeToggleProvider, ThemeToggleProviderProps } from './ThemeToggleProvider';\n\nimport type { Store } from '../core/store/configure';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ninterface ProvidersProps\n extends Pick<ThemeToggleProviderProps, 'themes'>,\n Pick<LanguageProviderProps, 'messages' | 'localeNames'>,\n Pick<\n ConfigurationProviderProps,\n 'authLogo' | 'menuLogo' | 'showReleaseNotification' | 'showTutorials'\n >,\n Pick<AdminContextValue, 'getAdminInjectedComponents'>,\n Pick<CustomFieldsProviderProps, 'customFields'>,\n Pick<LibraryProviderProps, 'components' | 'fields'>,\n Pick<\n StrapiAppProviderProps,\n | 'getPlugin'\n | 'menu'\n | 'plugins'\n | 'runHookParallel'\n | 'runHookSeries'\n | 'runHookWaterfall'\n | 'settings'\n > {\n children: React.ReactNode;\n store: Store;\n}\n\nconst Providers = ({\n authLogo,\n children,\n components,\n customFields,\n fields,\n getAdminInjectedComponents,\n getPlugin,\n localeNames,\n menu,\n menuLogo,\n messages,\n plugins,\n runHookParallel,\n runHookSeries,\n runHookWaterfall,\n settings,\n showReleaseNotification,\n showTutorials,\n store,\n themes,\n}: ProvidersProps) => {\n return (\n <LanguageProvider messages={messages} localeNames={localeNames}>\n <ThemeToggleProvider themes={themes}>\n <Theme>\n <QueryClientProvider client={queryClient}>\n <Provider store={store}>\n <AdminContextProvider getAdminInjectedComponents={getAdminInjectedComponents}>\n <ConfigurationProvider\n authLogo={authLogo}\n menuLogo={menuLogo}\n showReleaseNotification={showReleaseNotification}\n showTutorials={showTutorials}\n >\n <StrapiAppProvider\n getPlugin={getPlugin}\n menu={menu}\n plugins={plugins}\n runHookParallel={runHookParallel}\n runHookWaterfall={runHookWaterfall}\n runHookSeries={runHookSeries}\n settings={settings}\n >\n <LibraryProvider components={components} fields={fields}>\n <CustomFieldsProvider customFields={customFields}>\n <AutoReloadOverlayBlockerProvider>\n <OverlayBlockerProvider>\n <GuidedTourProvider>\n <NotificationsProvider>{children}</NotificationsProvider>\n </GuidedTourProvider>\n </OverlayBlockerProvider>\n </AutoReloadOverlayBlockerProvider>\n </CustomFieldsProvider>\n </LibraryProvider>\n </StrapiAppProvider>\n </ConfigurationProvider>\n </AdminContextProvider>\n </Provider>\n </QueryClientProvider>\n </Theme>\n </ThemeToggleProvider>\n </LanguageProvider>\n );\n};\n\nexport { Providers };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\n\nexport interface Component {\n name: string;\n Component: React.ComponentType;\n}\n\nexport class Components {\n components: Record<Component['name'], Component['Component']>;\n\n constructor() {\n this.components = {};\n }\n\n add(component: Component) {\n const { name, Component } = component;\n\n invariant(Component, 'A Component must be provided');\n invariant(name, 'A name must be provided');\n invariant(this.components[name] === undefined, 'A similar field already exists');\n\n this.components[name] = Component;\n }\n}\n","/* eslint-disable check-file/filename-naming-convention */\nimport invariant from 'invariant';\n\nimport type {\n CustomField,\n CustomFieldOption,\n CustomFieldOptionSection,\n CustomFieldUID,\n} from '@strapi/helper-plugin';\n\nconst ALLOWED_TYPES = [\n 'biginteger',\n 'boolean',\n 'date',\n 'datetime',\n 'decimal',\n 'email',\n 'enumeration',\n 'float',\n 'integer',\n 'json',\n 'password',\n 'richtext',\n 'string',\n 'text',\n 'time',\n 'uid',\n] as const;\n\nconst ALLOWED_ROOT_LEVEL_OPTIONS = [\n 'min',\n 'minLength',\n 'max',\n 'maxLength',\n 'required',\n 'regex',\n 'enum',\n 'unique',\n 'private',\n 'default',\n] as const;\n\nexport class CustomFields {\n customFields: Record<CustomFieldUID, CustomField>;\n\n constructor() {\n this.customFields = {};\n }\n\n register(customFields: CustomField | CustomField[]) {\n if (Array.isArray(customFields)) {\n // If several custom fields are passed, register them one by one\n customFields.forEach((customField) => {\n this.register(customField);\n });\n } else {\n // Handle individual custom field\n const { name, pluginId, type, intlLabel, intlDescription, components, options } =\n customFields;\n\n // Ensure required attributes are provided\n invariant(name, 'A name must be provided');\n invariant(type, 'A type must be provided');\n invariant(intlLabel, 'An intlLabel must be provided');\n invariant(intlDescription, 'An intlDescription must be provided');\n invariant(components, 'A components object must be provided');\n invariant(components.Input, 'An Input component must be provided');\n\n // Ensure the type is valid\n invariant(\n ALLOWED_TYPES.includes(type),\n `Custom field type: '${type}' is not a valid Strapi type or it can't be used with a Custom Field`\n );\n\n // Ensure name has no special characters\n const isValidObjectKey = /^(?![0-9])[a-zA-Z0-9$_-]+$/g;\n invariant(\n isValidObjectKey.test(name),\n `Custom field name: '${name}' is not a valid object key`\n );\n\n // Ensure options have valid name paths\n const allFormOptions = [...(options?.base || []), ...(options?.advanced || [])];\n\n if (allFormOptions.length) {\n const optionPathValidations = allFormOptions.reduce(optionsValidationReducer, []);\n\n optionPathValidations.forEach(({ isValidOptionPath, errorMessage }) => {\n invariant(isValidOptionPath, errorMessage);\n });\n }\n\n // When no plugin is specified, default to the global namespace\n const uid: CustomFieldUID = pluginId ? `plugin::${pluginId}.${name}` : `global::${name}`;\n\n // Ensure the uid is unique\n const uidAlreadyUsed = Object.prototype.hasOwnProperty.call(this.customFields, uid);\n invariant(!uidAlreadyUsed, `Custom field: '${uid}' has already been registered`);\n\n this.customFields[uid] = customFields;\n }\n }\n\n getAll() {\n return this.customFields;\n }\n\n get(uid: CustomFieldUID): CustomField | undefined {\n return this.customFields[uid];\n }\n}\n\ninterface OptionValidation {\n isValidOptionPath: boolean;\n errorMessage: string;\n}\n\nconst optionsValidationReducer = (\n acc: OptionValidation[],\n option: CustomFieldOptionSection | CustomFieldOption\n): OptionValidation[] => {\n if ('items' in option) {\n return option.items.reduce(optionsValidationReducer, acc);\n }\n\n if (!option.name) {\n acc.push({\n isValidOptionPath: false,\n errorMessage: \"The 'name' property is required on an options object\",\n });\n } else {\n acc.push({\n isValidOptionPath:\n option.name.startsWith('options') || ALLOWED_ROOT_LEVEL_OPTIONS.includes(option.name),\n errorMessage: `'${option.name}' must be prefixed with 'options.'`,\n });\n }\n\n return acc;\n};\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\n\nexport interface Field {\n type: string;\n Component: React.ComponentType;\n}\n\nexport class Fields {\n fields: Record<Field['type'], Field['Component']>;\n\n constructor() {\n this.fields = {};\n }\n\n add(field: Field) {\n const { type, Component } = field;\n\n invariant(Component, 'A Component must be provided');\n invariant(type, 'A type must be provided');\n\n this.fields[type] = Component;\n }\n}\n","/* eslint-disable check-file/filename-naming-convention */\nimport { Middleware } from '@reduxjs/toolkit';\n\nimport { RootState } from '../store/configure';\n\ntype TypedMiddleware = () => Middleware<object, RootState>;\n\nclass Middlewares {\n middlewares: Array<TypedMiddleware>;\n\n constructor() {\n this.middlewares = [];\n }\n\n add(middleware: TypedMiddleware) {\n this.middlewares.push(middleware);\n }\n}\n\nexport { Middlewares, TypedMiddleware as Middleware };\n","/* eslint-disable check-file/filename-naming-convention */\nimport { Plugin as IPlugin } from '@strapi/helper-plugin';\n\nexport interface PluginConfig\n extends Pick<IPlugin, 'apis' | 'initializer' | 'injectionZones' | 'isReady' | 'name'> {\n id: string;\n}\n\nexport class Plugin implements IPlugin {\n apis: PluginConfig['apis'];\n initializer: PluginConfig['initializer'];\n injectionZones: PluginConfig['injectionZones'];\n isReady: PluginConfig['isReady'];\n name: PluginConfig['name'];\n pluginId: PluginConfig['id'];\n\n constructor(pluginConf: PluginConfig) {\n this.apis = pluginConf.apis || {};\n this.initializer = pluginConf.initializer || null;\n this.injectionZones = pluginConf.injectionZones || {};\n this.isReady = pluginConf.isReady !== undefined ? pluginConf.isReady : true;\n this.name = pluginConf.name;\n this.pluginId = pluginConf.id;\n }\n\n getInjectedComponents(containerName: string, blockName: string) {\n try {\n return this.injectionZones[containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n }\n\n injectComponent(\n containerName: string,\n blockName: string,\n component: ReturnType<IPlugin['getInjectedComponents']>[number]\n ) {\n try {\n this.injectionZones[containerName][blockName].push(component);\n } catch (err) {\n console.error('Cannot inject component', err);\n }\n }\n}\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport { Reducer, ReducersMapObject } from '@reduxjs/toolkit';\n\ninterface ReducerConstructorArgs {\n appReducers?: ReducersMapObject;\n}\n\nexport class Reducers {\n reducers: ReducersMapObject;\n\n constructor({ appReducers = {} }: ReducerConstructorArgs = {}) {\n this.reducers = { ...appReducers };\n }\n\n add(reducerName: string, reducer: Reducer) {\n this.reducers[reducerName] = reducer;\n }\n}\n","import { createSelector, Selector } from '@reduxjs/toolkit';\nimport { useDispatch, useStore, TypedUseSelectorHook, useSelector } from 'react-redux';\n\nimport type { RootState, Store } from './configure';\n\ntype AppDispatch = Store['dispatch'];\n\nconst useTypedDispatch: () => AppDispatch = useDispatch;\nconst useTypedStore = useStore as () => Store;\nconst useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;\n\nconst createTypedSelector = <TResult>(selector: Selector<RootState, TResult>) =>\n createSelector((state: RootState) => state, selector);\n\nexport { useTypedDispatch, useTypedStore, useTypedSelector, createTypedSelector };\n","import * as React from 'react';\n\nimport {\n LoadingIndicatorPage,\n Permission,\n RBACContext,\n RBACContextValue,\n} from '@strapi/helper-plugin';\nimport produce from 'immer';\n\nimport { useTypedSelector, useTypedDispatch } from '../core/store/hooks';\n\n/* -------------------------------------------------------------------------------------------------\n * RBACProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RBACProviderProps {\n children: React.ReactNode;\n permissions: Permission[];\n refetchPermissions: RBACContextValue['refetchPermissions'];\n}\n\nconst RBACProvider = ({ children, permissions, refetchPermissions }: RBACProviderProps) => {\n const allPermissions = useTypedSelector((state) => state.rbacProvider.allPermissions);\n\n const dispatch = useTypedDispatch();\n\n React.useEffect(() => {\n dispatch(setPermissionsAction(permissions));\n\n return () => {\n dispatch(resetStoreAction());\n };\n }, [permissions, dispatch]);\n\n if (!allPermissions) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <RBACContext.Provider value={{ allPermissions, refetchPermissions }}>\n {children}\n </RBACContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RBACReducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RBACState {\n allPermissions: null | Permission[];\n collectionTypesRelatedPermissions: Record<string, Record<string, Permission[]>>;\n}\n\nconst initialState = {\n allPermissions: null,\n collectionTypesRelatedPermissions: {},\n};\n\nconst RESET_STORE = 'StrapiAdmin/RBACProvider/RESET_STORE';\nconst SET_PERMISSIONS = 'StrapiAdmin/RBACProvider/SET_PERMISSIONS';\n\ninterface ResetStoreAction {\n type: typeof RESET_STORE;\n}\n\nconst resetStoreAction = (): ResetStoreAction => ({ type: RESET_STORE });\n\ninterface SetPermissionsAction {\n type: typeof SET_PERMISSIONS;\n permissions: Permission[];\n}\n\nconst setPermissionsAction = (\n permissions: SetPermissionsAction['permissions']\n): SetPermissionsAction => ({\n type: SET_PERMISSIONS,\n permissions,\n});\n\ntype Actions = ResetStoreAction | SetPermissionsAction;\n\nconst RBACReducer = (state: RBACState = initialState, action: Actions) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case SET_PERMISSIONS: {\n draftState.allPermissions = action.permissions;\n draftState.collectionTypesRelatedPermissions = action.permissions\n .filter((perm) => perm.subject)\n .reduce<Record<string, Record<string, Permission[]>>>((acc, current) => {\n const { subject, action } = current;\n\n if (!subject) return acc;\n\n if (!acc[subject]) {\n acc[subject] = {};\n }\n\n acc[subject] = acc[subject][action]\n ? { ...acc[subject], [action]: [...acc[subject][action], current] }\n : { ...acc[subject], [action]: [current] };\n\n return acc;\n }, {});\n break;\n }\n case RESET_STORE: {\n return initialState;\n }\n default:\n return state;\n }\n });\n\nexport { RBACProvider, RBACReducer, resetStoreAction, setPermissionsAction };\nexport type {\n RBACState,\n Actions,\n RBACProviderProps,\n ResetStoreAction,\n SetPermissionsAction,\n Permission,\n};\n","export const SET_PERMISSIONS = 'ContentManager/RBACManager/SET_PERMISSIONS';\nexport const RESET_PERMISSIONS = 'ContentManager/RBACManager/RESET_PERMISSIONS';\n","/**\n *\n * RBACManager reducer\n */\n\nimport produce from 'immer';\n\nimport { RESET_PERMISSIONS, SET_PERMISSIONS } from './constants';\n\nexport const initialState = {\n permissions: null,\n};\n\nconst rbacManagerReducer = (state = initialState, action) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case SET_PERMISSIONS: {\n draftState.permissions = Object.entries(action.permissions).reduce((acc, current) => {\n return [...acc, ...current[1]];\n }, []);\n break;\n }\n case RESET_PERMISSIONS: {\n draftState.permissions = null;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default rbacManagerReducer;\n","export const GET_INIT_DATA = 'ContentManager/App/GET_INIT_DATA';\nexport const RESET_INIT_DATA = 'ContentManager/App/RESET_INIT_DATA';\nexport const SET_INIT_DATA = 'ContentManager/App/SET_INIT_DATA';\n","/**\n *\n * main reducer\n */\n/* eslint-disable consistent-return */\nimport produce from 'immer';\n\nimport { GET_INIT_DATA, RESET_INIT_DATA, SET_INIT_DATA } from './constants';\n\nconst initialState = {\n components: [],\n status: 'loading',\n models: [],\n collectionTypeLinks: [],\n singleTypeLinks: [],\n};\n\n/**\n * Known as content-manager_app in the redux store\n */\nconst mainReducer = (state = initialState, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case GET_INIT_DATA: {\n draftState.status = 'loading';\n break;\n }\n case RESET_INIT_DATA: {\n return initialState;\n }\n case SET_INIT_DATA: {\n draftState.collectionTypeLinks = action.data.authorizedCollectionTypeLinks.filter(\n ({ isDisplayed }) => isDisplayed\n );\n draftState.singleTypeLinks = action.data.authorizedSingleTypeLinks.filter(\n ({ isDisplayed }) => isDisplayed\n );\n draftState.components = action.data.components;\n draftState.models = action.data.contentTypeSchemas;\n draftState.fieldSizes = action.data.fieldSizes;\n draftState.status = 'resolved';\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default mainReducer;\nexport { initialState };\n","export const SET_LAYOUT = 'ContentManager/EditViewLayoutManager/SET_LAYOUT';\nexport const RESET_PROPS = 'ContentManager/EditViewLayoutManager/RESET_PROPS';\n","/**\n *\n * EditViewLayoutManager reducer\n */\n\nimport produce from 'immer';\n\nimport { RESET_PROPS, SET_LAYOUT } from './constants';\n\nexport const initialState = {\n currentLayout: null,\n};\n\nconst editViewManagerReducer = (state = initialState, action) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case RESET_PROPS: {\n draftState.currentLayout = null;\n break;\n }\n case SET_LAYOUT: {\n draftState.currentLayout = action.layout;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default editViewManagerReducer;\n","export const GET_DATA = 'ContentManager/ListView/GET_DATA';\nexport const GET_DATA_SUCCEEDED = 'ContentManager/ListView/GET_DATA_SUCCEEDED';\nexport const RESET_PROPS = 'ContentManager/ListView/RESET_PROPS';\nexport const ON_CHANGE_LIST_HEADERS = 'ContentManager/ListView/ON_CHANGE_LIST_HEADERS ';\nexport const ON_RESET_LIST_HEADERS = 'ContentManager/ListView/ON_RESET_LIST_HEADERS ';\nexport const SET_LIST_LAYOUT = 'ContentManager/ListView/SET_LIST_LAYOUT ';\n","/**\n *\n * listView reducer\n */\n\nimport produce from 'immer';\nimport get from 'lodash/get';\n\nimport {\n GET_DATA,\n GET_DATA_SUCCEEDED,\n ON_CHANGE_LIST_HEADERS,\n ON_RESET_LIST_HEADERS,\n RESET_PROPS,\n SET_LIST_LAYOUT,\n} from './constants';\n\nexport const initialState = {\n data: [],\n isLoading: true,\n contentType: {},\n components: [],\n initialDisplayedHeaders: [],\n displayedHeaders: [],\n pagination: {\n total: 0,\n },\n};\n\nconst listViewReducer = (state = initialState, action) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case GET_DATA: {\n return {\n ...initialState,\n contentType: state.contentType,\n components: state.components,\n initialDisplayedHeaders: state.initialDisplayedHeaders,\n displayedHeaders: state.displayedHeaders,\n };\n }\n\n case GET_DATA_SUCCEEDED: {\n draftState.pagination = action.pagination;\n draftState.data = action.data;\n draftState.isLoading = false;\n break;\n }\n\n case ON_CHANGE_LIST_HEADERS: {\n const {\n target: { name, value },\n } = action;\n\n if (!value) {\n const { metadatas, attributes, uid } = state.contentType;\n const metas = metadatas[name].list;\n const header = {\n name,\n fieldSchema: attributes[name],\n metadatas: metas,\n key: `__${name}_key__`,\n };\n\n switch (attributes[name].type) {\n case 'component': {\n const componentName = attributes[name].component;\n const mainFieldName = get(\n state,\n ['components', componentName, 'settings', 'mainField'],\n null\n );\n const mainFieldAttribute = get(state, [\n 'components',\n componentName,\n 'attributes',\n mainFieldName,\n ]);\n\n draftState.displayedHeaders.push({\n ...header,\n metadatas: {\n ...metas,\n mainField: {\n ...mainFieldAttribute,\n name: mainFieldName,\n },\n },\n });\n break;\n }\n\n case 'relation':\n draftState.displayedHeaders.push({\n ...header,\n queryInfos: {\n defaultParams: {},\n endPoint: `collection-types/${uid}`,\n },\n });\n break;\n\n default:\n draftState.displayedHeaders.push(header);\n }\n } else {\n draftState.displayedHeaders = state.displayedHeaders.filter(\n (header) => header.name !== name\n );\n }\n\n break;\n }\n case ON_RESET_LIST_HEADERS: {\n draftState.displayedHeaders = state.initialDisplayedHeaders;\n break;\n }\n case RESET_PROPS: {\n return initialState;\n }\n case SET_LIST_LAYOUT: {\n const { contentType, components, displayedHeaders } = action;\n\n draftState.contentType = contentType;\n draftState.components = components;\n draftState.displayedHeaders = displayedHeaders;\n draftState.initialDisplayedHeaders = displayedHeaders;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default listViewReducer;\n","export const GET_DATA = 'ContentManager/CrudReducer/GET_DATA';\nexport const GET_DATA_SUCCEEDED = 'ContentManager/CrudReducer/GET_DATA_SUCCEEDED';\nexport const INIT_FORM = 'ContentManager/CrudReducer/INIT_FORM';\nexport const RESET_PROPS = 'ContentManager/CrudReducer/RESET_PROPS';\nexport const SET_DATA_STRUCTURES = 'ContentManager/CrudReducer/SET_DATA_STRUCTURES';\nexport const SET_STATUS = 'ContentManager/CrudReducer/SET_STATUS';\nexport const SUBMIT_SUCCEEDED = 'ContentManager/CrudReducer/SUBMIT_SUCCEEDED';\nexport const CLEAR_SET_MODIFIED_DATA_ONLY =\n 'ContentManager/CrudReducer/CLEAR_SET_MODIFIED_DATA_ONLY';\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\n\n// NOTE: instead of creating a shared reducer here, we could also create a hook\n// that returns the dispatch and the state, however it will mess with the linter\n// and force us to either disable the linter for the hooks dependencies array rule or\n// require us to add the dispatch to the array which is not wanted. This refacto does not require us to\n// to do any of this.\nimport {\n CLEAR_SET_MODIFIED_DATA_ONLY,\n GET_DATA,\n GET_DATA_SUCCEEDED,\n INIT_FORM,\n RESET_PROPS,\n SET_DATA_STRUCTURES,\n SET_STATUS,\n SUBMIT_SUCCEEDED,\n} from './constants';\n\nconst crudInitialState = {\n componentsDataStructure: {},\n contentTypeDataStructure: {},\n isLoading: true,\n data: null,\n status: 'resolved',\n setModifiedDataOnly: false,\n};\n\nconst crudReducer = (state = crudInitialState, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case GET_DATA: {\n draftState.isLoading = true;\n draftState.data = null;\n break;\n }\n case GET_DATA_SUCCEEDED: {\n draftState.isLoading = false;\n draftState.data = action.data;\n draftState.setModifiedDataOnly = action.setModifiedDataOnly ?? false;\n break;\n }\n case INIT_FORM: {\n if (action.data) {\n draftState.isLoading = false;\n draftState.data = action.data;\n\n break;\n }\n\n draftState.isLoading = false;\n draftState.data = state.contentTypeDataStructure;\n break;\n }\n case RESET_PROPS: {\n return crudInitialState;\n }\n case SET_DATA_STRUCTURES: {\n draftState.componentsDataStructure = action.componentsDataStructure;\n draftState.contentTypeDataStructure = action.contentTypeDataStructure;\n break;\n }\n case SET_STATUS: {\n draftState.status = action.status;\n break;\n }\n case SUBMIT_SUCCEEDED: {\n draftState.data = action.data;\n break;\n }\n case CLEAR_SET_MODIFIED_DATA_ONLY: {\n draftState.setModifiedDataOnly = false;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default crudReducer;\nexport { crudInitialState };\n","import produce from 'immer';\n\nimport { ACTION_SET_APP_RUNTIME_STATUS, ACTION_SET_ADMIN_PERMISSIONS } from './constants';\nimport { PermissionMap } from './types/permissions';\n\ninterface State {\n status: 'init' | 'runtime';\n permissions: Partial<PermissionMap>;\n}\n\nconst initialState = {\n permissions: {},\n status: 'init',\n} satisfies State;\n\ninterface SetAppRuntimeStatusAction {\n type: typeof ACTION_SET_APP_RUNTIME_STATUS;\n}\n\ninterface SetAdminPermissionsAction {\n type: typeof ACTION_SET_ADMIN_PERMISSIONS;\n payload: Record<string, unknown>;\n}\n\ntype Action = SetAppRuntimeStatusAction | SetAdminPermissionsAction;\n\nconst reducer = (state: State = initialState, action: Action) =>\n /* eslint-disable-next-line consistent-return */\n produce(state, (draftState) => {\n switch (action.type) {\n case ACTION_SET_APP_RUNTIME_STATUS: {\n draftState.status = 'runtime';\n break;\n }\n\n case ACTION_SET_ADMIN_PERMISSIONS: {\n draftState.permissions = action.payload;\n break;\n }\n\n default:\n return draftState;\n }\n });\n\nexport { reducer, initialState };\nexport type { State, Action, SetAppRuntimeStatusAction, SetAdminPermissionsAction };\n","import {\n configureStore,\n StoreEnhancer,\n Middleware,\n Reducer,\n combineReducers,\n} from '@reduxjs/toolkit';\n\nimport { RBACReducer } from '../../components/RBACProvider';\n// @ts-expect-error no types, yet.\nimport rbacManagerReducer from '../../content-manager/hooks/useSyncRbac/reducer';\n// @ts-expect-error no types, yet.\nimport cmAppReducer from '../../content-manager/pages/App/reducer';\n// @ts-expect-error no types, yet.\nimport editViewLayoutManagerReducer from '../../content-manager/pages/EditViewLayoutManager/reducer';\n// @ts-expect-error no types, yet.\nimport listViewReducer from '../../content-manager/pages/ListView/reducer';\n// @ts-expect-error no types, yet.\nimport editViewCrudReducer from '../../content-manager/sharedReducers/crudReducer/reducer';\nimport { reducer as appReducer } from '../../reducer';\n\n/**\n * @description Static reducers are ones we know, they live in the admin package.\n */\nconst staticReducers = {\n admin_app: appReducer,\n rbacProvider: RBACReducer,\n 'content-manager_app': cmAppReducer,\n 'content-manager_listView': listViewReducer,\n 'content-manager_rbacManager': rbacManagerReducer,\n 'content-manager_editViewLayoutManager': editViewLayoutManagerReducer,\n 'content-manager_editViewCrudReducer': editViewCrudReducer,\n} as const;\n\nconst injectReducerStoreEnhancer: (appReducers: Record<string, Reducer>) => StoreEnhancer =\n (appReducers) =>\n (next) =>\n (...args) => {\n const store = next(...args);\n\n const asyncReducers: Record<string, Reducer> = {};\n\n return {\n ...store,\n asyncReducers,\n injectReducer: (key: string, asyncReducer: Reducer) => {\n asyncReducers[key] = asyncReducer;\n store.replaceReducer(\n // @ts-expect-error we dynamically add reducers which makes the types uncomfortable.\n combineReducers({\n ...appReducers,\n ...asyncReducers,\n })\n );\n },\n };\n };\n\n/**\n * @description This is the main store configuration function, injected Reducers use our legacy app.addReducer API,\n * which we're trying to phase out. App Middlewares could potentially be improved...?\n */\nconst configureStoreImpl = (\n appMiddlewares: Array<() => Middleware> = [],\n injectedReducers: Record<string, Reducer> = {}\n) => {\n const coreReducers = { ...staticReducers, ...injectedReducers } as const;\n\n const store = configureStore({\n reducer: coreReducers,\n devTools: process.env.NODE_ENV !== 'production',\n middleware: (getDefaultMiddleware) => [\n ...getDefaultMiddleware(),\n ...appMiddlewares.map((m) => m()),\n ],\n enhancers: [injectReducerStoreEnhancer(coreReducers)],\n });\n\n return store;\n};\n\ntype Store = ReturnType<typeof configureStoreImpl> & {\n asyncReducers: Record<string, Reducer>;\n injectReducer: (key: string, asyncReducer: Reducer) => void;\n};\n\ntype RootState = ReturnType<Store['getState']>;\n\nexport { configureStoreImpl as configureStore };\nexport type { RootState, Store };\n","export const getBasename = () => (process.env.ADMIN_PATH ?? '').replace(window.location.origin, '');\n","/* eslint-disable no-await-in-loop */\n/* eslint-disable no-restricted-syntax */\n\nexport type Handler = (...args: any[]) => any;\n\nexport const createHook = () => {\n const _handlers: Handler[] = [];\n\n return {\n register(fn: Handler) {\n _handlers.push(fn);\n },\n delete(handler: Handler) {\n _handlers.splice(_handlers.indexOf(handler), 1);\n },\n runWaterfall<T>(args: T, store?: any) {\n return _handlers.reduce((acc, fn) => fn(acc, store), args);\n },\n async runWaterfallAsync<T>(args: T, store?: any) {\n let result = args;\n\n for (const fn of _handlers) {\n result = await fn(result, store);\n }\n\n return result;\n },\n runSeries<T extends any[]>(...args: T) {\n return _handlers.map((fn) => fn(...args));\n },\n async runSeriesAsync<T extends any[]>(...args: T) {\n const result = [];\n\n for (const fn of _handlers) {\n result.push(await fn(...args));\n }\n\n return result;\n },\n runParallel<T extends any[]>(...args: T) {\n return Promise.all(\n _handlers.map((fn) => {\n return fn(...args);\n })\n );\n },\n };\n};\n","import { useAdmin } from '../../contexts/admin';\nimport {\n InjectionZoneArea,\n InjectionZoneBlock,\n InjectionZoneContainer,\n InjectionZoneModule,\n} from '../components/InjectionZone';\n\nexport const useInjectionZone = (area: InjectionZoneArea) => {\n const { getAdminInjectedComponents } = useAdmin();\n\n const [moduleName, page, position] = area.split('.') as [\n InjectionZoneModule,\n InjectionZoneContainer,\n InjectionZoneBlock\n ];\n\n return getAdminInjectedComponents(moduleName, page, position);\n};\n","import * as React from 'react';\n\nimport { useInjectionZone } from '../hooks/useInjectionZone';\n\nconst INJECTION_ZONES = {\n admin: {\n // Temporary injection zone, support for the react-tour plugin in foodadvisor\n tutorials: {\n links: [],\n },\n },\n contentManager: {\n editView: { informations: [], 'right-links': [] },\n listView: {\n actions: [],\n deleteModalAdditionalInfos: [],\n publishModalAdditionalInfos: [],\n unpublishModalAdditionalInfos: [],\n },\n },\n} satisfies InjectionZones;\n\ninterface InjectionZoneComponent {\n Component: React.ComponentType;\n name: string;\n // TODO: in theory this could receive and forward any React component prop\n // but in practice there only seems to be once instance, where `slug` is\n // forwarded. The type needs to become either more generic or we disallow\n // prop spreading and offer a different way to access context data.\n slug: string;\n}\n\ninterface InjectionZones {\n admin: {\n tutorials: {\n links: InjectionZoneComponent[];\n };\n };\n contentManager: {\n editView: {\n informations: InjectionZoneComponent[];\n 'right-links': InjectionZoneComponent[];\n };\n listView: {\n actions: InjectionZoneComponent[];\n deleteModalAdditionalInfos: InjectionZoneComponent[];\n publishModalAdditionalInfos: InjectionZoneComponent[];\n unpublishModalAdditionalInfos: InjectionZoneComponent[];\n };\n };\n}\n\ntype InjectionZoneArea =\n | 'admin.tutorials.links'\n | 'contentManager.editView.informations'\n | 'contentManager.editView.right-links'\n | 'contentManager.listView.actions'\n | 'contentManager.listView.unpublishModalAdditionalInfos'\n | 'contentManager.listView.deleteModalAdditionalInfos'\n | 'contentManager.listView.publishModalAdditionalInfos'\n | 'contentManager.listView.deleteModalAdditionalInfos';\n\ntype InjectionZoneModule = InjectionZoneArea extends `${infer Word}.${string}` ? Word : never;\ntype InjectionZoneContainer = InjectionZoneArea extends `${string}.${infer Word}.${string}`\n ? Word\n : never;\ntype InjectionZoneBlock = InjectionZoneArea extends `${string}.${string}.${infer Word}`\n ? Word\n : never;\n\nconst InjectionZone = ({ area, ...props }: { area: InjectionZoneArea }) => {\n const components = useInjectionZone(area);\n\n return components.map((component) => <component.Component key={component.name} {...props} />);\n};\n\nexport { InjectionZone, INJECTION_ZONES };\n\nexport type {\n InjectionZoneArea,\n InjectionZoneComponent,\n InjectionZones,\n InjectionZoneModule,\n InjectionZoneContainer,\n InjectionZoneBlock,\n};\n","export const languageNativeNames = {\n ar: 'العربية',\n ca: 'Català',\n cs: 'Čeština',\n de: 'Deutsch',\n dk: 'Dansk',\n en: 'English',\n es: 'Español',\n eu: 'Euskara',\n fr: 'Français',\n gu: 'Gujarati',\n he: 'עברית',\n hu: 'Magyar',\n id: 'Indonesian',\n it: 'Italiano',\n ja: '日本語',\n ko: '한국어',\n ml: 'Malayalam',\n ms: 'Melayu',\n nl: 'Nederlands',\n no: 'Norwegian',\n pl: 'Polski',\n 'pt-BR': 'Português (Brasil)',\n pt: 'Português (Portugal)',\n ru: 'Русский',\n sk: 'Slovenčina',\n sv: 'Swedish',\n th: 'ไทย',\n tr: 'Türkçe',\n uk: 'Українська',\n vi: 'Tiếng Việt',\n 'zh-Hans': '中文 (简体)',\n zh: '中文 (繁體)',\n sa: 'संस्कृत',\n hi: 'हिन्दी',\n} as const;\n","import { ReducersMapObject } from '@reduxjs/toolkit';\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport { MenuItem, StrapiAppSetting, StrapiAppSettingLink } from '@strapi/helper-plugin';\nimport invariant from 'invariant';\nimport isFunction from 'lodash/isFunction';\nimport merge from 'lodash/merge';\nimport pick from 'lodash/pick';\nimport { Helmet } from 'react-helmet';\nimport { BrowserRouter } from 'react-router-dom';\nimport { DefaultTheme } from 'styled-components';\n\nimport { App } from './App';\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { LANGUAGE_LOCAL_STORAGE_KEY } from './components/LanguageProvider';\nimport { Providers } from './components/Providers';\nimport { HOOKS } from './constants';\nimport { Components, Component } from './core/apis/Components';\nimport { CustomFields } from './core/apis/CustomFields';\nimport { Field, Fields } from './core/apis/Fields';\nimport { Middleware, Middlewares } from './core/apis/Middlewares';\nimport { Plugin, PluginConfig } from './core/apis/Plugin';\nimport { Reducers } from './core/apis/Reducers';\nimport { Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport {\n INJECTION_ZONES,\n InjectionZoneBlock,\n InjectionZoneComponent,\n InjectionZoneContainer,\n InjectionZoneModule,\n InjectionZones,\n} from './shared/components/InjectionZone';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nconst {\n INJECT_COLUMN_IN_TABLE,\n MUTATE_COLLECTION_TYPES_LINKS,\n MUTATE_EDIT_VIEW_LAYOUT,\n MUTATE_SINGLE_TYPES_LINKS,\n} = HOOKS;\n\ninterface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {\n adminConfig?: {\n config?: StrapiApp['customConfigurations'];\n bootstrap?: StrapiApp['customBootstrapConfiguration'];\n };\n}\n\ninterface StrapiAppPlugin {\n bootstrap: (\n args: Pick<\n StrapiApp,\n | 'addSettingsLink'\n | 'addSettingsLinks'\n | 'getPlugin'\n | 'injectContentManagerComponent'\n | 'injectAdminComponent'\n | 'registerHook'\n >\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads: (args: {\n locales: string[];\n }) => Promise<{ data: Record<string, string>; locale: string }[]>;\n}\n\nclass StrapiApp {\n admin: {\n injectionZones: InjectionZones;\n };\n appPlugins: Record<string, StrapiAppPlugin>;\n configurations: {\n authLogo: string;\n head: { favicon: string };\n locales: string[];\n menuLogo: string;\n notifications: { releases: boolean };\n themes: { light: DefaultTheme; dark: DefaultTheme };\n translations: Record<string, Record<string, string>>;\n tutorials: boolean;\n };\n customBootstrapConfiguration: unknown;\n customConfigurations: {\n auth?: { logo: string };\n head?: { favicon: string };\n locales?: string[];\n menu?: { logo: string };\n notifications?: { releases: boolean };\n theme?: { light: DefaultTheme; dark: DefaultTheme };\n translations?: Record<string, unknown>;\n tutorials?: boolean;\n };\n customFields: CustomFields;\n hooksDict: Record<string, ReturnType<typeof createHook>>;\n library: {\n components: Components;\n fields: Fields;\n };\n menu: MenuItem[];\n middlewares: Middlewares;\n plugins: Record<string, Plugin>;\n reducers: Reducers;\n settings: Record<string, StrapiAppSetting>;\n translations: StrapiApp['configurations']['translations'];\n\n constructor({ adminConfig, appPlugins }: StrapiAppConstructorArgs = {}) {\n this.customConfigurations = adminConfig?.config ?? {};\n this.customBootstrapConfiguration = adminConfig?.bootstrap;\n this.configurations = {\n authLogo: Logo,\n head: { favicon: '' },\n locales: ['en'],\n menuLogo: Logo,\n notifications: { releases: true },\n themes: { light: lightTheme, dark: darkTheme },\n translations: {},\n tutorials: true,\n };\n this.appPlugins = appPlugins || {};\n this.library = {\n components: new Components(),\n fields: new Fields(),\n };\n this.middlewares = new Middlewares();\n this.plugins = {};\n this.reducers = new Reducers();\n this.translations = {};\n this.hooksDict = {};\n this.admin = {\n injectionZones: INJECTION_ZONES,\n };\n this.customFields = new CustomFields();\n this.menu = [];\n this.settings = {\n global: {\n id: 'global',\n intlLabel: {\n id: 'Settings.global',\n defaultMessage: 'Global Settings',\n },\n links: [],\n },\n };\n }\n\n addComponents = (components: Component | Component[]) => {\n if (Array.isArray(components)) {\n components.map((compo) => this.library.components.add(compo));\n } else {\n this.library.components.add(components);\n }\n };\n\n addCorePluginMenuLink = (link: MenuItem) => {\n const stringifiedLink = JSON.stringify(link);\n\n invariant(link.to, `link.to should be defined for ${stringifiedLink}`);\n invariant(\n typeof link.to === 'string',\n `Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n ['/plugins/content-type-builder', '/plugins/upload'].includes(link.to),\n 'This method is not available for your plugin'\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `link.intlLabel.id & link.intlLabel.defaultMessage for ${stringifiedLink}`\n );\n\n this.menu.push(link);\n };\n\n addFields = (fields: Field | Field[]) => {\n if (Array.isArray(fields)) {\n fields.map((field) => this.library.fields.add(field));\n } else {\n this.library.fields.add(fields);\n }\n };\n\n addMenuLink = (link: MenuItem) => {\n const stringifiedLink = JSON.stringify(link);\n\n invariant(link.to, `link.to should be defined for ${stringifiedLink}`);\n invariant(\n typeof link.to === 'string',\n `Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `link.intlLabel.id & link.intlLabel.defaultMessage for ${stringifiedLink}`\n );\n invariant(\n link.Component && typeof link.Component === 'function',\n `link.Component should be a valid React Component`\n );\n invariant(\n link.icon && typeof link.icon === 'function',\n `link.Icon should be a valid React Component`\n );\n\n this.menu.push(link);\n };\n\n addMiddlewares = (middlewares: Middleware[]) => {\n middlewares.forEach((middleware) => {\n this.middlewares.add(middleware);\n });\n };\n\n addReducers = (reducers: ReducersMapObject) => {\n Object.keys(reducers).forEach((reducerName) => {\n this.reducers.add(reducerName, reducers[reducerName]);\n });\n };\n\n addSettingsLink = (sectionId: keyof StrapiApp['settings'], link: StrapiAppSettingLink) => {\n invariant(this.settings[sectionId], 'The section does not exist');\n\n const stringifiedLink = JSON.stringify(link);\n\n invariant(link.id, `link.id should be defined for ${stringifiedLink}`);\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `link.intlLabel.id & link.intlLabel.defaultMessage for ${stringifiedLink}`\n );\n invariant(link.to, `link.to should be defined for ${stringifiedLink}`);\n invariant(\n link.Component && typeof link.Component === 'function',\n `link.Component should be a valid React Component`\n );\n\n this.settings[sectionId].links.push(link);\n };\n\n addSettingsLinks = (sectionId: keyof StrapiApp['settings'], links: StrapiAppSettingLink[]) => {\n invariant(this.settings[sectionId], 'The section does not exist');\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n links.forEach((link) => {\n this.addSettingsLink(sectionId, link);\n });\n };\n\n async bootstrap() {\n Object.keys(this.appPlugins).forEach((plugin) => {\n const bootstrap = this.appPlugins[plugin].bootstrap;\n\n if (bootstrap) {\n bootstrap({\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n injectContentManagerComponent: this.injectContentManagerComponent,\n injectAdminComponent: this.injectAdminComponent,\n registerHook: this.registerHook,\n });\n }\n });\n\n if (isFunction(this.customBootstrapConfiguration)) {\n this.customBootstrapConfiguration({\n addComponents: this.addComponents,\n addFields: this.addFields,\n addMenuLink: this.addMenuLink,\n addReducers: this.addReducers,\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n injectContentManagerComponent: this.injectContentManagerComponent,\n injectAdminComponent: this.injectAdminComponent,\n registerHook: this.registerHook,\n });\n }\n }\n\n bootstrapAdmin = async () => {\n await this.createCustomConfigurations();\n\n this.createHook(INJECT_COLUMN_IN_TABLE);\n this.createHook(MUTATE_COLLECTION_TYPES_LINKS);\n this.createHook(MUTATE_SINGLE_TYPES_LINKS);\n this.createHook(MUTATE_EDIT_VIEW_LAYOUT);\n\n return Promise.resolve();\n };\n\n createCustomConfigurations = async () => {\n if (this.customConfigurations?.locales) {\n this.configurations.locales = [\n 'en',\n ...(this.customConfigurations.locales?.filter((loc) => loc !== 'en') || []),\n ];\n }\n\n if (this.customConfigurations?.auth?.logo) {\n this.configurations.authLogo = this.customConfigurations.auth.logo;\n }\n\n if (this.customConfigurations?.menu?.logo) {\n this.configurations.menuLogo = this.customConfigurations.menu.logo;\n }\n\n if (this.customConfigurations?.head?.favicon) {\n this.configurations.head.favicon = this.customConfigurations.head.favicon;\n }\n\n if (this.customConfigurations?.theme) {\n const darkTheme = this.customConfigurations.theme.dark;\n const lightTheme = this.customConfigurations.theme.light;\n\n if (!darkTheme && !lightTheme) {\n console.warn(\n `[deprecated] In future versions, Strapi will stop supporting this theme customization syntax. The theme configuration accepts a light and a dark key to customize each theme separately. See https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#theme-extension.`\n );\n merge(this.configurations.themes.light, this.customConfigurations.theme);\n }\n\n if (lightTheme) merge(this.configurations.themes.light, lightTheme);\n\n if (darkTheme) merge(this.configurations.themes.dark, darkTheme);\n }\n\n if (this.customConfigurations?.notifications?.releases !== undefined) {\n this.configurations.notifications.releases = this.customConfigurations.notifications.releases;\n }\n\n if (this.customConfigurations?.tutorials !== undefined) {\n this.configurations.tutorials = this.customConfigurations.tutorials;\n }\n };\n\n createHook = (name: string) => {\n this.hooksDict[name] = createHook();\n };\n\n createSettingSection = (section: StrapiAppSetting, links: StrapiAppSettingLink[]) => {\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n links.forEach((link) => {\n this.addSettingsLink(section.id, link);\n });\n };\n\n createStore = () => {\n const store = configureStore(this.middlewares.middlewares, this.reducers.reducers);\n\n return store as Store;\n };\n\n getAdminInjectedComponents = (\n moduleName: InjectionZoneModule,\n containerName: InjectionZoneContainer,\n blockName: InjectionZoneBlock\n ): InjectionZoneComponent[] => {\n try {\n // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.\n return this.admin.injectionZones[moduleName][containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n };\n\n getPlugin = (pluginId: PluginConfig['id']) => {\n return this.plugins[pluginId];\n };\n\n async initialize() {\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(this);\n });\n }\n\n injectContentManagerComponent = <TContainerName extends keyof InjectionZones['contentManager']>(\n containerName: TContainerName,\n blockName: keyof InjectionZones['contentManager'][TContainerName],\n component: InjectionZoneComponent\n ) => {\n invariant(\n this.admin.injectionZones.contentManager[containerName]?.[blockName],\n `The ${containerName} ${String(blockName)} zone is not defined in the content manager`\n );\n invariant(component, 'A Component must be provided');\n\n // @ts-expect-error – we've alredy checked above that the block exists.\n this.admin.injectionZones.contentManager[containerName][blockName].push(component);\n };\n\n injectAdminComponent = <TContainerName extends keyof InjectionZones['admin']>(\n containerName: TContainerName,\n blockName: keyof InjectionZones['admin'][TContainerName],\n component: InjectionZoneComponent\n ) => {\n invariant(\n this.admin.injectionZones.admin[containerName]?.[blockName],\n `The ${containerName} ${String(blockName)} zone is not defined in the admin`\n );\n invariant(component, 'A Component must be provided');\n\n // @ts-expect-error – we've alredy checked above that the block exists.\n this.admin.injectionZones.admin[containerName][blockName].push(component);\n };\n\n /**\n * Load the admin translations\n * @returns {Object} The imported admin translations\n */\n async loadAdminTrads() {\n const arrayOfPromises = this.configurations.locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return { data, locale };\n })\n .catch(() => {\n return { data: null, locale };\n });\n });\n const adminLocales = await Promise.all(arrayOfPromises);\n\n const translations = adminLocales.reduce<{ [locale: string]: Record<string, string> }>(\n (acc, current) => {\n if (current.data) {\n acc[current.locale] = current.data;\n }\n\n return acc;\n },\n {}\n );\n\n return translations;\n }\n\n /**\n * Load the application's translations and merged the custom translations\n * with the default ones.\n *\n */\n async loadTrads() {\n const adminTranslations = await this.loadAdminTrads();\n\n const arrayOfPromises = Object.keys(this.appPlugins)\n .map((plugin) => {\n const registerTrads = this.appPlugins[plugin].registerTrads;\n\n if (registerTrads) {\n return registerTrads({ locales: this.configurations.locales });\n }\n\n return null;\n })\n .filter((a) => a);\n\n type Translation = Awaited<ReturnType<StrapiAppPlugin['registerTrads']>>[number];\n\n const pluginsTrads = (await Promise.all(arrayOfPromises)) as Array<Translation[]>;\n const mergedTrads = pluginsTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc, currentPluginTrads) => {\n const pluginTrads = currentPluginTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc1, current) => {\n acc1[current.locale] = current.data;\n\n return acc1;\n },\n {}\n );\n\n Object.keys(pluginTrads).forEach((locale) => {\n acc[locale] = { ...acc[locale], ...pluginTrads[locale] };\n });\n\n return acc;\n },\n {}\n );\n\n const translations = this.configurations.locales.reduce<{\n [locale: string]: Translation['data'];\n }>((acc, current) => {\n acc[current] = {\n ...adminTranslations[current],\n ...(mergedTrads[current] || {}),\n ...(this.customConfigurations?.translations?.[current] ?? {}),\n };\n\n return acc;\n }, {});\n\n this.configurations.translations = translations;\n\n return Promise.resolve();\n }\n\n registerHook = (name: string, fn: Handler) => {\n invariant(\n this.hooksDict[name],\n `The hook ${name} is not defined. You are trying to register a hook that does not exist in the application.`\n );\n this.hooksDict[name].register(fn);\n };\n\n registerPlugin = (pluginConf: PluginConfig) => {\n const plugin = new Plugin(pluginConf);\n\n this.plugins[plugin.pluginId] = plugin;\n };\n\n runHookSeries = (name: string, asynchronous = false) =>\n asynchronous ? this.hooksDict[name].runSeriesAsync() : this.hooksDict[name].runSeries();\n\n runHookWaterfall = (\n name: string,\n initialValue: unknown,\n asynchronous = false,\n store?: unknown\n ) => {\n return asynchronous\n ? this.hooksDict[name].runWaterfallAsync(initialValue, store)\n : this.hooksDict[name].runWaterfall(initialValue, store);\n };\n\n runHookParallel = (name: string) => this.hooksDict[name].runParallel();\n\n render() {\n const store = this.createStore();\n const localeNames = pick(languageNativeNames, this.configurations.locales || []);\n\n const {\n components: { components },\n fields: { fields },\n } = this.library;\n\n return (\n <Providers\n authLogo={this.configurations.authLogo}\n components={components}\n fields={fields}\n customFields={this.customFields}\n localeNames={localeNames}\n getAdminInjectedComponents={this.getAdminInjectedComponents}\n getPlugin={this.getPlugin}\n messages={this.configurations.translations}\n menu={this.menu}\n menuLogo={this.configurations.menuLogo}\n plugins={this.plugins}\n runHookParallel={this.runHookParallel}\n runHookWaterfall={(name, initialValue, async = false) => {\n return this.runHookWaterfall(name, initialValue, async, store);\n }}\n runHookSeries={this.runHookSeries}\n themes={this.configurations.themes}\n settings={this.settings}\n showTutorials={this.configurations.tutorials}\n showReleaseNotification={this.configurations.notifications.releases}\n store={store}\n >\n <Helmet\n htmlAttributes={{ lang: localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) || 'en' }}\n />\n <BrowserRouter basename={getBasename()}>\n <App />\n </BrowserRouter>\n </Providers>\n );\n }\n}\n\nexport { StrapiApp, StrapiAppConstructorArgs };\n","/* eslint-disable no-undef */\nimport { getFetchClient } from '@strapi/helper-plugin';\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\n\nimport type { FeaturesService } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: StrapiAppConstructorArgs['adminConfig'];\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: process.env.STRAPI_ADMIN_BACKEND_URL || window.location.origin,\n isEE: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true' ? true : false,\n future: {\n isEnabled: (name: keyof FeaturesService['config']) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n features: {\n name: string;\n }[];\n }\n\n try {\n const {\n data: {\n data: { isEE, features, flags },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n adminConfig: customisations,\n appPlugins: plugins,\n });\n\n await app.bootstrapAdmin();\n await app.initialize();\n await app.bootstrap();\n await app.loadTrads();\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["jsx","jsxs","useLocation","Route","auth","Redirect","createContext","useCallbackRef","React","reducer","initialState","locale","defaultsDeep","IntlProvider","styled","Box","Flex","useIntl","SingleSelect","SingleSelectOption","FieldAction","yup","translatedErrors","useFetchClient","useQuery","useHistory","useMutation","camelCase","Main","Typography","Formik","Form","TextInput","PasswordInput","Eye","EyeStriked","Checkbox","Button","Link","NavLink","Field","useTheme","useNotification","useAppInfo","Portal","IconButton","Cross","FieldLabel","VisuallyHidden","FieldInput","Textarea","usePersistentState","useTracking","useGuidedTour","useRouteMatch","useAPIErrorHandler","get","useReactQuery","formik","omit","ValidationError","getYupInnerErrors","Grid","GridItem","Login","LoginCE","useFocusWhenNavigate","HeaderLayout","ContentLayout","EmptyStateLayout","LinkButton","ArrowRight","EmptyPictures","parse","pxToRem","Select","Option","TextButton","LoadingIndicatorPage","merge","useDispatch","hasAdmin","uuid","prefixFileUrlWithBackendUrl","SkipToContent","TrackingProvider","Switch","menuLogo","authLogo","currentStep","GuidedTourProviderComponent","produce","set","DesignSystemProvider","createGlobalStyle","QueryClient","QueryClientProvider","Provider","StrapiAppProvider","LibraryProvider","CustomFieldsProvider","AutoReloadOverlayBlockerProvider","OverlayBlockerProvider","NotificationsProvider","invariant","options","useStore","useSelector","createSelector","RBACContext","SET_PERMISSIONS","action","RESET_PROPS","GET_DATA","GET_DATA_SUCCEEDED","appReducer","cmAppReducer","editViewLayoutManagerReducer","editViewCrudReducer","combineReducers","configureStore","Logo","lightTheme","darkTheme","isFunction","pick","Helmet","BrowserRouter","getFetchClient","features","createRoot"],"mappings":"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"}
|