mirror of
https://github.com/strapi/strapi.git
synced 2025-11-01 10:23:34 +00:00
Merge branch 'master' into fix/graphql-issues
This commit is contained in:
commit
2e95a31627
@ -42,6 +42,7 @@ module.exports = {
|
||||
rules: {
|
||||
'generator-star-spacing': 0,
|
||||
'no-console': 0,
|
||||
'require-atomic-updates': 0,
|
||||
'react-hooks/rules-of-hooks': 'error',
|
||||
'react-hooks/exhaustive-deps': 'warn',
|
||||
},
|
||||
|
||||
16
package.json
16
package.json
@ -3,25 +3,25 @@
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"@testing-library/jest-dom": "^4.0.0",
|
||||
"@testing-library/react": "^9.1.1",
|
||||
"@testing-library/react-hooks": "^2.0.1",
|
||||
"babel-eslint": "^10.0.1",
|
||||
"@testing-library/react": "^9.1.0",
|
||||
"@testing-library/react-hooks": "^2.0.0",
|
||||
"babel-eslint": "^10.0.0",
|
||||
"cross-env": "^5.2.0",
|
||||
"cypress": "3.1.2",
|
||||
"enzyme": "^3.9.0",
|
||||
"enzyme-adapter-react-16": "^1.12.1",
|
||||
"eslint": "^5.16.0",
|
||||
"eslint-config-prettier": "^6.0.0",
|
||||
"eslint": "^6.3.0",
|
||||
"eslint-config-prettier": "^6.2.0",
|
||||
"eslint-plugin-react": "^7.14.0",
|
||||
"eslint-plugin-react-hooks": "^1.6.1",
|
||||
"eslint-plugin-redux-saga": "^1.0.0",
|
||||
"eslint-plugin-react-hooks": "^2.0.0",
|
||||
"eslint-plugin-redux-saga": "^1.1.0",
|
||||
"execa": "^1.0.0",
|
||||
"husky": "^3.0.0",
|
||||
"istanbul": "~0.4.2",
|
||||
"jest": "^24.5.0",
|
||||
"jest-cli": "^24.5.0",
|
||||
"lerna": "^3.13.1",
|
||||
"lint-staged": "^9.1.0",
|
||||
"lint-staged": "^9.2.0",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"prettier": "^1.18.2",
|
||||
"react-test-renderer": "^16.9.0",
|
||||
|
||||
@ -177,7 +177,7 @@ if (NODE_ENV !== 'test') {
|
||||
import('intl/locale-data/jsonp/en.js'),
|
||||
import('intl/locale-data/jsonp/de.js'),
|
||||
])
|
||||
) // eslint-disable-line prettier/prettier
|
||||
)
|
||||
.then(() => render(translationMessages))
|
||||
.catch(err => {
|
||||
throw err;
|
||||
|
||||
@ -15,7 +15,6 @@ import Reddit from '../../assets/images/social_reddit.png';
|
||||
|
||||
import { SocialLinkWrapper } from './components';
|
||||
|
||||
/* eslint-disable jsx-a11y/alt-text */
|
||||
function getSrc(name) {
|
||||
switch (name) {
|
||||
case 'GitHub':
|
||||
|
||||
@ -92,7 +92,6 @@ export class Onboarding extends React.Component {
|
||||
this.props.setVideoEnd(index, true);
|
||||
};
|
||||
|
||||
// eslint-disable-line jsx-handler-names
|
||||
render() {
|
||||
const { videos, onClick, setVideoDuration } = this.props;
|
||||
const { showVideos } = this.state;
|
||||
|
||||
@ -29,8 +29,8 @@ module.exports = opts => {
|
||||
},
|
||||
devDependencies: {
|
||||
'babel-eslint': '^10.0.0',
|
||||
eslint: '^6.0.0',
|
||||
'eslint-config-airbnb': '^17.1.0',
|
||||
eslint: '^6.3.0',
|
||||
'eslint-config-airbnb': '^18.0.0',
|
||||
'eslint-plugin-import': '^2.18.0',
|
||||
'eslint-plugin-react': '^7.14.0',
|
||||
},
|
||||
|
||||
@ -30,7 +30,7 @@ import App from 'containers/App';
|
||||
|
||||
const layout = (() => {
|
||||
try {
|
||||
return require('../../../../config/layout.js'); // eslint-disable-line import/no-unresolved
|
||||
return require('../../../../config/layout.js');
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
@ -38,7 +38,7 @@ const layout = (() => {
|
||||
|
||||
const injectedComponents = (() => {
|
||||
try {
|
||||
return require('injectedComponents').default; // eslint-disable-line import/no-unresolved
|
||||
return require('injectedComponents').default;
|
||||
} catch (err) {
|
||||
return [];
|
||||
}
|
||||
@ -80,7 +80,7 @@ if (module.hot) {
|
||||
// Require the Initializer component
|
||||
const initializer = (() => {
|
||||
try {
|
||||
return require('../../../../admin/src/initializer.js'); // eslint-disable-line import/no-unresolved
|
||||
return require('../../../../admin/src/initializer.js');
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
@ -89,7 +89,7 @@ const initializer = (() => {
|
||||
// Require the plugin's lifecycle
|
||||
const lifecycles = (() => {
|
||||
try {
|
||||
return require('../../../../admin/src/lifecycles.js'); // eslint-disable-line import/no-unresolved
|
||||
return require('../../../../admin/src/lifecycles.js');
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -10,7 +10,6 @@ import PropTypes from 'prop-types';
|
||||
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/anchor-is-valid */
|
||||
class GlobalPagination extends React.Component {
|
||||
getLastPageNumber = () => Math.ceil(this.props.count / this.props.params._limit) || 1;
|
||||
|
||||
|
||||
@ -11,7 +11,6 @@ import cn from 'classnames';
|
||||
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/no-autofocus */
|
||||
class InputAddon extends React.Component {
|
||||
state = { isFocused: false };
|
||||
|
||||
|
||||
@ -12,8 +12,6 @@ import cn from 'classnames';
|
||||
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/no-autofocus */
|
||||
/* eslint-disable jsx-a11y/label-has-for */
|
||||
class InputCheckbox extends React.Component {
|
||||
handleChange = () => {
|
||||
const target = {
|
||||
|
||||
@ -11,7 +11,6 @@ import cn from 'classnames';
|
||||
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/no-autofocus */
|
||||
class InputEmail extends React.Component {
|
||||
state = { isFocused: false };
|
||||
|
||||
|
||||
@ -17,7 +17,6 @@ import InputFileDetails from '../InputFileDetails';
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable react/jsx-handler-names */
|
||||
/* eslint-disable jsx-a11y/label-has-for */
|
||||
class InputFile extends React.Component {
|
||||
state = {
|
||||
didDeleteFile: false,
|
||||
@ -60,7 +59,7 @@ class InputFile extends React.Component {
|
||||
type: 'file',
|
||||
value,
|
||||
};
|
||||
|
||||
|
||||
this.inputFile.value = '';
|
||||
this.setState({ isUploading: !this.state.isUploading });
|
||||
this.props.onChange({ target });
|
||||
@ -105,7 +104,7 @@ class InputFile extends React.Component {
|
||||
const {value} = this.props;
|
||||
|
||||
if (!value ||
|
||||
(isArray(value) && value.length === 0) ||
|
||||
(isArray(value) && value.length === 0) ||
|
||||
(isObject(value) && Object.keys(value).length === 0)
|
||||
) {
|
||||
return false;
|
||||
|
||||
@ -6,10 +6,9 @@ import cn from 'classnames';
|
||||
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/no-autofocus */
|
||||
function InputNumber(props) {
|
||||
const formattedPlaceholder = props.placeholder === '' ? 'app.utils.placeholder.defaultMessage' : props.placeholder;
|
||||
|
||||
|
||||
return (
|
||||
<FormattedMessage id={formattedPlaceholder} defaultMessage={formattedPlaceholder}>
|
||||
{(message) => (
|
||||
|
||||
@ -12,7 +12,6 @@ import cn from 'classnames';
|
||||
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/no-autofocus */
|
||||
class InputPassword extends React.Component {
|
||||
state = { showPassword: false };
|
||||
|
||||
|
||||
@ -12,7 +12,6 @@ import cn from 'classnames';
|
||||
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/no-autofocus */
|
||||
class InputSearch extends React.Component {
|
||||
state = { isFocused: false };
|
||||
|
||||
|
||||
@ -15,7 +15,6 @@ import SelectOption from '../SelectOption';
|
||||
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/no-autofocus */
|
||||
function InputSelect(props) {
|
||||
return (
|
||||
<select
|
||||
|
||||
@ -4,7 +4,6 @@ import { isEmpty } from 'lodash';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import cn from 'classnames';
|
||||
|
||||
/* eslint-disable jsx-a11y/no-autofocus */
|
||||
import styles from './styles.scss';
|
||||
|
||||
function InputText(props) {
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/* eslint-disable jsx-a11y/no-autofocus */
|
||||
import React from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { isEmpty } from 'lodash';
|
||||
|
||||
@ -15,7 +15,6 @@ import InputSpacer from '../InputSpacer';
|
||||
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/no-autofocus */
|
||||
class InputTextWithErrors extends React.Component {
|
||||
// eslint-disable-line react/prefer-stateless-function
|
||||
state = { errors: [], hasInitialValue: false };
|
||||
|
||||
@ -9,7 +9,6 @@ import { isEmpty } from 'lodash';
|
||||
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/no-autofocus */
|
||||
class InputToggle extends React.Component {
|
||||
handleClick = (e) => {
|
||||
const target = {
|
||||
|
||||
@ -6,7 +6,6 @@ import cn from 'classnames';
|
||||
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/label-has-for */
|
||||
function Label(props) {
|
||||
let content = props.children;
|
||||
|
||||
|
||||
@ -14,7 +14,6 @@ import GlobalPagination from '../GlobalPagination';
|
||||
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/label-has-for */
|
||||
function PageFooter(props) {
|
||||
return (
|
||||
<div className={cn('row', styles.pageFooter)} style={props.style}>
|
||||
|
||||
@ -161,9 +161,9 @@ module.exports = ({ models, target, plugin = false }, ctx) => {
|
||||
|
||||
const FK = _.findKey(target.attributes, details => {
|
||||
if (
|
||||
details.hasOwnProperty('model') &&
|
||||
_.has(details, 'model') &&
|
||||
details.model === model &&
|
||||
details.hasOwnProperty('via') &&
|
||||
_.has(details, 'via') &&
|
||||
details.via === name
|
||||
) {
|
||||
return details;
|
||||
@ -841,7 +841,7 @@ module.exports = ({ models, target, plugin = false }, ctx) => {
|
||||
_.keyBy(
|
||||
_.filter(definition.attributes, (value, key) => {
|
||||
if (
|
||||
value.hasOwnProperty('columnName') &&
|
||||
_.has(value, 'columnName') &&
|
||||
!_.isEmpty(value.columnName) &&
|
||||
value.columnName !== key
|
||||
) {
|
||||
|
||||
@ -9,7 +9,7 @@ const path = require('path');
|
||||
|
||||
// Externals
|
||||
const co = require('co');
|
||||
const render = require('koa-ejs'); // eslint-disable-line import/no-unresolved
|
||||
const render = require('koa-ejs');
|
||||
|
||||
/**
|
||||
* EJS hook
|
||||
|
||||
@ -7,7 +7,6 @@
|
||||
// Core
|
||||
const util = require('util');
|
||||
/* eslint-disable prefer-template */
|
||||
/* eslint-disable import/no-unresolved */
|
||||
|
||||
// Public node modules.
|
||||
const _ = require('lodash');
|
||||
|
||||
@ -27,7 +27,7 @@ module.exports = strapi => {
|
||||
if (_.isPlainObject(views) && !_.isEmpty(views)) {
|
||||
const opts = _.clone(views);
|
||||
|
||||
if (opts.hasOwnProperty('default')) {
|
||||
if (_.has(opts, 'default')) {
|
||||
opts.extension = opts.default;
|
||||
delete opts.default;
|
||||
}
|
||||
|
||||
@ -7,7 +7,6 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
/* eslint-disable jsx-a11y/media-has-caption */
|
||||
const Video = props => {
|
||||
const { height, src, width } = props.contentState.getEntity(props.entityKey).getData();
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ import PropTypes from 'prop-types';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
|
||||
import styles from './styles.scss';
|
||||
/* eslint-disable jsx-a11y/label-has-for */
|
||||
|
||||
const WysiwygBottomControls = ({ isPreviewMode, onChange, onClick }) => {
|
||||
const browse = (
|
||||
<FormattedMessage id="components.WysiwygBottomControls.uploadFiles.browse">
|
||||
|
||||
@ -7,7 +7,6 @@
|
||||
import React from 'react';
|
||||
import styles from './styles.scss';
|
||||
|
||||
/* eslint-disable jsx-a11y/label-has-for */
|
||||
const WysiwygDropUpload = (props) => {
|
||||
return (
|
||||
<label
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { has } from 'lodash';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
|
||||
import pluginId from '../../pluginId';
|
||||
@ -53,7 +54,7 @@ class AttributesPickerModal extends React.Component {
|
||||
const appPlugins = plugins;
|
||||
|
||||
return attributes.filter(attr => {
|
||||
if (appPlugins.hasOwnProperty('upload')) {
|
||||
if (has(appPlugins, 'upload')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -381,8 +381,8 @@ module.exports = {
|
||||
(acc, curr) => {
|
||||
const attribute = attributes[curr];
|
||||
const isField =
|
||||
!attribute.hasOwnProperty('model') &&
|
||||
!attribute.hasOwnProperty('collection');
|
||||
!_.has(attribute, 'model') &&
|
||||
!_.has(attribute, 'collection');
|
||||
|
||||
if (attribute.required) {
|
||||
acc.required.push(curr);
|
||||
@ -1550,8 +1550,8 @@ module.exports = {
|
||||
.map(attr => {
|
||||
const attribute = modelAttributes[attr];
|
||||
const isField =
|
||||
!attribute.hasOwnProperty('model') &&
|
||||
!attribute.hasOwnProperty('collection');
|
||||
!_.has(attribute, 'model') &&
|
||||
!_.has(attribute, 'collection');
|
||||
|
||||
if (!isField) {
|
||||
const name = attribute.model || attribute.collection;
|
||||
@ -1758,7 +1758,7 @@ module.exports = {
|
||||
mergeComponents: (initObj, srcObj) => {
|
||||
const cleanedObj = Object.keys(_.get(initObj, 'schemas', {})).reduce(
|
||||
(acc, current) => {
|
||||
const targetObj = _.get(srcObj, ['schemas'], {}).hasOwnProperty(current)
|
||||
const targetObj = _.has(_.get(srcObj, ['schemas'], {}), current)
|
||||
? srcObj
|
||||
: initObj;
|
||||
|
||||
@ -1778,7 +1778,7 @@ module.exports = {
|
||||
|
||||
mergePaths: function(initObj, srcObj) {
|
||||
return Object.keys(initObj.paths).reduce((acc, current) => {
|
||||
if (_.get(srcObj, ['paths'], {}).hasOwnProperty(current)) {
|
||||
if (_.has(_.get(srcObj, ['paths'], {}), current)) {
|
||||
const verbs = Object.keys(initObj.paths[current]).reduce(
|
||||
(acc1, curr) => {
|
||||
const verb = this.mergeVerbObject(
|
||||
|
||||
@ -59,6 +59,7 @@ module.exports = {
|
||||
|
||||
this.loaders[name] = new DataLoader(
|
||||
keys => {
|
||||
// eslint-disable-next-line no-async-promise-executor
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
// Extract queries from keys and merge similar queries.
|
||||
|
||||
@ -23,10 +23,11 @@ module.exports = {
|
||||
// Extract custom resolver or type description.
|
||||
const { resolver: handler = {} } = _schema;
|
||||
|
||||
let queryName = `${action}${_.capitalize(name)}`;
|
||||
|
||||
let queryName;
|
||||
if (_.has(handler, `Mutation.${action}`)) {
|
||||
queryName = action;
|
||||
} else {
|
||||
queryName = `${action}${_.capitalize(name)}`;
|
||||
}
|
||||
|
||||
// Retrieve policies.
|
||||
|
||||
@ -224,14 +224,20 @@ const schemaBuilder = {
|
||||
|
||||
switch (type) {
|
||||
case 'Mutation': {
|
||||
// TODO: Verify this...
|
||||
const [name, action] = acc[type][resolver].split('.');
|
||||
const normalizedName = _.toLower(name);
|
||||
let name, action;
|
||||
if (_.isString(acc[type][resolver])) {
|
||||
[name, action] = acc[type][resolver].split('.');
|
||||
} else if (
|
||||
_.isPlainObject(acc[type][resolver]) &&
|
||||
_.isString(acc[type][resolver].handler)
|
||||
) {
|
||||
[name, action] = acc[type][resolver].handler.split('.');
|
||||
}
|
||||
|
||||
acc[type][resolver] = Mutation.composeMutationResolver({
|
||||
_schema: strapi.plugins.graphql.config._schema.graphql,
|
||||
plugin,
|
||||
name: normalizedName,
|
||||
name: _.toLower(name),
|
||||
action,
|
||||
});
|
||||
break;
|
||||
|
||||
@ -21,7 +21,6 @@ import WithInput from '../WithInput';
|
||||
/* eslint-disable react/require-default-props */
|
||||
class InputPassword extends React.Component {
|
||||
// eslint-disable-line react/prefer-stateless-function
|
||||
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
|
||||
@ -45,7 +45,7 @@ class RowLanguage extends React.Component {
|
||||
onClick={this.handleToggleWarning}
|
||||
id={this.props.name}
|
||||
/>
|
||||
); // eslint-disable-line jsx-a11y/no-static-element-interactions
|
||||
);
|
||||
// format the locale to
|
||||
const defaultLanguageArray = formatLanguageLocale(this.props.name);
|
||||
const flag = getFlag(defaultLanguageArray);
|
||||
|
||||
@ -153,7 +153,6 @@ export class HomePage extends React.Component {
|
||||
}
|
||||
|
||||
/* eslint-disable react/sort-comp */
|
||||
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
||||
addConnection = e => {
|
||||
e.preventDefault();
|
||||
const newData = {};
|
||||
|
||||
@ -11,7 +11,6 @@ import Label from './Label';
|
||||
import P from './P';
|
||||
|
||||
/* eslint-disable react/no-string-refs */
|
||||
/* eslint-disable jsx-a11y/label-has-for */
|
||||
/* eslint-disable react/jsx-tag-spacing */
|
||||
class PluginInputFile extends React.PureComponent {
|
||||
state = { isDraging: false };
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
* Module dependencies
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-unresolved */
|
||||
/* eslint-disable prefer-template */
|
||||
// Public node modules.
|
||||
const _ = require('lodash');
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
* Module dependencies
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-unresolved */
|
||||
/* eslint-disable prefer-template */
|
||||
// Public node modules.
|
||||
const _ = require('lodash');
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
* Module dependencies
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-unresolved */
|
||||
/* eslint-disable prefer-template */
|
||||
// Public node modules.
|
||||
const _ = require('lodash');
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
* Module dependencies
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-unresolved */
|
||||
/* eslint-disable no-unused-vars */
|
||||
// Public node modules.
|
||||
const _ = require('lodash');
|
||||
|
||||
@ -5,7 +5,6 @@
|
||||
*/
|
||||
|
||||
// Public node modules.
|
||||
/* eslint-disable import/no-unresolved */
|
||||
/* eslint-disable prefer-template */
|
||||
const cloudinary = require('cloudinary').v2;
|
||||
const intoStream = require('into-stream');
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
* Module dependencies
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-unresolved */
|
||||
// Public node modules.
|
||||
const pkgcloud = require('pkgcloud');
|
||||
const streamifier = require('streamifier');
|
||||
|
||||
@ -15,7 +15,7 @@ module.exports = (api, controller) => {
|
||||
throw new Error('Should be an object');
|
||||
}
|
||||
|
||||
if (_.isObject(controller) && controller.hasOwnProperty('identity')) {
|
||||
if (_.isObject(controller) && _.has(controller, 'identity')) {
|
||||
controller = controller.identity.toLowerCase();
|
||||
} else if (_.isString(controller)) {
|
||||
controller = controller.toLowerCase();
|
||||
|
||||
@ -52,9 +52,9 @@ module.exports = {
|
||||
}
|
||||
|
||||
if (
|
||||
(association.hasOwnProperty('collection') &&
|
||||
(_.has(association, 'collection') &&
|
||||
association.collection === '*') ||
|
||||
(association.hasOwnProperty('model') && association.model === '*')
|
||||
(_.has(association, 'model') && association.model === '*')
|
||||
) {
|
||||
if (association.model) {
|
||||
types.current = 'morphToD';
|
||||
@ -80,16 +80,16 @@ module.exports = {
|
||||
_.forIn(allModels, model => {
|
||||
_.forIn(model.attributes, attribute => {
|
||||
if (
|
||||
attribute.hasOwnProperty('via') &&
|
||||
_.has(attribute, 'via') &&
|
||||
attribute.via === key &&
|
||||
attribute.model === currentModelName
|
||||
) {
|
||||
if (attribute.hasOwnProperty('collection')) {
|
||||
if (_.has(attribute, 'collection')) {
|
||||
types.other = 'collection';
|
||||
|
||||
// Break loop
|
||||
return false;
|
||||
} else if (attribute.hasOwnProperty('model')) {
|
||||
} else if (_.has(attribute, 'model')) {
|
||||
types.other = 'model';
|
||||
|
||||
// Break loop
|
||||
@ -99,8 +99,8 @@ module.exports = {
|
||||
});
|
||||
});
|
||||
} else if (
|
||||
association.hasOwnProperty('via') &&
|
||||
association.hasOwnProperty('collection')
|
||||
_.has(association, 'via') &&
|
||||
_.has(association, 'collection')
|
||||
) {
|
||||
const relatedAttribute =
|
||||
models[association.collection].attributes[association.via];
|
||||
@ -120,31 +120,31 @@ module.exports = {
|
||||
types.current = 'collection';
|
||||
|
||||
if (
|
||||
relatedAttribute.hasOwnProperty('collection') &&
|
||||
_.has(relatedAttribute, 'collection') &&
|
||||
relatedAttribute.collection !== '*' &&
|
||||
relatedAttribute.hasOwnProperty('via')
|
||||
_.has(relatedAttribute, 'via')
|
||||
) {
|
||||
types.other = 'collection';
|
||||
} else if (
|
||||
relatedAttribute.hasOwnProperty('collection') &&
|
||||
_.has(relatedAttribute, 'collection') &&
|
||||
relatedAttribute.collection !== '*' &&
|
||||
!relatedAttribute.hasOwnProperty('via')
|
||||
!_.has(relatedAttribute, 'via')
|
||||
) {
|
||||
types.other = 'collectionD';
|
||||
} else if (
|
||||
relatedAttribute.hasOwnProperty('model') &&
|
||||
_.has(relatedAttribute, 'model') &&
|
||||
relatedAttribute.model !== '*'
|
||||
) {
|
||||
types.other = 'model';
|
||||
} else if (
|
||||
relatedAttribute.hasOwnProperty('collection') ||
|
||||
relatedAttribute.hasOwnProperty('model')
|
||||
_.has(relatedAttribute, 'collection') ||
|
||||
_.has(relatedAttribute, 'model')
|
||||
) {
|
||||
types.other = 'morphTo';
|
||||
}
|
||||
} else if (
|
||||
association.hasOwnProperty('via') &&
|
||||
association.hasOwnProperty('model')
|
||||
_.has(association, 'via') &&
|
||||
_.has(association, 'model')
|
||||
) {
|
||||
types.current = 'modelD';
|
||||
|
||||
@ -153,32 +153,32 @@ module.exports = {
|
||||
const attribute = model.attributes[association.via];
|
||||
|
||||
if (
|
||||
attribute.hasOwnProperty('via') &&
|
||||
_.has(attribute, 'via') &&
|
||||
attribute.via === key &&
|
||||
attribute.hasOwnProperty('collection') &&
|
||||
_.has(attribute, 'collection') &&
|
||||
attribute.collection !== '*'
|
||||
) {
|
||||
types.other = 'collection';
|
||||
} else if (
|
||||
attribute.hasOwnProperty('model') &&
|
||||
_.has(attribute, 'model') &&
|
||||
attribute.model !== '*'
|
||||
) {
|
||||
types.other = 'model';
|
||||
} else if (
|
||||
attribute.hasOwnProperty('collection') ||
|
||||
attribute.hasOwnProperty('model')
|
||||
_.has(attribute, 'collection') ||
|
||||
_.has(attribute, 'model')
|
||||
) {
|
||||
types.other = 'morphTo';
|
||||
}
|
||||
} else if (association.hasOwnProperty('model')) {
|
||||
} else if (_.has(association, 'model')) {
|
||||
types.current = 'model';
|
||||
|
||||
// We have to find if they are a model linked to this key
|
||||
_.forIn(models, model => {
|
||||
_.forIn(model.attributes, attribute => {
|
||||
if (attribute.hasOwnProperty('via') && attribute.via === key) {
|
||||
if (_.has(attribute, 'via') && attribute.via === key) {
|
||||
if (
|
||||
attribute.hasOwnProperty('collection') &&
|
||||
_.has(attribute, 'collection') &&
|
||||
attribute.collection === currentModelName
|
||||
) {
|
||||
types.other = 'collection';
|
||||
@ -186,7 +186,7 @@ module.exports = {
|
||||
// Break loop
|
||||
return false;
|
||||
} else if (
|
||||
attribute.hasOwnProperty('model') &&
|
||||
_.has(attribute, 'model') &&
|
||||
attribute.model === currentModelName
|
||||
) {
|
||||
types.other = 'modelD';
|
||||
@ -197,15 +197,15 @@ module.exports = {
|
||||
}
|
||||
});
|
||||
});
|
||||
} else if (association.hasOwnProperty('collection')) {
|
||||
} else if (_.has(association, 'collection')) {
|
||||
types.current = 'collectionD';
|
||||
|
||||
// We have to find if they are a model linked to this key
|
||||
_.forIn(models, model => {
|
||||
_.forIn(model.attributes, attribute => {
|
||||
if (attribute.hasOwnProperty('via') && attribute.via === key) {
|
||||
if (_.has(attribute, 'via') && attribute.via === key) {
|
||||
if (
|
||||
attribute.hasOwnProperty('collection') &&
|
||||
_.has(attribute, 'collection') &&
|
||||
attribute.collection === currentModelName
|
||||
) {
|
||||
types.other = 'collection';
|
||||
@ -213,7 +213,7 @@ module.exports = {
|
||||
// Break loop
|
||||
return false;
|
||||
} else if (
|
||||
attribute.hasOwnProperty('model') &&
|
||||
_.has(attribute, 'model') &&
|
||||
attribute.model === currentModelName
|
||||
) {
|
||||
types.other = 'modelD';
|
||||
@ -258,7 +258,7 @@ module.exports = {
|
||||
};
|
||||
} else if (
|
||||
types.current === 'morphTo' &&
|
||||
(types.other === 'model' || association.hasOwnProperty('model'))
|
||||
(types.other === 'model' || _.has(association, 'model'))
|
||||
) {
|
||||
return {
|
||||
nature: 'manyMorphToOne',
|
||||
@ -267,7 +267,7 @@ module.exports = {
|
||||
} else if (
|
||||
types.current === 'morphTo' &&
|
||||
(types.other === 'collection' ||
|
||||
association.hasOwnProperty('collection'))
|
||||
_.has(association, 'collection'))
|
||||
) {
|
||||
return {
|
||||
nature: 'manyMorphToMany',
|
||||
@ -557,7 +557,7 @@ module.exports = {
|
||||
}, {})
|
||||
);
|
||||
|
||||
if (!models.hasOwnProperty(model)) {
|
||||
if (!_.has(models, model)) {
|
||||
return this.log.error(`The model ${model} can't be found.`);
|
||||
}
|
||||
|
||||
|
||||
4
packages/strapi/lib/core/bootstrap.js
vendored
4
packages/strapi/lib/core/bootstrap.js
vendored
@ -269,7 +269,7 @@ module.exports = function(strapi) {
|
||||
);
|
||||
acc[current] = !_.isObject(currentSettings) ? {} : currentSettings;
|
||||
|
||||
if (!acc[current].hasOwnProperty('enabled')) {
|
||||
if (!_.has(acc[current], 'enabled')) {
|
||||
strapi.log.warn(
|
||||
`(middleware:${current}) wasn't loaded due to missing key \`enabled\` in the configuration`
|
||||
);
|
||||
@ -295,7 +295,7 @@ module.exports = function(strapi) {
|
||||
|
||||
acc[current] = !_.isObject(currentSettings) ? {} : currentSettings;
|
||||
|
||||
if (!acc[current].hasOwnProperty('enabled')) {
|
||||
if (!_.has(acc[current], 'enabled')) {
|
||||
strapi.log.warn(
|
||||
`(hook:${current}) wasn't loaded due to missing key \`enabled\` in the configuration`
|
||||
);
|
||||
|
||||
@ -54,7 +54,7 @@ module.exports = strapi => {
|
||||
// Exclude routes with prefix.
|
||||
const excludedRoutes = _.omitBy(
|
||||
plugin.config.routes,
|
||||
o => !o.config.hasOwnProperty('prefix')
|
||||
o => !_.has(o.config, 'prefix')
|
||||
);
|
||||
|
||||
_.forEach(
|
||||
|
||||
@ -24,7 +24,7 @@ module.exports = strapi => {
|
||||
strapi.config.hooks.session.secretKeys;
|
||||
|
||||
if (
|
||||
strapi.config.middleware.settings.session.hasOwnProperty('client') &&
|
||||
_.has(strapi.config.middleware.settings.session, 'client') &&
|
||||
_.isString(strapi.config.middleware.settings.session.client) &&
|
||||
strapi.config.middleware.settings.session.client !== 'cookie'
|
||||
) {
|
||||
@ -52,7 +52,7 @@ module.exports = strapi => {
|
||||
});
|
||||
}
|
||||
} else if (
|
||||
strapi.config.middleware.settings.session.hasOwnProperty('client') &&
|
||||
_.has(strapi.config.middleware.settings.session, 'client') &&
|
||||
_.isString(strapi.config.middleware.settings.session.client) &&
|
||||
strapi.config.middleware.settings.session.client === 'cookie'
|
||||
) {
|
||||
@ -159,6 +159,7 @@ module.exports = strapi => {
|
||||
},
|
||||
|
||||
requireStore(store) {
|
||||
// eslint-disable-next-line no-useless-catch
|
||||
try {
|
||||
return require(path.resolve(
|
||||
strapi.config.appPath,
|
||||
|
||||
@ -1,12 +1,11 @@
|
||||
'use strict';
|
||||
|
||||
/* eslint-disable import/order */
|
||||
/* eslint-disable no-unused-vars */
|
||||
/* eslint-disable prefer-template */
|
||||
// Dependencies.
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { map } = require('async'); // eslint-disable-line import/order
|
||||
const { map } = require('async');
|
||||
const {
|
||||
setWith,
|
||||
merge,
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
const configure = require('enzyme').configure;
|
||||
const Adapter = require('enzyme-adapter-react-16');
|
||||
|
||||
|
||||
121
yarn.lock
121
yarn.lock
@ -2140,7 +2140,7 @@
|
||||
pretty-format "^24.0.0"
|
||||
redent "^3.0.0"
|
||||
|
||||
"@testing-library/react-hooks@^2.0.1":
|
||||
"@testing-library/react-hooks@^2.0.0":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-2.0.1.tgz#1c3ec40882d0830df3078ddae0056fdf7366c81d"
|
||||
integrity sha512-MLTvWX7/csq/uQzP4WJntGz0QJDq6H4EzjV0VTL5YJE7KBZbaQ9DGT0IbtjuB33L4R4YKZ55rGZQ5eL+WiZtQA==
|
||||
@ -2149,7 +2149,7 @@
|
||||
"@types/react" ">=16.9.0"
|
||||
"@types/react-test-renderer" ">=16.9.0"
|
||||
|
||||
"@testing-library/react@^9.1.1":
|
||||
"@testing-library/react@^9.1.0":
|
||||
version "9.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.1.4.tgz#4cc1a228a944c0f468ee501e7da1651d8bbd9902"
|
||||
integrity sha512-fQ/PXZoLcmnS1W5ZiM3P7XBy2x6Hm9cJAT/ZDuZKzJ1fS1rN3j31p7ReAqUe3N1kJ46sNot0n1oiGbz7FPU+FA==
|
||||
@ -2255,9 +2255,9 @@
|
||||
"@types/jquery" "*"
|
||||
|
||||
"@types/chai@*":
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.1.tgz#de162553aceca778d989929d821c5d4942921ebc"
|
||||
integrity sha512-LDKlQW/V8bQr5p9aoHye9p7x9faxq0GVeWAkn/Zgyyn848LIAzuR1sHQjGmUBFUpINuGWDG2NTM/ofA2aLMIew==
|
||||
version "4.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.2.tgz#6b825013863d04868c15624ec8b7fdced88a47c6"
|
||||
integrity sha512-8V2aCcPM3WLuJvJpF6N60uUvdZb7NHjpjQlLk1QmZbTP4XZET/FX0c3TJ3K7qt4L98FS1Pifa8BVofTVuJFWVA==
|
||||
|
||||
"@types/chai@4.0.8":
|
||||
version "4.0.8"
|
||||
@ -2877,7 +2877,7 @@ acorn-globals@^4.1.0:
|
||||
acorn "^6.0.1"
|
||||
acorn-walk "^6.0.1"
|
||||
|
||||
acorn-jsx@^5.0.0:
|
||||
acorn-jsx@^5.0.2:
|
||||
version "5.0.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.2.tgz#84b68ea44b373c4f8686023a551f61a21b7c4a4f"
|
||||
integrity sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==
|
||||
@ -2892,7 +2892,7 @@ acorn@^5.5.3:
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
|
||||
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
|
||||
|
||||
acorn@^6.0.1, acorn@^6.0.7, acorn@^6.2.1:
|
||||
acorn@^6.0.1, acorn@^6.2.1:
|
||||
version "6.3.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e"
|
||||
integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==
|
||||
@ -2979,7 +2979,7 @@ ajv@^5.1.0:
|
||||
fast-json-stable-stringify "^2.0.0"
|
||||
json-schema-traverse "^0.3.0"
|
||||
|
||||
ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1:
|
||||
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5:
|
||||
version "6.10.2"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
|
||||
integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
|
||||
@ -3618,7 +3618,7 @@ aws4@^1.6.0, aws4@^1.8.0:
|
||||
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
|
||||
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
|
||||
|
||||
babel-eslint@^10.0.1:
|
||||
babel-eslint@^10.0.0:
|
||||
version "10.0.3"
|
||||
resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a"
|
||||
integrity sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==
|
||||
@ -6731,17 +6731,17 @@ escodegen@1.x.x, escodegen@^1.9.1:
|
||||
optionalDependencies:
|
||||
source-map "~0.6.1"
|
||||
|
||||
eslint-config-prettier@^6.0.0:
|
||||
eslint-config-prettier@^6.2.0:
|
||||
version "6.2.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.2.0.tgz#80e0b8714e3f6868c4ac2a25fbf39c02e73527a7"
|
||||
integrity sha512-VLsgK/D+S/FEsda7Um1+N8FThec6LqE3vhcMyp8mlmto97y3fGf3DX7byJexGuOb1QY0Z/zz222U5t+xSfcZDQ==
|
||||
dependencies:
|
||||
get-stdin "^6.0.0"
|
||||
|
||||
eslint-plugin-react-hooks@^1.6.1:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04"
|
||||
integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==
|
||||
eslint-plugin-react-hooks@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.0.1.tgz#e898ec26a0a335af6f7b0ad1f0bedda7143ed756"
|
||||
integrity sha512-xir+3KHKo86AasxlCV8AHRtIZPHljqCRRUYgASkbatmt0fad4+5GgC7zkT7o/06hdKM6MIwp8giHVXqBPaarHQ==
|
||||
|
||||
eslint-plugin-react@^7.14.0:
|
||||
version "7.14.3"
|
||||
@ -6758,7 +6758,7 @@ eslint-plugin-react@^7.14.0:
|
||||
prop-types "^15.7.2"
|
||||
resolve "^1.10.1"
|
||||
|
||||
eslint-plugin-redux-saga@^1.0.0:
|
||||
eslint-plugin-redux-saga@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-redux-saga/-/eslint-plugin-redux-saga-1.1.0.tgz#e47e5572e4f951eb5bbda11cf7e07bea391a468a"
|
||||
integrity sha512-h6QCo7qQGUQR+sXnkgU4aTo8vMI/I0tttM3fk0jdkP7wqTNHGvSyJLGFFchwiBqg6Tfg64zK68tzSq31wesS6w==
|
||||
@ -6771,68 +6771,77 @@ eslint-scope@^4.0.3:
|
||||
esrecurse "^4.1.0"
|
||||
estraverse "^4.1.1"
|
||||
|
||||
eslint-utils@^1.3.1:
|
||||
eslint-scope@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"
|
||||
integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==
|
||||
dependencies:
|
||||
esrecurse "^4.1.0"
|
||||
estraverse "^4.1.1"
|
||||
|
||||
eslint-utils@^1.4.2:
|
||||
version "1.4.2"
|
||||
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab"
|
||||
integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==
|
||||
dependencies:
|
||||
eslint-visitor-keys "^1.0.0"
|
||||
|
||||
eslint-visitor-keys@^1.0.0:
|
||||
eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
|
||||
integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
|
||||
|
||||
eslint@^5.16.0:
|
||||
version "5.16.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea"
|
||||
integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==
|
||||
eslint@^6.3.0:
|
||||
version "6.3.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.3.0.tgz#1f1a902f67bfd4c354e7288b81e40654d927eb6a"
|
||||
integrity sha512-ZvZTKaqDue+N8Y9g0kp6UPZtS4FSY3qARxBs7p4f0H0iof381XHduqVerFWtK8DPtKmemqbqCFENWSQgPR/Gow==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
ajv "^6.9.1"
|
||||
ajv "^6.10.0"
|
||||
chalk "^2.1.0"
|
||||
cross-spawn "^6.0.5"
|
||||
debug "^4.0.1"
|
||||
doctrine "^3.0.0"
|
||||
eslint-scope "^4.0.3"
|
||||
eslint-utils "^1.3.1"
|
||||
eslint-visitor-keys "^1.0.0"
|
||||
espree "^5.0.1"
|
||||
eslint-scope "^5.0.0"
|
||||
eslint-utils "^1.4.2"
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
espree "^6.1.1"
|
||||
esquery "^1.0.1"
|
||||
esutils "^2.0.2"
|
||||
file-entry-cache "^5.0.1"
|
||||
functional-red-black-tree "^1.0.1"
|
||||
glob "^7.1.2"
|
||||
glob-parent "^5.0.0"
|
||||
globals "^11.7.0"
|
||||
ignore "^4.0.6"
|
||||
import-fresh "^3.0.0"
|
||||
imurmurhash "^0.1.4"
|
||||
inquirer "^6.2.2"
|
||||
js-yaml "^3.13.0"
|
||||
inquirer "^6.4.1"
|
||||
is-glob "^4.0.0"
|
||||
js-yaml "^3.13.1"
|
||||
json-stable-stringify-without-jsonify "^1.0.1"
|
||||
levn "^0.3.0"
|
||||
lodash "^4.17.11"
|
||||
lodash "^4.17.14"
|
||||
minimatch "^3.0.4"
|
||||
mkdirp "^0.5.1"
|
||||
natural-compare "^1.4.0"
|
||||
optionator "^0.8.2"
|
||||
path-is-inside "^1.0.2"
|
||||
progress "^2.0.0"
|
||||
regexpp "^2.0.1"
|
||||
semver "^5.5.1"
|
||||
strip-ansi "^4.0.0"
|
||||
strip-json-comments "^2.0.1"
|
||||
semver "^6.1.2"
|
||||
strip-ansi "^5.2.0"
|
||||
strip-json-comments "^3.0.1"
|
||||
table "^5.2.3"
|
||||
text-table "^0.2.0"
|
||||
v8-compile-cache "^2.0.3"
|
||||
|
||||
espree@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a"
|
||||
integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==
|
||||
espree@^6.1.1:
|
||||
version "6.1.1"
|
||||
resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.1.tgz#7f80e5f7257fc47db450022d723e356daeb1e5de"
|
||||
integrity sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==
|
||||
dependencies:
|
||||
acorn "^6.0.7"
|
||||
acorn-jsx "^5.0.0"
|
||||
eslint-visitor-keys "^1.0.0"
|
||||
acorn "^7.0.0"
|
||||
acorn-jsx "^5.0.2"
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
|
||||
esprima@2.7.x, esprima@^2.7.1:
|
||||
version "2.7.3"
|
||||
@ -9187,7 +9196,7 @@ init-package-json@^1.10.3:
|
||||
validate-npm-package-license "^3.0.1"
|
||||
validate-npm-package-name "^3.0.0"
|
||||
|
||||
inquirer@^6.2.0, inquirer@^6.2.1, inquirer@^6.2.2, inquirer@^6.3.1:
|
||||
inquirer@^6.2.0, inquirer@^6.2.1, inquirer@^6.2.2, inquirer@^6.3.1, inquirer@^6.4.1:
|
||||
version "6.5.2"
|
||||
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca"
|
||||
integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==
|
||||
@ -10365,7 +10374,7 @@ js-levenshtein@^1.1.3:
|
||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
||||
|
||||
js-yaml@3.x, js-yaml@^3.13.0, js-yaml@^3.13.1:
|
||||
js-yaml@3.x, js-yaml@^3.13.1:
|
||||
version "3.13.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
|
||||
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
|
||||
@ -11009,7 +11018,7 @@ lines-and-columns@^1.1.6:
|
||||
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
|
||||
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
|
||||
|
||||
lint-staged@^9.1.0:
|
||||
lint-staged@^9.2.0:
|
||||
version "9.2.5"
|
||||
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.2.5.tgz#5a3e1e0a539a403bd7f88542bc3d34ce52efdbb3"
|
||||
integrity sha512-d99gTBFMJ29159+9iRvaMEQstmNcPAbQbhHSYw6D/1FncvFdIj8lWHztaq3Uq+tbZPABHXQ/fyN7Rp1QwF8HIw==
|
||||
@ -12451,9 +12460,9 @@ node-pre-gyp@^0.12.0:
|
||||
tar "^4"
|
||||
|
||||
node-releases@^1.1.29:
|
||||
version "1.1.29"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.29.tgz#86a57c6587a30ecd6726449e5d293466b0a0bb86"
|
||||
integrity sha512-R5bDhzh6I+tpi/9i2hrrvGJ3yKPYzlVOORDkXhnZuwi5D3q1I5w4vYy24PJXTcLk9Q0kws9TO77T75bcK8/ysQ==
|
||||
version "1.1.30"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.30.tgz#35eebf129c63baeb6d8ddeda3c35b05abfd37f7f"
|
||||
integrity sha512-BHcr1g6NeUH12IL+X3Flvs4IOnl1TL0JczUhEZjDE+FXXPQcVCNr8NEPb01zqGxzhTpdyJL5GXemaCW7aw6Khw==
|
||||
dependencies:
|
||||
semver "^5.3.0"
|
||||
|
||||
@ -17597,7 +17606,12 @@ strip-indent@^3.0.0:
|
||||
dependencies:
|
||||
min-indent "^1.0.0"
|
||||
|
||||
strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
|
||||
strip-json-comments@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
|
||||
integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
|
||||
|
||||
strip-json-comments@~2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
|
||||
@ -17924,9 +17938,9 @@ terser@^3.14.1:
|
||||
source-map-support "~0.5.10"
|
||||
|
||||
terser@^4.1.2, terser@^4.1.3:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.0.tgz#0259070576ff34d89c5cd2b8d91055cdce0212d5"
|
||||
integrity sha512-w5CzrvQOwYAH54aG22IrUJI4yX1w62XQmMdEOM6H4w0ii6rc3HJ89fmcOGN5mRwBWfUgaqO7RJTp4aoY/uE+qQ==
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.1.tgz#09820bcb3398299c4b48d9a86aefc65127d0ed65"
|
||||
integrity sha512-pnzH6dnFEsR2aa2SJaKb1uSCl3QmIsJ8dEkj0Fky+2AwMMcC9doMqLOQIH6wVTEKaVfKVvLSk5qxPBEZT9mywg==
|
||||
dependencies:
|
||||
commander "^2.20.0"
|
||||
source-map "~0.6.1"
|
||||
@ -18629,6 +18643,11 @@ v8-compile-cache@2.0.3:
|
||||
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
|
||||
integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==
|
||||
|
||||
v8-compile-cache@^2.0.3:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
|
||||
integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
|
||||
|
||||
v8flags@^3.1.2, v8flags@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user