chore: make i18n plugin a dep & required

This commit is contained in:
Alexandre Bodin 2024-03-19 13:41:43 +01:00
parent bef2911a46
commit ce341c366f
40 changed files with 84 additions and 72 deletions

View File

@ -11,7 +11,6 @@
"strapi": "strapi"
},
"dependencies": {
"@strapi/plugin-i18n": "latest",
"@strapi/plugin-users-permissions": "latest",
"@strapi/strapi": "latest",
"better-sqlite3": "9.0.0",

View File

@ -11,7 +11,6 @@
"strapi": "strapi"
},
"dependencies": {
"@strapi/plugin-i18n": "latest",
"@strapi/plugin-users-permissions": "latest",
"@strapi/strapi": "latest",
"better-sqlite3": "9.0.0",

View File

@ -34,6 +34,7 @@ const INTERNAL_PLUGINS = [
'@strapi/plugin-content-type-builder',
'@strapi/plugin-email',
'@strapi/plugin-upload',
'@strapi/plugin-i18n',
'@strapi/content-releases',
];

View File

@ -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",

View File

@ -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,
},
});

View File

@ -53,7 +53,6 @@ export const generateNewApp = (projectDirectory: string, options: Partial<NewOpt
strapiDependencies: [
'@strapi/strapi',
'@strapi/plugin-users-permissions',
'@strapi/plugin-i18n',
'@strapi/plugin-cloud',
],
additionalsDependencies: {

View File

@ -9,25 +9,7 @@ The Internationalization (i18n) plugin allows Strapi users to create, manage and
## Installation
To install this plugin, you need to add an NPM dependency to your Strapi application:
```sh
# Using Yarn
yarn add @strapi/plugin-i18n
# Or using NPM
npm install @strapi/plugin-i18n
```
Then, you'll need to build your admin panel:
```sh
# Using Yarn
yarn build
# Or using NPM
npm run build
```
This plugin is pre-installed & required with strapi
## Documentation

View File

@ -1,7 +1,5 @@
import * as React from 'react';
import { Flex, Icon, Status, Typography } from '@strapi/design-system';
import { ExclamationMarkCircle, Trash } from '@strapi/icons';
import {
type HeaderActionComponent,
unstable_useDocument as useDocument,
@ -9,7 +7,9 @@ import {
type DocumentActionComponent,
useNotification,
useQueryParams,
} from '@strapi/strapi/admin';
} from '@strapi/admin/strapi-admin';
import { Flex, Icon, Status, Typography } from '@strapi/design-system';
import { ExclamationMarkCircle, Trash } from '@strapi/icons';
import { useIntl } from 'react-intl';
import { useNavigate } from 'react-router-dom';
import styled from 'styled-components';

View File

@ -1,5 +1,15 @@
import * as React from 'react';
import {
Form,
type InputProps,
InputRenderer,
useField,
type FormHelpers,
useForm,
useAPIErrorHandler,
useNotification,
} from '@strapi/admin/strapi-admin';
import {
Box,
Button,
@ -23,16 +33,6 @@ import {
} from '@strapi/design-system';
import { useRBACProvider } from '@strapi/helper-plugin';
import { Check, Plus } from '@strapi/icons';
import {
Form,
type InputProps,
InputRenderer,
useField,
type FormHelpers,
useForm,
useAPIErrorHandler,
useNotification,
} from '@strapi/strapi/admin';
import { useIntl } from 'react-intl';
import * as yup from 'yup';

View File

@ -1,8 +1,8 @@
import * as React from 'react';
import { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin';
import { IconButton } from '@strapi/design-system';
import { Trash } from '@strapi/icons';
import { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/strapi/admin';
import { useIntl } from 'react-intl';
import { useDeleteLocaleMutation } from '../services/locales';

View File

@ -1,5 +1,6 @@
import * as React from 'react';
import { useNotification, useAPIErrorHandler, Form, FormHelpers } from '@strapi/admin/strapi-admin';
import {
Box,
Button,
@ -20,7 +21,6 @@ import {
} from '@strapi/design-system';
import { useRBACProvider } from '@strapi/helper-plugin';
import { Pencil } from '@strapi/icons';
import { useNotification, useAPIErrorHandler, Form, FormHelpers } from '@strapi/strapi/admin';
import { useIntl } from 'react-intl';
import { UpdateLocale, Locale } from '../../../shared/contracts/locales';

View File

@ -1,8 +1,8 @@
import * as React from 'react';
import { unstable_useDocument as useDocument } from '@strapi/admin/strapi-admin';
import { Box, Flex, Popover, Typography, useCollator } from '@strapi/design-system';
import { CarretDown } from '@strapi/icons';
import { unstable_useDocument as useDocument } from '@strapi/strapi/admin';
import { useIntl } from 'react-intl';
import styled from 'styled-components';

View File

@ -1,7 +1,7 @@
import * as React from 'react';
import { useQueryParams } from '@strapi/admin/strapi-admin';
import { SingleSelect, SingleSelectOption } from '@strapi/design-system';
import { useQueryParams } from '@strapi/strapi/admin';
import { useIntl } from 'react-intl';
import { useI18n } from '../hooks/useI18n';

View File

@ -6,8 +6,8 @@ import { LocaleListCell } from '../LocaleListCell';
* @note Because the `useDocument` hook access the contentManagerApi, we need to unfortunately mock it.
* It'd be good to export an FE rendering wrapper that would work for plugins...
*/
jest.mock('@strapi/strapi/admin', () => ({
...jest.requireActual('@strapi/strapi/admin'),
jest.mock('@strapi/admin/strapi-admin', () => ({
...jest.requireActual('@strapi/admin/strapi-admin'),
unstable_useDocument: jest.fn(() => ({
meta: {
availableLocales: [

View File

@ -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

View File

@ -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 = {

View File

@ -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';

View File

@ -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 {

View File

@ -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,

View File

@ -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,

View File

@ -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

View File

@ -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';

View File

@ -1,4 +1,4 @@
import type { Documents } from '@strapi/strapi';
import type { Documents } from '@strapi/types';
export interface I18nBaseQuery {
plugins?: {

View File

@ -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
* -----------------------------------------------------------------------------------------------*/

View File

@ -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

View File

@ -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,

View File

@ -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",

View File

@ -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: {},
});

View File

@ -1,4 +1,4 @@
import type { Strapi } from '@strapi/strapi';
import type { Strapi } from '@strapi/types';
import { getService } from './utils';

View File

@ -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';

View File

@ -1,4 +1,4 @@
import type { Common } from '@strapi/strapi';
import type { Common } from '@strapi/types';
import { getService } from '../utils';
const controller: Common.Controller = {

View File

@ -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';

View File

@ -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;

View File

@ -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;

View File

@ -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';

View File

@ -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';

View File

@ -1,4 +1,4 @@
import { Entity } from '@strapi/strapi';
import { Entity } from '@strapi/types';
import { errors } from '@strapi/utils';
/**

View File

@ -1,4 +1,4 @@
import { Entity as StrapiEntity } from '@strapi/strapi';
import { Entity as StrapiEntity } from '@strapi/types';
export interface Entity {
id: StrapiEntity.ID;

View File

@ -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: {

View File

@ -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"