diff --git a/cli-tests/app-template/package.json b/cli-tests/app-template/package.json index ba945fee19..f70fbac462 100644 --- a/cli-tests/app-template/package.json +++ b/cli-tests/app-template/package.json @@ -11,7 +11,6 @@ "strapi": "strapi" }, "dependencies": { - "@strapi/plugin-i18n": "latest", "@strapi/plugin-users-permissions": "latest", "@strapi/strapi": "latest", "better-sqlite3": "9.0.0", diff --git a/e2e/app-template/package.json b/e2e/app-template/package.json index ba945fee19..f70fbac462 100644 --- a/e2e/app-template/package.json +++ b/e2e/app-template/package.json @@ -11,7 +11,6 @@ "strapi": "strapi" }, "dependencies": { - "@strapi/plugin-i18n": "latest", "@strapi/plugin-users-permissions": "latest", "@strapi/strapi": "latest", "better-sqlite3": "9.0.0", diff --git a/packages/core/core/src/loaders/plugins/get-enabled-plugins.ts b/packages/core/core/src/loaders/plugins/get-enabled-plugins.ts index 2a83fdc931..018550d600 100644 --- a/packages/core/core/src/loaders/plugins/get-enabled-plugins.ts +++ b/packages/core/core/src/loaders/plugins/get-enabled-plugins.ts @@ -34,6 +34,7 @@ const INTERNAL_PLUGINS = [ '@strapi/plugin-content-type-builder', '@strapi/plugin-email', '@strapi/plugin-upload', + '@strapi/plugin-i18n', '@strapi/content-releases', ]; diff --git a/packages/core/strapi/package.json b/packages/core/strapi/package.json index 753637f9f8..6f8b59592e 100644 --- a/packages/core/strapi/package.json +++ b/packages/core/strapi/package.json @@ -116,6 +116,7 @@ "@strapi/plugin-content-manager": "5.0.0-alpha.0", "@strapi/plugin-content-type-builder": "5.0.0-alpha.0", "@strapi/plugin-email": "5.0.0-alpha.0", + "@strapi/plugin-i18n": "5.0.0-alpha.0", "@strapi/plugin-upload": "5.0.0-alpha.0", "@strapi/types": "5.0.0-alpha.0", "@strapi/typescript-utils": "5.0.0-alpha.0", diff --git a/packages/core/strapi/src/admin.ts b/packages/core/strapi/src/admin.ts index 95b2ce61b3..cfc19ebc8d 100644 --- a/packages/core/strapi/src/admin.ts +++ b/packages/core/strapi/src/admin.ts @@ -3,6 +3,7 @@ import contentTypeBuilder from '@strapi/plugin-content-type-builder/strapi-admin import email from '@strapi/plugin-email/strapi-admin'; // @ts-expect-error – No types, yet. import upload from '@strapi/plugin-upload/strapi-admin'; +import i18n from '@strapi/plugin-i18n/strapi-admin'; import contentReleases from '@strapi/content-releases/strapi-admin'; const render = (mountNode: HTMLElement | null, { plugins, ...restArgs }: RenderAdminArgs) => { @@ -15,6 +16,7 @@ const render = (mountNode: HTMLElement | null, { plugins, ...restArgs }: RenderA upload, // @ts-expect-error – TODO: fix this, the "types" folder has it wrong. contentReleases, + i18n, ...plugins, }, }); diff --git a/packages/generators/app/src/index.ts b/packages/generators/app/src/index.ts index db9c55b35d..a79becef2c 100644 --- a/packages/generators/app/src/index.ts +++ b/packages/generators/app/src/index.ts @@ -53,7 +53,6 @@ export const generateNewApp = (projectDirectory: string, options: Partial ({ - ...jest.requireActual('@strapi/strapi/admin'), +jest.mock('@strapi/admin/strapi-admin', () => ({ + ...jest.requireActual('@strapi/admin/strapi-admin'), unstable_useDocument: jest.fn(() => ({ meta: { availableLocales: [ diff --git a/packages/plugins/i18n/admin/src/contentManagerHooks/listView.tsx b/packages/plugins/i18n/admin/src/contentManagerHooks/listView.tsx index cbfc003dd7..ae57ca0824 100644 --- a/packages/plugins/i18n/admin/src/contentManagerHooks/listView.tsx +++ b/packages/plugins/i18n/admin/src/contentManagerHooks/listView.tsx @@ -3,7 +3,7 @@ import { LocaleListCell } from '../components/LocaleListCell'; import { doesPluginOptionsHaveI18nLocalized } from '../utils/fields'; import { getTranslation } from '../utils/getTranslation'; -import type { ListFieldLayout, ListLayout } from '@strapi/strapi/admin'; +import type { ListFieldLayout, ListLayout } from '@strapi/admin/strapi-admin'; /* ------------------------------------------------------------------------------------------------- * addColumnToTableHook diff --git a/packages/plugins/i18n/admin/src/contentManagerHooks/tests/listView.test.ts b/packages/plugins/i18n/admin/src/contentManagerHooks/tests/listView.test.ts index 7b94b13e1e..e0b19e51a1 100644 --- a/packages/plugins/i18n/admin/src/contentManagerHooks/tests/listView.test.ts +++ b/packages/plugins/i18n/admin/src/contentManagerHooks/tests/listView.test.ts @@ -1,6 +1,6 @@ import { addColumnToTableHook } from '../listView'; -import type { ListFieldLayout, ListLayout } from '@strapi/strapi/admin'; +import type { ListFieldLayout, ListLayout } from '@strapi/admin/strapi-admin'; describe('addColumnToTableHook', () => { const DEFAULT_FIELD: ListFieldLayout = { diff --git a/packages/plugins/i18n/admin/src/hooks/useI18n.ts b/packages/plugins/i18n/admin/src/hooks/useI18n.ts index 394b024fed..f250c299c6 100644 --- a/packages/plugins/i18n/admin/src/hooks/useI18n.ts +++ b/packages/plugins/i18n/admin/src/hooks/useI18n.ts @@ -1,7 +1,7 @@ import * as React from 'react'; import { createSelector } from '@reduxjs/toolkit'; -import { Store, unstable_useDocument as useDocument } from '@strapi/strapi/admin'; +import { Store, unstable_useDocument as useDocument } from '@strapi/admin/strapi-admin'; import { useSelector } from 'react-redux'; import { useParams } from 'react-router-dom'; diff --git a/packages/plugins/i18n/admin/src/index.ts b/packages/plugins/i18n/admin/src/index.ts index a33b6322be..e035010eae 100644 --- a/packages/plugins/i18n/admin/src/index.ts +++ b/packages/plugins/i18n/admin/src/index.ts @@ -22,7 +22,7 @@ import { getTranslation } from './utils/getTranslation'; import { prefixPluginTranslations } from './utils/prefixPluginTranslations'; import { mutateCTBContentTypeSchema } from './utils/schemas'; -import type { DocumentActionComponent } from '@strapi/strapi/admin'; +import type { DocumentActionComponent } from '@strapi/admin/strapi-admin'; // eslint-disable-next-line import/no-default-export export default { diff --git a/packages/plugins/i18n/admin/src/middlewares/extendCTBAttributeInitialData.ts b/packages/plugins/i18n/admin/src/middlewares/extendCTBAttributeInitialData.ts index a18b3431a0..cd671c4c61 100644 --- a/packages/plugins/i18n/admin/src/middlewares/extendCTBAttributeInitialData.ts +++ b/packages/plugins/i18n/admin/src/middlewares/extendCTBAttributeInitialData.ts @@ -1,7 +1,7 @@ import get from 'lodash/get'; import type { Middleware } from '@reduxjs/toolkit'; -import type { Store } from '@strapi/strapi/admin'; +import type { Store } from '@strapi/admin/strapi-admin'; const extendCTBAttributeInitialDataMiddleware: () => Middleware< object, diff --git a/packages/plugins/i18n/admin/src/middlewares/extendCTBInitialData.ts b/packages/plugins/i18n/admin/src/middlewares/extendCTBInitialData.ts index 31a0039f41..bb8f342bc1 100644 --- a/packages/plugins/i18n/admin/src/middlewares/extendCTBInitialData.ts +++ b/packages/plugins/i18n/admin/src/middlewares/extendCTBInitialData.ts @@ -1,5 +1,5 @@ import type { Middleware } from '@reduxjs/toolkit'; -import type { Store } from '@strapi/strapi/admin'; +import type { Store } from '@strapi/admin/strapi-admin'; const extendCTBInitialDataMiddleware: () => Middleware< object, diff --git a/packages/plugins/i18n/admin/src/middlewares/localePermission.ts b/packages/plugins/i18n/admin/src/middlewares/localePermission.ts index c2666a5633..2b5be3053e 100644 --- a/packages/plugins/i18n/admin/src/middlewares/localePermission.ts +++ b/packages/plugins/i18n/admin/src/middlewares/localePermission.ts @@ -1,6 +1,6 @@ import type { Middleware } from '@reduxjs/toolkit'; +import type { Store } from '@strapi/admin/strapi-admin'; import type { Permission } from '@strapi/helper-plugin'; -import type { Store } from '@strapi/strapi/admin'; /** * TODO: is it possible to get the action types? How do we do it diff --git a/packages/plugins/i18n/admin/src/pages/SettingsPage.tsx b/packages/plugins/i18n/admin/src/pages/SettingsPage.tsx index c393ead39e..92259bcf2b 100644 --- a/packages/plugins/i18n/admin/src/pages/SettingsPage.tsx +++ b/packages/plugins/i18n/admin/src/pages/SettingsPage.tsx @@ -1,9 +1,9 @@ import * as React from 'react'; +import { Page, useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin'; import { ContentLayout, EmptyStateLayout, HeaderLayout } from '@strapi/design-system'; import { useRBAC } from '@strapi/helper-plugin'; import { EmptyDocuments } from '@strapi/icons'; -import { Page, useAPIErrorHandler, useNotification } from '@strapi/strapi/admin'; import { useIntl } from 'react-intl'; import { CreateLocale } from '../components/CreateLocale'; diff --git a/packages/plugins/i18n/admin/src/types.ts b/packages/plugins/i18n/admin/src/types.ts index 508e31f4aa..d118c2431d 100644 --- a/packages/plugins/i18n/admin/src/types.ts +++ b/packages/plugins/i18n/admin/src/types.ts @@ -1,4 +1,4 @@ -import type { Documents } from '@strapi/strapi'; +import type { Documents } from '@strapi/types'; export interface I18nBaseQuery { plugins?: { diff --git a/packages/plugins/i18n/admin/src/utils/baseQuery.ts b/packages/plugins/i18n/admin/src/utils/baseQuery.ts index c212861be2..7dd4567a5d 100644 --- a/packages/plugins/i18n/admin/src/utils/baseQuery.ts +++ b/packages/plugins/i18n/admin/src/utils/baseQuery.ts @@ -1,10 +1,8 @@ import { SerializedError } from '@reduxjs/toolkit'; import { BaseQueryFn } from '@reduxjs/toolkit/query'; -import { getFetchClient } from '@strapi/strapi/admin'; +import { getFetchClient, ApiError } from '@strapi/admin/strapi-admin'; import { isAxiosError, type AxiosRequestConfig } from 'axios'; -import type { ApiError } from '@strapi/strapi/admin'; - /* ------------------------------------------------------------------------------------------------- * Axios data * -----------------------------------------------------------------------------------------------*/ diff --git a/packages/plugins/i18n/admin/src/utils/schemas.ts b/packages/plugins/i18n/admin/src/utils/schemas.ts index f5a3135fa2..9a99d144fb 100644 --- a/packages/plugins/i18n/admin/src/utils/schemas.ts +++ b/packages/plugins/i18n/admin/src/utils/schemas.ts @@ -2,7 +2,7 @@ import omit from 'lodash/omit'; import { LOCALIZED_FIELDS, doesPluginOptionsHaveI18nLocalized } from './fields'; -import type { Schema } from '@strapi/strapi'; +import type { Schema } from '@strapi/types'; /* ------------------------------------------------------------------------------------------------- * mutateCTBContentTypeSchema diff --git a/packages/plugins/i18n/admin/tests/utils.tsx b/packages/plugins/i18n/admin/tests/utils.tsx index 3c2cedbe26..4acee89df6 100644 --- a/packages/plugins/i18n/admin/tests/utils.tsx +++ b/packages/plugins/i18n/admin/tests/utils.tsx @@ -2,10 +2,10 @@ import * as React from 'react'; import { combineReducers, configureStore } from '@reduxjs/toolkit'; +import { NotificationsProvider } from '@strapi/admin/strapi-admin'; import { fixtures } from '@strapi/admin-test-utils'; import { DesignSystemProvider } from '@strapi/design-system'; import { Permission, RBACContext } from '@strapi/helper-plugin'; -import { NotificationsProvider } from '@strapi/strapi/admin'; import { renderHook as renderHookRTL, render as renderRTL, diff --git a/packages/plugins/i18n/package.json b/packages/plugins/i18n/package.json index c28104803c..d1f814199b 100644 --- a/packages/plugins/i18n/package.json +++ b/packages/plugins/i18n/package.json @@ -42,14 +42,14 @@ "strapi-server.js" ], "scripts": { - "build": "strapi plugin:build --force", + "build": "pack-up build", "clean": "run -T rimraf ./dist", "lint": "run -T eslint .", "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js", "test:ts:front": "run -T tsc -p admin/tsconfig.json", "test:unit": "run -T jest", "test:unit:watch": "run -T jest --watch", - "watch": "strapi plugin:watch" + "watch": "pack-up watch" }, "dependencies": { "@reduxjs/toolkit": "1.9.7", @@ -65,9 +65,10 @@ "yup": "0.32.9" }, "devDependencies": { + "@strapi/admin": "5.0.0-alpha.0", "@strapi/admin-test-utils": "5.0.0-alpha.0", "@strapi/pack-up": "5.0.0-alpha.0", - "@strapi/strapi": "5.0.0-alpha.0", + "@strapi/types": "5.0.0-alpha.0", "@testing-library/react": "14.0.0", "@testing-library/user-event": "14.4.3", "msw": "1.3.0", @@ -78,7 +79,7 @@ "styled-components": "5.3.11" }, "peerDependencies": { - "@strapi/strapi": "^4.0.0", + "@strapi/admin": "^4.19.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", "react-router-dom": "^6.0.0", diff --git a/packages/plugins/i18n/packup.config.ts b/packages/plugins/i18n/packup.config.ts new file mode 100644 index 0000000000..e834f32416 --- /dev/null +++ b/packages/plugins/i18n/packup.config.ts @@ -0,0 +1,29 @@ +import { defineConfig } from '@strapi/pack-up'; + +export default defineConfig({ + bundles: [ + { + source: './admin/src/index.ts', + import: './dist/admin/index.mjs', + require: './dist/admin/index.js', + types: './dist/admin/src/index.d.ts', + tsconfig: './admin/tsconfig.build.json', + runtime: 'web', + }, + { + source: './server/src/index.ts', + import: './dist/server/index.mjs', + require: './dist/server/index.js', + types: './dist/server/src/index.d.ts', + tsconfig: './server/tsconfig.build.json', + runtime: 'node', + }, + ], + dist: './dist', + /** + * Because we're exporting a server & client package + * which have different runtimes we want to ignore + * what they look like in the package.json + */ + exports: {}, +}); diff --git a/packages/plugins/i18n/server/src/bootstrap.ts b/packages/plugins/i18n/server/src/bootstrap.ts index 0f5154ad86..5332d74626 100644 --- a/packages/plugins/i18n/server/src/bootstrap.ts +++ b/packages/plugins/i18n/server/src/bootstrap.ts @@ -1,4 +1,4 @@ -import type { Strapi } from '@strapi/strapi'; +import type { Strapi } from '@strapi/types'; import { getService } from './utils'; diff --git a/packages/plugins/i18n/server/src/controllers/content-types.ts b/packages/plugins/i18n/server/src/controllers/content-types.ts index d111d4f666..a21536b8c7 100644 --- a/packages/plugins/i18n/server/src/controllers/content-types.ts +++ b/packages/plugins/i18n/server/src/controllers/content-types.ts @@ -1,6 +1,6 @@ import { pick, uniq, prop, getOr, flatten, pipe, map } from 'lodash/fp'; import { contentTypes as contentTypesUtils, errors } from '@strapi/utils'; -import type { Common } from '@strapi/strapi'; +import type { Common } from '@strapi/types'; import { getService } from '../utils'; import { validateGetNonLocalizedAttributesInput } from '../validation/content-types'; diff --git a/packages/plugins/i18n/server/src/controllers/iso-locales.ts b/packages/plugins/i18n/server/src/controllers/iso-locales.ts index 6a4082f645..bf7c85ff87 100644 --- a/packages/plugins/i18n/server/src/controllers/iso-locales.ts +++ b/packages/plugins/i18n/server/src/controllers/iso-locales.ts @@ -1,4 +1,4 @@ -import type { Common } from '@strapi/strapi'; +import type { Common } from '@strapi/types'; import { getService } from '../utils'; const controller: Common.Controller = { diff --git a/packages/plugins/i18n/server/src/controllers/locales.ts b/packages/plugins/i18n/server/src/controllers/locales.ts index 477ed7eac1..fe52ef8b14 100644 --- a/packages/plugins/i18n/server/src/controllers/locales.ts +++ b/packages/plugins/i18n/server/src/controllers/locales.ts @@ -1,6 +1,6 @@ import * as utils from '@strapi/utils'; import { pick } from 'lodash/fp'; -import type { Common } from '@strapi/strapi'; +import type { Common } from '@strapi/types'; import { getService } from '../utils'; import { validateCreateLocaleInput, validateUpdateLocaleInput } from '../validation/locales'; import { formatLocale } from '../domain/locale'; diff --git a/packages/plugins/i18n/server/src/controllers/validate-locale-creation.ts b/packages/plugins/i18n/server/src/controllers/validate-locale-creation.ts index 87b1efe02c..3c09110c4a 100644 --- a/packages/plugins/i18n/server/src/controllers/validate-locale-creation.ts +++ b/packages/plugins/i18n/server/src/controllers/validate-locale-creation.ts @@ -1,6 +1,6 @@ import { get } from 'lodash/fp'; import { errors } from '@strapi/utils'; -import type { Common, Schema } from '@strapi/strapi'; +import type { Common, Schema } from '@strapi/types'; import { getService } from '../utils'; const { ApplicationError } = errors; diff --git a/packages/plugins/i18n/server/src/graphql.ts b/packages/plugins/i18n/server/src/graphql.ts index 1873a19de5..885e0a95ba 100644 --- a/packages/plugins/i18n/server/src/graphql.ts +++ b/packages/plugins/i18n/server/src/graphql.ts @@ -1,6 +1,6 @@ import { propEq, identity } from 'lodash/fp'; import { errors } from '@strapi/utils'; -import type { Strapi } from '@strapi/strapi'; +import type { Strapi } from '@strapi/types'; const { ValidationError } = errors; diff --git a/packages/plugins/i18n/server/src/register.ts b/packages/plugins/i18n/server/src/register.ts index ea90ddafe8..8e1458e440 100644 --- a/packages/plugins/i18n/server/src/register.ts +++ b/packages/plugins/i18n/server/src/register.ts @@ -1,5 +1,5 @@ import _ from 'lodash'; -import type { Strapi } from '@strapi/strapi'; +import type { Strapi } from '@strapi/types'; import validateLocaleCreation from './controllers/validate-locale-creation'; import graphqlProvider from './graphql'; diff --git a/packages/plugins/i18n/server/src/services/entity-service-decorator.ts b/packages/plugins/i18n/server/src/services/entity-service-decorator.ts index b51bb9c455..6f909c4b3a 100644 --- a/packages/plugins/i18n/server/src/services/entity-service-decorator.ts +++ b/packages/plugins/i18n/server/src/services/entity-service-decorator.ts @@ -1,6 +1,6 @@ import { has, get, omit, isArray } from 'lodash/fp'; import { errors, convertQueryParams } from '@strapi/utils'; -import type { Schema } from '@strapi/strapi'; +import type { Schema } from '@strapi/types'; import { getService } from '../utils'; diff --git a/packages/plugins/i18n/shared/contracts/content-manager.ts b/packages/plugins/i18n/shared/contracts/content-manager.ts index b85b50bed9..2c988bfb84 100644 --- a/packages/plugins/i18n/shared/contracts/content-manager.ts +++ b/packages/plugins/i18n/shared/contracts/content-manager.ts @@ -1,4 +1,4 @@ -import { Entity } from '@strapi/strapi'; +import { Entity } from '@strapi/types'; import { errors } from '@strapi/utils'; /** diff --git a/packages/plugins/i18n/shared/contracts/shared.ts b/packages/plugins/i18n/shared/contracts/shared.ts index 968b41cdb2..878448a209 100644 --- a/packages/plugins/i18n/shared/contracts/shared.ts +++ b/packages/plugins/i18n/shared/contracts/shared.ts @@ -1,4 +1,4 @@ -import { Entity as StrapiEntity } from '@strapi/strapi'; +import { Entity as StrapiEntity } from '@strapi/types'; export interface Entity { id: StrapiEntity.ID; diff --git a/test/helpers/test-app.js b/test/helpers/test-app.js index a6fb6b25fa..79136036fc 100644 --- a/test/helpers/test-app.js +++ b/test/helpers/test-app.js @@ -47,7 +47,6 @@ const generateTestApp = async ({ appPath, database, template, link = false }) => '@strapi/plugin-users-permissions', '@strapi/plugin-graphql', '@strapi/plugin-documentation', - '@strapi/plugin-i18n', '@strapi/plugin-cloud', ], additionalsDependencies: { diff --git a/yarn.lock b/yarn.lock index dd3afb0482..f946345050 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7611,12 +7611,13 @@ __metadata: resolution: "@strapi/plugin-i18n@workspace:packages/plugins/i18n" dependencies: "@reduxjs/toolkit": "npm:1.9.7" + "@strapi/admin": "npm:5.0.0-alpha.0" "@strapi/admin-test-utils": "npm:5.0.0-alpha.0" "@strapi/design-system": "npm:1.16.0" "@strapi/helper-plugin": "npm:5.0.0-alpha.0" "@strapi/icons": "npm:1.16.0" "@strapi/pack-up": "npm:5.0.0-alpha.0" - "@strapi/strapi": "npm:5.0.0-alpha.0" + "@strapi/types": "npm:5.0.0-alpha.0" "@strapi/utils": "npm:5.0.0-alpha.0" "@testing-library/react": "npm:14.0.0" "@testing-library/user-event": "npm:14.4.3" @@ -7633,7 +7634,7 @@ __metadata: styled-components: "npm:5.3.11" yup: "npm:0.32.9" peerDependencies: - "@strapi/strapi": ^4.0.0 + "@strapi/admin": ^4.19.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 react-router-dom: ^6.0.0 @@ -7892,6 +7893,7 @@ __metadata: "@strapi/plugin-content-manager": "npm:5.0.0-alpha.0" "@strapi/plugin-content-type-builder": "npm:5.0.0-alpha.0" "@strapi/plugin-email": "npm:5.0.0-alpha.0" + "@strapi/plugin-i18n": "npm:5.0.0-alpha.0" "@strapi/plugin-upload": "npm:5.0.0-alpha.0" "@strapi/types": "npm:5.0.0-alpha.0" "@strapi/typescript-utils": "npm:5.0.0-alpha.0"