@localazy/strapi-plugin 0.2.13 → 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/_chunks/App-BSFfgZKU.mjs +5278 -0
- package/dist/_chunks/App-D1QaIMHX.js +5278 -0
- package/dist/_chunks/ContentTransferSetup-DHXJIxAp.js +1552 -0
- package/dist/_chunks/ContentTransferSetup-DtjcF_jM.mjs +1550 -0
- package/dist/_chunks/GlobalSettings-BON3kjHK.js +228 -0
- package/dist/_chunks/GlobalSettings-BcdibqNS.mjs +228 -0
- package/dist/_chunks/LanguagesSelector-BeijBEjg.js +47 -0
- package/dist/_chunks/LanguagesSelector-fyAIUp7M.mjs +48 -0
- package/dist/_chunks/en-BTf8goGM.mjs +8 -0
- package/dist/_chunks/en-CRtsEFtl.js +8 -0
- package/dist/_chunks/fr-C8Qw4iPZ.js +4 -0
- package/dist/_chunks/fr-hkSxFuzl.mjs +4 -0
- package/dist/_chunks/has-model-changed-BMCQX2Dd.js +316 -0
- package/dist/_chunks/has-model-changed-Dvtzpc9v.mjs +317 -0
- package/dist/_chunks/index-BQw2qi2G.js +2679 -0
- package/dist/_chunks/index-CN3Gyh5F.mjs +2678 -0
- package/dist/_chunks/isEqual-B-YVnzrp.js +205 -0
- package/dist/_chunks/isEqual-CEyT97-3.mjs +206 -0
- package/dist/_chunks/set-DUdH3vE5.js +54557 -0
- package/dist/_chunks/set-DulHAQhq.mjs +54542 -0
- package/dist/admin/index.js +4 -0
- package/dist/admin/index.mjs +5 -0
- package/dist/admin/src/components/Initializer.d.ts +5 -0
- package/dist/admin/src/config/development/index.d.ts +15 -0
- package/dist/admin/src/config/example/index.example.d.ts +15 -0
- package/dist/admin/src/config/index.d.ts +15 -0
- package/dist/admin/src/config/local/index.d.ts +15 -0
- package/dist/admin/src/config/production/index.d.ts +15 -0
- package/dist/admin/src/i18n.d.ts +2 -0
- package/dist/admin/src/index.d.ts +10 -0
- package/dist/admin/src/modules/@common/api/strapi-api-base.d.ts +6 -0
- package/dist/admin/src/modules/@common/components/Icons/House.d.ts +2 -0
- package/dist/admin/src/modules/@common/components/Icons/Localazy.d.ts +2 -0
- package/dist/admin/src/modules/@common/components/LanguagesSelector.d.ts +11 -0
- package/dist/admin/src/modules/@common/components/PluginPageLoader.d.ts +2 -0
- package/dist/admin/src/modules/@common/components/SideNav.d.ts +2 -0
- package/dist/admin/src/modules/@common/components/TransferReport.d.ts +5 -0
- package/dist/admin/src/modules/@common/functions/flatten-deep.d.ts +2 -0
- package/dist/admin/src/modules/@common/locale/en.d.ts +14 -0
- package/dist/admin/src/modules/@common/models/supported-content-type-fields.d.ts +2 -0
- package/dist/admin/src/modules/@common/models/supported-custom-field-plugins.d.ts +2 -0
- package/dist/admin/src/modules/@common/services/i18n-service.d.ts +3 -0
- package/dist/admin/src/modules/@common/services/plugin.service.d.ts +3 -0
- package/dist/admin/src/modules/@common/services/product-analytics-service.d.ts +14 -0
- package/dist/admin/src/modules/@common/services/project-service.d.ts +4 -0
- package/dist/admin/src/modules/@common/services/user-service.d.ts +5 -0
- package/dist/admin/src/modules/@common/utils/are-locales-compatible.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/format-number.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/get-default-locale.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/history.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/is-plugin-route.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/iso-locales-utils.d.ts +3 -0
- package/dist/admin/src/modules/@common/utils/redirect-to-plugin-route.d.ts +13 -0
- package/dist/admin/src/modules/@common/utils/sort-by-model-name.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/use-header-subtitle.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/use-header-title.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/use-nav.d.ts +11 -0
- package/dist/admin/src/modules/alerts/constants/channels.d.ts +1 -0
- package/dist/admin/src/modules/alerts/constants/events.d.ts +4 -0
- package/dist/admin/src/modules/alerts/services/alerts-service.d.ts +8 -0
- package/dist/admin/src/modules/localazy-download/locale/en.d.ts +24 -0
- package/dist/admin/src/modules/localazy-download/services/download-alerts-service.d.ts +5 -0
- package/dist/admin/src/modules/localazy-download/services/localazy-download-service.d.ts +3 -0
- package/dist/admin/src/modules/localazy-upload/components/ReadDocsButton.d.ts +3 -0
- package/dist/admin/src/modules/localazy-upload/locale/en.d.ts +19 -0
- package/dist/admin/src/modules/localazy-upload/services/localazy-upload-service.d.ts +3 -0
- package/dist/admin/src/modules/localazy-upload/services/upload-alerts-service.d.ts +5 -0
- package/dist/admin/src/modules/login/components/FetchIdentity.d.ts +3 -0
- package/dist/admin/src/modules/login/components/LoginButton.d.ts +12 -0
- package/dist/admin/src/modules/login/components/LogoutButton.d.ts +6 -0
- package/dist/admin/src/modules/login/locale/en.d.ts +8 -0
- package/dist/admin/src/modules/login/services/localazy-login-service.d.ts +4 -0
- package/dist/admin/src/modules/overview/components/OverviewItem.d.ts +7 -0
- package/dist/admin/src/modules/overview/components/OverviewItemLink.d.ts +7 -0
- package/dist/admin/src/modules/overview/components/PrerequisitiesInfo.d.ts +3 -0
- package/dist/admin/src/modules/overview/locale/en.d.ts +14 -0
- package/dist/admin/src/modules/plugin-settings/components/ContentTransferSetupEmpty.d.ts +2 -0
- package/dist/admin/src/modules/plugin-settings/components/Tree.d.ts +8 -0
- package/dist/admin/src/modules/plugin-settings/components/TreeItem.d.ts +10 -0
- package/dist/admin/src/modules/plugin-settings/functions/build-content-transfer-setup-schema.d.ts +2 -0
- package/dist/admin/src/modules/plugin-settings/functions/get-content-transfer-setup-keys-sets.d.ts +8 -0
- package/dist/admin/src/modules/plugin-settings/functions/has-model-changed.d.ts +6 -0
- package/dist/admin/src/modules/plugin-settings/locale/en.d.ts +49 -0
- package/dist/admin/src/modules/plugin-settings/services/plugin-settings-service.d.ts +6 -0
- package/dist/admin/src/modules/plugin-settings/services/strapi-model-service.d.ts +4 -0
- package/dist/admin/src/modules/plugin-settings/services/strapi-users-service.d.ts +3 -0
- package/dist/admin/src/modules/plugin-settings/utils/array-of-models-to-object.d.ts +2 -0
- package/dist/admin/src/modules/plugin-settings/utils/find-model-value-by-key.d.ts +2 -0
- package/dist/admin/src/modules/plugin-settings/utils/get-filtered-models-schemas.d.ts +7 -0
- package/dist/admin/src/modules/plugin-settings/utils/get-models-tree.d.ts +5 -0
- package/dist/admin/src/modules/strapi/utils/get-default-theme.d.ts +3 -0
- package/dist/admin/src/modules/user/model/localazy-identity.d.ts +15 -0
- package/dist/admin/src/modules/user/services/localazy-user-service.d.ts +6 -0
- package/dist/admin/src/pages/App.d.ts +3 -0
- package/dist/admin/src/pages/ContentTransferSetup.d.ts +4 -0
- package/dist/admin/src/pages/Download.d.ts +7 -0
- package/dist/admin/src/pages/GlobalSettings.d.ts +4 -0
- package/dist/admin/src/pages/HomePage.d.ts +2 -0
- package/dist/admin/src/pages/Login.d.ts +8 -0
- package/dist/admin/src/pages/Overview.d.ts +8 -0
- package/dist/admin/src/pages/Upload.d.ts +7 -0
- package/dist/admin/src/pluginId.d.ts +2 -0
- package/dist/admin/src/plugins/generic-connector-client.d.ts +3 -0
- package/dist/admin/src/state/localazy-identity.d.ts +13 -0
- package/dist/admin/src/utils/getTranslation.d.ts +2 -0
- package/dist/server/index.js +26000 -0
- package/dist/server/index.mjs +25989 -0
- package/dist/server/src/bootstrap.d.ts +5 -0
- package/dist/server/src/config/core/config.d.ts +1 -0
- package/dist/server/src/config/development/index.d.ts +15 -0
- package/dist/server/src/config/example/index.example.d.ts +15 -0
- package/dist/server/src/config/index.d.ts +18 -0
- package/dist/server/src/config/local/index.d.ts +15 -0
- package/dist/server/src/config/production/index.d.ts +15 -0
- package/dist/server/src/constants/channels.d.ts +3 -0
- package/dist/server/src/constants/events.d.ts +6 -0
- package/dist/server/src/content-types/index.d.ts +2 -0
- package/dist/server/src/controllers/index.d.ts +43 -0
- package/dist/server/src/controllers/localazy-auth-controller.d.ts +8 -0
- package/dist/server/src/controllers/localazy-project-controller.d.ts +7 -0
- package/dist/server/src/controllers/localazy-transfer-controller.d.ts +8 -0
- package/dist/server/src/controllers/localazy-user-controller.d.ts +9 -0
- package/dist/server/src/controllers/plugin-settings-controller.d.ts +10 -0
- package/dist/server/src/controllers/strapi-controller.d.ts +10 -0
- package/dist/server/src/core/index.d.ts +71 -0
- package/dist/server/src/db/model/content-transfer-setup.d.ts +4 -0
- package/dist/server/src/db/model/localazy-user.d.ts +17 -0
- package/dist/server/src/db/model/plugin-settings.d.ts +5 -0
- package/dist/server/src/db/model/utils/get-strapi-store.d.ts +26 -0
- package/dist/server/src/destroy.d.ts +5 -0
- package/dist/server/src/functions/should-set-downloaded-property.d.ts +12 -0
- package/dist/server/src/index.d.ts +189 -0
- package/dist/server/src/lifecycles/deep-populate-hook.d.ts +20 -0
- package/dist/server/src/lifecycles/deprecate-event-entry-in-localazy-hook.d.ts +4 -0
- package/dist/server/src/lifecycles/upload-event-entry-to-localazy-hook.d.ts +12 -0
- package/dist/server/src/middlewares/index.d.ts +2 -0
- package/dist/server/src/models/plugin/content-transfer-setup.d.ts +13 -0
- package/dist/server/src/models/strapi/locale.d.ts +8 -0
- package/dist/server/src/policies/index.d.ts +2 -0
- package/dist/server/src/register.d.ts +5 -0
- package/dist/server/src/routes/index.d.ts +25 -0
- package/dist/server/src/routes/localazy-auth-routes.d.ts +9 -0
- package/dist/server/src/routes/localazy-project-routes.d.ts +9 -0
- package/dist/server/src/routes/localazy-transfer-routes.d.ts +9 -0
- package/dist/server/src/routes/localazy-user-routes.d.ts +9 -0
- package/dist/server/src/routes/plugin-settings-routes.d.ts +9 -0
- package/dist/server/src/routes/strapi-routes.d.ts +9 -0
- package/dist/server/src/services/helpers/job-notification-service.d.ts +14 -0
- package/dist/server/src/services/helpers/plugin-settings-service-helper.d.ts +16 -0
- package/dist/server/src/services/index.d.ts +92 -0
- package/dist/server/src/services/localazy-pubapi-service.d.ts +12 -0
- package/dist/server/src/services/localazy-transfer-download-service.d.ts +11 -0
- package/dist/server/src/services/localazy-transfer-upload-service.d.ts +11 -0
- package/dist/server/src/services/localazy-upload-service.d.ts +28 -0
- package/dist/server/src/services/localazy-user-service.d.ts +11 -0
- package/dist/server/src/services/plugin-settings-service.d.ts +16 -0
- package/dist/server/src/services/strapi-i18n-service.d.ts +19 -0
- package/dist/server/src/services/strapi-localazy-i18n-service.d.ts +9 -0
- package/dist/server/src/services/strapi-service.d.ts +10 -0
- package/dist/server/src/utils/delay.d.ts +1 -0
- package/dist/server/src/utils/drop-property-deep.d.ts +1 -0
- package/dist/server/src/utils/flatten-object.d.ts +2 -0
- package/dist/server/src/utils/generate-random-id.d.ts +2 -0
- package/dist/server/src/utils/get-full-populate-localazy-download-object.d.ts +17 -0
- package/dist/server/src/utils/get-full-populate-localazy-upload-object.d.ts +9 -0
- package/dist/server/src/utils/get-full-populate-object.d.ts +17 -0
- package/dist/server/src/utils/get-main-keys-of-nested-array-objects.d.ts +2 -0
- package/dist/server/src/utils/get-picked-flatten-keys-for-hook-entry.d.ts +5 -0
- package/dist/server/src/utils/intl-display-name.d.ts +1 -0
- package/dist/server/src/utils/is-generally-applicable-content-type.d.ts +2 -0
- package/dist/server/src/utils/is-localazy-applicable-content-type.d.ts +2 -0
- package/dist/server/src/utils/iso-locales-utils.d.ts +3 -0
- package/dist/server/src/utils/localazy-api-client-factory.d.ts +3 -0
- package/dist/server/src/utils/localazy-generic-connector-client-factory.d.ts +3 -0
- package/dist/server/src/utils/model-utils.d.ts +7 -0
- package/dist/server/src/utils/omit-deep.d.ts +2 -0
- package/dist/server/src/utils/parsed-localazy-entry-to-create-entry.d.ts +7 -0
- package/dist/server/src/utils/parsed-localazy-entry-to-update-entry.d.ts +1 -0
- package/dist/server/src/utils/pick-entries.d.ts +2 -0
- package/dist/server/src/utils/populate-create-update-entry-with-base-entry.d.ts +1 -0
- package/dist/server/src/utils/request-initiator-helper.d.ts +9 -0
- package/dist/server/src/utils/reset-array-keys-deep.d.ts +1 -0
- package/dist/server/src/utils/transfer-setup-utils.d.ts +7 -0
- package/install/index.mjs +88 -34
- package/install/vite.config.example.js +40 -0
- package/install/vite.config.example.ts +41 -0
- package/install/{webpack.example.js → webpack.config.example.js} +2 -2
- package/install/webpack.config.example.ts +30 -0
- package/package.json +93 -55
- package/.babelrc +0 -7
- package/.eslintrc +0 -13
- package/.github/workflows/qa.yml +0 -25
- package/.github/workflows/release.yml +0 -46
- package/.nvmrc +0 -1
- package/.strapi-updater.json +0 -4
- package/CHANGELOG.md +0 -68
- package/LICENSE +0 -21
- package/admin/src/components/Initializer/index.js +0 -26
- package/admin/src/components/PluginIcon/index.js +0 -14
- package/admin/src/config/development/index.js +0 -14
- package/admin/src/config/example/index.js +0 -14
- package/admin/src/config/index.js +0 -19
- package/admin/src/config/local/index.js +0 -14
- package/admin/src/config/production/index.js +0 -15
- package/admin/src/i18n.js +0 -41
- package/admin/src/index.js +0 -138
- package/admin/src/modules/@common/components/Icons/Localazy/index.js +0 -12
- package/admin/src/modules/@common/components/LanguagesSelector/index.js +0 -67
- package/admin/src/modules/@common/components/PluginPageLoader/index.js +0 -20
- package/admin/src/modules/@common/components/SideNav/index.js +0 -46
- package/admin/src/modules/@common/components/TransferReport/index.js +0 -53
- package/admin/src/modules/@common/locale/en.js +0 -14
- package/admin/src/modules/@common/models/supported-content-type-fields.js +0 -9
- package/admin/src/modules/@common/models/supported-custom-field-plugins.js +0 -6
- package/admin/src/modules/@common/services/i18n-service.js +0 -15
- package/admin/src/modules/@common/services/plugin.service.js +0 -16
- package/admin/src/modules/@common/services/product-analytics-service.js +0 -86
- package/admin/src/modules/@common/services/project-service.js +0 -15
- package/admin/src/modules/@common/services/user-service.js +0 -38
- package/admin/src/modules/@common/utils/__tests__/iso-locales-utils.test.js +0 -102
- package/admin/src/modules/@common/utils/are-locales-compatible.js +0 -42
- package/admin/src/modules/@common/utils/format-number.js +0 -1
- package/admin/src/modules/@common/utils/functions/flatten-deep.js +0 -23
- package/admin/src/modules/@common/utils/get-default-locale.js +0 -32
- package/admin/src/modules/@common/utils/get-header-subtitle.js +0 -21
- package/admin/src/modules/@common/utils/get-header-title.js +0 -24
- package/admin/src/modules/@common/utils/get-nav.js +0 -35
- package/admin/src/modules/@common/utils/history.js +0 -6
- package/admin/src/modules/@common/utils/is-plugin-route.js +0 -15
- package/admin/src/modules/@common/utils/iso-locales-utils.js +0 -58
- package/admin/src/modules/@common/utils/redirect-to-plugin-route.js +0 -22
- package/admin/src/modules/@common/utils/sort-by-model-name.js +0 -10
- package/admin/src/modules/alerts/constants/channels.js +0 -1
- package/admin/src/modules/alerts/constants/events.js +0 -4
- package/admin/src/modules/alerts/services/alerts-service.js +0 -41
- package/admin/src/modules/localazy-download/locale/en.js +0 -25
- package/admin/src/modules/localazy-download/services/download-alerts-service.js +0 -12
- package/admin/src/modules/localazy-download/services/localazy-download-service.js +0 -16
- package/admin/src/modules/localazy-upload/components/ReadDocsButton.js +0 -20
- package/admin/src/modules/localazy-upload/locale/en.js +0 -20
- package/admin/src/modules/localazy-upload/services/localazy-upload-service.js +0 -16
- package/admin/src/modules/localazy-upload/services/upload-alerts-service.js +0 -12
- package/admin/src/modules/login/components/LoginButton/index.js +0 -55
- package/admin/src/modules/login/components/LogoutButton/index.js +0 -49
- package/admin/src/modules/login/locale/en.js +0 -7
- package/admin/src/modules/login/services/localazy-login-service.js +0 -29
- package/admin/src/modules/plugin-settings/components/ContentTransferSetup/index.js +0 -308
- package/admin/src/modules/plugin-settings/components/ContentTransferSetupEmpty/index.js +0 -86
- package/admin/src/modules/plugin-settings/components/GlobalSettings/index.js +0 -269
- package/admin/src/modules/plugin-settings/components/Tree/index.js +0 -145
- package/admin/src/modules/plugin-settings/components/TreeItem/index.js +0 -48
- package/admin/src/modules/plugin-settings/functions/build-content-transfer-setup-schema.js +0 -57
- package/admin/src/modules/plugin-settings/functions/get-content-transfer-setup-keys-sets.js +0 -85
- package/admin/src/modules/plugin-settings/functions/has-model-changed.js +0 -75
- package/admin/src/modules/plugin-settings/locale/en.js +0 -61
- package/admin/src/modules/plugin-settings/services/plugin-settings-service.js +0 -55
- package/admin/src/modules/plugin-settings/services/strapi-model-service.js +0 -26
- package/admin/src/modules/plugin-settings/services/strapi-users-service.js +0 -26
- package/admin/src/modules/plugin-settings/utils/__tests__/get-models-tree.test.js +0 -135
- package/admin/src/modules/plugin-settings/utils/array-of-models-to-object.js +0 -6
- package/admin/src/modules/plugin-settings/utils/find-model-value-by-key.js +0 -8
- package/admin/src/modules/plugin-settings/utils/get-filtered-models-schemas.js +0 -31
- package/admin/src/modules/plugin-settings/utils/get-models-tree.js +0 -94
- package/admin/src/modules/settings/components/OverviewItem/index.js +0 -44
- package/admin/src/modules/settings/components/OverviewItemLink/index.js +0 -34
- package/admin/src/modules/settings/components/PrerequisitiesInfo/index.js +0 -28
- package/admin/src/modules/settings/locale/en.js +0 -13
- package/admin/src/modules/user/model/localazy-identity.js +0 -14
- package/admin/src/modules/user/services/localazy-user-service.js +0 -38
- package/admin/src/pages/App/index.js +0 -154
- package/admin/src/pages/Download/index.js +0 -280
- package/admin/src/pages/Index/index.js +0 -8
- package/admin/src/pages/Login/index.js +0 -109
- package/admin/src/pages/PluginSettings/index.js +0 -56
- package/admin/src/pages/Settings/index.js +0 -132
- package/admin/src/pages/Upload/index.js +0 -241
- package/admin/src/pluginId.js +0 -5
- package/admin/src/plugins/generic-connector-client.js +0 -9
- package/admin/src/state/localazy-identity.js +0 -29
- package/admin/src/tests/fixtures/all-models.js +0 -877
- package/admin/src/tests/fixtures/restaurant-model.js +0 -230
- package/admin/src/translations/en.json +0 -4
- package/admin/src/translations/fr.json +0 -1
- package/admin/src/utils/createAxiosInstance.js +0 -54
- package/admin/src/utils/getTrad.js +0 -5
- package/jest.config.js +0 -0
- package/server/bootstrap.js +0 -63
- package/server/config/development/index.js +0 -16
- package/server/config/example/index.js +0 -16
- package/server/config/index.js +0 -20
- package/server/config/local/index.js +0 -16
- package/server/config/production/index.js +0 -17
- package/server/config/schema.graphql.js +0 -21
- package/server/constants/channels.js +0 -3
- package/server/constants/events.js +0 -6
- package/server/content-types/index.js +0 -3
- package/server/controllers/index.js +0 -17
- package/server/controllers/localazy-auth-controller.js +0 -22
- package/server/controllers/localazy-project-controller.js +0 -21
- package/server/controllers/localazy-transfer-controller.js +0 -62
- package/server/controllers/localazy-user-controller.js +0 -24
- package/server/controllers/plugin-settings-controller.js +0 -31
- package/server/controllers/strapi-controller.js +0 -27
- package/server/db/model/content-transfer-setup.js +0 -13
- package/server/db/model/localazy-user.js +0 -23
- package/server/db/model/plugin-settings.js +0 -13
- package/server/db/model/utils/get-strapi-store.js +0 -9
- package/server/destroy.js +0 -5
- package/server/functions/should-set-downloaded-property.js +0 -94
- package/server/index.js +0 -25
- package/server/lifecycles/deep-populate-hook.js +0 -12
- package/server/lifecycles/deprecate-event-entry-in-localazy-hook.js +0 -73
- package/server/lifecycles/upload-event-entry-to-localazy-hook.js +0 -36
- package/server/middlewares/index.js +0 -7
- package/server/middlewares/verify-webhook.js +0 -76
- package/server/models/supported-content-type-fields.js +0 -9
- package/server/models/supported-custom-field-plugins.js +0 -6
- package/server/policies/index.js +0 -3
- package/server/register.js +0 -5
- package/server/routes/index.js +0 -28
- package/server/routes/localazy-auth.js +0 -22
- package/server/routes/localazy-project.js +0 -14
- package/server/routes/localazy-public-transfer.js +0 -20
- package/server/routes/localazy-transfer.js +0 -22
- package/server/routes/localazy-user.js +0 -30
- package/server/routes/plugin-settings.js +0 -38
- package/server/routes/strapi.js +0 -38
- package/server/services/helpers/job-notification-service.js +0 -30
- package/server/services/helpers/plugin-settings-service-helper.js +0 -52
- package/server/services/index.js +0 -23
- package/server/services/localazy-pubapi-service.js +0 -53
- package/server/services/localazy-transfer-download-service.js +0 -445
- package/server/services/localazy-transfer-upload-service.js +0 -178
- package/server/services/localazy-upload-service.js +0 -52
- package/server/services/localazy-user-service.js +0 -29
- package/server/services/plugin-settings-service.js +0 -53
- package/server/services/strapi-i18n-service.js +0 -151
- package/server/services/strapi-localazy-i18n-service.js +0 -130
- package/server/services/strapi-service.js +0 -26
- package/server/tests/fixtures/all-models.js +0 -869
- package/server/tests/fixtures/parsed-localazy-entry-to-create-entry-cookbook.js +0 -5761
- package/server/tests/fixtures/parsed-localazy-entry-to-create-entry-lesson-dz.js +0 -402
- package/server/tests/fixtures/parsed-localazy-entry-to-create-entry-page-dz.js +0 -658
- package/server/tests/fixtures/parsed-localazy-entry-to-create-entry-restaurant-simple-menu.js +0 -536
- package/server/tests/fixtures/parsed-localazy-entry-to-update-entry.js +0 -35157
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-cookbook-empty-recipes.js +0 -202
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-cookbook.js +0 -2700
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-lesson-dz.js +0 -309
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-restaurant-simple-flat-simple.js +0 -47
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-restaurant-simple-flat-with-media.js +0 -169
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-restaurant-simple-menu-empty.js +0 -3003
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-restaurant-simple-menu-with-media.js +0 -2057
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-sample-json-dz.js +0 -884
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-sample-json.js +0 -46
- package/server/tests/fixtures/strapi-plugin-all-models.js +0 -7000
- package/server/utils/__tests__/build-populate.test.js +0 -85
- package/server/utils/__tests__/flatten-object.test.js +0 -171
- package/server/utils/__tests__/get-models-tree.test.js +0 -170
- package/server/utils/__tests__/iso-locales-utils.test.js +0 -104
- package/server/utils/__tests__/parsed-localazy-entry-to-create-entry.test.js +0 -258
- package/server/utils/__tests__/parsed-localazy-entry-to-update-entry.test.js +0 -456
- package/server/utils/__tests__/pick-entries.test.js +0 -963
- package/server/utils/__tests__/populate-create-update-entry-with-base-entry.test.js +0 -1176
- package/server/utils/build-populate.js +0 -48
- package/server/utils/delay.js +0 -6
- package/server/utils/flatten-object.js +0 -61
- package/server/utils/generate-random-id.js +0 -3
- package/server/utils/get-full-populate-object.js +0 -66
- package/server/utils/get-main-keys-of-nested-array-objects.js +0 -5
- package/server/utils/get-models-tree.js +0 -47
- package/server/utils/get-picked-flatten-keys-for-hook-entry.js +0 -270
- package/server/utils/intl-display-name.js +0 -4
- package/server/utils/is-generally-applicable-content-type.js +0 -33
- package/server/utils/is-localazy-applicable-content-type.js +0 -36
- package/server/utils/iso-locales-utils.js +0 -60
- package/server/utils/localazy-api-client-factory.js +0 -22
- package/server/utils/localazy-generic-connector-client-factory.js +0 -15
- package/server/utils/model-utils.js +0 -43
- package/server/utils/objectivise-entry.js +0 -41
- package/server/utils/omit-deep.js +0 -24
- package/server/utils/parsed-localazy-entry-to-create-entry.js +0 -194
- package/server/utils/parsed-localazy-entry-to-update-entry.js +0 -83
- package/server/utils/pick-deep.js +0 -22
- package/server/utils/pick-entries.js +0 -37
- package/server/utils/populate-create-update-entry-with-base-entry.js +0 -264
- package/server/utils/request-initiator-helper.js +0 -36
- package/server/utils/reset-array-keys-deep.js +0 -19
- package/server/utils/transfer-setup-utils.js +0 -93
- package/strapi-admin.js +0 -14
- package/strapi-server.js +0 -5
- package/test/helpers/mocks.js +0 -9
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const set = require("./set-DUdH3vE5.js");
|
|
3
|
+
const index = require("./index-BQw2qi2G.js");
|
|
4
|
+
function baseGet(object, path) {
|
|
5
|
+
path = set.castPath(path, object);
|
|
6
|
+
var index2 = 0, length = path.length;
|
|
7
|
+
while (object != null && index2 < length) {
|
|
8
|
+
object = object[set.toKey(path[index2++])];
|
|
9
|
+
}
|
|
10
|
+
return index2 && index2 == length ? object : void 0;
|
|
11
|
+
}
|
|
12
|
+
function get(object, path, defaultValue) {
|
|
13
|
+
var result = object == null ? void 0 : baseGet(object, path);
|
|
14
|
+
return result === void 0 ? defaultValue : result;
|
|
15
|
+
}
|
|
16
|
+
const BASE_PATH = "/strapi";
|
|
17
|
+
const strapiApiAxiosInstance = index.createStrapiApiAxiosInstance();
|
|
18
|
+
class StrapiModelService {
|
|
19
|
+
static async getModels() {
|
|
20
|
+
try {
|
|
21
|
+
const result = await strapiApiAxiosInstance.get(`${BASE_PATH}/models`);
|
|
22
|
+
return result.data;
|
|
23
|
+
} catch (e) {
|
|
24
|
+
throw e.message;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
static async getLocalizableModels() {
|
|
28
|
+
try {
|
|
29
|
+
const result = await strapiApiAxiosInstance.get(`${BASE_PATH}/localizable-models`);
|
|
30
|
+
return result.data;
|
|
31
|
+
} catch (e) {
|
|
32
|
+
throw e.message;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const SUPPORTED_CONTENT_TYPE_FIELDS = [
|
|
37
|
+
"string",
|
|
38
|
+
"text",
|
|
39
|
+
"richtext",
|
|
40
|
+
"email",
|
|
41
|
+
"json"
|
|
42
|
+
];
|
|
43
|
+
const SUPPORTED_CUSTOM_FIELD_PLUGINS = [
|
|
44
|
+
"plugin::ckeditor.CKEditor",
|
|
45
|
+
"plugin::ckeditor5.CKEditor"
|
|
46
|
+
];
|
|
47
|
+
const getModelsTree = (allModels, localizableModels = []) => {
|
|
48
|
+
const modelsTree = [];
|
|
49
|
+
const getModelTree = (attributes, isComponentAttributes = false, isComponentAttributesObjectTranslatable = null) => {
|
|
50
|
+
const currentModelTree = {};
|
|
51
|
+
for (const attribute in attributes) {
|
|
52
|
+
if (attributes[attribute].type === "component") {
|
|
53
|
+
const nestedModel = allModels.find((model) => model.uid === attributes[attribute].component);
|
|
54
|
+
currentModelTree[attribute] = {
|
|
55
|
+
...getModelTree(
|
|
56
|
+
nestedModel.__schema__.attributes,
|
|
57
|
+
true,
|
|
58
|
+
isComponentAttributesObjectTranslatable === null ? attributes[attribute].pluginOptions?.i18n?.localized || false : isComponentAttributesObjectTranslatable
|
|
59
|
+
)
|
|
60
|
+
};
|
|
61
|
+
} else if (attributes[attribute].type === "dynamiczone") {
|
|
62
|
+
const components = attributes[attribute].components;
|
|
63
|
+
currentModelTree[attribute] = [];
|
|
64
|
+
components.forEach((c) => {
|
|
65
|
+
const nestedModel = allModels.find((model) => model.uid === c);
|
|
66
|
+
const modelTree = getModelTree(
|
|
67
|
+
nestedModel.__schema__.attributes,
|
|
68
|
+
true,
|
|
69
|
+
isComponentAttributesObjectTranslatable === null ? attributes[attribute].pluginOptions?.i18n?.localized || false : isComponentAttributesObjectTranslatable
|
|
70
|
+
);
|
|
71
|
+
currentModelTree[attribute].push({
|
|
72
|
+
__component__: c,
|
|
73
|
+
...modelTree
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
} else if (SUPPORTED_CONTENT_TYPE_FIELDS.includes(attributes[attribute].type) || attributes[attribute].type === "customField" && SUPPORTED_CUSTOM_FIELD_PLUGINS.includes(attributes[attribute].customField)) {
|
|
77
|
+
if (isComponentAttributes) {
|
|
78
|
+
if (isComponentAttributesObjectTranslatable) {
|
|
79
|
+
currentModelTree[attribute] = false;
|
|
80
|
+
} else {
|
|
81
|
+
currentModelTree[attribute] = null;
|
|
82
|
+
}
|
|
83
|
+
} else if (!isComponentAttributes && (!attributes[attribute].pluginOptions || !attributes[attribute].pluginOptions.i18n || !attributes[attribute].pluginOptions.i18n.localized)) {
|
|
84
|
+
currentModelTree[attribute] = null;
|
|
85
|
+
} else {
|
|
86
|
+
currentModelTree[attribute] = false;
|
|
87
|
+
}
|
|
88
|
+
} else {
|
|
89
|
+
currentModelTree[attribute] = null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return currentModelTree;
|
|
93
|
+
};
|
|
94
|
+
for (const model of localizableModels) {
|
|
95
|
+
if (model.__schema__.collectionName) {
|
|
96
|
+
const modelTree = {
|
|
97
|
+
[model.__schema__.collectionName]: {
|
|
98
|
+
__model__: true,
|
|
99
|
+
...getModelTree(model.__schema__.attributes)
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
modelsTree.push(modelTree);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return modelsTree;
|
|
106
|
+
};
|
|
107
|
+
const arrayOfModelsToObject = (array) => array.reduce((obj, item) => {
|
|
108
|
+
obj[Object.keys(item)[0]] = item;
|
|
109
|
+
return obj;
|
|
110
|
+
}, {});
|
|
111
|
+
const findModelValueByKey = (allModelsTree, key) => {
|
|
112
|
+
const objectivizedModelsTree = arrayOfModelsToObject(allModelsTree);
|
|
113
|
+
return get(objectivizedModelsTree, key);
|
|
114
|
+
};
|
|
115
|
+
function baseFindIndex(array, predicate, fromIndex, fromRight) {
|
|
116
|
+
var length = array.length, index2 = fromIndex + -1;
|
|
117
|
+
while (++index2 < length) {
|
|
118
|
+
if (predicate(array[index2], index2, array)) {
|
|
119
|
+
return index2;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return -1;
|
|
123
|
+
}
|
|
124
|
+
function baseIsNaN(value) {
|
|
125
|
+
return value !== value;
|
|
126
|
+
}
|
|
127
|
+
function strictIndexOf(array, value, fromIndex) {
|
|
128
|
+
var index2 = fromIndex - 1, length = array.length;
|
|
129
|
+
while (++index2 < length) {
|
|
130
|
+
if (array[index2] === value) {
|
|
131
|
+
return index2;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return -1;
|
|
135
|
+
}
|
|
136
|
+
function baseIndexOf(array, value, fromIndex) {
|
|
137
|
+
return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
|
|
138
|
+
}
|
|
139
|
+
function arrayIncludes(array, value) {
|
|
140
|
+
var length = array == null ? 0 : array.length;
|
|
141
|
+
return !!length && baseIndexOf(array, value, 0) > -1;
|
|
142
|
+
}
|
|
143
|
+
function noop() {
|
|
144
|
+
}
|
|
145
|
+
var INFINITY = 1 / 0;
|
|
146
|
+
var createSet = !(set.Set && 1 / set.setToArray(new set.Set([, -0]))[1] == INFINITY) ? noop : function(values) {
|
|
147
|
+
return new set.Set(values);
|
|
148
|
+
};
|
|
149
|
+
var LARGE_ARRAY_SIZE = 200;
|
|
150
|
+
function baseUniq(array, iteratee, comparator) {
|
|
151
|
+
var index2 = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result;
|
|
152
|
+
if (length >= LARGE_ARRAY_SIZE) {
|
|
153
|
+
var set$1 = createSet(array);
|
|
154
|
+
if (set$1) {
|
|
155
|
+
return set.setToArray(set$1);
|
|
156
|
+
}
|
|
157
|
+
isCommon = false;
|
|
158
|
+
includes = set.cacheHas;
|
|
159
|
+
seen = new set.SetCache();
|
|
160
|
+
} else {
|
|
161
|
+
seen = result;
|
|
162
|
+
}
|
|
163
|
+
outer:
|
|
164
|
+
while (++index2 < length) {
|
|
165
|
+
var value = array[index2], computed = value;
|
|
166
|
+
value = value !== 0 ? value : 0;
|
|
167
|
+
if (isCommon && computed === computed) {
|
|
168
|
+
var seenIndex = seen.length;
|
|
169
|
+
while (seenIndex--) {
|
|
170
|
+
if (seen[seenIndex] === computed) {
|
|
171
|
+
continue outer;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
result.push(value);
|
|
175
|
+
} else if (!includes(seen, computed, comparator)) {
|
|
176
|
+
if (seen !== result) {
|
|
177
|
+
seen.push(computed);
|
|
178
|
+
}
|
|
179
|
+
result.push(value);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
function uniq(array) {
|
|
185
|
+
return array && array.length ? baseUniq(array) : [];
|
|
186
|
+
}
|
|
187
|
+
function isObject(value) {
|
|
188
|
+
return value !== null && typeof value === "object" && !(value instanceof Date);
|
|
189
|
+
}
|
|
190
|
+
var isArray = Array.isArray;
|
|
191
|
+
function deepKeys(obj, stack, parent, intermediate) {
|
|
192
|
+
Object.keys(obj).forEach(function(el) {
|
|
193
|
+
var escaped = el.replace(/\./g, "\\.");
|
|
194
|
+
if (isObject(obj[el]) && !isArray(obj[el])) {
|
|
195
|
+
var p = parent ? parent + "." + escaped : parent;
|
|
196
|
+
if (intermediate) stack.push(parent ? p : escaped);
|
|
197
|
+
deepKeys(obj[el], stack, p || escaped, intermediate);
|
|
198
|
+
} else if (isArray(obj[el])) {
|
|
199
|
+
obj[el].forEach((item, index2) => {
|
|
200
|
+
var p2 = parent ? parent + `.${escaped}.${index2}` : parent;
|
|
201
|
+
if (intermediate) stack.push(parent ? p2 : `${escaped}.${index2}`);
|
|
202
|
+
deepKeys(item, stack, p2 || `${escaped}.${index2}`, intermediate);
|
|
203
|
+
});
|
|
204
|
+
} else {
|
|
205
|
+
var key = parent ? parent + "." + escaped : escaped;
|
|
206
|
+
stack.push(key);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
return stack;
|
|
210
|
+
}
|
|
211
|
+
var deepKeys_1 = function(obj, intermediate) {
|
|
212
|
+
return deepKeys(obj, [], null, intermediate);
|
|
213
|
+
};
|
|
214
|
+
const deepKeys$1 = /* @__PURE__ */ set.getDefaultExportFromCjs(deepKeys_1);
|
|
215
|
+
const sortByModelName = (a, b) => {
|
|
216
|
+
const uidA = Object.keys(a)[0].toLowerCase();
|
|
217
|
+
const uidB = Object.keys(b)[0].toLowerCase();
|
|
218
|
+
if (uidA < uidB) return -1;
|
|
219
|
+
if (uidA > uidB) return 1;
|
|
220
|
+
return 0;
|
|
221
|
+
};
|
|
222
|
+
const getContentTransferSetupKeysSets = (localizableTree = [], storedSetupSchema = []) => {
|
|
223
|
+
localizableTree = arrayOfModelsToObject(localizableTree.sort(sortByModelName));
|
|
224
|
+
storedSetupSchema = arrayOfModelsToObject(storedSetupSchema.sort(sortByModelName));
|
|
225
|
+
const currentModelsSchemaKeys = deepKeys$1(localizableTree);
|
|
226
|
+
const storedSetupSchemaKeys = deepKeys$1(storedSetupSchema);
|
|
227
|
+
const regex = /\.\d+\.__component__/;
|
|
228
|
+
let currentModelsSchemaComponentKeys = currentModelsSchemaKeys.filter((key) => key.match(regex)).map((key) => key.replace(regex, ""));
|
|
229
|
+
let storedSetupSchemaComponentKeys = storedSetupSchemaKeys.filter((key) => key.match(regex)).map((key) => key.replace(regex, ""));
|
|
230
|
+
currentModelsSchemaComponentKeys = uniq(currentModelsSchemaComponentKeys);
|
|
231
|
+
storedSetupSchemaComponentKeys = uniq(storedSetupSchemaComponentKeys);
|
|
232
|
+
const currentModelsSchemaComponentKeysComponentProp = currentModelsSchemaKeys.filter(
|
|
233
|
+
(key) => key.includes("__component__") && currentModelsSchemaComponentKeys.some((k) => key.includes(k))
|
|
234
|
+
);
|
|
235
|
+
const storedSetupSchemaComponentKeysComponentProp = storedSetupSchemaKeys.filter(
|
|
236
|
+
(key) => key.includes("__component__") && storedSetupSchemaComponentKeys.some((k) => key.includes(k))
|
|
237
|
+
);
|
|
238
|
+
let removedKeys = [];
|
|
239
|
+
removedKeys.push(
|
|
240
|
+
...storedSetupSchemaComponentKeysComponentProp.map((key) => {
|
|
241
|
+
const storedComponentName = get(storedSetupSchema, key);
|
|
242
|
+
const currentComponentName = get(localizableTree, key);
|
|
243
|
+
if (storedComponentName !== currentComponentName) {
|
|
244
|
+
const part = key.split(".").slice(0, -1).join(".");
|
|
245
|
+
return storedSetupSchemaKeys.filter((k) => k.includes(part));
|
|
246
|
+
}
|
|
247
|
+
return [];
|
|
248
|
+
}).reduce((acc, val) => acc.concat(val), [])
|
|
249
|
+
);
|
|
250
|
+
removedKeys.push(...storedSetupSchemaKeys.filter((key) => !currentModelsSchemaKeys.includes(key)));
|
|
251
|
+
removedKeys = uniq(removedKeys);
|
|
252
|
+
let newKeys = [];
|
|
253
|
+
newKeys.push(
|
|
254
|
+
...currentModelsSchemaComponentKeysComponentProp.map((key) => {
|
|
255
|
+
const storedComponentName = get(storedSetupSchema, key);
|
|
256
|
+
const currentComponentName = get(localizableTree, key);
|
|
257
|
+
if (storedComponentName !== currentComponentName) {
|
|
258
|
+
const part = key.split(".").slice(0, -1).join(".");
|
|
259
|
+
return currentModelsSchemaKeys.filter((k) => k.includes(part));
|
|
260
|
+
}
|
|
261
|
+
return [];
|
|
262
|
+
}).reduce((acc, val) => acc.concat(val), [])
|
|
263
|
+
);
|
|
264
|
+
newKeys.push(...currentModelsSchemaKeys.filter((key) => !storedSetupSchemaKeys.includes(key)));
|
|
265
|
+
newKeys = uniq(newKeys);
|
|
266
|
+
const filteredStoredSetupSchemaKeys = storedSetupSchemaKeys.filter((key) => !removedKeys.includes(key));
|
|
267
|
+
return {
|
|
268
|
+
oLocalizableTree: localizableTree,
|
|
269
|
+
oStoredSetupSchema: storedSetupSchema,
|
|
270
|
+
removedKeys,
|
|
271
|
+
newKeys,
|
|
272
|
+
filteredStoredSetupSchemaKeys
|
|
273
|
+
};
|
|
274
|
+
};
|
|
275
|
+
const hasModelChanged = async (localizableTree = null, storedSetupSchema = null, allModelsTree = null) => {
|
|
276
|
+
let models;
|
|
277
|
+
if (!localizableTree || !allModelsTree) {
|
|
278
|
+
models = await StrapiModelService.getModels();
|
|
279
|
+
}
|
|
280
|
+
if (!localizableTree) {
|
|
281
|
+
const localizableModels = await StrapiModelService.getLocalizableModels();
|
|
282
|
+
localizableTree = getModelsTree(models, localizableModels);
|
|
283
|
+
}
|
|
284
|
+
if (!storedSetupSchema) {
|
|
285
|
+
storedSetupSchema = (await set.PluginSettingsService.getContentTransferSetup()).setup;
|
|
286
|
+
}
|
|
287
|
+
if (!allModelsTree) {
|
|
288
|
+
allModelsTree = getModelsTree(models, models);
|
|
289
|
+
}
|
|
290
|
+
const { oStoredSetupSchema, removedKeys, newKeys, filteredStoredSetupSchemaKeys } = getContentTransferSetupKeysSets(
|
|
291
|
+
localizableTree,
|
|
292
|
+
storedSetupSchema || []
|
|
293
|
+
);
|
|
294
|
+
if (newKeys.length || removedKeys.length) {
|
|
295
|
+
return true;
|
|
296
|
+
}
|
|
297
|
+
for (const key of filteredStoredSetupSchemaKeys) {
|
|
298
|
+
const localizableTreeValueToSet = get(oStoredSetupSchema, key);
|
|
299
|
+
const allModelsTreeValueToSet = findModelValueByKey(allModelsTree, key);
|
|
300
|
+
if (typeof localizableTreeValueToSet === "boolean" && allModelsTreeValueToSet === null) {
|
|
301
|
+
return true;
|
|
302
|
+
}
|
|
303
|
+
if (localizableTreeValueToSet === null && typeof allModelsTreeValueToSet === "boolean") {
|
|
304
|
+
return true;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return false;
|
|
308
|
+
};
|
|
309
|
+
exports.SUPPORTED_CONTENT_TYPE_FIELDS = SUPPORTED_CONTENT_TYPE_FIELDS;
|
|
310
|
+
exports.SUPPORTED_CUSTOM_FIELD_PLUGINS = SUPPORTED_CUSTOM_FIELD_PLUGINS;
|
|
311
|
+
exports.StrapiModelService = StrapiModelService;
|
|
312
|
+
exports.findModelValueByKey = findModelValueByKey;
|
|
313
|
+
exports.get = get;
|
|
314
|
+
exports.getContentTransferSetupKeysSets = getContentTransferSetupKeysSets;
|
|
315
|
+
exports.getModelsTree = getModelsTree;
|
|
316
|
+
exports.hasModelChanged = hasModelChanged;
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import { W as castPath, X as toKey, Y as Set, Z as setToArray, _ as SetCache, $ as cacheHas, g as getDefaultExportFromCjs, P as PluginSettingsService } from "./set-DulHAQhq.mjs";
|
|
2
|
+
import { c as createStrapiApiAxiosInstance } from "./index-CN3Gyh5F.mjs";
|
|
3
|
+
function baseGet(object, path) {
|
|
4
|
+
path = castPath(path, object);
|
|
5
|
+
var index = 0, length = path.length;
|
|
6
|
+
while (object != null && index < length) {
|
|
7
|
+
object = object[toKey(path[index++])];
|
|
8
|
+
}
|
|
9
|
+
return index && index == length ? object : void 0;
|
|
10
|
+
}
|
|
11
|
+
function get(object, path, defaultValue) {
|
|
12
|
+
var result = object == null ? void 0 : baseGet(object, path);
|
|
13
|
+
return result === void 0 ? defaultValue : result;
|
|
14
|
+
}
|
|
15
|
+
const BASE_PATH = "/strapi";
|
|
16
|
+
const strapiApiAxiosInstance = createStrapiApiAxiosInstance();
|
|
17
|
+
class StrapiModelService {
|
|
18
|
+
static async getModels() {
|
|
19
|
+
try {
|
|
20
|
+
const result = await strapiApiAxiosInstance.get(`${BASE_PATH}/models`);
|
|
21
|
+
return result.data;
|
|
22
|
+
} catch (e) {
|
|
23
|
+
throw e.message;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
static async getLocalizableModels() {
|
|
27
|
+
try {
|
|
28
|
+
const result = await strapiApiAxiosInstance.get(`${BASE_PATH}/localizable-models`);
|
|
29
|
+
return result.data;
|
|
30
|
+
} catch (e) {
|
|
31
|
+
throw e.message;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const SUPPORTED_CONTENT_TYPE_FIELDS = [
|
|
36
|
+
"string",
|
|
37
|
+
"text",
|
|
38
|
+
"richtext",
|
|
39
|
+
"email",
|
|
40
|
+
"json"
|
|
41
|
+
];
|
|
42
|
+
const SUPPORTED_CUSTOM_FIELD_PLUGINS = [
|
|
43
|
+
"plugin::ckeditor.CKEditor",
|
|
44
|
+
"plugin::ckeditor5.CKEditor"
|
|
45
|
+
];
|
|
46
|
+
const getModelsTree = (allModels, localizableModels = []) => {
|
|
47
|
+
const modelsTree = [];
|
|
48
|
+
const getModelTree = (attributes, isComponentAttributes = false, isComponentAttributesObjectTranslatable = null) => {
|
|
49
|
+
const currentModelTree = {};
|
|
50
|
+
for (const attribute in attributes) {
|
|
51
|
+
if (attributes[attribute].type === "component") {
|
|
52
|
+
const nestedModel = allModels.find((model) => model.uid === attributes[attribute].component);
|
|
53
|
+
currentModelTree[attribute] = {
|
|
54
|
+
...getModelTree(
|
|
55
|
+
nestedModel.__schema__.attributes,
|
|
56
|
+
true,
|
|
57
|
+
isComponentAttributesObjectTranslatable === null ? attributes[attribute].pluginOptions?.i18n?.localized || false : isComponentAttributesObjectTranslatable
|
|
58
|
+
)
|
|
59
|
+
};
|
|
60
|
+
} else if (attributes[attribute].type === "dynamiczone") {
|
|
61
|
+
const components = attributes[attribute].components;
|
|
62
|
+
currentModelTree[attribute] = [];
|
|
63
|
+
components.forEach((c) => {
|
|
64
|
+
const nestedModel = allModels.find((model) => model.uid === c);
|
|
65
|
+
const modelTree = getModelTree(
|
|
66
|
+
nestedModel.__schema__.attributes,
|
|
67
|
+
true,
|
|
68
|
+
isComponentAttributesObjectTranslatable === null ? attributes[attribute].pluginOptions?.i18n?.localized || false : isComponentAttributesObjectTranslatable
|
|
69
|
+
);
|
|
70
|
+
currentModelTree[attribute].push({
|
|
71
|
+
__component__: c,
|
|
72
|
+
...modelTree
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
} else if (SUPPORTED_CONTENT_TYPE_FIELDS.includes(attributes[attribute].type) || attributes[attribute].type === "customField" && SUPPORTED_CUSTOM_FIELD_PLUGINS.includes(attributes[attribute].customField)) {
|
|
76
|
+
if (isComponentAttributes) {
|
|
77
|
+
if (isComponentAttributesObjectTranslatable) {
|
|
78
|
+
currentModelTree[attribute] = false;
|
|
79
|
+
} else {
|
|
80
|
+
currentModelTree[attribute] = null;
|
|
81
|
+
}
|
|
82
|
+
} else if (!isComponentAttributes && (!attributes[attribute].pluginOptions || !attributes[attribute].pluginOptions.i18n || !attributes[attribute].pluginOptions.i18n.localized)) {
|
|
83
|
+
currentModelTree[attribute] = null;
|
|
84
|
+
} else {
|
|
85
|
+
currentModelTree[attribute] = false;
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
currentModelTree[attribute] = null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return currentModelTree;
|
|
92
|
+
};
|
|
93
|
+
for (const model of localizableModels) {
|
|
94
|
+
if (model.__schema__.collectionName) {
|
|
95
|
+
const modelTree = {
|
|
96
|
+
[model.__schema__.collectionName]: {
|
|
97
|
+
__model__: true,
|
|
98
|
+
...getModelTree(model.__schema__.attributes)
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
modelsTree.push(modelTree);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return modelsTree;
|
|
105
|
+
};
|
|
106
|
+
const arrayOfModelsToObject = (array) => array.reduce((obj, item) => {
|
|
107
|
+
obj[Object.keys(item)[0]] = item;
|
|
108
|
+
return obj;
|
|
109
|
+
}, {});
|
|
110
|
+
const findModelValueByKey = (allModelsTree, key) => {
|
|
111
|
+
const objectivizedModelsTree = arrayOfModelsToObject(allModelsTree);
|
|
112
|
+
return get(objectivizedModelsTree, key);
|
|
113
|
+
};
|
|
114
|
+
function baseFindIndex(array, predicate, fromIndex, fromRight) {
|
|
115
|
+
var length = array.length, index = fromIndex + -1;
|
|
116
|
+
while (++index < length) {
|
|
117
|
+
if (predicate(array[index], index, array)) {
|
|
118
|
+
return index;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return -1;
|
|
122
|
+
}
|
|
123
|
+
function baseIsNaN(value) {
|
|
124
|
+
return value !== value;
|
|
125
|
+
}
|
|
126
|
+
function strictIndexOf(array, value, fromIndex) {
|
|
127
|
+
var index = fromIndex - 1, length = array.length;
|
|
128
|
+
while (++index < length) {
|
|
129
|
+
if (array[index] === value) {
|
|
130
|
+
return index;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return -1;
|
|
134
|
+
}
|
|
135
|
+
function baseIndexOf(array, value, fromIndex) {
|
|
136
|
+
return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
|
|
137
|
+
}
|
|
138
|
+
function arrayIncludes(array, value) {
|
|
139
|
+
var length = array == null ? 0 : array.length;
|
|
140
|
+
return !!length && baseIndexOf(array, value, 0) > -1;
|
|
141
|
+
}
|
|
142
|
+
function noop() {
|
|
143
|
+
}
|
|
144
|
+
var INFINITY = 1 / 0;
|
|
145
|
+
var createSet = !(Set && 1 / setToArray(new Set([, -0]))[1] == INFINITY) ? noop : function(values) {
|
|
146
|
+
return new Set(values);
|
|
147
|
+
};
|
|
148
|
+
var LARGE_ARRAY_SIZE = 200;
|
|
149
|
+
function baseUniq(array, iteratee, comparator) {
|
|
150
|
+
var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result;
|
|
151
|
+
if (length >= LARGE_ARRAY_SIZE) {
|
|
152
|
+
var set = createSet(array);
|
|
153
|
+
if (set) {
|
|
154
|
+
return setToArray(set);
|
|
155
|
+
}
|
|
156
|
+
isCommon = false;
|
|
157
|
+
includes = cacheHas;
|
|
158
|
+
seen = new SetCache();
|
|
159
|
+
} else {
|
|
160
|
+
seen = result;
|
|
161
|
+
}
|
|
162
|
+
outer:
|
|
163
|
+
while (++index < length) {
|
|
164
|
+
var value = array[index], computed = value;
|
|
165
|
+
value = value !== 0 ? value : 0;
|
|
166
|
+
if (isCommon && computed === computed) {
|
|
167
|
+
var seenIndex = seen.length;
|
|
168
|
+
while (seenIndex--) {
|
|
169
|
+
if (seen[seenIndex] === computed) {
|
|
170
|
+
continue outer;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
result.push(value);
|
|
174
|
+
} else if (!includes(seen, computed, comparator)) {
|
|
175
|
+
if (seen !== result) {
|
|
176
|
+
seen.push(computed);
|
|
177
|
+
}
|
|
178
|
+
result.push(value);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return result;
|
|
182
|
+
}
|
|
183
|
+
function uniq(array) {
|
|
184
|
+
return array && array.length ? baseUniq(array) : [];
|
|
185
|
+
}
|
|
186
|
+
function isObject(value) {
|
|
187
|
+
return value !== null && typeof value === "object" && !(value instanceof Date);
|
|
188
|
+
}
|
|
189
|
+
var isArray = Array.isArray;
|
|
190
|
+
function deepKeys(obj, stack, parent, intermediate) {
|
|
191
|
+
Object.keys(obj).forEach(function(el) {
|
|
192
|
+
var escaped = el.replace(/\./g, "\\.");
|
|
193
|
+
if (isObject(obj[el]) && !isArray(obj[el])) {
|
|
194
|
+
var p = parent ? parent + "." + escaped : parent;
|
|
195
|
+
if (intermediate) stack.push(parent ? p : escaped);
|
|
196
|
+
deepKeys(obj[el], stack, p || escaped, intermediate);
|
|
197
|
+
} else if (isArray(obj[el])) {
|
|
198
|
+
obj[el].forEach((item, index) => {
|
|
199
|
+
var p2 = parent ? parent + `.${escaped}.${index}` : parent;
|
|
200
|
+
if (intermediate) stack.push(parent ? p2 : `${escaped}.${index}`);
|
|
201
|
+
deepKeys(item, stack, p2 || `${escaped}.${index}`, intermediate);
|
|
202
|
+
});
|
|
203
|
+
} else {
|
|
204
|
+
var key = parent ? parent + "." + escaped : escaped;
|
|
205
|
+
stack.push(key);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
return stack;
|
|
209
|
+
}
|
|
210
|
+
var deepKeys_1 = function(obj, intermediate) {
|
|
211
|
+
return deepKeys(obj, [], null, intermediate);
|
|
212
|
+
};
|
|
213
|
+
const deepKeys$1 = /* @__PURE__ */ getDefaultExportFromCjs(deepKeys_1);
|
|
214
|
+
const sortByModelName = (a, b) => {
|
|
215
|
+
const uidA = Object.keys(a)[0].toLowerCase();
|
|
216
|
+
const uidB = Object.keys(b)[0].toLowerCase();
|
|
217
|
+
if (uidA < uidB) return -1;
|
|
218
|
+
if (uidA > uidB) return 1;
|
|
219
|
+
return 0;
|
|
220
|
+
};
|
|
221
|
+
const getContentTransferSetupKeysSets = (localizableTree = [], storedSetupSchema = []) => {
|
|
222
|
+
localizableTree = arrayOfModelsToObject(localizableTree.sort(sortByModelName));
|
|
223
|
+
storedSetupSchema = arrayOfModelsToObject(storedSetupSchema.sort(sortByModelName));
|
|
224
|
+
const currentModelsSchemaKeys = deepKeys$1(localizableTree);
|
|
225
|
+
const storedSetupSchemaKeys = deepKeys$1(storedSetupSchema);
|
|
226
|
+
const regex = /\.\d+\.__component__/;
|
|
227
|
+
let currentModelsSchemaComponentKeys = currentModelsSchemaKeys.filter((key) => key.match(regex)).map((key) => key.replace(regex, ""));
|
|
228
|
+
let storedSetupSchemaComponentKeys = storedSetupSchemaKeys.filter((key) => key.match(regex)).map((key) => key.replace(regex, ""));
|
|
229
|
+
currentModelsSchemaComponentKeys = uniq(currentModelsSchemaComponentKeys);
|
|
230
|
+
storedSetupSchemaComponentKeys = uniq(storedSetupSchemaComponentKeys);
|
|
231
|
+
const currentModelsSchemaComponentKeysComponentProp = currentModelsSchemaKeys.filter(
|
|
232
|
+
(key) => key.includes("__component__") && currentModelsSchemaComponentKeys.some((k) => key.includes(k))
|
|
233
|
+
);
|
|
234
|
+
const storedSetupSchemaComponentKeysComponentProp = storedSetupSchemaKeys.filter(
|
|
235
|
+
(key) => key.includes("__component__") && storedSetupSchemaComponentKeys.some((k) => key.includes(k))
|
|
236
|
+
);
|
|
237
|
+
let removedKeys = [];
|
|
238
|
+
removedKeys.push(
|
|
239
|
+
...storedSetupSchemaComponentKeysComponentProp.map((key) => {
|
|
240
|
+
const storedComponentName = get(storedSetupSchema, key);
|
|
241
|
+
const currentComponentName = get(localizableTree, key);
|
|
242
|
+
if (storedComponentName !== currentComponentName) {
|
|
243
|
+
const part = key.split(".").slice(0, -1).join(".");
|
|
244
|
+
return storedSetupSchemaKeys.filter((k) => k.includes(part));
|
|
245
|
+
}
|
|
246
|
+
return [];
|
|
247
|
+
}).reduce((acc, val) => acc.concat(val), [])
|
|
248
|
+
);
|
|
249
|
+
removedKeys.push(...storedSetupSchemaKeys.filter((key) => !currentModelsSchemaKeys.includes(key)));
|
|
250
|
+
removedKeys = uniq(removedKeys);
|
|
251
|
+
let newKeys = [];
|
|
252
|
+
newKeys.push(
|
|
253
|
+
...currentModelsSchemaComponentKeysComponentProp.map((key) => {
|
|
254
|
+
const storedComponentName = get(storedSetupSchema, key);
|
|
255
|
+
const currentComponentName = get(localizableTree, key);
|
|
256
|
+
if (storedComponentName !== currentComponentName) {
|
|
257
|
+
const part = key.split(".").slice(0, -1).join(".");
|
|
258
|
+
return currentModelsSchemaKeys.filter((k) => k.includes(part));
|
|
259
|
+
}
|
|
260
|
+
return [];
|
|
261
|
+
}).reduce((acc, val) => acc.concat(val), [])
|
|
262
|
+
);
|
|
263
|
+
newKeys.push(...currentModelsSchemaKeys.filter((key) => !storedSetupSchemaKeys.includes(key)));
|
|
264
|
+
newKeys = uniq(newKeys);
|
|
265
|
+
const filteredStoredSetupSchemaKeys = storedSetupSchemaKeys.filter((key) => !removedKeys.includes(key));
|
|
266
|
+
return {
|
|
267
|
+
oLocalizableTree: localizableTree,
|
|
268
|
+
oStoredSetupSchema: storedSetupSchema,
|
|
269
|
+
removedKeys,
|
|
270
|
+
newKeys,
|
|
271
|
+
filteredStoredSetupSchemaKeys
|
|
272
|
+
};
|
|
273
|
+
};
|
|
274
|
+
const hasModelChanged = async (localizableTree = null, storedSetupSchema = null, allModelsTree = null) => {
|
|
275
|
+
let models;
|
|
276
|
+
if (!localizableTree || !allModelsTree) {
|
|
277
|
+
models = await StrapiModelService.getModels();
|
|
278
|
+
}
|
|
279
|
+
if (!localizableTree) {
|
|
280
|
+
const localizableModels = await StrapiModelService.getLocalizableModels();
|
|
281
|
+
localizableTree = getModelsTree(models, localizableModels);
|
|
282
|
+
}
|
|
283
|
+
if (!storedSetupSchema) {
|
|
284
|
+
storedSetupSchema = (await PluginSettingsService.getContentTransferSetup()).setup;
|
|
285
|
+
}
|
|
286
|
+
if (!allModelsTree) {
|
|
287
|
+
allModelsTree = getModelsTree(models, models);
|
|
288
|
+
}
|
|
289
|
+
const { oStoredSetupSchema, removedKeys, newKeys, filteredStoredSetupSchemaKeys } = getContentTransferSetupKeysSets(
|
|
290
|
+
localizableTree,
|
|
291
|
+
storedSetupSchema || []
|
|
292
|
+
);
|
|
293
|
+
if (newKeys.length || removedKeys.length) {
|
|
294
|
+
return true;
|
|
295
|
+
}
|
|
296
|
+
for (const key of filteredStoredSetupSchemaKeys) {
|
|
297
|
+
const localizableTreeValueToSet = get(oStoredSetupSchema, key);
|
|
298
|
+
const allModelsTreeValueToSet = findModelValueByKey(allModelsTree, key);
|
|
299
|
+
if (typeof localizableTreeValueToSet === "boolean" && allModelsTreeValueToSet === null) {
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
if (localizableTreeValueToSet === null && typeof allModelsTreeValueToSet === "boolean") {
|
|
303
|
+
return true;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return false;
|
|
307
|
+
};
|
|
308
|
+
export {
|
|
309
|
+
SUPPORTED_CONTENT_TYPE_FIELDS as S,
|
|
310
|
+
SUPPORTED_CUSTOM_FIELD_PLUGINS as a,
|
|
311
|
+
get as b,
|
|
312
|
+
StrapiModelService as c,
|
|
313
|
+
getModelsTree as d,
|
|
314
|
+
findModelValueByKey as f,
|
|
315
|
+
getContentTransferSetupKeysSets as g,
|
|
316
|
+
hasModelChanged as h
|
|
317
|
+
};
|