mirror of
https://github.com/strapi/strapi.git
synced 2025-11-02 02:44:55 +00:00
chore: make i18n plugin a dep & required
This commit is contained in:
parent
bef2911a46
commit
ce341c366f
@ -11,7 +11,6 @@
|
||||
"strapi": "strapi"
|
||||
},
|
||||
"dependencies": {
|
||||
"@strapi/plugin-i18n": "latest",
|
||||
"@strapi/plugin-users-permissions": "latest",
|
||||
"@strapi/strapi": "latest",
|
||||
"better-sqlite3": "9.0.0",
|
||||
|
||||
@ -11,7 +11,6 @@
|
||||
"strapi": "strapi"
|
||||
},
|
||||
"dependencies": {
|
||||
"@strapi/plugin-i18n": "latest",
|
||||
"@strapi/plugin-users-permissions": "latest",
|
||||
"@strapi/strapi": "latest",
|
||||
"better-sqlite3": "9.0.0",
|
||||
|
||||
@ -34,6 +34,7 @@ const INTERNAL_PLUGINS = [
|
||||
'@strapi/plugin-content-type-builder',
|
||||
'@strapi/plugin-email',
|
||||
'@strapi/plugin-upload',
|
||||
'@strapi/plugin-i18n',
|
||||
'@strapi/content-releases',
|
||||
];
|
||||
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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,
|
||||
},
|
||||
});
|
||||
|
||||
@ -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: {
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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';
|
||||
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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';
|
||||
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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: [
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 = {
|
||||
|
||||
@ -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';
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import type { Documents } from '@strapi/strapi';
|
||||
import type { Documents } from '@strapi/types';
|
||||
|
||||
export interface I18nBaseQuery {
|
||||
plugins?: {
|
||||
|
||||
@ -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
|
||||
* -----------------------------------------------------------------------------------------------*/
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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",
|
||||
|
||||
29
packages/plugins/i18n/packup.config.ts
Normal file
29
packages/plugins/i18n/packup.config.ts
Normal 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: {},
|
||||
});
|
||||
@ -1,4 +1,4 @@
|
||||
import type { Strapi } from '@strapi/strapi';
|
||||
import type { Strapi } from '@strapi/types';
|
||||
|
||||
import { getService } from './utils';
|
||||
|
||||
|
||||
@ -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';
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import type { Common } from '@strapi/strapi';
|
||||
import type { Common } from '@strapi/types';
|
||||
import { getService } from '../utils';
|
||||
|
||||
const controller: Common.Controller = {
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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';
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { Entity } from '@strapi/strapi';
|
||||
import { Entity } from '@strapi/types';
|
||||
import { errors } from '@strapi/utils';
|
||||
|
||||
/**
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { Entity as StrapiEntity } from '@strapi/strapi';
|
||||
import { Entity as StrapiEntity } from '@strapi/types';
|
||||
|
||||
export interface Entity {
|
||||
id: StrapiEntity.ID;
|
||||
|
||||
@ -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: {
|
||||
|
||||
@ -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"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user