Merge branch 'master' into releases/v4

This commit is contained in:
Alexandre Bodin 2021-08-04 19:24:10 +02:00
commit 805e7fdb4b
76 changed files with 582 additions and 341 deletions

View File

@ -8,24 +8,6 @@
<p align="center"><a href="https://strapi.io/demo">Try live demo</a></p>
<br />
<p align="center">
<a href="https://console.platform.sh/projects/create-project?template=https://raw.githubusercontent.com/platformsh/template-builder/master/templates/strapi/.platform.template.yaml&utm_content=strapi&utm_source=github&utm_medium=button&utm_campaign=deploy_on_platform">
<img src="https://assets.strapi.io/uploads/deploy_button_platform_sh_d032f646a7.png" />
</a>
<a href="https://marketplace.digitalocean.com/apps/strapi">
<img src="https://assets.strapi.io/uploads/deploy_button_Digital_Ocean_fe2c286222.png" />
</a>
<a href="https://www.heroku.com/deploy/?template=https://github.com/strapi/strapi-heroku-template">
<img src="https://assets.strapi.io/uploads/Deploy_button_heroku_b1043fc67d.png" />
</a>
<a href="https://render.com/docs/deploy-strapi">
<img src="https://assets.strapi.io/uploads/deploy_render_e076b6f23a.png" height="44" />
</a>
</p>
<p align="center">
<a href="https://www.npmjs.org/package/strapi">
<img src="https://img.shields.io/npm/v/strapi/latest.svg" alt="NPM Version" />

View File

@ -1,7 +1,7 @@
{
"name": "getstarted",
"private": true,
"version": "3.6.5",
"version": "3.6.6",
"description": "A Strapi application.",
"scripts": {
"develop": "strapi develop",
@ -12,25 +12,25 @@
"strapi": "strapi"
},
"dependencies": {
"@strapi/admin": "3.6.5",
"@strapi/plugin-content-manager": "3.6.5",
"@strapi/plugin-content-type-builder": "3.6.5",
"@strapi/plugin-documentation": "3.6.5",
"@strapi/plugin-email": "3.6.5",
"@strapi/plugin-graphql": "3.6.5",
"@strapi/plugin-i18n": "3.6.5",
"@strapi/plugin-upload": "3.6.5",
"@strapi/plugin-users-permissions": "3.6.5",
"@strapi/provider-email-mailgun": "3.6.5",
"@strapi/provider-upload-aws-s3": "3.6.5",
"@strapi/provider-upload-cloudinary": "3.6.5",
"@strapi/strapi": "3.6.5",
"@strapi/utils": "3.6.5",
"@strapi/admin": "3.6.6",
"@strapi/plugin-content-manager": "3.6.6",
"@strapi/plugin-content-type-builder": "3.6.6",
"@strapi/plugin-documentation": "3.6.6",
"@strapi/plugin-email": "3.6.6",
"@strapi/plugin-graphql": "3.6.6",
"@strapi/plugin-i18n": "3.6.6",
"@strapi/plugin-upload": "3.6.6",
"@strapi/plugin-users-permissions": "3.6.6",
"@strapi/provider-email-mailgun": "3.6.6",
"@strapi/provider-upload-aws-s3": "3.6.6",
"@strapi/provider-upload-cloudinary": "3.6.6",
"@strapi/strapi": "3.6.6",
"@strapi/utils": "3.6.6",
"lodash": "4.17.21",
"mysql": "2.18.1",
"pg": "8.6.0",
"sqlite3": "5.0.2",
"strapi-middleware-views": "3.6.5"
"strapi-middleware-views": "3.6.6"
},
"strapi": {
"uuid": "getstarted"

View File

@ -1,5 +1,5 @@
{
"version": "3.6.5",
"version": "3.6.6",
"packages": [
"packages/*",
"examples/*"

View File

@ -1,6 +1,6 @@
{
"name": "create-strapi-app",
"version": "3.6.5",
"version": "3.6.6",
"description": "Generate a new Strapi application.",
"license": "SEE LICENSE IN LICENSE",
"homepage": "https://strapi.io",
@ -21,7 +21,7 @@
"inquirer": "8.1.0",
"js-yaml": "4.1.0",
"node-fetch": "^2.6.1",
"@strapi/generate-new": "3.6.5"
"@strapi/generate-new": "3.6.6"
},
"scripts": {
"test": "echo \"no tests yet\""

View File

@ -1,6 +1,6 @@
{
"name": "create-strapi-starter",
"version": "3.6.5",
"version": "3.6.6",
"description": "Generate a new Strapi application.",
"license": "SEE LICENSE IN LICENSE",
"homepage": "https://strapi.io",
@ -26,8 +26,8 @@
"js-yaml": "4.1.0",
"node-fetch": "^2.6.1",
"ora": "5.4.0",
"@strapi/generate-new": "3.6.5",
"tar": "6.1.0"
"@strapi/generate-new": "3.6.6",
"tar": "6.1.2"
},
"scripts": {
"test": "echo \"no tests yet\""

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -2,7 +2,7 @@ import styled from 'styled-components';
import PropTypes from 'prop-types';
const Wrapper = styled.div`
background-color: #007eff;
background-color: ${props => props.theme.main.colors.leftMenu['background-header-link']};
padding-left: 2rem;
height: ${props => props.theme.main.sizes.leftMenu.height};

View File

@ -44,7 +44,10 @@ const ActionRow = ({
style={{ maxWidth: '60%' }}
ellipsis
>
{label}
{formatMessage({
id: `Settings.roles.form.permissions.${label.toLowerCase()}`,
defaultMessage: label,
})}
</Text>
<Text
lineHeight="19px"

View File

@ -40,7 +40,10 @@ const Header = ({ headers, label }) => {
return (
<HeaderLabel key={header.label}>
<Text textTransform="capitalize" fontWeight="bold">
{header.label}
{formatMessage({
id: `Settings.roles.form.permissions.${header.label.toLowerCase()}`,
defaultMessage: header.label,
})}
</Text>
</HeaderLabel>
);

View File

@ -0,0 +1,29 @@
import styled from 'styled-components';
// TODO : To migrate with @strapi/parts
const Wrapper = styled.div`
display: flex;
align-items: center;
margin-top: 2rem;
border-radius: 4px;
border-left: 4px solid ${({ theme }) => theme.main.colors.mediumBlue};
box-shadow: 0 2px 4px ${({ theme }) => theme.main.colors.darkGrey};
padding: 8px 16px;
.bannerImage {
margin-right: 1rem;
width: 48px;
height: 48px;
margin-right: 16px;
}
.bannerLink {
color: ${({ theme }) => theme.main.colors.mediumBlue};
font-weight: ${({ theme }) => theme.main.fontWeights.bold};
svg {
margin-left: 4px;
}
}
`;
export default Wrapper;

View File

@ -0,0 +1,34 @@
import React from 'react';
import { FormattedMessage, useIntl } from 'react-intl';
import Wrapper from './Wrapper';
import LogoStrapi from '../../../assets/images/banner_strapi-rocket.png';
const PluginBanner = () => {
const { formatMessage } = useIntl();
return (
<Wrapper>
<img
className="bannerImage"
src={LogoStrapi}
alt={formatMessage({ id: 'app.components.PluginBanner.image.alt' })}
/>
<div>
<div>
<FormattedMessage id="app.components.PluginBanner" />
</div>
<a
href="https://github.com/strapi/awesome-strapi"
target="_blank"
rel="noopener noreferrer"
className="bannerLink"
>
<FormattedMessage id="app.components.PluginBanner.link" />
<i className="fa fa-external-link-alt" />
</a>
</div>
</Wrapper>
);
};
export default PluginBanner;

View File

@ -15,6 +15,7 @@ import { useFetchPluginsFromMarketPlace } from '../../hooks';
import PageTitle from '../../components/PageTitle';
import PluginCard from './PluginCard';
import Wrapper from './Wrapper';
import PluginBanner from './PluginBanner';
const MarketPlacePage = () => {
const toggleNotification = useNotification();
@ -30,7 +31,7 @@ const MarketPlacePage = () => {
const emitEventRef = useRef(trackUsage);
useEffect(() => {
emitEventRef.current('didGotToMarketplace');
emitEventRef.current('didGoToMarketplace');
}, []);
if (isLoading || error) {
@ -90,6 +91,7 @@ const MarketPlacePage = () => {
id: 'app.components.InstallPluginPage.description',
})}
/>
<PluginBanner />
<div className="row" style={{ paddingTop: '4.1rem' }}>
{data.map(plugin => {
return (

View File

@ -64,6 +64,15 @@ describe('ADMIN | pages | SettingsPage', () => {
const { container } = render(App);
expect(container.firstChild).toMatchInlineSnapshot(`
.c5 {
margin: 0;
line-height: 34px;
color: #292b2c;
font-size: 13px;
font-weight: 400;
text-transform: none;
}
.c1 {
position: fixed;
top: 0;
@ -105,15 +114,6 @@ describe('ADMIN | pages | SettingsPage', () => {
margin-bottom: 29px;
}
.c5 {
margin: 0;
line-height: 34px;
color: #292b2c;
font-size: 13px;
font-weight: 400;
text-transform: none;
}
.c4 {
display: -webkit-box;
display: -webkit-flex;

View File

@ -37,6 +37,7 @@ const colors = {
'link-hover': '#1c2431',
'link-color': '#919bae',
'title-color': '#5b626f',
'background-header-link': '#007eff',
},
strapi: {
'gray-light': '#eff3f6',

View File

@ -231,6 +231,9 @@
"app.components.Official": "Official",
"app.components.Onboarding.label.completed": "% completed",
"app.components.Onboarding.title": "Get Started Videos",
"app.components.PluginBanner": "Discover plugins built by the community, and many more awesome things to kickstart your project, on Strapi Awesome.",
"app.components.PluginBanner.image.alt": "a strapi rocket logo",
"app.components.PluginBanner.link": "Check it out now",
"app.components.PluginCard.Button.label.download": "Download",
"app.components.PluginCard.Button.label.install": "Already installed",
"app.components.PluginCard.PopUpWarning.install.impossible.autoReload.needed": "The autoReload feature needs to be enabled. Please start your app with `yarn develop`.",

View File

@ -230,6 +230,7 @@ async function watchAdmin({ dir, host, port, browser, options }) {
roots,
};
const webpackConfig = getCustomWebpackConfig(dir, args);
const opts = {
clientLogLevel: 'silent',
quiet: true,
@ -239,9 +240,9 @@ async function watchAdmin({ dir, host, port, browser, options }) {
index: options.adminPath,
disableDotRule: true,
},
...webpack(webpackConfig).options.devServer,
};
const webpackConfig = getCustomWebpackConfig(dir, args);
const server = new WebpackDevServer(webpack(webpackConfig), opts);
server.listen(port, host, function(err) {

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/admin",
"version": "3.6.5",
"version": "3.6.6",
"description": "Strapi Admin",
"repository": {
"type": "git",
@ -25,12 +25,12 @@
"@babel/preset-env": "7.14.0",
"@babel/preset-react": "7.13.13",
"@babel/runtime": "7.14.0",
"@buffetjs/core": "3.3.6",
"@buffetjs/custom": "3.3.6",
"@buffetjs/hooks": "3.3.6",
"@buffetjs/icons": "3.3.6",
"@buffetjs/styles": "3.3.6",
"@buffetjs/utils": "3.3.6",
"@buffetjs/core": "3.3.8",
"@buffetjs/custom": "3.3.8",
"@buffetjs/hooks": "3.3.8",
"@buffetjs/icons": "3.3.8",
"@buffetjs/styles": "3.3.8",
"@buffetjs/utils": "3.3.8",
"@casl/ability": "^4.1.5",
"@fingerprintjs/fingerprintjs": "3.1.1",
"@fortawesome/fontawesome-free": "^5.15.3",
@ -39,8 +39,8 @@
"@fortawesome/free-solid-svg-icons": "^5.15.3",
"@fortawesome/react-fontawesome": "^0.1.14",
"@strapi/babel-plugin-switch-ee-ce": "1.0.0",
"@strapi/helper-plugin": "3.6.5",
"@strapi/utils": "3.6.5",
"@strapi/helper-plugin": "3.6.6",
"@strapi/utils": "3.6.6",
"axios": "^0.21.1",
"babel-loader": "8.2.2",
"babel-plugin-styled-components": "1.12.0",

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/plugin-content-manager",
"version": "3.6.5",
"version": "3.6.6",
"description": "A powerful UI to easily manage your data.",
"strapi": {
"name": "Content Manager",
@ -10,8 +10,8 @@
},
"dependencies": {
"@sindresorhus/slugify": "1.1.0",
"@strapi/helper-plugin": "3.6.5",
"@strapi/utils": "3.6.5",
"@strapi/helper-plugin": "3.6.6",
"@strapi/utils": "3.6.6",
"lodash": "4.17.21",
"pluralize": "^8.0.0",
"yup": "^0.32.9"

View File

@ -8,7 +8,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import { get } from 'lodash';
import { ListButton } from '@strapi/helper-plugin';
import { ListButton, useTracking } from '@strapi/helper-plugin';
import { Button } from '@buffetjs/core';
import { Plus } from '@buffetjs/icons';
import { useIntl } from 'react-intl';
@ -41,9 +41,11 @@ function List({
dzName,
}) {
const { formatMessage } = useIntl();
const { trackUsage } = useTracking();
const { isInDevelopmentMode, modifiedData } = useDataManager();
const { openModalAddField } = useListView();
const onClickAddField = () => {
trackUsage('hasClickedCTBAddFieldBanner');
const firstComponentIcon = get(
modifiedData,
['components', firstLoopComponentUid, 'schema', 'icon'],

View File

@ -244,7 +244,7 @@ const getTypeShape = (attribute, { modelType, attributes } = {}) => {
if (modelType === modelTypes.COMPONENT && hasComponent(targetCompo)) {
return this.createError({
path: this.path,
message: `${targetCompo.modelName} already as a nested compoent. You cannot have more than one level of nesting inside your components.`,
message: `${targetCompo.modelName} already is a nested component. You cannot have more than one level of nesting inside your components.`,
});
}
return true;

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/plugin-content-type-builder",
"version": "3.6.5",
"version": "3.6.6",
"description": "Strapi plugin to create content type (API).",
"strapi": {
"name": "Content Type Builder",
@ -9,10 +9,10 @@
},
"dependencies": {
"@sindresorhus/slugify": "1.1.0",
"@strapi/generate": "3.6.5",
"@strapi/generate-api": "3.6.5",
"@strapi/helper-plugin": "3.6.5",
"@strapi/utils": "3.6.5",
"@strapi/generate": "3.6.6",
"@strapi/generate-api": "3.6.6",
"@strapi/helper-plugin": "3.6.6",
"@strapi/utils": "3.6.6",
"fs-extra": "^9.1.0",
"lodash": "4.17.21",
"pluralize": "^8.0.0",

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/database",
"version": "3.6.5",
"version": "3.6.6",
"description": "Strapi's database layer",
"homepage": "https://strapi.io",
"main": "./lib/index.js",

View File

@ -1,4 +1,22 @@
{
"plugin.description.long": "发送电子邮件。",
"plugin.description.short": "发送电子邮件。"
"plugin.description.long": "发送邮件",
"plugin.description.short": "发送邮件",
"SettingsNav.section-label": "电子邮件插件",
"SettingsNav.link.settings": "电子邮件设置",
"Settings.title": "电子邮件设置",
"Settings.subTitle": "测试电子邮件插件配置",
"Settings.button.test-email": "测试邮件",
"Settings.notification.test.success": "邮件发送成功, 请检查{to}邮箱",
"Settings.notification.test.error": "测试邮件发送至{to}失败",
"Settings.notification.config.error": "无法使用电子邮件配置",
"Settings.form.title.config": "配置",
"Settings.form.title.test": "发送一个测试邮件",
"Settings.form.label.provider": "电子邮件提供商",
"Settings.form.label.defaultFrom": "默认寄件地址",
"Settings.form.label.defaultReplyTo": "默认回复地址",
"Settings.form.label.testAddress": "测试寄件电子邮件",
"Settings.form.placeholder.defaultFrom": "例如: Strapi No-Reply <no-reply@strapi.io>",
"Settings.form.placeholder.defaultReplyTo": "例如: Strapi <example@strapi.io>",
"Settings.form.placeholder.testAddress": "例如: developer@example.com",
"Settings.form.text.configuration": "该插件通过{file}进行配置, 点击{link}查看文档"
}

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/plugin-email",
"version": "3.6.5",
"version": "3.6.6",
"description": "Easily configure your Strapi application to send emails.",
"strapi": {
"name": "Email",
@ -13,12 +13,12 @@
},
"dependencies": {
"lodash": "4.17.21",
"@strapi/provider-email-sendmail": "3.6.5",
"@strapi/utils": "3.6.5"
"@strapi/provider-email-sendmail": "3.6.6",
"@strapi/utils": "3.6.6"
},
"devDependencies": {
"rimraf": "3.0.2",
"@strapi/helper-plugin": "3.6.5"
"@strapi/helper-plugin": "3.6.6"
},
"author": {
"name": "Strapi team",

View File

@ -3,11 +3,22 @@
exports[`<PopUpWarning /> should render properly should match snapshot if onlyConfirmButton is false 1`] = `
<DocumentFragment>
.c8 {
display: -webkit-inline-box;
display: -webkit-inline-flex;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-align-items: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
height: 30px;
padding: 0 15px 2px;
padding: 0 15px;
font-weight: 600;
font-size: 1.3rem;
line-height: normal;
border-radius: 2px;
cursor: pointer;
outline: 0;
@ -30,22 +41,31 @@ exports[`<PopUpWarning /> should render properly should match snapshot if onlyCo
.c8 > span svg {
font-size: 10px;
vertical-align: initial;
}
.c8 > svg {
height: 10px;
width: auto;
margin-right: 10px;
vertical-align: baseline;
}
.c9 {
display: -webkit-inline-box;
display: -webkit-inline-flex;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-align-items: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
height: 30px;
padding: 0 15px 2px;
padding: 0 15px;
font-weight: 600;
font-size: 1.3rem;
line-height: normal;
border-radius: 2px;
cursor: pointer;
outline: 0;
@ -68,14 +88,12 @@ exports[`<PopUpWarning /> should render properly should match snapshot if onlyCo
.c9 > span svg {
font-size: 10px;
vertical-align: initial;
}
.c9 > svg {
height: 10px;
width: auto;
margin-right: 10px;
vertical-align: baseline;
}
.c5 {
@ -284,11 +302,22 @@ exports[`<PopUpWarning /> should render properly should match snapshot if onlyCo
exports[`<PopUpWarning /> should render properly should match snapshot if onlyConfirmButton is true 1`] = `
<DocumentFragment>
.c8 {
display: -webkit-inline-box;
display: -webkit-inline-flex;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-align-items: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
height: 30px;
padding: 0 15px 2px;
padding: 0 15px;
font-weight: 600;
font-size: 1.3rem;
line-height: normal;
border-radius: 2px;
cursor: pointer;
outline: 0;
@ -311,14 +340,12 @@ exports[`<PopUpWarning /> should render properly should match snapshot if onlyCo
.c8 > span svg {
font-size: 10px;
vertical-align: initial;
}
.c8 > svg {
height: 10px;
width: auto;
margin-right: 10px;
vertical-align: baseline;
}
.c5 {

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/helper-plugin",
"version": "3.6.5",
"version": "3.6.6",
"description": "Helper for Strapi plugins development",
"main": "build/index.js",
"module": "build/index.esm.js",
@ -57,12 +57,12 @@
"rollup-plugin-terser": "7.0.2"
},
"dependencies": {
"@buffetjs/core": "3.3.5",
"@buffetjs/custom": "3.3.5",
"@buffetjs/hooks": "3.3.5",
"@buffetjs/icons": "3.3.5",
"@buffetjs/styles": "3.3.5",
"@buffetjs/utils": "3.3.5",
"@buffetjs/core": "3.3.8",
"@buffetjs/custom": "3.3.8",
"@buffetjs/hooks": "3.3.8",
"@buffetjs/icons": "3.3.8",
"@buffetjs/styles": "3.3.8",
"@buffetjs/utils": "3.3.8",
"@fortawesome/fontawesome-free": "^5.15.2",
"@fortawesome/fontawesome-svg-core": "^1.2.35",
"@fortawesome/free-brands-svg-icons": "^5.15.2",

View File

@ -8,24 +8,6 @@
<p align="center"><a href="https://strapi.io/demo">Try live demo</a></p>
<br />
<p align="center">
<a href="https://console.platform.sh/projects/create-project?template=https://raw.githubusercontent.com/platformsh/template-builder/master/templates/strapi/.platform.template.yaml&utm_content=strapi&utm_source=github&utm_medium=button&utm_campaign=deploy_on_platform">
<img src="https://assets.strapi.io/uploads/deploy_button_platform_sh_d032f646a7.png" />
</a>
<a href="https://marketplace.digitalocean.com/apps/strapi">
<img src="https://assets.strapi.io/uploads/deploy_button_Digital_Ocean_fe2c286222.png" />
</a>
<a href="https://www.heroku.com/deploy/?template=https://github.com/strapi/strapi-heroku-template">
<img src="https://assets.strapi.io/uploads/Deploy_button_heroku_b1043fc67d.png" />
</a>
<a href="https://render.com/docs/deploy-strapi">
<img src="https://assets.strapi.io/uploads/deploy_render_e076b6f23a.png" height="44" />
</a>
</p>
<p align="center">
<a href="https://www.npmjs.org/package/strapi">
<img src="https://img.shields.io/npm/v/strapi/latest.svg" alt="NPM Version" />

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/strapi",
"version": "3.6.5",
"version": "3.6.6",
"description": "An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MySQL, MariaDB, PostgreSQL, SQLite",
"homepage": "https://strapi.io",
"directories": {
@ -13,18 +13,18 @@
},
"dependencies": {
"@koa/cors": "^3.0.0",
"@strapi/admin": "3.6.5",
"@strapi/database": "3.6.5",
"@strapi/generate": "3.6.5",
"@strapi/generate-api": "3.6.5",
"@strapi/generate-controller": "3.6.5",
"@strapi/generate-model": "3.6.5",
"@strapi/generate-new": "3.6.5",
"@strapi/generate-plugin": "3.6.5",
"@strapi/generate-policy": "3.6.5",
"@strapi/generate-service": "3.6.5",
"@strapi/logger": "3.6.5",
"@strapi/utils": "3.6.5",
"@strapi/admin": "3.6.6",
"@strapi/database": "3.6.6",
"@strapi/generate": "3.6.6",
"@strapi/generate-api": "3.6.6",
"@strapi/generate-controller": "3.6.6",
"@strapi/generate-model": "3.6.6",
"@strapi/generate-new": "3.6.6",
"@strapi/generate-plugin": "3.6.6",
"@strapi/generate-policy": "3.6.6",
"@strapi/generate-service": "3.6.6",
"@strapi/logger": "3.6.6",
"@strapi/utils": "3.6.6",
"async": "^2.1.2",
"boom": "^7.3.0",
"boxen": "4.2.0",

View File

@ -245,6 +245,7 @@ describe('Search query', () => {
expect(res.body.length).toBe(2);
expect(res.body).toEqual(expect.arrayContaining(data.bed.slice(0, 2)));
});
test('search for "Sleepy Bed" & peopleNumber < 7', async () => {
const res = await rq({
method: 'GET',
@ -263,5 +264,23 @@ describe('Search query', () => {
expect(res.body.length).toBe(1);
expect(res.body[0]).toMatchObject(data.bed[0]);
});
test('search with a backslash', async () => {
const res = await rq({
method: 'GET',
url: '/beds',
qs: {
_q: 'Sleepy Bed',
filters: {
name: {
$contains: 'test\\',
},
},
},
});
expect(Array.isArray(res.body)).toBe(true);
expect(res.body.length).toBe(0);
});
});
});

View File

@ -0,0 +1,86 @@
{
"page.title": "设置 - 媒体库",
"button.next": "下一步",
"checkControl.crop-duplicate": "复制裁剪素材",
"checkControl.crop-original": "裁剪原始素材",
"control-card.add": "添加",
"control-card.cancel": "取消",
"control-card.copy-link": "复制链接",
"control-card.crop": "裁剪",
"control-card.delete": "删除",
"control-card.download": "下载",
"control-card.edit": "编辑",
"control-card.replace-media": "替换媒体文件",
"control-card.save": "保存",
"filter.add": "添加筛选条件",
"form.button.replace-media": "替换媒体",
"form.input.decription.file-alt": "该文本将会在素材不显示时显示",
"form.input.label.file-alt": "备用文本",
"form.input.label.file-caption": "标题",
"form.input.label.file-name": "文件名",
"form.upload-url.error.url.invalid": "有一个链接格式不合法",
"form.upload-url.error.url.invalids": "{number}个链接格式不合法",
"header.actions.upload-assets": "上传素材",
"header.content.assets-empty": "无素材",
"header.content.assets-multiple": "{number}个素材",
"header.content.assets-single": "1个素材",
"input.button.label": "浏览文件",
"input.label-bold": "拖拽至此",
"input.label-normal": "并上传",
"input.placeholder": "点击选择一个资源,或者拖拽文件至区域",
"input.placeholder.icon": "在此区域内放置资源",
"input.url.description": "回车键分隔URL链接",
"input.url.label": "URL",
"list.assets-empty.subtitle": "添加一个到列表中",
"list.assets-empty.title": "暂无素材",
"list.assets-empty.title-withSearch": "无素材符合当前筛选条件",
"list.assets.selected.plural": "{number}个素材选中",
"list.assets.selected.singular": "{number}个素材被选中",
"list.assets.type-not-allowed": "文件类型不合法",
"list.assets.not-supported-content": "无可用预览",
"list.assets.loading-asset": "正在为媒体加载预览: {path}",
"list.assets.preview-asset": "预览视频(路径:{path}",
"modal.file-details.date": "日期",
"modal.file-details.dimensions": "尺寸",
"modal.file-details.extension": "扩展名",
"modal.file-details.size": "大小",
"modal.header.browse": "上传素材",
"modal.header.file-detail": "详情",
"modal.header.pending-assets": "素材上传中",
"modal.header.select-files": "选中文件",
"modal.nav.browse": "浏览",
"modal.nav.computer": "从本地",
"modal.nav.selected": "选中",
"modal.nav.url": "从链接",
"modal.selected-list.sub-header-subtitle": "拖拽排序字段中的素材",
"modal.upload-list.footer.button.plural": "上传{number}个素材至媒体库",
"modal.upload-list.footer.button.singular": "上传{number}个素材至媒体库",
"modal.upload-list.sub-header-subtitle": "在添加到媒体库之前,管理你的素材",
"modal.upload-list.sub-header-title.plural": "{number}个素材被选中",
"modal.upload-list.sub-header-title.singular": "{number}个素材被选中",
"modal.upload-list.sub-header.button": "添加更多的素材",
"plugin.description.long": "媒体文件管理",
"plugin.description.short": "媒体文件管理",
"plugin.name": "媒体库",
"search.placeholder": "搜索素材...",
"settings.form.autoOrientation.description": "根据EXIF orientation标签自动旋转图像",
"settings.form.autoOrientation.label": "开始自动旋转功能",
"settings.form.responsiveDimensions.description": "上传素材将会自动生成大,中,小三种尺寸",
"settings.form.responsiveDimensions.label": "启动响应式图片上传",
"settings.form.sizeOptimization.label": "开启图片大小优化(无损)",
"settings.form.videoPreview.description": "自动生成6秒钟的视频预览GIF",
"settings.form.videoPreview.label": "预览",
"settings.header.label": "媒体库 - 设置",
"settings.section.image.label": "图片",
"settings.section.video.label": "视频",
"settings.sub-header.label": "媒体库设置",
"sort.created_at_asc": "最早上传",
"sort.created_at_desc": "最近上传",
"sort.label": "排序",
"sort.name_asc": "字母顺序 (A to Z)",
"sort.name_desc": "字母倒序 (Z to A)",
"sort.updated_at_asc": "最早更新",
"sort.updated_at_desc": "最近更新",
"window.confirm.close-modal.file": "你确定吗?你的更改将会丢失",
"window.confirm.close-modal.files": "你确定吗?你还有一些文件还没有被上传"
}

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/plugin-upload",
"version": "3.6.5",
"version": "3.6.6",
"description": "Makes it easy to upload images and files to your Strapi Application.",
"strapi": {
"name": "Media Library",
@ -12,9 +12,9 @@
"test": "echo \"no tests yet\""
},
"dependencies": {
"@strapi/helper-plugin": "3.6.5",
"@strapi/provider-upload-local": "3.6.5",
"@strapi/utils": "3.6.5",
"@strapi/helper-plugin": "3.6.6",
"@strapi/provider-upload-local": "3.6.6",
"@strapi/utils": "3.6.6",
"byte-size": "^7.0.1",
"cropperjs": "^1.5.11",
"immer": "9.0.5",

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/utils",
"version": "3.6.5",
"version": "3.6.6",
"description": "Shared utilities for the Strapi packages",
"homepage": "https://strapi.io",
"keywords": [

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/generate-api",
"version": "3.6.5",
"version": "3.6.6",
"description": "Generate an API for a Strapi application.",
"homepage": "https://strapi.io",
"keywords": [
@ -15,7 +15,7 @@
"dependencies": {
"lodash": "4.17.21",
"pluralize": "^8.0.0",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"scripts": {
"test": "echo \"no tests yet\""

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/generate-new",
"version": "3.6.5",
"version": "3.6.6",
"description": "Generate a new Strapi application.",
"homepage": "https://strapi.io",
"keywords": [
@ -23,7 +23,7 @@
"node-fetch": "^2.6.1",
"node-machine-id": "^1.1.10",
"ora": "^5.4.0",
"tar": "6.1.0",
"tar": "6.1.2",
"uuid": "^3.3.2"
},
"scripts": {

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/generate-controller",
"version": "3.6.5",
"version": "3.6.6",
"description": "Generate a controller for a Strapi API.",
"homepage": "https://strapi.io",
"keywords": [
@ -15,7 +15,7 @@
},
"dependencies": {
"lodash": "4.17.21",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"scripts": {
"test": "echo \"no tests yet\""

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/generate",
"version": "3.6.5",
"version": "3.6.6",
"description": "Master of ceremonies for the Strapi generators.",
"homepage": "https://strapi.io",
"keywords": [
@ -20,7 +20,7 @@
"fs-extra": "^9.1.0",
"lodash": "4.17.21",
"reportback": "^2.0.2",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"author": {
"name": "Strapi team",

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/generate-model",
"version": "3.6.5",
"version": "3.6.6",
"description": "Generate a model for a Strapi API.",
"homepage": "https://strapi.io",
"keywords": [
@ -16,7 +16,7 @@
"dependencies": {
"lodash": "4.17.21",
"pluralize": "^8.0.0",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"scripts": {
"test": "echo \"no tests yet\""

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/generate-plugin",
"version": "3.6.5",
"version": "3.6.6",
"description": "Generate an plugin for a Strapi application.",
"homepage": "https://strapi.io",
"keywords": [
@ -15,7 +15,7 @@
"dependencies": {
"fs-extra": "^9.1.0",
"lodash": "4.17.21",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"scripts": {
"test": "echo \"no tests yet\""

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/generate-policy",
"version": "3.6.5",
"version": "3.6.6",
"description": "Generate a policy for a Strapi API.",
"homepage": "https://strapi.io",
"keywords": [
@ -15,7 +15,7 @@
},
"dependencies": {
"lodash": "4.17.21",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"scripts": {
"test": "echo \"no tests yet\""

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/generate-service",
"version": "3.6.5",
"version": "3.6.6",
"description": "Generate a service for a Strapi API.",
"homepage": "https://strapi.io",
"keywords": [
@ -15,7 +15,7 @@
},
"dependencies": {
"lodash": "4.17.21",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"scripts": {
"test": "echo \"no tests yet\""

View File

@ -23,5 +23,9 @@
"error.regenerateDoc": "重新生成文件时发生错误",
"error.regenerateDoc.versionMissing": "您尝试重新生成的版本不存在",
"notification.update.success": "设置更新成功",
"plugin.name": "文档"
"notification.delete.success": "文档删除成功",
"notification.generate.success": "文档生成成功",
"plugin.name": "文档",
"plugin.description.long": "创建OpenAPI文档并使用SwaggerUI可视化你的API",
"plugin.description.short": "创建OpenAPI文档并使用SwaggerUI可视化你的API"
}

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/plugin-documentation",
"version": "3.6.5",
"version": "3.6.6",
"description": "Create an OpenAPI Document and visualize your API with SWAGGER UI.",
"strapi": {
"name": "Documentation",
@ -11,7 +11,7 @@
"test": "echo \"no tests yet\""
},
"dependencies": {
"@strapi/helper-plugin": "3.6.5",
"@strapi/helper-plugin": "3.6.6",
"cheerio": "^1.0.0-rc.5",
"fs-extra": "^9.1.0",
"koa-static": "^5.0.0",

View File

@ -1255,7 +1255,7 @@ module.exports = {
if (isModelRelated) {
switch (controllerMethod) {
case 'count':
return `Retrieve the numver of ${tag} documents`;
return `Retrieve the number of ${tag} documents`;
case 'findOne':
return `Find one ${tag} record`;
case 'find':

View File

@ -0,0 +1,4 @@
{
"plugin.description.long": "为默认API方法添加GraphQL端点",
"plugin.description.short": "为默认API方法添加GraphQL端点"
}

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/plugin-graphql",
"version": "3.6.5",
"version": "3.6.6",
"description": "Adds GraphQL endpoint with default API methods.",
"strapi": {
"name": "graphql",
@ -27,7 +27,7 @@
"koa-compose": "^4.1.0",
"lodash": "4.17.21",
"pluralize": "^8.0.0",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"devDependencies": {
"cross-env": "^7.0.3",

View File

@ -111,13 +111,16 @@ const Content = ({ appLocales, currentLocale, localizations, readPermissions })
defaultMessage: 'Yes, fill in',
}}
content={{
id: 'CMEditViewCopyLocale.ModalConfirm.content',
id: getTrad('CMEditViewCopyLocale.ModalConfirm.content'),
defaultMessage:
'Your current content will be erased and filled by the content of the selected locale:',
}}
isOpen={isOpen}
onConfirm={handleConfirmCopyLocale}
title={{ id: 'CMEditViewCopyLocale.ModalConfirm.title', defaultMessage: 'Select Locale' }}
title={{
id: getTrad('CMEditViewCopyLocale.ModalConfirm.title'),
defaultMessage: 'Select Locale',
}}
toggle={handleToggle}
type="success"
>

View File

@ -52,7 +52,7 @@ const ModalEdit = ({ localeToEdit, onClose, locales }) => {
title={formatMessage({
id: getTrad('Settings.locales.modal.title'),
})}
breadCrumb={[formatMessage({ id: getTrad('Settings.list.actions.edit') })]}
breadCrumb={[getTrad('Settings.list.actions.edit')]}
tabsAriaLabel={formatMessage({
id: getTrad('Settings.locales.modal.edit.tab.label'),
})}

View File

@ -2,11 +2,22 @@
exports[`i18n settings page permissions shows nothing when the user doesn't have read permission 1`] = `
.c3 {
display: -webkit-inline-box;
display: -webkit-inline-flex;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-align-items: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
height: 30px;
padding: 0 15px 2px;
padding: 0 15px;
font-weight: 600;
font-size: 1.3rem;
line-height: normal;
border-radius: 2px;
cursor: pointer;
outline: 0;
@ -29,14 +40,12 @@ exports[`i18n settings page permissions shows nothing when the user doesn't have
.c3 > span svg {
font-size: 10px;
vertical-align: initial;
}
.c3 > svg {
height: 10px;
width: auto;
margin-right: 10px;
vertical-align: baseline;
}
.c0 {

View File

@ -0,0 +1,60 @@
{
"plugin.name": "国际化",
"plugin.description.long": "开启此插件后可以在管理面板或是API中创建查询及更新不同语言的内容",
"plugin.description.short": "在管理面板或是API中创建查询及更新不同语言的内容",
"Settings.permissions.loading": "加载权限中",
"Settings.permissions.read.denied.title": "你没有获取该内容的权限",
"Settings.permissions.read.denied.description": "为了能够阅读该内容,你可以和系统管理员取得联系",
"plugin.schema.i18n.localized.label": "为内容类型开启本地化",
"plugin.schema.i18n.localized.description": "允许您为内容设置不同的语言",
"plugin.schema.i18n.localized.label-content-type": "为该内容类型开启本地化",
"plugin.schema.i18n.localized.description-content-type": "允许您为内容设置不同的语言",
"plugin.schema.i18n.localized.label-field": "为该字段开启本地化",
"plugin.schema.i18n.localized.description-field": "该字段在不同的语言环境中有不同的值",
"plugin.schema.i18n.ensure-unique-localization": "唯一字段必须本地化",
"CheckboxConfirmation.Modal.content": "关闭国际化将会导致除和默认语言关联的内容之外的所有内容被删除",
"CheckboxConfirmation.Modal.body": "你要关闭它吗?",
"CheckboxConfirmation.Modal.button-confirm": "是的, 关闭",
"CMEditViewCopyLocale.copy-success": "语言已被复制",
"CMEditViewCopyLocale.copy-failure": "语言复制失败",
"CMEditViewCopyLocale.copy-text": "从另一个语言获取内容",
"CMEditViewCopyLocale.ModalConfirm.title": "选择语言",
"CMEditViewCopyLocale.ModalConfirm.content": "您的当前内容将会被清除并填入以下选择语言的内容:",
"CMEditViewCopyLocale.submit-text": "是的, 填入",
"Field.localized": "该值对于选中语言是唯一的",
"Field.not-localized": "该值对所有语言通用",
"Settings.list.description": "国际化插件设置",
"Settings.list.empty.title": "暂无语言",
"Settings.list.empty.description": "这不是一个常规的动作您动手修改了数据库。为了能正确使用Strapi请确保至少保存一种语言在您的数据库中",
"Settings.list.actions.add": "添加语言",
"Settings.list.actions.edit": "编辑语言",
"Settings.list.actions.delete": "删除语言",
"Settings.list.actions.deleteAdditionalInfos": "这将会删除可用的语言版本<em>(来自国际化)</em>",
"Settings.locales.list.title.singular": "{number}语言",
"Settings.locales.list.title.plural": "共{number}种语言",
"Settings.locales.row.default-locale": "默认语言",
"Settings.locales.modal.title": "配置",
"Settings.locales.modal.delete.confirm": "是的, 删除",
"Settings.locales.modal.delete.message": "删除该语言将会删除所有与之相关的内容。如果你想保留某些内容,请确保先将其保存到另一种语言。",
"Settings.locales.modal.delete.secondMessage": "您要删除该语言?",
"Settings.locales.modal.delete.success": "该语言已成功删除",
"Settings.locales.modal.edit.confirmation": "完成",
"Settings.locales.modal.edit.success": "该语言已完成编辑",
"Settings.locales.modal.edit.tab.label": "将会在国际化基础设置及高级设置之前切换",
"Settings.locales.modal.base": "基本设置",
"Settings.locales.modal.advanced": "高级设置",
"Settings.locales.modal.advanced.settings": "设置",
"Settings.locales.modal.advanced.setAsDefault": "设置为默认语言",
"Settings.locales.modal.advanced.setAsDefault.hint": "系统中必须有一个默认语言,可以通过选中另一个非默认语言来设置",
"Settings.locales.modal.create.defaultLocales.loading": "正在加载可用语言...",
"Settings.locales.modal.create.confirmation": "添加语言",
"Settings.locales.modal.create.success": "该语言已成功添加",
"Settings.locales.modal.create.alreadyExist": "该语言已存在",
"Settings.locales.modal.locales.label": "语言",
"Settings.locales.modal.edit.locales.label": "语言",
"Settings.locales.modal.locales.displayName": "语言显示名称",
"Settings.locales.modal.locales.displayName.error": "语言的显示名称不能少于50个字符",
"Settings.locales.modal.locales.displayName.description":"管理面板中语言将会以该名显示",
"Settings.locales.modal.create.tab.label":"将会在国际化基础设置及高级设置之前切换",
"components.Select.locales.not-available": "无可用内容"
}

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/plugin-i18n",
"version": "3.6.5",
"version": "3.6.6",
"description": "This plugin enables to create, to read and to update content in different languages, both from the Admin Panel and from the API",
"strapi": {
"name": "Internationalization",
@ -12,7 +12,7 @@
"lodash": "4.17.20",
"p-map": "4.0.0",
"pluralize": "8.0.0",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"author": {
"name": "A Strapi developer",

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/plugin-sentry",
"version": "3.6.5",
"version": "3.6.6",
"description": "Send Strapi error events to Sentry",
"strapi": {
"name": "Sentry",

View File

@ -62,7 +62,7 @@ export default {
},
{
intlLabel: {
id: getTrad('HeaderNav.link.email-templates'),
id: getTrad('HeaderNav.link.emailTemplates'),
defaultMessage: 'Email templates',
},
id: 'email-templates',
@ -76,7 +76,7 @@ export default {
},
{
intlLabel: {
id: getTrad('HeaderNav.link.advanced-settings'),
id: getTrad('HeaderNav.link.advancedSettings'),
defaultMessage: 'Advanced Settings',
},
id: 'advanced-settings',

View File

@ -24,6 +24,11 @@ const AdvancedSettingsPage = () => {
const { lockApp, unlockApp } = useOverlayBlocker();
const [showModalWarning, setShowModalWarning] = useState(false);
const pageTitle = formatMessage({ id: getTrad('HeaderNav.link.advancedSettings') });
const formTitle = formatMessage({
id: getTrad('Form.title.advancedSettings'),
defaultMessage: 'Settings',
});
const updatePermissions = useMemo(() => {
return { update: pluginPermissions.updateAdvancedSettings };
}, []);
@ -180,7 +185,7 @@ const AdvancedSettingsPage = () => {
<form onSubmit={handleSubmit}>
<Header actions={headerActions} title={{ label: pageTitle }} isLoading={showLoader} />
<ListBaselineAlignment />
<FormBloc title="Settings" isLoading={showLoader}>
<FormBloc title={formTitle} isLoading={showLoader}>
{form.map(input => {
return (
<SizedInput

View File

@ -30,7 +30,7 @@ const form = [
name: 'email_reset_password',
type: 'text',
size: { xs: 6 },
placeholder: 'ex: https://yourfrontend.com/reset-password',
placeholder: getTrad('EditForm.inputToggle.placeholder.email-reset-password'),
},
{
description: getTrad('EditForm.inputToggle.description.email-confirmation'),
@ -45,7 +45,7 @@ const form = [
name: 'email_confirmation_redirection',
type: 'text',
size: { xs: 6 },
placeholder: 'ex: https://yourfrontend.com/reset-password',
placeholder: getTrad('EditForm.inputToggle.placeholder.email-confirmation-redirection'),
},
];

View File

@ -33,7 +33,7 @@ const CreatePage = () => {
return [
{
label: formatMessage({
id: getTrad('app.components.Button.reset'),
id: 'app.components.Button.reset',
defaultMessage: 'Reset',
}),
onClick: () => {

View File

@ -37,7 +37,7 @@ const EditPage = () => {
return [
{
label: formatMessage({
id: getTrad('app.components.Button.reset'),
id: 'app.components.Button.reset',
defaultMessage: 'Reset',
}),
onClick: () => {
@ -49,7 +49,7 @@ const EditPage = () => {
},
{
label: formatMessage({
id: getTrad('app.components.Button.save'),
id: 'app.components.Button.save',
defaultMessage: 'Save',
}),
onClick: handleSubmit,

View File

@ -100,7 +100,7 @@ const RoleListPage = () => {
? [
{
label: formatMessage({
id: 'List.button.roles',
id: getTrad('List.button.roles'),
defaultMessage: 'Add new role',
}),
onClick: handleNewRoleClick,

View File

@ -12,6 +12,9 @@
"EditForm.inputToggle.label.email-confirmation-redirection": "Redirection url",
"EditForm.inputToggle.label.email-reset-password": "Reset password page",
"EditForm.inputToggle.label.sign-up": "Enable sign-ups",
"EditForm.inputToggle.placeholder.email-reset-password": "ex: https://yourfrontend.com/reset-password",
"EditForm.inputToggle.placeholder.email-confirmation-redirection": "ex: https://yourfrontend.com/reset-password",
"EditPage.form.roles": "Role details",
"Email.template.email_confirmation": "Email address confirmation",
"Email.template.reset_password": "Reset password",
"HeaderNav.link.advancedSettings": "Advanced settings",
@ -24,6 +27,7 @@
"List.title.providers.disabled.singular": "{number} is disabled",
"List.title.providers.enabled.plural": "{number} providers are enabled and",
"List.title.providers.enabled.singular": "{number} provider is enabled and",
"Form.title.advancedSettings": "Settings",
"Plugin.permissions.plugins.description": "Define all allowed actions for the {name} plugin.",
"Plugins.header.description": "Only actions bound by a route are listed below.",
"Plugins.header.title": "Permissions",

View File

@ -1,4 +1,5 @@
{
"page.title": "设置 - 角色",
"BoundRoute.title": "绑定路由到",
"EditForm.inputSelect.description.role": "新验证身份的用户将被赋予所选角色。",
"EditForm.inputSelect.label.role": "认证用户的默认角色",
@ -12,16 +13,23 @@
"EditForm.inputToggle.label.email-confirmation-redirection": "重定向 URL",
"EditForm.inputToggle.label.email-reset-password": "重置密码页面 URL",
"EditForm.inputToggle.label.sign-up": "启用注册",
"EditForm.inputToggle.placeholder.email-reset-password": "例如: https://yourfrontend.com/reset-password",
"EditForm.inputToggle.placeholder.email-confirmation-redirection": "例如: https://yourfrontend.com/reset-password",
"EditPage.form.roles": "角色详情",
"Email.template.email_confirmation": "邮箱地址确认",
"Email.template.reset_password": "重置密码",
"HeaderNav.link.advancedSettings": "高级设置",
"HeaderNav.link.emailTemplates": "电子邮件模板",
"HeaderNav.link.providers": "提供者",
"HeaderNav.link.roles": "角色和权限",
"List.button.roles": "添加新的角色",
"List.title.emailTemplates.plural": "{number} 电子邮件模板是可用的",
"List.title.emailTemplates.singular": "{number} 电子邮件模板是可用的",
"List.title.providers.disabled.plural": "{number} 被禁用",
"List.title.providers.disabled.singular": "{number} 被禁用",
"List.title.providers.enabled.plural": "{number} 个供应商被启用, ",
"List.title.providers.enabled.singular": "{number} 个供应商被启用, ",
"Form.title.advancedSettings": "设置",
"Plugin.permissions.plugins.description": "定义 {name} 插件所有允许的操作。",
"Plugins.header.description": "下面只列出路由绑定的操作。",
"Plugins.header.title": "权限",
@ -30,26 +38,37 @@
"Policies.header.hint": "选择应用程序或插件的操作,然后点击 COG 图标显示绑定的路由",
"Policies.header.title": "高级设置",
"PopUpForm.Email.email_templates.inputDescription": "如果你不确定如何使用变量, {link}",
"PopUpForm.Email.options.from.email.label": "Shipper 电子邮件地址",
"PopUpForm.Email.link.documentation": "查看我们的文档",
"PopUpForm.Email.options.from.email.label": "发件人地址",
"PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
"PopUpForm.Email.options.from.name.label": "Shipper 名称",
"PopUpForm.Email.options.from.name.label": "发件人名称",
"PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
"PopUpForm.Email.options.message.label": "消息",
"PopUpForm.Email.options.object.label": "主题",
"PopUpForm.Email.options.response_email.label": "回复电子邮件",
"PopUpForm.Email.options.object.placeholder": "请为%APP_NAME%确认邮箱地址",
"PopUpForm.Email.options.response_email.label": "回复邮件",
"PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
"PopUpForm.Providers.enabled.description": "如果禁用,用户将无法使用此供应商。",
"PopUpForm.Providers.enabled.label": "启用",
"PopUpForm.Providers.key.label": "Client ID",
"PopUpForm.Providers.key.label": "客户端 ID",
"PopUpForm.Providers.key.placeholder": "文本",
"PopUpForm.Providers.redirectURL.front-end.label": "重定向 URL",
"PopUpForm.Providers.secret.label": "Client Secret",
"PopUpForm.Providers.redirectURL.label": "添加到{provider}应用配置的跳转URL",
"PopUpForm.Providers.secret.label": "客户端秘钥",
"PopUpForm.Providers.secret.placeholder": "文本",
"PopUpForm.header.edit.email-templates": "编辑电子邮件模版",
"PopUpForm.header.edit.providers": "编辑提供商",
"PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)",
"PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
"PopUpForm.header.edit.email-templates": "编辑电子邮件模版",
"Settings.roles.deleted": "角色已被删除",
"Settings.roles.edited": "角色编辑完成",
"Settings.section-label": "用户及权限插件",
"notification.success.submit": "设置已被更新",
"plugin.description.long": "使用基于 JWT 的完整身份验证过程来保护 API。这个插件还有一个 ACL 策略,允许你管理用户组之间的权限。",
"plugin.description.short": "使用基于 JWT 的完整身份验证过程保护 API",
"plugin.name": "角色 & 权限"
"plugin.name": "角色及权限",
"popUpWarning.button.cancel": "取消",
"popUpWarning.button.confirm": "确认",
"popUpWarning.title": "请确认",
"popUpWarning.warning.cancel": "你确定你要取消你的修改?"
}

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/plugin-users-permissions",
"version": "3.6.5",
"version": "3.6.6",
"description": "Protect your API with a full-authentication process based on JWT",
"strapi": {
"name": "Roles & Permissions",
@ -13,8 +13,8 @@
},
"dependencies": {
"@purest/providers": "^1.0.2",
"@strapi/helper-plugin": "3.6.5",
"@strapi/utils": "3.6.5",
"@strapi/helper-plugin": "3.6.6",
"@strapi/utils": "3.6.6",
"bcryptjs": "^2.4.3",
"grant-koa": "5.4.8",
"jsonwebtoken": "^8.1.0",

View File

@ -63,7 +63,7 @@ const connect = (provider, query) => {
return resolve([
null,
[{ messages: [{ id: 'Auth.advanced.allow_register' }] }],
'Register action is actualy not available.',
'Register action is actually not available.',
]);
}

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/provider-email-amazon-ses",
"version": "3.6.5",
"version": "3.6.6",
"description": "Amazon SES provider for strapi email",
"homepage": "https://strapi.io",
"keywords": [
@ -15,7 +15,7 @@
"main": "./lib",
"dependencies": {
"node-ses": "^3.0.3",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"author": {
"email": "nikolay@tsenkov.net",

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/provider-email-mailgun",
"version": "3.6.5",
"version": "3.6.6",
"description": "Mailgun provider for strapi email plugin",
"homepage": "https://strapi.io",
"keywords": [
@ -14,7 +14,7 @@
"main": "./lib",
"dependencies": {
"mailgun-js": "0.22.0",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"strapi": {
"isProvider": true

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/provider-email-nodemailer",
"version": "3.6.5",
"version": "3.6.6",
"description": "Nodemailer provider for Strapi 3",
"homepage": "https://strapi.io",
"keywords": [

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/provider-email-sendgrid",
"version": "3.6.5",
"version": "3.6.6",
"description": "Sendgrid provider for strapi email",
"homepage": "https://strapi.io",
"keywords": [
@ -14,7 +14,7 @@
"main": "./lib",
"dependencies": {
"@sendgrid/mail": "6.4.0",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"strapi": {
"isProvider": true

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/provider-email-sendmail",
"version": "3.6.5",
"version": "3.6.6",
"description": "Sendmail provider for strapi email",
"homepage": "https://strapi.io",
"keywords": [
@ -13,7 +13,7 @@
"main": "./lib",
"dependencies": {
"sendmail": "^1.6.1",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"strapi": {
"isProvider": true

View File

@ -28,6 +28,20 @@ module.exports = ({ env }) => ({
});
```
## Required AWS Policy Actions
These are the minimum amount of permissions needed for this provider to work.
```
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject",
"s3:PutObjectAcl"
],
```
## Resources
- [License](LICENSE)

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/provider-upload-aws-s3",
"version": "3.6.5",
"version": "3.6.6",
"description": "AWS S3 provider for strapi upload",
"homepage": "https://strapi.io",
"keywords": [

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/provider-upload-cloudinary",
"version": "3.6.5",
"version": "3.6.6",
"description": "Cloudinary provider for strapi upload",
"homepage": "https://strapi.io",
"keywords": [

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/provider-upload-local",
"version": "3.6.5",
"version": "3.6.6",
"description": "Local provider for strapi upload",
"homepage": "https://strapi.io",
"keywords": [

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/provider-upload-rackspace",
"version": "3.6.5",
"version": "3.6.6",
"description": "Rackspace provider for strapi upload",
"main": "./lib",
"keywords": [],

View File

@ -1,6 +1,6 @@
{
"name": "strapi-hook-ejs",
"version": "3.6.5",
"version": "3.6.6",
"description": "EJS hook for the Strapi framework",
"homepage": "https://strapi.io",
"keywords": [

View File

@ -1,6 +1,6 @@
{
"name": "strapi-hook-redis",
"version": "3.6.5",
"version": "3.6.6",
"description": "Redis hook for the Strapi framework",
"homepage": "https://strapi.io",
"keywords": [
@ -19,7 +19,7 @@
"lodash": "4.17.21",
"rimraf": "3.0.2",
"stack-trace": "0.0.10",
"@strapi/utils": "3.6.5"
"@strapi/utils": "3.6.6"
},
"author": {
"email": "hi@strapi.io",

View File

@ -1,6 +1,6 @@
{
"name": "strapi-middleware-views",
"version": "3.6.5",
"version": "3.6.6",
"description": "Views middleware to enable server-side rendering for the Strapi framework",
"homepage": "https://strapi.io",
"keywords": [

View File

@ -1,6 +1,6 @@
{
"name": "@strapi/logger",
"version": "3.6.5",
"version": "3.6.6",
"description": "Strapi's logger",
"homepage": "https://strapi.io",
"main": "./lib/index.js",

199
yarn.lock
View File

@ -1160,7 +1160,7 @@
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.2.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.2.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.14.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d"
integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==
@ -1204,39 +1204,15 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
"@buffetjs/core@3.3.5":
version "3.3.5"
resolved "https://registry.yarnpkg.com/@buffetjs/core/-/core-3.3.5.tgz#45975b00b4a694cb04b9d53bf2a242149f573753"
integrity sha512-wsPslYhOrb3fjiMzlqfb3NXnkuz5Jwe5hgA97gmHeCJsfWJ71AoxZ22LgQCSlElwI8elg3rsWDQJ+gWQ5gZv8w==
"@buffetjs/core@3.3.8":
version "3.3.8"
resolved "https://registry.yarnpkg.com/@buffetjs/core/-/core-3.3.8.tgz#59899e85ccc238b57ec0d4fcbe9b160c480e5c00"
integrity sha512-lDobqgC6aUigHPH7Cx82S/AzeMEer3SxepOZ9PMLxgyc0JeTK1jSAUTr6IYBrbZdYzvGX+zMFtneI4se93Q/Vg==
dependencies:
"@buffetjs/hooks" "3.3.5"
"@buffetjs/icons" "3.3.5"
"@buffetjs/styles" "3.3.5"
"@buffetjs/utils" "3.3.5"
"@fortawesome/fontawesome-svg-core" "^1.2.25"
"@fortawesome/free-regular-svg-icons" "^5.11.2"
"@fortawesome/free-solid-svg-icons" "^5.11.2"
"@fortawesome/react-fontawesome" "^0.1.4"
invariant "^2.2.4"
lodash "4.17.20"
moment "^2.24.0"
prop-types "^15.7.2"
rc-input-number "^4.5.0"
react-dates "^21.5.1"
react-moment-proptypes "^1.7.0"
react-router-dom "^5.2.0"
react-with-direction "^1.3.1"
reactstrap "^8.5.1"
"@buffetjs/core@3.3.6":
version "3.3.6"
resolved "https://registry.yarnpkg.com/@buffetjs/core/-/core-3.3.6.tgz#f8ff2ced0e8cbbe089810308f2488bd68a8ebeda"
integrity sha512-OVTe/7nLNM2R0EELbKWjlbMnjF7dwSDmzXPbPlMinx41GHQM6MgDngvNMJuJKJvhQwdf/zgvW70Dpr3SEbf9Zw==
dependencies:
"@buffetjs/hooks" "3.3.6"
"@buffetjs/icons" "3.3.6"
"@buffetjs/styles" "3.3.6"
"@buffetjs/utils" "3.3.6"
"@buffetjs/hooks" "3.3.8"
"@buffetjs/icons" "3.3.8"
"@buffetjs/styles" "3.3.8"
"@buffetjs/utils" "3.3.8"
"@fortawesome/fontawesome-svg-core" "^1.2.25"
"@fortawesome/free-regular-svg-icons" "^5.11.2"
"@fortawesome/free-solid-svg-icons" "^5.11.2"
@ -1252,60 +1228,35 @@
react-with-direction "^1.3.1"
reactstrap "^8.5.1"
"@buffetjs/custom@3.3.5":
version "3.3.5"
resolved "https://registry.yarnpkg.com/@buffetjs/custom/-/custom-3.3.5.tgz#4fd7c8b7811f55e336bf26f04e6125f2ec2c00dd"
integrity sha512-xT0o0fmFcjlD0AQQVRHUt0VnQTSl7VgFlhKlJT0BUd2Q4bHEpFJm6mMPJ5T1gMn374wMuphmF8qYZmM8KTZsfg==
"@buffetjs/custom@3.3.8":
version "3.3.8"
resolved "https://registry.yarnpkg.com/@buffetjs/custom/-/custom-3.3.8.tgz#d7e73d9043ec34380410cc1163236df7443a70e9"
integrity sha512-QmCA0aLhSrGRXxFI+Cu94xp/Xk8FDjESE6dDf2ipM13OpOpN6XQiEcf8aNRP5/MASdxEfDDL2yh25jXavD2Ayg==
dependencies:
"@buffetjs/core" "3.3.5"
"@buffetjs/styles" "3.3.5"
"@buffetjs/utils" "3.3.5"
lodash "4.17.20"
moment "^2.24.0"
prop-types "^15.5.10"
react-moment-proptypes "^1.7.0"
"@buffetjs/custom@3.3.6":
version "3.3.6"
resolved "https://registry.yarnpkg.com/@buffetjs/custom/-/custom-3.3.6.tgz#81b905d7507fa69e7bf9a74d863cc5cb4a06f9d3"
integrity sha512-SemP9hQCQogpXi31y+cP+iRMyLueYWHTDnss/N4t8pjvonT8VbSwYhkfU+Z0c/BB71AZW7QkvgylDUaMtbUXSw==
dependencies:
"@buffetjs/core" "3.3.6"
"@buffetjs/styles" "3.3.6"
"@buffetjs/utils" "3.3.6"
"@buffetjs/core" "3.3.8"
"@buffetjs/styles" "3.3.8"
"@buffetjs/utils" "3.3.8"
lodash "4.17.21"
moment "^2.24.0"
prop-types "^15.5.10"
react-moment-proptypes "^1.7.0"
"@buffetjs/hooks@3.3.5":
version "3.3.5"
resolved "https://registry.yarnpkg.com/@buffetjs/hooks/-/hooks-3.3.5.tgz#31630c695c924f81ab29ba4fc36679834095e04f"
integrity sha512-OsO9fQtE0FxhR1AVaWQaSoNZeDlJ53DdHZvO4pn+DUfsyiNgdm3Gcy65Ek4Koj3P5iSeMJdQ/QAonp5gmP2v+g==
"@buffetjs/hooks@3.3.8":
version "3.3.8"
resolved "https://registry.yarnpkg.com/@buffetjs/hooks/-/hooks-3.3.8.tgz#0b03b1aa9cf2236861d5e8533567baa8123fa7ed"
integrity sha512-PaobbbBnzlkWcG04nyNWEvcX6zzC5LdPh2uoAUccEwXG4saXIihrQfnGxuKqvlYHof4PFqQb/cmJHXtrTiE20A==
"@buffetjs/hooks@3.3.6":
version "3.3.6"
resolved "https://registry.yarnpkg.com/@buffetjs/hooks/-/hooks-3.3.6.tgz#9c11b7c036834b89de705bba6e24b8915931cc13"
integrity sha512-OSVy7eCgVboWVfDHRassSXH7bKZVShf2gK8zFjwYM59szueWM+49nAahBSMXP+J0jiutEZYrM0r7HeMoR/gDIQ==
"@buffetjs/icons@3.3.5":
version "3.3.5"
resolved "https://registry.yarnpkg.com/@buffetjs/icons/-/icons-3.3.5.tgz#f74bb2fe0be1c183c02bc73321c87641f2c12f95"
integrity sha512-tryjZ77QY1nZPcbYOVzb0vE0FmZs3z+4CcykL9LNRWhf98UHHnRJMHt72HgXea8BMhGNF24yC76KG92cOgYfBw==
"@buffetjs/icons@3.3.8":
version "3.3.8"
resolved "https://registry.yarnpkg.com/@buffetjs/icons/-/icons-3.3.8.tgz#289fa686049e467eebb1036dc9624fc70f2d9b8b"
integrity sha512-T1h3w5zu4JmwiZXcJPHJZXOpaIZzCpOQDaXLrzZNGze+8qcifUEKu4Y8pGS9+14OwMXjrAi+SsWxaeY/t7zYTQ==
dependencies:
prop-types "^15.5.10"
"@buffetjs/icons@3.3.6":
version "3.3.6"
resolved "https://registry.yarnpkg.com/@buffetjs/icons/-/icons-3.3.6.tgz#b7b59ec69cb2f629a7b102ebfc2115910aa707dd"
integrity sha512-faFDLoA5IUot0LKJ3InSX7hiZJI51krBJ8MPh3HDdol11VFHnLRsltMqAxz4oh5+CU7v4yxZPc+iL9RZZteu6Q==
dependencies:
prop-types "^15.5.10"
"@buffetjs/styles@3.3.5":
version "3.3.5"
resolved "https://registry.yarnpkg.com/@buffetjs/styles/-/styles-3.3.5.tgz#c222ede37abaf3d6cfe09eea7ee591e04c818894"
integrity sha512-WC714ORI4hwJMB1dUVmIbIyUIoxsjzE+xKXKJUs82EPlqlshjkEFQef8wF+L1H+zmqW+2lwQhEKOTd+gCfCTkg==
"@buffetjs/styles@3.3.8":
version "3.3.8"
resolved "https://registry.yarnpkg.com/@buffetjs/styles/-/styles-3.3.8.tgz#932dca9e1c49e3c6717260f1ad784ec8595aec35"
integrity sha512-YkBoXyg6qKe8tUwQQJaieC1hfyBQKLhQZCsIWqhiswr+CJhIJS+YFRQHGQXCo+k3yhHmpXdJqKeMSoBkHr6Xvw==
dependencies:
"@fortawesome/fontawesome-free" "^5.12.0"
"@fortawesome/fontawesome-svg-core" "^1.2.22"
@ -1316,35 +1267,13 @@
react-dates "^21.1.0"
react-tooltip "^4.2.11"
"@buffetjs/styles@3.3.6":
version "3.3.6"
resolved "https://registry.yarnpkg.com/@buffetjs/styles/-/styles-3.3.6.tgz#091d393c3ace250b2eba92933ad924aaa56be4a8"
integrity sha512-M1eF4ECq689vq1z0GTkl1AtaHTkU5+t5jrCyo+By2n6juM/ueJyAWMoK3NrMh5SXgLIJ1OwGGpAXSjOwYMZdvQ==
dependencies:
"@fortawesome/fontawesome-free" "^5.12.0"
"@fortawesome/fontawesome-svg-core" "^1.2.22"
"@fortawesome/free-regular-svg-icons" "^5.10.2"
"@fortawesome/free-solid-svg-icons" "^5.10.2"
"@fortawesome/react-fontawesome" "^0.1.4"
prop-types "^15.7.2"
react-dates "^21.1.0"
react-tooltip "^4.2.11"
"@buffetjs/utils@3.3.5":
version "3.3.5"
resolved "https://registry.yarnpkg.com/@buffetjs/utils/-/utils-3.3.5.tgz#ad46ac0ab7eb87bb124ba66e2ecdadfe89137e75"
integrity sha512-ZkfsgMrLrV9RkDWRDALe4m3BppTulMIpsK+6xnRV/v7J8PEhwPqHHTQBh0CbWC/SXiQhfSj1dKKw6dmun/xFIQ==
dependencies:
lodash "4.17.20"
yup "^0.27.0"
"@buffetjs/utils@3.3.6":
version "3.3.6"
resolved "https://registry.yarnpkg.com/@buffetjs/utils/-/utils-3.3.6.tgz#d8c79a866219e0005c0f3b28905f7a5be8aa740e"
integrity sha512-hyPRXdouKFUz+9/TZcQ0sOWz4sdyMt2EiehSB3Gy91E5dHi0A3a+gVStVlm/eqez7w+AAofKyQ0UDqc9ajXu9Q==
"@buffetjs/utils@3.3.8":
version "3.3.8"
resolved "https://registry.yarnpkg.com/@buffetjs/utils/-/utils-3.3.8.tgz#d21ef4c09bb2173e2a7465d39805237ade06b235"
integrity sha512-xRod8N11iWfFayqh5EMP4ScAgpr9GtDOdAJdcKlBLmZqf/rik3StT26GR70Zg25OkFNJ5lt9zknD2vJrdmBX7A==
dependencies:
lodash "4.17.21"
yup "^0.27.0"
yup "^0.32.9"
"@casl/ability@^4.1.5":
version "4.1.6"
@ -9569,11 +9498,6 @@ flush-write-stream@^1.0.0:
inherits "^2.0.3"
readable-stream "^2.3.6"
fn-name@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7"
integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=
fn.name@1.x.x:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
@ -16867,11 +16791,6 @@ prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0,
object-assign "^4.1.1"
react-is "^16.8.1"
property-expr@^1.5.0:
version "1.5.1"
resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f"
integrity sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==
property-expr@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.4.tgz#37b925478e58965031bb612ec5b3260f8241e910"
@ -20187,12 +20106,7 @@ symbol-tree@^3.2.4:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
synchronous-promise@^2.0.6:
version "2.0.15"
resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.15.tgz#07ca1822b9de0001f5ff73595f3d08c4f720eb8e"
integrity sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==
table@^6.0.9, table@^6.6.0:
table@^6.0.9:
version "6.7.1"
resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2"
integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==
@ -20204,6 +20118,19 @@ table@^6.0.9, table@^6.6.0:
string-width "^4.2.0"
strip-ansi "^6.0.0"
table@^6.6.0:
version "6.6.0"
resolved "https://registry.yarnpkg.com/table/-/table-6.6.0.tgz#905654b79df98d9e9a973de1dd58682532c40e8e"
integrity sha512-iZMtp5tUvcnAdtHpZTWLPF0M7AgiQsURR2DwmxnJwSy8I3+cY+ozzVvYha3BOLG2TB+L0CqjIz+91htuj6yCXg==
dependencies:
ajv "^8.0.1"
lodash.clonedeep "^4.5.0"
lodash.flatten "^4.4.0"
lodash.truncate "^4.4.2"
slice-ansi "^4.0.0"
string-width "^4.2.0"
strip-ansi "^6.0.0"
tapable@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
@ -20235,10 +20162,10 @@ tar-stream@^2.0.1, tar-stream@^2.1.0, tar-stream@^2.1.4, tar-stream@^2.2.0:
inherits "^2.0.3"
readable-stream "^3.1.1"
tar@6.1.0, tar@^6.0.2, tar@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83"
integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==
tar@6.1.2:
version "6.1.2"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.2.tgz#1f045a90a6eb23557a603595f41a16c57d47adc6"
integrity sha512-EwKEgqJ7nJoS+s8QfLYVGMDmAsj+StbI2AM/RTHeUSsOw6Z8bwNBRv5z3CY0m7laC5qUAqruLX5AhMuc5deY3Q==
dependencies:
chownr "^2.0.0"
fs-minipass "^2.0.0"
@ -20269,6 +20196,18 @@ tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.8:
safe-buffer "^5.1.2"
yallist "^3.0.3"
tar@^6.0.2, tar@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83"
integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==
dependencies:
chownr "^2.0.0"
fs-minipass "^2.0.0"
minipass "^3.0.0"
minizlib "^2.1.1"
mkdirp "^1.0.3"
yallist "^4.0.0"
tarn@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.1.tgz#ebac2c6dbc6977d34d4526e0a7814200386a8aec"
@ -21984,18 +21923,6 @@ yocto-queue@^0.1.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
yup@^0.27.0:
version "0.27.0"
resolved "https://registry.yarnpkg.com/yup/-/yup-0.27.0.tgz#f8cb198c8e7dd2124beddc2457571329096b06e7"
integrity sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==
dependencies:
"@babel/runtime" "^7.0.0"
fn-name "~2.0.1"
lodash "^4.17.11"
property-expr "^1.5.0"
synchronous-promise "^2.0.6"
toposort "^2.0.2"
yup@^0.32.9:
version "0.32.9"
resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.9.tgz#9367bec6b1b0e39211ecbca598702e106019d872"