mirror of
https://github.com/strapi/strapi.git
synced 2025-10-01 19:36:23 +00:00
Merge branch 'master' into fix/5038
This commit is contained in:
commit
eb6fc3578d
@ -2,7 +2,9 @@
|
|||||||
**/build/**
|
**/build/**
|
||||||
**/dist/**
|
**/dist/**
|
||||||
testApp/**
|
testApp/**
|
||||||
packages/strapi-plugin-users-permissions/admin/**
|
|
||||||
packages/strapi-plugin-upload/admin/**
|
|
||||||
packages/strapi-generate-plugin/files/admin/src/**
|
packages/strapi-generate-plugin/files/admin/src/**
|
||||||
|
packages/strapi-helper-plugin/**
|
||||||
|
packages/strapi-plugin-users-permissions/admin/**
|
||||||
.eslintrc.js
|
.eslintrc.js
|
||||||
|
.eslintrc.front.js
|
||||||
|
.eslintrc.back.js
|
||||||
|
22
.eslintrc.back.js
Normal file
22
.eslintrc.back.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
module.exports = {
|
||||||
|
extends: [
|
||||||
|
'eslint:recommended',
|
||||||
|
'prettier',
|
||||||
|
'plugin:import/errors',
|
||||||
|
'plugin:import/warnings',
|
||||||
|
'plugin:node/recommended',
|
||||||
|
],
|
||||||
|
env: {
|
||||||
|
es6: true,
|
||||||
|
node: true,
|
||||||
|
jest: true,
|
||||||
|
},
|
||||||
|
globals: {
|
||||||
|
strapi: false,
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'node/no-unpublished-require': 0,
|
||||||
|
'require-atomic-updates': 0,
|
||||||
|
'no-process-exit': 0,
|
||||||
|
},
|
||||||
|
};
|
132
.eslintrc.front.js
Normal file
132
.eslintrc.front.js
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
module.exports = {
|
||||||
|
parser: 'babel-eslint',
|
||||||
|
extends: [
|
||||||
|
'eslint:recommended',
|
||||||
|
'plugin:react/recommended',
|
||||||
|
'plugin:redux-saga/recommended',
|
||||||
|
'prettier',
|
||||||
|
],
|
||||||
|
plugins: ['react', 'redux-saga', 'react-hooks', 'import', 'jsx-a11y'],
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
commonjs: true,
|
||||||
|
es6: true,
|
||||||
|
jest: true,
|
||||||
|
mocha: true,
|
||||||
|
},
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 2018,
|
||||||
|
ecmaFeatures: {
|
||||||
|
jsx: true,
|
||||||
|
},
|
||||||
|
sourceType: 'module',
|
||||||
|
},
|
||||||
|
globals: {
|
||||||
|
strapi: false,
|
||||||
|
window: false,
|
||||||
|
cy: false,
|
||||||
|
Cypress: false,
|
||||||
|
expect: false,
|
||||||
|
assert: false,
|
||||||
|
chai: false,
|
||||||
|
// TODO: put all this in process.env in webpack to avoid having to set them here
|
||||||
|
REMOTE_URL: true,
|
||||||
|
BACKEND_URL: true,
|
||||||
|
PUBLIC_PATH: true,
|
||||||
|
MODE: true,
|
||||||
|
NODE_ENV: true,
|
||||||
|
},
|
||||||
|
extends: ['airbnb'],
|
||||||
|
settings: {
|
||||||
|
react: {
|
||||||
|
version: '16.5.2',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'generator-star-spacing': 0,
|
||||||
|
'no-console': 0,
|
||||||
|
'require-atomic-updates': 0,
|
||||||
|
'react-hooks/rules-of-hooks': 'error',
|
||||||
|
'react-hooks/exhaustive-deps': 'warn',
|
||||||
|
'arrow-body-style': 0,
|
||||||
|
'arrow-parens': 0,
|
||||||
|
camelcase: 0,
|
||||||
|
'comma-dangle': 0,
|
||||||
|
'consistent-return': [
|
||||||
|
2,
|
||||||
|
{
|
||||||
|
treatUndefinedAsUnspecified: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
indent: [
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
{
|
||||||
|
flatTernaryExpressions: false,
|
||||||
|
SwitchCase: 1,
|
||||||
|
ignoredNodes: [
|
||||||
|
'ConditionalExpression',
|
||||||
|
"VariableDeclarator[kind='const']",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'func-names': ['error', 'never'],
|
||||||
|
'function-paren-newline': 0,
|
||||||
|
'implicit-arrow-linebreak': 0,
|
||||||
|
'import/no-extraneous-dependencies': 0,
|
||||||
|
'import/no-named-as-default': 0,
|
||||||
|
'import/order': 2,
|
||||||
|
'jsx-a11y/click-events-have-key-events': 1,
|
||||||
|
'max-len': [
|
||||||
|
2,
|
||||||
|
{
|
||||||
|
code: 120,
|
||||||
|
ignoreComments: true,
|
||||||
|
ignoreUrls: true,
|
||||||
|
ignoreTrailingComments: true,
|
||||||
|
ignoreStrings: true,
|
||||||
|
ignoreTemplateLiterals: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'newline-before-return': 2,
|
||||||
|
'no-confusing-arrow': 0,
|
||||||
|
'no-else-return': 1,
|
||||||
|
'no-nested-ternary': ['error'],
|
||||||
|
'no-return-assign': 0,
|
||||||
|
'no-param-reassign': 0,
|
||||||
|
'no-plusplus': 0,
|
||||||
|
'no-shadow': 0,
|
||||||
|
'no-underscore-dangle': 0,
|
||||||
|
'no-use-before-define': [
|
||||||
|
'error',
|
||||||
|
{ functions: false, classes: false, variables: false },
|
||||||
|
],
|
||||||
|
'object-curly-newline': [2, { multiline: true, consistent: true }],
|
||||||
|
'operator-linebreak': 0,
|
||||||
|
'padding-line-between-statements': [
|
||||||
|
'error',
|
||||||
|
{ blankLine: 'always', prev: '*', next: 'if' },
|
||||||
|
{ blankLine: 'any', prev: 'block-like', next: 'if' },
|
||||||
|
],
|
||||||
|
'prefer-arrow-callback': 0,
|
||||||
|
'prefer-const': 0,
|
||||||
|
'prefer-destructuring': 0,
|
||||||
|
'prefer-object-spread': 0,
|
||||||
|
'prefer-spread': 0,
|
||||||
|
'space-before-function-paren': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
anonymous: 'never',
|
||||||
|
named: 'never',
|
||||||
|
asyncArrow: 'always',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'react/destructuring-assignment': 0,
|
||||||
|
'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx'] }],
|
||||||
|
'react/forbid-prop-types': 0,
|
||||||
|
'react/jsx-props-no-spreading': 0,
|
||||||
|
'react/jsx-one-expression-per-line': 0,
|
||||||
|
'react/state-in-constructor': 0,
|
||||||
|
'react/static-property-placement': 0,
|
||||||
|
},
|
||||||
|
};
|
146
.eslintrc.js
146
.eslintrc.js
@ -1,140 +1,24 @@
|
|||||||
|
const frontPaths = [
|
||||||
|
'packages/**/admin/src/**/**/*.js',
|
||||||
|
'packages/strapi-helper-plugin/**/*.js',
|
||||||
|
'cypress/**/*.js',
|
||||||
|
'packages/**/test/front/**/*.js',
|
||||||
|
'test/config/front/**/*.js',
|
||||||
|
];
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
parser: 'babel-eslint',
|
|
||||||
extends: [
|
|
||||||
'eslint:recommended',
|
|
||||||
'plugin:react/recommended',
|
|
||||||
'plugin:redux-saga/recommended',
|
|
||||||
'prettier',
|
|
||||||
],
|
|
||||||
plugins: ['react', 'redux-saga', 'react-hooks', 'import', 'jsx-a11y'],
|
|
||||||
env: {
|
|
||||||
browser: true,
|
|
||||||
commonjs: true,
|
|
||||||
es6: true,
|
|
||||||
node: true,
|
|
||||||
jest: true,
|
|
||||||
mocha: true,
|
|
||||||
},
|
|
||||||
parserOptions: {
|
parserOptions: {
|
||||||
ecmaVersion: 2018,
|
ecmaVersion: 2018,
|
||||||
ecmaFeatures: {
|
|
||||||
jsx: true,
|
|
||||||
},
|
|
||||||
sourceType: 'module',
|
|
||||||
},
|
|
||||||
// all readonly
|
|
||||||
globals: {
|
|
||||||
strapi: false,
|
|
||||||
window: false,
|
|
||||||
cy: false,
|
|
||||||
Cypress: false,
|
|
||||||
expect: false,
|
|
||||||
assert: false,
|
|
||||||
chai: false,
|
|
||||||
// TODO: put all this in process.env in webpack to avoid having to set them here
|
|
||||||
REMOTE_URL: true,
|
|
||||||
BACKEND_URL: true,
|
|
||||||
PUBLIC_PATH: true,
|
|
||||||
MODE: true,
|
|
||||||
NODE_ENV: true,
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
'generator-star-spacing': 0,
|
|
||||||
'no-console': 0,
|
|
||||||
'require-atomic-updates': 0,
|
|
||||||
'react-hooks/rules-of-hooks': 'error',
|
|
||||||
'react-hooks/exhaustive-deps': 'warn',
|
|
||||||
},
|
|
||||||
settings: {
|
|
||||||
react: {
|
|
||||||
version: '16.5.2',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
overrides: [
|
overrides: [
|
||||||
{
|
{
|
||||||
files: ['packages/**/admin/src/**/**/*.js'],
|
files: ['packages/**/*.js', 'test/**/*.js', 'scripts/**/*.js'],
|
||||||
extends: ['airbnb'],
|
excludedFiles: frontPaths,
|
||||||
rules: {
|
...require('./.eslintrc.back.js'),
|
||||||
'arrow-body-style': 0,
|
},
|
||||||
'arrow-parens': 0,
|
{
|
||||||
camelcase: 0,
|
files: frontPaths,
|
||||||
'comma-dangle': 0,
|
...require('./.eslintrc.front.js'),
|
||||||
'consistent-return': [
|
|
||||||
2,
|
|
||||||
{
|
|
||||||
treatUndefinedAsUnspecified: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
indent: [
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
{
|
|
||||||
flatTernaryExpressions: false,
|
|
||||||
SwitchCase: 1,
|
|
||||||
ignoredNodes: [
|
|
||||||
'ConditionalExpression',
|
|
||||||
"VariableDeclarator[kind='const']",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
'func-names': ['error', 'never'],
|
|
||||||
'function-paren-newline': 0,
|
|
||||||
'implicit-arrow-linebreak': 0,
|
|
||||||
'import/no-extraneous-dependencies': 0,
|
|
||||||
'import/no-named-as-default': 0,
|
|
||||||
'import/order': 2,
|
|
||||||
'jsx-a11y/click-events-have-key-events': 1,
|
|
||||||
'max-len': [
|
|
||||||
2,
|
|
||||||
{
|
|
||||||
code: 120,
|
|
||||||
ignoreComments: true,
|
|
||||||
ignoreUrls: true,
|
|
||||||
ignoreTrailingComments: true,
|
|
||||||
ignoreStrings: true,
|
|
||||||
ignoreTemplateLiterals: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
'newline-before-return': 2,
|
|
||||||
'no-confusing-arrow': 0,
|
|
||||||
'no-else-return': 1,
|
|
||||||
'no-nested-ternary': ['error'],
|
|
||||||
'no-return-assign': 0,
|
|
||||||
'no-param-reassign': 0,
|
|
||||||
'no-shadow': 0,
|
|
||||||
'no-underscore-dangle': 0,
|
|
||||||
'no-use-before-define': [
|
|
||||||
'error',
|
|
||||||
{ functions: false, classes: false, variables: false },
|
|
||||||
],
|
|
||||||
'object-curly-newline': [2, { multiline: true, consistent: true }],
|
|
||||||
'operator-linebreak': 0,
|
|
||||||
'padding-line-between-statements': [
|
|
||||||
'error',
|
|
||||||
{ blankLine: 'always', prev: '*', next: 'if' },
|
|
||||||
{ blankLine: 'any', prev: 'block-like', next: 'if' },
|
|
||||||
],
|
|
||||||
'prefer-arrow-callback': 0,
|
|
||||||
'prefer-const': 0,
|
|
||||||
'prefer-destructuring': 0,
|
|
||||||
'prefer-object-spread': 0,
|
|
||||||
'prefer-spread': 0,
|
|
||||||
'space-before-function-paren': [
|
|
||||||
'error',
|
|
||||||
{
|
|
||||||
anonymous: 'never',
|
|
||||||
named: 'never',
|
|
||||||
asyncArrow: 'always',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
'react/destructuring-assignment': 0,
|
|
||||||
'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx'] }],
|
|
||||||
'react/forbid-prop-types': 0,
|
|
||||||
'react/jsx-props-no-spreading': 0,
|
|
||||||
'react/jsx-one-expression-per-line': 0,
|
|
||||||
'react/state-in-constructor': 0,
|
|
||||||
'react/static-property-placement': 0,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
// This function is called when a project is opened or re-opened (e.g. due to
|
// This function is called when a project is opened or re-opened (e.g. due to
|
||||||
// the project's config changing)
|
// the project's config changing)
|
||||||
|
|
||||||
module.exports = (/*on, config*/) => {
|
module.exports = (/* on, config */) => {
|
||||||
// `on` is used to hook into various events Cypress emits
|
// `on` is used to hook into various events Cypress emits
|
||||||
// `config` is the resolved Cypress config
|
// `config` is the resolved Cypress config
|
||||||
};
|
};
|
||||||
|
@ -162,6 +162,7 @@ Cypress.Commands.add('deleteApi', (model, jwt) => {
|
|||||||
|
|
||||||
Cypress.Commands.add('login', () => {
|
Cypress.Commands.add('login', () => {
|
||||||
cy.createUser();
|
cy.createUser();
|
||||||
|
|
||||||
return cy
|
return cy
|
||||||
.request({
|
.request({
|
||||||
url: `${backendUrl}/admin/auth/local`,
|
url: `${backendUrl}/admin/auth/local`,
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
// ***********************************************************
|
// ***********************************************************
|
||||||
|
|
||||||
// Import commands.js using ES2015 syntax:
|
// Import commands.js using ES2015 syntax:
|
||||||
import './commands'
|
import './commands';
|
||||||
|
|
||||||
// Alternatively you can use CommonJS syntax:
|
// Alternatively you can use CommonJS syntax:
|
||||||
// require('./commands')
|
// require('./commands')
|
||||||
@ -28,6 +28,8 @@ Cypress.on('before:browser:launch', (browser = {}, args) => {
|
|||||||
if (browser.name === 'chrome') {
|
if (browser.name === 'chrome') {
|
||||||
args.push('--disable-site-isolation-trials');
|
args.push('--disable-site-isolation-trials');
|
||||||
|
|
||||||
return args
|
return args;
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
return args;
|
||||||
|
});
|
||||||
|
@ -245,7 +245,7 @@ You can configure these global headers by updating the file at `./config/environ
|
|||||||
{
|
{
|
||||||
"webhooks": {
|
"webhooks": {
|
||||||
"defaultHeaders": {
|
"defaultHeaders": {
|
||||||
"Authroization": "Bearer my-very-secured-token"
|
"Authorization": "Bearer my-very-secured-token"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -259,7 +259,7 @@ You can configure these global headers by updating the file at `./config/environ
|
|||||||
{
|
{
|
||||||
"webhooks": {
|
"webhooks": {
|
||||||
"defaultHeaders": {
|
"defaultHeaders": {
|
||||||
"Authroization": "Bearer ${ process.env.WEBHOOK_TOKEN }"
|
"Authorization": "Bearer ${ process.env.WEBHOOK_TOKEN }"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -213,7 +213,7 @@ And for your files, they have to be prefixed by `files`.
|
|||||||
Example here with cover attribute `files.cover`.
|
Example here with cover attribute `files.cover`.
|
||||||
|
|
||||||
::: tip
|
::: tip
|
||||||
If you want to upload files for a component, you will have to specify the inidex of the item you wan to add the file.
|
If you want to upload files for a component, you will have to specify the index of the item you want to add the file.
|
||||||
Example `files.my_component_name[the_index].attribute_name`
|
Example `files.my_component_name[the_index].attribute_name`
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
"strapi": "strapi"
|
"strapi": "strapi"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"knex": "^0.16.5",
|
"knex": "^0.20.0",
|
||||||
"lodash": "^4.17.5",
|
"lodash": "^4.17.5",
|
||||||
"mysql": "^2.17.1",
|
"mysql": "^2.17.1",
|
||||||
"pg": "^7.10.0",
|
"pg": "^7.10.0",
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
"@testing-library/react": "^9.1.0",
|
"@testing-library/react": "^9.1.0",
|
||||||
"@testing-library/react-hooks": "^2.0.0",
|
"@testing-library/react-hooks": "^2.0.0",
|
||||||
"babel-eslint": "^10.0.0",
|
"babel-eslint": "^10.0.0",
|
||||||
|
"chokidar": "3.3.1",
|
||||||
"cross-env": "^5.2.0",
|
"cross-env": "^5.2.0",
|
||||||
"cypress": "3.1.2",
|
"cypress": "3.1.2",
|
||||||
"enzyme": "^3.9.0",
|
"enzyme": "^3.9.0",
|
||||||
@ -16,10 +17,13 @@
|
|||||||
"eslint-config-prettier": "^6.2.0",
|
"eslint-config-prettier": "^6.2.0",
|
||||||
"eslint-plugin-import": "^2.19.1",
|
"eslint-plugin-import": "^2.19.1",
|
||||||
"eslint-plugin-jsx-a11y": "^6.2.3",
|
"eslint-plugin-jsx-a11y": "^6.2.3",
|
||||||
|
"eslint-plugin-node": "11.0.0",
|
||||||
"eslint-plugin-react": "^7.14.0",
|
"eslint-plugin-react": "^7.14.0",
|
||||||
"eslint-plugin-react-hooks": "^2.0.0",
|
"eslint-plugin-react-hooks": "^2.0.0",
|
||||||
"eslint-plugin-redux-saga": "^1.1.0",
|
"eslint-plugin-redux-saga": "^1.1.0",
|
||||||
"execa": "^1.0.0",
|
"execa": "^1.0.0",
|
||||||
|
"fs-extra": "8.1.0",
|
||||||
|
"glob": "7.1.6",
|
||||||
"husky": "^3.0.0",
|
"husky": "^3.0.0",
|
||||||
"istanbul": "~0.4.2",
|
"istanbul": "~0.4.2",
|
||||||
"jest": "^24.5.0",
|
"jest": "^24.5.0",
|
||||||
@ -31,9 +35,12 @@
|
|||||||
"react-test-renderer": "^16.9.0",
|
"react-test-renderer": "^16.9.0",
|
||||||
"request": "^2.87.0",
|
"request": "^2.87.0",
|
||||||
"request-promise-native": "^1.0.7",
|
"request-promise-native": "^1.0.7",
|
||||||
|
"rimraf": "3.0.0",
|
||||||
"snyk": "^1.99.0",
|
"snyk": "^1.99.0",
|
||||||
"wait-on": "^3.2.0",
|
"wait-on": "^3.2.0",
|
||||||
"yargs": "^13.2.2"
|
"yargs": "^13.2.2",
|
||||||
|
"strapi": "3.0.0-beta.18.6",
|
||||||
|
"strapi-generate-new": "3.0.0-beta.18.6"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"setup": "yarn && yarn build",
|
"setup": "yarn && yarn build",
|
||||||
|
@ -37,6 +37,8 @@ program
|
|||||||
|
|
||||||
if (projectName === undefined) {
|
if (projectName === undefined) {
|
||||||
console.error('Please specify the <directory> of your project');
|
console.error('Please specify the <directory> of your project');
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-process-exit
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,5 +213,9 @@
|
|||||||
"Auth.link.forgot-password": "Esqueceu sua senha?",
|
"Auth.link.forgot-password": "Esqueceu sua senha?",
|
||||||
"Auth.link.ready": "Pronto para entrar?",
|
"Auth.link.ready": "Pronto para entrar?",
|
||||||
"app.containers.App.notification.error.init": "Ocorreu um erro ao solicitar a API",
|
"app.containers.App.notification.error.init": "Ocorreu um erro ao solicitar a API",
|
||||||
"components.Input.error.password.noMatch": "As senhas não conferem"
|
"components.Input.error.password.noMatch": "As senhas não conferem",
|
||||||
|
"form.button.done": "Terminar",
|
||||||
|
"form.button.finish": "Finalizar",
|
||||||
|
"notification.form.error.fields": "O formulário contém alguns erros",
|
||||||
|
"global.prompt.unsaved": "Você tem certeza que deseja sair desta página? Todas as suas modificacões serão perdidas"
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
"cross-env": "^5.0.5",
|
"cross-env": "^5.0.5",
|
||||||
"css-loader": "^2.1.1",
|
"css-loader": "^2.1.1",
|
||||||
"duplicate-package-checker-webpack-plugin": "^3.0.0",
|
"duplicate-package-checker-webpack-plugin": "^3.0.0",
|
||||||
|
"execa": "^1.0.0",
|
||||||
"file-loader": "^3.0.1",
|
"file-loader": "^3.0.1",
|
||||||
"font-awesome": "^4.7.0",
|
"font-awesome": "^4.7.0",
|
||||||
"friendly-errors-webpack-plugin": "^1.7.0",
|
"friendly-errors-webpack-plugin": "^1.7.0",
|
||||||
@ -55,6 +56,7 @@
|
|||||||
"intl": "^1.2.5",
|
"intl": "^1.2.5",
|
||||||
"invariant": "^2.2.4",
|
"invariant": "^2.2.4",
|
||||||
"is-wsl": "^2.0.0",
|
"is-wsl": "^2.0.0",
|
||||||
|
"lodash": "^4.17.11",
|
||||||
"match-sorter": "^4.0.2",
|
"match-sorter": "^4.0.2",
|
||||||
"mini-css-extract-plugin": "^0.6.0",
|
"mini-css-extract-plugin": "^0.6.0",
|
||||||
"moment": "^2.24.0",
|
"moment": "^2.24.0",
|
||||||
|
@ -24,6 +24,9 @@
|
|||||||
"rimraf": "^2.6.3",
|
"rimraf": "^2.6.3",
|
||||||
"strapi-utils": "3.0.0-beta.18.6"
|
"strapi-utils": "3.0.0-beta.18.6"
|
||||||
},
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"knex": "^0.20.0"
|
||||||
|
},
|
||||||
"strapi": {
|
"strapi": {
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"knex"
|
"knex"
|
||||||
|
@ -58,6 +58,7 @@ module.exports = function(strapi) {
|
|||||||
useUnifiedTopology,
|
useUnifiedTopology,
|
||||||
} = connection.settings;
|
} = connection.settings;
|
||||||
|
|
||||||
|
// eslint-disable-next-line node/no-deprecated-api
|
||||||
const uriOptions = uri ? url.parse(uri, true).query : {};
|
const uriOptions = uri ? url.parse(uri, true).query : {};
|
||||||
const { authenticationDatabase, ssl, debug } = _.defaults(
|
const { authenticationDatabase, ssl, debug } = _.defaults(
|
||||||
connection.options,
|
connection.options,
|
||||||
|
@ -229,7 +229,8 @@ module.exports = ({ models, target, plugin = false }, ctx) => {
|
|||||||
const refToStrapiRef = obj => {
|
const refToStrapiRef = obj => {
|
||||||
const ref = obj.ref;
|
const ref = obj.ref;
|
||||||
|
|
||||||
let plainData = typeof ref.toJSON === 'function' ? ref.toJSON() : ref;
|
let plainData =
|
||||||
|
ref && typeof ref.toJSON === 'function' ? ref.toJSON() : ref;
|
||||||
|
|
||||||
if (typeof plainData !== 'object') return ref;
|
if (typeof plainData !== 'object') return ref;
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
},
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"lodash": "^4.17.11",
|
||||||
"verror": "^1.10.0"
|
"verror": "^1.10.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* to run scheduled jobs.
|
* to run scheduled jobs.
|
||||||
*
|
*
|
||||||
* The cron format consists of:
|
* The cron format consists of:
|
||||||
* [MINUTE] [HOUR] [DAY OF MONTH] [MONTH OF YEAR] [DAY OF WEEK] [YEAR (optional)]
|
* [SECOND (optional)] [MINUTE] [HOUR] [DAY OF MONTH] [MONTH OF YEAR] [DAY OF WEEK]
|
||||||
*
|
*
|
||||||
* See more details here: https://strapi.io/documentation/3.0.0-beta.x/concepts/configurations.html#cron-tasks
|
* See more details here: https://strapi.io/documentation/3.0.0-beta.x/concepts/configurations.html#cron-tasks
|
||||||
*/
|
*/
|
||||||
|
@ -24,6 +24,7 @@ const CircleButton = styled.button`
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return css`
|
return css`
|
||||||
&:after {
|
&:after {
|
||||||
content: '\f067';
|
content: '\f067';
|
||||||
|
@ -136,7 +136,7 @@ class GlobalPagination extends React.Component {
|
|||||||
onClick={this.handlePreviousPageClick}
|
onClick={this.handlePreviousPageClick}
|
||||||
disabled={this.isFirstPage()}
|
disabled={this.isFirstPage()}
|
||||||
>
|
>
|
||||||
<i className="fa fa-angle-left" aria-hidden="true"></i>
|
<i className="fa fa-angle-left" aria-hidden="true" />
|
||||||
</a>
|
</a>
|
||||||
<nav className="navWrapper">
|
<nav className="navWrapper">
|
||||||
<ul className="navUl">{this.renderLinks()}</ul>
|
<ul className="navUl">{this.renderLinks()}</ul>
|
||||||
@ -147,7 +147,7 @@ class GlobalPagination extends React.Component {
|
|||||||
onClick={this.handleNextPageClick}
|
onClick={this.handleNextPageClick}
|
||||||
disabled={this.isLastPage()}
|
disabled={this.isLastPage()}
|
||||||
>
|
>
|
||||||
<i className="fa fa-angle-right" aria-hidden="true"></i>
|
<i className="fa fa-angle-right" aria-hidden="true" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</Wrapper>
|
</Wrapper>
|
||||||
|
@ -38,8 +38,6 @@ function HeaderNav({ links, style }) {
|
|||||||
onClick={e => {
|
onClick={e => {
|
||||||
if (link.disabled) {
|
if (link.disabled) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
@ -180,9 +180,9 @@ class ImgPreview extends React.Component {
|
|||||||
|
|
||||||
const containerStyle = isEmpty(imgURL)
|
const containerStyle = isEmpty(imgURL)
|
||||||
? {
|
? {
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
zIndex: 9999,
|
zIndex: 9999,
|
||||||
}
|
}
|
||||||
: {};
|
: {};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -95,6 +95,7 @@ class InputCheckbox extends React.Component {
|
|||||||
</FormattedMessage>
|
</FormattedMessage>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Wrapper
|
<Wrapper
|
||||||
className={cn('form-check', !isEmpty(className) && className)}
|
className={cn('form-check', !isEmpty(className) && className)}
|
||||||
|
@ -23,6 +23,7 @@ class InputCheckboxWithErrors extends React.Component {
|
|||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
// Display input error if it already has some
|
// Display input error if it already has some
|
||||||
const { errors } = this.props;
|
const { errors } = this.props;
|
||||||
|
|
||||||
if (!isEmpty(errors)) {
|
if (!isEmpty(errors)) {
|
||||||
this.setState({ errors });
|
this.setState({ errors });
|
||||||
}
|
}
|
||||||
@ -63,7 +64,7 @@ class InputCheckboxWithErrors extends React.Component {
|
|||||||
value,
|
value,
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
const handleBlur = onBlur ? onBlur : () => {};
|
const handleBlur = onBlur || (() => {});
|
||||||
let inputTitle = '';
|
let inputTitle = '';
|
||||||
|
|
||||||
let spacer = !isEmpty(inputDescription) ? <InputSpacer /> : <div />;
|
let spacer = !isEmpty(inputDescription) ? <InputSpacer /> : <div />;
|
||||||
|
@ -51,8 +51,7 @@ function InputDate(props) {
|
|||||||
name: props.name,
|
name: props.name,
|
||||||
value: moment,
|
value: moment,
|
||||||
},
|
},
|
||||||
})
|
})}
|
||||||
}
|
|
||||||
onChange={moment =>
|
onChange={moment =>
|
||||||
props.onChange({
|
props.onChange({
|
||||||
target: {
|
target: {
|
||||||
@ -60,8 +59,7 @@ function InputDate(props) {
|
|||||||
value: moment,
|
value: moment,
|
||||||
type: 'date',
|
type: 'date',
|
||||||
},
|
},
|
||||||
})
|
})}
|
||||||
}
|
|
||||||
onFocus={props.onFocus}
|
onFocus={props.onFocus}
|
||||||
ref={props.inputRef}
|
ref={props.inputRef}
|
||||||
tabIndex={props.tabIndex}
|
tabIndex={props.tabIndex}
|
||||||
|
@ -25,6 +25,7 @@ function InputDescription(props) {
|
|||||||
if (isFunction(props.message)) {
|
if (isFunction(props.message)) {
|
||||||
content = props.message();
|
content = props.message();
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Div
|
<Div
|
||||||
className={cn(!isEmpty(props.className) && props.className)}
|
className={cn(!isEmpty(props.className) && props.className)}
|
||||||
|
@ -40,7 +40,7 @@ class InputPassword extends React.Component {
|
|||||||
: { color: '#9EA7B8' };
|
: { color: '#9EA7B8' };
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Fragment>
|
<>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id={formattedPlaceholder}
|
id={formattedPlaceholder}
|
||||||
defaultMessage={formattedPlaceholder}
|
defaultMessage={formattedPlaceholder}
|
||||||
@ -77,7 +77,7 @@ class InputPassword extends React.Component {
|
|||||||
<i className="fa fa-eye" />
|
<i className="fa fa-eye" />
|
||||||
</div>
|
</div>
|
||||||
</EyeWrapper>
|
</EyeWrapper>
|
||||||
</Fragment>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,9 +51,9 @@ function InputSelect(props) {
|
|||||||
{option.label}
|
{option.label}
|
||||||
</option>
|
</option>
|
||||||
);
|
);
|
||||||
} else {
|
|
||||||
return <SelectOption key={key} {...option} />;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return <SelectOption key={key} {...option} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -22,6 +22,7 @@ class InputSelectWithErrors extends React.Component {
|
|||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const { errors } = this.props;
|
const { errors } = this.props;
|
||||||
|
|
||||||
// Display input error if it already has some
|
// Display input error if it already has some
|
||||||
if (!isEmpty(errors)) {
|
if (!isEmpty(errors)) {
|
||||||
this.setState({ errors });
|
this.setState({ errors });
|
||||||
|
@ -18,6 +18,7 @@ import Container from './Container';
|
|||||||
|
|
||||||
class InputToggleWithErrors extends React.Component {
|
class InputToggleWithErrors extends React.Component {
|
||||||
state = { errors: [] };
|
state = { errors: [] };
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const { errors } = this.props;
|
const { errors } = this.props;
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ function LeftMenuHeader({ count, search, searchable, setSearch, title }) {
|
|||||||
) : (
|
) : (
|
||||||
<div className="search-wrapper">
|
<div className="search-wrapper">
|
||||||
<FontAwesomeIcon icon="search" />
|
<FontAwesomeIcon icon="search" />
|
||||||
<button onClick={toggleSearch}></button>
|
<button onClick={toggleSearch} />
|
||||||
<Search
|
<Search
|
||||||
ref={ref}
|
ref={ref}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
|
@ -26,6 +26,7 @@ function LeftMenuList({ customLink, links, title, searchable }) {
|
|||||||
return acc + current.links.length;
|
return acc + current.links.length;
|
||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return links.length;
|
return links.length;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -38,6 +39,7 @@ function LeftMenuList({ customLink, links, title, searchable }) {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return matchSorter(links, search, { keys: ['title'] });
|
return matchSorter(links, search, { keys: ['title'] });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@ const LeftMenuSubList = ({
|
|||||||
<ul>
|
<ul>
|
||||||
{links.map(link => {
|
{links.map(link => {
|
||||||
const { name, title } = link;
|
const { name, title } = link;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<li key={name}>
|
<li key={name}>
|
||||||
<LeftMenuLink {...link}>{title}</LeftMenuLink>
|
<LeftMenuLink {...link}>{title}</LeftMenuLink>
|
||||||
|
@ -19,9 +19,7 @@ function ListHeader({
|
|||||||
return (
|
return (
|
||||||
<Wrapper style={style}>
|
<Wrapper style={style}>
|
||||||
{button && <Button {...button} />}
|
{button && <Button {...button} />}
|
||||||
{children ? (
|
{children || (
|
||||||
children
|
|
||||||
) : (
|
|
||||||
<FormattedMessage id={title} values={titleValues}>
|
<FormattedMessage id={title} values={titleValues}>
|
||||||
{msg => <Title>{msg}</Title>}
|
{msg => <Title>{msg}</Title>}
|
||||||
</FormattedMessage>
|
</FormattedMessage>
|
||||||
|
@ -18,7 +18,7 @@ function PageFooter(props) {
|
|||||||
<form className="form-inline">
|
<form className="form-inline">
|
||||||
<div className="pageFooterSelectWrapper">
|
<div className="pageFooterSelectWrapper">
|
||||||
<select
|
<select
|
||||||
className={`form-control`}
|
className="form-control"
|
||||||
id="params._limit"
|
id="params._limit"
|
||||||
name="params._limit"
|
name="params._limit"
|
||||||
onChange={e => {
|
onChange={e => {
|
||||||
|
@ -10,10 +10,8 @@ import { reduce } from 'lodash';
|
|||||||
|
|
||||||
// Plugin identifier based on the package.json `name` value
|
// Plugin identifier based on the package.json `name` value
|
||||||
const pluginPkg = require('../../../../package.json');
|
const pluginPkg = require('../../../../package.json');
|
||||||
const pluginId = pluginPkg.name.replace(
|
|
||||||
/^strapi-plugin-/i,
|
const pluginId = pluginPkg.name.replace(/^strapi-plugin-/i, '');
|
||||||
''
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add plugin identifier as translation message prefix,
|
* Add plugin identifier as translation message prefix,
|
||||||
@ -22,11 +20,16 @@ const pluginId = pluginPkg.name.replace(
|
|||||||
*
|
*
|
||||||
* @param messages
|
* @param messages
|
||||||
*/
|
*/
|
||||||
const formatMessages = messages => reduce(messages, (result, value, key) => {
|
const formatMessages = messages =>
|
||||||
result[`${pluginId}.${key}`] = value;
|
reduce(
|
||||||
|
messages,
|
||||||
|
(result, value, key) => {
|
||||||
|
result[`${pluginId}.${key}`] = value;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}, {});
|
},
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to require translation file.
|
* Try to require translation file.
|
||||||
@ -37,8 +40,9 @@ const requireTranslations = language => {
|
|||||||
try {
|
try {
|
||||||
return require(`translations/${language}.json`); // eslint-disable-line global-require
|
return require(`translations/${language}.json`); // eslint-disable-line global-require
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`Unable to load "${language}" translation for the plugin ${pluginId}. Please make sure "${language}.json" file exists in "pluginPath/admin/src/translations" folder.`);
|
console.error(
|
||||||
return;
|
`Unable to load "${language}" translation for the plugin ${pluginId}. Please make sure "${language}.json" file exists in "pluginPath/admin/src/translations" folder.`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -46,10 +50,14 @@ const requireTranslations = language => {
|
|||||||
* Dynamically generate `translationsMessages object`.
|
* Dynamically generate `translationsMessages object`.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const translationMessages = reduce(strapi.languages, (result, language) => {
|
const translationMessages = reduce(
|
||||||
result[language] = formatMessages(requireTranslations(language));
|
strapi.languages,
|
||||||
|
(result, language) => {
|
||||||
|
result[language] = formatMessages(requireTranslations(language));
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}, {});
|
},
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
|
||||||
export { translationMessages };
|
export { translationMessages };
|
||||||
|
@ -5,7 +5,7 @@ const Close = props => (
|
|||||||
<path
|
<path
|
||||||
d="M10.0719417,0.127226812 C10.1612888,0.127226812 10.2403266,0.161591074 10.3090551,0.230319596 L10.3090551,0.230319596 L10.8245191,0.745783513 C10.8932476,0.814512036 10.9276118,0.893549837 10.9276118,0.982896916 C10.9276118,1.07224399 10.8932476,1.1512818 10.8245191,1.22001032 L10.8245191,1.22001032 L6.77297267,5.27155671 L10.8245191,9.3231031 C10.8932476,9.39183162 10.9276118,9.47086942 10.9276118,9.5602165 C10.9276118,9.64956358 10.8932476,9.72860138 10.8245191,9.79732991 L10.8245191,9.79732991 L10.3090551,10.3127938 C10.2403266,10.3815223 10.1612888,10.4158866 10.0719417,10.4158866 C9.98259466,10.4158866 9.90355686,10.3815223 9.83482834,10.3127938 L9.83482834,10.3127938 L5.92809485,6.40509433 C4.98802554,7.34516364 3.68545904,8.64773014 2.02039535,10.3127938 C1.95166683,10.3815223 1.87262903,10.4158866 1.78328195,10.4158866 C1.69393487,10.4158866 1.61489707,10.3815223 1.54616855,10.3127938 L1.03070463,9.79732991 C0.961976106,9.72860138 0.927611845,9.64956358 0.927611845,9.5602165 C0.927611845,9.47086942 0.961976106,9.39183162 1.03070463,9.3231031 L5.08225102,5.27155671 L1.03070463,1.22001032 C0.961976106,1.1512818 0.927611845,1.07224399 0.927611845,0.982896916 C0.927611845,0.893549837 0.961976106,0.814512036 1.03070463,0.745783513 L1.54616855,0.230319596 C1.61489707,0.161591074 1.69393487,0.127226812 1.78328195,0.127226812 C1.87262903,0.127226812 1.95166683,0.161591074 2.02039535,0.230319596 L5.92761184,4.13822681 L9.83482834,0.230319596 C9.88637473,0.178773204 9.94372009,0.146556709 10.0068644,0.133670111 Z"
|
d="M10.0719417,0.127226812 C10.1612888,0.127226812 10.2403266,0.161591074 10.3090551,0.230319596 L10.3090551,0.230319596 L10.8245191,0.745783513 C10.8932476,0.814512036 10.9276118,0.893549837 10.9276118,0.982896916 C10.9276118,1.07224399 10.8932476,1.1512818 10.8245191,1.22001032 L10.8245191,1.22001032 L6.77297267,5.27155671 L10.8245191,9.3231031 C10.8932476,9.39183162 10.9276118,9.47086942 10.9276118,9.5602165 C10.9276118,9.64956358 10.8932476,9.72860138 10.8245191,9.79732991 L10.8245191,9.79732991 L10.3090551,10.3127938 C10.2403266,10.3815223 10.1612888,10.4158866 10.0719417,10.4158866 C9.98259466,10.4158866 9.90355686,10.3815223 9.83482834,10.3127938 L9.83482834,10.3127938 L5.92809485,6.40509433 C4.98802554,7.34516364 3.68545904,8.64773014 2.02039535,10.3127938 C1.95166683,10.3815223 1.87262903,10.4158866 1.78328195,10.4158866 C1.69393487,10.4158866 1.61489707,10.3815223 1.54616855,10.3127938 L1.03070463,9.79732991 C0.961976106,9.72860138 0.927611845,9.64956358 0.927611845,9.5602165 C0.927611845,9.47086942 0.961976106,9.39183162 1.03070463,9.3231031 L5.08225102,5.27155671 L1.03070463,1.22001032 C0.961976106,1.1512818 0.927611845,1.07224399 0.927611845,0.982896916 C0.927611845,0.893549837 0.961976106,0.814512036 1.03070463,0.745783513 L1.54616855,0.230319596 C1.61489707,0.161591074 1.69393487,0.127226812 1.78328195,0.127226812 C1.87262903,0.127226812 1.95166683,0.161591074 2.02039535,0.230319596 L5.92761184,4.13822681 L9.83482834,0.230319596 C9.88637473,0.178773204 9.94372009,0.146556709 10.0068644,0.133670111 Z"
|
||||||
fillRule="nonzero"
|
fillRule="nonzero"
|
||||||
></path>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ const auth = {
|
|||||||
if (localStorage) {
|
if (localStorage) {
|
||||||
const videos = auth.get('videos');
|
const videos = auth.get('videos');
|
||||||
const onboarding = auth.get('onboarding');
|
const onboarding = auth.get('onboarding');
|
||||||
|
|
||||||
localStorage.clear();
|
localStorage.clear();
|
||||||
localStorage.setItem('videos', JSON.stringify(videos));
|
localStorage.setItem('videos', JSON.stringify(videos));
|
||||||
localStorage.setItem('onboarding', onboarding);
|
localStorage.setItem('onboarding', onboarding);
|
||||||
|
@ -2,12 +2,18 @@ import { isArray, isObject } from 'lodash';
|
|||||||
|
|
||||||
const cleanData = (value, key, secondKey) => {
|
const cleanData = (value, key, secondKey) => {
|
||||||
if (isArray(value)) {
|
if (isArray(value)) {
|
||||||
return value.map(obj => obj[key] ? obj[key] : obj);
|
return value.map(obj => (obj[key] ? obj[key] : obj));
|
||||||
} else if (isObject(value)) {
|
|
||||||
return value[key] || value[`_${key}`] || value[secondKey] || value[`_${secondKey}`];
|
|
||||||
} else {
|
|
||||||
return value;
|
|
||||||
}
|
}
|
||||||
|
if (isObject(value)) {
|
||||||
|
return (
|
||||||
|
value[key] ||
|
||||||
|
value[`_${key}`] ||
|
||||||
|
value[secondKey] ||
|
||||||
|
value[`_${secondKey}`]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default cleanData;
|
export default cleanData;
|
||||||
|
@ -1,13 +1,19 @@
|
|||||||
const subtractLight = (color, amount) => {
|
const subtractLight = (color, amount) => {
|
||||||
const cc = parseInt(color,16) - amount;
|
const cc = parseInt(color, 16) - amount;
|
||||||
let c = (cc < 0) ? 0 : (cc);
|
let c = cc < 0 ? 0 : cc;
|
||||||
c = (c.toString(16).length > 1 ) ? c.toString(16) : `0${c.toString(16)}`;
|
c = c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}`;
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const darken = (colour, amount) => {
|
export const darken = (colour, amount) => {
|
||||||
let color = (colour.indexOf("#")>=0) ? colour.substring(1,colour.length) : colour;
|
let color =
|
||||||
const percentage = parseInt((255*amount)/100, 10);
|
colour.indexOf('#') >= 0 ? colour.substring(1, colour.length) : colour;
|
||||||
color = `#${subtractLight(color.substring(0,2), percentage)}${subtractLight(color.substring(2,4), percentage)}${subtractLight(color.substring(4,6), percentage)}`;
|
const percentage = parseInt((255 * amount) / 100, 10);
|
||||||
|
color = `#${subtractLight(color.substring(0, 2), percentage)}${subtractLight(
|
||||||
|
color.substring(2, 4),
|
||||||
|
percentage
|
||||||
|
)}${subtractLight(color.substring(4, 6), percentage)}`;
|
||||||
|
|
||||||
return color;
|
return color;
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import 'whatwg-fetch';
|
import 'whatwg-fetch';
|
||||||
import auth from './auth';
|
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
import auth from './auth';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses the JSON returned by a network request
|
* Parses the JSON returned by a network request
|
||||||
@ -170,6 +170,7 @@ export default function request(...args) {
|
|||||||
if (shouldWatchServerRestart) {
|
if (shouldWatchServerRestart) {
|
||||||
// Display the global OverlayBlocker
|
// Display the global OverlayBlocker
|
||||||
strapi.lockApp(shouldWatchServerRestart);
|
strapi.lockApp(shouldWatchServerRestart);
|
||||||
|
|
||||||
return serverRestartWatcher(response);
|
return serverRestartWatcher(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,4 +22,4 @@ const storeData = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default storeData;
|
export default storeData;
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import { isPlainObject, isString, isArray } from 'lodash';
|
import { isPlainObject, isString, isArray } from 'lodash';
|
||||||
|
|
||||||
const templateObject = function (obj, variables) {
|
const templateObject = function(obj, variables) {
|
||||||
// Allow values which looks like such as
|
// Allow values which looks like such as
|
||||||
// an ES6 literal string without parenthesis inside (aka function call).
|
// an ES6 literal string without parenthesis inside (aka function call).
|
||||||
const regex = /\$\{[\S]*\}/g;
|
const regex = /\$\{[\S]*\}/g;
|
||||||
const replacer = (match) => {
|
const replacer = match => {
|
||||||
const key = match.substring(0, match.length - 1).replace('${', '');
|
const key = match.substring(0, match.length - 1).replace('${', '');
|
||||||
|
|
||||||
return variables[key];
|
return variables[key];
|
||||||
|
@ -78,7 +78,6 @@ module.exports = function(strapi) {
|
|||||||
redis.on('error', err => {
|
redis.on('error', err => {
|
||||||
strapi.log.error(err);
|
strapi.log.error(err);
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
return;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Utils function.
|
// Utils function.
|
||||||
|
@ -30,7 +30,9 @@ function createDefaultMainField(schema) {
|
|||||||
if (!schema) return 'id';
|
if (!schema) return 'id';
|
||||||
|
|
||||||
const mainField = Object.keys(schema.attributes).find(
|
const mainField = Object.keys(schema.attributes).find(
|
||||||
key => schema.attributes[key].type === 'string' && key !== schema.primaryKey
|
key =>
|
||||||
|
schema.attributes[key].type === 'string' &&
|
||||||
|
!['id', schema.primaryKey].includes(key)
|
||||||
);
|
);
|
||||||
|
|
||||||
return mainField || 'id';
|
return mainField || 'id';
|
||||||
|
@ -15,6 +15,7 @@ describe('Testing build and schema core_store', () => {
|
|||||||
cy.login()
|
cy.login()
|
||||||
.then(data => {
|
.then(data => {
|
||||||
jwt = data.jwt;
|
jwt = data.jwt;
|
||||||
|
|
||||||
return cy.createCTMApis(data.jwt);
|
return cy.createCTMApis(data.jwt);
|
||||||
})
|
})
|
||||||
.wait(1000);
|
.wait(1000);
|
||||||
|
@ -36,7 +36,7 @@ describe('Testing Content Manager ListPages', function() {
|
|||||||
|
|
||||||
it('Should have the Id default sort', () => {
|
it('Should have the Id default sort', () => {
|
||||||
cy.get(
|
cy.get(
|
||||||
`a[href="/admin/plugins/content-manager/product?source=content-manager"]`
|
'a[href="/admin/plugins/content-manager/product?source=content-manager"]'
|
||||||
)
|
)
|
||||||
.click()
|
.click()
|
||||||
.wait(frontLoadingDelay);
|
.wait(frontLoadingDelay);
|
||||||
@ -160,7 +160,7 @@ describe('Testing Content Manager ListPages', function() {
|
|||||||
|
|
||||||
it('Should apply filters for product data', () => {
|
it('Should apply filters for product data', () => {
|
||||||
cy.get(
|
cy.get(
|
||||||
`a[href="/admin/plugins/content-manager/product?source=content-manager"]`
|
'a[href="/admin/plugins/content-manager/product?source=content-manager"]'
|
||||||
)
|
)
|
||||||
.click()
|
.click()
|
||||||
.wait(frontLoadingDelay);
|
.wait(frontLoadingDelay);
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
"strapi-generate": "3.0.0-beta.18.6",
|
"strapi-generate": "3.0.0-beta.18.6",
|
||||||
"strapi-generate-api": "3.0.0-beta.18.6",
|
"strapi-generate-api": "3.0.0-beta.18.6",
|
||||||
"strapi-helper-plugin": "3.0.0-beta.18.6",
|
"strapi-helper-plugin": "3.0.0-beta.18.6",
|
||||||
|
"strapi-utils": "3.0.0-beta.18.6",
|
||||||
"yup": "^0.27.0"
|
"yup": "^0.27.0"
|
||||||
},
|
},
|
||||||
"author": {
|
"author": {
|
||||||
|
@ -16,7 +16,9 @@ describe('Test CTB', () => {
|
|||||||
context('Check create and update API', () => {
|
context('Check create and update API', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.server();
|
cy.server();
|
||||||
cy.route(`${backendUrl}/content-type-builder/autoReload`).as('initContentTypeBuilder');
|
cy.route(`${backendUrl}/content-type-builder/autoReload`).as(
|
||||||
|
'initContentTypeBuilder'
|
||||||
|
);
|
||||||
cy.login().then(data => {
|
cy.login().then(data => {
|
||||||
jwt = data.jwt;
|
jwt = data.jwt;
|
||||||
userId = data.user._id || data.user.id;
|
userId = data.user._id || data.user.id;
|
||||||
@ -58,8 +60,12 @@ describe('Test CTB', () => {
|
|||||||
it('Should create a TAG API', function() {
|
it('Should create a TAG API', function() {
|
||||||
cy.server();
|
cy.server();
|
||||||
cy.route('GET', `${backendUrl}/content-type-builder/models`).as('models');
|
cy.route('GET', `${backendUrl}/content-type-builder/models`).as('models');
|
||||||
cy.route('POST', `${backendUrl}/content-type-builder/models`).as('createModel');
|
cy.route('POST', `${backendUrl}/content-type-builder/models`).as(
|
||||||
cy.route('DELETE', `${backendUrl}/content-type-builder/models/tag`).as('deleteTag');
|
'createModel'
|
||||||
|
);
|
||||||
|
cy.route('DELETE', `${backendUrl}/content-type-builder/models/tag`).as(
|
||||||
|
'deleteTag'
|
||||||
|
);
|
||||||
|
|
||||||
cy.get('a[href="/admin/plugins/content-type-builder"')
|
cy.get('a[href="/admin/plugins/content-type-builder"')
|
||||||
.click()
|
.click()
|
||||||
@ -75,7 +81,7 @@ describe('Test CTB', () => {
|
|||||||
cy.get('.modal').invoke('show');
|
cy.get('.modal').invoke('show');
|
||||||
|
|
||||||
// Fill the form
|
// Fill the form
|
||||||
Object.keys(TAG_API).map(key => {
|
Object.keys(TAG_API).forEach(key => {
|
||||||
cy.log(key);
|
cy.log(key);
|
||||||
cy.get(`#${key}`).type(TAG_API[key]);
|
cy.get(`#${key}`).type(TAG_API[key]);
|
||||||
});
|
});
|
||||||
@ -133,8 +139,12 @@ describe('Test CTB', () => {
|
|||||||
it('Should update PRODUCT API field and visit the create product page', () => {
|
it('Should update PRODUCT API field and visit the create product page', () => {
|
||||||
cy.server();
|
cy.server();
|
||||||
cy.createProductAndTagApis(jwt);
|
cy.createProductAndTagApis(jwt);
|
||||||
cy.route(`${backendUrl}/content-type-builder/models/product?`).as('getProductModel');
|
cy.route(`${backendUrl}/content-type-builder/models/product?`).as(
|
||||||
cy.route('PUT', `${backendUrl}/content-type-builder/models/product`).as('updateProductModel');
|
'getProductModel'
|
||||||
|
);
|
||||||
|
cy.route('PUT', `${backendUrl}/content-type-builder/models/product`).as(
|
||||||
|
'updateProductModel'
|
||||||
|
);
|
||||||
|
|
||||||
cy.visit(
|
cy.visit(
|
||||||
'/admin/plugins/content-type-builder/models/product#editproduct::attributestring::baseSettings::0'
|
'/admin/plugins/content-type-builder/models/product#editproduct::attributestring::baseSettings::0'
|
||||||
@ -161,7 +171,9 @@ describe('Test CTB', () => {
|
|||||||
.wait(frontLoadingDelay);
|
.wait(frontLoadingDelay);
|
||||||
|
|
||||||
// Check that we can still go to the create page
|
// Check that we can still go to the create page
|
||||||
cy.get('a[href="/admin/plugins/content-manager/product?source=content-manager"')
|
cy.get(
|
||||||
|
'a[href="/admin/plugins/content-manager/product?source=content-manager"'
|
||||||
|
)
|
||||||
.click()
|
.click()
|
||||||
.get('button[label="content-manager.containers.List.addAnEntry"')
|
.get('button[label="content-manager.containers.List.addAnEntry"')
|
||||||
.click();
|
.click();
|
||||||
@ -198,8 +210,12 @@ describe('Test CTB', () => {
|
|||||||
it('Should update PRODUCT API name and visit the create product page', () => {
|
it('Should update PRODUCT API name and visit the create product page', () => {
|
||||||
cy.server();
|
cy.server();
|
||||||
// cy.createProductAndTagApis(jwt);
|
// cy.createProductAndTagApis(jwt);
|
||||||
cy.route(`${backendUrl}/content-type-builder/models/product?`).as('getProductModel');
|
cy.route(`${backendUrl}/content-type-builder/models/product?`).as(
|
||||||
cy.route('PUT', `${backendUrl}/content-type-builder/models/product`).as('updateProductModel');
|
'getProductModel'
|
||||||
|
);
|
||||||
|
cy.route('PUT', `${backendUrl}/content-type-builder/models/product`).as(
|
||||||
|
'updateProductModel'
|
||||||
|
);
|
||||||
|
|
||||||
cy.visit(
|
cy.visit(
|
||||||
'/admin/plugins/content-type-builder/models/product#editproduct::contentType::baseSettings'
|
'/admin/plugins/content-type-builder/models/product#editproduct::contentType::baseSettings'
|
||||||
@ -218,7 +234,9 @@ describe('Test CTB', () => {
|
|||||||
.wait(frontLoadingDelay);
|
.wait(frontLoadingDelay);
|
||||||
|
|
||||||
// Check that we can still go to the create page
|
// Check that we can still go to the create page
|
||||||
cy.get('a[href="/admin/plugins/content-manager/produit?source=content-manager"')
|
cy.get(
|
||||||
|
'a[href="/admin/plugins/content-manager/produit?source=content-manager"'
|
||||||
|
)
|
||||||
.click()
|
.click()
|
||||||
.wait(frontLoadingDelay)
|
.wait(frontLoadingDelay)
|
||||||
.get('button[label="content-manager.containers.List.addAnEntry"')
|
.get('button[label="content-manager.containers.List.addAnEntry"')
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"test": "echo \"no tests yet\""
|
"test": "echo \"no tests yet\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"lodash": "^4.17.11",
|
||||||
"strapi-provider-email-sendmail": "3.0.0-beta.18.6",
|
"strapi-provider-email-sendmail": "3.0.0-beta.18.6",
|
||||||
"strapi-utils": "3.0.0-beta.18.6"
|
"strapi-utils": "3.0.0-beta.18.6"
|
||||||
},
|
},
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
// eslint-disable-next-line node/no-extraneous-require
|
||||||
const loadUtils = require('strapi/lib/load');
|
const loadUtils = require('strapi/lib/load');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
"graphql-type-json": "0.3.1",
|
"graphql-type-json": "0.3.1",
|
||||||
"graphql-type-long": "^0.1.1",
|
"graphql-type-long": "^0.1.1",
|
||||||
"koa-compose": "^4.1.0",
|
"koa-compose": "^4.1.0",
|
||||||
|
"lodash": "^4.17.11",
|
||||||
"pluralize": "^7.0.0",
|
"pluralize": "^7.0.0",
|
||||||
"strapi-utils": "3.0.0-beta.18.6"
|
"strapi-utils": "3.0.0-beta.18.6"
|
||||||
},
|
},
|
||||||
|
@ -185,6 +185,7 @@ module.exports = {
|
|||||||
request: Object.assign(_.clone(context.request), {
|
request: Object.assign(_.clone(context.request), {
|
||||||
graphql: null,
|
graphql: null,
|
||||||
}),
|
}),
|
||||||
|
response: _.clone(context.response),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Execute policies stack.
|
// Execute policies stack.
|
||||||
|
@ -246,6 +246,7 @@ module.exports = {
|
|||||||
request: Object.assign(_.clone(context.request), {
|
request: Object.assign(_.clone(context.request), {
|
||||||
graphql: null,
|
graphql: null,
|
||||||
}),
|
}),
|
||||||
|
response: _.clone(context.response),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Note: we've to used the Object.defineProperties to reset the prototype. It seems that the cloning the context
|
// Note: we've to used the Object.defineProperties to reset the prototype. It seems that the cloning the context
|
||||||
|
@ -30,6 +30,7 @@ class EditForm extends React.Component {
|
|||||||
value: get(this.props.settings, ['providers', current, 'provider']),
|
value: get(this.props.settings, ['providers', current, 'provider']),
|
||||||
};
|
};
|
||||||
acc.push(option);
|
acc.push(option);
|
||||||
|
|
||||||
return acc;
|
return acc;
|
||||||
},
|
},
|
||||||
[]
|
[]
|
||||||
|
@ -51,6 +51,8 @@ const StyledLi = styled.li`
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
}}
|
}}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
@ -16,6 +16,8 @@ import FileIcon from '../FileIcon';
|
|||||||
import { StyledLi, Truncate, Wrapper, Checked } from './components';
|
import { StyledLi, Truncate, Wrapper, Checked } from './components';
|
||||||
|
|
||||||
/* eslint-disable react/no-string-refs */
|
/* eslint-disable react/no-string-refs */
|
||||||
|
/* eslint-disable react/sort-comp */
|
||||||
|
/* eslint-disable react/no-array-index-key */
|
||||||
class Li extends React.Component {
|
class Li extends React.Component {
|
||||||
static contextType = HomePageContext;
|
static contextType = HomePageContext;
|
||||||
|
|
||||||
|
@ -10,6 +10,9 @@ import PropTypes from 'prop-types';
|
|||||||
|
|
||||||
import StyledLi from './StyledLi';
|
import StyledLi from './StyledLi';
|
||||||
|
|
||||||
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
||||||
|
/* eslint-disable react/no-array-index-key */
|
||||||
|
|
||||||
function ListHeader({ changeSort, sort }) {
|
function ListHeader({ changeSort, sort }) {
|
||||||
const titles = [
|
const titles = [
|
||||||
'hash',
|
'hash',
|
||||||
|
@ -46,6 +46,8 @@ const Label = styled.label`
|
|||||||
border: 2px dashed rgba(28, 93, 231, 0.1) !important;
|
border: 2px dashed rgba(28, 93, 231, 0.1) !important;
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
}}
|
}}
|
||||||
|
|
||||||
${({ showLoader }) => {
|
${({ showLoader }) => {
|
||||||
@ -55,6 +57,8 @@ const Label = styled.label`
|
|||||||
linear infinite;
|
linear infinite;
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
}}
|
}}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
@ -20,6 +20,8 @@ import reducer from './reducer';
|
|||||||
import saga from './saga';
|
import saga from './saga';
|
||||||
import selectConfigPage from './selectors';
|
import selectConfigPage from './selectors';
|
||||||
|
|
||||||
|
/* eslint-disable */
|
||||||
|
|
||||||
class ConfigPage extends React.Component {
|
class ConfigPage extends React.Component {
|
||||||
static contextType = GlobalContext;
|
static contextType = GlobalContext;
|
||||||
|
|
||||||
|
@ -64,6 +64,7 @@ export function getDataSuccess(data, entriesNumber) {
|
|||||||
export function onDrop({ dataTransfer: { files } }) {
|
export function onDrop({ dataTransfer: { files } }) {
|
||||||
const formData = Object.keys(files).reduce((acc, current) => {
|
const formData = Object.keys(files).reduce((acc, current) => {
|
||||||
acc.append('files', files[current]);
|
acc.append('files', files[current]);
|
||||||
|
|
||||||
return acc;
|
return acc;
|
||||||
}, new FormData());
|
}, new FormData());
|
||||||
|
|
||||||
|
@ -28,6 +28,8 @@ import List from '../../components/List';
|
|||||||
import PluginInputFile from '../../components/PluginInputFile';
|
import PluginInputFile from '../../components/PluginInputFile';
|
||||||
import { EntriesWrapper, Wrapper } from './components';
|
import { EntriesWrapper, Wrapper } from './components';
|
||||||
|
|
||||||
|
/* eslint-disable */
|
||||||
|
|
||||||
import {
|
import {
|
||||||
changeParams,
|
changeParams,
|
||||||
deleteData,
|
deleteData,
|
||||||
|
@ -2,9 +2,10 @@ import { Map } from 'immutable';
|
|||||||
import { isEmpty, get, isObject } from 'lodash';
|
import { isEmpty, get, isObject } from 'lodash';
|
||||||
import { all, call, fork, put, select, takeLatest } from 'redux-saga/effects';
|
import { all, call, fork, put, select, takeLatest } from 'redux-saga/effects';
|
||||||
import { request } from 'strapi-helper-plugin';
|
import { request } from 'strapi-helper-plugin';
|
||||||
|
|
||||||
import pluginId from '../../pluginId';
|
import pluginId from '../../pluginId';
|
||||||
|
|
||||||
|
/* eslint-disable */
|
||||||
|
|
||||||
import {
|
import {
|
||||||
deleteSuccess,
|
deleteSuccess,
|
||||||
dropSuccess,
|
dropSuccess,
|
||||||
|
@ -1,42 +0,0 @@
|
|||||||
const frontLoadingDelay = Cypress.config('frontLoadingDelay');
|
|
||||||
const userData = {
|
|
||||||
identifier: 'admin',
|
|
||||||
password: 'pcw123',
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('Test login', () => {
|
|
||||||
let userId;
|
|
||||||
let jwt;
|
|
||||||
|
|
||||||
// Create a user if there's none
|
|
||||||
before(() => {
|
|
||||||
cy.createUser();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Delete the user to test other features
|
|
||||||
after(() => {
|
|
||||||
if (userId) {
|
|
||||||
cy.deleteUser(userId, jwt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Should login the user', () => {
|
|
||||||
cy.visit('/admin/users-permissions/auth/login').wait(frontLoadingDelay);
|
|
||||||
|
|
||||||
Object.keys(userData).map(key => {
|
|
||||||
return cy.get(`#${key}`).type(userData[key]);
|
|
||||||
});
|
|
||||||
|
|
||||||
cy.submitForm()
|
|
||||||
.window()
|
|
||||||
.should(win => {
|
|
||||||
const userInfo = JSON.parse(win.localStorage.getItem('userInfo'));
|
|
||||||
|
|
||||||
jwt = JSON.parse(win.localStorage.getItem('jwtToken'));
|
|
||||||
userId = userInfo._id || userInfo.id;
|
|
||||||
expect(win.localStorage.getItem('jwtToken')).to.be.ok;
|
|
||||||
});
|
|
||||||
|
|
||||||
cy.url().should('equal', `${Cypress.config('baseUrl')}/admin/`);
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,49 +0,0 @@
|
|||||||
const frontLoadingDelay = Cypress.config('frontLoadingDelay');
|
|
||||||
const registerData = {
|
|
||||||
username: 'admin',
|
|
||||||
email: 'admin@strapi.io',
|
|
||||||
password: 'pcw123',
|
|
||||||
confirmPassword: 'pcw123',
|
|
||||||
};
|
|
||||||
let jwt;
|
|
||||||
let userId;
|
|
||||||
const frontEndUrl = Cypress.config('baseUrl');
|
|
||||||
|
|
||||||
describe('Test register page', () => {
|
|
||||||
after(() => {
|
|
||||||
if (userId) {
|
|
||||||
cy.deleteUser(userId, jwt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Visits /admin and should be redirected to register page', () => {
|
|
||||||
cy.visit('/admin').wait(frontLoadingDelay);
|
|
||||||
|
|
||||||
// Check if the user is being redirected to /register
|
|
||||||
cy.url().should('include', '/users-permissions/auth/register');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Should redirect to /register when trying to hit /login', () => {
|
|
||||||
cy.visit('/admin/plugins/users-permissions/auth/login').wait(frontLoadingDelay);
|
|
||||||
|
|
||||||
cy.url().should('include', '/users-permissions/auth/register');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Should register the admin user', () => {
|
|
||||||
Object.keys(registerData).map(key => {
|
|
||||||
return cy.get(`#${key}`).type(registerData[key]);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Submit form
|
|
||||||
cy.submitForm()
|
|
||||||
.window()
|
|
||||||
.should(win => {
|
|
||||||
const userInfo = JSON.parse(win.sessionStorage.getItem('userInfo'));
|
|
||||||
|
|
||||||
jwt = JSON.parse(win.sessionStorage.getItem('jwtToken'));
|
|
||||||
userId = userInfo._id || userInfo.id;
|
|
||||||
expect(win.sessionStorage.getItem('jwtToken')).to.be.ok;
|
|
||||||
});
|
|
||||||
cy.url().should('equal', `${frontEndUrl}/admin/`);
|
|
||||||
});
|
|
||||||
});
|
|
@ -76,7 +76,7 @@ module.exports = {
|
|||||||
S3.upload(
|
S3.upload(
|
||||||
{
|
{
|
||||||
Key: `${path}${file.hash}${file.ext}`,
|
Key: `${path}${file.hash}${file.ext}`,
|
||||||
Body: new Buffer(file.buffer, 'binary'),
|
Body: Buffer.from(file.buffer, 'binary'),
|
||||||
ACL: 'public-read',
|
ACL: 'public-read',
|
||||||
ContentType: file.mime,
|
ContentType: file.mime,
|
||||||
},
|
},
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
"description": "Shared utilities for the Strapi packages",
|
"description": "Shared utilities for the Strapi packages",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"knex",
|
|
||||||
"strapi",
|
"strapi",
|
||||||
"utilities",
|
"utilities",
|
||||||
"utils",
|
"utils",
|
||||||
@ -16,7 +15,6 @@
|
|||||||
"main": "./lib",
|
"main": "./lib",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"date-fns": "^2.8.1",
|
"date-fns": "^2.8.1",
|
||||||
"knex": "^0.16.5",
|
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.11",
|
||||||
"pino": "^4.7.1",
|
"pino": "^4.7.1",
|
||||||
"pluralize": "^7.0.0",
|
"pluralize": "^7.0.0",
|
||||||
|
@ -4,6 +4,7 @@ const path = require('path');
|
|||||||
const fs = require('fs-extra');
|
const fs = require('fs-extra');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const { green, yellow } = require('chalk');
|
const { green, yellow } = require('chalk');
|
||||||
|
// eslint-disable-next-line node/no-extraneous-require
|
||||||
const strapiAdmin = require('strapi-admin');
|
const strapiAdmin = require('strapi-admin');
|
||||||
const loadConfigFile = require('../load/load-config-files');
|
const loadConfigFile = require('../load/load-config-files');
|
||||||
const addSlash = require('../utils/addSlash');
|
const addSlash = require('../utils/addSlash');
|
||||||
|
@ -69,7 +69,6 @@ module.exports = async function({ build, watchAdmin }) {
|
|||||||
case 'stop':
|
case 'stop':
|
||||||
worker.kill();
|
worker.kill();
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,55 +24,113 @@ const logger = require('strapi-utils').logger;
|
|||||||
|
|
||||||
/* eslint-disable prefer-template */
|
/* eslint-disable prefer-template */
|
||||||
/* eslint-disable no-console */
|
/* eslint-disable no-console */
|
||||||
module.exports = function () {
|
module.exports = function() {
|
||||||
const HOME = process.env[process.platform === 'win32' ? 'USERPROFILE' : 'HOME'];
|
const HOME =
|
||||||
|
process.env[process.platform === 'win32' ? 'USERPROFILE' : 'HOME'];
|
||||||
|
|
||||||
fs.access(path.resolve(HOME, '.strapirc'), fs.F_OK | fs.R_OK | fs.W_OK, err => {
|
fs.access(
|
||||||
if (err) {
|
path.resolve(HOME, '.strapirc'),
|
||||||
if (err.code === 'ENOENT') {
|
fs.F_OK | fs.R_OK | fs.W_OK,
|
||||||
logger.error('No `.strapirc` file detected at `' + HOME + '`.');
|
err => {
|
||||||
logger.error('Execute `$ strapi config` to create one.');
|
if (err) {
|
||||||
} else if (err.code === 'EACCES') {
|
if (err.code === 'ENOENT') {
|
||||||
logger.error('Impossible to access the `.strapirc` file at `' + HOME + '`.');
|
logger.error('No `.strapirc` file detected at `' + HOME + '`.');
|
||||||
logger.error('Please check read/write permissions before execute `$ strapi update`.');
|
logger.error('Execute `$ strapi config` to create one.');
|
||||||
}
|
} else if (err.code === 'EACCES') {
|
||||||
process.exit(1);
|
logger.error(
|
||||||
} else {
|
'Impossible to access the `.strapirc` file at `' + HOME + '`.'
|
||||||
const config = JSON.parse(fs.readFileSync(path.resolve(HOME, '.strapirc')));
|
);
|
||||||
_.forEach(config.generators, (info, name) => {
|
logger.error(
|
||||||
try {
|
'Please check read/write permissions before execute `$ strapi update`.'
|
||||||
process.chdir(path.resolve(__dirname, '..', 'node_modules', 'strapi-generate-' + name));
|
);
|
||||||
logger.debug('Pulling the latest updates of `strapi-generate-' + name + '`.');
|
}
|
||||||
shell.exec(`git pull ${info.remote} ${info.branch}`, (code) => {
|
process.exit(1);
|
||||||
if (code) {
|
} else {
|
||||||
logger.error('Impossible to update `strapi-generate-' + name + '`.');
|
const config = JSON.parse(
|
||||||
} else {
|
fs.readFileSync(path.resolve(HOME, '.strapirc'))
|
||||||
logger.info('Successfully updated `strapi-generate-' + name + '`.');
|
);
|
||||||
}
|
_.forEach(config.generators, (info, name) => {
|
||||||
});
|
try {
|
||||||
} catch (err) {
|
process.chdir(
|
||||||
process.chdir(path.resolve(__dirname, '..', 'node_modules'));
|
path.resolve(
|
||||||
logger.debug('Cloning the `strapi-generate-' + name + '` repository for the first time...');
|
__dirname,
|
||||||
shell.exec(`git clone ${info.repository} strapi-generate-${name}`, (code, stdout, stderr) => {
|
'..',
|
||||||
if (code) {
|
'node_modules',
|
||||||
logger.error('Impossible to clone the `strapi-generate-' + name + '` repository.');
|
'strapi-generate-' + name
|
||||||
console.log(stderr);
|
)
|
||||||
} else {
|
);
|
||||||
logger.info('Successfully cloned the `strapi-generate-' + name + '` repository.');
|
logger.debug(
|
||||||
process.chdir(path.resolve(__dirname, '..', 'node_modules', 'strapi-generate-' + name));
|
'Pulling the latest updates of `strapi-generate-' + name + '`.'
|
||||||
logger.debug('Installing dependencies for `strapi-generate-' + name + '`...');
|
);
|
||||||
shell.exec('npm install', (code, stdout, stderr) => {
|
shell.exec(`git pull ${info.remote} ${info.branch}`, code => {
|
||||||
|
if (code) {
|
||||||
|
logger.error(
|
||||||
|
'Impossible to update `strapi-generate-' + name + '`.'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
logger.info(
|
||||||
|
'Successfully updated `strapi-generate-' + name + '`.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
process.chdir(path.resolve(__dirname, '..', 'node_modules'));
|
||||||
|
logger.debug(
|
||||||
|
'Cloning the `strapi-generate-' +
|
||||||
|
name +
|
||||||
|
'` repository for the first time...'
|
||||||
|
);
|
||||||
|
shell.exec(
|
||||||
|
`git clone ${info.repository} strapi-generate-${name}`,
|
||||||
|
(code, stdout, stderr) => {
|
||||||
if (code) {
|
if (code) {
|
||||||
logger.error('Impossible to install dependencies for `strapi-generate-' + name + '`.');
|
logger.error(
|
||||||
|
'Impossible to clone the `strapi-generate-' +
|
||||||
|
name +
|
||||||
|
'` repository.'
|
||||||
|
);
|
||||||
console.log(stderr);
|
console.log(stderr);
|
||||||
} else {
|
} else {
|
||||||
logger.info('Successfully installed dependencies for `strapi-generate-' + name + '`.');
|
logger.info(
|
||||||
|
'Successfully cloned the `strapi-generate-' +
|
||||||
|
name +
|
||||||
|
'` repository.'
|
||||||
|
);
|
||||||
|
process.chdir(
|
||||||
|
path.resolve(
|
||||||
|
__dirname,
|
||||||
|
'..',
|
||||||
|
'node_modules',
|
||||||
|
'strapi-generate-' + name
|
||||||
|
)
|
||||||
|
);
|
||||||
|
logger.debug(
|
||||||
|
'Installing dependencies for `strapi-generate-' +
|
||||||
|
name +
|
||||||
|
'`...'
|
||||||
|
);
|
||||||
|
shell.exec('npm install', (code, stdout, stderr) => {
|
||||||
|
if (code) {
|
||||||
|
logger.error(
|
||||||
|
'Impossible to install dependencies for `strapi-generate-' +
|
||||||
|
name +
|
||||||
|
'`.'
|
||||||
|
);
|
||||||
|
console.log(stderr);
|
||||||
|
} else {
|
||||||
|
logger.info(
|
||||||
|
'Successfully installed dependencies for `strapi-generate-' +
|
||||||
|
name +
|
||||||
|
'`.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
}
|
);
|
||||||
});
|
}
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
});
|
);
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* eslint-disable no-useless-escape */
|
/* eslint-disable no-useless-escape */
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
// eslint-disable-next-line node/no-extraneous-require
|
||||||
const strapiAdmin = require('strapi-admin');
|
const strapiAdmin = require('strapi-admin');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -10,18 +9,23 @@ const { machineIdSync } = require('node-machine-id');
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* No need to worry about this file, we only retrieve anonymous data here.
|
* No need to worry about this file, we only retrieve anonymous data here.
|
||||||
* It allows us to know on how many times the package has been installed globally.
|
* It allows us to know on how many times the package has been installed globally.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (process.env.npm_config_global === 'true' || JSON.parse(process.env.npm_config_argv).original.includes('global')) {
|
if (
|
||||||
|
process.env.npm_config_global === 'true' ||
|
||||||
|
JSON.parse(process.env.npm_config_argv).original.includes('global')
|
||||||
|
) {
|
||||||
fetch('https://analytics.strapi.io/track', {
|
fetch('https://analytics.strapi.io/track', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: JSON.stringify({ event: 'didInstallStrapi', deviceId: machineIdSync() }),
|
body: JSON.stringify({
|
||||||
headers: { 'Content-Type': 'application/json' }
|
event: 'didInstallStrapi',
|
||||||
})
|
deviceId: machineIdSync(),
|
||||||
.catch(() => {});
|
}),
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
}).catch(() => {});
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
//...
|
//...
|
||||||
}
|
}
|
||||||
|
213
yarn.lock
213
yarn.lock
@ -2464,11 +2464,6 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.18.tgz#6a60435d4663e290f3709898a4f75014f279c4d6"
|
resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.18.tgz#6a60435d4663e290f3709898a4f75014f279c4d6"
|
||||||
integrity sha512-OTPWHmsyW18BhrnG5x8F7PzeZ2nFxmHGb42bZn79P9hl+GI5cMzyPgQTwNjbem0lJhoru/8vtjAFCUOu3+gE2w==
|
integrity sha512-OTPWHmsyW18BhrnG5x8F7PzeZ2nFxmHGb42bZn79P9hl+GI5cMzyPgQTwNjbem0lJhoru/8vtjAFCUOu3+gE2w==
|
||||||
|
|
||||||
"@types/bluebird@^3.5.26":
|
|
||||||
version "3.5.27"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.27.tgz#61eb4d75dc6bfbce51cf49ee9bbebe941b2cb5d0"
|
|
||||||
integrity sha512-6BmYWSBea18+tSjjSC3QIyV93ZKAeNWGM7R6aYt1ryTZXrlHF+QLV0G2yV0viEGVyRkyQsWfMoJ0k/YghBX5sQ==
|
|
||||||
|
|
||||||
"@types/body-parser@*":
|
"@types/body-parser@*":
|
||||||
version "1.17.1"
|
version "1.17.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.1.tgz#18fcf61768fb5c30ccc508c21d6fd2e8b3bf7897"
|
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.1.tgz#18fcf61768fb5c30ccc508c21d6fd2e8b3bf7897"
|
||||||
@ -4028,11 +4023,16 @@ bluebird@3.5.1:
|
|||||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
|
||||||
integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==
|
integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==
|
||||||
|
|
||||||
bluebird@^3.1.1, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.4, bluebird@^3.5.5:
|
bluebird@^3.1.1, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5:
|
||||||
version "3.7.0"
|
version "3.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.0.tgz#56a6a886e03f6ae577cffedeb524f8f2450293cf"
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.0.tgz#56a6a886e03f6ae577cffedeb524f8f2450293cf"
|
||||||
integrity sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg==
|
integrity sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg==
|
||||||
|
|
||||||
|
bluebird@^3.7.2:
|
||||||
|
version "3.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
|
||||||
|
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
|
||||||
|
|
||||||
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
|
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
|
||||||
version "4.11.8"
|
version "4.11.8"
|
||||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
|
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
|
||||||
@ -4584,6 +4584,21 @@ cheerio@^1.0.0-rc.2, cheerio@^1.0.0-rc.3:
|
|||||||
lodash "^4.15.0"
|
lodash "^4.15.0"
|
||||||
parse5 "^3.0.1"
|
parse5 "^3.0.1"
|
||||||
|
|
||||||
|
chokidar@3.3.1:
|
||||||
|
version "3.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450"
|
||||||
|
integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==
|
||||||
|
dependencies:
|
||||||
|
anymatch "~3.1.1"
|
||||||
|
braces "~3.0.2"
|
||||||
|
glob-parent "~5.1.0"
|
||||||
|
is-binary-path "~2.1.0"
|
||||||
|
is-glob "~4.0.1"
|
||||||
|
normalize-path "~3.0.0"
|
||||||
|
readdirp "~3.3.0"
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents "~2.1.2"
|
||||||
|
|
||||||
chokidar@^2.0.2, chokidar@^2.1.2, chokidar@^2.1.8:
|
chokidar@^2.0.2, chokidar@^2.1.2, chokidar@^2.1.8:
|
||||||
version "2.1.8"
|
version "2.1.8"
|
||||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
|
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
|
||||||
@ -4885,10 +4900,10 @@ color@^3.0.0:
|
|||||||
color-convert "^1.9.1"
|
color-convert "^1.9.1"
|
||||||
color-string "^1.5.2"
|
color-string "^1.5.2"
|
||||||
|
|
||||||
colorette@1.0.7:
|
colorette@1.1.0:
|
||||||
version "1.0.7"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.0.7.tgz#7adf43c445ee63a541b4a4aef7d13f03df1e0cc0"
|
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.1.0.tgz#1f943e5a357fac10b4e0f5aaef3b14cdc1af6ec7"
|
||||||
integrity sha512-KeK4klsvAgdODAjFPm6QLzvStizJqlxMBtVo4KQMCgk5tt/tf9rAzxmxLHNRynJg3tJjkKGKbHx3j4HLox27Lw==
|
integrity sha512-6S062WDQUXi6hOfkO/sBPVwE5ASXY4G2+b4atvhJfSsuUUhIaUKlkjLe9692Ipyt5/a+IPF5aVTu3V5gvXq5cg==
|
||||||
|
|
||||||
colors@^1.1.2, colors@^1.3.3:
|
colors@^1.1.2, colors@^1.3.3:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
@ -4940,6 +4955,11 @@ commander@^2.11.0, commander@^2.19.0, commander@^2.20.0:
|
|||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||||
|
|
||||||
|
commander@^4.1.0:
|
||||||
|
version "4.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.0.tgz#545983a0603fe425bc672d66c9e3c89c42121a83"
|
||||||
|
integrity sha512-NIQrwvv9V39FHgGFm36+U9SMQzbiHvU79k+iADraJTpmrFFfx7Ds0IvDoAdZsDrknlkRk14OYoWXb57uTh7/sw==
|
||||||
|
|
||||||
commander@~2.19.0:
|
commander@~2.19.0:
|
||||||
version "2.19.0"
|
version "2.19.0"
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
|
||||||
@ -6756,6 +6776,14 @@ eslint-module-utils@^2.4.1:
|
|||||||
debug "^2.6.9"
|
debug "^2.6.9"
|
||||||
pkg-dir "^2.0.0"
|
pkg-dir "^2.0.0"
|
||||||
|
|
||||||
|
eslint-plugin-es@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz#98cb1bc8ab0aa807977855e11ad9d1c9422d014b"
|
||||||
|
integrity sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==
|
||||||
|
dependencies:
|
||||||
|
eslint-utils "^2.0.0"
|
||||||
|
regexpp "^3.0.0"
|
||||||
|
|
||||||
eslint-plugin-import@^2.19.1:
|
eslint-plugin-import@^2.19.1:
|
||||||
version "2.19.1"
|
version "2.19.1"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.19.1.tgz#5654e10b7839d064dd0d46cd1b88ec2133a11448"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.19.1.tgz#5654e10b7839d064dd0d46cd1b88ec2133a11448"
|
||||||
@ -6789,6 +6817,18 @@ eslint-plugin-jsx-a11y@^6.2.3:
|
|||||||
has "^1.0.3"
|
has "^1.0.3"
|
||||||
jsx-ast-utils "^2.2.1"
|
jsx-ast-utils "^2.2.1"
|
||||||
|
|
||||||
|
eslint-plugin-node@11.0.0:
|
||||||
|
version "11.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz#365944bb0804c5d1d501182a9bc41a0ffefed726"
|
||||||
|
integrity sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg==
|
||||||
|
dependencies:
|
||||||
|
eslint-plugin-es "^3.0.0"
|
||||||
|
eslint-utils "^2.0.0"
|
||||||
|
ignore "^5.1.1"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
resolve "^1.10.1"
|
||||||
|
semver "^6.1.0"
|
||||||
|
|
||||||
eslint-plugin-react-hooks@^2.0.0:
|
eslint-plugin-react-hooks@^2.0.0:
|
||||||
version "2.1.2"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.1.2.tgz#1358d2acb2c5e02b7e90c37e611ac258a488e3a7"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.1.2.tgz#1358d2acb2c5e02b7e90c37e611ac258a488e3a7"
|
||||||
@ -6837,6 +6877,13 @@ eslint-utils@^1.4.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
eslint-visitor-keys "^1.0.0"
|
eslint-visitor-keys "^1.0.0"
|
||||||
|
|
||||||
|
eslint-utils@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd"
|
||||||
|
integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==
|
||||||
|
dependencies:
|
||||||
|
eslint-visitor-keys "^1.1.0"
|
||||||
|
|
||||||
eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
|
eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
|
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
|
||||||
@ -6885,6 +6932,11 @@ eslint@^6.3.0:
|
|||||||
text-table "^0.2.0"
|
text-table "^0.2.0"
|
||||||
v8-compile-cache "^2.0.3"
|
v8-compile-cache "^2.0.3"
|
||||||
|
|
||||||
|
esm@^3.2.25:
|
||||||
|
version "3.2.25"
|
||||||
|
resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"
|
||||||
|
integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
|
||||||
|
|
||||||
espree@^6.1.1:
|
espree@^6.1.1:
|
||||||
version "6.1.1"
|
version "6.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.1.tgz#7f80e5f7257fc47db450022d723e356daeb1e5de"
|
resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.1.tgz#7f80e5f7257fc47db450022d723e356daeb1e5de"
|
||||||
@ -7619,6 +7671,15 @@ fs-extra@4.0.1:
|
|||||||
jsonfile "^3.0.0"
|
jsonfile "^3.0.0"
|
||||||
universalify "^0.1.0"
|
universalify "^0.1.0"
|
||||||
|
|
||||||
|
fs-extra@8.1.0, fs-extra@^8.0.1, fs-extra@^8.1.0:
|
||||||
|
version "8.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
|
||||||
|
integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
|
||||||
|
dependencies:
|
||||||
|
graceful-fs "^4.2.0"
|
||||||
|
jsonfile "^4.0.0"
|
||||||
|
universalify "^0.1.0"
|
||||||
|
|
||||||
fs-extra@^7.0.0, fs-extra@^7.0.1:
|
fs-extra@^7.0.0, fs-extra@^7.0.1:
|
||||||
version "7.0.1"
|
version "7.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
|
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
|
||||||
@ -7628,15 +7689,6 @@ fs-extra@^7.0.0, fs-extra@^7.0.1:
|
|||||||
jsonfile "^4.0.0"
|
jsonfile "^4.0.0"
|
||||||
universalify "^0.1.0"
|
universalify "^0.1.0"
|
||||||
|
|
||||||
fs-extra@^8.0.1, fs-extra@^8.1.0:
|
|
||||||
version "8.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
|
|
||||||
integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
|
|
||||||
dependencies:
|
|
||||||
graceful-fs "^4.2.0"
|
|
||||||
jsonfile "^4.0.0"
|
|
||||||
universalify "^0.1.0"
|
|
||||||
|
|
||||||
fs-minipass@^1.2.5:
|
fs-minipass@^1.2.5:
|
||||||
version "1.2.7"
|
version "1.2.7"
|
||||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
|
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
|
||||||
@ -7672,6 +7724,11 @@ fsevents@~2.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.1.tgz#74c64e21df71721845d0c44fe54b7f56b82995a9"
|
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.1.tgz#74c64e21df71721845d0c44fe54b7f56b82995a9"
|
||||||
integrity sha512-4FRPXWETxtigtJW/gxzEDsX1LVbPAM93VleB83kZB+ellqbHMkyt2aJfuzNLRvFPnGi6bcE5SvfxgbXPeKteJw==
|
integrity sha512-4FRPXWETxtigtJW/gxzEDsX1LVbPAM93VleB83kZB+ellqbHMkyt2aJfuzNLRvFPnGi6bcE5SvfxgbXPeKteJw==
|
||||||
|
|
||||||
|
fsevents@~2.1.2:
|
||||||
|
version "2.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805"
|
||||||
|
integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==
|
||||||
|
|
||||||
ftp@~0.3.10:
|
ftp@~0.3.10:
|
||||||
version "0.3.10"
|
version "0.3.10"
|
||||||
resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d"
|
resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d"
|
||||||
@ -7850,10 +7907,10 @@ get-value@^2.0.3, get-value@^2.0.6:
|
|||||||
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
|
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
|
||||||
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
|
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
|
||||||
|
|
||||||
getopts@2.2.3:
|
getopts@2.2.5:
|
||||||
version "2.2.3"
|
version "2.2.5"
|
||||||
resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.3.tgz#11d229775e2ec2067ed8be6fcc39d9b4bf39cf7d"
|
resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b"
|
||||||
integrity sha512-viEcb8TpgeG05+Nqo5EzZ8QR0hxdyrYDp6ZSTZqe2M/h53Bk036NmqG38Vhf5RGirC/Of9Xql+v66B2gp256SQ==
|
integrity sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==
|
||||||
|
|
||||||
getos@3.1.0:
|
getos@3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
@ -7958,6 +8015,18 @@ glob@7.1.2:
|
|||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
path-is-absolute "^1.0.0"
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
|
glob@7.1.6:
|
||||||
|
version "7.1.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||||
|
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
|
||||||
|
dependencies:
|
||||||
|
fs.realpath "^1.0.0"
|
||||||
|
inflight "^1.0.4"
|
||||||
|
inherits "2"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
once "^1.3.0"
|
||||||
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
glob@^5.0.15:
|
glob@^5.0.15:
|
||||||
version "5.0.15"
|
version "5.0.15"
|
||||||
resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
|
resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
|
||||||
@ -8863,7 +8932,7 @@ inflight@^1.0.4:
|
|||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
wrappy "1"
|
wrappy "1"
|
||||||
|
|
||||||
inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
|
inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4:
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||||
@ -8924,11 +8993,16 @@ internal-ip@^4.3.0:
|
|||||||
default-gateway "^4.2.0"
|
default-gateway "^4.2.0"
|
||||||
ipaddr.js "^1.9.0"
|
ipaddr.js "^1.9.0"
|
||||||
|
|
||||||
interpret@1.2.0, interpret@^1.0.0, interpret@^1.2.0:
|
interpret@1.2.0, interpret@^1.0.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
|
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
|
||||||
integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
|
integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
|
||||||
|
|
||||||
|
interpret@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.0.0.tgz#b783ffac0b8371503e9ab39561df223286aa5433"
|
||||||
|
integrity sha512-e0/LknJ8wpMMhTiWcjivB+ESwIuvHnBSlBbmP/pSb8CQJldoj1p2qv7xGZ/+BtbTziYRFSz8OsvdbiX45LtYQA==
|
||||||
|
|
||||||
intl-format-cache@^2.0.5:
|
intl-format-cache@^2.0.5:
|
||||||
version "2.2.9"
|
version "2.2.9"
|
||||||
resolved "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-2.2.9.tgz#fb560de20c549cda20b569cf1ffb6dc62b5b93b4"
|
resolved "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-2.2.9.tgz#fb560de20c549cda20b569cf1ffb6dc62b5b93b4"
|
||||||
@ -10253,28 +10327,27 @@ kleur@^3.0.3:
|
|||||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
||||||
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
||||||
|
|
||||||
knex@^0.16.5:
|
knex@^0.20.0:
|
||||||
version "0.16.5"
|
version "0.20.8"
|
||||||
resolved "https://registry.yarnpkg.com/knex/-/knex-0.16.5.tgz#8ba3806289a5d543dd42ed21420a31c578476993"
|
resolved "https://registry.yarnpkg.com/knex/-/knex-0.20.8.tgz#b41c72773185e1032f4a77074198413521827860"
|
||||||
integrity sha512-1RVxMU8zGOBqgmXlAvs8vohg9MD14iiRZZPe0IeQXd554n4xxPmoMkbH4hlFeqfM6eOdFE3AVqVSncL3YuocqA==
|
integrity sha512-fLiSg5PIBisORs0M+UGjg2s1P/E1BrYvb/NkSVk6Y90HJujkqLufSC6ag+hDgXqW73mFAF283M6+q3/NW0TrHw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/polyfill" "^7.4.3"
|
bluebird "^3.7.2"
|
||||||
"@types/bluebird" "^3.5.26"
|
colorette "1.1.0"
|
||||||
bluebird "^3.5.4"
|
commander "^4.1.0"
|
||||||
colorette "1.0.7"
|
|
||||||
commander "^2.20.0"
|
|
||||||
debug "4.1.1"
|
debug "4.1.1"
|
||||||
getopts "2.2.3"
|
esm "^3.2.25"
|
||||||
inherits "~2.0.3"
|
getopts "2.2.5"
|
||||||
interpret "^1.2.0"
|
inherits "~2.0.4"
|
||||||
|
interpret "^2.0.0"
|
||||||
liftoff "3.1.0"
|
liftoff "3.1.0"
|
||||||
lodash "^4.17.11"
|
lodash "^4.17.15"
|
||||||
mkdirp "^0.5.1"
|
mkdirp "^0.5.1"
|
||||||
pg-connection-string "2.0.0"
|
pg-connection-string "2.1.0"
|
||||||
tarn "^1.1.5"
|
tarn "^2.0.0"
|
||||||
tildify "1.2.0"
|
tildify "2.0.0"
|
||||||
uuid "^3.3.2"
|
uuid "^3.3.3"
|
||||||
v8flags "^3.1.2"
|
v8flags "^3.1.3"
|
||||||
|
|
||||||
koa-body@^4.1.0:
|
koa-body@^4.1.0:
|
||||||
version "4.1.1"
|
version "4.1.1"
|
||||||
@ -12993,10 +13066,10 @@ pg-connection-string@0.1.3:
|
|||||||
resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-0.1.3.tgz#da1847b20940e42ee1492beaf65d49d91b245df7"
|
resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-0.1.3.tgz#da1847b20940e42ee1492beaf65d49d91b245df7"
|
||||||
integrity sha1-2hhHsglA5C7hSSvq9l1J2RskXfc=
|
integrity sha1-2hhHsglA5C7hSSvq9l1J2RskXfc=
|
||||||
|
|
||||||
pg-connection-string@2.0.0:
|
pg-connection-string@2.1.0:
|
||||||
version "2.0.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.0.0.tgz#3eefe5997e06d94821e4d502e42b6a1c73f8df82"
|
resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.1.0.tgz#e07258f280476540b24818ebb5dca29e101ca502"
|
||||||
integrity sha1-Pu/lmX4G2Ugh5NUC5CtqHHP434I=
|
integrity sha512-bhlV7Eq09JrRIvo1eKngpwuqKtJnNhZdpdOlvrPrA4dxqXPjxSrbNrfnIDmTpwMyRszrcV4kU5ZA4mMsQUrjdg==
|
||||||
|
|
||||||
pg-int8@1.0.1:
|
pg-int8@1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
@ -13044,6 +13117,11 @@ picomatch@^2.0.4, picomatch@^2.0.5:
|
|||||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6"
|
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6"
|
||||||
integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==
|
integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==
|
||||||
|
|
||||||
|
picomatch@^2.0.7:
|
||||||
|
version "2.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a"
|
||||||
|
integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==
|
||||||
|
|
||||||
pidtree@^0.3.0:
|
pidtree@^0.3.0:
|
||||||
version "0.3.0"
|
version "0.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b"
|
resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b"
|
||||||
@ -14561,6 +14639,13 @@ readdirp@~3.1.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
picomatch "^2.0.4"
|
picomatch "^2.0.4"
|
||||||
|
|
||||||
|
readdirp@~3.3.0:
|
||||||
|
version "3.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17"
|
||||||
|
integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==
|
||||||
|
dependencies:
|
||||||
|
picomatch "^2.0.7"
|
||||||
|
|
||||||
realpath-native@^1.1.0:
|
realpath-native@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c"
|
resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c"
|
||||||
@ -14717,6 +14802,11 @@ regexpp@^2.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
|
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
|
||||||
integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
|
integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
|
||||||
|
|
||||||
|
regexpp@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e"
|
||||||
|
integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==
|
||||||
|
|
||||||
regexpu-core@^1.0.0:
|
regexpu-core@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
|
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
|
||||||
@ -15037,6 +15127,13 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2
|
|||||||
dependencies:
|
dependencies:
|
||||||
path-parse "^1.0.6"
|
path-parse "^1.0.6"
|
||||||
|
|
||||||
|
resolve@^1.10.1:
|
||||||
|
version "1.15.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5"
|
||||||
|
integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==
|
||||||
|
dependencies:
|
||||||
|
path-parse "^1.0.6"
|
||||||
|
|
||||||
restore-cursor@^1.0.1:
|
restore-cursor@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
|
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
|
||||||
@ -15112,7 +15209,7 @@ rimraf@2.6.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
glob "^7.1.3"
|
glob "^7.1.3"
|
||||||
|
|
||||||
rimraf@^3.0.0:
|
rimraf@3.0.0, rimraf@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b"
|
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b"
|
||||||
integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==
|
integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==
|
||||||
@ -16710,10 +16807,10 @@ tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.8:
|
|||||||
safe-buffer "^5.1.2"
|
safe-buffer "^5.1.2"
|
||||||
yallist "^3.0.3"
|
yallist "^3.0.3"
|
||||||
|
|
||||||
tarn@^1.1.5:
|
tarn@^2.0.0:
|
||||||
version "1.1.5"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/tarn/-/tarn-1.1.5.tgz#7be88622e951738b9fa3fb77477309242cdddc2d"
|
resolved "https://registry.yarnpkg.com/tarn/-/tarn-2.0.0.tgz#c68499f69881f99ae955b4317ca7d212d942fdee"
|
||||||
integrity sha512-PMtJ3HCLAZeedWjJPgGnCvcphbCOMbtZpjKgLq3qM5Qq9aQud+XHrL0WlrlgnTyS8U+jrjGbEXprFcQrxPy52g==
|
integrity sha512-7rNMCZd3s9bhQh47ksAQd92ADFcJUjjbyOvyFjNLwTPpGieFHMC84S+LOzw0fx1uh6hnDz/19r8CPMnIjJlMMA==
|
||||||
|
|
||||||
teeny-request@^3.11.3:
|
teeny-request@^3.11.3:
|
||||||
version "3.11.3"
|
version "3.11.3"
|
||||||
@ -16875,12 +16972,10 @@ thunky@^1.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826"
|
resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826"
|
||||||
integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==
|
integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==
|
||||||
|
|
||||||
tildify@1.2.0:
|
tildify@2.0.0:
|
||||||
version "1.2.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a"
|
resolved "https://registry.yarnpkg.com/tildify/-/tildify-2.0.0.tgz#f205f3674d677ce698b7067a99e949ce03b4754a"
|
||||||
integrity sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=
|
integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==
|
||||||
dependencies:
|
|
||||||
os-homedir "^1.0.0"
|
|
||||||
|
|
||||||
timed-out@^4.0.0:
|
timed-out@^4.0.0:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
@ -17433,7 +17528,7 @@ v8-compile-cache@^2.0.3:
|
|||||||
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
|
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
|
||||||
integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
|
integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
|
||||||
|
|
||||||
v8flags@^3.1.2:
|
v8flags@^3.1.3:
|
||||||
version "3.1.3"
|
version "3.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8"
|
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8"
|
||||||
integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==
|
integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==
|
||||||
|
Loading…
x
Reference in New Issue
Block a user