Merge branch 'develop' into features/sso

This commit is contained in:
Alexandre Bodin 2021-02-02 10:51:28 +01:00
commit 4c3bd90ec0
61 changed files with 642 additions and 588 deletions

View File

@ -59,6 +59,7 @@ module.exports = {
'<rootDir>/examples/getstarted/',
'<rootDir>/packages/strapi-helper-plugin/dist/',
'/OLD/',
'__tests__',
],
setupFilesAfterEnv: [
'<rootDir>/test/config/front/enzyme-setup.js',

View File

@ -19,7 +19,7 @@
"eslint-config-airbnb-base": "^14.0.0",
"eslint-config-prettier": "^6.15.0",
"eslint-plugin-import": "^2.19.1",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-react": "^7.22.0",
"eslint-plugin-react-hooks": "^4.2.0",

View File

@ -92,6 +92,7 @@ logs
results
node_modules
.node_history
.snyk
############################
@ -99,6 +100,9 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage
webpack.config.dev.js
webpack.config.dev.js

View File

@ -1,12 +0,0 @@
# Don't check auto-generated stuff into git
coverage
node_modules
manifest.json
plugins.json
stats.json
package-lock.json
# Cruft
.DS_Store
npm-debug.log
.idea

View File

@ -1,101 +0,0 @@
############################
# OS X
############################
.DS_Store
.AppleDouble
.LSOverride
Icon
.Spotlight-V100
.Trashes
._*
############################
# Linux
############################
*~
############################
# Windows
############################
Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
*.cab
*.msi
*.msm
*.msp
############################
# Packages
############################
*.7z
*.csv
*.dat
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.com
*.class
*.dll
*.exe
*.o
*.seed
*.so
*.swo
*.swp
*.swn
*.swm
*.out
*.pid
############################
# Logs and databases
############################
*.log
*.sql
############################
# Misc.
############################
*#
ssl
.idea
nbproject
############################
# Node.js
############################
lib-cov
lcov.info
pids
logs
results
node_modules
.node_history
############################
# Tests
############################
test
testApp
coverage

View File

@ -34,7 +34,7 @@
"@fortawesome/fontawesome-free": "^5.11.2",
"@fortawesome/fontawesome-svg-core": "^1.2.32",
"@fortawesome/free-brands-svg-icons": "^5.15.2",
"@fortawesome/free-solid-svg-icons": "^5.14.0",
"@fortawesome/free-solid-svg-icons": "^5.15.2",
"@fortawesome/react-fontawesome": "^0.1.12",
"autoprefixer": "^9.8.6",
"axios": "^0.21.1",

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
############################
*#
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,3 +102,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
############################
*#
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,3 +102,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -67,6 +67,7 @@ $RECYCLE.BIN/
*.log
*.sql
*.sqlite
############################
@ -75,6 +76,7 @@ $RECYCLE.BIN/
*#
ssl
.editorconfig
.idea
nbproject
@ -88,8 +90,11 @@ lcov.info
pids
logs
results
build
node_modules
.node_history
.snyk
############################
@ -97,5 +102,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
*#
ssl
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,5 +102,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
*#
ssl
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,5 +102,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
*#
ssl
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,5 +102,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -75,6 +75,7 @@ $RECYCLE.BIN/
*#
ssl
.editorconfig
.idea
nbproject
@ -91,6 +92,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -98,5 +101,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -13,7 +13,7 @@
"lib": "./lib"
},
"dependencies": {
"@sentry/node": "^5.27.3",
"@sentry/node": "^6.0.3",
"chalk": "^2.4.2",
"execa": "^1.0.0",
"fs-extra": "^9.0.1",

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
*#
ssl
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,5 +102,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
*#
ssl
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,5 +102,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
*#
ssl
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,5 +102,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
*#
ssl
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,5 +102,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
############################
*#
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,3 +102,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
############################
*#
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,3 +102,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
############################
*#
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,3 +102,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -92,6 +92,8 @@ logs
results
node_modules
.node_history
.snyk
############################
@ -99,5 +101,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -1,101 +0,0 @@
############################
# OS X
############################
.DS_Store
.AppleDouble
.LSOverride
Icon
.Spotlight-V100
.Trashes
._*
############################
# Linux
############################
*~
############################
# Windows
############################
Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
*.cab
*.msi
*.msm
*.msp
############################
# Packages
############################
*.7z
*.csv
*.dat
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.com
*.class
*.dll
*.exe
*.o
*.seed
*.so
*.swo
*.swp
*.swn
*.swm
*.out
*.pid
############################
# Logs and databases
############################
*.log
*.sql
############################
# Misc.
############################
*#
ssl
.idea
nbproject
############################
# Node.js
############################
lib-cov
lcov.info
pids
logs
results
node_modules
.node_history
############################
# Tests
############################
test
testApp
coverage

View File

@ -1,7 +1,7 @@
import styled from 'styled-components';
const Container = styled.div`
padding: 18px 30px 18px 30px;
padding: 18px 30px 66px 30px;
`;
export default Container;

View File

@ -42,6 +42,7 @@ const InputUID = ({
contentTypeUID,
description,
error: inputError,
label: inputLabel,
name,
onChange,
validations,
@ -217,7 +218,7 @@ const InputUID = ({
return (
<Wrapper ref={wrapperRef}>
<Name htmlFor={name}>{name}</Name>
<Name htmlFor={name}>{inputLabel}</Name>
<InputContainer>
<Input
{...inputProps}
@ -291,6 +292,7 @@ InputUID.propTypes = {
description: PropTypes.string,
editable: PropTypes.bool,
error: PropTypes.string,
label: PropTypes.string.isRequired,
name: PropTypes.string.isRequired,
onChange: PropTypes.func.isRequired,
validations: PropTypes.object,

View File

@ -212,13 +212,6 @@ const createYupSchema = (
const createYupSchemaAttribute = (type, validations, options) => {
let schema = yup.mixed();
let regex = get(validations, 'regex', null);
delete validations.regex;
if (regex) {
validations.regex = new RegExp(regex);
}
if (['string', 'uid', 'text', 'richtext', 'email', 'password', 'enumeration'].includes(type)) {
schema = yup.string();
}
@ -341,7 +334,7 @@ const createYupSchemaAttribute = (type, validations, options) => {
break;
}
case 'regex':
schema = schema.matches(validationValue, errorsTrads.regex);
schema = schema.matches(new RegExp(validationValue), errorsTrads.regex);
break;
case 'lowercase':
if (['text', 'textarea', 'email', 'string'].includes(type)) {

View File

@ -92,12 +92,16 @@ logs
results
node_modules
.node_history
.snyk
############################
# Tests
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -1,101 +0,0 @@
############################
# OS X
############################
.DS_Store
.AppleDouble
.LSOverride
Icon
.Spotlight-V100
.Trashes
._*
############################
# Linux
############################
*~
############################
# Windows
############################
Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
*.cab
*.msi
*.msm
*.msp
############################
# Packages
############################
*.7z
*.csv
*.dat
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.com
*.class
*.dll
*.exe
*.o
*.seed
*.so
*.swo
*.swp
*.swn
*.swm
*.out
*.pid
############################
# Logs and databases
############################
*.log
*.sql
############################
# Misc.
############################
*#
ssl
.idea
nbproject
############################
# Node.js
############################
lib-cov
lcov.info
pids
logs
results
node_modules
.node_history
############################
# Tests
############################
test
testApp
coverage

View File

@ -36,7 +36,7 @@
"redux-immutable": "^4.0.0",
"reselect": "^4.0.0",
"strapi-helper-plugin": "3.4.5",
"swagger-ui-dist": "3.39.0"
"swagger-ui-dist": "3.41.1"
},
"author": {
"name": "soupette",

View File

@ -92,6 +92,8 @@ logs
results
node_modules
.node_history
.snyk
############################
@ -99,5 +101,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -92,6 +92,8 @@ logs
results
node_modules
.node_history
.snyk
############################
@ -99,5 +101,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -16,7 +16,7 @@
"apollo-server-koa": "2.19.1",
"dataloader": "^1.4.0",
"glob": "^7.1.6",
"graphql": "15.4.0",
"graphql": "15.5.0",
"graphql-depth-limit": "^1.1.0",
"graphql-iso-date": "^3.6.1",
"graphql-playground-middleware-koa": "^1.6.21",

View File

@ -92,6 +92,8 @@ logs
results
node_modules
.node_history
.snyk
############################
@ -99,5 +101,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -40,11 +40,13 @@ const List = ({
<ListRow>
{data.map(item => {
const { id } = item;
const url = get(item, ['formats', 'small', 'url'], item.url);
const thumbnail = get(item, ['formats', 'small'], item);
const isAllowed =
allowedTypes.length > 0 ? allowedTypes.includes(getType(item.mime)) : true;
const checked = selectedItems.findIndex(file => file.id === id) !== -1;
const fileUrl = prefixFileUrlWithBackendUrl(url);
const fileUrl = prefixFileUrlWithBackendUrl(thumbnail.url);
const cardOptions = {
...pick(item, ['ext', 'name', 'mime', 'height', 'width', 'size', 'previewUrl', 'id']),
isDisabled: !isAllowed,

View File

@ -1,18 +1,36 @@
import React, { useEffect, useReducer, useRef } from 'react';
import PropTypes from 'prop-types';
import styled from 'styled-components';
import { FormattedMessage, useIntl } from 'react-intl';
import Duration from '../Duration';
import LoadingIndicator from '../LoadingIndicator';
import PlayIcon from '../PlayIcon';
import Wrapper from './Wrapper';
import CanvasWrapper from './CanvasWrapper';
import Thumbnail from './Thumbnail';
import reducer, { initialState } from './reducer';
import getTrad from '../../utils/getTrad';
const EmptyPreview = styled.div`
display: flex;
align-items: center;
justify-content: center;
font-size: ${({ theme }) => theme.main.sizes.fonts.xs};
color: ${({ theme }) => theme.main.colors.grey};
`;
const VideoPreview = ({ hasIcon, previewUrl, src }) => {
const { formatMessage } = useIntl();
const [reducerState, dispatch] = useReducer(reducer, initialState);
const { duration, dataLoaded, isHover, metadataLoaded, snapshot, seeked } = reducerState.toJS();
const {
duration,
dataLoaded,
isHover,
metadataLoaded,
snapshot,
seeked,
isError,
} = reducerState.toJS();
// Adapted from https://github.com/brothatru/react-video-thumbnail/blob/master/src/components/VideoThumbnail.js
// And from https://github.com/soupette/poc-video-preview
@ -51,6 +69,14 @@ const VideoPreview = ({ hasIcon, previewUrl, src }) => {
}
}, [dataLoaded, metadataLoaded, seeked, snapshot]);
if (isError) {
return (
<EmptyPreview>
<FormattedMessage id={getTrad('list.assets.not-supported-content')} />
</EmptyPreview>
);
}
return (
<Wrapper
// Specify isHover to prevent bad behavior when compo is under the cursor on modal open
@ -67,17 +93,35 @@ const VideoPreview = ({ hasIcon, previewUrl, src }) => {
});
}}
>
{!snapshot && <LoadingIndicator />}
{!snapshot && (
<LoadingIndicator
aria-label={formatMessage(
{
id: getTrad('list.assets.loading-asset'),
},
{ path: src }
)}
/>
)}
<CanvasWrapper>
{previewUrl ? (
<Thumbnail src={previewUrl} />
<Thumbnail
src={previewUrl}
alt={formatMessage(
{
id: getTrad('list.assets.preview-asset'),
},
{ path: src }
)}
/>
) : (
<>
<video
muted
ref={videoRef}
src={src}
crossOrigin="anonymous"
onError={() => dispatch({ type: 'SET_ERROR', isError: true })}
onLoadedMetadata={() => {
dispatch({
type: 'METADATA_LOADED',
@ -99,6 +143,7 @@ const VideoPreview = ({ hasIcon, previewUrl, src }) => {
</>
)}
<Duration duration={duration} />
{(hasIcon || isHover) && <PlayIcon small />}
</CanvasWrapper>
</Wrapper>

View File

@ -7,6 +7,7 @@ const initialState = fromJS({
metadataLoaded: false,
seeked: false,
snapshot: false,
isError: false,
});
const videoReducer = (state, action) => {
@ -21,6 +22,8 @@ const videoReducer = (state, action) => {
return state.update('isHover', () => action.isHover);
case 'SET_SNAPSHOT':
return state.update('snapshot', () => action.snapshot);
case 'SET_ERROR':
return state.update('isError', () => action.isError);
default:
return state;
}

View File

@ -0,0 +1,77 @@
import React from 'react';
import { screen, render, fireEvent } from '@testing-library/react';
import { ThemeProvider } from 'styled-components';
import VideoPreview from '..';
import themes from '../../../../../../strapi-admin/admin/src/themes';
jest.mock('react-intl', () => ({
// eslint-disable-next-line react/prop-types
FormattedMessage: ({ id }) => <div>{id}</div>,
useIntl: () => ({
formatMessage: ({ id }) => id,
}),
}));
describe('VideoPreview', () => {
it('shows its initial state with no props', () => {
const { container } = render(
<ThemeProvider theme={themes}>
<VideoPreview />
</ThemeProvider>
);
expect(container).toMatchSnapshot();
});
it('shows a loading state when resolving the asset', () => {
render(
<ThemeProvider theme={themes}>
<VideoPreview
hasIcon
previewUrl="https://some-preview-url/img.jpg"
src="https://something-good/video.mp4"
/>
</ThemeProvider>
);
expect(screen.getByLabelText('upload.list.assets.loading-asset')).toBeVisible();
});
it('shows the thumbnail but not the video when previewURL is passed', () => {
const { container } = render(
<ThemeProvider theme={themes}>
<VideoPreview
hasIcon
previewUrl="https://some-preview-url/img.jpg"
src="https://something-good/video.mp4"
/>
</ThemeProvider>
);
expect(screen.getByAltText('upload.list.assets.preview-asset')).toBeVisible();
expect(container.querySelector('video')).toBeFalsy();
});
it('shows the video when the previewURL is not passed', () => {
const { container } = render(
<ThemeProvider theme={themes}>
<VideoPreview hasIcon src="https://something-good/video.mp4" />
</ThemeProvider>
);
expect(container.querySelector('video')).toBeVisible();
});
it('shows a fallback message when the video is in error', () => {
const { container } = render(
<ThemeProvider theme={themes}>
<VideoPreview hasIcon src="https://something-good/video.wvf" />
</ThemeProvider>
);
fireEvent(container.querySelector('video'), new Event('error'));
expect(screen.getByText('upload.list.assets.not-supported-content')).toBeVisible();
});
});

View File

@ -0,0 +1,118 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`VideoPreview shows its initial state with no props 1`] = `
.c3 {
margin: 0;
line-height: normal;
color: #ffffff;
font-size: 13px;
font-weight: 500;
text-transform: none;
}
.c4 {
position: absolute;
bottom: 10px;
right: 10px;
padding: 3px 5px;
border-radius: 2px;
background-color: #333740;
}
.c1 {
position: relative;
width: 44%;
height: 4px;
overflow: hidden;
background-color: #515764;
border-radius: 2px;
}
.c1:before {
content: '';
display: block;
position: absolute;
left: -100px;
width: 100px;
height: 4px;
background-color: #b3b5b9;
-webkit-animation: gPeyzP 2s linear infinite;
animation: gPeyzP 2s linear infinite;
}
.c0 {
position: relative;
width: 100%;
height: 100%;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: 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;
}
.c0 video {
display: none;
}
.c2 {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-align-items: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.c2 canvas {
display: block;
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
margin: auto;
}
<div>
<div
class="c0"
>
<div
aria-label="upload.list.assets.loading-asset"
class="c1"
/>
<div
class="c2"
>
<video />
<canvas />
<p
class="c3 c4"
color="white"
font-size="md"
font-weight="semiBold"
>
00:00
</p>
</div>
</div>
</div>
`;

View File

@ -79,4 +79,17 @@ describe('Upload | components | VideoPreview | reducer', () => {
expect(reducer(state, action)).toEqual(expectedState);
});
it('should set isError to true when the payload is true', () => {
const state = initialState;
const action = {
type: 'SET_ERROR',
isError: true,
};
const expectedState = state.set('isError', true);
expect(reducer(state, action)).toEqual(expectedState);
});
});

View File

@ -36,6 +36,9 @@
"list.assets.selected.plural": "{number} assets selected",
"list.assets.selected.singular": "{number} asset selected",
"list.assets.type-not-allowed": "This type of file is not allowed.",
"list.assets.not-supported-content": "No preview available",
"list.assets.loading-asset": "Loading the preview for the media: {path}",
"list.assets.preview-asset": "Preview for the video at path {path}",
"modal.file-details.date": "Date",
"modal.file-details.dimensions": "Dimensions",
"modal.file-details.extension": "Extension",

View File

@ -36,6 +36,9 @@
"list.assets.selected.plural": "{number} médias sélectionnés",
"list.assets.selected.singular": "{number} média sélectionné",
"list.assets.type-not-allowed": "Ce type de fichier n'est pas autorisé.",
"list.assets.not-supported-content": "Preview non disponible",
"list.assets.loading-asset": "Chargement du contenu pour le media {path}",
"list.assets.preview-asset": "Preview de la vidéo {path}",
"modal.file-details.date": "Date",
"modal.file-details.dimensions": "Dimensions",
"modal.file-details.extension": "Extension",

View File

@ -4,6 +4,7 @@ import en from './en.json';
import es from './es.json';
import fr from './fr.json';
import he from './he.json';
import it from './it.json';
import ja from './ja.json';
import ms from './ms.json';
import ru from './ru.json';
@ -20,6 +21,7 @@ const trads = {
es,
fr,
he,
it,
ja,
ms,
ru,

View File

@ -3,5 +3,6 @@
"provider": "local",
"providerOptions": {
"sizeLimit": 1000000
}
},
"actionOptions": {}
}

View File

@ -36,14 +36,18 @@ const wrapFunctionForErrors = fn => async (...args) => {
}
};
const createProvider = ({ provider, providerOptions }) => {
const createProvider = ({ provider, providerOptions, actionOptions = {} }) => {
try {
const providerInstance = require(`strapi-provider-upload-${provider}`).init(providerOptions);
return Object.assign(Object.create(baseProvider), {
...providerInstance,
upload: wrapFunctionForErrors(providerInstance.upload.bind(providerInstance)),
delete: wrapFunctionForErrors(providerInstance.delete.bind(providerInstance)),
upload: wrapFunctionForErrors((file, options = actionOptions.upload) => {
return providerInstance.upload(file, options);
}),
delete: wrapFunctionForErrors((file, options = actionOptions.delete) => {
return providerInstance.delete(file, options);
}),
});
} catch (err) {
strapi.log.error(err);

View File

@ -35,7 +35,7 @@
"react-router": "^5.0.0",
"react-router-dom": "^5.0.0",
"reactstrap": "8.4.1",
"sharp": "0.26.2",
"sharp": "0.27.1",
"strapi-helper-plugin": "3.4.5",
"strapi-provider-upload-local": "3.4.5",
"strapi-utils": "3.4.5",

View File

@ -87,12 +87,14 @@ const optimize = async buffer => {
.catch(() => ({ buffer }));
};
const BREAKPOINTS = {
const DEFAULT_BREAKPOINTS = {
large: 1000,
medium: 750,
small: 500,
};
const getBreakpoints = () => strapi.config.get('plugins.upload.breakpoints', DEFAULT_BREAKPOINTS);
const generateResponsiveFormats = async file => {
const {
responsiveDimensions = false,
@ -106,9 +108,10 @@ const generateResponsiveFormats = async file => {
const originalDimensions = await getDimensions(file.buffer);
const breakpoints = getBreakpoints();
return Promise.all(
Object.keys(BREAKPOINTS).map(key => {
const breakpoint = BREAKPOINTS[key];
Object.keys(breakpoints).map(key => {
const breakpoint = breakpoints[key];
if (breakpointSmallerThan(breakpoint, originalDimensions)) {
return generateBreakpoint(key, { file, breakpoint, originalDimensions });

View File

@ -92,6 +92,8 @@ logs
results
node_modules
.node_history
.snyk
############################
@ -99,5 +101,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

View File

@ -1,101 +0,0 @@
############################
# OS X
############################
.DS_Store
.AppleDouble
.LSOverride
Icon
.Spotlight-V100
.Trashes
._*
############################
# Linux
############################
*~
############################
# Windows
############################
Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
*.cab
*.msi
*.msm
*.msp
############################
# Packages
############################
*.7z
*.csv
*.dat
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.com
*.class
*.dll
*.exe
*.o
*.seed
*.so
*.swo
*.swp
*.swn
*.swm
*.out
*.pid
############################
# Logs and databases
############################
*.log
*.sql
############################
# Misc.
############################
*#
ssl
.idea
nbproject
############################
# Node.js
############################
lib-cov
lcov.info
pids
logs
results
node_modules
.node_history
############################
# Tests
############################
test
testApp
coverage

View File

@ -95,6 +95,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -102,3 +104,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -95,6 +95,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -102,3 +104,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -95,6 +95,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -102,3 +104,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -95,6 +95,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -102,3 +104,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -95,6 +95,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -102,3 +104,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -95,6 +95,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -102,3 +104,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -4,6 +4,8 @@
Your configuration is passed down to the cloudinary configuration. (e.g: `cloudinary.config(config)`). You can see the complete list of options [here](https://cloudinary.com/documentation/cloudinary_sdks#configuration_parameters)
`actionOptions` are passed directly to the upload and delete functions respectively allowing for custom options such as folder, type, etc. You can see the complete list of upload options [here](https://cloudinary.com/documentation/image_upload_api_reference#upload_optional_parameters) and delete options [here](https://cloudinary.com/documentation/image_upload_api_reference#destroy_optional_parameters)
See the [using a provider](https://strapi.io/documentation/developer-docs/latest/plugins/upload.html#using-a-provider) documentation for information on installing and using a provider. And see the [environment variables](https://strapi.io/documentation/developer-docs/latest/concepts/configurations.html#environment-variables) for setting and using environment variables in your configs.
**Example**
@ -20,6 +22,10 @@ module.exports = ({ env }) => ({
api_key: env('CLOUDINARY_KEY'),
api_secret: env('CLOUDINARY_SECRET'),
},
actionOptions: {
upload: {},
delete: {},
},
},
// ...
});

View File

@ -95,6 +95,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -102,3 +104,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -95,6 +95,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -102,3 +104,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
############################
*#
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,3 +102,6 @@ node_modules
############################
test
tests
__tests__
jest.config.js

View File

@ -111,8 +111,16 @@ const hasDeepFilters = ({ where = [], sort = [] }, { minDepth = 1 } = {}) => {
const normalizeWhereClauses = (whereClauses, { model }) => {
return whereClauses
.filter(({ value }) => !_.isNil(value))
.filter(({ value }) => !_.isNull(value))
.map(({ field, operator, value }) => {
if (_.isUndefined(value)) {
const err = new Error(
`The value of field: '${field}', in your where filter, is undefined.`
);
err.status = 400;
throw err;
}
if (BOOLEAN_OPERATORS.includes(operator)) {
return {
field,

View File

@ -76,6 +76,7 @@ $RECYCLE.BIN/
############################
*#
.editorconfig
.idea
nbproject
@ -92,6 +93,8 @@ results
build
node_modules
.node_history
.snyk
############################
@ -99,5 +102,8 @@ node_modules
############################
test
tests
__tests__
jest.config.js
testApp
coverage

291
yarn.lock
View File

@ -1002,7 +1002,7 @@
core-js-pure "^3.0.0"
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.5", "@babel/runtime@^7.2.0", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
"@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.5", "@babel/runtime@^7.2.0", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.12.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
@ -1410,12 +1410,12 @@
dependencies:
"@fortawesome/fontawesome-common-types" "^0.2.30"
"@fortawesome/free-solid-svg-icons@^5.10.2", "@fortawesome/free-solid-svg-icons@^5.11.2", "@fortawesome/free-solid-svg-icons@^5.14.0":
version "5.14.0"
resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.14.0.tgz#970453f5e8c4915ad57856c3a0252ac63f6fec18"
integrity sha512-M933RDM8cecaKMWDSk3FRYdnzWGW7kBBlGNGfvqLVwcwhUPNj9gcw+xZMrqBdRqxnSXdl3zWzTCNNGEtFUq67Q==
"@fortawesome/free-solid-svg-icons@^5.10.2", "@fortawesome/free-solid-svg-icons@^5.11.2", "@fortawesome/free-solid-svg-icons@^5.15.2":
version "5.15.2"
resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.2.tgz#25bb035de57cf85aee8072965732368ccc8e8943"
integrity sha512-ZfCU+QjaFsdNZmOGmfqEWhzI3JOe37x5dF4kz9GeXvKn/sTxhqMtZ7mh3lBf76SvcYY5/GKFuyG7p1r4iWMQqw==
dependencies:
"@fortawesome/fontawesome-common-types" "^0.2.30"
"@fortawesome/fontawesome-common-types" "^0.2.34"
"@fortawesome/react-fontawesome@^0.1.12", "@fortawesome/react-fontawesome@^0.1.4":
version "0.1.12"
@ -2694,72 +2694,72 @@
"@sendgrid/client" "^6.4.0"
"@sendgrid/helpers" "^6.4.0"
"@sentry/core@5.27.3":
version "5.27.3"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.27.3.tgz#d7a175b71596b7eb4b2e8b4cd1858a60d95813bb"
integrity sha512-yqepQO88jSt5hy0awpk61AxI4oHB09LjVbUEk4nJDg+1YXuND23cuZvH+Sp2jCZX2vrsw2tefwflToYfA8/U2w==
"@sentry/core@6.0.3":
version "6.0.3"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.0.3.tgz#620cb32365a11eac75497bed281bd52b9f0bb359"
integrity sha512-UykB/4/98y2DkNvwTiL2ofFPuK3KDHc7rIRNsdj6dg6D+Cf7FRexgmWUUkZrpC/y+QBj0TPqkcFDcZAuQDa3Ag==
dependencies:
"@sentry/hub" "5.27.3"
"@sentry/minimal" "5.27.3"
"@sentry/types" "5.27.3"
"@sentry/utils" "5.27.3"
"@sentry/hub" "6.0.3"
"@sentry/minimal" "6.0.3"
"@sentry/types" "6.0.3"
"@sentry/utils" "6.0.3"
tslib "^1.9.3"
"@sentry/hub@5.27.3":
version "5.27.3"
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.27.3.tgz#f509c2fd38f500afef6030504e82510dbd0649d6"
integrity sha512-icEH3hr6NVQkpowXZcPOs9IgJZP5lMKtvud4mVioSpkd+NxtRdKrGEX4eF2TCviOJc9Md0mV4K+aL5Au7hxggQ==
"@sentry/hub@6.0.3":
version "6.0.3"
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.0.3.tgz#097f7b1e775a4c6c20c9bec60d7507d5ad2e8db0"
integrity sha512-BfV32tE09rjTWM9W0kk8gzxUC2k1h57Z5dNWJ35na79+LguNNtCcI6fHlFQ3PkJca6ITYof9FI8iQHUfsHFZnw==
dependencies:
"@sentry/types" "5.27.3"
"@sentry/utils" "5.27.3"
"@sentry/types" "6.0.3"
"@sentry/utils" "6.0.3"
tslib "^1.9.3"
"@sentry/minimal@5.27.3":
version "5.27.3"
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.27.3.tgz#c9263bdd6270bfeae64137177448911dff568e53"
integrity sha512-ng01cM0rsE1RMjqVTpPLN0ZVkTo0I675usM1krkpQe8ddW6tfQ6EJWpt02/BrpQZRQzTtfWp6/RyB1KFXg6icg==
"@sentry/minimal@6.0.3":
version "6.0.3"
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.0.3.tgz#6eaaf78c479c49720df3e712d41518e7f4f0ffdf"
integrity sha512-YsW+nw0SMyyb7UQdjZeKlZjxbGsJFpXNLh9iIp6fHKnoLTTv17YPm2ej9sOikDsQuVotaPg/xn/Qt5wySGHIxw==
dependencies:
"@sentry/hub" "5.27.3"
"@sentry/types" "5.27.3"
"@sentry/hub" "6.0.3"
"@sentry/types" "6.0.3"
tslib "^1.9.3"
"@sentry/node@^5.27.3":
version "5.27.3"
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.27.3.tgz#174b81fbca8cadac12afe49910cbe9cc25b23f87"
integrity sha512-IZ/TkYRY+P/E5C+RF6Rcb6tpY59fyk0040Q3akzbDjb/hrw5TRKnK8fJ6/0gXCAOvlDPIlpRHFJgJ1p2QgWy+g==
"@sentry/node@^6.0.3":
version "6.0.3"
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.0.3.tgz#f41e707db710fd7c48e3bffdf05c8edeec95cbe9"
integrity sha512-yvj/e91NPiTtkjUvQSdTqAlRkEw0f/jIC70abobtWH0ExUJOuLHOPWMCpAYST8Adv2QV7eGEhywseRrY1dxSsw==
dependencies:
"@sentry/core" "5.27.3"
"@sentry/hub" "5.27.3"
"@sentry/tracing" "5.27.3"
"@sentry/types" "5.27.3"
"@sentry/utils" "5.27.3"
"@sentry/core" "6.0.3"
"@sentry/hub" "6.0.3"
"@sentry/tracing" "6.0.3"
"@sentry/types" "6.0.3"
"@sentry/utils" "6.0.3"
cookie "^0.4.1"
https-proxy-agent "^5.0.0"
lru_map "^0.3.3"
tslib "^1.9.3"
"@sentry/tracing@5.27.3":
version "5.27.3"
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.27.3.tgz#787e57a2f7071e375f4fad0f3c3a5ff3381928e7"
integrity sha512-UWrHMdGxPfx1u558CWm1tptc2z0BuqCHVe2+BNN7POahq5BkpbGqaotyPQTBHbfmcs6QGfsMG57ou8HQFrBxyA==
"@sentry/tracing@6.0.3":
version "6.0.3"
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.0.3.tgz#103f4942ddd546321e22ba20c011adf52b25b3f2"
integrity sha512-H7dnsvPz9cD1nuCNQM4MxcHxt2JdT9F8dQ/4+gp+eB9iBLy6staMrmKRLYuAcMU/M3MCDG4ISIip7KbTt74OLg==
dependencies:
"@sentry/hub" "5.27.3"
"@sentry/minimal" "5.27.3"
"@sentry/types" "5.27.3"
"@sentry/utils" "5.27.3"
"@sentry/hub" "6.0.3"
"@sentry/minimal" "6.0.3"
"@sentry/types" "6.0.3"
"@sentry/utils" "6.0.3"
tslib "^1.9.3"
"@sentry/types@5.27.3":
version "5.27.3"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.27.3.tgz#d377508769bc658d672c287166c7f6c5db45660c"
integrity sha512-PkWhMArFMxBb1g3HtMEL8Ea9PYae2MU0z9CMIWiqzerFy2ZpKG98IU3pt8ic4JkmKQdwB8hDiZpRPMHhW0WYwQ==
"@sentry/types@6.0.3":
version "6.0.3"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.0.3.tgz#a1ef6d6b2ac2a9201e3e4a894db6ecf7ceb5b27c"
integrity sha512-266aBQbk9AGedhG2dzXshWbn23LYLElXqlI74DLku48UrU2v7TGKdyik/8/nfOfquCoRSp0GFGYHbItwU124XQ==
"@sentry/utils@5.27.3":
version "5.27.3"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.27.3.tgz#1fc45dfad1f1e4398bee58684d8947666d8d3003"
integrity sha512-R9WvFrRBALZvCzu/9BsuXBCfkNxz4MwdBNSXaBsJo4afQw1ljkjIc9DpHzlL9S9goIwXo81Buwmr5gGDO6aH+Q==
"@sentry/utils@6.0.3":
version "6.0.3"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.0.3.tgz#114d9faa47f76416c3e140711465e76d2129dba8"
integrity sha512-lvuBFvZHYs1zYwI8dkC8Z8ryb0aYnwPFUl1rbZiMwJpYI2Dgl1jpqqZWv9luux2rSRYOMid74uGedV708rvEgA==
dependencies:
"@sentry/types" "5.27.3"
"@sentry/types" "6.0.3"
tslib "^1.9.3"
"@sindresorhus/is@^0.14.0":
@ -4278,18 +4278,25 @@ array-flatten@^2.1.0:
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
array-flatten@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-3.0.0.tgz#6428ca2ee52c7b823192ec600fa3ed2f157cd541"
integrity sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==
array-ify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
array-includes@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348"
integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==
array-includes@^3.1.1, array-includes@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8"
integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==
dependencies:
call-bind "^1.0.0"
define-properties "^1.1.3"
es-abstract "^1.17.0"
es-abstract "^1.18.0-next.1"
get-intrinsic "^1.0.1"
is-string "^1.0.5"
array-slice@^1.0.0:
@ -4513,10 +4520,10 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428"
integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==
axe-core@^3.5.4:
version "3.5.5"
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.5.tgz#84315073b53fa3c0c51676c588d59da09a192227"
integrity sha512-5P0QZ6J5xGikH780pghEdbEKijCTrruK9KxtPZCFWUpef0f6GipO+xEZ5GKCb020mmqgbiNO6TcA55CriL784Q==
axe-core@^4.0.2:
version "4.1.1"
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.1.tgz#70a7855888e287f7add66002211a423937063eaf"
integrity sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ==
axios-mock-adapter@^1.19.0:
version "1.19.0"
@ -4533,7 +4540,7 @@ axios@^0.21.1:
dependencies:
follow-redirects "^1.10.0"
axobject-query@^2.1.2:
axobject-query@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
@ -5756,21 +5763,21 @@ color-name@^1.0.0, color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-string@^1.5.2:
version "1.5.3"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==
color-string@^1.5.4:
version "1.5.4"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6"
integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==
dependencies:
color-name "^1.0.0"
simple-swizzle "^0.2.2"
color@^3.0.0, color@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10"
integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==
color@^3.0.0, color@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e"
integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==
dependencies:
color-convert "^1.9.1"
color-string "^1.5.2"
color-string "^1.5.4"
colorette@1.2.1, colorette@^1.2.1:
version "1.2.1"
@ -7761,21 +7768,21 @@ eslint-plugin-import@^2.19.1:
resolve "^1.17.0"
tsconfig-paths "^3.9.0"
eslint-plugin-jsx-a11y@^6.2.3:
version "6.3.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.3.1.tgz#99ef7e97f567cc6a5b8dd5ab95a94a67058a2660"
integrity sha512-i1S+P+c3HOlBJzMFORRbC58tHa65Kbo8b52/TwCwSKLohwvpfT5rm2GjGWzOHTEuq4xxf2aRlHHTtmExDQOP+g==
eslint-plugin-jsx-a11y@^6.4.1:
version "6.4.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd"
integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==
dependencies:
"@babel/runtime" "^7.10.2"
"@babel/runtime" "^7.11.2"
aria-query "^4.2.2"
array-includes "^3.1.1"
ast-types-flow "^0.0.7"
axe-core "^3.5.4"
axobject-query "^2.1.2"
axe-core "^4.0.2"
axobject-query "^2.2.0"
damerau-levenshtein "^1.0.6"
emoji-regex "^9.0.0"
has "^1.0.3"
jsx-ast-utils "^2.4.1"
jsx-ast-utils "^3.1.0"
language-tags "^1.0.5"
eslint-plugin-node@11.1.0:
@ -8816,6 +8823,15 @@ get-caller-file@^2.0.1:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
get-intrinsic@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.0.tgz#892e62931e6938c8a23ea5aaebcfb67bd97da97e"
integrity sha512-M11rgtQp5GZMZzDL7jLTNxbDfurpzuau5uqRWDPvlHjfvg3TdScAZo96GLvhMjImrmR8uAt0FS2RLoMrfWGKlg==
dependencies:
function-bind "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.1"
get-intrinsic@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49"
@ -9305,10 +9321,10 @@ graphql-upload@^8.0.2:
http-errors "^1.7.3"
object-path "^0.11.4"
graphql@15.4.0, graphql@^15.3.0:
version "15.4.0"
resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.4.0.tgz#e459dea1150da5a106486ba7276518b5295a4347"
integrity sha512-EB3zgGchcabbsU9cFe1j+yxdzKQKAbGUWRb13DsrsMN1yyfmmIq+2+L5MqVWcDCE4V89R5AyUOi7sMOGxdsYtA==
graphql@15.5.0, graphql@^15.3.0:
version "15.5.0"
resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.0.tgz#39d19494dbe69d1ea719915b578bf920344a69d5"
integrity sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA==
growl@1.9.2:
version "1.9.2"
@ -11489,21 +11505,13 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
jsx-ast-utils@^2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e"
integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==
"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82"
integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==
dependencies:
array-includes "^3.1.1"
object.assign "^4.1.0"
"jsx-ast-utils@^2.4.1 || ^3.0.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.1.0.tgz#642f1d7b88aa6d7eb9d8f2210e166478444fa891"
integrity sha512-d4/UOjg+mxAWxCiF0c5UTSwyqbchkbqCvK87aBovhnh8GtysTjWmgC63tY0cJx/HzGgm9qnA147jVBdpOiQ2RA==
dependencies:
array-includes "^3.1.1"
object.assign "^4.1.1"
array-includes "^3.1.2"
object.assign "^4.1.2"
jszip@3.4.0:
version "3.4.0"
@ -13047,7 +13055,7 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
mkdirp-classic@^0.5.2:
mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
version "0.5.3"
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
@ -13379,10 +13387,10 @@ node-addon-api@2.0.0:
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.0.tgz#f9afb8d777a91525244b01775ea0ddbe1125483b"
integrity sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA==
node-addon-api@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.2.tgz#04bc7b83fd845ba785bb6eae25bc857e1ef75681"
integrity sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg==
node-addon-api@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.1.0.tgz#98b21931557466c6729e51cb77cd39c965f42239"
integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==
node-fetch-npm@^2.0.2:
version "2.0.4"
@ -13815,7 +13823,7 @@ object-visit@^1.0.0:
dependencies:
isobject "^3.0.0"
object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2:
object.assign@^4.1.0, object.assign@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
@ -15236,16 +15244,16 @@ postgres-interval@^1.1.0:
dependencies:
xtend "^4.0.0"
prebuild-install@^5.3.5:
version "5.3.5"
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.5.tgz#e7e71e425298785ea9d22d4f958dbaccf8bb0e1b"
integrity sha512-YmMO7dph9CYKi5IR/BzjOJlRzpxGGVo1EsLSUZ0mt/Mq0HWZIHOKHHcHdT69yG54C9m6i45GpItwRHpk0Py7Uw==
prebuild-install@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.0.0.tgz#669022bcde57c710a869e39c5ca6bf9cd207f316"
integrity sha512-h2ZJ1PXHKWZpp1caLw0oX9sagVpL2YTk+ZwInQbQ3QqNd4J03O6MpFNmMTJlkfgPENWqe5kP0WjQLqz5OjLfsw==
dependencies:
detect-libc "^1.0.3"
expand-template "^2.0.3"
github-from-package "0.0.0"
minimist "^1.2.3"
mkdirp "^0.5.1"
mkdirp-classic "^0.5.3"
napi-build-utils "^1.0.1"
node-abi "^2.7.0"
noop-logger "^0.1.1"
@ -17309,19 +17317,20 @@ shallowequal@^1.1.0:
resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
sharp@0.26.2:
version "0.26.2"
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.26.2.tgz#3d5777d246ae32890afe82a783c1cbb98456a88c"
integrity sha512-bGBPCxRAvdK9bX5HokqEYma4j/Q5+w8Nrmb2/sfgQCLEUx/HblcpmOfp59obL3+knIKnOhyKmDb4tEOhvFlp6Q==
sharp@0.27.1:
version "0.27.1"
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.27.1.tgz#cd04926406a697b58dfc5fb62e3c7a3a2d68389a"
integrity sha512-IQNXWdspb4nZcJemXa6cfgz+JvKONsuqP8Mwi1Oti23Uo7+J+UF2jihJDf6I1BQbrmhcZ0lagH/1WYG+ReAzyQ==
dependencies:
color "^3.1.2"
array-flatten "^3.0.0"
color "^3.1.3"
detect-libc "^1.0.3"
node-addon-api "^3.0.2"
node-addon-api "^3.1.0"
npmlog "^4.1.2"
prebuild-install "^5.3.5"
semver "^7.3.2"
prebuild-install "^6.0.0"
semver "^7.3.4"
simple-get "^4.0.0"
tar-fs "^2.1.0"
tar-fs "^2.1.1"
tunnel-agent "^0.6.0"
shebang-command@^1.2.0:
@ -18727,10 +18736,10 @@ svgo@^1.0.0:
unquote "~1.1.1"
util.promisify "~1.0.0"
swagger-ui-dist@3.39.0:
version "3.39.0"
resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.39.0.tgz#94fcd76316cc9925a77d41fdbfdfdccd6fa1a0a6"
integrity sha512-mNCdhxMvYH0E96ebDX5LL3Yj8zMqC/HFAN5YDjwYxuetEewZ6onBrBBSJsWcl6vCxbEbtS2qBiy9OtBY+YyndQ==
swagger-ui-dist@3.41.1:
version "3.41.1"
resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.41.1.tgz#1cb803fab9aef9bd45e1848068908887a23bf27f"
integrity sha512-Wg3RqMBp8dSYEwyvXOWuOTwh3fTxYxmtAvLjEbUwRlPXKEHcde3BG/v2zjswrDVcumUpPQ6Cp5RG3LMz6M0YIw==
switchback@^2.0.1:
version "2.0.5"
@ -18779,17 +18788,17 @@ tapable@^1.0.0, tapable@^1.1.3:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
tar-fs@^2.0.0, tar-fs@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5"
integrity sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==
tar-fs@^2.0.0, tar-fs@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
dependencies:
chownr "^1.1.1"
mkdirp-classic "^0.5.2"
pump "^3.0.0"
tar-stream "^2.0.0"
tar-stream "^2.1.4"
tar-stream@^2.0.0, tar-stream@^2.1.0, tar-stream@^2.1.2:
tar-stream@^2.1.0, tar-stream@^2.1.2:
version "2.1.4"
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.4.tgz#c4fb1a11eb0da29b893a5b25476397ba2d053bfa"
integrity sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==
@ -18800,6 +18809,17 @@ tar-stream@^2.0.0, tar-stream@^2.1.0, tar-stream@^2.1.2:
inherits "^2.0.3"
readable-stream "^3.1.1"
tar-stream@^2.1.4:
version "2.2.0"
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
dependencies:
bl "^4.0.3"
end-of-stream "^1.4.1"
fs-constants "^1.0.0"
inherits "^2.0.3"
readable-stream "^3.1.1"
tar@6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83"
@ -19238,21 +19258,16 @@ tslib@^1, tslib@^1.10.0, tslib@^1.11.2, tslib@^1.13.0, tslib@^1.9.0, tslib@^1.9.
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
tslib@^2.0.0, tslib@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e"
integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==
tslib@^2.0.3, tslib@~2.0.1:
version "2.0.3"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c"
integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==
tslib@~2.1.0:
tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
tslib@~2.0.1:
version "2.0.3"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c"
integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==
tsscmp@1.0.6, tsscmp@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb"