@strapi/i18n 0.0.0-experimental.bffd3c1819cd08304e7d270e88b4973e9fcbc183 → 0.0.0-experimental.c23f51fc41b3ef5de081f427d07e87af93cdcb2c
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 +226 -5
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +202 -5
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/middlewares/extendCTBAttributeInitialData.js +61 -0
- package/dist/admin/middlewares/extendCTBAttributeInitialData.js.map +1 -0
- package/dist/admin/middlewares/extendCTBAttributeInitialData.mjs +59 -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/components/CMHeaderActions.d.ts +1 -1
- package/dist/admin/src/components/tests/CreateLocale.test.d.ts +1 -0
- package/dist/admin/src/components/tests/DeleteLocale.test.d.ts +1 -0
- package/dist/admin/src/components/tests/EditLocale.test.d.ts +1 -0
- package/dist/admin/src/components/tests/LocaleListCell.test.d.ts +1 -0
- package/dist/admin/src/contentReleasesHooks/releaseDetailsView.d.ts +1 -1
- package/dist/admin/src/pages/tests/SettingsPage.test.d.ts +1 -0
- package/dist/admin/tests/server.d.ts +1 -0
- package/dist/admin/tests/utils.d.ts +6 -0
- package/dist/admin/translations/de.json.js +66 -0
- package/dist/admin/translations/de.json.js.map +1 -0
- package/dist/admin/translations/de.json.mjs +64 -0
- package/dist/admin/translations/de.json.mjs.map +1 -0
- package/dist/admin/translations/dk.json.js +66 -0
- package/dist/admin/translations/dk.json.js.map +1 -0
- package/dist/admin/translations/dk.json.mjs +64 -0
- package/dist/admin/translations/dk.json.mjs.map +1 -0
- package/dist/admin/translations/en.json.js +81 -0
- package/dist/admin/translations/en.json.js.map +1 -0
- package/dist/admin/translations/en.json.mjs +79 -0
- package/dist/admin/translations/en.json.mjs.map +1 -0
- package/dist/admin/translations/es.json.js +66 -0
- package/dist/admin/translations/es.json.js.map +1 -0
- package/dist/admin/translations/es.json.mjs +64 -0
- package/dist/admin/translations/es.json.mjs.map +1 -0
- package/dist/admin/translations/fr.json.js +66 -0
- package/dist/admin/translations/fr.json.js.map +1 -0
- package/dist/admin/translations/fr.json.mjs +64 -0
- package/dist/admin/translations/fr.json.mjs.map +1 -0
- package/dist/admin/translations/ko.json.js +65 -0
- package/dist/admin/translations/ko.json.js.map +1 -0
- package/dist/admin/translations/ko.json.mjs +63 -0
- package/dist/admin/translations/ko.json.mjs.map +1 -0
- package/dist/admin/translations/pl.json.js +66 -0
- package/dist/admin/translations/pl.json.js.map +1 -0
- package/dist/admin/translations/pl.json.mjs +64 -0
- package/dist/admin/translations/pl.json.mjs.map +1 -0
- package/dist/admin/translations/ru.json.js +68 -0
- package/dist/admin/translations/ru.json.js.map +1 -0
- package/dist/admin/translations/ru.json.mjs +66 -0
- package/dist/admin/translations/ru.json.mjs.map +1 -0
- package/dist/admin/translations/tr.json.js +66 -0
- package/dist/admin/translations/tr.json.js.map +1 -0
- package/dist/admin/translations/tr.json.mjs +64 -0
- 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/translations/zh-Hans.json.js +57 -0
- package/dist/admin/translations/zh-Hans.json.js.map +1 -0
- package/dist/admin/translations/zh-Hans.json.mjs +55 -0
- package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
- package/dist/admin/translations/zh.json.js +66 -0
- package/dist/admin/translations/zh.json.js.map +1 -0
- package/dist/admin/translations/zh.json.mjs +64 -0
- 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 +29 -0
- package/dist/admin/utils/fields.js.map +1 -0
- package/dist/admin/utils/fields.mjs +26 -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 +68 -0
- package/dist/admin/utils/schemas.js.map +1 -0
- package/dist/admin/utils/schemas.mjs +66 -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 +18 -3460
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +17 -3443
- 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/src/services/localizations.d.ts +1 -1
- package/dist/server/src/services/localizations.d.ts.map +1 -1
- 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/dist/shared/contracts/content-manager.d.ts +1 -1
- package/dist/shared/contracts/shared.d.ts +1 -1
- package/package.json +14 -11
- package/dist/_chunks/SettingsPage-B-KzAqT3.mjs +0 -554
- package/dist/_chunks/SettingsPage-B-KzAqT3.mjs.map +0 -1
- package/dist/_chunks/SettingsPage-hyOi94O9.js +0 -573
- package/dist/_chunks/SettingsPage-hyOi94O9.js.map +0 -1
- package/dist/_chunks/de-BOhNX_-5.js +0 -65
- package/dist/_chunks/de-BOhNX_-5.js.map +0 -1
- package/dist/_chunks/de-D80IRBP9.mjs +0 -65
- package/dist/_chunks/de-D80IRBP9.mjs.map +0 -1
- package/dist/_chunks/dk-CJ6Zzz78.mjs +0 -65
- package/dist/_chunks/dk-CJ6Zzz78.mjs.map +0 -1
- package/dist/_chunks/dk-cjXm0p3m.js +0 -65
- package/dist/_chunks/dk-cjXm0p3m.js.map +0 -1
- package/dist/_chunks/en-BTyF7WVW.mjs +0 -80
- package/dist/_chunks/en-BTyF7WVW.mjs.map +0 -1
- package/dist/_chunks/en-UlC0jh2t.js +0 -80
- package/dist/_chunks/en-UlC0jh2t.js.map +0 -1
- package/dist/_chunks/es-V8WnPN7w.mjs +0 -65
- package/dist/_chunks/es-V8WnPN7w.mjs.map +0 -1
- package/dist/_chunks/es-hr9b_HLp.js +0 -65
- package/dist/_chunks/es-hr9b_HLp.js.map +0 -1
- package/dist/_chunks/fr-BFmBbE0H.js +0 -65
- package/dist/_chunks/fr-BFmBbE0H.js.map +0 -1
- package/dist/_chunks/fr-F94noFiV.mjs +0 -65
- package/dist/_chunks/fr-F94noFiV.mjs.map +0 -1
- package/dist/_chunks/index-BcYj5jo9.mjs +0 -1589
- package/dist/_chunks/index-BcYj5jo9.mjs.map +0 -1
- package/dist/_chunks/index-C8NzsAKp.js +0 -1610
- package/dist/_chunks/index-C8NzsAKp.js.map +0 -1
- package/dist/_chunks/ko-C40pNQ9b.js +0 -64
- package/dist/_chunks/ko-C40pNQ9b.js.map +0 -1
- package/dist/_chunks/ko-CF-P3Car.mjs +0 -64
- package/dist/_chunks/ko-CF-P3Car.mjs.map +0 -1
- package/dist/_chunks/pl-Dxr9RUmD.mjs +0 -65
- package/dist/_chunks/pl-Dxr9RUmD.mjs.map +0 -1
- package/dist/_chunks/pl-JtWBy-JQ.js +0 -65
- package/dist/_chunks/pl-JtWBy-JQ.js.map +0 -1
- package/dist/_chunks/ru-B-4sVwXN.mjs +0 -67
- package/dist/_chunks/ru-B-4sVwXN.mjs.map +0 -1
- package/dist/_chunks/ru-COSWt3Nu.js +0 -67
- package/dist/_chunks/ru-COSWt3Nu.js.map +0 -1
- package/dist/_chunks/tr-BVj1O5ch.js +0 -65
- package/dist/_chunks/tr-BVj1O5ch.js.map +0 -1
- package/dist/_chunks/tr-Ccu6Yj11.mjs +0 -65
- package/dist/_chunks/tr-Ccu6Yj11.mjs.map +0 -1
- package/dist/_chunks/zh-BIz395Ms.mjs +0 -65
- package/dist/_chunks/zh-BIz395Ms.mjs.map +0 -1
- package/dist/_chunks/zh-Hans-Bfo6_TCM.mjs +0 -56
- package/dist/_chunks/zh-Hans-Bfo6_TCM.mjs.map +0 -1
- package/dist/_chunks/zh-Hans-DIEm_EMC.js +0 -56
- package/dist/_chunks/zh-Hans-DIEm_EMC.js.map +0 -1
- package/dist/_chunks/zh-wkBPBkhc.js +0 -65
- package/dist/_chunks/zh-wkBPBkhc.js.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"iso-locales.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/src/content-types/index.ts"],"sourcesContent":["import locale from './locale';\n\nexport default {\n locale,\n};\n"],"names":["locale"],"mappings":";;;;AAEA,mBAAe;AACbA,YAAAA;AACF,CAAE;;;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../server/src/content-types/index.ts"],"sourcesContent":["import locale from './locale';\n\nexport default {\n locale,\n};\n"],"names":["locale"],"mappings":";;AAEA,mBAAe;AACbA,IAAAA;AACF,CAAE;;;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../server/src/content-types/locale/index.ts"],"sourcesContent":["import schema from './schema.json';\n\nexport default {\n schema,\n};\n"],"names":["schema"],"mappings":";;;;AAEA,aAAe;AACbA,YAAAA;AACF,CAAE;;;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../server/src/content-types/locale/index.ts"],"sourcesContent":["import schema from './schema.json';\n\nexport default {\n schema,\n};\n"],"names":["schema"],"mappings":";;AAEA,aAAe;AACbA,IAAAA;AACF,CAAE;;;;"}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
4
|
+
|
5
|
+
var info = {
|
6
|
+
singularName: "locale",
|
7
|
+
pluralName: "locales",
|
8
|
+
collectionName: "locales",
|
9
|
+
displayName: "Locale",
|
10
|
+
description: ""
|
11
|
+
};
|
12
|
+
var options = {};
|
13
|
+
var pluginOptions = {
|
14
|
+
"content-manager": {
|
15
|
+
visible: false
|
16
|
+
},
|
17
|
+
"content-type-builder": {
|
18
|
+
visible: false
|
19
|
+
}
|
20
|
+
};
|
21
|
+
var attributes = {
|
22
|
+
name: {
|
23
|
+
type: "string",
|
24
|
+
min: 1,
|
25
|
+
max: 50,
|
26
|
+
configurable: false
|
27
|
+
},
|
28
|
+
code: {
|
29
|
+
type: "string",
|
30
|
+
unique: true,
|
31
|
+
configurable: false
|
32
|
+
}
|
33
|
+
};
|
34
|
+
var schema = {
|
35
|
+
info: info,
|
36
|
+
options: options,
|
37
|
+
pluginOptions: pluginOptions,
|
38
|
+
attributes: attributes
|
39
|
+
};
|
40
|
+
|
41
|
+
exports.attributes = attributes;
|
42
|
+
exports.default = schema;
|
43
|
+
exports.info = info;
|
44
|
+
exports.options = options;
|
45
|
+
exports.pluginOptions = pluginOptions;
|
46
|
+
//# sourceMappingURL=schema.json.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"schema.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
var info = {
|
2
|
+
singularName: "locale",
|
3
|
+
pluralName: "locales",
|
4
|
+
collectionName: "locales",
|
5
|
+
displayName: "Locale",
|
6
|
+
description: ""
|
7
|
+
};
|
8
|
+
var options = {};
|
9
|
+
var pluginOptions = {
|
10
|
+
"content-manager": {
|
11
|
+
visible: false
|
12
|
+
},
|
13
|
+
"content-type-builder": {
|
14
|
+
visible: false
|
15
|
+
}
|
16
|
+
};
|
17
|
+
var attributes = {
|
18
|
+
name: {
|
19
|
+
type: "string",
|
20
|
+
min: 1,
|
21
|
+
max: 50,
|
22
|
+
configurable: false
|
23
|
+
},
|
24
|
+
code: {
|
25
|
+
type: "string",
|
26
|
+
unique: true,
|
27
|
+
configurable: false
|
28
|
+
}
|
29
|
+
};
|
30
|
+
var schema = {
|
31
|
+
info: info,
|
32
|
+
options: options,
|
33
|
+
pluginOptions: pluginOptions,
|
34
|
+
attributes: attributes
|
35
|
+
};
|
36
|
+
|
37
|
+
export { attributes, schema as default, info, options, pluginOptions };
|
38
|
+
//# sourceMappingURL=schema.json.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"schema.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var fp = require('lodash/fp');
|
4
|
+
var utils = require('@strapi/utils');
|
5
|
+
var index = require('../utils/index.js');
|
6
|
+
var contentTypes = require('../validation/content-types.js');
|
7
|
+
|
8
|
+
const { ApplicationError } = utils.errors;
|
9
|
+
const { PUBLISHED_AT_ATTRIBUTE } = utils.contentTypes.constants;
|
10
|
+
const getLocalesProperty = fp.getOr([], 'properties.locales');
|
11
|
+
const getFieldsProperty = fp.prop('properties.fields');
|
12
|
+
const getFirstLevelPath = fp.map((path)=>path.split('.')[0]);
|
13
|
+
const controller = {
|
14
|
+
async getNonLocalizedAttributes (ctx) {
|
15
|
+
const { user } = ctx.state;
|
16
|
+
const body = ctx.request.body;
|
17
|
+
const { model, id, locale } = body;
|
18
|
+
await contentTypes.validateGetNonLocalizedAttributesInput({
|
19
|
+
model,
|
20
|
+
id,
|
21
|
+
locale
|
22
|
+
});
|
23
|
+
const { copyNonLocalizedAttributes, isLocalizedContentType, getNestedPopulateOfNonLocalizedAttributes } = index.getService('content-types');
|
24
|
+
const { default: { READ_ACTION, CREATE_ACTION } } = strapi.service('admin::constants');
|
25
|
+
const modelDef = strapi.contentType(model);
|
26
|
+
const attributesToPopulate = getNestedPopulateOfNonLocalizedAttributes(model);
|
27
|
+
if (!isLocalizedContentType(modelDef)) {
|
28
|
+
throw new ApplicationError(`Model ${model} is not localized`);
|
29
|
+
}
|
30
|
+
const params = modelDef.kind === 'singleType' ? {} : {
|
31
|
+
id
|
32
|
+
};
|
33
|
+
const entity = await strapi.db.query(model).findOne({
|
34
|
+
where: params,
|
35
|
+
populate: attributesToPopulate
|
36
|
+
});
|
37
|
+
if (!entity) {
|
38
|
+
return ctx.notFound();
|
39
|
+
}
|
40
|
+
const permissions = await strapi.admin.services.permission.findMany({
|
41
|
+
where: {
|
42
|
+
action: [
|
43
|
+
READ_ACTION,
|
44
|
+
CREATE_ACTION
|
45
|
+
],
|
46
|
+
subject: model,
|
47
|
+
role: {
|
48
|
+
id: user.roles.map(fp.prop('id'))
|
49
|
+
}
|
50
|
+
}
|
51
|
+
});
|
52
|
+
const localePermissions = permissions.filter((perm)=>getLocalesProperty(perm).includes(locale)).map(getFieldsProperty);
|
53
|
+
const permittedFields = fp.pipe(fp.flatten, getFirstLevelPath, fp.uniq)(localePermissions);
|
54
|
+
const nonLocalizedFields = copyNonLocalizedAttributes(modelDef, entity);
|
55
|
+
const sanitizedNonLocalizedFields = fp.pick(permittedFields, nonLocalizedFields);
|
56
|
+
const availableLocalesResult = await strapi.plugins['content-manager'].service('document-metadata').getMetadata(model, entity, {
|
57
|
+
availableLocales: true
|
58
|
+
});
|
59
|
+
const availableLocales = availableLocalesResult.availableLocales.map((localeResult)=>fp.pick([
|
60
|
+
'id',
|
61
|
+
'locale',
|
62
|
+
PUBLISHED_AT_ATTRIBUTE
|
63
|
+
], localeResult));
|
64
|
+
ctx.body = {
|
65
|
+
nonLocalizedFields: sanitizedNonLocalizedFields,
|
66
|
+
localizations: availableLocales.concat(fp.pick([
|
67
|
+
'id',
|
68
|
+
'locale',
|
69
|
+
PUBLISHED_AT_ATTRIBUTE
|
70
|
+
], entity))
|
71
|
+
};
|
72
|
+
}
|
73
|
+
};
|
74
|
+
|
75
|
+
module.exports = controller;
|
76
|
+
//# sourceMappingURL=content-types.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"content-types.js","sources":["../../../server/src/controllers/content-types.ts"],"sourcesContent":["import { pick, uniq, prop, getOr, flatten, pipe, map } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils, errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport { getService } from '../utils';\nimport { validateGetNonLocalizedAttributesInput } from '../validation/content-types';\n\nconst { ApplicationError } = errors;\n\nconst { PUBLISHED_AT_ATTRIBUTE } = contentTypesUtils.constants;\n\nconst getLocalesProperty = getOr<string[]>([], 'properties.locales');\nconst getFieldsProperty = prop('properties.fields');\n\nconst getFirstLevelPath = map((path: string) => path.split('.')[0]);\n\nconst controller = {\n async getNonLocalizedAttributes(ctx) {\n const { user } = ctx.state;\n const body = ctx.request.body as any;\n const { model, id, locale } = body;\n\n await validateGetNonLocalizedAttributesInput({ model, id, locale });\n\n const {\n copyNonLocalizedAttributes,\n isLocalizedContentType,\n getNestedPopulateOfNonLocalizedAttributes,\n } = getService('content-types');\n\n const {\n default: { READ_ACTION, CREATE_ACTION },\n } = strapi.service('admin::constants');\n\n const modelDef = strapi.contentType(model);\n const attributesToPopulate = getNestedPopulateOfNonLocalizedAttributes(model);\n\n if (!isLocalizedContentType(modelDef)) {\n throw new ApplicationError(`Model ${model} is not localized`);\n }\n\n const params = modelDef.kind === 'singleType' ? {} : { id };\n\n const entity = await strapi.db\n .query(model)\n .findOne({ where: params, populate: attributesToPopulate });\n\n if (!entity) {\n return ctx.notFound();\n }\n\n const permissions = await strapi.admin.services.permission.findMany({\n where: {\n action: [READ_ACTION, CREATE_ACTION],\n subject: model,\n role: {\n id: user.roles.map(prop('id')),\n },\n },\n });\n\n const localePermissions = permissions\n .filter((perm: any) => getLocalesProperty(perm).includes(locale))\n .map(getFieldsProperty);\n\n const permittedFields = pipe(flatten, getFirstLevelPath, uniq)(localePermissions);\n\n const nonLocalizedFields = copyNonLocalizedAttributes(modelDef, entity);\n const sanitizedNonLocalizedFields = pick(permittedFields, nonLocalizedFields);\n\n const availableLocalesResult = await strapi.plugins['content-manager']\n .service('document-metadata')\n .getMetadata(model, entity, {\n availableLocales: true,\n });\n\n const availableLocales = availableLocalesResult.availableLocales.map((localeResult: any) =>\n pick(['id', 'locale', PUBLISHED_AT_ATTRIBUTE], localeResult)\n );\n\n ctx.body = {\n nonLocalizedFields: sanitizedNonLocalizedFields,\n localizations: availableLocales.concat(\n pick(['id', 'locale', PUBLISHED_AT_ATTRIBUTE], entity)\n ),\n };\n },\n} satisfies Core.Controller;\n\nexport default controller;\n"],"names":["ApplicationError","errors","PUBLISHED_AT_ATTRIBUTE","contentTypesUtils","constants","getLocalesProperty","getOr","getFieldsProperty","prop","getFirstLevelPath","map","path","split","controller","getNonLocalizedAttributes","ctx","user","state","body","request","model","id","locale","validateGetNonLocalizedAttributesInput","copyNonLocalizedAttributes","isLocalizedContentType","getNestedPopulateOfNonLocalizedAttributes","getService","default","READ_ACTION","CREATE_ACTION","strapi","service","modelDef","contentType","attributesToPopulate","params","kind","entity","db","query","findOne","where","populate","notFound","permissions","admin","services","permission","findMany","action","subject","role","roles","localePermissions","filter","perm","includes","permittedFields","pipe","flatten","uniq","nonLocalizedFields","sanitizedNonLocalizedFields","pick","availableLocalesResult","plugins","getMetadata","availableLocales","localeResult","localizations","concat"],"mappings":"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"}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import { getOr, prop, map, pipe, flatten, uniq, pick } from 'lodash/fp';
|
2
|
+
import { contentTypes, errors } from '@strapi/utils';
|
3
|
+
import { getService } from '../utils/index.mjs';
|
4
|
+
import { validateGetNonLocalizedAttributesInput } from '../validation/content-types.mjs';
|
5
|
+
|
6
|
+
const { ApplicationError } = errors;
|
7
|
+
const { PUBLISHED_AT_ATTRIBUTE } = contentTypes.constants;
|
8
|
+
const getLocalesProperty = getOr([], 'properties.locales');
|
9
|
+
const getFieldsProperty = prop('properties.fields');
|
10
|
+
const getFirstLevelPath = map((path)=>path.split('.')[0]);
|
11
|
+
const controller = {
|
12
|
+
async getNonLocalizedAttributes (ctx) {
|
13
|
+
const { user } = ctx.state;
|
14
|
+
const body = ctx.request.body;
|
15
|
+
const { model, id, locale } = body;
|
16
|
+
await validateGetNonLocalizedAttributesInput({
|
17
|
+
model,
|
18
|
+
id,
|
19
|
+
locale
|
20
|
+
});
|
21
|
+
const { copyNonLocalizedAttributes, isLocalizedContentType, getNestedPopulateOfNonLocalizedAttributes } = getService('content-types');
|
22
|
+
const { default: { READ_ACTION, CREATE_ACTION } } = strapi.service('admin::constants');
|
23
|
+
const modelDef = strapi.contentType(model);
|
24
|
+
const attributesToPopulate = getNestedPopulateOfNonLocalizedAttributes(model);
|
25
|
+
if (!isLocalizedContentType(modelDef)) {
|
26
|
+
throw new ApplicationError(`Model ${model} is not localized`);
|
27
|
+
}
|
28
|
+
const params = modelDef.kind === 'singleType' ? {} : {
|
29
|
+
id
|
30
|
+
};
|
31
|
+
const entity = await strapi.db.query(model).findOne({
|
32
|
+
where: params,
|
33
|
+
populate: attributesToPopulate
|
34
|
+
});
|
35
|
+
if (!entity) {
|
36
|
+
return ctx.notFound();
|
37
|
+
}
|
38
|
+
const permissions = await strapi.admin.services.permission.findMany({
|
39
|
+
where: {
|
40
|
+
action: [
|
41
|
+
READ_ACTION,
|
42
|
+
CREATE_ACTION
|
43
|
+
],
|
44
|
+
subject: model,
|
45
|
+
role: {
|
46
|
+
id: user.roles.map(prop('id'))
|
47
|
+
}
|
48
|
+
}
|
49
|
+
});
|
50
|
+
const localePermissions = permissions.filter((perm)=>getLocalesProperty(perm).includes(locale)).map(getFieldsProperty);
|
51
|
+
const permittedFields = pipe(flatten, getFirstLevelPath, uniq)(localePermissions);
|
52
|
+
const nonLocalizedFields = copyNonLocalizedAttributes(modelDef, entity);
|
53
|
+
const sanitizedNonLocalizedFields = pick(permittedFields, nonLocalizedFields);
|
54
|
+
const availableLocalesResult = await strapi.plugins['content-manager'].service('document-metadata').getMetadata(model, entity, {
|
55
|
+
availableLocales: true
|
56
|
+
});
|
57
|
+
const availableLocales = availableLocalesResult.availableLocales.map((localeResult)=>pick([
|
58
|
+
'id',
|
59
|
+
'locale',
|
60
|
+
PUBLISHED_AT_ATTRIBUTE
|
61
|
+
], localeResult));
|
62
|
+
ctx.body = {
|
63
|
+
nonLocalizedFields: sanitizedNonLocalizedFields,
|
64
|
+
localizations: availableLocales.concat(pick([
|
65
|
+
'id',
|
66
|
+
'locale',
|
67
|
+
PUBLISHED_AT_ATTRIBUTE
|
68
|
+
], entity))
|
69
|
+
};
|
70
|
+
}
|
71
|
+
};
|
72
|
+
|
73
|
+
export { controller as default };
|
74
|
+
//# sourceMappingURL=content-types.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"content-types.mjs","sources":["../../../server/src/controllers/content-types.ts"],"sourcesContent":["import { pick, uniq, prop, getOr, flatten, pipe, map } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils, errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport { getService } from '../utils';\nimport { validateGetNonLocalizedAttributesInput } from '../validation/content-types';\n\nconst { ApplicationError } = errors;\n\nconst { PUBLISHED_AT_ATTRIBUTE } = contentTypesUtils.constants;\n\nconst getLocalesProperty = getOr<string[]>([], 'properties.locales');\nconst getFieldsProperty = prop('properties.fields');\n\nconst getFirstLevelPath = map((path: string) => path.split('.')[0]);\n\nconst controller = {\n async getNonLocalizedAttributes(ctx) {\n const { user } = ctx.state;\n const body = ctx.request.body as any;\n const { model, id, locale } = body;\n\n await validateGetNonLocalizedAttributesInput({ model, id, locale });\n\n const {\n copyNonLocalizedAttributes,\n isLocalizedContentType,\n getNestedPopulateOfNonLocalizedAttributes,\n } = getService('content-types');\n\n const {\n default: { READ_ACTION, CREATE_ACTION },\n } = strapi.service('admin::constants');\n\n const modelDef = strapi.contentType(model);\n const attributesToPopulate = getNestedPopulateOfNonLocalizedAttributes(model);\n\n if (!isLocalizedContentType(modelDef)) {\n throw new ApplicationError(`Model ${model} is not localized`);\n }\n\n const params = modelDef.kind === 'singleType' ? {} : { id };\n\n const entity = await strapi.db\n .query(model)\n .findOne({ where: params, populate: attributesToPopulate });\n\n if (!entity) {\n return ctx.notFound();\n }\n\n const permissions = await strapi.admin.services.permission.findMany({\n where: {\n action: [READ_ACTION, CREATE_ACTION],\n subject: model,\n role: {\n id: user.roles.map(prop('id')),\n },\n },\n });\n\n const localePermissions = permissions\n .filter((perm: any) => getLocalesProperty(perm).includes(locale))\n .map(getFieldsProperty);\n\n const permittedFields = pipe(flatten, getFirstLevelPath, uniq)(localePermissions);\n\n const nonLocalizedFields = copyNonLocalizedAttributes(modelDef, entity);\n const sanitizedNonLocalizedFields = pick(permittedFields, nonLocalizedFields);\n\n const availableLocalesResult = await strapi.plugins['content-manager']\n .service('document-metadata')\n .getMetadata(model, entity, {\n availableLocales: true,\n });\n\n const availableLocales = availableLocalesResult.availableLocales.map((localeResult: any) =>\n pick(['id', 'locale', PUBLISHED_AT_ATTRIBUTE], localeResult)\n );\n\n ctx.body = {\n nonLocalizedFields: sanitizedNonLocalizedFields,\n localizations: availableLocales.concat(\n pick(['id', 'locale', PUBLISHED_AT_ATTRIBUTE], entity)\n ),\n };\n },\n} satisfies Core.Controller;\n\nexport default controller;\n"],"names":["ApplicationError","errors","PUBLISHED_AT_ATTRIBUTE","contentTypesUtils","constants","getLocalesProperty","getOr","getFieldsProperty","prop","getFirstLevelPath","map","path","split","controller","getNonLocalizedAttributes","ctx","user","state","body","request","model","id","locale","validateGetNonLocalizedAttributesInput","copyNonLocalizedAttributes","isLocalizedContentType","getNestedPopulateOfNonLocalizedAttributes","getService","default","READ_ACTION","CREATE_ACTION","strapi","service","modelDef","contentType","attributesToPopulate","params","kind","entity","db","query","findOne","where","populate","notFound","permissions","admin","services","permission","findMany","action","subject","role","roles","localePermissions","filter","perm","includes","permittedFields","pipe","flatten","uniq","nonLocalizedFields","sanitizedNonLocalizedFields","pick","availableLocalesResult","plugins","getMetadata","availableLocales","localeResult","localizations","concat"],"mappings":";;;;;AAMA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,MAAAA;AAE7B,MAAM,EAAEC,sBAAsB,EAAE,GAAGC,aAAkBC,SAAS;AAE9D,MAAMC,kBAAAA,GAAqBC,KAAgB,CAAA,EAAE,EAAE,oBAAA,CAAA;AAC/C,MAAMC,oBAAoBC,IAAK,CAAA,mBAAA,CAAA;AAE/B,MAAMC,iBAAAA,GAAoBC,IAAI,CAACC,IAAAA,GAAiBA,KAAKC,KAAK,CAAC,GAAI,CAAA,CAAC,CAAE,CAAA,CAAA;AAElE,MAAMC,UAAa,GAAA;AACjB,IAAA,MAAMC,2BAA0BC,GAAG,EAAA;AACjC,QAAA,MAAM,EAAEC,IAAI,EAAE,GAAGD,IAAIE,KAAK;AAC1B,QAAA,MAAMC,IAAOH,GAAAA,GAAAA,CAAII,OAAO,CAACD,IAAI;AAC7B,QAAA,MAAM,EAAEE,KAAK,EAAEC,EAAE,EAAEC,MAAM,EAAE,GAAGJ,IAAAA;AAE9B,QAAA,MAAMK,sCAAuC,CAAA;AAAEH,YAAAA,KAAAA;AAAOC,YAAAA,EAAAA;AAAIC,YAAAA;AAAO,SAAA,CAAA;QAEjE,MAAM,EACJE,0BAA0B,EAC1BC,sBAAsB,EACtBC,yCAAyC,EAC1C,GAAGC,UAAW,CAAA,eAAA,CAAA;QAEf,MAAM,EACJC,OAAS,EAAA,EAAEC,WAAW,EAAEC,aAAa,EAAE,EACxC,GAAGC,MAAOC,CAAAA,OAAO,CAAC,kBAAA,CAAA;QAEnB,MAAMC,QAAAA,GAAWF,MAAOG,CAAAA,WAAW,CAACd,KAAAA,CAAAA;AACpC,QAAA,MAAMe,uBAAuBT,yCAA0CN,CAAAA,KAAAA,CAAAA;QAEvE,IAAI,CAACK,uBAAuBQ,QAAW,CAAA,EAAA;AACrC,YAAA,MAAM,IAAIjC,gBAAiB,CAAA,CAAC,MAAM,EAAEoB,KAAAA,CAAM,iBAAiB,CAAC,CAAA;AAC9D;AAEA,QAAA,MAAMgB,SAASH,QAASI,CAAAA,IAAI,KAAK,YAAA,GAAe,EAAK,GAAA;AAAEhB,YAAAA;AAAG,SAAA;QAE1D,MAAMiB,MAAAA,GAAS,MAAMP,MAAOQ,CAAAA,EAAE,CAC3BC,KAAK,CAACpB,KACNqB,CAAAA,CAAAA,OAAO,CAAC;YAAEC,KAAON,EAAAA,MAAAA;YAAQO,QAAUR,EAAAA;AAAqB,SAAA,CAAA;AAE3D,QAAA,IAAI,CAACG,MAAQ,EAAA;AACX,YAAA,OAAOvB,IAAI6B,QAAQ,EAAA;AACrB;QAEA,MAAMC,WAAAA,GAAc,MAAMd,MAAAA,CAAOe,KAAK,CAACC,QAAQ,CAACC,UAAU,CAACC,QAAQ,CAAC;YAClEP,KAAO,EAAA;gBACLQ,MAAQ,EAAA;AAACrB,oBAAAA,WAAAA;AAAaC,oBAAAA;AAAc,iBAAA;gBACpCqB,OAAS/B,EAAAA,KAAAA;gBACTgC,IAAM,EAAA;AACJ/B,oBAAAA,EAAAA,EAAIL,IAAKqC,CAAAA,KAAK,CAAC3C,GAAG,CAACF,IAAK,CAAA,IAAA,CAAA;AAC1B;AACF;AACF,SAAA,CAAA;AAEA,QAAA,MAAM8C,iBAAoBT,GAAAA,WAAAA,CACvBU,MAAM,CAAC,CAACC,IAAAA,GAAcnD,kBAAmBmD,CAAAA,IAAAA,CAAAA,CAAMC,QAAQ,CAACnC,MACxDZ,CAAAA,CAAAA,CAAAA,GAAG,CAACH,iBAAAA,CAAAA;AAEP,QAAA,MAAMmD,eAAkBC,GAAAA,IAAAA,CAAKC,OAASnD,EAAAA,iBAAAA,EAAmBoD,IAAMP,CAAAA,CAAAA,iBAAAA,CAAAA;QAE/D,MAAMQ,kBAAAA,GAAqBtC,2BAA2BS,QAAUK,EAAAA,MAAAA,CAAAA;QAChE,MAAMyB,2BAAAA,GAA8BC,KAAKN,eAAiBI,EAAAA,kBAAAA,CAAAA;AAE1D,QAAA,MAAMG,sBAAyB,GAAA,MAAMlC,MAAOmC,CAAAA,OAAO,CAAC,iBAAA,CAAkB,CACnElC,OAAO,CAAC,mBAAA,CAAA,CACRmC,WAAW,CAAC/C,OAAOkB,MAAQ,EAAA;YAC1B8B,gBAAkB,EAAA;AACpB,SAAA,CAAA;QAEF,MAAMA,gBAAAA,GAAmBH,uBAAuBG,gBAAgB,CAAC1D,GAAG,CAAC,CAAC2D,eACpEL,IAAK,CAAA;AAAC,gBAAA,IAAA;AAAM,gBAAA,QAAA;AAAU9D,gBAAAA;aAAuB,EAAEmE,YAAAA,CAAAA,CAAAA;AAGjDtD,QAAAA,GAAAA,CAAIG,IAAI,GAAG;YACT4C,kBAAoBC,EAAAA,2BAAAA;YACpBO,aAAeF,EAAAA,gBAAAA,CAAiBG,MAAM,CACpCP,IAAK,CAAA;AAAC,gBAAA,IAAA;AAAM,gBAAA,QAAA;AAAU9D,gBAAAA;aAAuB,EAAEoC,MAAAA,CAAAA;AAEnD,SAAA;AACF;AACF;;;;"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var locales = require('./locales.js');
|
4
|
+
var contentTypes = require('./content-types.js');
|
5
|
+
var isoLocales = require('./iso-locales.js');
|
6
|
+
|
7
|
+
var controllers = {
|
8
|
+
locales,
|
9
|
+
'iso-locales': isoLocales,
|
10
|
+
'content-types': contentTypes
|
11
|
+
};
|
12
|
+
|
13
|
+
module.exports = controllers;
|
14
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/src/controllers/index.ts"],"sourcesContent":["import locales from './locales';\nimport contentTypes from './content-types';\nimport isoLocales from './iso-locales';\n\nexport default {\n locales,\n 'iso-locales': isoLocales,\n 'content-types': contentTypes,\n};\n"],"names":["locales","isoLocales","contentTypes"],"mappings":";;;;;;AAIA,kBAAe;AACbA,IAAAA,OAAAA;IACA,aAAeC,EAAAA,UAAAA;IACf,eAAiBC,EAAAA;AACnB,CAAE;;;;"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import controller from './locales.mjs';
|
2
|
+
import controller$2 from './content-types.mjs';
|
3
|
+
import controller$1 from './iso-locales.mjs';
|
4
|
+
|
5
|
+
var controllers = {
|
6
|
+
locales: controller,
|
7
|
+
'iso-locales': controller$1,
|
8
|
+
'content-types': controller$2
|
9
|
+
};
|
10
|
+
|
11
|
+
export { controllers as default };
|
12
|
+
//# sourceMappingURL=index.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../server/src/controllers/index.ts"],"sourcesContent":["import locales from './locales';\nimport contentTypes from './content-types';\nimport isoLocales from './iso-locales';\n\nexport default {\n locales,\n 'iso-locales': isoLocales,\n 'content-types': contentTypes,\n};\n"],"names":["locales","isoLocales","contentTypes"],"mappings":";;;;AAIA,kBAAe;AACbA,aAAAA,UAAAA;IACA,aAAeC,EAAAA,YAAAA;IACf,eAAiBC,EAAAA;AACnB,CAAE;;;;"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var index = require('../utils/index.js');
|
4
|
+
|
5
|
+
const controller = {
|
6
|
+
listIsoLocales (ctx) {
|
7
|
+
const isoLocalesService = index.getService('iso-locales');
|
8
|
+
ctx.body = isoLocalesService.getIsoLocales();
|
9
|
+
}
|
10
|
+
};
|
11
|
+
|
12
|
+
module.exports = controller;
|
13
|
+
//# sourceMappingURL=iso-locales.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"iso-locales.js","sources":["../../../server/src/controllers/iso-locales.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { getService } from '../utils';\n\nconst controller: Core.Controller = {\n listIsoLocales(ctx) {\n const isoLocalesService = getService('iso-locales');\n\n ctx.body = isoLocalesService.getIsoLocales();\n },\n};\n\nexport default controller;\n"],"names":["controller","listIsoLocales","ctx","isoLocalesService","getService","body","getIsoLocales"],"mappings":";;;;AAGA,MAAMA,UAA8B,GAAA;AAClCC,IAAAA,cAAAA,CAAAA,CAAeC,GAAG,EAAA;AAChB,QAAA,MAAMC,oBAAoBC,gBAAW,CAAA,aAAA,CAAA;QAErCF,GAAIG,CAAAA,IAAI,GAAGF,iBAAAA,CAAkBG,aAAa,EAAA;AAC5C;AACF;;;;"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { getService } from '../utils/index.mjs';
|
2
|
+
|
3
|
+
const controller = {
|
4
|
+
listIsoLocales (ctx) {
|
5
|
+
const isoLocalesService = getService('iso-locales');
|
6
|
+
ctx.body = isoLocalesService.getIsoLocales();
|
7
|
+
}
|
8
|
+
};
|
9
|
+
|
10
|
+
export { controller as default };
|
11
|
+
//# sourceMappingURL=iso-locales.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"iso-locales.mjs","sources":["../../../server/src/controllers/iso-locales.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { getService } from '../utils';\n\nconst controller: Core.Controller = {\n listIsoLocales(ctx) {\n const isoLocalesService = getService('iso-locales');\n\n ctx.body = isoLocalesService.getIsoLocales();\n },\n};\n\nexport default controller;\n"],"names":["controller","listIsoLocales","ctx","isoLocalesService","getService","body","getIsoLocales"],"mappings":";;AAGA,MAAMA,UAA8B,GAAA;AAClCC,IAAAA,cAAAA,CAAAA,CAAeC,GAAG,EAAA;AAChB,QAAA,MAAMC,oBAAoBC,UAAW,CAAA,aAAA,CAAA;QAErCF,GAAIG,CAAAA,IAAI,GAAGF,iBAAAA,CAAkBG,aAAa,EAAA;AAC5C;AACF;;;;"}
|
@@ -0,0 +1,108 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var utils = require('@strapi/utils');
|
4
|
+
var fp = require('lodash/fp');
|
5
|
+
var index = require('../utils/index.js');
|
6
|
+
var locales = require('../validation/locales.js');
|
7
|
+
var locale = require('../domain/locale.js');
|
8
|
+
|
9
|
+
function _interopNamespaceDefault(e) {
|
10
|
+
var n = Object.create(null);
|
11
|
+
if (e) {
|
12
|
+
Object.keys(e).forEach(function (k) {
|
13
|
+
if (k !== 'default') {
|
14
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
15
|
+
Object.defineProperty(n, k, d.get ? d : {
|
16
|
+
enumerable: true,
|
17
|
+
get: function () { return e[k]; }
|
18
|
+
});
|
19
|
+
}
|
20
|
+
});
|
21
|
+
}
|
22
|
+
n.default = e;
|
23
|
+
return Object.freeze(n);
|
24
|
+
}
|
25
|
+
|
26
|
+
var utils__namespace = /*#__PURE__*/_interopNamespaceDefault(utils);
|
27
|
+
|
28
|
+
const { setCreatorFields } = utils__namespace;
|
29
|
+
const { ApplicationError } = utils__namespace.errors;
|
30
|
+
const sanitizeLocale = (locale)=>{
|
31
|
+
const model = strapi.getModel('plugin::i18n.locale');
|
32
|
+
return strapi.contentAPI.sanitize.output(locale, model);
|
33
|
+
};
|
34
|
+
const controller = {
|
35
|
+
async listLocales (ctx) {
|
36
|
+
const localesService = index.getService('locales');
|
37
|
+
const locales = await localesService.find();
|
38
|
+
const sanitizedLocales = await sanitizeLocale(locales);
|
39
|
+
ctx.body = await localesService.setIsDefault(sanitizedLocales);
|
40
|
+
},
|
41
|
+
async createLocale (ctx) {
|
42
|
+
const { user } = ctx.state;
|
43
|
+
const body = ctx.request.body;
|
44
|
+
const { isDefault, ...localeToCreate } = body;
|
45
|
+
await locales.validateCreateLocaleInput(body);
|
46
|
+
const localesService = index.getService('locales');
|
47
|
+
const existingLocale = await localesService.findByCode(body.code);
|
48
|
+
if (existingLocale) {
|
49
|
+
throw new ApplicationError('This locale already exists');
|
50
|
+
}
|
51
|
+
const localeToPersist = setCreatorFields({
|
52
|
+
user
|
53
|
+
})(locale.formatLocale(localeToCreate));
|
54
|
+
const locale$1 = await localesService.create(localeToPersist);
|
55
|
+
if (isDefault) {
|
56
|
+
await localesService.setDefaultLocale(locale$1);
|
57
|
+
}
|
58
|
+
const sanitizedLocale = await sanitizeLocale(locale$1);
|
59
|
+
ctx.body = await localesService.setIsDefault(sanitizedLocale);
|
60
|
+
},
|
61
|
+
async updateLocale (ctx) {
|
62
|
+
const { user } = ctx.state;
|
63
|
+
const { id } = ctx.params;
|
64
|
+
const body = ctx.request.body;
|
65
|
+
const { isDefault, ...updates } = body;
|
66
|
+
await locales.validateUpdateLocaleInput(body);
|
67
|
+
const localesService = index.getService('locales');
|
68
|
+
const existingLocale = await localesService.findById(id);
|
69
|
+
if (!existingLocale) {
|
70
|
+
return ctx.notFound('locale.notFound');
|
71
|
+
}
|
72
|
+
const allowedParams = [
|
73
|
+
'name'
|
74
|
+
];
|
75
|
+
const cleanUpdates = setCreatorFields({
|
76
|
+
user,
|
77
|
+
isEdition: true
|
78
|
+
})(fp.pick(allowedParams, updates));
|
79
|
+
const updatedLocale = await localesService.update({
|
80
|
+
id
|
81
|
+
}, cleanUpdates);
|
82
|
+
if (isDefault) {
|
83
|
+
await localesService.setDefaultLocale(updatedLocale);
|
84
|
+
}
|
85
|
+
const sanitizedLocale = await sanitizeLocale(updatedLocale);
|
86
|
+
ctx.body = await localesService.setIsDefault(sanitizedLocale);
|
87
|
+
},
|
88
|
+
async deleteLocale (ctx) {
|
89
|
+
const { id } = ctx.params;
|
90
|
+
const localesService = index.getService('locales');
|
91
|
+
const existingLocale = await localesService.findById(id);
|
92
|
+
if (!existingLocale) {
|
93
|
+
return ctx.notFound('locale.notFound');
|
94
|
+
}
|
95
|
+
const defaultLocaleCode = await localesService.getDefaultLocale();
|
96
|
+
if (existingLocale.code === defaultLocaleCode) {
|
97
|
+
throw new ApplicationError('Cannot delete the default locale');
|
98
|
+
}
|
99
|
+
await localesService.delete({
|
100
|
+
id
|
101
|
+
});
|
102
|
+
const sanitizedLocale = await sanitizeLocale(existingLocale);
|
103
|
+
ctx.body = await localesService.setIsDefault(sanitizedLocale);
|
104
|
+
}
|
105
|
+
};
|
106
|
+
|
107
|
+
module.exports = controller;
|
108
|
+
//# sourceMappingURL=locales.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"locales.js","sources":["../../../server/src/controllers/locales.ts"],"sourcesContent":["import * as utils from '@strapi/utils';\nimport { pick } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport { getService } from '../utils';\nimport { validateCreateLocaleInput, validateUpdateLocaleInput } from '../validation/locales';\nimport { formatLocale } from '../domain/locale';\n\nconst { setCreatorFields } = utils;\nconst { ApplicationError } = utils.errors;\n\nconst sanitizeLocale = (locale: any) => {\n const model = strapi.getModel('plugin::i18n.locale');\n\n return strapi.contentAPI.sanitize.output(locale, model);\n};\n\nconst controller: Core.Controller = {\n async listLocales(ctx) {\n const localesService = getService('locales');\n\n const locales = await localesService.find();\n const sanitizedLocales = await sanitizeLocale(locales);\n\n ctx.body = await localesService.setIsDefault(sanitizedLocales);\n },\n\n async createLocale(ctx) {\n const { user } = ctx.state;\n const body = ctx.request.body as any;\n const { isDefault, ...localeToCreate } = body;\n\n await validateCreateLocaleInput(body);\n\n const localesService = getService('locales');\n\n const existingLocale = await localesService.findByCode(body.code);\n if (existingLocale) {\n throw new ApplicationError('This locale already exists');\n }\n\n const localeToPersist = setCreatorFields({ user })(formatLocale(localeToCreate));\n\n const locale = await localesService.create(localeToPersist);\n\n if (isDefault) {\n await localesService.setDefaultLocale(locale);\n }\n\n const sanitizedLocale = await sanitizeLocale(locale);\n\n ctx.body = await localesService.setIsDefault(sanitizedLocale);\n },\n\n async updateLocale(ctx) {\n const { user } = ctx.state;\n const { id } = ctx.params;\n const body = ctx.request.body as any;\n const { isDefault, ...updates } = body;\n\n await validateUpdateLocaleInput(body);\n\n const localesService = getService('locales');\n\n const existingLocale = await localesService.findById(id);\n if (!existingLocale) {\n return ctx.notFound('locale.notFound');\n }\n\n const allowedParams = ['name'];\n const cleanUpdates = setCreatorFields({ user, isEdition: true })(pick(allowedParams, updates));\n\n const updatedLocale = await localesService.update({ id }, cleanUpdates);\n\n if (isDefault) {\n await localesService.setDefaultLocale(updatedLocale);\n }\n\n const sanitizedLocale = await sanitizeLocale(updatedLocale);\n\n ctx.body = await localesService.setIsDefault(sanitizedLocale);\n },\n\n async deleteLocale(ctx) {\n const { id } = ctx.params;\n\n const localesService = getService('locales');\n\n const existingLocale = await localesService.findById(id);\n if (!existingLocale) {\n return ctx.notFound('locale.notFound');\n }\n\n const defaultLocaleCode = await localesService.getDefaultLocale();\n if (existingLocale.code === defaultLocaleCode) {\n throw new ApplicationError('Cannot delete the default locale');\n }\n\n await localesService.delete({ id });\n\n const sanitizedLocale = await sanitizeLocale(existingLocale);\n\n ctx.body = await localesService.setIsDefault(sanitizedLocale);\n },\n};\n\nexport default controller;\n"],"names":["setCreatorFields","utils","ApplicationError","errors","sanitizeLocale","locale","model","strapi","getModel","contentAPI","sanitize","output","controller","listLocales","ctx","localesService","getService","locales","find","sanitizedLocales","body","setIsDefault","createLocale","user","state","request","isDefault","localeToCreate","validateCreateLocaleInput","existingLocale","findByCode","code","localeToPersist","formatLocale","create","setDefaultLocale","sanitizedLocale","updateLocale","id","params","updates","validateUpdateLocaleInput","findById","notFound","allowedParams","cleanUpdates","isEdition","pick","updatedLocale","update","deleteLocale","defaultLocaleCode","getDefaultLocale","delete"],"mappings":"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"}
|
@@ -0,0 +1,87 @@
|
|
1
|
+
import * as utils from '@strapi/utils';
|
2
|
+
import { pick } from 'lodash/fp';
|
3
|
+
import { getService } from '../utils/index.mjs';
|
4
|
+
import { validateCreateLocaleInput, validateUpdateLocaleInput } from '../validation/locales.mjs';
|
5
|
+
import { formatLocale } from '../domain/locale.mjs';
|
6
|
+
|
7
|
+
const { setCreatorFields } = utils;
|
8
|
+
const { ApplicationError } = utils.errors;
|
9
|
+
const sanitizeLocale = (locale)=>{
|
10
|
+
const model = strapi.getModel('plugin::i18n.locale');
|
11
|
+
return strapi.contentAPI.sanitize.output(locale, model);
|
12
|
+
};
|
13
|
+
const controller = {
|
14
|
+
async listLocales (ctx) {
|
15
|
+
const localesService = getService('locales');
|
16
|
+
const locales = await localesService.find();
|
17
|
+
const sanitizedLocales = await sanitizeLocale(locales);
|
18
|
+
ctx.body = await localesService.setIsDefault(sanitizedLocales);
|
19
|
+
},
|
20
|
+
async createLocale (ctx) {
|
21
|
+
const { user } = ctx.state;
|
22
|
+
const body = ctx.request.body;
|
23
|
+
const { isDefault, ...localeToCreate } = body;
|
24
|
+
await validateCreateLocaleInput(body);
|
25
|
+
const localesService = getService('locales');
|
26
|
+
const existingLocale = await localesService.findByCode(body.code);
|
27
|
+
if (existingLocale) {
|
28
|
+
throw new ApplicationError('This locale already exists');
|
29
|
+
}
|
30
|
+
const localeToPersist = setCreatorFields({
|
31
|
+
user
|
32
|
+
})(formatLocale(localeToCreate));
|
33
|
+
const locale = await localesService.create(localeToPersist);
|
34
|
+
if (isDefault) {
|
35
|
+
await localesService.setDefaultLocale(locale);
|
36
|
+
}
|
37
|
+
const sanitizedLocale = await sanitizeLocale(locale);
|
38
|
+
ctx.body = await localesService.setIsDefault(sanitizedLocale);
|
39
|
+
},
|
40
|
+
async updateLocale (ctx) {
|
41
|
+
const { user } = ctx.state;
|
42
|
+
const { id } = ctx.params;
|
43
|
+
const body = ctx.request.body;
|
44
|
+
const { isDefault, ...updates } = body;
|
45
|
+
await validateUpdateLocaleInput(body);
|
46
|
+
const localesService = getService('locales');
|
47
|
+
const existingLocale = await localesService.findById(id);
|
48
|
+
if (!existingLocale) {
|
49
|
+
return ctx.notFound('locale.notFound');
|
50
|
+
}
|
51
|
+
const allowedParams = [
|
52
|
+
'name'
|
53
|
+
];
|
54
|
+
const cleanUpdates = setCreatorFields({
|
55
|
+
user,
|
56
|
+
isEdition: true
|
57
|
+
})(pick(allowedParams, updates));
|
58
|
+
const updatedLocale = await localesService.update({
|
59
|
+
id
|
60
|
+
}, cleanUpdates);
|
61
|
+
if (isDefault) {
|
62
|
+
await localesService.setDefaultLocale(updatedLocale);
|
63
|
+
}
|
64
|
+
const sanitizedLocale = await sanitizeLocale(updatedLocale);
|
65
|
+
ctx.body = await localesService.setIsDefault(sanitizedLocale);
|
66
|
+
},
|
67
|
+
async deleteLocale (ctx) {
|
68
|
+
const { id } = ctx.params;
|
69
|
+
const localesService = getService('locales');
|
70
|
+
const existingLocale = await localesService.findById(id);
|
71
|
+
if (!existingLocale) {
|
72
|
+
return ctx.notFound('locale.notFound');
|
73
|
+
}
|
74
|
+
const defaultLocaleCode = await localesService.getDefaultLocale();
|
75
|
+
if (existingLocale.code === defaultLocaleCode) {
|
76
|
+
throw new ApplicationError('Cannot delete the default locale');
|
77
|
+
}
|
78
|
+
await localesService.delete({
|
79
|
+
id
|
80
|
+
});
|
81
|
+
const sanitizedLocale = await sanitizeLocale(existingLocale);
|
82
|
+
ctx.body = await localesService.setIsDefault(sanitizedLocale);
|
83
|
+
}
|
84
|
+
};
|
85
|
+
|
86
|
+
export { controller as default };
|
87
|
+
//# sourceMappingURL=locales.mjs.map
|