diff --git a/README.md b/README.md index 0d0b76d3ce..3b2dec557a 100644 --- a/README.md +++ b/README.md @@ -8,24 +8,6 @@

Try live demo


-

- - - - - - - - - - - - - - - -

-

NPM Version diff --git a/examples/getstarted/package.json b/examples/getstarted/package.json index 4165ef8008..20fd014a86 100644 --- a/examples/getstarted/package.json +++ b/examples/getstarted/package.json @@ -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" diff --git a/lerna.json b/lerna.json index e9a1cbb24c..d9be575e91 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "3.6.5", + "version": "3.6.6", "packages": [ "packages/*", "examples/*" diff --git a/packages/cli/create-strapi-app/package.json b/packages/cli/create-strapi-app/package.json index 5ac4c0ad55..e0878a41c5 100644 --- a/packages/cli/create-strapi-app/package.json +++ b/packages/cli/create-strapi-app/package.json @@ -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\"" diff --git a/packages/cli/create-strapi-starter/package.json b/packages/cli/create-strapi-starter/package.json index 712b48f7f0..57f9588e61 100644 --- a/packages/cli/create-strapi-starter/package.json +++ b/packages/cli/create-strapi-starter/package.json @@ -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\"" diff --git a/packages/core/admin/admin/src/assets/images/banner_strapi-rocket.png b/packages/core/admin/admin/src/assets/images/banner_strapi-rocket.png new file mode 100644 index 0000000000..a90b22a1e2 Binary files /dev/null and b/packages/core/admin/admin/src/assets/images/banner_strapi-rocket.png differ diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/Header/Wrapper.js b/packages/core/admin/admin/src/components/LeftMenu/compos/Header/Wrapper.js index d784176480..b427115c0a 100644 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/Header/Wrapper.js +++ b/packages/core/admin/admin/src/components/LeftMenu/compos/Header/Wrapper.js @@ -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}; diff --git a/packages/core/admin/admin/src/components/Roles/ConditionsModal/ActionRow/index.js b/packages/core/admin/admin/src/components/Roles/ConditionsModal/ActionRow/index.js index 752ad097b9..bd80e4fb94 100644 --- a/packages/core/admin/admin/src/components/Roles/ConditionsModal/ActionRow/index.js +++ b/packages/core/admin/admin/src/components/Roles/ConditionsModal/ActionRow/index.js @@ -44,7 +44,10 @@ const ActionRow = ({ style={{ maxWidth: '60%' }} ellipsis > - {label} + {formatMessage({ + id: `Settings.roles.form.permissions.${label.toLowerCase()}`, + defaultMessage: label, + })} { return ( - {header.label} + {formatMessage({ + id: `Settings.roles.form.permissions.${header.label.toLowerCase()}`, + defaultMessage: header.label, + })} ); diff --git a/packages/core/admin/admin/src/pages/MarketplacePage/PluginBanner/Wrapper.js b/packages/core/admin/admin/src/pages/MarketplacePage/PluginBanner/Wrapper.js new file mode 100644 index 0000000000..4870210d29 --- /dev/null +++ b/packages/core/admin/admin/src/pages/MarketplacePage/PluginBanner/Wrapper.js @@ -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; diff --git a/packages/core/admin/admin/src/pages/MarketplacePage/PluginBanner/index.js b/packages/core/admin/admin/src/pages/MarketplacePage/PluginBanner/index.js new file mode 100644 index 0000000000..db33e9612d --- /dev/null +++ b/packages/core/admin/admin/src/pages/MarketplacePage/PluginBanner/index.js @@ -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 ( + + {formatMessage({ +

+
+ +
+
+ + + +
+ + ); +}; + +export default PluginBanner; diff --git a/packages/core/admin/admin/src/pages/MarketplacePage/index.js b/packages/core/admin/admin/src/pages/MarketplacePage/index.js index 6997653523..d934ff8406 100644 --- a/packages/core/admin/admin/src/pages/MarketplacePage/index.js +++ b/packages/core/admin/admin/src/pages/MarketplacePage/index.js @@ -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', })} /> +
{data.map(plugin => { return ( diff --git a/packages/core/admin/admin/src/pages/SettingsPage/tests/index.test.js b/packages/core/admin/admin/src/pages/SettingsPage/tests/index.test.js index 7e78d7b907..8e6d141276 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/tests/index.test.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/tests/index.test.js @@ -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; diff --git a/packages/core/admin/admin/src/themes/colors.js b/packages/core/admin/admin/src/themes/colors.js index 69ed52e247..e21c4b9f41 100644 --- a/packages/core/admin/admin/src/themes/colors.js +++ b/packages/core/admin/admin/src/themes/colors.js @@ -37,6 +37,7 @@ const colors = { 'link-hover': '#1c2431', 'link-color': '#919bae', 'title-color': '#5b626f', + 'background-header-link': '#007eff', }, strapi: { 'gray-light': '#eff3f6', diff --git a/packages/core/admin/admin/src/translations/en.json b/packages/core/admin/admin/src/translations/en.json index 0745077d94..8bd04e6fb5 100644 --- a/packages/core/admin/admin/src/translations/en.json +++ b/packages/core/admin/admin/src/translations/en.json @@ -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`.", diff --git a/packages/core/admin/index.js b/packages/core/admin/index.js index fcc09cbfcb..6bd31cb693 100644 --- a/packages/core/admin/index.js +++ b/packages/core/admin/index.js @@ -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) { diff --git a/packages/core/admin/package.json b/packages/core/admin/package.json index 6d1caf09f9..e4254063e8 100644 --- a/packages/core/admin/package.json +++ b/packages/core/admin/package.json @@ -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", diff --git a/packages/core/content-manager/package.json b/packages/core/content-manager/package.json index 34e755b502..3c90446658 100644 --- a/packages/core/content-manager/package.json +++ b/packages/core/content-manager/package.json @@ -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" diff --git a/packages/core/content-type-builder/admin/src/components/List/index.js b/packages/core/content-type-builder/admin/src/components/List/index.js index 30a7504714..60784f0aaa 100644 --- a/packages/core/content-type-builder/admin/src/components/List/index.js +++ b/packages/core/content-type-builder/admin/src/components/List/index.js @@ -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'], diff --git a/packages/core/content-type-builder/controllers/validation/types.js b/packages/core/content-type-builder/controllers/validation/types.js index ba6d199aa8..ea7feaab69 100644 --- a/packages/core/content-type-builder/controllers/validation/types.js +++ b/packages/core/content-type-builder/controllers/validation/types.js @@ -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; diff --git a/packages/core/content-type-builder/package.json b/packages/core/content-type-builder/package.json index 54ae902d36..5025d06b9f 100644 --- a/packages/core/content-type-builder/package.json +++ b/packages/core/content-type-builder/package.json @@ -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", diff --git a/packages/core/database/package.json b/packages/core/database/package.json index acdf908895..102ae85388 100644 --- a/packages/core/database/package.json +++ b/packages/core/database/package.json @@ -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", diff --git a/packages/core/email/admin/src/translations/zh-Hans.json b/packages/core/email/admin/src/translations/zh-Hans.json index 9842d4937c..ecba6e8ad4 100644 --- a/packages/core/email/admin/src/translations/zh-Hans.json +++ b/packages/core/email/admin/src/translations/zh-Hans.json @@ -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 ", + "Settings.form.placeholder.defaultReplyTo": "例如: Strapi ", + "Settings.form.placeholder.testAddress": "例如: developer@example.com", + "Settings.form.text.configuration": "该插件通过{file}进行配置, 点击{link}查看文档" } diff --git a/packages/core/email/package.json b/packages/core/email/package.json index 37be7350ce..f35df0328e 100644 --- a/packages/core/email/package.json +++ b/packages/core/email/package.json @@ -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", diff --git a/packages/core/helper-plugin/lib/src/components/PopUpWarning/tests/__snapshots__/index.test.js.snap b/packages/core/helper-plugin/lib/src/components/PopUpWarning/tests/__snapshots__/index.test.js.snap index 16b7bade14..9296a644b6 100644 --- a/packages/core/helper-plugin/lib/src/components/PopUpWarning/tests/__snapshots__/index.test.js.snap +++ b/packages/core/helper-plugin/lib/src/components/PopUpWarning/tests/__snapshots__/index.test.js.snap @@ -3,11 +3,22 @@ exports[` should render properly should match snapshot if onlyConfirmButton is false 1`] = ` .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[` 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[` 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[` should render properly should match snapshot if onlyCo exports[` should render properly should match snapshot if onlyConfirmButton is true 1`] = ` .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[` 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 { diff --git a/packages/core/helper-plugin/package.json b/packages/core/helper-plugin/package.json index 27da12766f..384d5ec94d 100644 --- a/packages/core/helper-plugin/package.json +++ b/packages/core/helper-plugin/package.json @@ -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", diff --git a/packages/core/strapi/README.md b/packages/core/strapi/README.md index 65766ebba4..9b4a303974 100644 --- a/packages/core/strapi/README.md +++ b/packages/core/strapi/README.md @@ -8,24 +8,6 @@

Try live demo


-

- - - - - - - - - - - - - - - -

-

NPM Version diff --git a/packages/core/strapi/package.json b/packages/core/strapi/package.json index dd04c86b7f..5040920317 100644 --- a/packages/core/strapi/package.json +++ b/packages/core/strapi/package.json @@ -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", diff --git a/packages/core/strapi/tests/search.test.e2e.js b/packages/core/strapi/tests/search.test.e2e.js index 02d2a38a74..8d5e649059 100644 --- a/packages/core/strapi/tests/search.test.e2e.js +++ b/packages/core/strapi/tests/search.test.e2e.js @@ -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); + }); }); }); diff --git a/packages/core/upload/admin/src/translations/zh-Hans.json b/packages/core/upload/admin/src/translations/zh-Hans.json new file mode 100644 index 0000000000..4e906f0064 --- /dev/null +++ b/packages/core/upload/admin/src/translations/zh-Hans.json @@ -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": "你确定吗?你还有一些文件还没有被上传" +} diff --git a/packages/core/upload/package.json b/packages/core/upload/package.json index c38a66bca3..2cb7d14b59 100644 --- a/packages/core/upload/package.json +++ b/packages/core/upload/package.json @@ -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", diff --git a/packages/core/utils/package.json b/packages/core/utils/package.json index 7e3a78444d..bbf9072a70 100644 --- a/packages/core/utils/package.json +++ b/packages/core/utils/package.json @@ -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": [ diff --git a/packages/generators/api/package.json b/packages/generators/api/package.json index 9f424b017f..83e7f1b305 100644 --- a/packages/generators/api/package.json +++ b/packages/generators/api/package.json @@ -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\"" diff --git a/packages/generators/app/package.json b/packages/generators/app/package.json index 0ed02ff257..c01fb89f51 100644 --- a/packages/generators/app/package.json +++ b/packages/generators/app/package.json @@ -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": { diff --git a/packages/generators/controller/package.json b/packages/generators/controller/package.json index 157f7f59c8..0f78446772 100644 --- a/packages/generators/controller/package.json +++ b/packages/generators/controller/package.json @@ -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\"" diff --git a/packages/generators/generate/package.json b/packages/generators/generate/package.json index ace27e1557..70809d57ef 100644 --- a/packages/generators/generate/package.json +++ b/packages/generators/generate/package.json @@ -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", diff --git a/packages/generators/model/package.json b/packages/generators/model/package.json index 2b5f315a83..63f10d5431 100644 --- a/packages/generators/model/package.json +++ b/packages/generators/model/package.json @@ -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\"" diff --git a/packages/generators/plugin/package.json b/packages/generators/plugin/package.json index 81eefadde9..bed9ab65fc 100644 --- a/packages/generators/plugin/package.json +++ b/packages/generators/plugin/package.json @@ -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\"" diff --git a/packages/generators/policy/package.json b/packages/generators/policy/package.json index 7e4cb6cc35..bed4dc1a09 100644 --- a/packages/generators/policy/package.json +++ b/packages/generators/policy/package.json @@ -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\"" diff --git a/packages/generators/service/package.json b/packages/generators/service/package.json index fbe770198c..86328ff682 100644 --- a/packages/generators/service/package.json +++ b/packages/generators/service/package.json @@ -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\"" diff --git a/packages/plugins/documentation/admin/src/translations/zh-Hans.json b/packages/plugins/documentation/admin/src/translations/zh-Hans.json index 260dc0fdad..2b71cf964b 100755 --- a/packages/plugins/documentation/admin/src/translations/zh-Hans.json +++ b/packages/plugins/documentation/admin/src/translations/zh-Hans.json @@ -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" } diff --git a/packages/plugins/documentation/package.json b/packages/plugins/documentation/package.json index 28f6d47657..e551958c4f 100644 --- a/packages/plugins/documentation/package.json +++ b/packages/plugins/documentation/package.json @@ -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", diff --git a/packages/plugins/documentation/services/Documentation.js b/packages/plugins/documentation/services/Documentation.js index 8dc1608304..e4bca696ec 100755 --- a/packages/plugins/documentation/services/Documentation.js +++ b/packages/plugins/documentation/services/Documentation.js @@ -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': diff --git a/packages/plugins/graphql/admin/src/translations/zh-Hans.json b/packages/plugins/graphql/admin/src/translations/zh-Hans.json new file mode 100644 index 0000000000..4ad86e7d69 --- /dev/null +++ b/packages/plugins/graphql/admin/src/translations/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "plugin.description.long": "为默认API方法添加GraphQL端点", + "plugin.description.short": "为默认API方法添加GraphQL端点" +} diff --git a/packages/plugins/graphql/package.json b/packages/plugins/graphql/package.json index 011812b73e..197f4694a3 100644 --- a/packages/plugins/graphql/package.json +++ b/packages/plugins/graphql/package.json @@ -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", diff --git a/packages/plugins/i18n/admin/src/components/CMEditViewCopyLocale/index.js b/packages/plugins/i18n/admin/src/components/CMEditViewCopyLocale/index.js index 40e45b060c..e5c3c805cc 100644 --- a/packages/plugins/i18n/admin/src/components/CMEditViewCopyLocale/index.js +++ b/packages/plugins/i18n/admin/src/components/CMEditViewCopyLocale/index.js @@ -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" > diff --git a/packages/plugins/i18n/admin/src/components/ModalEdit/index.js b/packages/plugins/i18n/admin/src/components/ModalEdit/index.js index 46c1b68c0b..e0239dd78f 100644 --- a/packages/plugins/i18n/admin/src/components/ModalEdit/index.js +++ b/packages/plugins/i18n/admin/src/components/ModalEdit/index.js @@ -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'), })} diff --git a/packages/plugins/i18n/admin/src/pages/SettingsPage/tests/__snapshots__/SettingsPage.test.js.snap b/packages/plugins/i18n/admin/src/pages/SettingsPage/tests/__snapshots__/SettingsPage.test.js.snap index b44aa1b752..03780b7511 100644 --- a/packages/plugins/i18n/admin/src/pages/SettingsPage/tests/__snapshots__/SettingsPage.test.js.snap +++ b/packages/plugins/i18n/admin/src/pages/SettingsPage/tests/__snapshots__/SettingsPage.test.js.snap @@ -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 { diff --git a/packages/plugins/i18n/admin/src/translations/zh-Hans.json b/packages/plugins/i18n/admin/src/translations/zh-Hans.json new file mode 100644 index 0000000000..f51e705456 --- /dev/null +++ b/packages/plugins/i18n/admin/src/translations/zh-Hans.json @@ -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": "这将会删除可用的语言版本(来自国际化)", + "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": "无可用内容" +} diff --git a/packages/plugins/i18n/package.json b/packages/plugins/i18n/package.json index adf58ec683..da6076f960 100644 --- a/packages/plugins/i18n/package.json +++ b/packages/plugins/i18n/package.json @@ -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", diff --git a/packages/plugins/sentry/package.json b/packages/plugins/sentry/package.json index 6ed79cee70..7832157f71 100644 --- a/packages/plugins/sentry/package.json +++ b/packages/plugins/sentry/package.json @@ -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", diff --git a/packages/plugins/users-permissions/admin/src/index.js b/packages/plugins/users-permissions/admin/src/index.js index bfc8783470..d8311fbeea 100644 --- a/packages/plugins/users-permissions/admin/src/index.js +++ b/packages/plugins/users-permissions/admin/src/index.js @@ -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', diff --git a/packages/plugins/users-permissions/admin/src/pages/AdvancedSettings/index.js b/packages/plugins/users-permissions/admin/src/pages/AdvancedSettings/index.js index 2d10d7496b..79872a78d0 100644 --- a/packages/plugins/users-permissions/admin/src/pages/AdvancedSettings/index.js +++ b/packages/plugins/users-permissions/admin/src/pages/AdvancedSettings/index.js @@ -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.map(input => { return ( { return [ { label: formatMessage({ - id: getTrad('app.components.Button.reset'), + id: 'app.components.Button.reset', defaultMessage: 'Reset', }), onClick: () => { diff --git a/packages/plugins/users-permissions/admin/src/pages/Roles/EditPage/index.js b/packages/plugins/users-permissions/admin/src/pages/Roles/EditPage/index.js index 9a7d928ce8..4b010081c0 100644 --- a/packages/plugins/users-permissions/admin/src/pages/Roles/EditPage/index.js +++ b/packages/plugins/users-permissions/admin/src/pages/Roles/EditPage/index.js @@ -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, diff --git a/packages/plugins/users-permissions/admin/src/pages/Roles/ListPage/index.js b/packages/plugins/users-permissions/admin/src/pages/Roles/ListPage/index.js index 9d08bcddf4..a88f5170a5 100644 --- a/packages/plugins/users-permissions/admin/src/pages/Roles/ListPage/index.js +++ b/packages/plugins/users-permissions/admin/src/pages/Roles/ListPage/index.js @@ -100,7 +100,7 @@ const RoleListPage = () => { ? [ { label: formatMessage({ - id: 'List.button.roles', + id: getTrad('List.button.roles'), defaultMessage: 'Add new role', }), onClick: handleNewRoleClick, diff --git a/packages/plugins/users-permissions/admin/src/translations/en.json b/packages/plugins/users-permissions/admin/src/translations/en.json index d532296dee..aae41fa20d 100644 --- a/packages/plugins/users-permissions/admin/src/translations/en.json +++ b/packages/plugins/users-permissions/admin/src/translations/en.json @@ -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", diff --git a/packages/plugins/users-permissions/admin/src/translations/zh-Hans.json b/packages/plugins/users-permissions/admin/src/translations/zh-Hans.json index 462fff2af2..248b73a97f 100644 --- a/packages/plugins/users-permissions/admin/src/translations/zh-Hans.json +++ b/packages/plugins/users-permissions/admin/src/translations/zh-Hans.json @@ -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": "你确定你要取消你的修改?" } diff --git a/packages/plugins/users-permissions/package.json b/packages/plugins/users-permissions/package.json index cbced7724d..1ff1b4f57d 100644 --- a/packages/plugins/users-permissions/package.json +++ b/packages/plugins/users-permissions/package.json @@ -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", diff --git a/packages/plugins/users-permissions/services/providers.js b/packages/plugins/users-permissions/services/providers.js index 9b28b1e0c0..2107316e57 100644 --- a/packages/plugins/users-permissions/services/providers.js +++ b/packages/plugins/users-permissions/services/providers.js @@ -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.', ]); } diff --git a/packages/providers/email-amazon-ses/package.json b/packages/providers/email-amazon-ses/package.json index 1ae72435a8..963567dda7 100644 --- a/packages/providers/email-amazon-ses/package.json +++ b/packages/providers/email-amazon-ses/package.json @@ -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", diff --git a/packages/providers/email-mailgun/package.json b/packages/providers/email-mailgun/package.json index 3d30d4b8a2..87c05299e9 100644 --- a/packages/providers/email-mailgun/package.json +++ b/packages/providers/email-mailgun/package.json @@ -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 diff --git a/packages/providers/email-nodemailer/package.json b/packages/providers/email-nodemailer/package.json index a6f2427ffa..cdf43024a2 100644 --- a/packages/providers/email-nodemailer/package.json +++ b/packages/providers/email-nodemailer/package.json @@ -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": [ diff --git a/packages/providers/email-sendgrid/package.json b/packages/providers/email-sendgrid/package.json index d1c0211bf2..28202b46f7 100644 --- a/packages/providers/email-sendgrid/package.json +++ b/packages/providers/email-sendgrid/package.json @@ -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 diff --git a/packages/providers/email-sendmail/package.json b/packages/providers/email-sendmail/package.json index c2dd6e3186..9c6d7fdbde 100644 --- a/packages/providers/email-sendmail/package.json +++ b/packages/providers/email-sendmail/package.json @@ -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 diff --git a/packages/providers/upload-aws-s3/README.md b/packages/providers/upload-aws-s3/README.md index 228686bfc7..cf4e2db0f7 100644 --- a/packages/providers/upload-aws-s3/README.md +++ b/packages/providers/upload-aws-s3/README.md @@ -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) diff --git a/packages/providers/upload-aws-s3/package.json b/packages/providers/upload-aws-s3/package.json index 9268c7f442..a2c86f681a 100644 --- a/packages/providers/upload-aws-s3/package.json +++ b/packages/providers/upload-aws-s3/package.json @@ -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": [ diff --git a/packages/providers/upload-cloudinary/package.json b/packages/providers/upload-cloudinary/package.json index 096170135a..4803f8e8c0 100644 --- a/packages/providers/upload-cloudinary/package.json +++ b/packages/providers/upload-cloudinary/package.json @@ -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": [ diff --git a/packages/providers/upload-local/package.json b/packages/providers/upload-local/package.json index c8f33e761f..e50740ae28 100644 --- a/packages/providers/upload-local/package.json +++ b/packages/providers/upload-local/package.json @@ -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": [ diff --git a/packages/providers/upload-rackspace/package.json b/packages/providers/upload-rackspace/package.json index 00f30d97f7..0f8875f57a 100644 --- a/packages/providers/upload-rackspace/package.json +++ b/packages/providers/upload-rackspace/package.json @@ -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": [], diff --git a/packages/strapi-hook-ejs/package.json b/packages/strapi-hook-ejs/package.json index 81726a2814..f3cf669aad 100644 --- a/packages/strapi-hook-ejs/package.json +++ b/packages/strapi-hook-ejs/package.json @@ -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": [ diff --git a/packages/strapi-hook-redis/package.json b/packages/strapi-hook-redis/package.json index f8211dc098..833191c05c 100644 --- a/packages/strapi-hook-redis/package.json +++ b/packages/strapi-hook-redis/package.json @@ -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", diff --git a/packages/strapi-middleware-views/package.json b/packages/strapi-middleware-views/package.json index 1adb457dfa..44f647c5a9 100644 --- a/packages/strapi-middleware-views/package.json +++ b/packages/strapi-middleware-views/package.json @@ -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": [ diff --git a/packages/utils/logger/package.json b/packages/utils/logger/package.json index 9558579462..ee0703b69e 100644 --- a/packages/utils/logger/package.json +++ b/packages/utils/logger/package.json @@ -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", diff --git a/yarn.lock b/yarn.lock index b1d9f9d071..1c3d2c604a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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"