@strapi/i18n 0.0.0-experimental.39c0188c3aa01bec7b64b948211571d5159e811d → 0.0.0-experimental.3b5c5bba2cb7af3269b82eddcc3fb81172ce3ba4
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/components/BulkLocaleActionModal.js +262 -0
- package/dist/admin/components/BulkLocaleActionModal.js.map +1 -0
- package/dist/admin/components/BulkLocaleActionModal.mjs +260 -0
- package/dist/admin/components/BulkLocaleActionModal.mjs.map +1 -0
- package/dist/admin/components/CMHeaderActions.js +721 -0
- package/dist/admin/components/CMHeaderActions.js.map +1 -0
- package/dist/admin/components/CMHeaderActions.mjs +696 -0
- package/dist/admin/components/CMHeaderActions.mjs.map +1 -0
- package/dist/admin/components/CMListViewModalsAdditionalInformation.js +69 -0
- package/dist/admin/components/CMListViewModalsAdditionalInformation.js.map +1 -0
- package/dist/admin/components/CMListViewModalsAdditionalInformation.mjs +65 -0
- package/dist/admin/components/CMListViewModalsAdditionalInformation.mjs.map +1 -0
- package/dist/admin/components/CheckboxConfirmation.js +155 -0
- package/dist/admin/components/CheckboxConfirmation.js.map +1 -0
- package/dist/admin/components/CheckboxConfirmation.mjs +134 -0
- package/dist/admin/components/CheckboxConfirmation.mjs.map +1 -0
- package/dist/admin/components/CreateLocale.js +395 -0
- package/dist/admin/components/CreateLocale.js.map +1 -0
- package/dist/admin/components/CreateLocale.mjs +369 -0
- package/dist/admin/components/CreateLocale.mjs.map +1 -0
- package/dist/admin/components/DeleteLocale.js +90 -0
- package/dist/admin/components/DeleteLocale.js.map +1 -0
- package/dist/admin/components/DeleteLocale.mjs +69 -0
- package/dist/admin/components/DeleteLocale.mjs.map +1 -0
- package/dist/admin/components/EditLocale.js +212 -0
- package/dist/admin/components/EditLocale.js.map +1 -0
- package/dist/admin/components/EditLocale.mjs +190 -0
- package/dist/admin/components/EditLocale.mjs.map +1 -0
- package/dist/admin/components/LocaleListCell.js +82 -0
- package/dist/admin/components/LocaleListCell.js.map +1 -0
- package/dist/admin/components/LocaleListCell.mjs +80 -0
- package/dist/admin/components/LocaleListCell.mjs.map +1 -0
- package/dist/admin/components/LocalePicker.js +98 -0
- package/dist/admin/components/LocalePicker.js.map +1 -0
- package/dist/admin/components/LocalePicker.mjs +77 -0
- package/dist/admin/components/LocalePicker.mjs.map +1 -0
- package/dist/admin/components/LocaleTable.js +143 -0
- package/dist/admin/components/LocaleTable.js.map +1 -0
- package/dist/admin/components/LocaleTable.mjs +122 -0
- package/dist/admin/components/LocaleTable.mjs.map +1 -0
- package/dist/admin/constants.js +37 -0
- package/dist/admin/constants.js.map +1 -0
- package/dist/admin/constants.mjs +35 -0
- package/dist/admin/constants.mjs.map +1 -0
- package/dist/admin/contentManagerHooks/editView.js +106 -0
- package/dist/admin/contentManagerHooks/editView.js.map +1 -0
- package/dist/admin/contentManagerHooks/editView.mjs +85 -0
- package/dist/admin/contentManagerHooks/editView.mjs.map +1 -0
- package/dist/admin/contentManagerHooks/listView.js +43 -0
- package/dist/admin/contentManagerHooks/listView.js.map +1 -0
- package/dist/admin/contentManagerHooks/listView.mjs +41 -0
- package/dist/admin/contentManagerHooks/listView.mjs.map +1 -0
- package/dist/admin/contentReleasesHooks/releaseDetailsView.js +20 -0
- package/dist/admin/contentReleasesHooks/releaseDetailsView.js.map +1 -0
- package/dist/admin/contentReleasesHooks/releaseDetailsView.mjs +18 -0
- package/dist/admin/contentReleasesHooks/releaseDetailsView.mjs.map +1 -0
- package/dist/admin/hooks/useI18n.js +78 -0
- package/dist/admin/hooks/useI18n.js.map +1 -0
- package/dist/admin/hooks/useI18n.mjs +57 -0
- package/dist/admin/hooks/useI18n.mjs.map +1 -0
- package/dist/admin/index.js +220 -16
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +202 -15
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/middlewares/extendCTBAttributeInitialData.js +71 -0
- package/dist/admin/middlewares/extendCTBAttributeInitialData.js.map +1 -0
- package/dist/admin/middlewares/extendCTBAttributeInitialData.mjs +69 -0
- package/dist/admin/middlewares/extendCTBAttributeInitialData.mjs.map +1 -0
- package/dist/admin/middlewares/extendCTBInitialData.js +40 -0
- package/dist/admin/middlewares/extendCTBInitialData.js.map +1 -0
- package/dist/admin/middlewares/extendCTBInitialData.mjs +38 -0
- package/dist/admin/middlewares/extendCTBInitialData.mjs.map +1 -0
- package/dist/admin/middlewares/rbac-middleware.js +49 -0
- package/dist/admin/middlewares/rbac-middleware.js.map +1 -0
- package/dist/admin/middlewares/rbac-middleware.mjs +28 -0
- package/dist/admin/middlewares/rbac-middleware.mjs.map +1 -0
- package/dist/admin/pages/SettingsPage.js +107 -0
- package/dist/admin/pages/SettingsPage.js.map +1 -0
- package/dist/admin/pages/SettingsPage.mjs +85 -0
- package/dist/admin/pages/SettingsPage.mjs.map +1 -0
- package/dist/admin/pluginId.js +6 -0
- package/dist/admin/pluginId.js.map +1 -0
- package/dist/admin/pluginId.mjs +4 -0
- package/dist/admin/pluginId.mjs.map +1 -0
- package/dist/admin/services/api.js +12 -0
- package/dist/admin/services/api.js.map +1 -0
- package/dist/admin/services/api.mjs +10 -0
- package/dist/admin/services/api.mjs.map +1 -0
- package/dist/admin/services/locales.js +70 -0
- package/dist/admin/services/locales.js.map +1 -0
- package/dist/admin/services/locales.mjs +64 -0
- package/dist/admin/services/locales.mjs.map +1 -0
- package/dist/admin/services/relations.js +23 -0
- package/dist/admin/services/relations.js.map +1 -0
- package/dist/admin/services/relations.mjs +21 -0
- package/dist/admin/services/relations.mjs.map +1 -0
- package/dist/admin/src/utils/schemas.d.ts +642 -16
- package/dist/admin/{chunks/de-nEMWvIiY.js → translations/de.json.js} +2 -2
- package/dist/admin/translations/de.json.js.map +1 -0
- package/dist/admin/{chunks/de-Cm8mYdaO.js → translations/de.json.mjs} +1 -1
- package/dist/admin/translations/de.json.mjs.map +1 -0
- package/dist/admin/{chunks/dk-CYATLPVe.js → translations/dk.json.js} +2 -2
- package/dist/admin/translations/dk.json.js.map +1 -0
- package/dist/admin/{chunks/dk-BeUFOegB.js → translations/dk.json.mjs} +1 -1
- package/dist/admin/translations/dk.json.mjs.map +1 -0
- package/dist/admin/{chunks/en-CG5cUCbD.js → translations/en.json.js} +2 -2
- package/dist/admin/translations/en.json.js.map +1 -0
- package/dist/admin/{chunks/en-eWSaCeOb.js → translations/en.json.mjs} +1 -1
- package/dist/admin/translations/en.json.mjs.map +1 -0
- package/dist/admin/{chunks/es-CWsogTGm.js → translations/es.json.js} +2 -2
- package/dist/admin/translations/es.json.js.map +1 -0
- package/dist/admin/{chunks/es-DqF_IdAc.js → translations/es.json.mjs} +1 -1
- package/dist/admin/translations/es.json.mjs.map +1 -0
- package/dist/admin/{chunks/fr-CC7UFcYd.js → translations/fr.json.js} +2 -2
- package/dist/admin/translations/fr.json.js.map +1 -0
- package/dist/admin/{chunks/fr-CyARbZ3c.js → translations/fr.json.mjs} +1 -1
- package/dist/admin/translations/fr.json.mjs.map +1 -0
- package/dist/admin/{chunks/ko-XwGmfhoq.js → translations/ko.json.js} +2 -2
- package/dist/admin/translations/ko.json.js.map +1 -0
- package/dist/admin/{chunks/ko-Ax4NSedM.js → translations/ko.json.mjs} +1 -1
- package/dist/admin/translations/ko.json.mjs.map +1 -0
- package/dist/admin/{chunks/pl-B_vzY_ZB.js → translations/pl.json.js} +2 -2
- package/dist/admin/translations/pl.json.js.map +1 -0
- package/dist/admin/{chunks/pl-B-aqvMqL.js → translations/pl.json.mjs} +1 -1
- package/dist/admin/translations/pl.json.mjs.map +1 -0
- package/dist/admin/{chunks/ru-WzHcJV1f.js → translations/ru.json.js} +2 -2
- package/dist/admin/translations/ru.json.js.map +1 -0
- package/dist/admin/{chunks/ru-VkPjQ-Sk.js → translations/ru.json.mjs} +1 -1
- package/dist/admin/translations/ru.json.mjs.map +1 -0
- package/dist/admin/{chunks/tr-CcWp6u3w.js → translations/tr.json.js} +2 -2
- package/dist/admin/translations/tr.json.js.map +1 -0
- package/dist/admin/{chunks/tr-DcTR88c9.js → translations/tr.json.mjs} +1 -1
- package/dist/admin/translations/tr.json.mjs.map +1 -0
- package/dist/admin/translations/uk.json.js +82 -0
- package/dist/admin/translations/uk.json.js.map +1 -0
- package/dist/admin/translations/uk.json.mjs +80 -0
- package/dist/admin/translations/uk.json.mjs.map +1 -0
- package/dist/admin/{chunks/zh-Hans-DnU2bhri.js → translations/zh-Hans.json.js} +2 -2
- package/dist/admin/translations/zh-Hans.json.js.map +1 -0
- package/dist/admin/{chunks/zh-Hans-L3wsRegj.js → translations/zh-Hans.json.mjs} +1 -1
- package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
- package/dist/admin/{chunks/zh-C9So4SGq.js → translations/zh.json.js} +2 -2
- package/dist/admin/translations/zh.json.js.map +1 -0
- package/dist/admin/{chunks/zh-RZyMiPIs.js → translations/zh.json.mjs} +1 -1
- package/dist/admin/translations/zh.json.mjs.map +1 -0
- package/dist/admin/utils/baseQuery.js +8 -0
- package/dist/admin/utils/baseQuery.js.map +1 -0
- package/dist/admin/utils/baseQuery.mjs +6 -0
- package/dist/admin/utils/baseQuery.mjs.map +1 -0
- package/dist/admin/utils/clean.js +70 -0
- package/dist/admin/utils/clean.js.map +1 -0
- package/dist/admin/utils/clean.mjs +68 -0
- package/dist/admin/utils/clean.mjs.map +1 -0
- package/dist/admin/utils/fields.js +34 -0
- package/dist/admin/utils/fields.js.map +1 -0
- package/dist/admin/utils/fields.mjs +31 -0
- package/dist/admin/utils/fields.mjs.map +1 -0
- package/dist/admin/utils/getTranslation.js +8 -0
- package/dist/admin/utils/getTranslation.js.map +1 -0
- package/dist/admin/utils/getTranslation.mjs +6 -0
- package/dist/admin/utils/getTranslation.mjs.map +1 -0
- package/dist/admin/utils/prefixPluginTranslations.js +11 -0
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
- package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
- package/dist/admin/utils/schemas.js +74 -0
- package/dist/admin/utils/schemas.js.map +1 -0
- package/dist/admin/utils/schemas.mjs +72 -0
- package/dist/admin/utils/schemas.mjs.map +1 -0
- package/dist/admin/utils/strings.js +6 -0
- package/dist/admin/utils/strings.js.map +1 -0
- package/dist/admin/utils/strings.mjs +4 -0
- package/dist/admin/utils/strings.mjs.map +1 -0
- package/dist/server/bootstrap.js +79 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/bootstrap.mjs +77 -0
- package/dist/server/bootstrap.mjs.map +1 -0
- package/dist/server/constants/index.js +29 -0
- package/dist/server/constants/index.js.map +1 -0
- package/dist/server/constants/index.mjs +25 -0
- package/dist/server/constants/index.mjs.map +1 -0
- package/dist/server/constants/iso-locales.json.js +2423 -0
- package/dist/server/constants/iso-locales.json.js.map +1 -0
- package/dist/server/constants/iso-locales.json.mjs +2421 -0
- package/dist/server/constants/iso-locales.json.mjs.map +1 -0
- package/dist/server/content-types/index.js +10 -0
- package/dist/server/content-types/index.js.map +1 -0
- package/dist/server/content-types/index.mjs +8 -0
- package/dist/server/content-types/index.mjs.map +1 -0
- package/dist/server/content-types/locale/index.js +10 -0
- package/dist/server/content-types/locale/index.js.map +1 -0
- package/dist/server/content-types/locale/index.mjs +8 -0
- package/dist/server/content-types/locale/index.mjs.map +1 -0
- package/dist/server/content-types/locale/schema.json.js +46 -0
- package/dist/server/content-types/locale/schema.json.js.map +1 -0
- package/dist/server/content-types/locale/schema.json.mjs +38 -0
- package/dist/server/content-types/locale/schema.json.mjs.map +1 -0
- package/dist/server/controllers/content-types.js +76 -0
- package/dist/server/controllers/content-types.js.map +1 -0
- package/dist/server/controllers/content-types.mjs +74 -0
- package/dist/server/controllers/content-types.mjs.map +1 -0
- package/dist/server/controllers/index.js +14 -0
- package/dist/server/controllers/index.js.map +1 -0
- package/dist/server/controllers/index.mjs +12 -0
- package/dist/server/controllers/index.mjs.map +1 -0
- package/dist/server/controllers/iso-locales.js +13 -0
- package/dist/server/controllers/iso-locales.js.map +1 -0
- package/dist/server/controllers/iso-locales.mjs +11 -0
- package/dist/server/controllers/iso-locales.mjs.map +1 -0
- package/dist/server/controllers/locales.js +108 -0
- package/dist/server/controllers/locales.js.map +1 -0
- package/dist/server/controllers/locales.mjs +87 -0
- package/dist/server/controllers/locales.mjs.map +1 -0
- package/dist/server/controllers/validate-locale-creation.js +47 -0
- package/dist/server/controllers/validate-locale-creation.js.map +1 -0
- package/dist/server/controllers/validate-locale-creation.mjs +45 -0
- package/dist/server/controllers/validate-locale-creation.mjs.map +1 -0
- package/dist/server/domain/locale.js +11 -0
- package/dist/server/domain/locale.js.map +1 -0
- package/dist/server/domain/locale.mjs +9 -0
- package/dist/server/domain/locale.mjs.map +1 -0
- package/dist/server/graphql.js +115 -0
- package/dist/server/graphql.js.map +1 -0
- package/dist/server/graphql.mjs +113 -0
- package/dist/server/graphql.mjs.map +1 -0
- package/dist/server/index.js +10 -3712
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +7 -3691
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/register.js +79 -0
- package/dist/server/register.js.map +1 -0
- package/dist/server/register.mjs +77 -0
- package/dist/server/register.mjs.map +1 -0
- package/dist/server/routes/admin.js +102 -0
- package/dist/server/routes/admin.js.map +1 -0
- package/dist/server/routes/admin.mjs +100 -0
- package/dist/server/routes/admin.mjs.map +1 -0
- package/dist/server/routes/content-api.js +15 -0
- package/dist/server/routes/content-api.js.map +1 -0
- package/dist/server/routes/content-api.mjs +13 -0
- package/dist/server/routes/content-api.mjs.map +1 -0
- package/dist/server/routes/index.js +12 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/index.mjs +10 -0
- package/dist/server/routes/index.mjs.map +1 -0
- package/dist/server/services/content-types.js +157 -0
- package/dist/server/services/content-types.js.map +1 -0
- package/dist/server/services/content-types.mjs +155 -0
- package/dist/server/services/content-types.mjs.map +1 -0
- package/dist/server/services/index.js +22 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/index.mjs +20 -0
- package/dist/server/services/index.mjs.map +1 -0
- package/dist/server/services/iso-locales.js +12 -0
- package/dist/server/services/iso-locales.js.map +1 -0
- package/dist/server/services/iso-locales.mjs +10 -0
- package/dist/server/services/iso-locales.mjs.map +1 -0
- package/dist/server/services/locales.js +114 -0
- package/dist/server/services/locales.js.map +1 -0
- package/dist/server/services/locales.mjs +112 -0
- package/dist/server/services/locales.mjs.map +1 -0
- package/dist/server/services/localizations.js +68 -0
- package/dist/server/services/localizations.js.map +1 -0
- package/dist/server/services/localizations.mjs +66 -0
- package/dist/server/services/localizations.mjs.map +1 -0
- package/dist/server/services/metrics.js +30 -0
- package/dist/server/services/metrics.js.map +1 -0
- package/dist/server/services/metrics.mjs +28 -0
- package/dist/server/services/metrics.mjs.map +1 -0
- package/dist/server/services/permissions/actions.js +136 -0
- package/dist/server/services/permissions/actions.js.map +1 -0
- package/dist/server/services/permissions/actions.mjs +134 -0
- package/dist/server/services/permissions/actions.mjs.map +1 -0
- package/dist/server/services/permissions/engine.js +52 -0
- package/dist/server/services/permissions/engine.js.map +1 -0
- package/dist/server/services/permissions/engine.mjs +50 -0
- package/dist/server/services/permissions/engine.mjs.map +1 -0
- package/dist/server/services/permissions/sections-builder.js +45 -0
- package/dist/server/services/permissions/sections-builder.js.map +1 -0
- package/dist/server/services/permissions/sections-builder.mjs +43 -0
- package/dist/server/services/permissions/sections-builder.mjs.map +1 -0
- package/dist/server/services/permissions.js +14 -0
- package/dist/server/services/permissions.js.map +1 -0
- package/dist/server/services/permissions.mjs +12 -0
- package/dist/server/services/permissions.mjs.map +1 -0
- package/dist/server/services/sanitize/index.js +34 -0
- package/dist/server/services/sanitize/index.js.map +1 -0
- package/dist/server/services/sanitize/index.mjs +32 -0
- package/dist/server/services/sanitize/index.mjs.map +1 -0
- package/dist/server/utils/index.js +16 -0
- package/dist/server/utils/index.js.map +1 -0
- package/dist/server/utils/index.mjs +13 -0
- package/dist/server/utils/index.mjs.map +1 -0
- package/dist/server/validation/content-types.js +18 -0
- package/dist/server/validation/content-types.js.map +1 -0
- package/dist/server/validation/content-types.mjs +16 -0
- package/dist/server/validation/content-types.mjs.map +1 -0
- package/dist/server/validation/locales.js +23 -0
- package/dist/server/validation/locales.js.map +1 -0
- package/dist/server/validation/locales.mjs +20 -0
- package/dist/server/validation/locales.mjs.map +1 -0
- package/package.json +8 -8
- package/dist/admin/chunks/SettingsPage-B6ikxVOg.js +0 -820
- package/dist/admin/chunks/SettingsPage-B6ikxVOg.js.map +0 -1
- package/dist/admin/chunks/SettingsPage-Kg4GAThm.js +0 -797
- package/dist/admin/chunks/SettingsPage-Kg4GAThm.js.map +0 -1
- package/dist/admin/chunks/de-Cm8mYdaO.js.map +0 -1
- package/dist/admin/chunks/de-nEMWvIiY.js.map +0 -1
- package/dist/admin/chunks/dk-BeUFOegB.js.map +0 -1
- package/dist/admin/chunks/dk-CYATLPVe.js.map +0 -1
- package/dist/admin/chunks/en-CG5cUCbD.js.map +0 -1
- package/dist/admin/chunks/en-eWSaCeOb.js.map +0 -1
- package/dist/admin/chunks/es-CWsogTGm.js.map +0 -1
- package/dist/admin/chunks/es-DqF_IdAc.js.map +0 -1
- package/dist/admin/chunks/fr-CC7UFcYd.js.map +0 -1
- package/dist/admin/chunks/fr-CyARbZ3c.js.map +0 -1
- package/dist/admin/chunks/index-Dch-2xao.js +0 -2035
- package/dist/admin/chunks/index-Dch-2xao.js.map +0 -1
- package/dist/admin/chunks/index-DyvbIjH9.js +0 -2006
- package/dist/admin/chunks/index-DyvbIjH9.js.map +0 -1
- package/dist/admin/chunks/ko-Ax4NSedM.js.map +0 -1
- package/dist/admin/chunks/ko-XwGmfhoq.js.map +0 -1
- package/dist/admin/chunks/pl-B-aqvMqL.js.map +0 -1
- package/dist/admin/chunks/pl-B_vzY_ZB.js.map +0 -1
- package/dist/admin/chunks/ru-VkPjQ-Sk.js.map +0 -1
- package/dist/admin/chunks/ru-WzHcJV1f.js.map +0 -1
- package/dist/admin/chunks/tr-CcWp6u3w.js.map +0 -1
- package/dist/admin/chunks/tr-DcTR88c9.js.map +0 -1
- package/dist/admin/chunks/zh-C9So4SGq.js.map +0 -1
- package/dist/admin/chunks/zh-Hans-DnU2bhri.js.map +0 -1
- package/dist/admin/chunks/zh-Hans-L3wsRegj.js.map +0 -1
- package/dist/admin/chunks/zh-RZyMiPIs.js.map +0 -1
@@ -0,0 +1,68 @@
|
|
1
|
+
const cleanData = (data, schema, components)=>{
|
2
|
+
const cleanedData = removeFields(data, [
|
3
|
+
'createdAt',
|
4
|
+
'createdBy',
|
5
|
+
'updatedAt',
|
6
|
+
'updatedBy',
|
7
|
+
'id',
|
8
|
+
'documentId',
|
9
|
+
'publishedAt',
|
10
|
+
'strapi_stage',
|
11
|
+
'strapi_assignee',
|
12
|
+
'locale',
|
13
|
+
'status'
|
14
|
+
]);
|
15
|
+
const cleanedDataWithoutPasswordAndRelation = recursiveRemoveFieldTypes(cleanedData, schema, components, [
|
16
|
+
'relation',
|
17
|
+
'password'
|
18
|
+
]);
|
19
|
+
return cleanedDataWithoutPasswordAndRelation;
|
20
|
+
};
|
21
|
+
const removeFields = (data, fields)=>{
|
22
|
+
return Object.keys(data).reduce((acc, current)=>{
|
23
|
+
if (fields.includes(current)) {
|
24
|
+
return acc;
|
25
|
+
}
|
26
|
+
acc[current] = data[current];
|
27
|
+
return acc;
|
28
|
+
}, {});
|
29
|
+
};
|
30
|
+
const recursiveRemoveFieldTypes = (data, schema, components, fields)=>{
|
31
|
+
return Object.keys(data).reduce((acc, current)=>{
|
32
|
+
const attribute = schema.attributes[current] ?? {
|
33
|
+
type: undefined
|
34
|
+
};
|
35
|
+
if (fields.includes(attribute.type)) {
|
36
|
+
return acc;
|
37
|
+
}
|
38
|
+
if (attribute.type === 'dynamiczone') {
|
39
|
+
acc[current] = data[current].map((componentValue, index)=>{
|
40
|
+
const { id: _, ...rest } = recursiveRemoveFieldTypes(componentValue, components[componentValue.__component], components, fields);
|
41
|
+
return {
|
42
|
+
...rest,
|
43
|
+
__temp_key__: index + 1
|
44
|
+
};
|
45
|
+
});
|
46
|
+
} else if (attribute.type === 'component') {
|
47
|
+
const { repeatable, component } = attribute;
|
48
|
+
if (repeatable) {
|
49
|
+
acc[current] = (data[current] ?? []).map((compoData, index)=>{
|
50
|
+
const { id: _, ...rest } = recursiveRemoveFieldTypes(compoData, components[component], components, fields);
|
51
|
+
return {
|
52
|
+
...rest,
|
53
|
+
__temp_key__: index + 1
|
54
|
+
};
|
55
|
+
});
|
56
|
+
} else {
|
57
|
+
const { id: _, ...rest } = recursiveRemoveFieldTypes(data[current] ?? {}, components[component], components, fields);
|
58
|
+
acc[current] = rest;
|
59
|
+
}
|
60
|
+
} else {
|
61
|
+
acc[current] = data[current];
|
62
|
+
}
|
63
|
+
return acc;
|
64
|
+
}, {});
|
65
|
+
};
|
66
|
+
|
67
|
+
export { cleanData };
|
68
|
+
//# sourceMappingURL=clean.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"clean.mjs","sources":["../../../admin/src/utils/clean.ts"],"sourcesContent":["import type { Schema } from '@strapi/types';\n\ntype Data = Record<keyof Schema.ContentType['attributes'], any>;\n\nconst cleanData = (\n data: Data,\n schema: Schema.ContentType,\n components: Record<string, Schema.Component>\n) => {\n const cleanedData = removeFields(data, [\n 'createdAt',\n 'createdBy',\n 'updatedAt',\n 'updatedBy',\n 'id',\n 'documentId',\n 'publishedAt',\n 'strapi_stage',\n 'strapi_assignee',\n 'locale',\n 'status',\n ]);\n\n const cleanedDataWithoutPasswordAndRelation = recursiveRemoveFieldTypes(\n cleanedData,\n schema,\n components,\n ['relation', 'password']\n );\n\n return cleanedDataWithoutPasswordAndRelation;\n};\n\nconst removeFields = (data: Data, fields: Array<keyof Schema.ContentType['attributes']>) => {\n return Object.keys(data).reduce((acc, current) => {\n if (fields.includes(current)) {\n return acc;\n }\n acc[current] = data[current];\n return acc;\n }, {} as Data);\n};\n\nconst recursiveRemoveFieldTypes = (\n data: Data,\n schema: Schema.Schema,\n components: Record<string, Schema.Component>,\n fields: Array<keyof Schema.ContentType['attributes']>\n) => {\n return Object.keys(data).reduce((acc, current) => {\n const attribute = schema.attributes[current] ?? { type: undefined };\n\n if (fields.includes(attribute.type)) {\n return acc;\n }\n\n if (attribute.type === 'dynamiczone') {\n acc[current] = data[current].map((componentValue: any, index: number) => {\n const { id: _, ...rest } = recursiveRemoveFieldTypes(\n componentValue,\n components[componentValue.__component],\n components,\n fields\n );\n\n return {\n ...rest,\n __temp_key__: index + 1,\n };\n });\n } else if (attribute.type === 'component') {\n const { repeatable, component } = attribute;\n\n if (repeatable) {\n acc[current] = (data[current] ?? []).map((compoData: any, index: number) => {\n const { id: _, ...rest } = recursiveRemoveFieldTypes(\n compoData,\n components[component],\n components,\n fields\n );\n\n return {\n ...rest,\n __temp_key__: index + 1,\n };\n });\n } else {\n const { id: _, ...rest } = recursiveRemoveFieldTypes(\n data[current] ?? {},\n components[component],\n components,\n fields\n );\n\n acc[current] = rest;\n }\n } else {\n acc[current] = data[current];\n }\n\n return acc;\n }, {} as any);\n};\n\nexport { cleanData };\n"],"names":["cleanData","data","schema","components","cleanedData","removeFields","cleanedDataWithoutPasswordAndRelation","recursiveRemoveFieldTypes","fields","Object","keys","reduce","acc","current","includes","attribute","attributes","type","undefined","map","componentValue","index","id","_","rest","__component","__temp_key__","repeatable","component","compoData"],"mappings":"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"}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var has = require('lodash/has');
|
4
|
+
|
5
|
+
const LOCALIZED_FIELDS = [
|
6
|
+
'biginteger',
|
7
|
+
'boolean',
|
8
|
+
'component',
|
9
|
+
'date',
|
10
|
+
'datetime',
|
11
|
+
'decimal',
|
12
|
+
'dynamiczone',
|
13
|
+
'email',
|
14
|
+
'enumeration',
|
15
|
+
'float',
|
16
|
+
'integer',
|
17
|
+
'json',
|
18
|
+
'media',
|
19
|
+
'number',
|
20
|
+
'password',
|
21
|
+
'richtext',
|
22
|
+
'blocks',
|
23
|
+
'string',
|
24
|
+
'text',
|
25
|
+
'time'
|
26
|
+
];
|
27
|
+
const doesPluginOptionsHaveI18nLocalized = (opts)=>has(opts, [
|
28
|
+
'i18n',
|
29
|
+
'localized'
|
30
|
+
]);
|
31
|
+
|
32
|
+
exports.LOCALIZED_FIELDS = LOCALIZED_FIELDS;
|
33
|
+
exports.doesPluginOptionsHaveI18nLocalized = doesPluginOptionsHaveI18nLocalized;
|
34
|
+
//# sourceMappingURL=fields.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"fields.js","sources":["../../../admin/src/utils/fields.ts"],"sourcesContent":["import has from 'lodash/has';\n\nconst LOCALIZED_FIELDS = [\n 'biginteger',\n 'boolean',\n 'component',\n 'date',\n 'datetime',\n 'decimal',\n 'dynamiczone',\n 'email',\n 'enumeration',\n 'float',\n 'integer',\n 'json',\n 'media',\n 'number',\n 'password',\n 'richtext',\n 'blocks',\n 'string',\n 'text',\n 'time',\n];\n\nconst doesPluginOptionsHaveI18nLocalized = (\n opts?: object\n): opts is { i18n: { localized: boolean } } => has(opts, ['i18n', 'localized']);\n\nexport { LOCALIZED_FIELDS, doesPluginOptionsHaveI18nLocalized };\n"],"names":["LOCALIZED_FIELDS","doesPluginOptionsHaveI18nLocalized","opts","has"],"mappings":";;;;AAEA,MAAMA,gBAAmB,GAAA;AACvB,IAAA,YAAA;AACA,IAAA,SAAA;AACA,IAAA,WAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,SAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,SAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,QAAA;AACA,IAAA,UAAA;AACA,IAAA,UAAA;AACA,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA;AACD;AAED,MAAMC,kCAAqC,GAAA,CACzCC,IAC6CC,GAAAA,GAAAA,CAAID,IAAM,EAAA;AAAC,QAAA,MAAA;AAAQ,QAAA;AAAY,KAAA;;;;;"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import has from 'lodash/has';
|
2
|
+
|
3
|
+
const LOCALIZED_FIELDS = [
|
4
|
+
'biginteger',
|
5
|
+
'boolean',
|
6
|
+
'component',
|
7
|
+
'date',
|
8
|
+
'datetime',
|
9
|
+
'decimal',
|
10
|
+
'dynamiczone',
|
11
|
+
'email',
|
12
|
+
'enumeration',
|
13
|
+
'float',
|
14
|
+
'integer',
|
15
|
+
'json',
|
16
|
+
'media',
|
17
|
+
'number',
|
18
|
+
'password',
|
19
|
+
'richtext',
|
20
|
+
'blocks',
|
21
|
+
'string',
|
22
|
+
'text',
|
23
|
+
'time'
|
24
|
+
];
|
25
|
+
const doesPluginOptionsHaveI18nLocalized = (opts)=>has(opts, [
|
26
|
+
'i18n',
|
27
|
+
'localized'
|
28
|
+
]);
|
29
|
+
|
30
|
+
export { LOCALIZED_FIELDS, doesPluginOptionsHaveI18nLocalized };
|
31
|
+
//# sourceMappingURL=fields.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"fields.mjs","sources":["../../../admin/src/utils/fields.ts"],"sourcesContent":["import has from 'lodash/has';\n\nconst LOCALIZED_FIELDS = [\n 'biginteger',\n 'boolean',\n 'component',\n 'date',\n 'datetime',\n 'decimal',\n 'dynamiczone',\n 'email',\n 'enumeration',\n 'float',\n 'integer',\n 'json',\n 'media',\n 'number',\n 'password',\n 'richtext',\n 'blocks',\n 'string',\n 'text',\n 'time',\n];\n\nconst doesPluginOptionsHaveI18nLocalized = (\n opts?: object\n): opts is { i18n: { localized: boolean } } => has(opts, ['i18n', 'localized']);\n\nexport { LOCALIZED_FIELDS, doesPluginOptionsHaveI18nLocalized };\n"],"names":["LOCALIZED_FIELDS","doesPluginOptionsHaveI18nLocalized","opts","has"],"mappings":";;AAEA,MAAMA,gBAAmB,GAAA;AACvB,IAAA,YAAA;AACA,IAAA,SAAA;AACA,IAAA,WAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,SAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,SAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,QAAA;AACA,IAAA,UAAA;AACA,IAAA,UAAA;AACA,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA;AACD;AAED,MAAMC,kCAAqC,GAAA,CACzCC,IAC6CC,GAAAA,GAAAA,CAAID,IAAM,EAAA;AAAC,QAAA,MAAA;AAAQ,QAAA;AAAY,KAAA;;;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getTranslation.js","sources":["../../../admin/src/utils/getTranslation.ts"],"sourcesContent":["import { pluginId } from '../pluginId';\n\nconst getTranslation = (id: string) => `${pluginId}.${id}`;\n\nexport { getTranslation };\n"],"names":["getTranslation","id","pluginId"],"mappings":";;;;AAEMA,MAAAA,cAAAA,GAAiB,CAACC,EAAe,GAAA,CAAC,EAAEC,iBAAS,CAAA,CAAC,EAAED,EAAAA,CAAG;;;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getTranslation.mjs","sources":["../../../admin/src/utils/getTranslation.ts"],"sourcesContent":["import { pluginId } from '../pluginId';\n\nconst getTranslation = (id: string) => `${pluginId}.${id}`;\n\nexport { getTranslation };\n"],"names":["getTranslation","id","pluginId"],"mappings":";;AAEMA,MAAAA,cAAAA,GAAiB,CAACC,EAAe,GAAA,CAAC,EAAEC,QAAS,CAAA,CAAC,EAAED,EAAAA,CAAG;;;;"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const prefixPluginTranslations = (trad, pluginId)=>{
|
4
|
+
return Object.keys(trad).reduce((acc, current)=>{
|
5
|
+
acc[`${pluginId}.${current}`] = trad[current];
|
6
|
+
return acc;
|
7
|
+
}, {});
|
8
|
+
};
|
9
|
+
|
10
|
+
exports.prefixPluginTranslations = prefixPluginTranslations;
|
11
|
+
//# sourceMappingURL=prefixPluginTranslations.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"prefixPluginTranslations.js","sources":["../../../admin/src/utils/prefixPluginTranslations.ts"],"sourcesContent":["type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":";;AAEMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAmBC,EAAAA,QAAAA,GAAAA;AAInD,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;AACpCD,QAAAA,GAAG,CAAC,CAAC,EAAEJ,QAAAA,CAAS,CAAC,EAAEK,OAAQ,CAAA,CAAC,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAC7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
const prefixPluginTranslations = (trad, pluginId)=>{
|
2
|
+
return Object.keys(trad).reduce((acc, current)=>{
|
3
|
+
acc[`${pluginId}.${current}`] = trad[current];
|
4
|
+
return acc;
|
5
|
+
}, {});
|
6
|
+
};
|
7
|
+
|
8
|
+
export { prefixPluginTranslations };
|
9
|
+
//# sourceMappingURL=prefixPluginTranslations.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"prefixPluginTranslations.mjs","sources":["../../../admin/src/utils/prefixPluginTranslations.ts"],"sourcesContent":["type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":"AAEMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAmBC,EAAAA,QAAAA,GAAAA;AAInD,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;AACpCD,QAAAA,GAAG,CAAC,CAAC,EAAEJ,QAAAA,CAAS,CAAC,EAAEK,OAAQ,CAAA,CAAC,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAC7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var omit = require('lodash/omit');
|
4
|
+
var fields = require('./fields.js');
|
5
|
+
|
6
|
+
/* -------------------------------------------------------------------------------------------------
|
7
|
+
* mutateCTBContentTypeSchema
|
8
|
+
* -----------------------------------------------------------------------------------------------*/ // TODO: refactor for CTB refactors
|
9
|
+
const mutateCTBContentTypeSchema = (nextSchema, prevSchema)=>{
|
10
|
+
if (!prevSchema) {
|
11
|
+
return nextSchema;
|
12
|
+
}
|
13
|
+
// Don't perform mutations components
|
14
|
+
if (!fields.doesPluginOptionsHaveI18nLocalized(nextSchema.pluginOptions)) {
|
15
|
+
return nextSchema;
|
16
|
+
}
|
17
|
+
const isNextSchemaLocalized = nextSchema.pluginOptions.i18n.localized;
|
18
|
+
const isPrevSchemaLocalized = fields.doesPluginOptionsHaveI18nLocalized(prevSchema?.pluginOptions) ? prevSchema?.pluginOptions.i18n.localized : false;
|
19
|
+
// No need to perform modification on the schema, if the i18n feature was not changed
|
20
|
+
// at the ct level
|
21
|
+
if (isNextSchemaLocalized && isPrevSchemaLocalized) {
|
22
|
+
return nextSchema;
|
23
|
+
}
|
24
|
+
if (isNextSchemaLocalized) {
|
25
|
+
const attributes = addLocalisationToFields(nextSchema.attributes);
|
26
|
+
return {
|
27
|
+
...nextSchema,
|
28
|
+
attributes
|
29
|
+
};
|
30
|
+
}
|
31
|
+
// Remove the i18n object from the pluginOptions
|
32
|
+
if (!isNextSchemaLocalized) {
|
33
|
+
const pluginOptions = omit(nextSchema.pluginOptions, 'i18n');
|
34
|
+
const attributes = disableAttributesLocalisation(nextSchema.attributes);
|
35
|
+
return {
|
36
|
+
...nextSchema,
|
37
|
+
pluginOptions,
|
38
|
+
attributes
|
39
|
+
};
|
40
|
+
}
|
41
|
+
return nextSchema;
|
42
|
+
};
|
43
|
+
/* -------------------------------------------------------------------------------------------------
|
44
|
+
* addLocalisationToFields
|
45
|
+
* -----------------------------------------------------------------------------------------------*/ const addLocalisationToFields = (attributes)=>{
|
46
|
+
return attributes.map((currentAttribute)=>{
|
47
|
+
if (fields.LOCALIZED_FIELDS.includes(currentAttribute.type)) {
|
48
|
+
const i18n = {
|
49
|
+
localized: true
|
50
|
+
};
|
51
|
+
const pluginOptions = currentAttribute.pluginOptions ? {
|
52
|
+
...currentAttribute.pluginOptions,
|
53
|
+
i18n
|
54
|
+
} : {
|
55
|
+
i18n
|
56
|
+
};
|
57
|
+
return {
|
58
|
+
...currentAttribute,
|
59
|
+
pluginOptions
|
60
|
+
};
|
61
|
+
}
|
62
|
+
return currentAttribute;
|
63
|
+
});
|
64
|
+
};
|
65
|
+
/* -------------------------------------------------------------------------------------------------
|
66
|
+
* disableAttributesLocalisation
|
67
|
+
* -----------------------------------------------------------------------------------------------*/ const disableAttributesLocalisation = (attributes)=>{
|
68
|
+
return attributes.map((currentAttribute)=>{
|
69
|
+
return omit(currentAttribute, 'pluginOptions.i18n');
|
70
|
+
});
|
71
|
+
};
|
72
|
+
|
73
|
+
exports.mutateCTBContentTypeSchema = mutateCTBContentTypeSchema;
|
74
|
+
//# sourceMappingURL=schemas.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"schemas.js","sources":["../../../admin/src/utils/schemas.ts"],"sourcesContent":["import omit from 'lodash/omit';\n\nimport { LOCALIZED_FIELDS, doesPluginOptionsHaveI18nLocalized } from './fields';\n\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * mutateCTBContentTypeSchema\n * -----------------------------------------------------------------------------------------------*/\n\n// TODO: refactor for CTB refactors\nconst mutateCTBContentTypeSchema = (\n nextSchema: {\n pluginOptions: Schema.ContentType['pluginOptions'];\n attributes: Schema.Attribute.AnyAttribute[];\n uid?: string;\n },\n prevSchema?: {\n pluginOptions: Schema.ContentType['pluginOptions'];\n attributes: Schema.Attribute.AnyAttribute[];\n uid?: string;\n }\n) => {\n if (!prevSchema) {\n return nextSchema;\n }\n\n // Don't perform mutations components\n if (!doesPluginOptionsHaveI18nLocalized(nextSchema.pluginOptions)) {\n return nextSchema;\n }\n\n const isNextSchemaLocalized = nextSchema.pluginOptions.i18n.localized;\n const isPrevSchemaLocalized = doesPluginOptionsHaveI18nLocalized(prevSchema?.pluginOptions)\n ? prevSchema?.pluginOptions.i18n.localized\n : false;\n\n // No need to perform modification on the schema, if the i18n feature was not changed\n // at the ct level\n if (isNextSchemaLocalized && isPrevSchemaLocalized) {\n return nextSchema;\n }\n\n if (isNextSchemaLocalized) {\n const attributes = addLocalisationToFields(nextSchema.attributes);\n\n return {\n ...nextSchema,\n attributes,\n };\n }\n\n // Remove the i18n object from the pluginOptions\n if (!isNextSchemaLocalized) {\n const pluginOptions = omit(nextSchema.pluginOptions, 'i18n');\n const attributes = disableAttributesLocalisation(nextSchema.attributes);\n\n return {\n ...nextSchema,\n pluginOptions,\n attributes,\n };\n }\n\n return nextSchema;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * addLocalisationToFields\n * -----------------------------------------------------------------------------------------------*/\n\nconst addLocalisationToFields = (attributes: Schema.Attribute.AnyAttribute[]) => {\n return attributes.map((currentAttribute) => {\n if (LOCALIZED_FIELDS.includes(currentAttribute.type)) {\n const i18n = { localized: true };\n\n const pluginOptions = currentAttribute.pluginOptions\n ? { ...currentAttribute.pluginOptions, i18n }\n : { i18n };\n\n return { ...currentAttribute, pluginOptions };\n }\n\n return currentAttribute;\n });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * disableAttributesLocalisation\n * -----------------------------------------------------------------------------------------------*/\n\nconst disableAttributesLocalisation = (attributes: Schema.Attribute.AnyAttribute[]) => {\n return attributes.map((currentAttribute) => {\n return omit(currentAttribute, 'pluginOptions.i18n');\n });\n};\n\nexport { mutateCTBContentTypeSchema };\n"],"names":["mutateCTBContentTypeSchema","nextSchema","prevSchema","doesPluginOptionsHaveI18nLocalized","pluginOptions","isNextSchemaLocalized","i18n","localized","isPrevSchemaLocalized","attributes","addLocalisationToFields","omit","disableAttributesLocalisation","map","currentAttribute","LOCALIZED_FIELDS","includes","type"],"mappings":";;;;;AAMA;;AAEkG;AAG5FA,MAAAA,0BAAAA,GAA6B,CACjCC,UAKAC,EAAAA,UAAAA,GAAAA;AAMA,IAAA,IAAI,CAACA,UAAY,EAAA;QACf,OAAOD,UAAAA;AACT;;AAGA,IAAA,IAAI,CAACE,yCAAAA,CAAmCF,UAAWG,CAAAA,aAAa,CAAG,EAAA;QACjE,OAAOH,UAAAA;AACT;AAEA,IAAA,MAAMI,wBAAwBJ,UAAWG,CAAAA,aAAa,CAACE,IAAI,CAACC,SAAS;AACrE,IAAA,MAAMC,wBAAwBL,yCAAmCD,CAAAA,UAAAA,EAAYE,iBACzEF,UAAYE,EAAAA,aAAAA,CAAcE,KAAKC,SAC/B,GAAA,KAAA;;;AAIJ,IAAA,IAAIF,yBAAyBG,qBAAuB,EAAA;QAClD,OAAOP,UAAAA;AACT;AAEA,IAAA,IAAII,qBAAuB,EAAA;QACzB,MAAMI,UAAAA,GAAaC,uBAAwBT,CAAAA,UAAAA,CAAWQ,UAAU,CAAA;QAEhE,OAAO;AACL,YAAA,GAAGR,UAAU;AACbQ,YAAAA;AACF,SAAA;AACF;;AAGA,IAAA,IAAI,CAACJ,qBAAuB,EAAA;AAC1B,QAAA,MAAMD,aAAgBO,GAAAA,IAAAA,CAAKV,UAAWG,CAAAA,aAAa,EAAE,MAAA,CAAA;QACrD,MAAMK,UAAAA,GAAaG,6BAA8BX,CAAAA,UAAAA,CAAWQ,UAAU,CAAA;QAEtE,OAAO;AACL,YAAA,GAAGR,UAAU;AACbG,YAAAA,aAAAA;AACAK,YAAAA;AACF,SAAA;AACF;IAEA,OAAOR,UAAAA;AACT;AAEA;;qGAIA,MAAMS,0BAA0B,CAACD,UAAAA,GAAAA;IAC/B,OAAOA,UAAAA,CAAWI,GAAG,CAAC,CAACC,gBAAAA,GAAAA;AACrB,QAAA,IAAIC,uBAAiBC,CAAAA,QAAQ,CAACF,gBAAAA,CAAiBG,IAAI,CAAG,EAAA;AACpD,YAAA,MAAMX,IAAO,GAAA;gBAAEC,SAAW,EAAA;AAAK,aAAA;YAE/B,MAAMH,aAAAA,GAAgBU,gBAAiBV,CAAAA,aAAa,GAChD;AAAE,gBAAA,GAAGU,iBAAiBV,aAAa;AAAEE,gBAAAA;aACrC,GAAA;AAAEA,gBAAAA;AAAK,aAAA;YAEX,OAAO;AAAE,gBAAA,GAAGQ,gBAAgB;AAAEV,gBAAAA;AAAc,aAAA;AAC9C;QAEA,OAAOU,gBAAAA;AACT,KAAA,CAAA;AACF,CAAA;AAEA;;qGAIA,MAAMF,gCAAgC,CAACH,UAAAA,GAAAA;IACrC,OAAOA,UAAAA,CAAWI,GAAG,CAAC,CAACC,gBAAAA,GAAAA;AACrB,QAAA,OAAOH,KAAKG,gBAAkB,EAAA,oBAAA,CAAA;AAChC,KAAA,CAAA;AACF,CAAA;;;;"}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
import omit from 'lodash/omit';
|
2
|
+
import { doesPluginOptionsHaveI18nLocalized, LOCALIZED_FIELDS } from './fields.mjs';
|
3
|
+
|
4
|
+
/* -------------------------------------------------------------------------------------------------
|
5
|
+
* mutateCTBContentTypeSchema
|
6
|
+
* -----------------------------------------------------------------------------------------------*/ // TODO: refactor for CTB refactors
|
7
|
+
const mutateCTBContentTypeSchema = (nextSchema, prevSchema)=>{
|
8
|
+
if (!prevSchema) {
|
9
|
+
return nextSchema;
|
10
|
+
}
|
11
|
+
// Don't perform mutations components
|
12
|
+
if (!doesPluginOptionsHaveI18nLocalized(nextSchema.pluginOptions)) {
|
13
|
+
return nextSchema;
|
14
|
+
}
|
15
|
+
const isNextSchemaLocalized = nextSchema.pluginOptions.i18n.localized;
|
16
|
+
const isPrevSchemaLocalized = doesPluginOptionsHaveI18nLocalized(prevSchema?.pluginOptions) ? prevSchema?.pluginOptions.i18n.localized : false;
|
17
|
+
// No need to perform modification on the schema, if the i18n feature was not changed
|
18
|
+
// at the ct level
|
19
|
+
if (isNextSchemaLocalized && isPrevSchemaLocalized) {
|
20
|
+
return nextSchema;
|
21
|
+
}
|
22
|
+
if (isNextSchemaLocalized) {
|
23
|
+
const attributes = addLocalisationToFields(nextSchema.attributes);
|
24
|
+
return {
|
25
|
+
...nextSchema,
|
26
|
+
attributes
|
27
|
+
};
|
28
|
+
}
|
29
|
+
// Remove the i18n object from the pluginOptions
|
30
|
+
if (!isNextSchemaLocalized) {
|
31
|
+
const pluginOptions = omit(nextSchema.pluginOptions, 'i18n');
|
32
|
+
const attributes = disableAttributesLocalisation(nextSchema.attributes);
|
33
|
+
return {
|
34
|
+
...nextSchema,
|
35
|
+
pluginOptions,
|
36
|
+
attributes
|
37
|
+
};
|
38
|
+
}
|
39
|
+
return nextSchema;
|
40
|
+
};
|
41
|
+
/* -------------------------------------------------------------------------------------------------
|
42
|
+
* addLocalisationToFields
|
43
|
+
* -----------------------------------------------------------------------------------------------*/ const addLocalisationToFields = (attributes)=>{
|
44
|
+
return attributes.map((currentAttribute)=>{
|
45
|
+
if (LOCALIZED_FIELDS.includes(currentAttribute.type)) {
|
46
|
+
const i18n = {
|
47
|
+
localized: true
|
48
|
+
};
|
49
|
+
const pluginOptions = currentAttribute.pluginOptions ? {
|
50
|
+
...currentAttribute.pluginOptions,
|
51
|
+
i18n
|
52
|
+
} : {
|
53
|
+
i18n
|
54
|
+
};
|
55
|
+
return {
|
56
|
+
...currentAttribute,
|
57
|
+
pluginOptions
|
58
|
+
};
|
59
|
+
}
|
60
|
+
return currentAttribute;
|
61
|
+
});
|
62
|
+
};
|
63
|
+
/* -------------------------------------------------------------------------------------------------
|
64
|
+
* disableAttributesLocalisation
|
65
|
+
* -----------------------------------------------------------------------------------------------*/ const disableAttributesLocalisation = (attributes)=>{
|
66
|
+
return attributes.map((currentAttribute)=>{
|
67
|
+
return omit(currentAttribute, 'pluginOptions.i18n');
|
68
|
+
});
|
69
|
+
};
|
70
|
+
|
71
|
+
export { mutateCTBContentTypeSchema };
|
72
|
+
//# sourceMappingURL=schemas.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"schemas.mjs","sources":["../../../admin/src/utils/schemas.ts"],"sourcesContent":["import omit from 'lodash/omit';\n\nimport { LOCALIZED_FIELDS, doesPluginOptionsHaveI18nLocalized } from './fields';\n\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * mutateCTBContentTypeSchema\n * -----------------------------------------------------------------------------------------------*/\n\n// TODO: refactor for CTB refactors\nconst mutateCTBContentTypeSchema = (\n nextSchema: {\n pluginOptions: Schema.ContentType['pluginOptions'];\n attributes: Schema.Attribute.AnyAttribute[];\n uid?: string;\n },\n prevSchema?: {\n pluginOptions: Schema.ContentType['pluginOptions'];\n attributes: Schema.Attribute.AnyAttribute[];\n uid?: string;\n }\n) => {\n if (!prevSchema) {\n return nextSchema;\n }\n\n // Don't perform mutations components\n if (!doesPluginOptionsHaveI18nLocalized(nextSchema.pluginOptions)) {\n return nextSchema;\n }\n\n const isNextSchemaLocalized = nextSchema.pluginOptions.i18n.localized;\n const isPrevSchemaLocalized = doesPluginOptionsHaveI18nLocalized(prevSchema?.pluginOptions)\n ? prevSchema?.pluginOptions.i18n.localized\n : false;\n\n // No need to perform modification on the schema, if the i18n feature was not changed\n // at the ct level\n if (isNextSchemaLocalized && isPrevSchemaLocalized) {\n return nextSchema;\n }\n\n if (isNextSchemaLocalized) {\n const attributes = addLocalisationToFields(nextSchema.attributes);\n\n return {\n ...nextSchema,\n attributes,\n };\n }\n\n // Remove the i18n object from the pluginOptions\n if (!isNextSchemaLocalized) {\n const pluginOptions = omit(nextSchema.pluginOptions, 'i18n');\n const attributes = disableAttributesLocalisation(nextSchema.attributes);\n\n return {\n ...nextSchema,\n pluginOptions,\n attributes,\n };\n }\n\n return nextSchema;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * addLocalisationToFields\n * -----------------------------------------------------------------------------------------------*/\n\nconst addLocalisationToFields = (attributes: Schema.Attribute.AnyAttribute[]) => {\n return attributes.map((currentAttribute) => {\n if (LOCALIZED_FIELDS.includes(currentAttribute.type)) {\n const i18n = { localized: true };\n\n const pluginOptions = currentAttribute.pluginOptions\n ? { ...currentAttribute.pluginOptions, i18n }\n : { i18n };\n\n return { ...currentAttribute, pluginOptions };\n }\n\n return currentAttribute;\n });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * disableAttributesLocalisation\n * -----------------------------------------------------------------------------------------------*/\n\nconst disableAttributesLocalisation = (attributes: Schema.Attribute.AnyAttribute[]) => {\n return attributes.map((currentAttribute) => {\n return omit(currentAttribute, 'pluginOptions.i18n');\n });\n};\n\nexport { mutateCTBContentTypeSchema };\n"],"names":["mutateCTBContentTypeSchema","nextSchema","prevSchema","doesPluginOptionsHaveI18nLocalized","pluginOptions","isNextSchemaLocalized","i18n","localized","isPrevSchemaLocalized","attributes","addLocalisationToFields","omit","disableAttributesLocalisation","map","currentAttribute","LOCALIZED_FIELDS","includes","type"],"mappings":";;;AAMA;;AAEkG;AAG5FA,MAAAA,0BAAAA,GAA6B,CACjCC,UAKAC,EAAAA,UAAAA,GAAAA;AAMA,IAAA,IAAI,CAACA,UAAY,EAAA;QACf,OAAOD,UAAAA;AACT;;AAGA,IAAA,IAAI,CAACE,kCAAAA,CAAmCF,UAAWG,CAAAA,aAAa,CAAG,EAAA;QACjE,OAAOH,UAAAA;AACT;AAEA,IAAA,MAAMI,wBAAwBJ,UAAWG,CAAAA,aAAa,CAACE,IAAI,CAACC,SAAS;AACrE,IAAA,MAAMC,wBAAwBL,kCAAmCD,CAAAA,UAAAA,EAAYE,iBACzEF,UAAYE,EAAAA,aAAAA,CAAcE,KAAKC,SAC/B,GAAA,KAAA;;;AAIJ,IAAA,IAAIF,yBAAyBG,qBAAuB,EAAA;QAClD,OAAOP,UAAAA;AACT;AAEA,IAAA,IAAII,qBAAuB,EAAA;QACzB,MAAMI,UAAAA,GAAaC,uBAAwBT,CAAAA,UAAAA,CAAWQ,UAAU,CAAA;QAEhE,OAAO;AACL,YAAA,GAAGR,UAAU;AACbQ,YAAAA;AACF,SAAA;AACF;;AAGA,IAAA,IAAI,CAACJ,qBAAuB,EAAA;AAC1B,QAAA,MAAMD,aAAgBO,GAAAA,IAAAA,CAAKV,UAAWG,CAAAA,aAAa,EAAE,MAAA,CAAA;QACrD,MAAMK,UAAAA,GAAaG,6BAA8BX,CAAAA,UAAAA,CAAWQ,UAAU,CAAA;QAEtE,OAAO;AACL,YAAA,GAAGR,UAAU;AACbG,YAAAA,aAAAA;AACAK,YAAAA;AACF,SAAA;AACF;IAEA,OAAOR,UAAAA;AACT;AAEA;;qGAIA,MAAMS,0BAA0B,CAACD,UAAAA,GAAAA;IAC/B,OAAOA,UAAAA,CAAWI,GAAG,CAAC,CAACC,gBAAAA,GAAAA;AACrB,QAAA,IAAIC,gBAAiBC,CAAAA,QAAQ,CAACF,gBAAAA,CAAiBG,IAAI,CAAG,EAAA;AACpD,YAAA,MAAMX,IAAO,GAAA;gBAAEC,SAAW,EAAA;AAAK,aAAA;YAE/B,MAAMH,aAAAA,GAAgBU,gBAAiBV,CAAAA,aAAa,GAChD;AAAE,gBAAA,GAAGU,iBAAiBV,aAAa;AAAEE,gBAAAA;aACrC,GAAA;AAAEA,gBAAAA;AAAK,aAAA;YAEX,OAAO;AAAE,gBAAA,GAAGQ,gBAAgB;AAAEV,gBAAAA;AAAc,aAAA;AAC9C;QAEA,OAAOU,gBAAAA;AACT,KAAA,CAAA;AACF,CAAA;AAEA;;qGAIA,MAAMF,gCAAgC,CAACH,UAAAA,GAAAA;IACrC,OAAOA,UAAAA,CAAWI,GAAG,CAAC,CAACC,gBAAAA,GAAAA;AACrB,QAAA,OAAOH,KAAKG,gBAAkB,EAAA,oBAAA,CAAA;AAChC,KAAA,CAAA;AACF,CAAA;;;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"strings.js","sources":["../../../admin/src/utils/strings.ts"],"sourcesContent":["const capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport { capitalize };\n"],"names":["capitalize","str","charAt","toUpperCase","slice"],"mappings":";;AAAMA,MAAAA,UAAAA,GAAa,CAACC,GAAAA,GAAgBA,GAAIC,CAAAA,MAAM,CAAC,CAAA,CAAA,CAAGC,WAAW,EAAA,GAAKF,GAAIG,CAAAA,KAAK,CAAC,CAAA;;;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"strings.mjs","sources":["../../../admin/src/utils/strings.ts"],"sourcesContent":["const capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport { capitalize };\n"],"names":["capitalize","str","charAt","toUpperCase","slice"],"mappings":"AAAMA,MAAAA,UAAAA,GAAa,CAACC,GAAAA,GAAgBA,GAAIC,CAAAA,MAAM,CAAC,CAAA,CAAA,CAAGC,WAAW,EAAA,GAAKF,GAAIG,CAAAA,KAAK,CAAC,CAAA;;;;"}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var index = require('./utils/index.js');
|
4
|
+
|
5
|
+
const registerModelsHooks = ()=>{
|
6
|
+
strapi.db.lifecycles.subscribe({
|
7
|
+
models: [
|
8
|
+
'plugin::i18n.locale'
|
9
|
+
],
|
10
|
+
async afterCreate () {
|
11
|
+
await index.getService('permissions').actions.syncSuperAdminPermissionsWithLocales();
|
12
|
+
},
|
13
|
+
async afterDelete () {
|
14
|
+
await index.getService('permissions').actions.syncSuperAdminPermissionsWithLocales();
|
15
|
+
}
|
16
|
+
});
|
17
|
+
strapi.documents.use(async (context, next)=>{
|
18
|
+
const schema = context.contentType;
|
19
|
+
if (![
|
20
|
+
'create',
|
21
|
+
'update',
|
22
|
+
'discardDraft',
|
23
|
+
'publish'
|
24
|
+
].includes(context.action)) {
|
25
|
+
return next();
|
26
|
+
}
|
27
|
+
if (!index.getService('content-types').isLocalizedContentType(schema)) {
|
28
|
+
return next();
|
29
|
+
}
|
30
|
+
// Build a populate array for all non localized fields within the schema
|
31
|
+
const { getNestedPopulateOfNonLocalizedAttributes } = index.getService('content-types');
|
32
|
+
const attributesToPopulate = getNestedPopulateOfNonLocalizedAttributes(schema.uid);
|
33
|
+
// Get the result of the document service action
|
34
|
+
const result = await next();
|
35
|
+
// We may not have received a result with everything populated that we need
|
36
|
+
// Use the id and populate built from non localized fields to get the full
|
37
|
+
// result
|
38
|
+
let resultID;
|
39
|
+
// TODO: fix bug where an empty array can be returned
|
40
|
+
if (Array.isArray(result?.entries) && result.entries[0]?.id) {
|
41
|
+
resultID = result.entries[0].id;
|
42
|
+
} else if (result?.id) {
|
43
|
+
resultID = result.id;
|
44
|
+
} else {
|
45
|
+
return result;
|
46
|
+
}
|
47
|
+
if (attributesToPopulate.length > 0) {
|
48
|
+
const populatedResult = await strapi.db.query(schema.uid).findOne({
|
49
|
+
where: {
|
50
|
+
id: resultID
|
51
|
+
},
|
52
|
+
populate: attributesToPopulate
|
53
|
+
});
|
54
|
+
await index.getService('localizations').syncNonLocalizedAttributes(populatedResult, schema);
|
55
|
+
}
|
56
|
+
return result;
|
57
|
+
});
|
58
|
+
};
|
59
|
+
var bootstrap = (async ()=>{
|
60
|
+
const { sendDidInitializeEvent } = index.getService('metrics');
|
61
|
+
const { initDefaultLocale } = index.getService('locales');
|
62
|
+
const { sectionsBuilder, actions, engine } = index.getService('permissions');
|
63
|
+
// Data
|
64
|
+
await initDefaultLocale();
|
65
|
+
// Sections Builder
|
66
|
+
sectionsBuilder.registerLocalesPropertyHandler();
|
67
|
+
// Actions
|
68
|
+
await actions.registerI18nActions();
|
69
|
+
actions.registerI18nActionsHooks();
|
70
|
+
actions.updateActionsProperties();
|
71
|
+
// Engine/Permissions
|
72
|
+
engine.registerI18nPermissionsHandlers();
|
73
|
+
// Hooks & Models
|
74
|
+
registerModelsHooks();
|
75
|
+
sendDidInitializeEvent();
|
76
|
+
});
|
77
|
+
|
78
|
+
module.exports = bootstrap;
|
79
|
+
//# sourceMappingURL=bootstrap.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["import type { Schema } from '@strapi/types';\nimport { getService } from './utils';\n\nconst registerModelsHooks = () => {\n strapi.db.lifecycles.subscribe({\n models: ['plugin::i18n.locale'],\n\n async afterCreate() {\n await getService('permissions').actions.syncSuperAdminPermissionsWithLocales();\n },\n\n async afterDelete() {\n await getService('permissions').actions.syncSuperAdminPermissionsWithLocales();\n },\n });\n\n strapi.documents.use(async (context, next) => {\n const schema: Schema.ContentType = context.contentType;\n\n if (!['create', 'update', 'discardDraft', 'publish'].includes(context.action)) {\n return next();\n }\n\n if (!getService('content-types').isLocalizedContentType(schema)) {\n return next();\n }\n\n // Build a populate array for all non localized fields within the schema\n const { getNestedPopulateOfNonLocalizedAttributes } = getService('content-types');\n\n const attributesToPopulate = getNestedPopulateOfNonLocalizedAttributes(schema.uid);\n\n // Get the result of the document service action\n const result = (await next()) as any;\n\n // We may not have received a result with everything populated that we need\n // Use the id and populate built from non localized fields to get the full\n // result\n let resultID;\n // TODO: fix bug where an empty array can be returned\n if (Array.isArray(result?.entries) && result.entries[0]?.id) {\n resultID = result.entries[0].id;\n } else if (result?.id) {\n resultID = result.id;\n } else {\n return result;\n }\n\n if (attributesToPopulate.length > 0) {\n const populatedResult = await strapi.db\n .query(schema.uid)\n .findOne({ where: { id: resultID }, populate: attributesToPopulate });\n\n await getService('localizations').syncNonLocalizedAttributes(populatedResult, schema);\n }\n\n return result;\n });\n};\n\nexport default async () => {\n const { sendDidInitializeEvent } = getService('metrics');\n const { initDefaultLocale } = getService('locales');\n const { sectionsBuilder, actions, engine } = getService('permissions');\n\n // Data\n await initDefaultLocale();\n\n // Sections Builder\n sectionsBuilder.registerLocalesPropertyHandler();\n\n // Actions\n await actions.registerI18nActions();\n actions.registerI18nActionsHooks();\n actions.updateActionsProperties();\n\n // Engine/Permissions\n engine.registerI18nPermissionsHandlers();\n\n // Hooks & Models\n registerModelsHooks();\n\n sendDidInitializeEvent();\n};\n"],"names":["registerModelsHooks","strapi","db","lifecycles","subscribe","models","afterCreate","getService","actions","syncSuperAdminPermissionsWithLocales","afterDelete","documents","use","context","next","schema","contentType","includes","action","isLocalizedContentType","getNestedPopulateOfNonLocalizedAttributes","attributesToPopulate","uid","result","resultID","Array","isArray","entries","id","length","populatedResult","query","findOne","where","populate","syncNonLocalizedAttributes","sendDidInitializeEvent","initDefaultLocale","sectionsBuilder","engine","registerLocalesPropertyHandler","registerI18nActions","registerI18nActionsHooks","updateActionsProperties","registerI18nPermissionsHandlers"],"mappings":"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"}
|
@@ -0,0 +1,77 @@
|
|
1
|
+
import { getService } from './utils/index.mjs';
|
2
|
+
|
3
|
+
const registerModelsHooks = ()=>{
|
4
|
+
strapi.db.lifecycles.subscribe({
|
5
|
+
models: [
|
6
|
+
'plugin::i18n.locale'
|
7
|
+
],
|
8
|
+
async afterCreate () {
|
9
|
+
await getService('permissions').actions.syncSuperAdminPermissionsWithLocales();
|
10
|
+
},
|
11
|
+
async afterDelete () {
|
12
|
+
await getService('permissions').actions.syncSuperAdminPermissionsWithLocales();
|
13
|
+
}
|
14
|
+
});
|
15
|
+
strapi.documents.use(async (context, next)=>{
|
16
|
+
const schema = context.contentType;
|
17
|
+
if (![
|
18
|
+
'create',
|
19
|
+
'update',
|
20
|
+
'discardDraft',
|
21
|
+
'publish'
|
22
|
+
].includes(context.action)) {
|
23
|
+
return next();
|
24
|
+
}
|
25
|
+
if (!getService('content-types').isLocalizedContentType(schema)) {
|
26
|
+
return next();
|
27
|
+
}
|
28
|
+
// Build a populate array for all non localized fields within the schema
|
29
|
+
const { getNestedPopulateOfNonLocalizedAttributes } = getService('content-types');
|
30
|
+
const attributesToPopulate = getNestedPopulateOfNonLocalizedAttributes(schema.uid);
|
31
|
+
// Get the result of the document service action
|
32
|
+
const result = await next();
|
33
|
+
// We may not have received a result with everything populated that we need
|
34
|
+
// Use the id and populate built from non localized fields to get the full
|
35
|
+
// result
|
36
|
+
let resultID;
|
37
|
+
// TODO: fix bug where an empty array can be returned
|
38
|
+
if (Array.isArray(result?.entries) && result.entries[0]?.id) {
|
39
|
+
resultID = result.entries[0].id;
|
40
|
+
} else if (result?.id) {
|
41
|
+
resultID = result.id;
|
42
|
+
} else {
|
43
|
+
return result;
|
44
|
+
}
|
45
|
+
if (attributesToPopulate.length > 0) {
|
46
|
+
const populatedResult = await strapi.db.query(schema.uid).findOne({
|
47
|
+
where: {
|
48
|
+
id: resultID
|
49
|
+
},
|
50
|
+
populate: attributesToPopulate
|
51
|
+
});
|
52
|
+
await getService('localizations').syncNonLocalizedAttributes(populatedResult, schema);
|
53
|
+
}
|
54
|
+
return result;
|
55
|
+
});
|
56
|
+
};
|
57
|
+
var bootstrap = (async ()=>{
|
58
|
+
const { sendDidInitializeEvent } = getService('metrics');
|
59
|
+
const { initDefaultLocale } = getService('locales');
|
60
|
+
const { sectionsBuilder, actions, engine } = getService('permissions');
|
61
|
+
// Data
|
62
|
+
await initDefaultLocale();
|
63
|
+
// Sections Builder
|
64
|
+
sectionsBuilder.registerLocalesPropertyHandler();
|
65
|
+
// Actions
|
66
|
+
await actions.registerI18nActions();
|
67
|
+
actions.registerI18nActionsHooks();
|
68
|
+
actions.updateActionsProperties();
|
69
|
+
// Engine/Permissions
|
70
|
+
engine.registerI18nPermissionsHandlers();
|
71
|
+
// Hooks & Models
|
72
|
+
registerModelsHooks();
|
73
|
+
sendDidInitializeEvent();
|
74
|
+
});
|
75
|
+
|
76
|
+
export { bootstrap as default };
|
77
|
+
//# sourceMappingURL=bootstrap.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"bootstrap.mjs","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["import type { Schema } from '@strapi/types';\nimport { getService } from './utils';\n\nconst registerModelsHooks = () => {\n strapi.db.lifecycles.subscribe({\n models: ['plugin::i18n.locale'],\n\n async afterCreate() {\n await getService('permissions').actions.syncSuperAdminPermissionsWithLocales();\n },\n\n async afterDelete() {\n await getService('permissions').actions.syncSuperAdminPermissionsWithLocales();\n },\n });\n\n strapi.documents.use(async (context, next) => {\n const schema: Schema.ContentType = context.contentType;\n\n if (!['create', 'update', 'discardDraft', 'publish'].includes(context.action)) {\n return next();\n }\n\n if (!getService('content-types').isLocalizedContentType(schema)) {\n return next();\n }\n\n // Build a populate array for all non localized fields within the schema\n const { getNestedPopulateOfNonLocalizedAttributes } = getService('content-types');\n\n const attributesToPopulate = getNestedPopulateOfNonLocalizedAttributes(schema.uid);\n\n // Get the result of the document service action\n const result = (await next()) as any;\n\n // We may not have received a result with everything populated that we need\n // Use the id and populate built from non localized fields to get the full\n // result\n let resultID;\n // TODO: fix bug where an empty array can be returned\n if (Array.isArray(result?.entries) && result.entries[0]?.id) {\n resultID = result.entries[0].id;\n } else if (result?.id) {\n resultID = result.id;\n } else {\n return result;\n }\n\n if (attributesToPopulate.length > 0) {\n const populatedResult = await strapi.db\n .query(schema.uid)\n .findOne({ where: { id: resultID }, populate: attributesToPopulate });\n\n await getService('localizations').syncNonLocalizedAttributes(populatedResult, schema);\n }\n\n return result;\n });\n};\n\nexport default async () => {\n const { sendDidInitializeEvent } = getService('metrics');\n const { initDefaultLocale } = getService('locales');\n const { sectionsBuilder, actions, engine } = getService('permissions');\n\n // Data\n await initDefaultLocale();\n\n // Sections Builder\n sectionsBuilder.registerLocalesPropertyHandler();\n\n // Actions\n await actions.registerI18nActions();\n actions.registerI18nActionsHooks();\n actions.updateActionsProperties();\n\n // Engine/Permissions\n engine.registerI18nPermissionsHandlers();\n\n // Hooks & Models\n registerModelsHooks();\n\n sendDidInitializeEvent();\n};\n"],"names":["registerModelsHooks","strapi","db","lifecycles","subscribe","models","afterCreate","getService","actions","syncSuperAdminPermissionsWithLocales","afterDelete","documents","use","context","next","schema","contentType","includes","action","isLocalizedContentType","getNestedPopulateOfNonLocalizedAttributes","attributesToPopulate","uid","result","resultID","Array","isArray","entries","id","length","populatedResult","query","findOne","where","populate","syncNonLocalizedAttributes","sendDidInitializeEvent","initDefaultLocale","sectionsBuilder","engine","registerLocalesPropertyHandler","registerI18nActions","registerI18nActionsHooks","updateActionsProperties","registerI18nPermissionsHandlers"],"mappings":"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"}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var isoLocales = require('./iso-locales.json.js');
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Returns the default locale based either on env var or english
|
7
|
+
* @returns {string}
|
8
|
+
*/ const getInitLocale = ()=>{
|
9
|
+
const envLocaleCode = process.env.STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE;
|
10
|
+
if (envLocaleCode) {
|
11
|
+
const matchingLocale = isoLocales.find(({ code })=>code === envLocaleCode);
|
12
|
+
if (!matchingLocale) {
|
13
|
+
throw new Error('Unknown locale code provided in the environment variable STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE');
|
14
|
+
}
|
15
|
+
return {
|
16
|
+
...matchingLocale
|
17
|
+
};
|
18
|
+
}
|
19
|
+
return {
|
20
|
+
code: 'en',
|
21
|
+
name: 'English (en)'
|
22
|
+
};
|
23
|
+
};
|
24
|
+
const DEFAULT_LOCALE = getInitLocale();
|
25
|
+
|
26
|
+
exports.isoLocales = isoLocales;
|
27
|
+
exports.DEFAULT_LOCALE = DEFAULT_LOCALE;
|
28
|
+
exports.getInitLocale = getInitLocale;
|
29
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/src/constants/index.ts"],"sourcesContent":["import isoLocales from './iso-locales.json';\n\n/**\n * Returns the default locale based either on env var or english\n * @returns {string}\n */\nconst getInitLocale = () => {\n const envLocaleCode = process.env.STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE;\n\n if (envLocaleCode) {\n const matchingLocale = isoLocales.find(({ code }) => code === envLocaleCode);\n\n if (!matchingLocale) {\n throw new Error(\n 'Unknown locale code provided in the environment variable STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE'\n );\n }\n\n return { ...matchingLocale };\n }\n\n return {\n code: 'en',\n name: 'English (en)',\n };\n};\n\nconst DEFAULT_LOCALE = getInitLocale();\n\nexport { isoLocales, DEFAULT_LOCALE, getInitLocale };\n"],"names":["getInitLocale","envLocaleCode","process","env","STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE","matchingLocale","isoLocales","find","code","Error","name","DEFAULT_LOCALE"],"mappings":";;;;AAEA;;;AAGC,UACKA,aAAgB,GAAA,IAAA;AACpB,IAAA,MAAMC,aAAgBC,GAAAA,OAAAA,CAAQC,GAAG,CAACC,mCAAmC;AAErE,IAAA,IAAIH,aAAe,EAAA;QACjB,MAAMI,cAAAA,GAAiBC,WAAWC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,IAASP,KAAAA,aAAAA,CAAAA;AAE9D,QAAA,IAAI,CAACI,cAAgB,EAAA;AACnB,YAAA,MAAM,IAAII,KACR,CAAA,8FAAA,CAAA;AAEJ;QAEA,OAAO;AAAE,YAAA,GAAGJ;AAAe,SAAA;AAC7B;IAEA,OAAO;QACLG,IAAM,EAAA,IAAA;QACNE,IAAM,EAAA;AACR,KAAA;AACF;AAEA,MAAMC,cAAiBX,GAAAA,aAAAA;;;;;;"}
|