Merge branch 'master' of github.com:strapi/strapi into chore/graphql-use-graphql-scalars

This commit is contained in:
Convly 2022-08-05 10:10:14 +02:00
commit da8d954b8e
21 changed files with 221 additions and 151 deletions

View File

@ -1,13 +1,21 @@
version: 2
updates:
- package-ecosystem: 'npm'
directory: '/'
- package-ecosystem: npm
directory: /
schedule:
interval: 'daily'
interval: daily
versioning-strategy: increase
ignore:
# Only allow patch as minor babel versions need to be upgraded all together
- dependency-name: '@babel/*'
update-types:
- 'version-update:semver-major'
- 'version-update:semver-minor'
- dependency-name: '*'
update-types: ['version-update:semver-major']
update-types:
- 'version-update:semver-major'
labels:
- 'source: dependencies'
- 'pr: chore'

View File

@ -88,7 +88,7 @@
"eslint-config-prettier": "6.15.0",
"eslint-plugin-import": "2.26.0",
"eslint-plugin-jsdoc": "36.1.1",
"eslint-plugin-jsx-a11y": "6.6.0",
"eslint-plugin-jsx-a11y": "6.6.1",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-react": "7.30.1",
"eslint-plugin-react-hooks": "4.6.0",

View File

@ -53,7 +53,7 @@ module.exports = db => {
const diffIndexes = (oldIndex, index) => {
const changes = [];
if (_.difference(oldIndex.columns, index.columns).length > 0) {
if (!_.isEqual(oldIndex.columns, index.columns)) {
changes.push('columns');
}

View File

@ -108,10 +108,21 @@ export const UploadingAssetCard = ({
</Card>
{error ? (
<Typography variant="pi" fontWeight="bold" textColor="danger600">
{formatMessage({
id: getTrad(`apiError.${error.response.data.error.message}`),
defaultMessage: error.response.data.error.message,
})}
{formatMessage(
error?.response?.data?.error?.message
? {
id: getTrad(`apiError.${error.response.data.error.message}`),
defaultMessage: error.response.data.error.message,
/* See issue: https://github.com/strapi/strapi/issues/13867
A proxy might return an error, before the request reaches Strapi
and therefore we need to handle errors gracefully.
*/
}
: {
id: getTrad('upload.generic-error'),
defaultMessage: 'An error occured while uploading the file.',
}
)}
</Typography>
) : (
undefined

View File

@ -6,7 +6,6 @@ import { stringify } from 'qs';
import {
LoadingIndicatorPage,
useFocusWhenNavigate,
NoPermissions,
AnErrorOccurred,
SearchURLQuery,
useSelectionState,
@ -15,8 +14,6 @@ import {
} from '@strapi/helper-plugin';
import { Layout, ContentLayout, ActionLayout } from '@strapi/design-system/Layout';
import { Main } from '@strapi/design-system/Main';
import { Button } from '@strapi/design-system/Button';
import Plus from '@strapi/icons/Plus';
import { Box } from '@strapi/design-system/Box';
import { Divider } from '@strapi/design-system/Divider';
import { BaseCheckbox } from '@strapi/design-system/BaseCheckbox';
@ -38,7 +35,6 @@ import { getTrad, containsAssetFilter } from '../../utils';
import { PaginationFooter } from '../../components/PaginationFooter';
import { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';
import { useFolder } from '../../hooks/useFolder';
import { EmptyAssets } from '../../components/EmptyAssets';
import { BulkActions } from './components/BulkActions';
import {
FolderCard,
@ -48,6 +44,7 @@ import {
} from '../../components/FolderCard';
import { Filters } from './components/Filters';
import { Header } from './components/Header';
import { EmptyOrNoPermissions } from './components/EmptyOrNoPermissions';
const BoxWithHeight = styled(Box)`
height: ${32 / 16}rem;
@ -219,43 +216,15 @@ export const MediaLibrary = () => {
{(assetsError || foldersError) && <AnErrorOccurred />}
{folderCount === 0 && assetCount === 0 && (
<EmptyAssets
action={
canCreate &&
!isFiltering && (
<Button
variant="secondary"
startIcon={<Plus />}
onClick={toggleUploadAssetDialog}
>
{formatMessage({
id: getTrad('header.actions.add-assets'),
defaultMessage: 'Add new assets',
})}
</Button>
)
}
content={
// eslint-disable-next-line no-nested-ternary
isFiltering
? formatMessage({
id: getTrad('list.assets-empty.title-withSearch'),
defaultMessage: 'There are no elements with the applied filters',
})
: canCreate
? formatMessage({
id: getTrad('list.assets.empty'),
defaultMessage: 'Upload your first assets...',
})
: formatMessage({
id: getTrad('list.assets.empty.no-permissions'),
defaultMessage: 'The asset list is empty',
})
}
<EmptyOrNoPermissions
canCreate={canCreate}
canRead={canRead}
isFiltering={isFiltering}
onActionClick={toggleUploadAssetDialog}
/>
)}
{canRead ? (
{canRead && (
<>
{folderCount > 0 && (
<FolderList
@ -379,8 +348,6 @@ export const MediaLibrary = () => {
</>
)}
</>
) : (
<NoPermissions />
)}
</ContentLayout>
</Main>

View File

@ -0,0 +1,71 @@
import PropTypes from 'prop-types';
import React from 'react';
import { useIntl } from 'react-intl';
import { Button } from '@strapi/design-system/Button';
import EmptyPermissions from '@strapi/icons/EmptyPermissions';
import Plus from '@strapi/icons/Plus';
import { EmptyAssets } from '../../../components/EmptyAssets';
import { getTrad } from '../../../utils';
const getContentIntlMessage = ({ isFiltering, canCreate, canRead }) => {
if (isFiltering) {
return {
id: 'list.assets-empty.title-withSearch',
defaultMessage: 'There are no elements with the applied filters',
};
}
if (canRead) {
if (canCreate) {
return {
id: 'list.assets.empty-upload',
defaultMessage: 'Upload your first assets...',
};
}
return {
id: 'list.assets.empty',
defaultMessage: 'Media Library is empty',
};
}
return {
id: 'header.actions.no-permissions',
defaultMessage: 'No permissions to view',
};
};
export const EmptyOrNoPermissions = ({ canCreate, isFiltering, canRead, onActionClick }) => {
const { formatMessage } = useIntl();
const content = getContentIntlMessage({ isFiltering, canCreate, canRead });
return (
<EmptyAssets
icon={!canRead ? EmptyPermissions : null}
action={
canCreate &&
!isFiltering && (
<Button variant="secondary" startIcon={<Plus />} onClick={onActionClick}>
{formatMessage({
id: getTrad('header.actions.add-assets'),
defaultMessage: 'Add new assets',
})}
</Button>
)
}
content={formatMessage({
...content,
id: getTrad(content.id),
})}
/>
);
};
EmptyOrNoPermissions.propTypes = {
canCreate: PropTypes.bool.isRequired,
canRead: PropTypes.bool.isRequired,
isFiltering: PropTypes.bool.isRequired,
onActionClick: PropTypes.func.isRequired,
};

View File

@ -0,0 +1,53 @@
import React from 'react';
import { ThemeProvider, lightTheme } from '@strapi/design-system';
import { render } from '@testing-library/react';
import { IntlProvider } from 'react-intl';
import { EmptyOrNoPermissions } from '../EmptyOrNoPermissions';
const setup = props =>
render(
<ThemeProvider theme={lightTheme}>
<IntlProvider locale="en" messages={{}}>
<EmptyOrNoPermissions
onActionClick={() => {}}
isFiltering={false}
canCreate
canRead
{...props}
/>
</IntlProvider>
</ThemeProvider>
);
describe('EmptyOrNoPermissions', () => {
test('isFiltering', () => {
const { queryByText } = setup({ isFiltering: true });
expect(queryByText('There are no elements with the applied filters')).toBeInTheDocument();
});
test('canCreate', () => {
const { queryByText } = setup({});
expect(queryByText('Add new assets')).toBeInTheDocument();
});
test('isFiltering and canCreate', () => {
const { queryByText } = setup({ isFiltering: true });
expect(queryByText('Add new assets')).not.toBeInTheDocument();
});
test('canRead and not canCreate', () => {
const { queryByText } = setup({ canCreate: false });
expect(queryByText('Media Library is empty')).toBeInTheDocument();
});
test('not canRead', () => {
const { queryByText } = setup({ canRead: false });
expect(queryByText('No permissions to view')).toBeInTheDocument();
});
});

View File

@ -500,26 +500,6 @@ describe('Media library homepage', () => {
expect(screen.queryByText('Upload your first assets...')).toBeInTheDocument();
});
it('does not display empty assets action, if there are no assets and the user does not have create permissions', () => {
useMediaLibraryPermissions.mockReturnValueOnce({
isLoading: false,
canCreate: false,
canRead: false,
});
useAssets.mockReturnValueOnce({
isLoading: false,
error: null,
data: {
pagination: FIXTURE_ASSET_PAGINATION,
results: FIXTURE_ASSETS,
},
});
renderML();
expect(screen.queryByText('header.actions.add-assets')).not.toBeInTheDocument();
});
it('does not display empty assets action, if there are no assets, no folders and the user is currently filtering', () => {
useQueryParams.mockReturnValueOnce([{ rawQuery: '', query: { filters: 'true' } }, jest.fn()]);
useAssets.mockReturnValueOnce({

View File

@ -1,5 +1,6 @@
{
"apiError.FileTooBig": "The uploaded file exceeds the maximum allowed asset size.",
"upload.generic-error": "An error occurred while uploading the file.",
"bulk.select.label": "Select all assets",
"button.next": "Next",
"checkControl.crop-duplicate": "Duplicate & crop the asset",
@ -43,8 +44,9 @@
"list.assets-empty.subtitle": "Add one to the list.",
"list.assets-empty.title": "There are no assets yet",
"list.assets-empty.title-withSearch": "There are no elements with the applied filters",
"list.assets.empty": "Upload your first assets...",
"list.assets.empty.no-permissions": "The asset list is empty.",
"list.assets.empty": "Media Library is empty",
"list.assets.empty-upload": "Upload your first assets...",
"list.assets.empty.no-permissions": "No permissions to view",
"list.assets.loading-asset": "Loading the preview for the media: {path}",
"list.assets.not-supported-content": "No preview available",
"list.assets.preview-asset": "Preview for the video at path {path}",

View File

@ -16,7 +16,6 @@ const mergeTemplate = require('./utils/merge-template.js');
const packageJSON = require('./resources/json/common/package.json');
const createDatabaseConfig = require('./resources/templates/database.js');
const createAdminConfig = require('./resources/templates/admin-config.js');
const createEnvFile = require('./resources/templates/env.js');
module.exports = async function createProject(scope, { client, connection, dependencies }) {
@ -108,11 +107,6 @@ module.exports = async function createProject(scope, { client, connection, depen
})
);
// create config/server.js
await fse.writeFile(
join(rootPath, `config/admin.${language}`),
createAdminConfig({ useTypescript })
);
await trackUsage({ event: 'didCopyConfigurationFiles', scope });
// merge template files if a template is specified

View File

@ -1,3 +1,6 @@
HOST=0.0.0.0
PORT=1337
APP_KEYS="toBeModified1,toBeModified2"
APP_KEYS="toBeModified1,toBeModified2"
API_TOKEN_SALT=tobemodified
ADMIN_JWT_SECRET=tobemodified
JWT_SECRET=tobemodified

View File

@ -1,6 +1,6 @@
export default ({ env }) => ({
auth: {
secret: env('ADMIN_JWT_SECRET', '<%= adminJwtToken %>'),
secret: env('ADMIN_JWT_SECRET'),
},
apiToken: {
salt: env('API_TOKEN_SALT'),

View File

@ -1,4 +1,7 @@
export default (config, webpack) => {
'use strict';
/* eslint-disable no-unused-vars */
module.exports = (config, webpack) => {
// Note: we provide webpack above so you should not `require` it
// Perform customizations to webpack config
// Important: return the modified config

View File

@ -1,20 +0,0 @@
'use strict';
const crypto = require('crypto');
const fs = require('fs');
const path = require('path');
const _ = require('lodash');
module.exports = ({ useTypescript }) => {
// resolve ts or js version depending on project type
const language = useTypescript ? 'ts' : 'js';
const tmpl = fs.readFileSync(path.join(__dirname, language, `admin-config.template`));
const compile = _.template(tmpl);
return compile({
adminJwtToken: crypto.randomBytes(16).toString('hex'),
useTypescript,
});
};

View File

@ -1,8 +0,0 @@
module.exports = ({ env }) => ({
auth: {
secret: env('ADMIN_JWT_SECRET', '<%= adminJwtToken %>'),
},
apiToken: {
salt: env('API_TOKEN_SALT'),
},
});

View File

@ -27,7 +27,6 @@
"test:front:watch:ce": "cross-env IS_EE=false jest --config ./jest.config.front.js --watchAll"
},
"dependencies": {
"@apollo/federation": "^0.28.0",
"@graphql-tools/schema": "8.1.2",
"@graphql-tools/utils": "^8.9.0",
"@strapi/utils": "4.3.2",

View File

@ -37,7 +37,7 @@
"test": "echo \"no tests yet\""
},
"dependencies": {
"aws-sdk": "2.1186.0",
"aws-sdk": "2.1188.0",
"lodash": "4.17.21"
},
"engines": {

View File

@ -41,15 +41,6 @@
"@jridgewell/gen-mapping" "^0.1.0"
"@jridgewell/trace-mapping" "^0.3.9"
"@apollo/federation@^0.28.0":
version "0.28.0"
resolved "https://registry.yarnpkg.com/@apollo/federation/-/federation-0.28.0.tgz#bbfcde3f327b3ec65dcfd98c6f52d6623a38b251"
integrity sha512-M5Dp0XJhuxEOzYjPWWK5VtIqEI1IFRioh1+XHrls90UC8R+b6VXa0UxMO/zfKv00APr4gBODMcfRe5w97NSruw==
dependencies:
apollo-graphql "^0.9.3"
apollo-server-types "^3.0.2"
lodash.xorby "^4.7.0"
"@apollo/protobufjs@1.2.4":
version "1.2.4"
resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.2.4.tgz#d913e7627210ec5efd758ceeb751c776c68ba133"
@ -299,7 +290,7 @@
dependencies:
"@babel/types" "^7.18.6"
"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6":
"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7", "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb"
integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==
@ -343,7 +334,7 @@
"@babel/helper-replace-supers" "^7.16.7"
"@babel/helper-split-export-declaration" "^7.16.7"
"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9":
"@babel/helper-create-class-features-plugin@^7.18.0", "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce"
integrity sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==
@ -489,7 +480,7 @@
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f"
integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==
"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9":
"@babel/helper-remap-async-to-generator@^7.16.8", "@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519"
integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==
@ -608,6 +599,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.10.tgz#94b5f8522356e69e8277276adf67ed280c90ecc1"
integrity sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg==
"@babel/parser@^7.18.11":
version "7.18.11"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9"
integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2"
@ -1084,7 +1080,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-typescript@^7.18.6":
"@babel/plugin-syntax-typescript@^7.17.12", "@babel/plugin-syntax-typescript@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285"
integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==
@ -1881,14 +1877,14 @@
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@7.18.9":
"@babel/runtime@7.18.9", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.8", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a"
integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==
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.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.8", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
"@babel/runtime@^7.18.3":
version "7.18.3"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4"
integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==
@ -1952,6 +1948,22 @@
debug "^4.1.0"
globals "^11.1.0"
"@babel/traverse@^7.17.9":
version "7.18.11"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.11.tgz#3d51f2afbd83ecf9912bcbb5c4d94e3d2ddaa16f"
integrity sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==
dependencies:
"@babel/code-frame" "^7.18.6"
"@babel/generator" "^7.18.10"
"@babel/helper-environment-visitor" "^7.18.9"
"@babel/helper-function-name" "^7.18.9"
"@babel/helper-hoist-variables" "^7.18.6"
"@babel/helper-split-export-declaration" "^7.18.6"
"@babel/parser" "^7.18.11"
"@babel/types" "^7.18.10"
debug "^4.1.0"
globals "^11.1.0"
"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5":
version "7.18.10"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.10.tgz#37ad97d1cb00efa869b91dd5d1950f8a6cf0cb08"
@ -7911,10 +7923,10 @@ apollo-datasource@^3.0.3, apollo-datasource@^3.3.2:
"@apollo/utils.keyvaluecache" "^1.0.1"
apollo-server-env "^4.2.1"
apollo-graphql@^0.9.0, apollo-graphql@^0.9.3:
version "0.9.7"
resolved "https://registry.yarnpkg.com/apollo-graphql/-/apollo-graphql-0.9.7.tgz#33185093b497a578f2df61ab8ecc6447d700ae64"
integrity sha512-bezL9ItUWUGHTm1bI/XzIgiiZbhXpsC7uxk4UxFPmcVJwJsDc3ayZ99oXxAaK+3Rbg/IoqrHckA6CwmkCsbaSA==
apollo-graphql@^0.9.0:
version "0.9.6"
resolved "https://registry.yarnpkg.com/apollo-graphql/-/apollo-graphql-0.9.6.tgz#756312a92685b0547f82cceb04f5b2d6e9f0df5c"
integrity sha512-CrqJxZwfu/U5x0bYYPPluwu1G+oC3jjKFK/EVn9CDcpi4+yD9rAYko/h1iUB5A6VRQhA4Boluc7QexMYQ2tCng==
dependencies:
core-js-pure "^3.10.2"
lodash.sortby "^4.7.0"
@ -8025,7 +8037,7 @@ apollo-server-plugin-base@^3.1.1, apollo-server-plugin-base@^3.6.2:
dependencies:
apollo-server-types "^3.6.2"
apollo-server-types@^3.0.2, apollo-server-types@^3.1.1, apollo-server-types@^3.6.2:
apollo-server-types@^3.1.1, apollo-server-types@^3.6.2:
version "3.6.2"
resolved "https://registry.yarnpkg.com/apollo-server-types/-/apollo-server-types-3.6.2.tgz#34bb0c335fcce3057cbdf72b3b63da182de6fc84"
integrity sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==
@ -8370,10 +8382,10 @@ available-typed-arrays@^1.0.5:
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
aws-sdk@2.1186.0, aws-sdk@^2.382.0:
version "2.1186.0"
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1186.0.tgz#f08fc5f1f53defa1fff83177621947dc0ca8d29b"
integrity sha512-3yDWwNWgbSH9tRVyan0PlRU938Po9QH+06XHwRNwAa/6bixYl4L48c6YgpfxBpwl0IvcCCTivD7ZqshndwishQ==
aws-sdk@2.1188.0, aws-sdk@^2.382.0:
version "2.1188.0"
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1188.0.tgz#94b710948ef2924093a8d6fe42443a792385afa2"
integrity sha512-4KXwjRjbCzU1luTOeH+ded92H51I4UuHaZzx2EI+JA0II1+q48heTxFlFd7yp7jGz9UwjPb6k12Jv1W3r0JWxA==
dependencies:
buffer "4.9.2"
events "1.1.1"
@ -8401,7 +8413,7 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
axe-core@^4.4.2:
axe-core@^4.4.3:
version "4.4.3"
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f"
integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==
@ -9099,7 +9111,7 @@ browserslist@^4.20.2:
node-releases "^2.0.5"
update-browserslist-db "^1.0.0"
browserslist@^4.21.3:
browserslist@^4.21.0:
version "4.21.3"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a"
integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==
@ -12216,21 +12228,21 @@ eslint-plugin-jsdoc@36.1.1:
semver "^7.3.5"
spdx-expression-parse "^3.0.1"
eslint-plugin-jsx-a11y@6.6.0:
version "6.6.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.0.tgz#2c5ac12e013eb98337b9aa261c3b355275cc6415"
integrity sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw==
eslint-plugin-jsx-a11y@6.6.1:
version "6.6.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff"
integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==
dependencies:
"@babel/runtime" "^7.18.3"
"@babel/runtime" "^7.18.9"
aria-query "^4.2.2"
array-includes "^3.1.5"
ast-types-flow "^0.0.7"
axe-core "^4.4.2"
axe-core "^4.4.3"
axobject-query "^2.2.0"
damerau-levenshtein "^1.0.8"
emoji-regex "^9.2.2"
has "^1.0.3"
jsx-ast-utils "^3.3.1"
jsx-ast-utils "^3.3.2"
language-tags "^1.0.5"
minimatch "^3.1.2"
semver "^6.3.0"
@ -16381,7 +16393,7 @@ jsprim@^1.2.2:
json-schema "0.4.0"
verror "1.10.0"
"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.1:
"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd"
integrity sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==
@ -17116,11 +17128,6 @@ lodash.uniq@4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
lodash.xorby@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/lodash.xorby/-/lodash.xorby-4.7.0.tgz#9c19a6f9f063a6eb53dd03c1b6871799801463d7"
integrity sha512-gYiD6nvuQy0AEkMoUju+t4f4Rn18fjsLB/7x7YZFqtFT9kmegRLrj/uGEQVyVDy7otTmSrIMXNOk2wwuLcfHCQ==
lodash@4.17.21, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
@ -21493,7 +21500,7 @@ regexpp@^3.0.0, regexpp@^3.1.0:
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
regexpu-core@^5.1.0:
regexpu-core@^5.0.1, regexpu-core@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d"
integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==