@strapi/admin 5.42.0 → 5.43.0
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/admin/admin/src/StrapiApp.js +1 -0
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs +1 -0
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/Form.js +11 -10
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +11 -10
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.js +2 -2
- package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.mjs +2 -2
- package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.js +6 -1
- package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.mjs +6 -1
- package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
- package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs +3 -2
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/Table.js +28 -15
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs +29 -16
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/core/store/configure.js +3 -1
- package/dist/admin/admin/src/core/store/configure.js.map +1 -1
- package/dist/admin/admin/src/core/store/configure.mjs +3 -1
- package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
- package/dist/admin/admin/src/features/Widgets.js +1 -1
- package/dist/admin/admin/src/features/Widgets.js.map +1 -1
- package/dist/admin/admin/src/features/Widgets.mjs +1 -1
- package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.js +9 -4
- package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.mjs +10 -6
- package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js +2 -2
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs +2 -2
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +4 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs +4 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
- package/dist/admin/admin/src/render.js +2 -0
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +2 -0
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/services/api.js +2 -2
- package/dist/admin/admin/src/services/api.js.map +1 -1
- package/dist/admin/admin/src/services/api.mjs +2 -2
- package/dist/admin/admin/src/services/api.mjs.map +1 -1
- package/dist/admin/admin/src/translations/fi.json.js +890 -0
- package/dist/admin/admin/src/translations/fi.json.js.map +1 -0
- package/dist/admin/admin/src/translations/fi.json.mjs +868 -0
- package/dist/admin/admin/src/translations/fi.json.mjs.map +1 -0
- package/dist/admin/admin/src/translations/languageNativeNames.js +2 -1
- package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
- package/dist/admin/admin/src/translations/languageNativeNames.mjs +2 -1
- package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
- package/dist/admin/admin/src/translations/nl.json.js +394 -89
- package/dist/admin/admin/src/translations/nl.json.js.map +1 -1
- package/dist/admin/admin/src/translations/nl.json.mjs +393 -90
- package/dist/admin/admin/src/translations/nl.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/pl.json.js +411 -37
- package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
- package/dist/admin/admin/src/translations/pl.json.mjs +408 -38
- package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.js +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.mjs +2 -2
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +2 -2
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.js +7 -7
- package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.mjs +6 -6
- package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
- package/dist/admin/ee.js +2 -2
- package/dist/admin/ee.mjs +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/core/store/configure.d.ts +2 -2
- package/dist/admin/src/core/store/hooks.d.ts +2 -2
- package/dist/admin/src/ee.d.ts +1 -1
- package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
- package/dist/admin/src/hooks/usePersistentState.d.ts +2 -1
- package/dist/admin/src/index.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
- package/dist/admin/src/selectors.d.ts +2 -2
- package/dist/admin/src/services/admin.d.ts +6 -6
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/apiTokens.d.ts +1 -1
- package/dist/admin/src/services/auth.d.ts +11 -11
- package/dist/admin/src/services/contentApi.d.ts +1 -1
- package/dist/admin/src/services/contentManager.d.ts +1 -1
- package/dist/admin/src/services/homepage.d.ts +3 -3
- package/dist/admin/src/services/transferTokens.d.ts +1 -1
- package/dist/admin/src/services/users.d.ts +8 -8
- package/dist/admin/src/services/webhooks.d.ts +2 -2
- package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
- package/dist/admin/tests/utils.d.ts +1 -1
- package/dist/ee/admin/src/services/ai.d.ts +6 -6
- package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +1 -1
- package/dist/ee/server/src/index.d.ts +0 -16
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +1 -17
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs +1 -17
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/server/src/ai/controllers/ai.js +52 -0
- package/dist/server/server/src/ai/controllers/ai.js.map +1 -0
- package/dist/server/server/src/ai/controllers/ai.mjs +50 -0
- package/dist/server/server/src/ai/controllers/ai.mjs.map +1 -0
- package/dist/server/{ee/server → server}/src/ai/routes/ai.js +1 -2
- package/dist/server/server/src/ai/routes/ai.js.map +1 -0
- package/dist/server/{ee/server → server}/src/ai/routes/ai.mjs +1 -2
- package/dist/server/server/src/ai/routes/ai.mjs.map +1 -0
- package/dist/server/{ee/server/src/ai/containers → server/src/ai/services}/ai.js +107 -32
- package/dist/server/server/src/ai/services/ai.js.map +1 -0
- package/dist/server/{ee/server/src/ai/containers → server/src/ai/services}/ai.mjs +107 -32
- package/dist/server/server/src/ai/services/ai.mjs.map +1 -0
- package/dist/server/server/src/controllers/index.js +3 -1
- package/dist/server/server/src/controllers/index.js.map +1 -1
- package/dist/server/server/src/controllers/index.mjs +3 -1
- package/dist/server/server/src/controllers/index.mjs.map +1 -1
- package/dist/server/server/src/register.js +4 -0
- package/dist/server/server/src/register.js.map +1 -1
- package/dist/server/server/src/register.mjs +4 -0
- package/dist/server/server/src/register.mjs.map +1 -1
- package/dist/server/server/src/routes/index.js +3 -1
- package/dist/server/server/src/routes/index.js.map +1 -1
- package/dist/server/server/src/routes/index.mjs +3 -1
- package/dist/server/server/src/routes/index.mjs.map +1 -1
- package/dist/{ee/server → server}/src/ai/controllers/ai.d.ts +1 -1
- package/dist/server/src/ai/controllers/ai.d.ts.map +1 -0
- package/dist/server/src/ai/routes/ai.d.ts.map +1 -0
- package/dist/server/src/ai/services/ai.d.ts +30 -0
- package/dist/server/src/ai/services/ai.d.ts.map +1 -0
- package/dist/server/src/controllers/index.d.ts +5 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +5 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/shared/contracts/ai.d.ts +3 -3
- package/package.json +9 -9
- package/dist/ee/server/src/ai/containers/ai.d.ts +0 -15
- package/dist/ee/server/src/ai/containers/ai.d.ts.map +0 -1
- package/dist/ee/server/src/ai/controllers/ai.d.ts.map +0 -1
- package/dist/ee/server/src/ai/routes/ai.d.ts.map +0 -1
- package/dist/server/ee/server/src/ai/containers/ai.js.map +0 -1
- package/dist/server/ee/server/src/ai/containers/ai.mjs.map +0 -1
- package/dist/server/ee/server/src/ai/controllers/ai.js +0 -121
- package/dist/server/ee/server/src/ai/controllers/ai.js.map +0 -1
- package/dist/server/ee/server/src/ai/controllers/ai.mjs +0 -119
- package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +0 -1
- package/dist/server/ee/server/src/ai/routes/ai.js.map +0 -1
- package/dist/server/ee/server/src/ai/routes/ai.mjs.map +0 -1
- /package/dist/{ee/server → server}/src/ai/routes/ai.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues =\n matchingPermission?.properties[foundProperty.value] ?? [];\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","createDefaultPropertiesForm","subject","matchingPermission","recursivelyCreatePropertyForm","children","propertyValues","prefix","value","hasProperty","currentPropertyName","foundProperty","find","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","map","doesNothaveProperty","every","property","conditionsForm","propertiesForm","merge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"forms.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues =\n matchingPermission?.properties[foundProperty.value] ?? [];\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","createDefaultPropertiesForm","subject","matchingPermission","recursivelyCreatePropertyForm","children","propertyValues","prefix","value","hasProperty","currentPropertyName","foundProperty","find","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","map","doesNothaveProperty","every","property","conditionsForm","propertiesForm","merge"],"mappings":"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"}
|
|
@@ -56,7 +56,7 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
|
|
|
56
56
|
});
|
|
57
57
|
};
|
|
58
58
|
/**
|
|
59
|
-
* Creates the default for
|
|
59
|
+
* Creates the default for a content type
|
|
60
60
|
*/ const createDefaultCTForm = ({ subjects, actions = [] }, conditions, initialPermissions = [])=>{
|
|
61
61
|
return actions.reduce((defaultForm, action)=>{
|
|
62
62
|
const subjectLayouts = action.subjects.reduce((acc, current)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues =\n matchingPermission?.properties[foundProperty.value] ?? [];\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","createDefaultPropertiesForm","subject","matchingPermission","recursivelyCreatePropertyForm","children","propertyValues","prefix","value","hasProperty","currentPropertyName","foundProperty","find","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","map","doesNothaveProperty","every","property","conditionsForm","propertiesForm","merge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"forms.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues =\n matchingPermission?.properties[foundProperty.value] ?? [];\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","createDefaultPropertiesForm","subject","matchingPermission","recursivelyCreatePropertyForm","children","propertyValues","prefix","value","hasProperty","currentPropertyName","foundProperty","find","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","map","doesNothaveProperty","every","property","conditionsForm","propertiesForm","merge"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListView.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { EmptyStateLayout, LinkButton } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nimport type { Data } from '@strapi/types';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) }, { replace: true });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n role=\"button\"\n tag={Link}\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n fullWidth\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <Layouts.Content>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n tag={Link}\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </Layouts.Content>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":["tableHeaders","name","label","id","defaultMessage","sortable","ListView","formatMessage","useIntl","toggleNotification","useNotification","permissions","useTypedSelector","state","admin_app","settings","isLoading","isLoadingRBAC","allowedActions","canCreate","canDelete","canUpdate","canRead","useRBAC","navigate","useNavigate","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","React","useEffect","search","qs","stringify","sort","encode","replace","useOnce","tokenType","TRANSFER_TOKEN_TYPE","headers","map","header","data","transferTokens","isLoadingTokens","error","useGetTransferTokensQuery","undefined","skip","number","length","type","message","deleteToken","useDeleteTransferTokenMutation","handleDelete","res","_jsxs","_Fragment","_jsx","Page","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","role","tag","Link","data-testid","startIcon","Plus","size","onClick","to","fullWidth","NoPermissions","Main","aria-busy","Content","Table","onConfirmDelete","tokens","EmptyStateLayout","action","variant","icon","EmptyDocuments","width","content","ProtectedListView","main","Protect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListView.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { EmptyStateLayout, LinkButton } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nimport type { Data } from '@strapi/types';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) }, { replace: true });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n role=\"button\"\n tag={Link}\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n fullWidth\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <Layouts.Content>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n tag={Link}\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </Layouts.Content>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":["tableHeaders","name","label","id","defaultMessage","sortable","ListView","formatMessage","useIntl","toggleNotification","useNotification","permissions","useTypedSelector","state","admin_app","settings","isLoading","isLoadingRBAC","allowedActions","canCreate","canDelete","canUpdate","canRead","useRBAC","navigate","useNavigate","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","React","useEffect","search","qs","stringify","sort","encode","replace","useOnce","tokenType","TRANSFER_TOKEN_TYPE","headers","map","header","data","transferTokens","isLoadingTokens","error","useGetTransferTokensQuery","undefined","skip","number","length","type","message","deleteToken","useDeleteTransferTokenMutation","handleDelete","res","_jsxs","_Fragment","_jsx","Page","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","role","tag","Link","data-testid","startIcon","Plus","size","onClick","to","fullWidth","NoPermissions","Main","aria-busy","Content","Table","onConfirmDelete","tokens","EmptyStateLayout","action","variant","icon","EmptyDocuments","width","content","ProtectedListView","main","Protect"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListView.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { EmptyStateLayout, LinkButton } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nimport type { Data } from '@strapi/types';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) }, { replace: true });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n role=\"button\"\n tag={Link}\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n fullWidth\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <Layouts.Content>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n tag={Link}\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </Layouts.Content>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":["tableHeaders","name","label","id","defaultMessage","sortable","ListView","formatMessage","useIntl","toggleNotification","useNotification","permissions","useTypedSelector","state","admin_app","settings","isLoading","isLoadingRBAC","allowedActions","canCreate","canDelete","canUpdate","canRead","useRBAC","navigate","useNavigate","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","React","useEffect","search","qs","stringify","sort","encode","replace","useOnce","tokenType","TRANSFER_TOKEN_TYPE","headers","map","header","data","transferTokens","isLoadingTokens","error","useGetTransferTokensQuery","undefined","skip","number","length","type","message","deleteToken","useDeleteTransferTokenMutation","handleDelete","res","_jsxs","_Fragment","_jsx","Page","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","role","tag","Link","data-testid","startIcon","Plus","size","onClick","to","fullWidth","NoPermissions","Main","aria-busy","Content","Table","onConfirmDelete","tokens","EmptyStateLayout","action","variant","icon","EmptyDocuments","width","content","ProtectedListView","main","Protect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListView.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { EmptyStateLayout, LinkButton } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nimport type { Data } from '@strapi/types';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) }, { replace: true });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n role=\"button\"\n tag={Link}\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n fullWidth\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <Layouts.Content>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n tag={Link}\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </Layouts.Content>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":["tableHeaders","name","label","id","defaultMessage","sortable","ListView","formatMessage","useIntl","toggleNotification","useNotification","permissions","useTypedSelector","state","admin_app","settings","isLoading","isLoadingRBAC","allowedActions","canCreate","canDelete","canUpdate","canRead","useRBAC","navigate","useNavigate","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","React","useEffect","search","qs","stringify","sort","encode","replace","useOnce","tokenType","TRANSFER_TOKEN_TYPE","headers","map","header","data","transferTokens","isLoadingTokens","error","useGetTransferTokensQuery","undefined","skip","number","length","type","message","deleteToken","useDeleteTransferTokenMutation","handleDelete","res","_jsxs","_Fragment","_jsx","Page","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","role","tag","Link","data-testid","startIcon","Plus","size","onClick","to","fullWidth","NoPermissions","Main","aria-busy","Content","Table","onConfirmDelete","tokens","EmptyStateLayout","action","variant","icon","EmptyDocuments","width","content","ProtectedListView","main","Protect"],"mappings":"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"}
|
|
@@ -39,6 +39,7 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
|
|
|
39
39
|
nps: false,
|
|
40
40
|
promoteEE: true
|
|
41
41
|
},
|
|
42
|
+
// @ts-expect-error – there's pollution from the global scope of Node.
|
|
42
43
|
ai: {
|
|
43
44
|
enabled: true
|
|
44
45
|
}
|
|
@@ -54,6 +55,7 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
|
|
|
54
55
|
isEnabled: (featureName)=>features.some((feature)=>feature.name === featureName)
|
|
55
56
|
};
|
|
56
57
|
window.strapi.projectType = isEE ? 'Enterprise' : 'Community';
|
|
58
|
+
// @ts-expect-error – there's pollution from the global scope of Node.
|
|
57
59
|
window.strapi.ai = ai;
|
|
58
60
|
} catch (err) {
|
|
59
61
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.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: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\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 ai: {\n enabled: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n ai: {\n enabled: boolean;\n };\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags, ai },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\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 window.strapi.ai = ai;\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 config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\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 if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","ai","enabled","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":";;;;;;;AAmBA,MAAMA,WAAAA,GAAc,OAClBC,SAAAA,EACA,EAAEC,OAAO,EAAEC,cAAc,EAAEC,QAAQ,EAAmB,GAAA;AAEtD,IAAA,IAAI,CAACH,SAAAA,EAAW;AACd,QAAA,MAAM,IAAII,KAAAA,CAAM,yEAAA,CAAA;AAClB,IAAA;AAEAC,IAAAA,MAAAA,CAAOC,MAAM,GAAG;AACd;;;;;AAKC,QACDC,UAAAA,EAAYC,sBAAAA,CAAkBC,OAAAA,CAAQC,GAAG,CAACC,wBAAwB,CAAA;QAClEC,IAAAA,EAAM,KAAA;QACNC,OAAAA,EAAS,KAAA;AACTC,QAAAA,iBAAAA,EAAmBL,OAAAA,CAAQC,GAAG,CAACK,yBAAyB,KAAK,MAAA;QAC7DC,MAAAA,EAAQ;AACNC,YAAAA,SAAAA,EAAW,CAACC,IAAAA,GAAAA;AACV,gBAAA,OAAOf,QAAAA,EAAUa,MAAAA,GAASE,IAAAA,CAAK,KAAK,IAAA;AACtC,YAAA;AACF,SAAA;;QAEAf,QAAAA,EAAU;YACRgB,GAAAA,EAAK,KAAA;YACLC,UAAAA,EAAY,YAAA;YACZC,gBAAAA,EAAkB,kBAAA;AAClB;;;AAGC,UACDJ,WAAW,IAAM;AACnB,SAAA;QACAK,WAAAA,EAAa,WAAA;QACbC,KAAAA,EAAO;YACLC,GAAAA,EAAK,KAAA;YACLC,SAAAA,EAAW;AACb,SAAA
|
|
1
|
+
{"version":3,"file":"render.js","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.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: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\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 // @ts-expect-error – there's pollution from the global scope of Node.\n ai: {\n enabled: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n ai: {\n enabled: boolean;\n };\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags, ai },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\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 // @ts-expect-error – there's pollution from the global scope of Node.\n window.strapi.ai = ai;\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 config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\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 if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","ai","enabled","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":"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"}
|
|
@@ -37,6 +37,7 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
|
|
|
37
37
|
nps: false,
|
|
38
38
|
promoteEE: true
|
|
39
39
|
},
|
|
40
|
+
// @ts-expect-error – there's pollution from the global scope of Node.
|
|
40
41
|
ai: {
|
|
41
42
|
enabled: true
|
|
42
43
|
}
|
|
@@ -52,6 +53,7 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
|
|
|
52
53
|
isEnabled: (featureName)=>features.some((feature)=>feature.name === featureName)
|
|
53
54
|
};
|
|
54
55
|
window.strapi.projectType = isEE ? 'Enterprise' : 'Community';
|
|
56
|
+
// @ts-expect-error – there's pollution from the global scope of Node.
|
|
55
57
|
window.strapi.ai = ai;
|
|
56
58
|
} catch (err) {
|
|
57
59
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.mjs","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.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: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\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 ai: {\n enabled: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n ai: {\n enabled: boolean;\n };\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags, ai },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\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 window.strapi.ai = ai;\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 config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\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 if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","ai","enabled","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":";;;;;AAmBA,MAAMA,WAAAA,GAAc,OAClBC,SAAAA,EACA,EAAEC,OAAO,EAAEC,cAAc,EAAEC,QAAQ,EAAmB,GAAA;AAEtD,IAAA,IAAI,CAACH,SAAAA,EAAW;AACd,QAAA,MAAM,IAAII,KAAAA,CAAM,yEAAA,CAAA;AAClB,IAAA;AAEAC,IAAAA,MAAAA,CAAOC,MAAM,GAAG;AACd;;;;;AAKC,QACDC,UAAAA,EAAYC,iBAAAA,CAAkBC,OAAAA,CAAQC,GAAG,CAACC,wBAAwB,CAAA;QAClEC,IAAAA,EAAM,KAAA;QACNC,OAAAA,EAAS,KAAA;AACTC,QAAAA,iBAAAA,EAAmBL,OAAAA,CAAQC,GAAG,CAACK,yBAAyB,KAAK,MAAA;QAC7DC,MAAAA,EAAQ;AACNC,YAAAA,SAAAA,EAAW,CAACC,IAAAA,GAAAA;AACV,gBAAA,OAAOf,QAAAA,EAAUa,MAAAA,GAASE,IAAAA,CAAK,KAAK,IAAA;AACtC,YAAA;AACF,SAAA;;QAEAf,QAAAA,EAAU;YACRgB,GAAAA,EAAK,KAAA;YACLC,UAAAA,EAAY,YAAA;YACZC,gBAAAA,EAAkB,kBAAA;AAClB;;;AAGC,UACDJ,WAAW,IAAM;AACnB,SAAA;QACAK,WAAAA,EAAa,WAAA;QACbC,KAAAA,EAAO;YACLC,GAAAA,EAAK,KAAA;YACLC,SAAAA,EAAW;AACb,SAAA
|
|
1
|
+
{"version":3,"file":"render.mjs","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.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: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\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 // @ts-expect-error – there's pollution from the global scope of Node.\n ai: {\n enabled: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n ai: {\n enabled: boolean;\n };\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags, ai },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\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 // @ts-expect-error – there's pollution from the global scope of Node.\n window.strapi.ai = ai;\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 config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\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 if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","ai","enabled","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sources":["../../../../../admin/src/services/api.ts"],"sourcesContent":["import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { fetchBaseQuery } from '../utils/baseQuery';\n\n/**\n * @public\n * @description This is the redux toolkit api for the admin panel, users\n * should use a combination of `enhanceEndpoints` to add their TagTypes\n * to utilise in their `injectEndpoints` construction for automatic cache\n * re-validation. We specifically do not store any tagTypes by default leaving\n * the API surface as small as possible. None of the data-fetching looks for the\n * StrapiApp are stored here either.\n */\nconst adminApi = createApi({\n reducerPath: 'adminApi',\n baseQuery: fetchBaseQuery(),\n tagTypes: ['GuidedTourMeta', 'HomepageKeyStatistics', '
|
|
1
|
+
{"version":3,"file":"api.js","sources":["../../../../../admin/src/services/api.ts"],"sourcesContent":["import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { fetchBaseQuery } from '../utils/baseQuery';\n\n/**\n * @public\n * @description This is the redux toolkit api for the admin panel, users\n * should use a combination of `enhanceEndpoints` to add their TagTypes\n * to utilise in their `injectEndpoints` construction for automatic cache\n * re-validation. We specifically do not store any tagTypes by default leaving\n * the API surface as small as possible. None of the data-fetching looks for the\n * StrapiApp are stored here either.\n */\nconst adminApi = createApi({\n reducerPath: 'adminApi',\n baseQuery: fetchBaseQuery(),\n tagTypes: ['GuidedTourMeta', 'HomepageKeyStatistics', 'AiUsage', 'AiFeatureConfig'],\n endpoints: () => ({}),\n});\n\nexport { adminApi };\n"],"names":["adminApi","createApi","reducerPath","baseQuery","fetchBaseQuery","tagTypes","endpoints"],"mappings":";;;;;AAIA;;;;;;;;IASA,MAAMA,WAAWC,eAAAA,CAAU;IACzBC,WAAAA,EAAa,UAAA;IACbC,SAAAA,EAAWC,wBAAAA,EAAAA;IACXC,QAAAA,EAAU;AAAC,QAAA,gBAAA;AAAkB,QAAA,uBAAA;AAAyB,QAAA,SAAA;AAAW,QAAA;AAAkB,KAAA;IACnFC,SAAAA,EAAW,KAAO,EAAC;AACrB,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.mjs","sources":["../../../../../admin/src/services/api.ts"],"sourcesContent":["import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { fetchBaseQuery } from '../utils/baseQuery';\n\n/**\n * @public\n * @description This is the redux toolkit api for the admin panel, users\n * should use a combination of `enhanceEndpoints` to add their TagTypes\n * to utilise in their `injectEndpoints` construction for automatic cache\n * re-validation. We specifically do not store any tagTypes by default leaving\n * the API surface as small as possible. None of the data-fetching looks for the\n * StrapiApp are stored here either.\n */\nconst adminApi = createApi({\n reducerPath: 'adminApi',\n baseQuery: fetchBaseQuery(),\n tagTypes: ['GuidedTourMeta', 'HomepageKeyStatistics', '
|
|
1
|
+
{"version":3,"file":"api.mjs","sources":["../../../../../admin/src/services/api.ts"],"sourcesContent":["import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { fetchBaseQuery } from '../utils/baseQuery';\n\n/**\n * @public\n * @description This is the redux toolkit api for the admin panel, users\n * should use a combination of `enhanceEndpoints` to add their TagTypes\n * to utilise in their `injectEndpoints` construction for automatic cache\n * re-validation. We specifically do not store any tagTypes by default leaving\n * the API surface as small as possible. None of the data-fetching looks for the\n * StrapiApp are stored here either.\n */\nconst adminApi = createApi({\n reducerPath: 'adminApi',\n baseQuery: fetchBaseQuery(),\n tagTypes: ['GuidedTourMeta', 'HomepageKeyStatistics', 'AiUsage', 'AiFeatureConfig'],\n endpoints: () => ({}),\n});\n\nexport { adminApi };\n"],"names":["adminApi","createApi","reducerPath","baseQuery","fetchBaseQuery","tagTypes","endpoints"],"mappings":";;;AAIA;;;;;;;;IASA,MAAMA,WAAWC,SAAAA,CAAU;IACzBC,WAAAA,EAAa,UAAA;IACbC,SAAAA,EAAWC,cAAAA,EAAAA;IACXC,QAAAA,EAAU;AAAC,QAAA,gBAAA;AAAkB,QAAA,uBAAA;AAAyB,QAAA,SAAA;AAAW,QAAA;AAAkB,KAAA;IACnFC,SAAAA,EAAW,KAAO,EAAC;AACrB,CAAA;;;;"}
|