From b9d0786eff77e026f30450a3adc36f1f8fcba985 Mon Sep 17 00:00:00 2001 From: Alexandre Bodin Date: Mon, 8 Aug 2022 15:37:37 +0200 Subject: [PATCH 01/13] Use @strapi/eslint-config --- .eslintrc.back.js | 6 +- package.json | 8 +- yarn.lock | 396 ++++++++++++++++++++++++++++++++++------------ 3 files changed, 299 insertions(+), 111 deletions(-) diff --git a/.eslintrc.back.js b/.eslintrc.back.js index 44328c8637..b19daeefa7 100644 --- a/.eslintrc.back.js +++ b/.eslintrc.back.js @@ -2,11 +2,7 @@ module.exports = { extends: [ - 'eslint:recommended', - 'prettier', - 'plugin:import/errors', - 'plugin:import/warnings', - 'plugin:node/recommended', + '@strapi/eslint-config/back', // 'plugin:jsdoc/recommended', ], plugins: ['jsdoc'], diff --git a/package.json b/package.json index 183757cbeb..5a2d09cac8 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "@babel/polyfill": "7.12.1" }, "devDependencies": { + "@strapi/eslint-config": "0.1.0", "@swc/core": "1.2.224", "@swc/jest": "0.2.22", "@testing-library/react": "11.2.7", @@ -82,10 +83,9 @@ "chokidar": "3.5.3", "cross-env": "7.0.3", "dotenv": "14.2.0", - "eslint": "7.32.0", - "eslint-config-airbnb": "18.2.1", - "eslint-config-airbnb-base": "14.2.1", - "eslint-config-prettier": "6.15.0", + "eslint": "8.21.0", + "eslint-config-airbnb-base": "15.0.0", + "eslint-config-prettier": "8.5.0", "eslint-plugin-import": "2.26.0", "eslint-plugin-jsdoc": "36.1.1", "eslint-plugin-jsx-a11y": "6.6.1", diff --git a/yarn.lock b/yarn.lock index 7ea8939860..b98d210825 100644 --- a/yarn.lock +++ b/yarn.lock @@ -145,13 +145,6 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.4.0" -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" @@ -553,7 +546,7 @@ "@babel/traverse" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": +"@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== @@ -567,6 +560,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.10.tgz#94b5f8522356e69e8277276adf67ed280c90ecc1" integrity sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg== +"@babel/parser@^7.0.0", "@babel/parser@^7.18.11": + version "7.18.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9" + integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -1486,6 +1484,22 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" +"@babel/traverse@^7.0.0": + version "7.18.11" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.11.tgz#3d51f2afbd83ecf9912bcbb5c4d94e3d2ddaa16f" + integrity sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.10" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.11" + "@babel/types" "^7.18.10" + debug "^4.1.0" + globals "^11.1.0" + "@babel/traverse@^7.1.0", "@babel/traverse@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" @@ -1824,19 +1838,19 @@ esquery "^1.4.0" jsdoc-type-pratt-parser "1.1.1" -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@eslint/eslintrc@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" + integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^9.3.2" + globals "^13.15.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" "@fingerprintjs/fingerprintjs@3.3.3": @@ -1997,16 +2011,21 @@ dependencies: tslib "^2.4.0" -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== +"@humanwhocodes/config-array@^0.10.4": + version "0.10.4" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" + integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" + "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" minimatch "^3.0.4" -"@humanwhocodes/object-schema@^1.2.0": +"@humanwhocodes/gitignore-to-minimatch@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" + integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== + +"@humanwhocodes/object-schema@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== @@ -5192,6 +5211,26 @@ compute-scroll-into-view "^1.0.17" prop-types "^15.7.2" +"@strapi/eslint-config@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@strapi/eslint-config/-/eslint-config-0.1.0.tgz#7d42ddcc8046ded7222ca639bb36957cfc2c8d1b" + integrity sha512-eEGyGt0L5hJ+Lvik9VhRKxlwftSZQZIBCJKWkT8bhxxxN9fUcRuGvXb6Gqlj4TOatNkGiHAbVs4lZkE01KsA9g== + dependencies: + "@typescript-eslint/eslint-plugin" "^5.14.0" + "@typescript-eslint/parser" "^5.14.0" + babel-eslint "10.0.0" + eslint "^8.10.0" + eslint-config-airbnb "^19.0.4" + eslint-config-airbnb-base "^15.0.0" + eslint-config-airbnb-typescript "^16.1.1" + eslint-config-prettier "^8.5.0" + eslint-plugin-import "^2.25.4" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-node "^11.1.0" + eslint-plugin-prettier "^4.0.0" + eslint-plugin-react "^7.29.3" + eslint-plugin-react-hooks "^4.3.0" + "@strapi/icons@1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@strapi/icons/-/icons-1.2.1.tgz#780e74a8284bc18c268e61b37ff8a1b75d49c9b3" @@ -6049,6 +6088,86 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^5.14.0": + version "5.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.32.0.tgz#e27e38cffa4a61226327c874a7be965e9a861624" + integrity sha512-CHLuz5Uz7bHP2WgVlvoZGhf0BvFakBJKAD/43Ty0emn4wXWv5k01ND0C0fHcl/Im8Td2y/7h44E9pca9qAu2ew== + dependencies: + "@typescript-eslint/scope-manager" "5.32.0" + "@typescript-eslint/type-utils" "5.32.0" + "@typescript-eslint/utils" "5.32.0" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.14.0": + version "5.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.32.0.tgz#1de243443bc6186fb153b9e395b842e46877ca5d" + integrity sha512-IxRtsehdGV9GFQ35IGm5oKKR2OGcazUoiNBxhRV160iF9FoyuXxjY+rIqs1gfnd+4eL98OjeGnMpE7RF/NBb3A== + dependencies: + "@typescript-eslint/scope-manager" "5.32.0" + "@typescript-eslint/types" "5.32.0" + "@typescript-eslint/typescript-estree" "5.32.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.32.0": + version "5.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.32.0.tgz#763386e963a8def470580cc36cf9228864190b95" + integrity sha512-KyAE+tUON0D7tNz92p1uetRqVJiiAkeluvwvZOqBmW9z2XApmk5WSMV9FrzOroAcVxJZB3GfUwVKr98Dr/OjOg== + dependencies: + "@typescript-eslint/types" "5.32.0" + "@typescript-eslint/visitor-keys" "5.32.0" + +"@typescript-eslint/type-utils@5.32.0": + version "5.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.32.0.tgz#45a14506fe3fb908600b4cef2f70778f7b5cdc79" + integrity sha512-0gSsIhFDduBz3QcHJIp3qRCvVYbqzHg8D6bHFsDMrm0rURYDj+skBK2zmYebdCp+4nrd9VWd13egvhYFJj/wZg== + dependencies: + "@typescript-eslint/utils" "5.32.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.32.0": + version "5.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.32.0.tgz#484273021eeeae87ddb288f39586ef5efeb6dcd8" + integrity sha512-EBUKs68DOcT/EjGfzywp+f8wG9Zw6gj6BjWu7KV/IYllqKJFPlZlLSYw/PTvVyiRw50t6wVbgv4p9uE2h6sZrQ== + +"@typescript-eslint/typescript-estree@5.32.0": + version "5.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.32.0.tgz#282943f34babf07a4afa7b0ff347a8e7b6030d12" + integrity sha512-ZVAUkvPk3ITGtCLU5J4atCw9RTxK+SRc6hXqLtllC2sGSeMFWN+YwbiJR9CFrSFJ3w4SJfcWtDwNb/DmUIHdhg== + dependencies: + "@typescript-eslint/types" "5.32.0" + "@typescript-eslint/visitor-keys" "5.32.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.32.0": + version "5.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.32.0.tgz#eccb6b672b94516f1afc6508d05173c45924840c" + integrity sha512-W7lYIAI5Zlc5K082dGR27Fczjb3Q57ECcXefKU/f0ajM5ToM0P+N9NmJWip8GmGu/g6QISNT+K6KYB+iSHjXCQ== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.32.0" + "@typescript-eslint/types" "5.32.0" + "@typescript-eslint/typescript-estree" "5.32.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.32.0": + version "5.32.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.32.0.tgz#b9715d0b11fdb5dd10fd0c42ff13987470525394" + integrity sha512-S54xOHZgfThiZ38/ZGTgB2rqx51CMJ5MCfVT2IplK4Q7hgzGfe0nLzLCcenDnc/cSjP568hdeKfeDcBgqNHD/g== + dependencies: + "@typescript-eslint/types" "5.32.0" + eslint-visitor-keys "^3.3.0" + "@ucast/core@^1.0.0", "@ucast/core@^1.4.1", "@ucast/core@^1.6.1": version "1.10.1" resolved "https://registry.yarnpkg.com/@ucast/core/-/core-1.10.1.tgz#03a77a7804bcb5002a5cad3681e86cd1897e2e1f" @@ -6438,7 +6557,7 @@ acorn-import-assertions@^1.7.6: resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -acorn-jsx@^5.3.1: +acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -6458,12 +6577,12 @@ acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.1.1, acorn@^7.4.0, acorn@^7.4.1: +acorn@^7.1.1, acorn@^7.4.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1: +acorn@^8.0.4, acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1, acorn@^8.8.0: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== @@ -7206,6 +7325,18 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== +babel-eslint@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.0.tgz#0bb43e6b11a119bf3defbb1ee2521f42e2d413c9" + integrity sha512-GDQOtoj8CFtEe1HlbuEb6rwdbxRr4Y5DWyddivdsriEj6ulDda+fS43Zfe/Ku0tuMNnxC9JK1bmIovsLq5+hUA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + babel-eslint@10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" @@ -9456,7 +9587,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -10201,7 +10332,7 @@ enhanced-resolve@^5.10.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.5, enquirer@^2.3.6, enquirer@~2.3.6: +enquirer@^2.3.6, enquirer@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -10547,30 +10678,36 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-airbnb-base@14.2.1, eslint-config-airbnb-base@^14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" - integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== +eslint-config-airbnb-base@15.0.0, eslint-config-airbnb-base@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" + integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== dependencies: confusing-browser-globals "^1.0.10" object.assign "^4.1.2" - object.entries "^1.1.2" + object.entries "^1.1.5" + semver "^6.3.0" -eslint-config-airbnb@18.2.1: - version "18.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz#b7fe2b42f9f8173e825b73c8014b592e449c98d9" - integrity sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg== +eslint-config-airbnb-typescript@^16.1.1: + version "16.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-16.2.0.tgz#9193fafd62f1cbf444895f4495eae334baf3265b" + integrity sha512-OUaMPZpTOZGKd5tXOjJ9PRU4iYNW/Z5DoHIynjsVK/FpkWdiY5+nxQW6TiJAlLwVI1l53xUOrnlZWtVBVQzuWA== dependencies: - eslint-config-airbnb-base "^14.2.1" + eslint-config-airbnb-base "^15.0.0" + +eslint-config-airbnb@^19.0.4: + version "19.0.4" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" + integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew== + dependencies: + eslint-config-airbnb-base "^15.0.0" object.assign "^4.1.2" - object.entries "^1.1.2" + object.entries "^1.1.5" -eslint-config-prettier@6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" - integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== - dependencies: - get-stdin "^6.0.0" +eslint-config-prettier@8.5.0, eslint-config-prettier@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== eslint-import-resolver-node@^0.3.6: version "0.3.6" @@ -10596,7 +10733,7 @@ eslint-plugin-es@^3.0.0: eslint-utils "^2.0.0" regexpp "^3.0.0" -eslint-plugin-import@2.26.0: +eslint-plugin-import@2.26.0, eslint-plugin-import@^2.25.4: version "2.26.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== @@ -10630,7 +10767,7 @@ eslint-plugin-jsdoc@36.1.1: semver "^7.3.5" spdx-expression-parse "^3.0.1" -eslint-plugin-jsx-a11y@6.6.1: +eslint-plugin-jsx-a11y@6.6.1, eslint-plugin-jsx-a11y@^6.5.1: version "6.6.1" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== @@ -10649,7 +10786,7 @@ eslint-plugin-jsx-a11y@6.6.1: minimatch "^3.1.2" semver "^6.3.0" -eslint-plugin-node@11.1.0: +eslint-plugin-node@11.1.0, eslint-plugin-node@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== @@ -10661,12 +10798,19 @@ eslint-plugin-node@11.1.0: resolve "^1.10.1" semver "^6.1.0" -eslint-plugin-react-hooks@4.6.0: +eslint-plugin-prettier@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react-hooks@4.6.0, eslint-plugin-react-hooks@^4.3.0: version "4.6.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== -eslint-plugin-react@7.30.1: +eslint-plugin-react@7.30.1, eslint-plugin-react@^7.29.3: version "7.30.1" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22" integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg== @@ -10691,6 +10835,14 @@ eslint-plugin-redux-saga@1.3.2: resolved "https://registry.yarnpkg.com/eslint-plugin-redux-saga/-/eslint-plugin-redux-saga-1.3.2.tgz#e9b386c4c9a3cd87b029a3f71ff8f791d53531d3" integrity sha512-cqkzrmXhp9DEPnjqSb1dL89+0FQPydnLNsEb6MDie2tQWkYZqxq/OjUpOpT6IWJ9+weG4i/MBfbLFpP6zW+g4g== +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha512-ivpbtpUgg9SJS4TLjK7KdcDhqc/E3CGItsvQbBNLkNGUeMhd5qnJcryba/brESS+dg3vrLqPuc/UcS7jRJdN5A== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -10707,14 +10859,29 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== @@ -10724,49 +10891,53 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint@7.32.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@8.21.0, eslint@^8.10.0: + version "8.21.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.21.0.tgz#1940a68d7e0573cef6f50037addee295ff9be9ef" + integrity sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA== dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" + "@eslint/eslintrc" "^1.3.0" + "@humanwhocodes/config-array" "^0.10.4" + "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.3" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" + find-up "^5.0.0" functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" + glob-parent "^6.0.1" + globals "^13.15.0" + globby "^11.1.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" + regexpp "^3.2.0" + strip-ansi "^6.0.1" strip-json-comments "^3.1.0" - table "^6.0.9" text-table "^0.2.0" v8-compile-cache "^2.0.3" @@ -10775,14 +10946,14 @@ esm@^3.2.25: resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^9.3.2, espree@^9.3.3: + version "9.3.3" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.3.tgz#2dd37c4162bb05f433ad3c1a52ddf8a49dc08e9d" + integrity sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" esprima@2.7.x, esprima@^2.7.1: version "2.7.3" @@ -11067,6 +11238,11 @@ fast-deep-equal@3.1.3, fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fast-glob@3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" @@ -11804,11 +11980,6 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - get-stdin@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" @@ -11949,6 +12120,13 @@ glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob-promise@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" @@ -12073,7 +12251,7 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.6.0, globals@^13.9.0: +globals@^13.15.0: version "13.17.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== @@ -12101,7 +12279,7 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -globby@^11.0.2, globby@^11.0.3: +globby@^11.0.2, globby@^11.0.3, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -12182,6 +12360,11 @@ grant@^5.4.8: jwk-to-pem "^2.0.5" jws "^4.0.0" +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + graphql-depth-limit@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/graphql-depth-limit/-/graphql-depth-limit-1.1.0.tgz#59fe6b2acea0ab30ee7344f4c75df39cc18244e8" @@ -12917,7 +13100,7 @@ ignore-walk@^5.0.1: dependencies: minimatch "^5.0.1" -ignore@^4.0.3, ignore@^4.0.6: +ignore@^4.0.3: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== @@ -14371,7 +14554,7 @@ js-yaml@3.x, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@4.1.0: +js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -16951,7 +17134,7 @@ object.defaults@^1.1.0: for-own "^1.0.0" isobject "^3.0.0" -object.entries@^1.1.0, object.entries@^1.1.2, object.entries@^1.1.5: +object.entries@^1.1.0, object.entries@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== @@ -18153,6 +18336,13 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + prettier@1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" @@ -18253,11 +18443,6 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - promise-all-reject-late@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" @@ -19216,7 +19401,7 @@ regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexpp@^3.0.0, regexpp@^3.1.0: +regexpp@^3.0.0, regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== @@ -19874,7 +20059,7 @@ semver@7.3.4: dependencies: lru-cache "^6.0.0" -semver@7.3.7, semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: +semver@7.3.7, semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== @@ -21071,7 +21256,7 @@ synchronous-promise@^2.0.15: resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.15.tgz#07ca1822b9de0001f5ff73595f3d08c4f720eb8e" integrity sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg== -table@^6.0.9, table@^6.6.0: +table@^6.6.0: version "6.8.0" resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== @@ -21521,7 +21706,7 @@ tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.10.0, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -21541,6 +21726,13 @@ tsscmp@1.0.6: resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" From 75d83a0c344585c5d819848efe7694d523926e72 Mon Sep 17 00:00:00 2001 From: Alexandre Bodin Date: Mon, 8 Aug 2022 15:42:42 +0200 Subject: [PATCH 02/13] Update eslint back --- .eslintrc.back.js | 36 +----------------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/.eslintrc.back.js b/.eslintrc.back.js index b19daeefa7..f75e9cfbe3 100644 --- a/.eslintrc.back.js +++ b/.eslintrc.back.js @@ -1,51 +1,17 @@ 'use strict'; module.exports = { - extends: [ - '@strapi/eslint-config/back', - // 'plugin:jsdoc/recommended', - ], - plugins: ['jsdoc'], - env: { - es6: true, - node: true, - jest: true, - }, + extends: '@strapi/eslint-config/back', globals: { strapi: false, }, rules: { - // 'jsdoc/require-jsdoc': [ - // 'warn', - // { - // publicOnly: true, - // require: { - // ArrowFunctionExpression: true, - // ClassDeclaration: true, - // ClassExpression: true, - // FunctionDeclaration: true, - // FunctionExpression: true, - // MethodDefinition: true, - // }, - // }, - // ], 'node/no-unpublished-require': 'off', - 'require-atomic-updates': 'off', 'no-process-exit': 'off', - strict: ['error', 'global'], - 'no-return-await': 'error', - 'object-shorthand': ['error', 'always', { avoidExplicitReturnArrows: true }], - 'import/order': 'error', - 'import/no-cycle': 'error', - 'import/no-useless-path-segments': 'error', - 'import/first': 'error', - 'import/extensions': ['error', 'never'], - 'import/newline-after-import': 'error', 'node/exports-style': ['error', 'module.exports'], 'node/no-new-require': 'error', 'node/no-path-concat': 'error', 'node/no-callback-literal': 'error', 'node/handle-callback-err': 'error', - 'one-var': ['error', 'never'], }, }; From 0ae14c06cb0984b2a89ff00ecb8d8b2ed7a167a4 Mon Sep 17 00:00:00 2001 From: Alexandre Bodin Date: Mon, 8 Aug 2022 15:50:34 +0200 Subject: [PATCH 03/13] 1st fix pass --- packages/cli/create-strapi-app/index.js | 1 + packages/cli/create-strapi-starter/index.js | 1 + .../utils/child-process.js | 9 +- .../utils/stop-process.js | 1 + .../core/admin/ee/server/controllers/role.js | 2 +- .../action/__tests__/action-domain.test.js | 2 +- .../action/__tests__/action-provider.test.js | 2 +- .../__tests__/condition-domain.test.js | 2 +- .../__tests__/condition-provider.test.js | 2 +- .../admin/server/domain/condition/provider.js | 2 +- .../__tests__/permission-domain.test.js | 2 +- .../admin/server/routes/serve-admin-panel.js | 2 +- packages/core/admin/server/services/role.js | 4 +- .../admin/server/tests/admin-auth.test.e2e.js | 2 +- .../server/tests/admin-permission.test.e2e.js | 2 +- .../admin-permissions-conditions.test.e2e.js | 2 +- .../admin/server/tests/admin-role.test.e2e.js | 6 +- .../admin/server/tests/admin-user.test.e2e.js | 2 +- .../check-fields-are-correctly-nested.js | 3 +- .../check-fields-dont-have-duplicates.js | 3 +- packages/core/admin/webpack.config.dev.js | 2 +- packages/core/admin/webpack.config.js | 2 +- .../services/utils/configuration/layouts.js | 12 +-- .../services/utils/configuration/metadatas.js | 2 +- .../api/basic-compo-repeatable.test.e2e.js | 2 +- .../server/tests/api/basic-compo.test.e2e.js | 2 +- .../api/basic-dp-compo-repeatable.test.e2e.js | 2 +- .../tests/api/basic-dp-compo.test.e2e.js | 2 +- .../server/tests/api/basic-dp-dz.test.e2e.js | 2 +- .../server/tests/api/basic-dp.test.e2e.js | 10 +-- .../server/tests/api/basic-dz.test.e2e.js | 2 +- .../tests/api/basic-relations.test.e2e.js | 2 +- .../server/tests/api/basic.test.e2e.js | 2 +- .../server/tests/api/populate-dz.test.e2e.js | 2 +- .../api/x-to-many-rf-preview.test.e2e.js | 2 +- .../tests/content-manager/uid.test.e2e.js | 2 +- .../server/tests/fields/boolean.test.e2e.js | 2 +- .../server/tests/index.test.e2e.js | 84 ++++++++----------- .../server/tests/relation-list.test.e2e.js | 2 +- .../server/tests/search.test.e2e.js | 2 +- .../server/tests/single-type.test.e2e.js | 2 +- .../server/controllers/validation/common.js | 10 +-- .../services/schema-builder/schema-handler.js | 4 +- .../server/utils/attributes.js | 6 +- .../tests/collection-type.test.e2e.js | 1 + .../tests/single-type.test.e2e.js | 1 + .../database/lib/__tests__/lifecycles.test.js | 2 +- packages/core/database/lib/connection.js | 1 + .../core/database/lib/dialects/dialect.js | 2 + .../core/database/lib/dialects/mysql/index.js | 4 +- packages/core/database/lib/entity-manager.js | 2 +- packages/core/database/lib/fields.js | 10 +-- .../core/database/lib/metadata/relations.js | 14 ++-- .../core/database/lib/query/helpers/join.js | 4 +- packages/core/database/lib/schema/diff.js | 2 +- packages/core/database/lib/schema/index.js | 1 - .../core/email/server/controllers/email.js | 2 +- packages/core/strapi/bin/strapi.js | 7 +- .../__tests__/generate-template.test.js | 1 + packages/core/strapi/lib/commands/build.js | 2 +- packages/core/strapi/lib/commands/develop.js | 3 +- packages/core/strapi/lib/commands/install.js | 4 +- .../strapi/lib/commands/opt-in-telemetry.js | 19 ++--- .../strapi/lib/commands/opt-out-telemetry.js | 2 +- packages/core/strapi/lib/commands/start.js | 1 + .../core/strapi/lib/commands/uninstall.js | 6 +- .../lib/core-api/__tests__/controller.test.js | 1 + .../lib/core/domain/content-type/index.js | 2 +- .../lib/core/domain/module/validation.js | 3 +- .../loaders/plugins/get-enabled-plugins.js | 2 +- .../strapi/lib/core/loaders/plugins/index.js | 9 +- .../core/strapi/lib/core/registries/config.js | 2 +- packages/core/strapi/lib/core/utils.js | 9 +- packages/core/strapi/lib/factories.js | 4 +- .../strapi/lib/load/filepath-to-prop-path.js | 2 +- packages/core/strapi/lib/load/load-files.js | 2 +- .../core/strapi/lib/middlewares/logger.js | 1 + .../strapi/lib/middlewares/response-time.js | 2 +- .../core/strapi/lib/middlewares/responses.js | 2 +- .../core/strapi/lib/middlewares/session.js | 4 +- .../core/strapi/lib/services/auth/index.js | 2 - .../__tests__/entity-service.test.js | 2 +- .../lib/services/entity-service/components.js | 4 +- .../lib/services/entity-service/index.js | 2 +- .../lib/services/entity-validator/index.js | 1 + .../services/entity-validator/validators.js | 2 +- .../core/strapi/lib/services/event-hub.js | 1 + .../core/strapi/lib/services/metrics/index.js | 1 + .../core/strapi/lib/services/server/koa.js | 2 +- .../services/server/register-middlewares.js | 2 - .../strapi/lib/services/utils/upload-files.js | 2 +- .../strapi/lib/services/webhook-runner.js | 1 + .../core/strapi/lib/services/webhook-store.js | 1 + .../core/strapi/lib/services/worker-queue.js | 1 + packages/core/strapi/lib/utils/addSlash.js | 4 +- .../core/strapi/lib/utils/open-browser.js | 2 +- packages/core/strapi/lib/utils/run-checks.js | 4 +- .../core/strapi/lib/utils/startup-logger.js | 2 +- packages/core/strapi/lib/utils/success.js | 2 +- .../api/basic-compo-repeatable.test.e2e.js | 2 +- .../strapi/tests/api/basic-compo.test.e2e.js | 2 +- .../api/basic-dp-compo-repeatable.test.e2e.js | 2 +- .../tests/api/basic-dp-compo.test.e2e.js | 2 +- .../strapi/tests/api/basic-dp.test.e2e.js | 2 +- .../core/strapi/tests/api/basic.test.e2e.js | 2 +- .../core/strapi/tests/endpoint.test.e2e.js | 26 ++---- .../core/strapi/tests/filtering.test.e2e.js | 2 +- .../lifecycles/before-delete.test.e2e.js | 2 +- .../migration-draft-publish.test.e2e.js | 8 +- .../migration-required-attribute.test.e2e.js | 4 +- .../migration-unique-attribute.test.e2e.js | 4 +- packages/core/strapi/tests/search.test.e2e.js | 2 +- .../core/strapi/tests/single-type.test.e2e.js | 4 +- .../server/controllers/admin-folder-file.js | 2 +- packages/core/upload/server/graphql.js | 10 +-- .../server/services/__tests__/folder.test.js | 2 +- .../server/services/__tests__/metrics.js | 2 +- .../__tests__/upload/uploadImage.test.js | 4 +- .../core/upload/server/services/folder.js | 4 +- .../server/services/image-manipulation.js | 3 +- .../core/upload/server/services/metrics.js | 2 +- packages/core/upload/server/utils/file.js | 1 + .../tests/admin/file-folder.test.e2e.js | 2 +- .../tests/admin/folder-file.test.e2e.js | 2 +- .../tests/admin/folder-structure.test.e2e.js | 2 +- .../upload/tests/admin/folder.test.e2e.js | 4 +- packages/core/utils/lib/build-query.js | 5 +- packages/core/utils/lib/config.js | 4 +- .../core/utils/lib/convert-query-params.js | 10 +-- packages/core/utils/lib/parse-type.js | 2 +- packages/core/utils/lib/policy.js | 1 + packages/core/utils/lib/print-value.js | 16 ++-- .../sanitize/visitors/restricted-fields.js | 1 - packages/core/utils/lib/string-formatting.js | 1 + packages/core/utils/lib/validators.js | 9 +- packages/generators/admin/plopfile.js | 10 +-- .../app/lib/create-cli-db-project.js | 2 +- .../app/lib/create-customized-project.js | 5 +- packages/generators/app/lib/index.js | 2 +- .../lib/resources/json/common/package.json.js | 9 +- .../app/lib/utils/check-requirements.js | 6 +- packages/generators/app/lib/utils/usage.js | 14 ++-- .../plops/prompts/get-destination-prompts.js | 1 + .../__tests__/build-component-schema.test.js | 16 ++-- .../plugins/documentation/server/bootstrap.js | 1 + .../documentation/server/routes/index.js | 1 + .../helpers/build-api-endpoint-path.js | 2 +- .../helpers/build-component-schema.js | 1 + .../helpers/utils/loop-content-type-names.js | 1 + .../server/services/builders/entity-meta.js | 2 +- .../builders/resolvers/association.js | 2 +- .../graphql/server/services/builders/type.js | 4 +- .../graphql/server/services/builders/utils.js | 4 +- .../server/services/internals/scalars/time.js | 2 +- .../plugins/graphql/tests/crud.test.e2e.js | 4 +- .../graphql/tests/relations.test.e2e.js | 6 +- .../server/constants/__tests__/index.test.js | 2 +- .../i18n/server/controllers/content-types.js | 2 +- .../i18n/server/controllers/locales.js | 2 +- packages/plugins/i18n/server/graphql.js | 2 +- .../migrations/field/migrate-for-bookshelf.js | 2 +- .../services/__tests__/core-api.test.js | 1 + .../entity-service-decorator.test.js | 2 +- .../server/services/__tests__/metrics.test.js | 2 +- .../i18n/server/services/content-types.js | 2 +- .../plugins/i18n/server/services/locales.js | 5 +- .../content-manager/list-relation.test.e2e.js | 2 +- .../plugins/i18n/tests/locales.test.e2e.js | 20 ++--- .../sentry/server/services/sentry/index.js | 1 + .../server/controllers/auth.js | 2 +- .../server/controllers/settings.js | 2 +- .../server/controllers/user.js | 2 +- .../controllers/validation/email-template.js | 2 +- .../server/middlewares/rateLimit.js | 21 ++--- .../users-permissions/server/register.js | 1 + .../server/services/providers-registry.js | 4 +- .../users-permissions/server/services/user.js | 2 +- .../server/strategies/users-permissions.js | 2 +- .../tests/admin/roles-api.test.e2e.js | 8 +- .../providers/email-amazon-ses/lib/index.js | 4 +- packages/providers/email-mailgun/lib/index.js | 2 +- .../providers/email-sendgrid/lib/index.js | 2 +- .../providers/email-sendmail/lib/index.js | 2 +- .../utils/logger/lib/formats/log-errors.js | 4 +- .../lib/generators/schemas/utils.js | 4 +- .../typescript/lib/utils/resolve-outdir.js | 1 + .../add-missing-keys-to-other-language.js | 1 + .../merge-duplicated-translations/index.js | 3 +- scripts/front/utils/translation-files.js | 2 +- test/helpers/builder/index.js | 2 +- test/helpers/strapi.js | 4 +- 191 files changed, 372 insertions(+), 386 deletions(-) diff --git a/packages/cli/create-strapi-app/index.js b/packages/cli/create-strapi-app/index.js index ef3a3ce78e..7f34f0f3f2 100755 --- a/packages/cli/create-strapi-app/index.js +++ b/packages/cli/create-strapi-app/index.js @@ -1,4 +1,5 @@ #!/usr/bin/env node + 'use strict'; require('./create-strapi-app'); diff --git a/packages/cli/create-strapi-starter/index.js b/packages/cli/create-strapi-starter/index.js index 01bfe1deee..3f4347847e 100755 --- a/packages/cli/create-strapi-starter/index.js +++ b/packages/cli/create-strapi-starter/index.js @@ -1,4 +1,5 @@ #!/usr/bin/env node + 'use strict'; require('./create-strapi-starter'); diff --git a/packages/cli/create-strapi-starter/utils/child-process.js b/packages/cli/create-strapi-starter/utils/child-process.js index 9ba241e5df..bc532bbd5e 100644 --- a/packages/cli/create-strapi-starter/utils/child-process.js +++ b/packages/cli/create-strapi-starter/utils/child-process.js @@ -27,12 +27,11 @@ function runApp(rootPath, { useYarn } = {}) { stdio: 'inherit', cwd: rootPath, }); - } else { - return execa('npm', ['run', 'develop'], { - stdio: 'inherit', - cwd: rootPath, - }); } + return execa('npm', ['run', 'develop'], { + stdio: 'inherit', + cwd: rootPath, + }); } async function initGit(rootPath) { diff --git a/packages/cli/create-strapi-starter/utils/stop-process.js b/packages/cli/create-strapi-starter/utils/stop-process.js index af8137f61b..e2f3360057 100644 --- a/packages/cli/create-strapi-starter/utils/stop-process.js +++ b/packages/cli/create-strapi-starter/utils/stop-process.js @@ -1,4 +1,5 @@ 'use strict'; + const logger = require('./logger'); module.exports = function stopProcess(message) { diff --git a/packages/core/admin/ee/server/controllers/role.js b/packages/core/admin/ee/server/controllers/role.js index 788a3a2abc..5c98e20fa4 100644 --- a/packages/core/admin/ee/server/controllers/role.js +++ b/packages/core/admin/ee/server/controllers/role.js @@ -6,7 +6,7 @@ const { validateRoleDeleteInput, validateRolesDeleteInput, } = require('../validation/role'); -const { getService } = require('../../../server//utils'); +const { getService } = require('../../../server/utils'); const { validatedUpdatePermissionsInput } = require('../validation/permission'); const { SUPER_ADMIN_CODE } = require('../../../server/services/constants'); diff --git a/packages/core/admin/server/domain/action/__tests__/action-domain.test.js b/packages/core/admin/server/domain/action/__tests__/action-domain.test.js index c2f7297798..90668b17b3 100644 --- a/packages/core/admin/server/domain/action/__tests__/action-domain.test.js +++ b/packages/core/admin/server/domain/action/__tests__/action-domain.test.js @@ -1,6 +1,6 @@ 'use strict'; -const domain = require('../'); +const domain = require('..'); describe('Action Domain', () => { describe('appliesToProperty', () => { diff --git a/packages/core/admin/server/domain/action/__tests__/action-provider.test.js b/packages/core/admin/server/domain/action/__tests__/action-provider.test.js index a8aee66c22..aa9d140e56 100644 --- a/packages/core/admin/server/domain/action/__tests__/action-provider.test.js +++ b/packages/core/admin/server/domain/action/__tests__/action-provider.test.js @@ -2,7 +2,7 @@ const { omit } = require('lodash/fp'); const createActionProvider = require('../provider'); -const domain = require('../'); +const domain = require('..'); const providerMethods = [ 'register', diff --git a/packages/core/admin/server/domain/condition/__tests__/condition-domain.test.js b/packages/core/admin/server/domain/condition/__tests__/condition-domain.test.js index 29b328cf4d..080a1126a3 100644 --- a/packages/core/admin/server/domain/condition/__tests__/condition-domain.test.js +++ b/packages/core/admin/server/domain/condition/__tests__/condition-domain.test.js @@ -1,6 +1,6 @@ 'use strict'; -const domain = require('../'); +const domain = require('..'); describe('Condition Domain', () => { describe('assignConditionId', () => { diff --git a/packages/core/admin/server/domain/condition/__tests__/condition-provider.test.js b/packages/core/admin/server/domain/condition/__tests__/condition-provider.test.js index 7a7c74b9c4..3294ed47ac 100644 --- a/packages/core/admin/server/domain/condition/__tests__/condition-provider.test.js +++ b/packages/core/admin/server/domain/condition/__tests__/condition-provider.test.js @@ -2,7 +2,7 @@ const { omit } = require('lodash/fp'); const createConditionProvider = require('../provider'); -const domain = require('../'); +const domain = require('..'); const providerMethods = [ 'register', diff --git a/packages/core/admin/server/domain/condition/provider.js b/packages/core/admin/server/domain/condition/provider.js index ea5f1f8220..5275071cf9 100644 --- a/packages/core/admin/server/domain/condition/provider.js +++ b/packages/core/admin/server/domain/condition/provider.js @@ -1,7 +1,7 @@ 'use strict'; const { providerFactory } = require('@strapi/utils'); -const domain = require('./'); +const domain = require('.'); /** * @typedef ConditionProviderOverride diff --git a/packages/core/admin/server/domain/permission/__tests__/permission-domain.test.js b/packages/core/admin/server/domain/permission/__tests__/permission-domain.test.js index 0ad6548285..88c52001a2 100644 --- a/packages/core/admin/server/domain/permission/__tests__/permission-domain.test.js +++ b/packages/core/admin/server/domain/permission/__tests__/permission-domain.test.js @@ -1,6 +1,6 @@ 'use strict'; -const domain = require('../'); +const domain = require('..'); describe('Permission Domain', () => { describe('addCondition', () => { diff --git a/packages/core/admin/server/routes/serve-admin-panel.js b/packages/core/admin/server/routes/serve-admin-panel.js index 1b225b36a4..3111f5760f 100644 --- a/packages/core/admin/server/routes/serve-admin-panel.js +++ b/packages/core/admin/server/routes/serve-admin-panel.js @@ -23,7 +23,7 @@ const registerAdminPanelRoute = ({ strapi }) => { } ctx.type = 'html'; - ctx.body = fse.createReadStream(join(buildDir + '/index.html')); + ctx.body = fse.createReadStream(join(`${buildDir}/index.html`)); }; strapi.server.routes([ diff --git a/packages/core/admin/server/services/role.js b/packages/core/admin/server/services/role.js index 6059f5b78d..a8012a6ae4 100644 --- a/packages/core/admin/server/services/role.js +++ b/packages/core/admin/server/services/role.js @@ -109,7 +109,7 @@ const find = (params = {}, populate) => { */ const findAllWithUsersCount = async populate => { const roles = await strapi.query('admin::role').findMany({ populate }); - for (let role of roles) { + for (const role of roles) { role.usersCount = await getUsersCount(role.id); } @@ -171,7 +171,7 @@ const checkRolesIdForDeletion = async (ids = []) => { throw new ApplicationError('You cannot delete the super admin role'); } - for (let roleId of ids) { + for (const roleId of ids) { const usersCount = await getUsersCount(roleId); if (usersCount !== 0) { throw new ApplicationError('Some roles are still assigned to some users'); diff --git a/packages/core/admin/server/tests/admin-auth.test.e2e.js b/packages/core/admin/server/tests/admin-auth.test.e2e.js index 0fdc5ffdd7..4678e48af3 100644 --- a/packages/core/admin/server/tests/admin-auth.test.e2e.js +++ b/packages/core/admin/server/tests/admin-auth.test.e2e.js @@ -7,7 +7,7 @@ const { createUtils } = require('../../../../../test/helpers/utils'); const edition = process.env.STRAPI_DISABLE_EE === 'true' ? 'CE' : 'EE'; -let internals = { +const internals = { role: null, }; diff --git a/packages/core/admin/server/tests/admin-permission.test.e2e.js b/packages/core/admin/server/tests/admin-permission.test.e2e.js index b4fe3bd85a..e9ca0933b6 100644 --- a/packages/core/admin/server/tests/admin-permission.test.e2e.js +++ b/packages/core/admin/server/tests/admin-permission.test.e2e.js @@ -21,7 +21,7 @@ describe('Role CRUD End to End', () => { }); test('Can get the existing permissions', async () => { - let res = await rq({ + const res = await rq({ url: '/admin/permissions', method: 'GET', }); diff --git a/packages/core/admin/server/tests/admin-permissions-conditions.test.e2e.js b/packages/core/admin/server/tests/admin-permissions-conditions.test.e2e.js index f0280381eb..8b51078449 100644 --- a/packages/core/admin/server/tests/admin-permissions-conditions.test.e2e.js +++ b/packages/core/admin/server/tests/admin-permissions-conditions.test.e2e.js @@ -13,7 +13,7 @@ if (edition === 'EE') { let strapi; let utils; const builder = createTestBuilder(); - let requests = { + const requests = { public: null, admin: null, }; diff --git a/packages/core/admin/server/tests/admin-role.test.e2e.js b/packages/core/admin/server/tests/admin-role.test.e2e.js index b2ffb6e4d2..178666064d 100644 --- a/packages/core/admin/server/tests/admin-role.test.e2e.js +++ b/packages/core/admin/server/tests/admin-role.test.e2e.js @@ -255,7 +255,7 @@ describe('Role CRUD End to End', () => { ]; test.each(rolesToCreate)('can create %p', async role => { - let res = await rq({ + const res = await rq({ url: '/admin/roles', method: 'POST', body: role, @@ -465,7 +465,7 @@ describe('Role CRUD End to End', () => { }, }); - for (let role of roles) { + for (const role of roles) { res = await rq({ url: `/admin/roles/${role.id}`, method: 'GET', @@ -506,7 +506,7 @@ describe('Role CRUD End to End', () => { expect(res.statusCode).toBe(200); expect(res.body.data).toMatchObject(roles); - for (let roleId of rolesIds) { + for (const roleId of rolesIds) { res = await rq({ url: `/admin/roles/${roleId}`, method: 'GET', diff --git a/packages/core/admin/server/tests/admin-user.test.e2e.js b/packages/core/admin/server/tests/admin-user.test.e2e.js index f1d037b902..bc7e0fc17a 100644 --- a/packages/core/admin/server/tests/admin-user.test.e2e.js +++ b/packages/core/admin/server/tests/admin-user.test.e2e.js @@ -39,7 +39,7 @@ describe('Admin User CRUD (e2e)', () => { let strapi; // Local test data used across the test suite - let testData = { + const testData = { firstSuperAdminUser: undefined, otherSuperAdminUsers: [], user: undefined, diff --git a/packages/core/admin/server/validation/common-functions/check-fields-are-correctly-nested.js b/packages/core/admin/server/validation/common-functions/check-fields-are-correctly-nested.js index 06af084932..fbb61501df 100644 --- a/packages/core/admin/server/validation/common-functions/check-fields-are-correctly-nested.js +++ b/packages/core/admin/server/validation/common-functions/check-fields-are-correctly-nested.js @@ -6,7 +6,8 @@ const checkFieldsAreCorrectlyNested = fields => { if (_.isNil(fields)) { // Only check if the fields exist return true; - } else if (!Array.isArray(fields)) { + } + if (!Array.isArray(fields)) { return false; } diff --git a/packages/core/admin/server/validation/common-functions/check-fields-dont-have-duplicates.js b/packages/core/admin/server/validation/common-functions/check-fields-dont-have-duplicates.js index 8c4a252814..cce295e815 100644 --- a/packages/core/admin/server/validation/common-functions/check-fields-dont-have-duplicates.js +++ b/packages/core/admin/server/validation/common-functions/check-fields-dont-have-duplicates.js @@ -6,7 +6,8 @@ const checkFieldsDontHaveDuplicates = fields => { if (_.isNil(fields)) { // Only check if the fields exist return true; - } else if (!Array.isArray(fields)) { + } + if (!Array.isArray(fields)) { return false; } diff --git a/packages/core/admin/webpack.config.dev.js b/packages/core/admin/webpack.config.dev.js index 02581169d0..74a7b1dc3f 100644 --- a/packages/core/admin/webpack.config.dev.js +++ b/packages/core/admin/webpack.config.dev.js @@ -1,7 +1,7 @@ 'use strict'; const path = require('path'); -const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; +const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); const { DuplicateReporterPlugin } = require('duplicate-dependencies-webpack-plugin'); const getPluginsPath = require('./utils/get-plugins-path'); const webpackConfig = require('./webpack.config'); diff --git a/packages/core/admin/webpack.config.js b/packages/core/admin/webpack.config.js index 96cdabf5d8..e105adc651 100644 --- a/packages/core/admin/webpack.config.js +++ b/packages/core/admin/webpack.config.js @@ -56,7 +56,7 @@ module.exports = ({ return { mode: isProduction ? 'production' : 'development', - bail: isProduction ? true : false, + bail: !!isProduction, devtool: isProduction ? false : 'eval-source-map', experiments: { topLevelAwait: true, diff --git a/packages/core/content-manager/server/services/utils/configuration/layouts.js b/packages/core/content-manager/server/services/utils/configuration/layouts.js index 27188370a4..4628ccafe9 100644 --- a/packages/core/content-manager/server/services/utils/configuration/layouts.js +++ b/packages/core/content-manager/server/services/utils/configuration/layouts.js @@ -79,12 +79,12 @@ function syncLayouts(configuration, schema) { let cleanEditRelations = editRelations.filter(attr => hasRelationAttribute(schema, attr)); - let elementsToReAppend = []; + const elementsToReAppend = []; let cleanEdit = []; - for (let row of edit) { - let newRow = []; + for (const row of edit) { + const newRow = []; - for (let el of row) { + for (const el of row) { if (!hasEditableAttribute(schema, el.name)) continue; /* if the type of a field was changed (ex: string -> json) or a new field was added in the schema @@ -153,11 +153,11 @@ const appendToEditLayout = (layout = [], keysToAppend, schema) => { layout[currentRowIndex] = []; } - for (let key of keysToAppend) { + for (const key of keysToAppend) { const attribute = schema.attributes[key]; const attributeSize = getDefaultFieldSize(attribute.type); - let currenRowSize = rowSize(layout[currentRowIndex]); + const currenRowSize = rowSize(layout[currentRowIndex]); if (currenRowSize + attributeSize > MAX_ROW_SIZE) { currentRowIndex += 1; diff --git a/packages/core/content-manager/server/services/utils/configuration/metadatas.js b/packages/core/content-manager/server/services/utils/configuration/metadatas.js index 03227d73fa..efeeabc4b7 100644 --- a/packages/core/content-manager/server/services/utils/configuration/metadatas.js +++ b/packages/core/content-manager/server/services/utils/configuration/metadatas.js @@ -91,7 +91,7 @@ async function syncMetadatas(configuration, schema) { const { edit, list } = metasWithDefaults[key]; const attr = schema.attributes[key]; - let updatedMeta = { edit, list }; + const updatedMeta = { edit, list }; // update sortable attr if (list.sortable && !isSortable(schema, key)) { _.set(updatedMeta, ['list', 'sortable'], false); diff --git a/packages/core/content-manager/server/tests/api/basic-compo-repeatable.test.e2e.js b/packages/core/content-manager/server/tests/api/basic-compo-repeatable.test.e2e.js index 04073f729c..456c7915ba 100644 --- a/packages/core/content-manager/server/tests/api/basic-compo-repeatable.test.e2e.js +++ b/packages/core/content-manager/server/tests/api/basic-compo-repeatable.test.e2e.js @@ -7,7 +7,7 @@ const { createAuthRequest } = require('../../../../../../test/helpers/request'); const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { productsWithCompo: [], }; diff --git a/packages/core/content-manager/server/tests/api/basic-compo.test.e2e.js b/packages/core/content-manager/server/tests/api/basic-compo.test.e2e.js index 139756d0ea..3af2222038 100644 --- a/packages/core/content-manager/server/tests/api/basic-compo.test.e2e.js +++ b/packages/core/content-manager/server/tests/api/basic-compo.test.e2e.js @@ -7,7 +7,7 @@ const { createAuthRequest } = require('../../../../../../test/helpers/request'); const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { productsWithCompo: [], }; diff --git a/packages/core/content-manager/server/tests/api/basic-dp-compo-repeatable.test.e2e.js b/packages/core/content-manager/server/tests/api/basic-dp-compo-repeatable.test.e2e.js index 0f81ce5aab..1429a43d4d 100644 --- a/packages/core/content-manager/server/tests/api/basic-dp-compo-repeatable.test.e2e.js +++ b/packages/core/content-manager/server/tests/api/basic-dp-compo-repeatable.test.e2e.js @@ -9,7 +9,7 @@ const { createAuthRequest } = require('../../../../../../test/helpers/request'); const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { productsWithCompoAndDP: [], }; diff --git a/packages/core/content-manager/server/tests/api/basic-dp-compo.test.e2e.js b/packages/core/content-manager/server/tests/api/basic-dp-compo.test.e2e.js index 7c6f16f7e1..133ecf05b4 100644 --- a/packages/core/content-manager/server/tests/api/basic-dp-compo.test.e2e.js +++ b/packages/core/content-manager/server/tests/api/basic-dp-compo.test.e2e.js @@ -9,7 +9,7 @@ const { createAuthRequest } = require('../../../../../../test/helpers/request'); const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { productsWithCompoAndDP: [], }; diff --git a/packages/core/content-manager/server/tests/api/basic-dp-dz.test.e2e.js b/packages/core/content-manager/server/tests/api/basic-dp-dz.test.e2e.js index a8e2e61f79..d3c267290a 100644 --- a/packages/core/content-manager/server/tests/api/basic-dp-dz.test.e2e.js +++ b/packages/core/content-manager/server/tests/api/basic-dp-dz.test.e2e.js @@ -9,7 +9,7 @@ const { createAuthRequest } = require('../../../../../../test/helpers/request'); const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { productsWithDzAndDP: [], }; diff --git a/packages/core/content-manager/server/tests/api/basic-dp.test.e2e.js b/packages/core/content-manager/server/tests/api/basic-dp.test.e2e.js index 4c61c19bcb..26950f87f9 100644 --- a/packages/core/content-manager/server/tests/api/basic-dp.test.e2e.js +++ b/packages/core/content-manager/server/tests/api/basic-dp.test.e2e.js @@ -9,7 +9,7 @@ const { createAuthRequest } = require('../../../../../../test/helpers/request'); const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { productsWithDP: [], }; @@ -161,7 +161,7 @@ describe('CM API - Basic + draftAndPublish', () => { test('Publish a product, expect publishedAt to be defined', async () => { const entry = data.productsWithDP[0]; - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::product-with-dp.product-with-dp/${entry.id}/actions/publish`, method: 'POST', }); @@ -174,7 +174,7 @@ describe('CM API - Basic + draftAndPublish', () => { test('Publish article1, expect article1 to be already published', async () => { const entry = data.productsWithDP[0]; - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::product-with-dp.product-with-dp/${entry.id}/actions/publish`, method: 'POST', }); @@ -193,7 +193,7 @@ describe('CM API - Basic + draftAndPublish', () => { test('Unpublish article1, expect article1 to be set to null', async () => { const entry = data.productsWithDP[0]; - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::product-with-dp.product-with-dp/${entry.id}/actions/unpublish`, method: 'POST', }); @@ -206,7 +206,7 @@ describe('CM API - Basic + draftAndPublish', () => { test('Unpublish article1, expect article1 to already be a draft', async () => { const entry = data.productsWithDP[0]; - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::product-with-dp.product-with-dp/${entry.id}/actions/unpublish`, method: 'POST', }); diff --git a/packages/core/content-manager/server/tests/api/basic-dz.test.e2e.js b/packages/core/content-manager/server/tests/api/basic-dz.test.e2e.js index 532d4c5315..e41469972e 100644 --- a/packages/core/content-manager/server/tests/api/basic-dz.test.e2e.js +++ b/packages/core/content-manager/server/tests/api/basic-dz.test.e2e.js @@ -7,7 +7,7 @@ const { createAuthRequest } = require('../../../../../../test/helpers/request'); const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { productsWithDz: [], }; diff --git a/packages/core/content-manager/server/tests/api/basic-relations.test.e2e.js b/packages/core/content-manager/server/tests/api/basic-relations.test.e2e.js index df6b628767..9e212122b3 100644 --- a/packages/core/content-manager/server/tests/api/basic-relations.test.e2e.js +++ b/packages/core/content-manager/server/tests/api/basic-relations.test.e2e.js @@ -8,7 +8,7 @@ let strapi; let rq; const builder = createTestBuilder(); -let data = { +const data = { stamps: [], collectors: [], }; diff --git a/packages/core/content-manager/server/tests/api/basic.test.e2e.js b/packages/core/content-manager/server/tests/api/basic.test.e2e.js index 7258c037a1..5f38eaa768 100644 --- a/packages/core/content-manager/server/tests/api/basic.test.e2e.js +++ b/packages/core/content-manager/server/tests/api/basic.test.e2e.js @@ -9,7 +9,7 @@ const { createAuthRequest } = require('../../../../../../test/helpers/request'); const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { products: [], }; diff --git a/packages/core/content-manager/server/tests/api/populate-dz.test.e2e.js b/packages/core/content-manager/server/tests/api/populate-dz.test.e2e.js index 3f2fe7ab13..e0e8bb37f7 100644 --- a/packages/core/content-manager/server/tests/api/populate-dz.test.e2e.js +++ b/packages/core/content-manager/server/tests/api/populate-dz.test.e2e.js @@ -7,7 +7,7 @@ const { createAuthRequest } = require('../../../../../../test/helpers/request'); const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { productsWithDz: [], categories: [], }; diff --git a/packages/core/content-manager/server/tests/api/x-to-many-rf-preview.test.e2e.js b/packages/core/content-manager/server/tests/api/x-to-many-rf-preview.test.e2e.js index 8c48fdc49c..19d7a437a0 100644 --- a/packages/core/content-manager/server/tests/api/x-to-many-rf-preview.test.e2e.js +++ b/packages/core/content-manager/server/tests/api/x-to-many-rf-preview.test.e2e.js @@ -168,7 +168,7 @@ describe('x-to-many RF Preview', () => { describe('Relation Nature', () => { test(`Throws if the relation's nature is not a x-to-many`, async () => { const url = getCMPrefixUrl(categoryModel.singularName); - const id = data.category[0].id; + const { id } = data.category[0]; const { body, statusCode } = await rq.get(`${url}/${id}/product`); diff --git a/packages/core/content-manager/server/tests/content-manager/uid.test.e2e.js b/packages/core/content-manager/server/tests/content-manager/uid.test.e2e.js index 8be18276e1..0815ab7128 100644 --- a/packages/core/content-manager/server/tests/content-manager/uid.test.e2e.js +++ b/packages/core/content-manager/server/tests/content-manager/uid.test.e2e.js @@ -8,7 +8,7 @@ const { createAuthRequest } = require('../../../../../../test/helpers/request'); const builder = createTestBuilder(); let strapi; let rq; -let uid = 'api::uid-model.uid-model'; +const uid = 'api::uid-model.uid-model'; const model = { kind: 'collectionType', diff --git a/packages/core/content-manager/server/tests/fields/boolean.test.e2e.js b/packages/core/content-manager/server/tests/fields/boolean.test.e2e.js index 4ce47dc347..44bb1f4429 100644 --- a/packages/core/content-manager/server/tests/fields/boolean.test.e2e.js +++ b/packages/core/content-manager/server/tests/fields/boolean.test.e2e.js @@ -46,7 +46,7 @@ describe('Test type boolean', () => { }); test('Throws on invalid boolean value', async () => { - let res = await rq.post('/content-manager/collection-types/api::withboolean.withboolean', { + const res = await rq.post('/content-manager/collection-types/api::withboolean.withboolean', { body: { field: 'random' }, }); diff --git a/packages/core/content-manager/server/tests/index.test.e2e.js b/packages/core/content-manager/server/tests/index.test.e2e.js index d63d989e0b..7bc113acbd 100644 --- a/packages/core/content-manager/server/tests/index.test.e2e.js +++ b/packages/core/content-manager/server/tests/index.test.e2e.js @@ -69,7 +69,7 @@ describe('Content Manager End to End', () => { }); test('Create tag1', async () => { - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::tag.tag', method: 'POST', body: { @@ -98,7 +98,7 @@ describe('Content Manager End to End', () => { }); test('Create tag2', async () => { - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::tag.tag', method: 'POST', body: { @@ -127,7 +127,7 @@ describe('Content Manager End to End', () => { }); test('Create tag3', async () => { - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::tag.tag', method: 'POST', body: { @@ -162,7 +162,7 @@ describe('Content Manager End to End', () => { date: '2019-08-13T00:00:00.000Z', }; - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::article.article', method: 'POST', body: entry, @@ -197,7 +197,7 @@ describe('Content Manager End to End', () => { tags: [data.tags[0].id], }; - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::article.article', method: 'POST', body: entry, @@ -227,13 +227,11 @@ describe('Content Manager End to End', () => { }); test('Update article1 add tag2', async () => { - const entry = Object.assign({}, data.articles[0], { - tags: [data.tags[1].id], - }); + const entry = { ...data.articles[0], tags: [data.tags[1].id] }; cleanDate(entry); - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::article.article/${entry.id}`, method: 'PUT', body: entry, @@ -263,7 +261,7 @@ describe('Content Manager End to End', () => { }); test('Update article1 add tag1 and tag3', async () => { - const entry = Object.assign({}, data.articles[0]); + const entry = { ...data.articles[0] }; entry.tags = entry.tags.map(tag => tag.id); entry.tags.push(data.tags[0].id); @@ -271,7 +269,7 @@ describe('Content Manager End to End', () => { cleanDate(entry); - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::article.article/${entry.id}`, method: 'PUT', body: entry, @@ -300,12 +298,12 @@ describe('Content Manager End to End', () => { }); test('Update article1 remove one tag', async () => { - const entry = Object.assign({}, data.articles[0]); + const entry = { ...data.articles[0] }; entry.tags = entry.tags.slice(1).map(tag => tag.id); cleanDate(entry); - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::article.article/${entry.id}`, method: 'PUT', body: entry, @@ -334,13 +332,11 @@ describe('Content Manager End to End', () => { }); test('Update article1 remove all tag', async () => { - const entry = Object.assign({}, data.articles[0], { - tags: [], - }); + const entry = { ...data.articles[0], tags: [] }; cleanDate(entry); - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::article.article/${entry.id}`, method: 'PUT', body: entry, @@ -409,7 +405,7 @@ describe('Content Manager End to End', () => { expect(Array.isArray(articles[1].tags)).toBeTruthy(); expect(articles[1].tags.length).toBe(1); - let { body: foundTag } = await rq({ + const { body: foundTag } = await rq({ url: `/content-manager/collection-types/api::tag.tag/${createdTag.id}`, method: 'GET', }); @@ -425,7 +421,7 @@ describe('Content Manager End to End', () => { }, }); - let { body: foundTag2 } = await rq({ + const { body: foundTag2 } = await rq({ url: `/content-manager/collection-types/api::tag.tag/${createdTag.id}`, method: 'GET', }); @@ -462,7 +458,7 @@ describe('Content Manager End to End', () => { tags: [createdTag.id], }; - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::articlewithtag.articlewithtag', method: 'POST', body: entry, @@ -502,7 +498,7 @@ describe('Content Manager End to End', () => { }); test('Create cat1', async () => { - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::category.category', method: 'POST', body: { @@ -531,7 +527,7 @@ describe('Content Manager End to End', () => { }); test('Create cat2', async () => { - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::category.category', method: 'POST', body: { @@ -566,7 +562,7 @@ describe('Content Manager End to End', () => { category: data.categories[0].id, }; - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::article.article', method: 'POST', body: entry, @@ -594,13 +590,11 @@ describe('Content Manager End to End', () => { }); test('Update article1 with cat2', async () => { - const entry = Object.assign({}, data.articles[0], { - category: data.categories[1].id, - }); + const entry = { ...data.articles[0], category: data.categories[1].id }; cleanDate(entry); - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::article.article/${entry.id}`, method: 'PUT', body: entry, @@ -633,7 +627,7 @@ describe('Content Manager End to End', () => { content: 'Content 2', }; - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::article.article', method: 'POST', body: entry, @@ -660,13 +654,11 @@ describe('Content Manager End to End', () => { }); test('Update article2 with cat2', async () => { - const entry = Object.assign({}, data.articles[1], { - category: data.categories[1].id, - }); + const entry = { ...data.articles[1], category: data.categories[1].id }; cleanDate(entry); - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::article.article/${entry.id}`, method: 'PUT', body: entry, @@ -694,13 +686,13 @@ describe('Content Manager End to End', () => { }); test('Update cat1 with article1', async () => { - const entry = Object.assign({}, data.categories[0]); + const entry = { ...data.categories[0] }; entry.articles = entry.articles.map(article => article.id); entry.articles.push(data.articles[0].id); cleanDate(entry); - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::category.category/${entry.id}`, method: 'PUT', body: entry, @@ -732,7 +724,7 @@ describe('Content Manager End to End', () => { articles: [data.articles[0].id], }; - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::category.category', method: 'POST', body: entry, @@ -759,7 +751,7 @@ describe('Content Manager End to End', () => { }); test('Get article1 with cat3', async () => { - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::article.article/${data.articles[0].id}`, method: 'GET', }); @@ -781,7 +773,7 @@ describe('Content Manager End to End', () => { }); test('Get article2 with cat2', async () => { - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::article.article/${data.articles[1].id}`, method: 'GET', }); @@ -803,7 +795,7 @@ describe('Content Manager End to End', () => { }); test('Get cat1 without relations', async () => { - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::category.category/${data.categories[0].id}`, method: 'GET', }); @@ -825,7 +817,7 @@ describe('Content Manager End to End', () => { }); test('Get cat2 with article2', async () => { - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::category.category/${data.categories[1].id}`, method: 'GET', }); @@ -848,7 +840,7 @@ describe('Content Manager End to End', () => { }); test('Get cat3 with article1', async () => { - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::category.category/${data.categories[2].id}`, method: 'GET', }); @@ -884,7 +876,7 @@ describe('Content Manager End to End', () => { }); test('Create ref1', async () => { - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::reference.reference', method: 'POST', body: { @@ -916,7 +908,7 @@ describe('Content Manager End to End', () => { content: 'Content 1', }; - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::article.article', method: 'POST', body: entry, @@ -943,13 +935,11 @@ describe('Content Manager End to End', () => { }); test('Update article1 with ref1', async () => { - const entry = Object.assign({}, data.articles[0], { - reference: data.references[0].id, - }); + const entry = { ...data.articles[0], reference: data.references[0].id }; cleanDate(entry); - let { body } = await rq({ + const { body } = await rq({ url: `/content-manager/collection-types/api::article.article/${entry.id}`, method: 'PUT', body: entry, @@ -982,7 +972,7 @@ describe('Content Manager End to End', () => { reference: data.references[0].id, }; - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::article.article', method: 'POST', body: entry, diff --git a/packages/core/content-manager/server/tests/relation-list.test.e2e.js b/packages/core/content-manager/server/tests/relation-list.test.e2e.js index ab685e5bb6..828797cc5f 100644 --- a/packages/core/content-manager/server/tests/relation-list.test.e2e.js +++ b/packages/core/content-manager/server/tests/relation-list.test.e2e.js @@ -10,7 +10,7 @@ const { createAuthRequest } = require('../../../../../test/helpers/request'); let strapi; let rq; -let data = { +const data = { products: [], shops: [], }; diff --git a/packages/core/content-manager/server/tests/search.test.e2e.js b/packages/core/content-manager/server/tests/search.test.e2e.js index f430b29d08..bcdd063bb2 100644 --- a/packages/core/content-manager/server/tests/search.test.e2e.js +++ b/packages/core/content-manager/server/tests/search.test.e2e.js @@ -11,7 +11,7 @@ const CREATOR_FIELDS = ['updatedBy', 'createdBy']; const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { beds: [], }; diff --git a/packages/core/content-manager/server/tests/single-type.test.e2e.js b/packages/core/content-manager/server/tests/single-type.test.e2e.js index f2e5279bfa..4c46957522 100644 --- a/packages/core/content-manager/server/tests/single-type.test.e2e.js +++ b/packages/core/content-manager/server/tests/single-type.test.e2e.js @@ -8,7 +8,7 @@ const { createAuthRequest } = require('../../../../../test/helpers/request'); const builder = createTestBuilder(); let strapi; let rq; -let uid = 'api::single-type-model.single-type-model'; +const uid = 'api::single-type-model.single-type-model'; const ct = { kind: 'singleType', diff --git a/packages/core/content-type-builder/server/controllers/validation/common.js b/packages/core/content-type-builder/server/controllers/validation/common.js index bf25b0d115..ff74fa514a 100644 --- a/packages/core/content-type-builder/server/controllers/validation/common.js +++ b/packages/core/content-type-builder/server/controllers/validation/common.js @@ -24,31 +24,31 @@ const UID_REGEX = new RegExp('^[A-Za-z0-9-_.~]*$'); const isValidName = { name: 'isValidName', - message: '${path} must match the following regex: ' + NAME_REGEX, + message: `\${path} must match the following regex: ${NAME_REGEX}`, test: val => val === '' || NAME_REGEX.test(val), }; const isValidUID = { name: 'isValidUID', - message: '${path} must match the following regex: ' + UID_REGEX, + message: `\${path} must match the following regex: ${UID_REGEX}`, test: val => val === '' || UID_REGEX.test(val), }; const isValidCategoryName = { name: 'isValidCategoryName', - message: '${path} must match the following regex: ' + CATEGORY_NAME_REGEX, + message: `\${path} must match the following regex: ${CATEGORY_NAME_REGEX}`, test: val => val === '' || CATEGORY_NAME_REGEX.test(val), }; const isValidCollectionName = { name: 'isValidCollectionName', - message: '${path} must match the following regex: ' + COLLECTION_NAME_REGEX, + message: `\${path} must match the following regex: ${COLLECTION_NAME_REGEX}`, test: val => val === '' || COLLECTION_NAME_REGEX.test(val), }; const isValidIcon = { name: 'isValidIcon', - message: '${path} must match the following regex: ' + ICON_REGEX, + message: `\${path} must match the following regex: ${ICON_REGEX}`, test: val => val === '' || ICON_REGEX.test(val), }; diff --git a/packages/core/content-type-builder/server/services/schema-builder/schema-handler.js b/packages/core/content-type-builder/server/services/schema-builder/schema-handler.js index fba87f26df..60cb4ede21 100644 --- a/packages/core/content-type-builder/server/services/schema-builder/schema-handler.js +++ b/packages/core/content-type-builder/server/services/schema-builder/schema-handler.js @@ -123,14 +123,14 @@ module.exports = function createSchemaHandler(infos) { setAttributes(newAttributes) { // delete old configurable attributes - for (let key in this.schema.attributes) { + for (const key in this.schema.attributes) { if (isConfigurable(this.schema.attributes[key])) { this.deleteAttribute(key); } } // set new Attributes - for (let key in newAttributes) { + for (const key in newAttributes) { this.setAttribute(key, newAttributes[key]); } diff --git a/packages/core/content-type-builder/server/utils/attributes.js b/packages/core/content-type-builder/server/utils/attributes.js index e90fc1fd1a..6b0ed1e9a1 100644 --- a/packages/core/content-type-builder/server/utils/attributes.js +++ b/packages/core/content-type-builder/server/utils/attributes.js @@ -45,8 +45,8 @@ const formatAttribute = (key, attribute) => { if (attribute.type === 'media') { return { type: 'media', - multiple: attribute.multiple ? true : false, - required: required ? true : false, + multiple: !!attribute.multiple, + required: !!required, configurable: configurable === false ? false : undefined, allowedTypes: attribute.allowedTypes, pluginOptions, @@ -60,7 +60,7 @@ const formatAttribute = (key, attribute) => { target: attribute.target, targetAttribute: attribute.inversedBy || attribute.mappedBy || null, configurable: configurable === false ? false : undefined, - private: attribute.private ? true : false, + private: !!attribute.private, pluginOptions, // TODO: remove autoPopulate, diff --git a/packages/core/content-type-builder/tests/collection-type.test.e2e.js b/packages/core/content-type-builder/tests/collection-type.test.e2e.js index 91f732a7c9..9bf2a8bc38 100644 --- a/packages/core/content-type-builder/tests/collection-type.test.e2e.js +++ b/packages/core/content-type-builder/tests/collection-type.test.e2e.js @@ -1,6 +1,7 @@ /** * Integration test for the content-type-builder content types management apis */ + 'use strict'; const { createStrapiInstance } = require('../../../../test/helpers/strapi'); diff --git a/packages/core/content-type-builder/tests/single-type.test.e2e.js b/packages/core/content-type-builder/tests/single-type.test.e2e.js index a86d6c1fdf..b6c9263bb8 100644 --- a/packages/core/content-type-builder/tests/single-type.test.e2e.js +++ b/packages/core/content-type-builder/tests/single-type.test.e2e.js @@ -1,6 +1,7 @@ /** * Integration test for the content-type-builder content types management apis */ + 'use strict'; const { createStrapiInstance } = require('../../../../test/helpers/strapi'); diff --git a/packages/core/database/lib/__tests__/lifecycles.test.js b/packages/core/database/lib/__tests__/lifecycles.test.js index 717942bcec..1dbbf35255 100644 --- a/packages/core/database/lib/__tests__/lifecycles.test.js +++ b/packages/core/database/lib/__tests__/lifecycles.test.js @@ -6,7 +6,7 @@ describe('LifecycleProvider', () => { describe('run', () => { /** @type {import("../lifecycles").LifecycleProvider} */ let provider; - let dbMetadataGetStub = jest.fn(uid => ({ uid, name: 'TestModel' })); + const dbMetadataGetStub = jest.fn(uid => ({ uid, name: 'TestModel' })); beforeEach(() => { const db = { diff --git a/packages/core/database/lib/connection.js b/packages/core/database/lib/connection.js index e03e884cb2..67201993cb 100644 --- a/packages/core/database/lib/connection.js +++ b/packages/core/database/lib/connection.js @@ -1,5 +1,6 @@ /* eslint-disable node/no-missing-require */ /* eslint-disable node/no-extraneous-require */ + 'use strict'; const knex = require('knex'); diff --git a/packages/core/database/lib/dialects/dialect.js b/packages/core/database/lib/dialects/dialect.js index f3b374f78c..5e92b31a7f 100644 --- a/packages/core/database/lib/dialects/dialect.js +++ b/packages/core/database/lib/dialects/dialect.js @@ -6,6 +6,7 @@ class Dialect { } configure() {} + initialize() {} getSqlType(type) { @@ -29,6 +30,7 @@ class Dialect { } async startSchemaUpdate() {} + async endSchemaUpdate() {} transformErrors(error) { diff --git a/packages/core/database/lib/dialects/mysql/index.js b/packages/core/database/lib/dialects/mysql/index.js index dcace979d5..9e01d5e0b1 100644 --- a/packages/core/database/lib/dialects/mysql/index.js +++ b/packages/core/database/lib/dialects/mysql/index.js @@ -15,12 +15,12 @@ class MysqlDialect extends Dialect { this.db.config.connection.connection.bigNumberStrings = true; this.db.config.connection.connection.typeCast = (field, next) => { if (field.type === 'DECIMAL' || field.type === 'NEWDECIMAL') { - var value = field.string(); + const value = field.string(); return value === null ? null : Number(value); } if (field.type === 'TINY' && field.length === 1) { - let value = field.string(); + const value = field.string(); return value ? value === '1' : null; } diff --git a/packages/core/database/lib/entity-manager.js b/packages/core/database/lib/entity-manager.js index 0233bb1e23..7bb18e5032 100644 --- a/packages/core/database/lib/entity-manager.js +++ b/packages/core/database/lib/entity-manager.js @@ -817,7 +817,7 @@ const createEntityManager = db => { populate, }); - return Object.assign({}, entity, entry); + return { ...entity, ...entry }; }, // TODO: support multiple relations at once with the populate syntax diff --git a/packages/core/database/lib/fields.js b/packages/core/database/lib/fields.js index ebf08b2948..103f411f6b 100644 --- a/packages/core/database/lib/fields.js +++ b/packages/core/database/lib/fields.js @@ -63,11 +63,11 @@ class BooleanField extends Field { if (strVal === '1') { return true; - } else if (strVal === '0') { - return false; - } else { - return null; } + if (strVal === '0') { + return false; + } + return null; } } @@ -131,7 +131,7 @@ const parseDate = value => { ); } - let date = dateFns.parseISO(extractedValue); + const date = dateFns.parseISO(extractedValue); if (!dateFns.isValid(date)) { throw new InvalidDateError(`Invalid date`); } diff --git a/packages/core/database/lib/metadata/relations.js b/packages/core/database/lib/metadata/relations.js index 155453b456..178906cd4c 100644 --- a/packages/core/database/lib/metadata/relations.js +++ b/packages/core/database/lib/metadata/relations.js @@ -75,12 +75,8 @@ const createOneToMany = (attributeName, attribute, meta, metadata) => { attributeName, meta, }); - } else { - if (isOwner(attribute)) { - throw new Error( - 'one side of a oneToMany cannot be the owner side in a bidirectional relation' - ); - } + } else if (isOwner(attribute)) { + throw new Error('one side of a oneToMany cannot be the owner side in a bidirectional relation'); } }; @@ -169,7 +165,7 @@ const createManyToMany = (attributeName, attribute, meta, metadata) => { * @param {ModelMetadata} meta * @param {Metadata} metadata */ -const createMorphToOne = (attributeName, attribute /*meta, metadata*/) => { +const createMorphToOne = (attributeName, attribute /* meta, metadata */) => { const idColumnName = 'target_id'; const typeColumnName = 'target_type'; @@ -354,7 +350,7 @@ const createRelation = (attributeName, attribute, meta, metadata) => { * @param {string} param.attributeName name of the associated attribute * @param {Object} param.meta model metadata */ -const createJoinColum = (metadata, { attribute, attributeName /*meta */ }) => { +const createJoinColum = (metadata, { attribute, attributeName /* meta */ }) => { const targetMeta = metadata.get(attribute.target); const joinColumnName = _.snakeCase(`${attributeName}_id`); @@ -395,7 +391,7 @@ const createJoinTable = (metadata, { attributeName, attribute, meta }) => { const joinTableName = _.snakeCase(`${meta.tableName}_${attributeName}_links`); - let joinColumnName = _.snakeCase(`${meta.singularName}_id`); + const joinColumnName = _.snakeCase(`${meta.singularName}_id`); let inverseJoinColumnName = _.snakeCase(`${targetMeta.singularName}_id`); // if relation is slef referencing diff --git a/packages/core/database/lib/query/helpers/join.js b/packages/core/database/lib/query/helpers/join.js index c46cd5133e..3539cf15c4 100644 --- a/packages/core/database/lib/query/helpers/join.js +++ b/packages/core/database/lib/query/helpers/join.js @@ -32,7 +32,7 @@ const createJoin = (ctx, { alias, attributeName, attribute }) => { const tragetMeta = db.metadata.get(attribute.target); - const joinColumn = attribute.joinColumn; + const { joinColumn } = attribute; if (joinColumn) { const subAlias = qb.getAlias(); @@ -46,7 +46,7 @@ const createJoin = (ctx, { alias, attributeName, attribute }) => { return subAlias; } - const joinTable = attribute.joinTable; + const { joinTable } = attribute; if (joinTable) { return createPivotJoin(qb, joinTable, alias, tragetMeta); } diff --git a/packages/core/database/lib/schema/diff.js b/packages/core/database/lib/schema/diff.js index abd98bb85e..318c5c1ad9 100644 --- a/packages/core/database/lib/schema/diff.js +++ b/packages/core/database/lib/schema/diff.js @@ -117,7 +117,7 @@ module.exports = db => { const diffDefault = (oldColumn, column) => { const oldDefaultTo = oldColumn.defaultTo; - const defaultTo = column.defaultTo; + const { defaultTo } = column; if (oldDefaultTo === null || _.toLower(oldDefaultTo) === 'null') { return _.isNil(defaultTo) || _.toLower(defaultTo) === 'null'; diff --git a/packages/core/database/lib/schema/index.js b/packages/core/database/lib/schema/index.js index b8f97a3d0a..2a395d65e3 100644 --- a/packages/core/database/lib/schema/index.js +++ b/packages/core/database/lib/schema/index.js @@ -87,7 +87,6 @@ const createSchemaProvider = db => { } debug('Schema unchanged'); - return; }, }; }; diff --git a/packages/core/email/server/controllers/email.js b/packages/core/email/server/controllers/email.js index 12b60d2a06..8ae0e5c587 100644 --- a/packages/core/email/server/controllers/email.js +++ b/packages/core/email/server/controllers/email.js @@ -10,7 +10,7 @@ const { ApplicationError } = require('@strapi/utils').errors; */ module.exports = { async send(ctx) { - let options = ctx.request.body; + const options = ctx.request.body; try { await strapi diff --git a/packages/core/strapi/bin/strapi.js b/packages/core/strapi/bin/strapi.js index b2b63fe638..74a0617066 100755 --- a/packages/core/strapi/bin/strapi.js +++ b/packages/core/strapi/bin/strapi.js @@ -1,4 +1,5 @@ #!/usr/bin/env node + 'use strict'; // FIXME @@ -13,7 +14,7 @@ const program = new Command(); const packageJSON = require('../package.json'); const checkCwdIsStrapiApp = name => { - let logErrorAndExit = () => { + const logErrorAndExit = () => { console.log( `You need to run ${yellow( `strapi ${name}` @@ -23,7 +24,7 @@ const checkCwdIsStrapiApp = name => { }; try { - const pkgJSON = require(process.cwd() + '/package.json'); + const pkgJSON = require(`${process.cwd()}/package.json`); if (!_.has(pkgJSON, 'dependencies.@strapi/strapi')) { logErrorAndExit(name); } @@ -69,7 +70,7 @@ program .command('version') .description('Output the version of Strapi') .action(() => { - process.stdout.write(packageJSON.version + '\n'); + process.stdout.write(`${packageJSON.version}\n`); process.exit(0); }); diff --git a/packages/core/strapi/lib/commands/__tests__/generate-template.test.js b/packages/core/strapi/lib/commands/__tests__/generate-template.test.js index 8ff4d60627..de6bfbeba5 100644 --- a/packages/core/strapi/lib/commands/__tests__/generate-template.test.js +++ b/packages/core/strapi/lib/commands/__tests__/generate-template.test.js @@ -1,4 +1,5 @@ 'use strict'; + jest.mock('fs-extra', () => ({ ensureDir: jest.fn(() => Promise.resolve()), copy: jest.fn(() => Promise.resolve()), diff --git a/packages/core/strapi/lib/commands/build.js b/packages/core/strapi/lib/commands/build.js index c96f9947ae..29b99dfd8d 100644 --- a/packages/core/strapi/lib/commands/build.js +++ b/packages/core/strapi/lib/commands/build.js @@ -1,6 +1,6 @@ 'use strict'; -const strapi = require('../'); +const strapi = require('..'); const { buildAdmin } = require('./builders'); /** diff --git a/packages/core/strapi/lib/commands/develop.js b/packages/core/strapi/lib/commands/develop.js index 23f25b7c81..4d1df431ab 100644 --- a/packages/core/strapi/lib/commands/develop.js +++ b/packages/core/strapi/lib/commands/develop.js @@ -97,7 +97,6 @@ const primaryProcess = async ({ distDir, appDir, build, isTSProject, watchAdmin, case 'stop': process.exit(1); default: - return; } }); @@ -108,7 +107,7 @@ const workerProcess = ({ appDir, distDir, watchAdmin, polling, isTSProject }) => const strapiInstance = strapi({ distDir, autoReload: true, - serveAdminPanel: watchAdmin ? false : true, + serveAdminPanel: !watchAdmin, }); const adminWatchIgnoreFiles = strapiInstance.config.get('admin.watchIgnoreFiles', []); diff --git a/packages/core/strapi/lib/commands/install.js b/packages/core/strapi/lib/commands/install.js index a5434182e0..288a835222 100644 --- a/packages/core/strapi/lib/commands/install.js +++ b/packages/core/strapi/lib/commands/install.js @@ -28,8 +28,8 @@ module.exports = async plugins => { // check if rebuild is necessary let shouldRebuild = false; - for (let name of plugins) { - let pkgPath = findPackagePath(`@strapi/plugin-${name}`); + for (const name of plugins) { + const pkgPath = findPackagePath(`@strapi/plugin-${name}`); if (existsSync(join(pkgPath, 'admin', 'src', 'index.js'))) { shouldRebuild = true; } diff --git a/packages/core/strapi/lib/commands/opt-in-telemetry.js b/packages/core/strapi/lib/commands/opt-in-telemetry.js index 9086d0fbe1..f811278755 100644 --- a/packages/core/strapi/lib/commands/opt-in-telemetry.js +++ b/packages/core/strapi/lib/commands/opt-in-telemetry.js @@ -40,16 +40,15 @@ const generateNewPackageJSON = packageObj => { telemetryDisabled: false, }, }; - } else { - return { - ...packageObj, - strapi: { - ...packageObj.strapi, - uuid: packageObj.strapi.uuid ? packageObj.strapi.uuid : uuidv4(), - telemetryDisabled: false, - }, - }; } + return { + ...packageObj, + strapi: { + ...packageObj.strapi, + uuid: packageObj.strapi.uuid ? packageObj.strapi.uuid : uuidv4(), + telemetryDisabled: false, + }, + }; }; const sendEvent = async uuid => { @@ -64,7 +63,7 @@ const sendEvent = async uuid => { headers: { 'Content-Type': 'application/json' }, }); } catch (e) { - //... + // ... } }; diff --git a/packages/core/strapi/lib/commands/opt-out-telemetry.js b/packages/core/strapi/lib/commands/opt-out-telemetry.js index 6fa60ea454..2dafd8a0f0 100644 --- a/packages/core/strapi/lib/commands/opt-out-telemetry.js +++ b/packages/core/strapi/lib/commands/opt-out-telemetry.js @@ -38,7 +38,7 @@ const sendEvent = async uuid => { headers: { 'Content-Type': 'application/json' }, }); } catch (e) { - //... + // ... } }; diff --git a/packages/core/strapi/lib/commands/start.js b/packages/core/strapi/lib/commands/start.js index 9f0299e631..829a7cf66e 100644 --- a/packages/core/strapi/lib/commands/start.js +++ b/packages/core/strapi/lib/commands/start.js @@ -1,4 +1,5 @@ 'use strict'; + const fs = require('fs'); const tsUtils = require('@strapi/typescript-utils'); const strapi = require('../index'); diff --git a/packages/core/strapi/lib/commands/uninstall.js b/packages/core/strapi/lib/commands/uninstall.js index 31d091d1c4..d00e607403 100644 --- a/packages/core/strapi/lib/commands/uninstall.js +++ b/packages/core/strapi/lib/commands/uninstall.js @@ -26,8 +26,8 @@ module.exports = async (plugins, { deleteFiles }) => { try { // verify should rebuild before removing the pacakge let shouldRebuild = false; - for (let name of plugins) { - let pkgPath = findPackagePath(`@strapi/plugin-${name}`); + for (const name of plugins) { + const pkgPath = findPackagePath(`@strapi/plugin-${name}`); if (existsSync(join(pkgPath, 'admin', 'src', 'index.js'))) { shouldRebuild = true; } @@ -46,7 +46,7 @@ module.exports = async (plugins, { deleteFiles }) => { if (deleteFiles === true || answers.deleteFiles === true) { loader.start('Deleting old files'); - for (let name of plugins) { + for (const name of plugins) { const pluginDir = join(dir, 'extensions', name); if (existsSync(pluginDir)) { removeSync(pluginDir); diff --git a/packages/core/strapi/lib/core-api/__tests__/controller.test.js b/packages/core/strapi/lib/core-api/__tests__/controller.test.js index 60cdf9e251..93f589b0e3 100644 --- a/packages/core/strapi/lib/core-api/__tests__/controller.test.js +++ b/packages/core/strapi/lib/core-api/__tests__/controller.test.js @@ -1,4 +1,5 @@ 'use strict'; + const { createController } = require('../controller'); describe('Default Controller', () => { diff --git a/packages/core/strapi/lib/core/domain/content-type/index.js b/packages/core/strapi/lib/core/domain/content-type/index.js index 99a9d725e8..6d390ba228 100644 --- a/packages/core/strapi/lib/core/domain/content-type/index.js +++ b/packages/core/strapi/lib/core/domain/content-type/index.js @@ -114,7 +114,7 @@ const createContentType = (uid, definition) => { }; const getGlobalId = (model, modelName, prefix) => { - let globalId = prefix ? `${prefix}-${modelName}` : modelName; + const globalId = prefix ? `${prefix}-${modelName}` : modelName; return model.globalId || _.upperFirst(_.camelCase(globalId)); }; diff --git a/packages/core/strapi/lib/core/domain/module/validation.js b/packages/core/strapi/lib/core/domain/module/validation.js index 1c20d9b5e9..6ffa18d4d9 100644 --- a/packages/core/strapi/lib/core/domain/module/validation.js +++ b/packages/core/strapi/lib/core/domain/module/validation.js @@ -12,9 +12,8 @@ const strapiServerSchema = yup routes: yup.lazy(value => { if (Array.isArray(value)) { return yup.array(); - } else { - return yup.object(); } + return yup.object(); }), controllers: yup.object(), services: yup.object(), diff --git a/packages/core/strapi/lib/core/loaders/plugins/get-enabled-plugins.js b/packages/core/strapi/lib/core/loaders/plugins/get-enabled-plugins.js index bae4f51eed..3763af0671 100644 --- a/packages/core/strapi/lib/core/loaders/plugins/get-enabled-plugins.js +++ b/packages/core/strapi/lib/core/loaders/plugins/get-enabled-plugins.js @@ -26,7 +26,7 @@ const toDetailedDeclaration = declaration => { return { enabled: declaration }; } - let detailedDeclaration = pick(['enabled'], declaration); + const detailedDeclaration = pick(['enabled'], declaration); if (has('resolve', declaration)) { let pathToPlugin = ''; diff --git a/packages/core/strapi/lib/core/loaders/plugins/index.js b/packages/core/strapi/lib/core/loaders/plugins/index.js index 817d13975d..0c51d5823b 100644 --- a/packages/core/strapi/lib/core/loaders/plugins/index.js +++ b/packages/core/strapi/lib/core/loaders/plugins/index.js @@ -40,11 +40,10 @@ const applyUserExtension = async plugins => { for (const ctName in plugin.contentTypes) { const extendedSchema = get([pluginName, 'content-types', ctName, 'schema'], extendedSchemas); if (extendedSchema) { - plugin.contentTypes[ctName].schema = Object.assign( - {}, - plugin.contentTypes[ctName].schema, - extendedSchema - ); + plugin.contentTypes[ctName].schema = { + ...plugin.contentTypes[ctName].schema, + ...extendedSchema, + }; } } // second: execute strapi-server extension diff --git a/packages/core/strapi/lib/core/registries/config.js b/packages/core/strapi/lib/core/registries/config.js index c58cf32967..87c36169a8 100644 --- a/packages/core/strapi/lib/core/registries/config.js +++ b/packages/core/strapi/lib/core/registries/config.js @@ -3,7 +3,7 @@ const _ = require('lodash'); module.exports = (initialConfig = {}) => { - const _config = Object.assign({}, initialConfig); // not deep clone because it would break some config + const _config = { ...initialConfig }; // not deep clone because it would break some config return { ..._config, // TODO: to remove diff --git a/packages/core/strapi/lib/core/utils.js b/packages/core/strapi/lib/core/utils.js index bcb214c313..f4cbb6e94d 100644 --- a/packages/core/strapi/lib/core/utils.js +++ b/packages/core/strapi/lib/core/utils.js @@ -7,25 +7,22 @@ const hasNamespace = (name, namespace) => { if (namespace.endsWith('::')) { return name.startsWith(namespace); - } else { - return name.startsWith(`${namespace}.`); } + return name.startsWith(`${namespace}.`); }; const addNamespace = (name, namespace) => { if (namespace.endsWith('::')) { return `${namespace}${name}`; - } else { - return `${namespace}.${name}`; } + return `${namespace}.${name}`; }; const removeNamespace = (name, namespace) => { if (namespace.endsWith('::')) { return name.replace(namespace, ''); - } else { - return name.replace(`${namespace}.`, ''); } + return name.replace(`${namespace}.`, ''); }; module.exports = { diff --git a/packages/core/strapi/lib/factories.js b/packages/core/strapi/lib/factories.js index cb90ae021d..122ab9362d 100644 --- a/packages/core/strapi/lib/factories.js +++ b/packages/core/strapi/lib/factories.js @@ -12,7 +12,7 @@ const createCoreController = (uid, cfg = {}) => { contentType: strapi.contentType(uid), }); - let userCtrl = typeof cfg === 'function' ? cfg({ strapi }) : cfg; + const userCtrl = typeof cfg === 'function' ? cfg({ strapi }) : cfg; for (const methodName of Object.keys(baseController)) { if (userCtrl[methodName] === undefined) { @@ -31,7 +31,7 @@ const createCoreService = (uid, cfg = {}) => { contentType: strapi.contentType(uid), }); - let userService = typeof cfg === 'function' ? cfg({ strapi }) : cfg; + const userService = typeof cfg === 'function' ? cfg({ strapi }) : cfg; for (const methodName of Object.keys(baseService)) { if (userService[methodName] === undefined) { diff --git a/packages/core/strapi/lib/load/filepath-to-prop-path.js b/packages/core/strapi/lib/load/filepath-to-prop-path.js index 096abb56a0..afd48f1a90 100644 --- a/packages/core/strapi/lib/load/filepath-to-prop-path.js +++ b/packages/core/strapi/lib/load/filepath-to-prop-path.js @@ -8,7 +8,7 @@ const _ = require('lodash'); * @param {boolean} useFileNameAsKey - wethear to skip the last path key */ module.exports = (filePath, useFileNameAsKey = true) => { - let cleanPath = filePath.startsWith('./') ? filePath.slice(2) : filePath; + const cleanPath = filePath.startsWith('./') ? filePath.slice(2) : filePath; const prop = cleanPath .replace(/(\.settings|\.json|\.js)/g, '') diff --git a/packages/core/strapi/lib/load/load-files.js b/packages/core/strapi/lib/load/load-files.js index e7c35ed460..ccb4f9a178 100644 --- a/packages/core/strapi/lib/load/load-files.js +++ b/packages/core/strapi/lib/load/load-files.js @@ -26,7 +26,7 @@ const loadFiles = async ( const root = {}; const files = await glob(pattern, { cwd: dir, ...globArgs }); - for (let file of files) { + for (const file of files) { const absolutePath = path.resolve(dir, file); // load module diff --git a/packages/core/strapi/lib/middlewares/logger.js b/packages/core/strapi/lib/middlewares/logger.js index a613057453..88bb7ef711 100644 --- a/packages/core/strapi/lib/middlewares/logger.js +++ b/packages/core/strapi/lib/middlewares/logger.js @@ -1,4 +1,5 @@ 'use strict'; + const chalk = require('chalk'); const codeToColor = code => { diff --git a/packages/core/strapi/lib/middlewares/response-time.js b/packages/core/strapi/lib/middlewares/response-time.js index c8510b4017..a3f5e544da 100644 --- a/packages/core/strapi/lib/middlewares/response-time.js +++ b/packages/core/strapi/lib/middlewares/response-time.js @@ -10,6 +10,6 @@ module.exports = () => { await next(); const delta = Math.ceil(Date.now() - start); - ctx.set('X-Response-Time', delta + 'ms'); + ctx.set('X-Response-Time', `${delta}ms`); }; }; diff --git a/packages/core/strapi/lib/middlewares/responses.js b/packages/core/strapi/lib/middlewares/responses.js index b66e3895df..370152a80e 100644 --- a/packages/core/strapi/lib/middlewares/responses.js +++ b/packages/core/strapi/lib/middlewares/responses.js @@ -9,7 +9,7 @@ module.exports = (config = {}) => { return async (ctx, next) => { await next(); - const status = ctx.status; + const { status } = ctx; const handler = prop(`handlers.${status}`, config); if (isFunction(handler)) { diff --git a/packages/core/strapi/lib/middlewares/session.js b/packages/core/strapi/lib/middlewares/session.js index b60312f58e..87f185246c 100644 --- a/packages/core/strapi/lib/middlewares/session.js +++ b/packages/core/strapi/lib/middlewares/session.js @@ -12,12 +12,12 @@ const defaultConfig = { signed: true, rolling: false, renew: false, - secure: process.env.NODE_ENV === 'production' ? true : false, + secure: process.env.NODE_ENV === 'production', sameSite: null, }; module.exports = (userConfig, { strapi }) => { - const keys = strapi.server.app.keys; + const { keys } = strapi.server.app; if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) { throw new Error( `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])` diff --git a/packages/core/strapi/lib/services/auth/index.js b/packages/core/strapi/lib/services/auth/index.js index ccf96614af..e40442f5b4 100644 --- a/packages/core/strapi/lib/services/auth/index.js +++ b/packages/core/strapi/lib/services/auth/index.js @@ -78,8 +78,6 @@ const createAuthentication = () => { if (typeof auth.strategy.verify === 'function') { return auth.strategy.verify(auth, config); } - - return; }, }; }; diff --git a/packages/core/strapi/lib/services/entity-service/__tests__/entity-service.test.js b/packages/core/strapi/lib/services/entity-service/__tests__/entity-service.test.js index 5ad4924b55..2d0a4c4f6a 100644 --- a/packages/core/strapi/lib/services/entity-service/__tests__/entity-service.test.js +++ b/packages/core/strapi/lib/services/entity-service/__tests__/entity-service.test.js @@ -3,7 +3,7 @@ jest.mock('bcryptjs', () => ({ hashSync: () => 'secret-password' })); const { EventEmitter } = require('events'); -const createEntityService = require('../'); +const createEntityService = require('..'); const entityValidator = require('../../entity-validator'); describe('Entity service', () => { diff --git a/packages/core/strapi/lib/services/entity-service/components.js b/packages/core/strapi/lib/services/entity-service/components.js index e93a7d360d..c9938e8a6c 100644 --- a/packages/core/strapi/lib/services/entity-service/components.js +++ b/packages/core/strapi/lib/services/entity-service/components.js @@ -307,9 +307,9 @@ const deleteComponents = async (uid, entityToDelete) => { } }; -/*************************** +/** ************************* Component queries -***************************/ +************************** */ // components can have nested compos so this must be recursive const createComponent = async (uid, data) => { diff --git a/packages/core/strapi/lib/services/entity-service/index.js b/packages/core/strapi/lib/services/entity-service/index.js index 9dcc4b5f94..e11fe99761 100644 --- a/packages/core/strapi/lib/services/entity-service/index.js +++ b/packages/core/strapi/lib/services/entity-service/index.js @@ -47,7 +47,7 @@ module.exports = ctx => { throw new Error(`Decorator must be a function, received ${typeof decorator}`); } - this.implementation = Object.assign({}, this.implementation, decorator(this.implementation)); + this.implementation = { ...this.implementation, ...decorator(this.implementation) }; return this; }, }; diff --git a/packages/core/strapi/lib/services/entity-validator/index.js b/packages/core/strapi/lib/services/entity-validator/index.js index 448d19da03..15a35cfe27 100644 --- a/packages/core/strapi/lib/services/entity-validator/index.js +++ b/packages/core/strapi/lib/services/entity-validator/index.js @@ -2,6 +2,7 @@ * Entity validator * Module that will validate input data for entity creation or edition */ + 'use strict'; const { has, assoc, prop, isObject } = require('lodash/fp'); diff --git a/packages/core/strapi/lib/services/entity-validator/validators.js b/packages/core/strapi/lib/services/entity-validator/validators.js index bfcad9ed87..def75c6c31 100644 --- a/packages/core/strapi/lib/services/entity-validator/validators.js +++ b/packages/core/strapi/lib/services/entity-validator/validators.js @@ -143,7 +143,7 @@ const addUniqueValidator = (validator, { attr, model, updatedAttribute, entity } return true; } - let whereParams = entity + const whereParams = entity ? { $and: [{ [updatedAttribute.name]: value }, { $not: { id: entity.id } }] } : { [updatedAttribute.name]: value }; diff --git a/packages/core/strapi/lib/services/event-hub.js b/packages/core/strapi/lib/services/event-hub.js index 79800a2bee..175ef992c9 100644 --- a/packages/core/strapi/lib/services/event-hub.js +++ b/packages/core/strapi/lib/services/event-hub.js @@ -1,6 +1,7 @@ /** * The event hub is Strapi's event control center. */ + 'use strict'; const EventEmitter = require('events'); diff --git a/packages/core/strapi/lib/services/metrics/index.js b/packages/core/strapi/lib/services/metrics/index.js index accd4068a6..5bd85a3604 100644 --- a/packages/core/strapi/lib/services/metrics/index.js +++ b/packages/core/strapi/lib/services/metrics/index.js @@ -1,4 +1,5 @@ 'use strict'; + /** * Strapi telemetry package. * You can learn more at https://docs.strapi.io/developer-docs/latest/getting-started/usage-information.html diff --git a/packages/core/strapi/lib/services/server/koa.js b/packages/core/strapi/lib/services/server/koa.js index 1c98f6160f..0791efe3c8 100644 --- a/packages/core/strapi/lib/services/server/koa.js +++ b/packages/core/strapi/lib/services/server/koa.js @@ -4,7 +4,7 @@ const { isNil, camelCase } = require('lodash/fp'); const Koa = require('koa'); const createError = require('http-errors'); const delegate = require('delegates'); -var statuses = require('statuses'); +const statuses = require('statuses'); const { formatHttpError } = require('../errors'); const addCustomMethods = app => { diff --git a/packages/core/strapi/lib/services/server/register-middlewares.js b/packages/core/strapi/lib/services/server/register-middlewares.js index de330f29d7..69f7aaaae2 100644 --- a/packages/core/strapi/lib/services/server/register-middlewares.js +++ b/packages/core/strapi/lib/services/server/register-middlewares.js @@ -104,8 +104,6 @@ const checkRequiredMiddlewares = middlewares => { )}".` ); } - - return; }; module.exports = registerApplicationMiddlewares; diff --git a/packages/core/strapi/lib/services/utils/upload-files.js b/packages/core/strapi/lib/services/utils/upload-files.js index f12fdf56ea..dcbc1bf8b1 100644 --- a/packages/core/strapi/lib/services/utils/upload-files.js +++ b/packages/core/strapi/lib/services/utils/upload-files.js @@ -23,7 +23,7 @@ module.exports = async (uid, entity, files) => { return uid; } - let currentPath = []; + const currentPath = []; let tmpModel = modelDef; let modelUID = uid; diff --git a/packages/core/strapi/lib/services/webhook-runner.js b/packages/core/strapi/lib/services/webhook-runner.js index 532b983283..3bf3777862 100644 --- a/packages/core/strapi/lib/services/webhook-runner.js +++ b/packages/core/strapi/lib/services/webhook-runner.js @@ -1,6 +1,7 @@ /** * The event hub is Strapi's event control center. */ + 'use strict'; const debug = require('debug')('strapi:webhook'); diff --git a/packages/core/strapi/lib/services/webhook-store.js b/packages/core/strapi/lib/services/webhook-store.js index 9aa87eca97..39423edbc7 100644 --- a/packages/core/strapi/lib/services/webhook-store.js +++ b/packages/core/strapi/lib/services/webhook-store.js @@ -1,6 +1,7 @@ /** * Webhook store is the implementation of webhook storage over the core_store */ + 'use strict'; const webhookModel = { diff --git a/packages/core/strapi/lib/services/worker-queue.js b/packages/core/strapi/lib/services/worker-queue.js index 7eaabfc174..bece4f70b8 100644 --- a/packages/core/strapi/lib/services/worker-queue.js +++ b/packages/core/strapi/lib/services/worker-queue.js @@ -1,6 +1,7 @@ /** * Simple worker queue in memory */ + 'use strict'; const debug = require('debug')('strapi:worker-queue'); diff --git a/packages/core/strapi/lib/utils/addSlash.js b/packages/core/strapi/lib/utils/addSlash.js index d30bf5bebc..81dd403c33 100644 --- a/packages/core/strapi/lib/utils/addSlash.js +++ b/packages/core/strapi/lib/utils/addSlash.js @@ -4,7 +4,7 @@ module.exports = path => { if (typeof path !== 'string') throw new Error('admin.url must be a string'); if (path === '' || path === '/') return '/'; - if (path[0] != '/') path = '/' + path; - if (path[path.length - 1] != '/') path = path + '/'; + if (path[0] != '/') path = `/${path}`; + if (path[path.length - 1] != '/') path += '/'; return path; }; diff --git a/packages/core/strapi/lib/utils/open-browser.js b/packages/core/strapi/lib/utils/open-browser.js index 4f2702001f..697a6ccd1e 100644 --- a/packages/core/strapi/lib/utils/open-browser.js +++ b/packages/core/strapi/lib/utils/open-browser.js @@ -1,6 +1,6 @@ 'use strict'; -var open = require('open'); +const open = require('open'); const { getAbsoluteAdminUrl } = require('@strapi/utils'); async function openBrowser(config) { diff --git a/packages/core/strapi/lib/utils/run-checks.js b/packages/core/strapi/lib/utils/run-checks.js index 1a93dfc516..6f9a3ec1eb 100644 --- a/packages/core/strapi/lib/utils/run-checks.js +++ b/packages/core/strapi/lib/utils/run-checks.js @@ -5,8 +5,8 @@ const fs = require('fs-extra'); const requiredPaths = ['api', 'extensions', 'plugins', 'config', 'public']; const checkFoldersExist = ({ appPath }) => { - let missingPaths = []; - for (let reqPath of requiredPaths) { + const missingPaths = []; + for (const reqPath of requiredPaths) { if (!fs.pathExistsSync(path.resolve(appPath, reqPath))) { missingPaths.push(reqPath); } diff --git a/packages/core/strapi/lib/utils/startup-logger.js b/packages/core/strapi/lib/utils/startup-logger.js index 214dd5c9c6..0b26dc919b 100644 --- a/packages/core/strapi/lib/utils/startup-logger.js +++ b/packages/core/strapi/lib/utils/startup-logger.js @@ -23,7 +23,7 @@ module.exports = app => { infoTable.push( [chalk.blue('Time'), `${new Date()}`], - [chalk.blue('Launched in'), Date.now() - app.config.launchedAt + ' ms'], + [chalk.blue('Launched in'), `${Date.now() - app.config.launchedAt} ms`], [chalk.blue('Environment'), app.config.environment], [chalk.blue('Process PID'), process.pid], [chalk.blue('Version'), `${app.config.info.strapi} (node ${process.version})`], diff --git a/packages/core/strapi/lib/utils/success.js b/packages/core/strapi/lib/utils/success.js index 397656679d..231442f0fb 100644 --- a/packages/core/strapi/lib/utils/success.js +++ b/packages/core/strapi/lib/utils/success.js @@ -27,5 +27,5 @@ try { }).catch(() => {}); } } catch (e) { - //... + // ... } diff --git a/packages/core/strapi/tests/api/basic-compo-repeatable.test.e2e.js b/packages/core/strapi/tests/api/basic-compo-repeatable.test.e2e.js index a4a8d54f8d..1eb9984f43 100644 --- a/packages/core/strapi/tests/api/basic-compo-repeatable.test.e2e.js +++ b/packages/core/strapi/tests/api/basic-compo-repeatable.test.e2e.js @@ -7,7 +7,7 @@ const { createContentAPIRequest } = require('../../../../../test/helpers/request const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { productsWithCompo: [], }; diff --git a/packages/core/strapi/tests/api/basic-compo.test.e2e.js b/packages/core/strapi/tests/api/basic-compo.test.e2e.js index 6e7a3c5d2c..757d4d5b6b 100644 --- a/packages/core/strapi/tests/api/basic-compo.test.e2e.js +++ b/packages/core/strapi/tests/api/basic-compo.test.e2e.js @@ -7,7 +7,7 @@ const { createContentAPIRequest } = require('../../../../../test/helpers/request const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { productsWithCompo: [], }; diff --git a/packages/core/strapi/tests/api/basic-dp-compo-repeatable.test.e2e.js b/packages/core/strapi/tests/api/basic-dp-compo-repeatable.test.e2e.js index c4d0b74ee2..60f09fe1c4 100644 --- a/packages/core/strapi/tests/api/basic-dp-compo-repeatable.test.e2e.js +++ b/packages/core/strapi/tests/api/basic-dp-compo-repeatable.test.e2e.js @@ -7,7 +7,7 @@ const { createContentAPIRequest } = require('../../../../../test/helpers/request const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { productsWithCompoAndDP: [], }; diff --git a/packages/core/strapi/tests/api/basic-dp-compo.test.e2e.js b/packages/core/strapi/tests/api/basic-dp-compo.test.e2e.js index 613d6cbaae..b72a6a3876 100644 --- a/packages/core/strapi/tests/api/basic-dp-compo.test.e2e.js +++ b/packages/core/strapi/tests/api/basic-dp-compo.test.e2e.js @@ -7,7 +7,7 @@ const { createContentAPIRequest } = require('../../../../../test/helpers/request const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { productsWithCompoAndDP: [], }; diff --git a/packages/core/strapi/tests/api/basic-dp.test.e2e.js b/packages/core/strapi/tests/api/basic-dp.test.e2e.js index 47785b0a5c..84781a9287 100644 --- a/packages/core/strapi/tests/api/basic-dp.test.e2e.js +++ b/packages/core/strapi/tests/api/basic-dp.test.e2e.js @@ -9,7 +9,7 @@ const { createContentAPIRequest } = require('../../../../../test/helpers/request const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { products: [], }; diff --git a/packages/core/strapi/tests/api/basic.test.e2e.js b/packages/core/strapi/tests/api/basic.test.e2e.js index c332ea89dd..0e6603bd2c 100644 --- a/packages/core/strapi/tests/api/basic.test.e2e.js +++ b/packages/core/strapi/tests/api/basic.test.e2e.js @@ -7,7 +7,7 @@ const { createContentAPIRequest } = require('../../../../../test/helpers/request const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { product: [], }; diff --git a/packages/core/strapi/tests/endpoint.test.e2e.js b/packages/core/strapi/tests/endpoint.test.e2e.js index afc857e0bb..96555874ee 100644 --- a/packages/core/strapi/tests/endpoint.test.e2e.js +++ b/packages/core/strapi/tests/endpoint.test.e2e.js @@ -145,9 +145,7 @@ describe('Create Strapi API End to End', () => { test('Update article1 add tag2', async () => { const { id, attributes } = data.articles[0]; - const entry = Object.assign({}, attributes, { - tags: [data.tags[1].id], - }); + const entry = { ...attributes, tags: [data.tags[1].id] }; cleanDate(entry); @@ -174,7 +172,7 @@ describe('Create Strapi API End to End', () => { test('Update article1 add tag1 and tag3', async () => { const { id, attributes } = data.articles[0]; - const entry = Object.assign({}, attributes); + const entry = { ...attributes }; entry.tags = data.tags.map(t => t.id); cleanDate(entry); @@ -202,7 +200,7 @@ describe('Create Strapi API End to End', () => { test('Update article1 remove one tag', async () => { const { id, attributes } = data.articles[0]; - const entry = Object.assign({}, attributes); + const entry = { ...attributes }; entry.tags = entry.tags.data.slice(1).map(t => t.id); cleanDate(entry); @@ -229,9 +227,7 @@ describe('Create Strapi API End to End', () => { test('Update article1 remove all tag', async () => { const { id, attributes } = data.articles[0]; - const entry = Object.assign({}, attributes, { - tags: [], - }); + const entry = { ...attributes, tags: [] }; cleanDate(entry); @@ -338,9 +334,7 @@ describe('Create Strapi API End to End', () => { test('Update article1 with cat2', async () => { const { id, attributes } = data.articles[0]; - const entry = Object.assign({}, attributes, { - category: data.categories[1].id, - }); + const entry = { ...attributes, category: data.categories[1].id }; cleanDate(entry); @@ -389,9 +383,7 @@ describe('Create Strapi API End to End', () => { test('Update article2 with cat2', async () => { const { id, attributes } = data.articles[1]; - const entry = Object.assign({}, attributes, { - category: data.categories[1].id, - }); + const entry = { ...attributes, category: data.categories[1].id }; cleanDate(entry); @@ -419,7 +411,7 @@ describe('Create Strapi API End to End', () => { test('Update cat1 with article1', async () => { const { id, attributes } = data.categories[0]; - const entry = Object.assign({}, attributes); + const entry = { ...attributes }; entry.articles = data.categories[0].attributes.articles.data .map(a => a.id) .concat(data.articles[0].id); @@ -590,9 +582,7 @@ describe('Create Strapi API End to End', () => { test('Update article1 with ref1', async () => { const { id, attributes } = data.articles[0]; - const entry = Object.assign({}, attributes, { - reference: data.references[0].id, - }); + const entry = { ...attributes, reference: data.references[0].id }; cleanDate(entry); diff --git a/packages/core/strapi/tests/filtering.test.e2e.js b/packages/core/strapi/tests/filtering.test.e2e.js index 076d2e61d8..3e575f5d4c 100644 --- a/packages/core/strapi/tests/filtering.test.e2e.js +++ b/packages/core/strapi/tests/filtering.test.e2e.js @@ -1261,7 +1261,7 @@ describe('Filtering API', () => { }); test('Combined filters', async () => { - let res = await rq({ + const res = await rq({ method: 'GET', url: '/products', qs: { diff --git a/packages/core/strapi/tests/lifecycles/before-delete.test.e2e.js b/packages/core/strapi/tests/lifecycles/before-delete.test.e2e.js index 0e986eb440..f33ea982c2 100644 --- a/packages/core/strapi/tests/lifecycles/before-delete.test.e2e.js +++ b/packages/core/strapi/tests/lifecycles/before-delete.test.e2e.js @@ -7,7 +7,7 @@ const { createContentAPIRequest } = require('../../../../../test/helpers/request let builder; let strapi; let rq; -let data = { +const data = { productsWithCompo: [], }; diff --git a/packages/core/strapi/tests/migrations/migration-draft-publish.test.e2e.js b/packages/core/strapi/tests/migrations/migration-draft-publish.test.e2e.js index 224fe86a7e..acd0abebe8 100644 --- a/packages/core/strapi/tests/migrations/migration-draft-publish.test.e2e.js +++ b/packages/core/strapi/tests/migrations/migration-draft-publish.test.e2e.js @@ -10,7 +10,7 @@ const modelsUtils = require('../../../../../test/helpers/models'); let builder; let strapi; let rq; -let data = { +const data = { dogs: [], }; const dogModel = { @@ -76,7 +76,7 @@ describe('Migration - draft and publish', () => { describe('Enabling D&P on a content-type', () => { test('No publishedAt before enabling the feature', async () => { - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::dog.dog', method: 'GET', }); @@ -105,7 +105,7 @@ describe('Migration - draft and publish', () => { await restart(); - let { body } = await rq({ + const { body } = await rq({ method: 'GET', url: '/content-manager/collection-types/api::dog.dog', }); @@ -149,7 +149,7 @@ describe('Migration - draft and publish', () => { // drafts should have been deleted with the migration, so we remove them data.dogs = data.dogs.filter(dog => !_.isNil(dog.publishedAt)); - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::dog.dog', method: 'GET', }); diff --git a/packages/core/strapi/tests/migrations/migration-required-attribute.test.e2e.js b/packages/core/strapi/tests/migrations/migration-required-attribute.test.e2e.js index 750b374412..33b2e9832d 100644 --- a/packages/core/strapi/tests/migrations/migration-required-attribute.test.e2e.js +++ b/packages/core/strapi/tests/migrations/migration-required-attribute.test.e2e.js @@ -8,7 +8,7 @@ const modelsUtils = require('../../../../../test/helpers/models'); const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { dogs: [], }; @@ -63,7 +63,7 @@ describe('Migration - required attribute', () => { describe('Required: false -> true', () => { test('Can be null before migration', async () => { - let { body } = await rq({ + const { body } = await rq({ method: 'GET', url: '/content-manager/collection-types/api::dog.dog', }); diff --git a/packages/core/strapi/tests/migrations/migration-unique-attribute.test.e2e.js b/packages/core/strapi/tests/migrations/migration-unique-attribute.test.e2e.js index a9fd43c429..b66ef4204e 100644 --- a/packages/core/strapi/tests/migrations/migration-unique-attribute.test.e2e.js +++ b/packages/core/strapi/tests/migrations/migration-unique-attribute.test.e2e.js @@ -8,7 +8,7 @@ const modelsUtils = require('../../../../../test/helpers/models'); const builder = createTestBuilder(); let strapi; let rq; -let data = { +const data = { dogs: [], }; @@ -63,7 +63,7 @@ describe('Migration - unique attribute', () => { describe('Unique: false -> true', () => { test('Can have duplicates before migration', async () => { - let { body } = await rq({ + const { body } = await rq({ url: '/content-manager/collection-types/api::dog.dog', method: 'GET', }); diff --git a/packages/core/strapi/tests/search.test.e2e.js b/packages/core/strapi/tests/search.test.e2e.js index 5fd7432708..b3dc06233e 100644 --- a/packages/core/strapi/tests/search.test.e2e.js +++ b/packages/core/strapi/tests/search.test.e2e.js @@ -11,7 +11,7 @@ const { const builder = createTestBuilder(); let rq; let strapi; -let data = { +const data = { bed: [], }; diff --git a/packages/core/strapi/tests/single-type.test.e2e.js b/packages/core/strapi/tests/single-type.test.e2e.js index 3c5259c2bf..5682f6b12d 100644 --- a/packages/core/strapi/tests/single-type.test.e2e.js +++ b/packages/core/strapi/tests/single-type.test.e2e.js @@ -8,8 +8,8 @@ const { createTestBuilder } = require('../../../../test/helpers/builder'); const builder = createTestBuilder(); let strapi; let rq; -let uid = 'single-type'; -let data = {}; +const uid = 'single-type'; +const data = {}; const model = { kind: 'singleType', diff --git a/packages/core/upload/server/controllers/admin-folder-file.js b/packages/core/upload/server/controllers/admin-folder-file.js index 5584aff281..dde093bc21 100644 --- a/packages/core/upload/server/controllers/admin-folder-file.js +++ b/packages/core/upload/server/controllers/admin-folder-file.js @@ -118,7 +118,7 @@ module.exports = { if (existingFolders.length > 0) { // update folders' parent relation - const joinTable = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.parent.joinTable; + const { joinTable } = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.parent; await strapi.db .queryBuilder(joinTable.name) .transacting(trx) diff --git a/packages/core/upload/server/graphql.js b/packages/core/upload/server/graphql.js index 2fc6e7b850..0922dfdb0d 100644 --- a/packages/core/upload/server/graphql.js +++ b/packages/core/upload/server/graphql.js @@ -236,11 +236,11 @@ module.exports = ({ strapi }) => { types: [fileInfoInputType, mutations], resolversConfig: { // Use custom scopes for the upload file CRUD operations - ['Query.uploadFiles']: { auth: { scope: 'plugin::upload.content-api.find' } }, - ['Query.uploadFile']: { auth: { scope: 'plugin::upload.content-api.findOne' } }, - ['Mutation.createUploadFile']: { auth: { scope: 'plugin::upload.content-api.upload' } }, - ['Mutation.updateUploadFile']: { auth: { scope: 'plugin::upload.content-api.upload' } }, - ['Mutation.deleteUploadFile']: { auth: { scope: 'plugin::upload.content-api.destroy' } }, + 'Query.uploadFiles': { auth: { scope: 'plugin::upload.content-api.find' } }, + 'Query.uploadFile': { auth: { scope: 'plugin::upload.content-api.findOne' } }, + 'Mutation.createUploadFile': { auth: { scope: 'plugin::upload.content-api.upload' } }, + 'Mutation.updateUploadFile': { auth: { scope: 'plugin::upload.content-api.upload' } }, + 'Mutation.deleteUploadFile': { auth: { scope: 'plugin::upload.content-api.destroy' } }, [`Mutation.${UPLOAD_MUTATION_NAME}`]: { auth: { scope: 'plugin::upload.content-api.upload' }, diff --git a/packages/core/upload/server/services/__tests__/folder.test.js b/packages/core/upload/server/services/__tests__/folder.test.js index 6165931b00..c6308e2a7a 100644 --- a/packages/core/upload/server/services/__tests__/folder.test.js +++ b/packages/core/upload/server/services/__tests__/folder.test.js @@ -4,7 +4,7 @@ const { setPathIdAndPath } = require('../folder'); const folderUID = '1'; const rootPathRegex = /^\/[0-9]*$/i; -const folderPathRegex = new RegExp('^/' + folderUID + '/[0-9]*$', 'i'); +const folderPathRegex = new RegExp(`^/${folderUID}/[0-9]*$`, 'i'); describe('folder', () => { describe('setPathIdAndPath', () => { diff --git a/packages/core/upload/server/services/__tests__/metrics.js b/packages/core/upload/server/services/__tests__/metrics.js index 8bb0a2016e..8f19a7b617 100644 --- a/packages/core/upload/server/services/__tests__/metrics.js +++ b/packages/core/upload/server/services/__tests__/metrics.js @@ -4,7 +4,7 @@ const metricsService = require('../metrics'); // TODO: the matcher exists in jest@28 const closeTo = (expected, precision = 2) => ({ - asymmetricMatch: actual => Math.abs(expected - actual) < Math.pow(10, -precision) / 2, + asymmetricMatch: actual => Math.abs(expected - actual) < 10 ** -precision / 2, }); describe('metrics', () => { diff --git a/packages/core/upload/server/services/__tests__/upload/uploadImage.test.js b/packages/core/upload/server/services/__tests__/upload/uploadImage.test.js index 6a6e572df6..d7e4473bb5 100644 --- a/packages/core/upload/server/services/__tests__/upload/uploadImage.test.js +++ b/packages/core/upload/server/services/__tests__/upload/uploadImage.test.js @@ -70,7 +70,7 @@ describe('Upload image', () => { }); test('Upload with thubmnail', async () => { - let fileData = getFileData(imageFilePath); + const fileData = getFileData(imageFilePath); const upload = jest.fn(); mockUploadProvider(upload); @@ -79,7 +79,7 @@ describe('Upload image', () => { }); test('Upload with responsive formats', async () => { - let fileData = getFileData(imageFilePath); + const fileData = getFileData(imageFilePath); const upload = jest.fn(); mockUploadProvider(upload, { responsiveDimensions: true }); diff --git a/packages/core/upload/server/services/folder.js b/packages/core/upload/server/services/folder.js index ebc7092668..49db2362b4 100644 --- a/packages/core/upload/server/services/folder.js +++ b/packages/core/upload/server/services/folder.js @@ -113,7 +113,7 @@ const update = async (id, { name, parent }, { user }) => { .execute(); // update parent folder (delete + insert; upsert not possible) - const joinTable = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.parent.joinTable; + const { joinTable } = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.parent; await strapi.db .queryBuilder(joinTable.name) .transacting(trx) @@ -207,7 +207,7 @@ const exists = async (params = {}) => { * @returns {Promise} */ const getStructure = async () => { - const joinTable = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.parent.joinTable; + const { joinTable } = strapi.db.metadata.get(FOLDER_MODEL_UID).attributes.parent; const qb = strapi.db.queryBuilder(FOLDER_MODEL_UID); const alias = qb.getAlias(); const folders = await qb diff --git a/packages/core/upload/server/services/image-manipulation.js b/packages/core/upload/server/services/image-manipulation.js index 1828c3468e..4bb4a2b2cd 100644 --- a/packages/core/upload/server/services/image-manipulation.js +++ b/packages/core/upload/server/services/image-manipulation.js @@ -1,4 +1,5 @@ 'use strict'; + /** * Image manipulation functions */ @@ -111,7 +112,7 @@ const optimize = async file => { if (newSize > size) { // Ignore optimization if output is bigger than original - return Object.assign({}, file, { width, height, size: bytesToKbytes(size) }); + return { ...file, width, height, size: bytesToKbytes(size) }; } return Object.assign(newFile, { diff --git a/packages/core/upload/server/services/metrics.js b/packages/core/upload/server/services/metrics.js index bc03f34187..67f08fd8b9 100644 --- a/packages/core/upload/server/services/metrics.js +++ b/packages/core/upload/server/services/metrics.js @@ -21,7 +21,7 @@ module.exports = ({ strapi }) => ({ const folderTable = strapi.getModel(FOLDER_MODEL_UID).collectionName; let keepOnlySlashesSQLString = '??'; - let queryParams = [pathColName]; + const queryParams = [pathColName]; for (let i = 0; i < 10; i += 1) { keepOnlySlashesSQLString = `REPLACE(${keepOnlySlashesSQLString}, ?, ?)`; queryParams.push(String(i), ''); diff --git a/packages/core/upload/server/utils/file.js b/packages/core/upload/server/utils/file.js index beca4be334..5b8d382eed 100644 --- a/packages/core/upload/server/utils/file.js +++ b/packages/core/upload/server/utils/file.js @@ -1,4 +1,5 @@ 'use strict'; + /** * Utils file containing file treatment utils */ diff --git a/packages/core/upload/tests/admin/file-folder.test.e2e.js b/packages/core/upload/tests/admin/file-folder.test.e2e.js index bcb8070ca6..98aa6c33d1 100644 --- a/packages/core/upload/tests/admin/file-folder.test.e2e.js +++ b/packages/core/upload/tests/admin/file-folder.test.e2e.js @@ -9,7 +9,7 @@ const { createAuthRequest } = require('../../../../../test/helpers/request'); let strapi; let rq; -let data = { +const data = { folders: [], files: [], }; diff --git a/packages/core/upload/tests/admin/folder-file.test.e2e.js b/packages/core/upload/tests/admin/folder-file.test.e2e.js index 1f9ce98624..ea1616da2d 100644 --- a/packages/core/upload/tests/admin/folder-file.test.e2e.js +++ b/packages/core/upload/tests/admin/folder-file.test.e2e.js @@ -9,7 +9,7 @@ const { createAuthRequest } = require('../../../../../test/helpers/request'); let strapi; let rq; -let data = { +const data = { folders: [], files: [], }; diff --git a/packages/core/upload/tests/admin/folder-structure.test.e2e.js b/packages/core/upload/tests/admin/folder-structure.test.e2e.js index 3ab8e23924..0a6bf2d945 100644 --- a/packages/core/upload/tests/admin/folder-structure.test.e2e.js +++ b/packages/core/upload/tests/admin/folder-structure.test.e2e.js @@ -6,7 +6,7 @@ const { createAuthRequest } = require('../../../../../test/helpers/request'); let strapi; let rq; -let data = { +const data = { folders: [], }; diff --git a/packages/core/upload/tests/admin/folder.test.e2e.js b/packages/core/upload/tests/admin/folder.test.e2e.js index c4356f8d90..7ef2ec2ce1 100644 --- a/packages/core/upload/tests/admin/folder.test.e2e.js +++ b/packages/core/upload/tests/admin/folder.test.e2e.js @@ -11,12 +11,12 @@ const { createAuthRequest } = require('../../../../../test/helpers/request'); let strapi; let rq; -let data = { +const data = { folders: [], }; const rootPathRegex = /^\/[0-9]*$/i; -const getFolderPathRegex = pathId => new RegExp('^/' + pathId + '/[0-9]*$', 'i'); +const getFolderPathRegex = pathId => new RegExp(`^/${pathId}/[0-9]*$`, 'i'); const createFolder = async (name, parent = null) => { const res = await rq({ diff --git a/packages/core/utils/lib/build-query.js b/packages/core/utils/lib/build-query.js index 35c7f7da37..b2814cfe1d 100644 --- a/packages/core/utils/lib/build-query.js +++ b/packages/core/utils/lib/build-query.js @@ -1,6 +1,6 @@ 'use strict'; -//TODO: move to dbal +// TODO: move to dbal const _ = require('lodash'); const parseType = require('./parse-type'); @@ -114,7 +114,8 @@ const normalizeWhereClauses = (whereClauses, { model }) => { .filter(({ field, value }) => { if (_.isNull(value)) { return false; - } else if (_.isUndefined(value)) { + } + if (_.isUndefined(value)) { strapi.log.warn(`The value of field: '${field}', in your where filter, is undefined.`); return false; } diff --git a/packages/core/utils/lib/config.js b/packages/core/utils/lib/config.js index 9a653aa4d9..26ea365fc6 100644 --- a/packages/core/utils/lib/config.js +++ b/packages/core/utils/lib/config.js @@ -64,13 +64,13 @@ const getConfigUrls = (config, forAdminBuild = false) => { const getAbsoluteUrl = adminOrServer => (config, forAdminBuild = false) => { const { serverUrl, adminUrl } = getConfigUrls(config, forAdminBuild); - let url = adminOrServer === 'server' ? serverUrl : adminUrl; + const url = adminOrServer === 'server' ? serverUrl : adminUrl; if (url.startsWith('http')) { return url; } - let hostname = + const hostname = config.get('environment') === 'development' && ['127.0.0.1', '0.0.0.0'].includes(config.get('server.host')) ? 'localhost' diff --git a/packages/core/utils/lib/convert-query-params.js b/packages/core/utils/lib/convert-query-params.js index 1640bc5de4..6c4093175c 100644 --- a/packages/core/utils/lib/convert-query-params.js +++ b/packages/core/utils/lib/convert-query-params.js @@ -336,12 +336,10 @@ const convertAndSanitizeFilters = (filters, schema) => { } // Handle operators - else { - if (['$null', '$notNull'].includes(key)) { - filters[key] = parseType({ type: 'boolean', value: filters[key], forceCast: true }); - } else if (isObject(value)) { - filters[key] = convertAndSanitizeFilters(value, schema); - } + else if (['$null', '$notNull'].includes(key)) { + filters[key] = parseType({ type: 'boolean', value: filters[key], forceCast: true }); + } else if (isObject(value)) { + filters[key] = convertAndSanitizeFilters(value, schema); } // Remove empty objects & arrays diff --git a/packages/core/utils/lib/parse-type.js b/packages/core/utils/lib/parse-type.js index f96052ebe9..bb6e0b03a0 100644 --- a/packages/core/utils/lib/parse-type.js +++ b/packages/core/utils/lib/parse-type.js @@ -26,7 +26,7 @@ const parseTime = value => { const parseDate = value => { if (dates.isDate(value)) return dates.format(value, 'yyyy-MM-dd'); try { - let date = dates.parseISO(value); + const date = dates.parseISO(value); if (dates.isValid(date)) return dates.format(date, 'yyyy-MM-dd'); diff --git a/packages/core/utils/lib/policy.js b/packages/core/utils/lib/policy.js index 5474e9c1ec..7eec9c7ade 100644 --- a/packages/core/utils/lib/policy.js +++ b/packages/core/utils/lib/policy.js @@ -1,6 +1,7 @@ /** * Policies util */ + 'use strict'; const _ = require('lodash'); diff --git a/packages/core/utils/lib/print-value.js b/packages/core/utils/lib/print-value.js index 0645e99f61..ec258eed7d 100644 --- a/packages/core/utils/lib/print-value.js +++ b/packages/core/utils/lib/print-value.js @@ -3,7 +3,7 @@ // Code copied from the yup library (https://github.com/jquense/yup) // https://github.com/jquense/yup/blob/2778b88bdacd5260d593c6468793da2e77daf21f/src/util/printValue.ts -const toString = Object.prototype.toString; +const { toString } = Object.prototype; const errorToString = Error.prototype.toString; const regExpToString = RegExp.prototype.toString; const symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => ''; @@ -13,34 +13,34 @@ const SYMBOL_REGEXP = /^Symbol\((.*)\)(.*)$/; function printNumber(val) { if (val != +val) return 'NaN'; const isNegativeZero = val === 0 && 1 / val < 0; - return isNegativeZero ? '-0' : '' + val; + return isNegativeZero ? '-0' : `${val}`; } function printSimpleValue(val, quoteStrings = false) { - if (val == null || val === true || val === false) return '' + val; + if (val == null || val === true || val === false) return `${val}`; const typeOf = typeof val; if (typeOf === 'number') return printNumber(val); if (typeOf === 'string') return quoteStrings ? `"${val}"` : val; - if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']'; + if (typeOf === 'function') return `[Function ${val.name || 'anonymous'}]`; if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)'); const tag = toString.call(val).slice(8, -1); - if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val); - if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']'; + if (tag === 'Date') return isNaN(val.getTime()) ? `${val}` : val.toISOString(val); + if (tag === 'Error' || val instanceof Error) return `[${errorToString.call(val)}]`; if (tag === 'RegExp') return regExpToString.call(val); return null; } function printValue(value, quoteStrings) { - let result = printSimpleValue(value, quoteStrings); + const result = printSimpleValue(value, quoteStrings); if (result !== null) return result; return JSON.stringify( value, function(key, value) { - let result = printSimpleValue(this[key], quoteStrings); + const result = printSimpleValue(this[key], quoteStrings); if (result !== null) return result; return value; }, diff --git a/packages/core/utils/lib/sanitize/visitors/restricted-fields.js b/packages/core/utils/lib/sanitize/visitors/restricted-fields.js index d3f1805d5f..08232ea83a 100644 --- a/packages/core/utils/lib/sanitize/visitors/restricted-fields.js +++ b/packages/core/utils/lib/sanitize/visitors/restricted-fields.js @@ -26,6 +26,5 @@ module.exports = (restrictedFields = null) => ({ key, path }, { remove }) => { ); if (isRestrictedNested) { remove(key); - return; } }; diff --git a/packages/core/utils/lib/string-formatting.js b/packages/core/utils/lib/string-formatting.js index dbef3c2413..a7969a8a43 100644 --- a/packages/core/utils/lib/string-formatting.js +++ b/packages/core/utils/lib/string-formatting.js @@ -1,4 +1,5 @@ 'use strict'; + const _ = require('lodash'); const { trimChars, trimCharsEnd, trimCharsStart } = require('lodash/fp'); const slugify = require('@sindresorhus/slugify'); diff --git a/packages/core/utils/lib/validators.js b/packages/core/utils/lib/validators.js index 59d7a4381e..dcce78cfc9 100644 --- a/packages/core/utils/lib/validators.js +++ b/packages/core/utils/lib/validators.js @@ -87,11 +87,12 @@ const validateYupSchemaSync = (schema, options = {}) => (body, errorMessage) => yup.setLocale({ mixed: { notType({ path, type, value, originalValue }) { - let isCast = originalValue != null && originalValue !== value; - let msg = + const isCast = originalValue != null && originalValue !== value; + const msg = `${path} must be a \`${type}\` type, ` + - `but the final value was: \`${printValue(value, true)}\`` + - (isCast ? ` (cast from the value \`${printValue(originalValue, true)}\`).` : '.'); + `but the final value was: \`${printValue(value, true)}\`${ + isCast ? ` (cast from the value \`${printValue(originalValue, true)}\`).` : '.' + }`; /* Remove comment that is not supposed to be seen by the enduser if (value === null) { diff --git a/packages/generators/admin/plopfile.js b/packages/generators/admin/plopfile.js index 54b0f15d27..629668e34e 100644 --- a/packages/generators/admin/plopfile.js +++ b/packages/generators/admin/plopfile.js @@ -46,10 +46,9 @@ module.exports = function( if (arguments.length === 2) { const condition = arguments[0]; return leftShift(condition ? fn(this) : inverse(this)); - } else { - const [a, operator, b] = Array.from(arguments).slice(0, end); - return leftShift(evaluateExpression(a, operator, b) ? fn(this) : inverse(this)); } + const [a, operator, b] = Array.from(arguments).slice(0, end); + return leftShift(evaluateExpression(a, operator, b) ? fn(this) : inverse(this)); }); plop.setHelper('unless', function(/* ...args, options */) { const end = arguments.length - 1; @@ -57,10 +56,9 @@ module.exports = function( if (arguments.length === 2) { const condition = arguments[0]; return leftShift(!condition ? fn(this) : inverse(this)); - } else { - const [a, operator, b] = Array.from(arguments).slice(0, end); - return leftShift(!evaluateExpression(a, operator, b) ? fn(this) : inverse(this)); } + const [a, operator, b] = Array.from(arguments).slice(0, end); + return leftShift(!evaluateExpression(a, operator, b) ? fn(this) : inverse(this)); }); plop.setHelper('else', function(_, { fn }) { return leftShift(fn(this)); diff --git a/packages/generators/app/lib/create-cli-db-project.js b/packages/generators/app/lib/create-cli-db-project.js index 5c5f6eb926..36caf473a1 100644 --- a/packages/generators/app/lib/create-cli-db-project.js +++ b/packages/generators/app/lib/create-cli-db-project.js @@ -12,7 +12,7 @@ module.exports = async scope => { console.log('Creating a project from the database CLI arguments.'); await trackUsage({ event: 'didChooseCustomDatabase', scope }); - const client = scope.database.client; + const { client } = scope.database; const configuration = { client: getClientName({ client }), connection: merge({}, defaultConfigs[client] || {}, scope.database), diff --git a/packages/generators/app/lib/create-customized-project.js b/packages/generators/app/lib/create-customized-project.js index 19fca39f8c..e68dc08e41 100644 --- a/packages/generators/app/lib/create-customized-project.js +++ b/packages/generators/app/lib/create-customized-project.js @@ -1,4 +1,5 @@ /* eslint-disable no-unreachable */ + 'use strict'; const { join } = require('path'); @@ -151,8 +152,8 @@ async function askDatabaseInfos(scope) { } async function installDatabaseTestingDep({ scope, configuration }) { - let packageManager = scope.useYarn ? 'yarnpkg' : 'npm'; - let cmd = scope.useYarn + const packageManager = scope.useYarn ? 'yarnpkg' : 'npm'; + const cmd = scope.useYarn ? ['--cwd', scope.tmpPath, 'add'] : ['install', '--prefix', scope.tmpPath]; diff --git a/packages/generators/app/lib/index.js b/packages/generators/app/lib/index.js index 3fb6e42d42..99bd327d4b 100644 --- a/packages/generators/app/lib/index.js +++ b/packages/generators/app/lib/index.js @@ -32,7 +32,7 @@ const generateNewApp = (projectDirectory, cliArguments) => { rootPath, name: basename(rootPath), // disable quickstart run app after creation - runQuickstartApp: cliArguments.run === false ? false : true, + runQuickstartApp: cliArguments.run !== false, // use pacakge version as strapiVersion (all packages have the same version); strapiVersion: require('../package.json').version, debug: cliArguments.debug !== undefined, diff --git a/packages/generators/app/lib/resources/json/common/package.json.js b/packages/generators/app/lib/resources/json/common/package.json.js index 7760415ddb..e26fb4c864 100644 --- a/packages/generators/app/lib/resources/json/common/package.json.js +++ b/packages/generators/app/lib/resources/json/common/package.json.js @@ -28,14 +28,13 @@ module.exports = opts => { strapi: 'strapi', }, devDependencies: {}, - dependencies: Object.assign( - {}, - strapiDependencies.reduce((acc, key) => { + dependencies: { + ...strapiDependencies.reduce((acc, key) => { acc[key] = strapiVersion; return acc; }, {}), - additionalsDependencies - ), + ...additionalsDependencies, + }, author: { name: 'A Strapi developer', }, diff --git a/packages/generators/app/lib/utils/check-requirements.js b/packages/generators/app/lib/utils/check-requirements.js index 09e6a91ef8..8aee891e8f 100644 --- a/packages/generators/app/lib/utils/check-requirements.js +++ b/packages/generators/app/lib/utils/check-requirements.js @@ -1,9 +1,9 @@ 'use strict'; module.exports = function checkBeforeInstall() { - var currentNodeVersion = process.versions.node; - var semver = currentNodeVersion.split('.'); - var major = semver[0]; + const currentNodeVersion = process.versions.node; + const semver = currentNodeVersion.split('.'); + const major = semver[0]; if (major < 12) { console.error(`You are running Node ${currentNodeVersion}`); diff --git a/packages/generators/app/lib/utils/usage.js b/packages/generators/app/lib/utils/usage.js index 196c1c6b82..34745d4a3c 100644 --- a/packages/generators/app/lib/utils/usage.js +++ b/packages/generators/app/lib/utils/usage.js @@ -21,7 +21,7 @@ async function captureException(error) { sentry.captureException(error); await sentry.flush(); } catch (err) { - /** ignore errors*/ + /** ignore errors */ return Promise.resolve(); } } @@ -31,7 +31,7 @@ async function captureError(message) { sentry.captureMessage(message, 'error'); await sentry.flush(); } catch (err) { - /** ignore errors*/ + /** ignore errors */ return Promise.resolve(); } } @@ -69,7 +69,7 @@ function trackEvent(event, body) { headers: { 'Content-Type': 'application/json' }, }).catch(() => {}); } catch (err) { - /** ignore errors*/ + /** ignore errors */ return Promise.resolve(); } } @@ -78,7 +78,7 @@ function trackError({ scope, error }) { const { uuid } = scope; const properties = { - error: typeof error == 'string' ? error : error && error.message, + error: typeof error === 'string' ? error : error && error.message, os: os.type(), platform: os.platform(), release: os.release(), @@ -97,7 +97,7 @@ function trackError({ scope, error }) { properties: addPackageJsonStrapiMetadata(properties, scope), }); } catch (err) { - /** ignore errors*/ + /** ignore errors */ return Promise.resolve(); } } @@ -106,7 +106,7 @@ function trackUsage({ event, scope, error }) { const { uuid } = scope; const properties = { - error: typeof error == 'string' ? error : error && error.message, + error: typeof error === 'string' ? error : error && error.message, os: os.type(), os_platform: os.platform(), os_release: os.release(), @@ -126,7 +126,7 @@ function trackUsage({ event, scope, error }) { properties: addPackageJsonStrapiMetadata(properties, scope), }); } catch (err) { - /** ignore errors*/ + /** ignore errors */ return Promise.resolve(); } } diff --git a/packages/generators/generators/lib/plops/prompts/get-destination-prompts.js b/packages/generators/generators/lib/plops/prompts/get-destination-prompts.js index 77d9c12b99..5f3fdb0a53 100644 --- a/packages/generators/generators/lib/plops/prompts/get-destination-prompts.js +++ b/packages/generators/generators/lib/plops/prompts/get-destination-prompts.js @@ -1,4 +1,5 @@ 'use strict'; + const { join } = require('path'); const fs = require('fs-extra'); diff --git a/packages/plugins/documentation/__tests__/build-component-schema.test.js b/packages/plugins/documentation/__tests__/build-component-schema.test.js index e0f23dd2a6..ebbd1d6ac2 100644 --- a/packages/plugins/documentation/__tests__/build-component-schema.test.js +++ b/packages/plugins/documentation/__tests__/build-component-schema.test.js @@ -79,8 +79,8 @@ describe('Build Component Schema', () => { } const schemaNames = Object.keys(schemas); - const pluginListResponseValue = schemas['UsersPermissionsRoleListResponse']; - const apiListResponseValue = schemas['RestaurantListResponse']; + const pluginListResponseValue = schemas.UsersPermissionsRoleListResponse; + const apiListResponseValue = schemas.RestaurantListResponse; const expectedShape = { type: 'object', @@ -144,8 +144,8 @@ describe('Build Component Schema', () => { } const schemaNames = Object.keys(schemas); - const pluginListResponseValue = schemas['UsersPermissionsRoleRequest']; - const apiListResponseValue = schemas['RestaurantRequest']; + const pluginListResponseValue = schemas.UsersPermissionsRoleRequest; + const apiListResponseValue = schemas.RestaurantRequest; const expectedShape = { type: 'object', @@ -192,8 +192,8 @@ describe('Build Component Schema', () => { } const schemaNames = Object.keys(schemas); - const pluginListResponseValue = schemas['UsersPermissionsRoleLocalizationResponse']; - const apiListResponseValue = schemas['RestaurantLocalizationResponse']; + const pluginListResponseValue = schemas.UsersPermissionsRoleLocalizationResponse; + const apiListResponseValue = schemas.RestaurantLocalizationResponse; const expectedShape = { type: 'object', @@ -236,8 +236,8 @@ describe('Build Component Schema', () => { } const schemaNames = Object.keys(schemas); - const pluginListResponseValue = schemas['UsersPermissionsRoleLocalizationRequest']; - const apiListResponseValue = schemas['RestaurantLocalizationRequest']; + const pluginListResponseValue = schemas.UsersPermissionsRoleLocalizationRequest; + const apiListResponseValue = schemas.RestaurantLocalizationRequest; const expectedShape = { type: 'object', diff --git a/packages/plugins/documentation/server/bootstrap.js b/packages/plugins/documentation/server/bootstrap.js index d0dac9cd26..c2601c7a14 100755 --- a/packages/plugins/documentation/server/bootstrap.js +++ b/packages/plugins/documentation/server/bootstrap.js @@ -1,4 +1,5 @@ /* eslint-disable no-unreachable */ + 'use strict'; // Add permissions diff --git a/packages/plugins/documentation/server/routes/index.js b/packages/plugins/documentation/server/routes/index.js index 6e8821e18f..9a2ef067de 100644 --- a/packages/plugins/documentation/server/routes/index.js +++ b/packages/plugins/documentation/server/routes/index.js @@ -1,4 +1,5 @@ 'use strict'; + const restrictAccess = require('../middlewares/restrict-access'); module.exports = [ diff --git a/packages/plugins/documentation/server/services/helpers/build-api-endpoint-path.js b/packages/plugins/documentation/server/services/helpers/build-api-endpoint-path.js index 156ae8bf7d..c4409a0eeb 100644 --- a/packages/plugins/documentation/server/services/helpers/build-api-endpoint-path.js +++ b/packages/plugins/documentation/server/services/helpers/build-api-endpoint-path.js @@ -20,7 +20,7 @@ const parsePathWithVariables = routePath => { .parse(routePath) .map(token => { if (_.isObject(token)) { - return token.prefix + '{' + token.name + '}'; + return `${token.prefix}{${token.name}}`; } return token; diff --git a/packages/plugins/documentation/server/services/helpers/build-component-schema.js b/packages/plugins/documentation/server/services/helpers/build-component-schema.js index e245bddeb7..d3ed845894 100644 --- a/packages/plugins/documentation/server/services/helpers/build-component-schema.js +++ b/packages/plugins/documentation/server/services/helpers/build-component-schema.js @@ -1,4 +1,5 @@ 'use strict'; + const _ = require('lodash'); const cleanSchemaAttributes = require('./utils/clean-schema-attributes'); diff --git a/packages/plugins/documentation/server/services/helpers/utils/loop-content-type-names.js b/packages/plugins/documentation/server/services/helpers/utils/loop-content-type-names.js index 67d37b46d3..aa2f700087 100644 --- a/packages/plugins/documentation/server/services/helpers/utils/loop-content-type-names.js +++ b/packages/plugins/documentation/server/services/helpers/utils/loop-content-type-names.js @@ -1,4 +1,5 @@ 'use strict'; + const _ = require('lodash'); /** diff --git a/packages/plugins/graphql/server/services/builders/entity-meta.js b/packages/plugins/graphql/server/services/builders/entity-meta.js index 4d7c3aff49..8a525ca130 100644 --- a/packages/plugins/graphql/server/services/builders/entity-meta.js +++ b/packages/plugins/graphql/server/services/builders/entity-meta.js @@ -1,6 +1,6 @@ 'use strict'; -function buildEntityMetaDefinition(/*contentType*/) {} +function buildEntityMetaDefinition(/* contentType */) {} module.exports = () => ({ buildEntityMetaDefinition, diff --git a/packages/plugins/graphql/server/services/builders/resolvers/association.js b/packages/plugins/graphql/server/services/builders/resolvers/association.js index cb9006b674..3d99692418 100644 --- a/packages/plugins/graphql/server/services/builders/resolvers/association.js +++ b/packages/plugins/graphql/server/services/builders/resolvers/association.js @@ -72,7 +72,7 @@ module.exports = ({ strapi }) => { // If this is a to-many relation, it returns an object that // matches what the entity-response-collection's resolvers expect - else if (isToMany) { + if (isToMany) { return toEntityResponseCollection(data, info); } diff --git a/packages/plugins/graphql/server/services/builders/type.js b/packages/plugins/graphql/server/services/builders/type.js index 24202aeade..55cb3dde25 100644 --- a/packages/plugins/graphql/server/services/builders/type.js +++ b/packages/plugins/graphql/server/services/builders/type.js @@ -130,7 +130,7 @@ module.exports = context => { const { buildAssociationResolver } = getGraphQLService('builders').get('content-api'); const extension = getGraphQLService('extension'); - let { builder } = options; + const { builder } = options; const { attributeName, attribute, contentType } = options; const fileUID = 'plugin::upload.file'; @@ -207,7 +207,7 @@ module.exports = context => { const { buildAssociationResolver } = getGraphQLService('builders').get('content-api'); const extension = getGraphQLService('extension'); - let { builder } = options; + const { builder } = options; const { attributeName, attribute, contentType } = options; if (extension.shadowCRUD(attribute.target).isDisabled()) { diff --git a/packages/plugins/graphql/server/services/builders/utils.js b/packages/plugins/graphql/server/services/builders/utils.js index cb6c15f30a..214d1eb77c 100644 --- a/packages/plugins/graphql/server/services/builders/utils.js +++ b/packages/plugins/graphql/server/services/builders/utils.js @@ -35,7 +35,7 @@ module.exports = ({ strapi }) => { } // Collection Types - else if (kind === 'collectionType') { + if (kind === 'collectionType') { if (!multiple) { return { id: 'ID' }; } @@ -54,7 +54,7 @@ module.exports = ({ strapi }) => { } // Single Types - else if (kind === 'singleType') { + if (kind === 'singleType') { const params = {}; if (hasDraftAndPublish(contentType)) { diff --git a/packages/plugins/graphql/server/services/internals/scalars/time.js b/packages/plugins/graphql/server/services/internals/scalars/time.js index 06134f2fd9..201d9b2fa2 100644 --- a/packages/plugins/graphql/server/services/internals/scalars/time.js +++ b/packages/plugins/graphql/server/services/internals/scalars/time.js @@ -27,7 +27,7 @@ const TimeScalar = new GraphQLScalarType({ throw new ValidationError('Time cannot represent non string type'); } - const value = ast.value; + const { value } = ast; return parseType({ type: 'time', value }); }, diff --git a/packages/plugins/graphql/tests/crud.test.e2e.js b/packages/plugins/graphql/tests/crud.test.e2e.js index e8873debdb..57dffdc559 100644 --- a/packages/plugins/graphql/tests/crud.test.e2e.js +++ b/packages/plugins/graphql/tests/crud.test.e2e.js @@ -61,7 +61,7 @@ describe('Test Graphql API End to End', () => { { name: 'post 1', bigint: 1316130638171, nullable: 'value', category: 'BLOG' }, { name: 'post 2', bigint: 1416130639261, nullable: null, category: 'PRODUCT' }, ]; - let data = { + const data = { posts: [], }; @@ -487,7 +487,7 @@ describe('Test Graphql API End to End', () => { }); test('Delete Posts', async () => { - for (let post of data.posts) { + for (const post of data.posts) { const res = await graphqlQuery({ query: /* GraphQL */ ` mutation deletePost($id: ID!) { diff --git a/packages/plugins/graphql/tests/relations.test.e2e.js b/packages/plugins/graphql/tests/relations.test.e2e.js index 51047fc89a..08ed8f30b5 100644 --- a/packages/plugins/graphql/tests/relations.test.e2e.js +++ b/packages/plugins/graphql/tests/relations.test.e2e.js @@ -134,7 +134,7 @@ describe('Test Graphql Relations API End to End', () => { }); describe('Test relations features', () => { - let data = { + const data = { labels: [], documents: [], people: [], @@ -488,7 +488,7 @@ describe('Test Graphql Relations API End to End', () => { }); test('Delete Labels and test Documents relations', async () => { - for (let label of data.labels) { + for (const label of data.labels) { const res = await graphqlQuery({ query: /* GraphQL */ ` mutation deleteLabel($id: ID!) { @@ -579,7 +579,7 @@ describe('Test Graphql Relations API End to End', () => { }); test('Delete Documents', async () => { - for (let document of data.documents) { + for (const document of data.documents) { const res = await graphqlQuery({ query: /* GraphQL */ ` mutation deleteDocument($id: ID!) { diff --git a/packages/plugins/i18n/server/constants/__tests__/index.test.js b/packages/plugins/i18n/server/constants/__tests__/index.test.js index 8112154766..e0618330c6 100644 --- a/packages/plugins/i18n/server/constants/__tests__/index.test.js +++ b/packages/plugins/i18n/server/constants/__tests__/index.test.js @@ -1,6 +1,6 @@ 'use strict'; -const { getInitLocale } = require('../'); +const { getInitLocale } = require('..'); describe('I18N default locale', () => { describe('getInitLocale', () => { diff --git a/packages/plugins/i18n/server/controllers/content-types.js b/packages/plugins/i18n/server/controllers/content-types.js index e1bbd7e4c0..d6db512ab1 100644 --- a/packages/plugins/i18n/server/controllers/content-types.js +++ b/packages/plugins/i18n/server/controllers/content-types.js @@ -34,7 +34,7 @@ module.exports = { throw new ApplicationError('model.not.localized'); } - let params = modelDef.kind === 'singleType' ? {} : { id }; + const params = modelDef.kind === 'singleType' ? {} : { id }; const entity = await strapi .query(model) diff --git a/packages/plugins/i18n/server/controllers/locales.js b/packages/plugins/i18n/server/controllers/locales.js index 1e48113cbe..9f7ec74a79 100644 --- a/packages/plugins/i18n/server/controllers/locales.js +++ b/packages/plugins/i18n/server/controllers/locales.js @@ -57,7 +57,7 @@ module.exports = { const { user } = ctx.state; const { id } = ctx.params; const { body } = ctx.request; - let { isDefault, ...updates } = body; + const { isDefault, ...updates } = body; await validateUpdateLocaleInput(body); diff --git a/packages/plugins/i18n/server/graphql.js b/packages/plugins/i18n/server/graphql.js index e6105196f0..b2bffd337e 100644 --- a/packages/plugins/i18n/server/graphql.js +++ b/packages/plugins/i18n/server/graphql.js @@ -209,7 +209,7 @@ module.exports = ({ strapi }) => ({ return; } - const contentType = registryType.config.contentType; + const { contentType } = registryType.config; // Ignore non-localized content types if (!isLocalizedContentType(contentType)) { diff --git a/packages/plugins/i18n/server/migrations/field/migrate-for-bookshelf.js b/packages/plugins/i18n/server/migrations/field/migrate-for-bookshelf.js index 3f9852ef10..17c9f76c80 100644 --- a/packages/plugins/i18n/server/migrations/field/migrate-for-bookshelf.js +++ b/packages/plugins/i18n/server/migrations/field/migrate-for-bookshelf.js @@ -16,7 +16,7 @@ const batchInsertInTmpTable = async ({ updatesInfo }, { transacting: trx }) => { }; const updateFromTmpTable = async ({ model, attributesToMigrate }, { transacting: trx }) => { - const collectionName = model.collectionName; + const { collectionName } = model; if (model.client === 'pg') { const substitutes = attributesToMigrate.map(() => '?? = ??.??').join(','); const bindings = [collectionName]; diff --git a/packages/plugins/i18n/server/services/__tests__/core-api.test.js b/packages/plugins/i18n/server/services/__tests__/core-api.test.js index 31bcff9c92..2ede2f120a 100644 --- a/packages/plugins/i18n/server/services/__tests__/core-api.test.js +++ b/packages/plugins/i18n/server/services/__tests__/core-api.test.js @@ -1,4 +1,5 @@ 'use strict'; + const { createSanitizer } = require('../core-api')(); describe('Core API', () => { diff --git a/packages/plugins/i18n/server/services/__tests__/entity-service-decorator.test.js b/packages/plugins/i18n/server/services/__tests__/entity-service-decorator.test.js index fc809381a6..ec2379b4b2 100644 --- a/packages/plugins/i18n/server/services/__tests__/entity-service-decorator.test.js +++ b/packages/plugins/i18n/server/services/__tests__/entity-service-decorator.test.js @@ -134,7 +134,7 @@ describe('Entity service decorator', () => { }; const service = decorator(defaultService); - const input = Object.assign({ populate: ['test'], ...params }); + const input = { populate: ['test'], ...params }; const output = await service.wrapParams(input, { uid: 'test-model', action }); expect(output).toEqual({ populate: ['test'], ...params }); diff --git a/packages/plugins/i18n/server/services/__tests__/metrics.test.js b/packages/plugins/i18n/server/services/__tests__/metrics.test.js index c6f7af2951..341e921ee7 100644 --- a/packages/plugins/i18n/server/services/__tests__/metrics.test.js +++ b/packages/plugins/i18n/server/services/__tests__/metrics.test.js @@ -28,7 +28,7 @@ describe('Metrics', () => { plugins: { i18n: { services: { - ['content-types']: { + 'content-types': { isLocalizedContentType, }, }, diff --git a/packages/plugins/i18n/server/services/content-types.js b/packages/plugins/i18n/server/services/content-types.js index 6c17568d00..1e6a34080c 100644 --- a/packages/plugins/i18n/server/services/content-types.js +++ b/packages/plugins/i18n/server/services/content-types.js @@ -203,7 +203,7 @@ const getNestedPopulateOfNonLocalizedAttributes = modelUID => { const currentAttributesToPopulate = difference(nonLocalizedAttributes, scalarAttributes); const attributesToPopulate = [...currentAttributesToPopulate]; - for (let attrName of currentAttributesToPopulate) { + for (const attrName of currentAttributesToPopulate) { const attr = schema.attributes[attrName]; if (attr.type === 'component') { const nestedPopulate = getNestedPopulateOfNonLocalizedAttributes(attr.component).map( diff --git a/packages/plugins/i18n/server/services/locales.js b/packages/plugins/i18n/server/services/locales.js index 4841573ff4..67fa854685 100644 --- a/packages/plugins/i18n/server/services/locales.js +++ b/packages/plugins/i18n/server/services/locales.js @@ -58,10 +58,9 @@ const setIsDefault = async locales => { if (Array.isArray(locales)) { return locales.map(locale => ({ ...locale, isDefault: actualDefault === locale.code })); - } else { - // single locale - return { ...locales, isDefault: actualDefault === locales.code }; } + // single locale + return { ...locales, isDefault: actualDefault === locales.code }; }; const initDefaultLocale = async () => { diff --git a/packages/plugins/i18n/tests/content-manager/list-relation.test.e2e.js b/packages/plugins/i18n/tests/content-manager/list-relation.test.e2e.js index 601c58d231..e64abcc963 100644 --- a/packages/plugins/i18n/tests/content-manager/list-relation.test.e2e.js +++ b/packages/plugins/i18n/tests/content-manager/list-relation.test.e2e.js @@ -8,7 +8,7 @@ const { createAuthRequest } = require('../../../../../test/helpers/request'); let strapi; let rq; -let data = { +const data = { products: [], shops: [], }; diff --git a/packages/plugins/i18n/tests/locales.test.e2e.js b/packages/plugins/i18n/tests/locales.test.e2e.js index 4afed3fb40..b7a4823f09 100644 --- a/packages/plugins/i18n/tests/locales.test.e2e.js +++ b/packages/plugins/i18n/tests/locales.test.e2e.js @@ -56,7 +56,7 @@ describe('CRUD locales', () => { describe('Default locale', () => { test('Default locale is already created', async () => { - let res = await rq({ + const res = await rq({ url: '/i18n/locales', method: 'GET', }); @@ -76,7 +76,7 @@ describe('CRUD locales', () => { isDefault: false, }; - let res = await rq({ + const res = await rq({ url: '/i18n/locales', method: 'POST', body: locale, @@ -95,7 +95,7 @@ describe('CRUD locales', () => { name: 'Italian', }; - let res = await rq({ + const res = await rq({ url: '/i18n/locales', method: 'POST', body: locale, @@ -133,7 +133,7 @@ describe('CRUD locales', () => { isDefault: false, }; - let res = await rq({ + const res = await rq({ url: '/i18n/locales', method: 'POST', body: locale, @@ -158,7 +158,7 @@ describe('CRUD locales', () => { isDefault: false, }; - let res = await rq({ + const res = await rq({ url: '/i18n/locales', method: 'POST', body: locale, @@ -209,7 +209,7 @@ describe('CRUD locales', () => { describe('Read', () => { test('Can list the locales', async () => { - let res = await rq({ + const res = await rq({ url: '/i18n/locales', method: 'GET', }); @@ -229,7 +229,7 @@ describe('CRUD locales', () => { isDefault: false, }; - let res = await rq({ + const res = await rq({ url: `/i18n/locales/${data.locales[1].id}`, method: 'PUT', body: localeUpdate, @@ -248,7 +248,7 @@ describe('CRUD locales', () => { code: 'ak', }; - let res = await rq({ + const res = await rq({ url: `/i18n/locales/${data.locales[0].id}`, method: 'PUT', body: localeUpdate, @@ -280,7 +280,7 @@ describe('CRUD locales', () => { code: 'ak', }; - let res = await rq({ + const res = await rq({ url: `/i18n/locales/${data.locales[0].id}`, method: 'PUT', body: localeUpdate, @@ -450,7 +450,7 @@ describe('CRUD locales', () => { }); test('Cannot delete not found locale', async () => { - let res = await rq({ + const res = await rq({ url: `/i18n/locales/${data.deletedLocales[0].id}`, method: 'DELETE', }); diff --git a/packages/plugins/sentry/server/services/sentry/index.js b/packages/plugins/sentry/server/services/sentry/index.js index 8755ae8ddd..617b08715c 100644 --- a/packages/plugins/sentry/server/services/sentry/index.js +++ b/packages/plugins/sentry/server/services/sentry/index.js @@ -1,4 +1,5 @@ 'use strict'; + // FIXME /* eslint-disable import/extensions */ const Sentry = require('@sentry/node'); diff --git a/packages/plugins/users-permissions/server/controllers/auth.js b/packages/plugins/users-permissions/server/controllers/auth.js index 19c0c4863a..3ac4c56075 100644 --- a/packages/plugins/users-permissions/server/controllers/auth.js +++ b/packages/plugins/users-permissions/server/controllers/auth.js @@ -326,7 +326,7 @@ module.exports = { } } - let newUser = { + const newUser = { ...params, role: role.id, email: email.toLowerCase(), diff --git a/packages/plugins/users-permissions/server/controllers/settings.js b/packages/plugins/users-permissions/server/controllers/settings.js index f4475bc19c..0fed222d5b 100644 --- a/packages/plugins/users-permissions/server/controllers/settings.js +++ b/packages/plugins/users-permissions/server/controllers/settings.js @@ -17,7 +17,7 @@ module.exports = { const emailTemplates = ctx.request.body['email-templates']; - for (let key in emailTemplates) { + for (const key in emailTemplates) { const template = emailTemplates[key].options.message; if (!isValidEmailTemplate(template)) { diff --git a/packages/plugins/users-permissions/server/controllers/user.js b/packages/plugins/users-permissions/server/controllers/user.js index 94b7d42421..0f685738eb 100644 --- a/packages/plugins/users-permissions/server/controllers/user.js +++ b/packages/plugins/users-permissions/server/controllers/user.js @@ -121,7 +121,7 @@ module.exports = { ctx.request.body.email = ctx.request.body.email.toLowerCase(); } - let updateData = { + const updateData = { ...ctx.request.body, }; diff --git a/packages/plugins/users-permissions/server/controllers/validation/email-template.js b/packages/plugins/users-permissions/server/controllers/validation/email-template.js index 8f3581d7b1..0a2bd1672f 100644 --- a/packages/plugins/users-permissions/server/controllers/validation/email-template.js +++ b/packages/plugins/users-permissions/server/controllers/validation/email-template.js @@ -28,7 +28,7 @@ const matchAll = (pattern, src) => { }; const isValidEmailTemplate = template => { - for (let reg of invalidPatternsRegexes) { + for (const reg of invalidPatternsRegexes) { if (reg.test(template)) { return false; } diff --git a/packages/plugins/users-permissions/server/middlewares/rateLimit.js b/packages/plugins/users-permissions/server/middlewares/rateLimit.js index c35f3b6c9e..09716806e3 100644 --- a/packages/plugins/users-permissions/server/middlewares/rateLimit.js +++ b/packages/plugins/users-permissions/server/middlewares/rateLimit.js @@ -14,17 +14,12 @@ module.exports = (config, { strapi }) => async (ctx, next) => { }, ]; - return ratelimit.middleware( - Object.assign( - {}, - { - interval: 1 * 60 * 1000, - max: 5, - prefixKey: `${ctx.request.path}:${ctx.request.ip}`, - message, - }, - strapi.config.get('plugin.users-permissions.ratelimit'), - config - ) - )(ctx, next); + return ratelimit.middleware({ + interval: 1 * 60 * 1000, + max: 5, + prefixKey: `${ctx.request.path}:${ctx.request.ip}`, + message, + ...strapi.config.get('plugin.users-permissions.ratelimit'), + ...config, + })(ctx, next); }; diff --git a/packages/plugins/users-permissions/server/register.js b/packages/plugins/users-permissions/server/register.js index 21d7151a46..35c7f3d8ee 100644 --- a/packages/plugins/users-permissions/server/register.js +++ b/packages/plugins/users-permissions/server/register.js @@ -1,4 +1,5 @@ 'use strict'; + const fs = require('fs'); const path = require('path'); diff --git a/packages/plugins/users-permissions/server/services/providers-registry.js b/packages/plugins/users-permissions/server/services/providers-registry.js index bdd07d939a..7bd8ac9548 100644 --- a/packages/plugins/users-permissions/server/services/providers-registry.js +++ b/packages/plugins/users-permissions/server/services/providers-registry.js @@ -12,7 +12,7 @@ const getInitialProviders = ({ purest }) => ({ .request() .then(({ body }) => { // Combine username and discriminator because discord username is not unique - var username = `${body.username}#${body.discriminator}`; + const username = `${body.username}#${body.discriminator}`; return { username, email: body.email, @@ -264,7 +264,7 @@ const getInitialProviders = ({ purest }) => ({ : body.strapiemail || body.email; if (!username || !email) { strapi.log.warn( - 'CAS Response Body did not contain required attributes: ' + JSON.stringify(body) + `CAS Response Body did not contain required attributes: ${JSON.stringify(body)}` ); } return { diff --git a/packages/plugins/users-permissions/server/services/user.js b/packages/plugins/users-permissions/server/services/user.js index d9e96b10ce..3a99a745a3 100644 --- a/packages/plugins/users-permissions/server/services/user.js +++ b/packages/plugins/users-permissions/server/services/user.js @@ -99,7 +99,7 @@ module.exports = ({ strapi }) => ({ const settings = await pluginStore .get({ key: 'email' }) - .then(storeEmail => storeEmail['email_confirmation'].options); + .then(storeEmail => storeEmail.email_confirmation.options); // Sanitize the template's user information const sanitizedUserInfo = await sanitize.sanitizers.defaultSanitizeOutput(userSchema, user); diff --git a/packages/plugins/users-permissions/server/strategies/users-permissions.js b/packages/plugins/users-permissions/server/strategies/users-permissions.js index 88b556fce9..48d6bf4562 100644 --- a/packages/plugins/users-permissions/server/strategies/users-permissions.js +++ b/packages/plugins/users-permissions/server/strategies/users-permissions.js @@ -77,7 +77,7 @@ const verify = async (auth, config) => { } } - let allowedActions = auth.allowedActions; + let { allowedActions } = auth; if (!allowedActions) { const permissions = await strapi.query('plugin::users-permissions.permission').findMany({ diff --git a/packages/plugins/users-permissions/tests/admin/roles-api.test.e2e.js b/packages/plugins/users-permissions/tests/admin/roles-api.test.e2e.js index 68f4c10a87..85cebc1c2b 100644 --- a/packages/plugins/users-permissions/tests/admin/roles-api.test.e2e.js +++ b/packages/plugins/users-permissions/tests/admin/roles-api.test.e2e.js @@ -7,17 +7,17 @@ const { createAuthRequest } = require('../../../../../test/helpers/request'); let strapi; let rq; -let data = {}; -let internals = { +const data = {}; +const internals = { role: { name: 'Test Role', description: 'Some random test role', }, }; -/***************************** +/** *************************** * TESTS - *****************************/ + **************************** */ describe('Roles API', () => { beforeAll(async () => { strapi = await createStrapiInstance(); diff --git a/packages/providers/email-amazon-ses/lib/index.js b/packages/providers/email-amazon-ses/lib/index.js index bd12fd4ddb..13244ee114 100644 --- a/packages/providers/email-amazon-ses/lib/index.js +++ b/packages/providers/email-amazon-ses/lib/index.js @@ -5,14 +5,14 @@ const { removeUndefined } = require('@strapi/utils'); module.exports = { init(providerOptions = {}, settings = {}) { - var client = nodeSES.createClient({ ...providerOptions }); + const client = nodeSES.createClient({ ...providerOptions }); return { send(options) { return new Promise((resolve, reject) => { const { from, to, cc, bcc, replyTo, subject, text, html, ...rest } = options; - let msg = { + const msg = { from: from || settings.defaultFrom, to, cc, diff --git a/packages/providers/email-mailgun/lib/index.js b/packages/providers/email-mailgun/lib/index.js index cebe153b69..57ffd34b02 100644 --- a/packages/providers/email-mailgun/lib/index.js +++ b/packages/providers/email-mailgun/lib/index.js @@ -35,7 +35,7 @@ module.exports = { send(options) { const { from, to, cc, bcc, replyTo, subject, text, html, ...rest } = options; - let data = { + const data = { from: from || settings.defaultFrom, to, cc, diff --git a/packages/providers/email-sendgrid/lib/index.js b/packages/providers/email-sendgrid/lib/index.js index 5ad3b9572a..9aa7088bb2 100644 --- a/packages/providers/email-sendgrid/lib/index.js +++ b/packages/providers/email-sendgrid/lib/index.js @@ -12,7 +12,7 @@ module.exports = { return new Promise((resolve, reject) => { const { from, to, cc, bcc, replyTo, subject, text, html, ...rest } = options; - let msg = { + const msg = { from: from || settings.defaultFrom, to, cc, diff --git a/packages/providers/email-sendmail/lib/index.js b/packages/providers/email-sendmail/lib/index.js index 3b7499ec68..d2a8b13dec 100644 --- a/packages/providers/email-sendmail/lib/index.js +++ b/packages/providers/email-sendmail/lib/index.js @@ -14,7 +14,7 @@ module.exports = { return new Promise((resolve, reject) => { const { from, to, cc, bcc, replyTo, subject, text, html, ...rest } = options; - let msg = { + const msg = { from: from || settings.defaultFrom, to, cc, diff --git a/packages/utils/logger/lib/formats/log-errors.js b/packages/utils/logger/lib/formats/log-errors.js index 60c1b6b527..73a1bb5fec 100644 --- a/packages/utils/logger/lib/formats/log-errors.js +++ b/packages/utils/logger/lib/formats/log-errors.js @@ -4,9 +4,7 @@ const { format } = require('winston'); module.exports = format(info => { if (info instanceof Error) { - return Object.assign({}, info, { - message: `${info.message}${info.stack ? `\n` + info.stack : ''}`, - }); + return { ...info, message: `${info.message}${info.stack ? `\n${info.stack}` : ''}` }; } return info; diff --git a/packages/utils/typescript/lib/generators/schemas/utils.js b/packages/utils/typescript/lib/generators/schemas/utils.js index b6942551da..41bcbbb731 100644 --- a/packages/utils/typescript/lib/generators/schemas/utils.js +++ b/packages/utils/typescript/lib/generators/schemas/utils.js @@ -42,7 +42,7 @@ const getSchemaInterfaceName = pipe(replace(/(:.)/, ' '), camelCase, upperFirst) const getSchemaExtendsTypeName = schema => { const base = getSchemaModelType(schema); - return upperFirst(base) + 'Schema'; + return `${upperFirst(base)}Schema`; }; const getSchemaModelType = schema => { @@ -54,7 +54,7 @@ const getSchemaModelType = schema => { } // Content-Types - else if (modelType === 'contentType') { + if (modelType === 'contentType') { return kind; } diff --git a/packages/utils/typescript/lib/utils/resolve-outdir.js b/packages/utils/typescript/lib/utils/resolve-outdir.js index cdeba7fd70..b9e090b57d 100644 --- a/packages/utils/typescript/lib/utils/resolve-outdir.js +++ b/packages/utils/typescript/lib/utils/resolve-outdir.js @@ -1,4 +1,5 @@ 'use strict'; + const path = require('path'); const resolveConfigOptions = require('./resolve-config-options'); const isUsingTypescript = require('./is-using-typescript'); diff --git a/scripts/front/add-missing-keys-to-other-language.js b/scripts/front/add-missing-keys-to-other-language.js index 184f27f0ed..d573052ab0 100644 --- a/scripts/front/add-missing-keys-to-other-language.js +++ b/scripts/front/add-missing-keys-to-other-language.js @@ -4,6 +4,7 @@ // node scripts/front/add-missing-keys-to-other-language.js [language] // Example: // node scripts/front/add-missing-keys-to-other-language.js vi + 'use strict'; const { join, dirname } = require('path'); diff --git a/scripts/front/merge-duplicated-translations/index.js b/scripts/front/merge-duplicated-translations/index.js index b0dcf6697d..b9ceac4c73 100644 --- a/scripts/front/merge-duplicated-translations/index.js +++ b/scripts/front/merge-duplicated-translations/index.js @@ -1,4 +1,5 @@ /* eslint-disable node/no-extraneous-require */ + 'use strict'; const path = require('path'); @@ -122,7 +123,7 @@ const merge = async valuesToMerge => { let current = 1; let mergedCount = 0; - for (let valueGroup of valuesToMerge) { + for (const valueGroup of valuesToMerge) { // Display console.clear(); console.log(`${current}/${valuesToMerge.length}`); diff --git a/scripts/front/utils/translation-files.js b/scripts/front/utils/translation-files.js index 773be49a97..29ed909e09 100644 --- a/scripts/front/utils/translation-files.js +++ b/scripts/front/utils/translation-files.js @@ -18,7 +18,7 @@ const readTranslationFile = filePath => ({ }); const writeTranslationFile = file => { - fs.writeFileSync(file.filePath, JSON.stringify(file.fileContent, null, 2) + '\n'); + fs.writeFileSync(file.filePath, `${JSON.stringify(file.fileContent, null, 2)}\n`); }; const readAllTranslationFiles = () => { diff --git a/test/helpers/builder/index.js b/test/helpers/builder/index.js index b6fc43120e..7894389485 100644 --- a/test/helpers/builder/index.js +++ b/test/helpers/builder/index.js @@ -21,7 +21,7 @@ const createTestBuilder = (options = {}) => { }, async sanitizedFixtures(strapi) { - const fixtures = this.fixtures; + const { fixtures } = this; for (const key of Object.keys(fixtures)) { fixtures[key] = await this.sanitizedFixturesFor(key, strapi); diff --git a/test/helpers/strapi.js b/test/helpers/strapi.js index 5a0aea6b65..b53c8a4da5 100644 --- a/test/helpers/strapi.js +++ b/test/helpers/strapi.js @@ -36,9 +36,7 @@ const createStrapiInstance = async ({ authenticate() { return { authenticated: true }; }, - verify() { - return; - }, + verify() {}, }); } await instance.load(); From cf49ddbbfc33fa6a0145f9ddf50677e31c1d711e Mon Sep 17 00:00:00 2001 From: Alexandre Bodin Date: Mon, 8 Aug 2022 23:33:39 +0200 Subject: [PATCH 04/13] Prettier and backend fix --- .eslintrc.back.js | 33 +- .eslintrc.front.js | 99 +----- .../check-pr-status/__tests__/action.test.js | 2 +- .github/actions/check-pr-status/index.js | 8 +- .prettierrc.js | 1 + .../config/src/response-handlers.js | 2 +- .../address/middlewares/address-middleware.js | 2 +- .../src/api/address/services/address.js | 2 +- .../users-permissions/strapi-server.js | 2 +- .../src/plugins/myplugin/admin/src/index.js | 2 +- .../myplugin/admin/src/utils/getTrad.js | 2 +- .../plugins/myplugin/server/config/index.js | 2 +- examples/kitchensink/src/admin/app.example.js | 8 +- examples/kitchensink/src/admin/app.js | 8 +- package.json | 15 +- .../lib/fixtures/store/index.js | 1 - packages/admin-test-utils/lib/setup/strapi.js | 2 +- .../lib/setup/test-bundler.js | 1 - packages/admin-test-utils/package.json | 3 + .../create-strapi-app/create-strapi-app.js | 4 +- .../create-strapi-starter.js | 6 +- .../utils/build-starter.js | 15 +- packages/core/admin/admin/src/StrapiApp.js | 46 +-- .../src/components/AuthenticatedApp/index.js | 7 +- .../AuthenticatedApp/tests/index.test.js | 16 +- .../components/AuthenticatedApp/utils/api.js | 2 +- .../AutoReloadOverlayBlockerProvider/index.js | 4 +- .../ConfigurationsProvider/reducer.js | 2 +- .../GuidedTour/Homepage/components/Stepper.js | 2 +- .../Homepage/components/tests/Stepper.test.js | 2 +- .../components/GuidedTour/Homepage/index.js | 4 +- .../GuidedTour/Modal/components/Content.js | 12 +- .../GuidedTour/Modal/components/Modal.js | 2 +- .../src/components/GuidedTour/Modal/index.js | 6 +- .../components/GuidedTour/Modal/reducer.js | 2 +- .../admin/src/components/GuidedTour/index.js | 8 +- .../admin/src/components/GuidedTour/init.js | 4 +- .../src/components/GuidedTour/reducer.js | 2 +- .../GuidedTour/utils/isGuidedTourCompleted.js | 2 +- .../utils/persistStateToLocaleStorage.js | 8 +- .../src/components/LanguageProvider/index.js | 2 +- .../src/components/LanguageProvider/init.js | 2 +- .../admin/src/components/LeftMenu/index.js | 12 +- .../Notifications/Notification/index.js | 7 +- .../src/components/Notifications/index.js | 4 +- .../src/components/Notifications/reducer.js | 4 +- .../Notifications/tests/index.test.js | 4 +- .../components/PluginsInitializer/index.js | 6 +- .../src/components/PluginsInitializer/init.js | 2 +- .../components/PluginsInitializer/reducer.js | 2 +- .../PluginsInitializer/tests/index.test.js | 8 +- .../src/components/PrivateRoute/index.js | 2 +- .../src/components/RBACProvider/actions.js | 2 +- .../src/components/RBACProvider/index.js | 2 +- .../src/components/RBACProvider/reducer.js | 4 +- .../RBACProvider/tests/reducer.test.js | 2 +- .../components/ThemeToggleProvider/index.js | 2 +- .../src/components/UpgradePlanModal/index.js | 2 +- .../components/AttributeFilter/Filters.js | 2 +- .../hooks/useAllowedAttributes.js | 2 +- .../components/AttributeFilter/index.js | 2 +- .../content-manager/components/Block/index.js | 2 +- .../CollectionTypeFormWrapper/index.js | 19 +- .../components/DragLayer/index.js | 2 +- .../CellContent/RelationMultiple/index.js | 2 +- .../CellContent/RepeatableComponent/index.js | 2 +- .../utils/tests/isSingleRelation.test.js | 2 +- .../DynamicTable/TableRows/index.js | 8 +- .../components/DynamicTable/index.js | 4 +- .../components/AddComponentButton/index.js | 38 ++- .../DynamicZone/components/Component/index.js | 2 +- .../Category/ComponentCard/index.js | 2 +- .../components/ComponentPicker/index.js | 6 +- .../components/DynamicZone/index.js | 20 +- .../components/DynamicZone/utils/connect.js | 2 +- .../components/DynamicZone/utils/select.js | 2 +- .../EditViewDataManagerProvider/index.js | 12 +- .../EditViewDataManagerProvider/reducer.js | 2 +- .../utils/cleanData.js | 8 +- .../utils/schema.js | 36 +-- .../FieldComponent/utils/connect.js | 2 +- .../components/FieldComponent/utils/select.js | 12 +- .../components/FormTitle/index.js | 2 +- .../components/InjectionZoneList/index.js | 2 +- .../components/InputJSON/index.js | 11 +- .../components/InputJSON/jsonlint.js | 26 +- .../components/InputUID/index.js | 2 +- .../components/Inputs/index.js | 8 +- .../components/Inputs/utils/connect.js | 2 +- .../Inputs/utils/generateOptions.js | 2 +- .../components/Inputs/utils/getStep.js | 2 +- .../components/LayoutDndProvider/index.js | 12 +- .../NonRepeatableComponent/index.js | 8 +- .../PreviewWysiwyg/utils/mdRenderer.js | 2 +- .../PreviewWysiwyg/utils/satinizeHtml.js | 2 +- .../AccordionGroupCustom/index.js | 2 +- .../RepeatableComponent/DraggedItem/index.js | 24 +- .../DraggedItem/utils/connect.js | 2 +- .../components/RepeatableComponent/index.js | 10 +- .../RepeatableComponent/utils/connect.js | 2 +- .../utils/getComponentErrorKeys.js | 4 +- .../components/SectionTitle/index.js | 2 +- .../components/SelectMany/ListItem.js | 2 +- .../components/SelectMany/index.js | 2 +- .../components/SelectOne/SingleValue.js | 2 +- .../components/SelectWrapper/Option.js | 2 +- .../components/SelectWrapper/index.js | 42 +-- .../components/SelectWrapper/utils/connect.js | 2 +- .../components/SingleTypeFormWrapper/index.js | 17 +- .../utils/getRequestUrl.js | 2 +- .../components/Wysiwyg/Editor.js | 2 +- .../components/Wysiwyg/EditorLayout.js | 2 +- .../components/Wysiwyg/WysiwygFooter.js | 2 +- .../components/Wysiwyg/WysiwygNav.js | 8 +- .../components/Wysiwyg/index.js | 10 +- .../components/Wysiwyg/tests/index.test.js | 12 +- .../components/Wysiwyg/utils/utils.js | 8 +- .../hooks/useContentTypeLayout/index.js | 2 +- .../hooks/useFetchContentTypeLayout/index.js | 6 +- .../useFetchContentTypeLayout/reducer.js | 2 +- .../tests/reducer.test.js | 6 +- .../utils/formatLayouts.js | 14 +- .../hooks/useFindRedirectionLink/index.js | 2 +- .../hooks/useFindRedirectionLink/selectors.js | 2 +- .../tests/selectors.test.js | 2 +- .../hooks/useSyncRbac/reducer.js | 2 +- .../hooks/useSyncRbac/selectors.js | 4 +- .../hooks/useSyncRbac/tests/selectors.test.js | 2 +- .../pages/App/LeftMenu/index.js | 16 +- .../src/content-manager/pages/App/index.js | 6 +- .../src/content-manager/pages/App/reducer.js | 2 +- .../content-manager/pages/App/selectors.js | 8 +- .../pages/App/tests/index.test.js | 8 +- .../pages/App/tests/reducer.test.js | 4 +- .../pages/App/tests/selectors.test.js | 2 +- .../content-manager/pages/App/useModels.js | 2 +- .../pages/App/utils/generateModelsLinks.js | 4 +- .../App/utils/tests/getContentTypeLinks.js | 2 +- .../CollectionTypeRecursivePath/index.js | 2 +- .../pages/ComponentSetttingsView/index.js | 4 +- .../components/ComponentFieldList.js | 2 +- .../components/DisplayedFieldButton.js | 10 +- .../components/DisplayedFields.js | 2 +- .../components/DynamicZoneList.js | 2 +- .../components/GenericInput.js | 6 +- .../EditSettingsView/components/ModalForm.js | 10 +- .../components/RelationalFieldButton.js | 6 +- .../components/RelationalFields.js | 2 +- .../pages/EditSettingsView/index.js | 42 +-- .../pages/EditSettingsView/reducer.js | 2 +- ...ossibleMainFieldsForModelsAndComponents.js | 4 +- .../EditSettingsView/utils/getInputProps.js | 2 +- .../pages/EditSettingsView/utils/layout.js | 24 +- .../pages/EditView/DeleteLink/index.js | 2 +- .../EditView/DeleteLink/utils/connect.js | 2 +- .../DraftAndPublishBadge/tests/index.test.js | 2 +- .../DraftAndPublishBadge/utils/connect.js | 2 +- .../pages/EditView/Header/index.js | 8 +- .../pages/EditView/Header/utils/connect.js | 2 +- .../Header/utils/getDraftRelations.js | 6 +- .../EditView/Informations/utils/getUnits.js | 2 +- .../content-manager/pages/EditView/index.js | 17 +- .../EditView/utils/createAttributesLayout.js | 4 +- .../getFieldsActionMatchingPermissions.js | 2 +- .../EditViewLayoutManager/Permissions.js | 2 +- .../pages/EditViewLayoutManager/reducer.js | 2 +- .../pages/EditViewLayoutManager/selectors.js | 2 +- .../components/DraggableCard.js | 12 +- .../components/EditFieldForm.js | 7 +- .../ListSettingsView/components/Settings.js | 18 +- .../components/SortDisplayedFields.js | 4 +- .../pages/ListSettingsView/index.js | 18 +- .../pages/ListSettingsView/reducer.js | 2 +- .../ListSettingsView/tests/index.test.js | 2 +- .../utils/ellipsisCardTitle.js | 2 +- .../pages/ListView/FieldPicker/index.js | 15 +- .../FieldPicker/utils/getAllAllowedHeader.js | 2 +- .../content-manager/pages/ListView/actions.js | 2 +- .../content-manager/pages/ListView/index.js | 6 +- .../content-manager/pages/ListView/reducer.js | 4 +- .../pages/ListView/selectors.js | 6 +- .../pages/ListView/tests/reducer.test.js | 4 +- .../ListView/utils/createPluginsFilter.js | 2 +- .../ListViewLayoutManager/Permissions.js | 4 +- .../sharedReducers/crudReducer/actions.js | 6 +- .../sharedReducers/crudReducer/reducer.js | 2 +- .../sharedReducers/crudReducer/selectors.js | 2 +- .../crudReducer/tests/crudReducer.test.js | 12 +- .../utils/checkIfAttributeIsDisplayable.js | 2 +- .../utils/formatLayoutToApi.js | 4 +- .../utils/generatePermissionsObject.js | 5 +- .../src/content-manager/utils/getFieldName.js | 4 +- .../content-manager/utils/getMaxTempKey.js | 4 +- .../content-manager/utils/getRequestUrl.js | 2 +- .../src/content-manager/utils/getTrad.js | 2 +- .../utils/mergeMetasWithSchema.js | 4 +- .../utils/removeKeyInObject.js | 2 +- .../utils/removePasswordFieldsFromData.js | 4 +- .../core/admin/admin/src/core/apis/Plugin.js | 2 +- .../admin/src/core/store/configureStore.js | 2 +- .../admin/src/core/store/createReducer.js | 2 +- .../admin/src/core/utils/axiosInstance.js | 8 +- .../admin/admin/src/core/utils/createHook.js | 4 +- .../src/core/utils/tests/createHook.test.js | 12 +- .../src/hooks/useFetchEnabledPlugins/index.js | 6 +- .../hooks/useFetchMarketplacePlugins/index.js | 6 +- .../useFetchMarketplacePlugins/utils/api.js | 2 +- .../useFetchMarketplaceProviders/index.js | 6 +- .../hooks/useFetchPermissionsLayout/index.js | 2 +- .../useFetchPermissionsLayout/reducer.js | 2 +- .../admin/src/hooks/useFetchRole/index.js | 8 +- .../admin/src/hooks/useFetchRole/reducer.js | 2 +- .../admin/admin/src/hooks/useMenu/reducer.js | 2 +- .../hooks/useMenu/utils/getGeneralLinks.js | 4 +- .../admin/admin/src/hooks/useModels/index.js | 2 +- .../admin/src/hooks/useModels/reducer.js | 6 +- .../admin/src/hooks/useRolesList/reducer.js | 2 +- .../admin/src/hooks/useSettingsForm/index.js | 4 +- .../src/hooks/useSettingsForm/reducer.js | 2 +- .../admin/src/hooks/useSettingsMenu/index.js | 4 +- .../admin/src/hooks/useSettingsMenu/init.js | 2 +- .../src/hooks/useSettingsMenu/reducer.js | 6 +- .../useSettingsMenu/utils/formatLinks.js | 6 +- .../hooks/useSettingsMenu/utils/sortLinks.js | 2 +- packages/core/admin/admin/src/index.js | 2 +- .../LocaleToggle/index.js | 2 +- .../admin/src/pages/Admin/Onboarding/index.js | 4 +- .../core/admin/admin/src/pages/Admin/index.js | 4 +- .../admin/src/pages/Admin/tests/index.test.js | 18 +- .../core/admin/admin/src/pages/App/index.js | 4 +- .../core/admin/admin/src/pages/App/reducer.js | 2 +- .../components/ForgotPassword/index.js | 2 +- .../AuthPage/components/Login/BaseLogin.js | 8 +- .../pages/AuthPage/components/Login/index.js | 4 +- .../components/Oops/tests/index.test.js | 2 +- .../AuthPage/components/Register/index.js | 12 +- .../components/Register/tests/index.test.js | 2 +- .../components/ResetPassword/index.js | 10 +- .../ResetPassword/tests/index.test.js | 2 +- .../admin/admin/src/pages/AuthPage/init.js | 2 +- .../admin/admin/src/pages/AuthPage/reducer.js | 2 +- .../admin/src/pages/AuthPage/utils/forms.js | 10 +- .../admin/src/pages/HomePage/ContentBlocks.js | 2 +- .../admin/src/pages/HomePage/SocialLinks.js | 2 +- .../admin/admin/src/pages/HomePage/index.js | 6 +- .../components/NpmPackagesGrid/index.js | 4 +- .../admin/src/pages/MarketplacePage/index.js | 16 +- .../pages/MarketplacePage/tests/index.test.js | 8 +- .../src/pages/MarketplacePage/tests/server.js | 276 ++++++---------- .../admin/src/pages/ProfilePage/index.js | 43 ++- .../src/pages/ProfilePage/tests/index.test.js | 2 +- .../admin/src/pages/ProfilePage/utils/api.js | 2 +- .../components/SettingsNav/index.js | 8 +- .../pages/ApiTokens/EditView/index.js | 4 +- .../ApiTokens/ListView/DynamicTable/index.js | 6 +- .../pages/ApiTokens/ListView/index.js | 20 +- .../ApiTokens/ListView/tests/index.test.js | 2 +- .../components/Form/index.js | 2 +- .../components/Form/reducer.js | 2 +- .../components/LogoInput/index.js | 2 +- .../components/LogoInput/reducer.js | 2 +- .../components/LogoInput/tests/index.test.js | 2 +- .../LogoModalStepper/FromComputerForm.js | 2 +- .../LogoModalStepper/FromUrlForm.js | 4 +- .../components/LogoModalStepper/index.js | 2 +- .../components/LogoModalStepper/reducer.js | 2 +- .../pages/ApplicationInfosPage/index.js | 8 +- .../pages/ApplicationInfosPage/utils/api.js | 2 +- .../ApplicationInfosPage/utils/getFormData.js | 2 +- .../utils/parseFileMetadatas.js | 8 +- .../utils/prefixAllUrls.js | 2 +- .../ApplicationInfosPage/utils/urlToFile.js | 2 +- .../ConditionsModal/ActionRow/index.js | 8 +- .../components/ConditionsModal/index.js | 4 +- .../ContentTypeCollapse/Collapse/index.js | 13 +- .../utils/generateCheckboxesActions.js | 2 +- .../CollapsePropertyMatrix/ActionRow/index.js | 6 +- .../utils/getRowLabelCheckboxeState.js | 2 +- .../CollapsePropertyMatrix/Header/index.js | 2 +- .../SubActionRow/index.js | 20 +- .../utils/generateHeadersFromActions.js | 2 +- .../ContentTypeCollapse/utils/activeStyle.js | 2 +- .../utils/getAvailableActions.js | 2 +- .../components/ContentTypeCollapses/index.js | 2 +- .../Roles/EditPage/components/Curve/index.js | 2 +- .../components/GlobalActions/index.js | 2 +- .../utils/findDisplayedActions.js | 2 +- .../utils/getRowLabelCheckboxesState.js | 4 +- .../EditPage/components/Permissions/index.js | 17 +- .../components/Permissions/reducer.js | 8 +- .../utils/createDefaultCTFormFromLayout.js | 2 +- .../utils/findMatchingPermissions.js | 2 +- .../formatContentTypesPermissionToAPI.js | 4 +- .../formatLayoutForSettingsAndPlugins.js | 2 +- .../utils/formatPermissionsToAPI.js | 2 +- .../utils/formatSettingsPermissionsToAPI.js | 8 +- .../utils/updateConditionsToFalse.js | 4 +- .../PluginsAndSettings/SubCategory/index.js | 13 +- .../SubCategory/utils/formatActions.js | 4 +- .../utils/getConditionsButtonState.js | 4 +- .../components/PluginsAndSettings/index.js | 2 +- .../EditPage/components/RoleForm/index.js | 136 ++++---- .../components/RowLabelWithCheckbox/index.js | 7 +- .../components/utils/createArrayOfValues.js | 4 +- .../components/utils/getCheckboxState.js | 6 +- .../utils/removeConditionKeyFromData.js | 2 +- .../pages/Roles/EditPage/index.js | 118 ++++--- .../pages/Roles/EditPage/tests/index.test.js | 2 +- .../pages/Roles/ListPage/index.js | 16 +- .../pages/Roles/ListPage/tests/index.test.js | 2 +- .../pages/Users/EditPage/index.js | 6 +- .../pages/Users/EditPage/utils/api.js | 2 +- .../ListPage/DynamicTable/TableRows/index.js | 8 +- .../pages/Users/ListPage/Filters/index.js | 2 +- .../pages/Users/ListPage/ModalForm/index.js | 16 +- .../Users/ListPage/ModalForm/utils/schema.js | 10 +- .../pages/Users/ListPage/index.js | 16 +- .../pages/Users/ListPage/tests/index.test.js | 2 +- .../pages/Users/ListPage/utils/api.js | 2 +- .../Users/ListPage/utils/tableHeaders.js | 6 +- .../Users/components/SelectRoles/index.js | 4 +- .../Users/utils/validations/users/profile.js | 6 +- .../Users/utils/validations/users/roles.js | 5 +- .../components/EventInput/EventRow.js | 10 +- .../EditView/components/EventInput/index.js | 8 +- .../EventInput/utils/formatValue.js | 2 +- .../components/HeadersInput/Combobox.js | 8 +- .../components/TriggerContainer/index.js | 2 +- .../WebhookForm/tests/index.test.js | 2 +- .../EditView/components/utils/fieldsRegex.js | 4 +- .../EditView/components/utils/schema.js | 2 +- .../pages/Webhooks/EditView/index.js | 18 +- .../pages/Webhooks/EditView/reducer.js | 4 +- .../Webhooks/EditView/utils/formatData.js | 4 +- .../pages/Webhooks/ListView/index.js | 12 +- .../pages/Webhooks/ListView/reducer.js | 8 +- .../pages/SettingsPage/tests/index.test.js | 8 +- .../utils/createSectionsRoutes.js | 6 +- .../pages/SettingsPage/utils/defaultRoutes.js | 24 +- .../utils/getSectionsToDisplay.js | 4 +- .../admin/src/pages/UseCasePage/index.js | 4 +- .../src/pages/UseCasePage/tests/index.test.js | 2 +- .../shared/components/InjectionZone/index.js | 2 +- .../shared/hooks/useInjectionZone/index.js | 2 +- .../admin/admin/src/tests/StrapiApp.test.js | 14 +- .../src/translations/tests/index.test.js | 6 +- .../src/translations/tests/plural.test.js | 2 +- .../admin/src/utils/getAttributesToDisplay.js | 2 +- .../admin/src/utils/getExistingActions.js | 4 +- .../core/admin/admin/src/utils/getFullName.js | 2 +- .../admin/admin/src/utils/getRequestUrl.js | 2 +- .../admin/admin/src/utils/makeUniqueRoutes.js | 4 +- .../core/admin/admin/src/utils/sortLinks.js | 2 +- .../admin/hooks/useAuthProviders/reducer.js | 2 +- .../pages/AuthPage/components/Login/index.js | 4 +- .../components/Providers/SSOProviders.js | 6 +- .../pages/SettingsPage/SingleSignOn/index.js | 6 +- .../pages/Roles/CreatePage/index.js | 20 +- .../Roles/CreatePage/tests/index.test.js | 2 +- .../pages/Roles/ListPage/index.js | 16 +- .../pages/Roles/ListPage/reducer.js | 2 +- .../pages/Roles/ListPage/tests/index.test.js | 2 +- .../pages/SettingsPage/utils/customRoutes.js | 2 +- .../controllers/authentication/middlewares.js | 2 +- .../controllers/authentication/utils.js | 2 +- .../core/admin/ee/server/controllers/role.js | 6 +- .../services/__tests__/passport.test.js | 2 +- .../ee/server/services/__tests__/sso.test.js | 2 +- .../core/admin/ee/server/services/passport.js | 2 +- .../services/passport/provider-registry.js | 2 +- .../admin/ee/server/services/passport/sso.js | 2 +- .../core/admin/ee/server/services/role.js | 2 +- .../server/tests/provider-login.test.e2e.js | 2 +- .../ee/server/validation/authentication.js | 2 +- .../core/admin/ee/server/validation/role.js | 9 +- .../core/admin/ee/server/validation/user.js | 2 +- packages/core/admin/env.js | 4 +- packages/core/admin/index.js | 4 +- packages/core/admin/jest.config.front.js | 2 +- packages/core/admin/jest.config.js | 2 +- packages/core/admin/package.json | 4 +- packages/core/admin/scripts/build.js | 4 +- .../admin/scripts/create-dev-plugins-file.js | 11 +- .../core/admin/scripts/create-plugins-file.js | 4 +- .../admin/server/config/admin-conditions.js | 6 +- .../controllers/__tests__/permission.test.js | 2 +- .../server/controllers/__tests__/role.test.js | 8 +- .../server/controllers/__tests__/user.test.js | 10 +- .../core/admin/server/controllers/admin.js | 2 +- .../server/controllers/authentication.js | 2 +- .../formatters/format-actions-by-sections.js | 13 +- .../core/admin/server/controllers/role.js | 2 +- .../core/admin/server/controllers/user.js | 2 +- .../core/admin/server/controllers/webhooks.js | 22 +- .../action/__tests__/action-domain.test.js | 8 +- .../action/__tests__/action-provider.test.js | 10 +- .../core/admin/server/domain/action/index.js | 6 +- .../admin/server/domain/action/provider.js | 4 +- .../__tests__/condition-domain.test.js | 4 +- .../__tests__/condition-provider.test.js | 2 +- .../admin/server/domain/condition/index.js | 4 +- .../__tests__/permission-domain.test.js | 6 +- .../admin/server/domain/permission/index.js | 6 +- packages/core/admin/server/domain/user.js | 4 +- .../admin/server/policies/hasPermissions.js | 10 +- .../server/policies/isAuthenticatedAdmin.js | 2 +- .../server/services/__tests__/action.test.js | 2 +- .../server/services/__tests__/auth.test.js | 2 +- .../services/__tests__/passport.test.js | 4 +- .../services/__tests__/permission.test.js | 8 +- .../permissions-manager-sanitize.test.js | 6 +- .../__tests__/permissions-manager.test.js | 18 +- .../__tests__/permissions.engine.test.js | 8 +- ...ermissions.section-builder.section.test.js | 8 +- .../server/services/__tests__/role.test.js | 23 +- .../server/services/__tests__/token.test.js | 2 +- .../server/services/__tests__/user.test.js | 8 +- packages/core/admin/server/services/action.js | 2 +- .../core/admin/server/services/api-token.js | 10 +- packages/core/admin/server/services/auth.js | 4 +- .../core/admin/server/services/condition.js | 2 +- .../admin/server/services/content-type.js | 8 +- .../core/admin/server/services/passport.js | 6 +- .../services/passport/local-strategy.js | 4 +- .../services/permission/engine-hooks.js | 2 +- .../server/services/permission/engine.js | 18 +- .../permissions-manager/query-builers.js | 10 +- .../permissions-manager/sanitize.js | 16 +- .../server/services/permission/queries.js | 25 +- .../permission/sections-builder/handlers.js | 36 ++- .../permission/sections-builder/section.js | 4 +- .../permission/sections-builder/utils.js | 10 +- .../admin/server/services/project-settings.js | 34 +- packages/core/admin/server/services/role.js | 24 +- packages/core/admin/server/services/token.js | 4 +- packages/core/admin/server/services/user.js | 22 +- .../core/admin/server/strategies/admin.js | 2 +- .../core/admin/server/strategies/api-token.js | 6 +- .../server/tests/admin-permission.test.e2e.js | 2 +- .../admin-permissions-conditions.test.e2e.js | 2 +- .../admin/server/tests/admin-role.test.e2e.js | 41 +-- .../admin/server/tests/admin-user.test.e2e.js | 4 +- packages/core/admin/server/utils/index.js | 2 +- .../server/validation/action-provider.js | 18 +- .../admin/server/validation/api-tokens.js | 20 +- .../validation/authentication/renew-token.js | 6 +- .../check-fields-are-correctly-nested.js | 5 +- .../check-fields-dont-have-duplicates.js | 2 +- .../server/validation/common-validators.js | 141 ++++---- .../admin/server/validation/permission.js | 26 +- .../validation/policies/hasPermissions.js | 8 +- packages/core/admin/server/validation/user.js | 6 +- .../utils/__tests__/get-plugins-path.test.js | 14 +- packages/core/admin/utils/create-cache-dir.js | 6 +- .../admin/utils/get-custom-app-config-file.js | 6 +- packages/core/admin/utils/get-plugins-path.js | 5 +- .../core/admin/utils/should-build-admin.js | 8 +- packages/core/admin/webpack.config.dev.js | 2 + packages/core/content-manager/jest.config.js | 2 +- .../__tests__/single-types.test.js | 20 +- .../server/controllers/collection-types.js | 2 +- .../server/controllers/content-types.js | 4 +- .../server/controllers/validation/index.js | 21 +- .../validation/model-configuration.js | 64 +--- .../server/policies/hasPermissions.js | 4 +- .../services/__tests__/entity-manager.test.js | 4 +- .../server/services/__tests__/uid.test.js | 2 +- .../server/services/components.js | 2 +- .../server/services/configuration.js | 18 +- .../server/services/data-mapper.js | 6 +- .../server/services/entity-manager.js | 6 +- .../server/services/metrics.js | 6 +- .../server/services/permission-checker.js | 100 +++--- .../content-manager/server/services/uid.js | 2 +- .../utils/configuration/attributes.js | 10 +- .../services/utils/configuration/layouts.js | 20 +- .../services/utils/configuration/metadatas.js | 2 +- .../server/services/utils/store.js | 10 +- .../api/basic-compo-repeatable.test.e2e.js | 5 +- .../server/tests/api/basic-compo.test.e2e.js | 5 +- .../api/basic-dp-compo-repeatable.test.e2e.js | 20 +- .../tests/api/basic-dp-compo.test.e2e.js | 20 +- .../server/tests/api/basic-dp-dz.test.e2e.js | 7 +- .../server/tests/api/basic-dp.test.e2e.js | 7 +- .../server/tests/api/basic-dz.test.e2e.js | 5 +- .../tests/api/basic-relations.test.e2e.js | 4 +- .../server/tests/api/basic.test.e2e.js | 2 +- .../api/x-to-many-rf-preview.test.e2e.js | 8 +- ...epeatable-not-required-min-max.test.e2e.js | 15 +- .../repeatable-not-required.test.e2e.js | 15 +- .../repeatable-required-min-max.test.e2e.js | 15 +- .../repeatable-required.test.e2e.js | 15 +- .../single-not-required.test.e2e.js | 11 +- .../components/single-required.test.e2e.js | 11 +- .../tests/fields/biginteger.test.e2e.js | 2 +- .../server/tests/fields/boolean.test.e2e.js | 2 +- .../server/tests/fields/date.test.e2e.js | 6 +- .../server/tests/fields/datetime.test.e2e.js | 2 +- .../server/tests/fields/decimal.test.e2e.js | 2 +- .../tests/fields/enumeration.test.e2e.js | 2 +- .../server/tests/fields/float.test.e2e.js | 2 +- .../server/tests/fields/integer.test.e2e.js | 2 +- .../server/tests/fields/json.test.e2e.js | 2 +- .../server/tests/fields/password.test.e2e.js | 2 +- .../server/tests/fields/richtext.test.e2e.js | 2 +- .../server/tests/fields/string.test.e2e.js | 2 +- .../server/tests/fields/text.test.e2e.js | 2 +- .../server/tests/fields/time.test.e2e.js | 6 +- .../front/integration/createPage_specs.js | 74 ++--- .../tests/front/integration/init_specs.js | 27 +- .../tests/front/integration/listPage_specs.js | 14 +- .../server/tests/index.test.e2e.js | 10 +- .../server/tests/relation-list.test.e2e.js | 44 +-- .../server/tests/search.test.e2e.js | 9 +- .../content-manager/server/utils/index.js | 2 +- .../server/utils/pick-writable-attributes.js | 2 +- .../components/AllowedTypesSelect/index.js | 4 +- .../BooleanDefaultValueSelect/index.js | 2 +- .../src/components/BooleanRadioGroup/index.js | 2 +- .../CheckboxWithNumberField/index.js | 6 +- .../src/components/ComponentCard/index.js | 6 +- .../components/ComponentIconPicker/index.js | 4 +- .../components/ContentTypeBuilderNav/index.js | 8 +- .../ContentTypeBuilderNav/tests/index.test.js | 10 +- .../useContentTypeBuilderMenu.js | 30 +- .../components/ContentTypeRadioGroup/index.js | 2 +- .../src/components/CustomRadioGroup/index.js | 2 +- .../components/DataManagerProvider/index.js | 29 +- .../components/DataManagerProvider/reducer.js | 23 +- .../DataManagerProvider/selectors.js | 4 +- .../DataManagerProvider/utils/cleanData.js | 16 +- .../utils/createDataObject.js | 2 +- .../utils/formatSchemas.js | 4 +- .../retrieveComponentsThatHaveComponents.js | 6 +- .../utils/retrieveNestedComponents.js | 4 +- .../retrieveSpecificInfoFromComponents.js | 2 +- .../utils/serverRestartWatcher.js | 6 +- .../utils/validateSchema.js | 2 +- .../components/DraftAndPublishToggle/index.js | 2 +- .../src/components/DynamicZoneList/index.js | 4 +- .../FormModal/attributes/advancedForm.js | 30 +- .../FormModal/attributes/baseForm.js | 18 +- .../components/FormModal/attributes/types.js | 61 ++-- .../FormModal/attributes/validation/common.js | 29 +- .../category/createCategorySchema.js | 4 +- .../components/FormModal/category/regex.js | 2 +- .../component/createComponentSchema.js | 4 +- .../contentType/createContentTypeSchema.js | 12 +- .../components/FormModal/contentType/form.js | 6 +- .../components/FormModal/dynamicZone/form.js | 6 +- .../src/components/FormModal/forms/index.js | 16 +- .../admin/src/components/FormModal/index.js | 302 +++++++++--------- .../admin/src/components/FormModal/reducer.js | 2 +- .../src/components/FormModal/selectors.js | 4 +- .../components/FormModal/utils/createUid.js | 2 +- .../FormModal/utils/getFormInputNames.js | 2 +- .../components/FormModal/utils/relations.js | 4 +- .../components/FormModalEndActions/index.js | 34 +- .../FormModalNavigationProvider/index.js | 24 +- .../admin/src/components/List/index.js | 174 +++++----- .../admin/src/components/ListRow/index.js | 4 +- .../Relation/RelationField/index.js | 2 +- .../Relation/RelationNaturePicker/index.js | 2 +- .../src/components/SelectCategory/index.js | 8 +- .../src/components/SelectComponent/index.js | 16 +- .../src/components/SelectComponents/index.js | 2 +- .../src/components/SelectDateType/index.js | 2 +- .../src/components/SelectNumber/index.js | 2 +- .../admin/src/components/TabForm/index.js | 4 +- .../src/components/TextareaEnum/index.js | 2 +- .../admin/src/icons/Curve.js | 2 +- .../content-type-builder/admin/src/index.js | 4 +- .../ListView/LinkToCMSettingsView/index.js | 7 +- .../admin/src/pages/ListView/index.js | 13 +- .../src/pages/ListView/tests/index.test.js | 12 +- .../src/translations/tests/plural.test.js | 2 +- .../admin/src/utils/axiosInstance.js | 8 +- .../admin/src/utils/formAPI.js | 4 +- .../src/utils/getAttributeDisplayedType.js | 2 +- .../admin/src/utils/getTrad.js | 2 +- .../isAllowedContentTypesForRelations.js | 2 +- .../admin/src/utils/makeUnique.js | 2 +- .../admin/src/utils/nameToSlug.js | 2 +- .../admin/src/utils/startsWithANumber.js | 2 +- .../admin/src/utils/tests/formAPI.test.js | 2 +- .../admin/src/utils/toRegressedEnumValue.js | 2 +- .../content-type-builder/jest.config.front.js | 2 +- .../core/content-type-builder/jest.config.js | 2 +- .../server/controllers/components.js | 2 +- .../server/controllers/content-types.js | 4 +- .../validation/__tests__/common.test.js | 6 +- .../validation/__tests__/component.test.js | 6 +- .../validation/__tests__/content-type.test.js | 6 +- .../validation/__tests__/types.test.js | 6 +- .../server/controllers/validation/common.js | 36 +-- .../validation/component-category.js | 6 +- .../controllers/validation/component.js | 20 +- .../controllers/validation/content-type.js | 17 +- .../controllers/validation/data-transform.js | 8 +- .../controllers/validation/model-schema.js | 14 +- .../controllers/validation/relations.js | 28 +- .../server/controllers/validation/types.js | 43 +-- .../server/services/api-handler.js | 4 +- .../server/services/component-categories.js | 14 +- .../server/services/components.js | 8 +- .../server/services/content-types.js | 16 +- .../schema-builder/component-builder.js | 8 +- .../schema-builder/content-type-builder.js | 14 +- .../server/services/schema-builder/index.js | 21 +- .../services/schema-builder/schema-handler.js | 10 +- .../server/utils/attributes.js | 14 +- .../server/utils/helpers.js | 2 +- .../server/utils/index.js | 2 +- .../tests/components.test.e2e.js | 2 +- .../front/integrationOld/createApi_specs.js | 41 +-- packages/core/database/jest.config.js | 2 +- .../database/lib/__tests__/lifecycles.test.js | 2 +- packages/core/database/lib/connection.js | 7 +- .../core/database/lib/dialects/dialect.js | 8 +- packages/core/database/lib/dialects/index.js | 4 +- .../lib/dialects/mysql/schema-inspector.js | 28 +- .../database/lib/dialects/postgresql/index.js | 2 +- .../dialects/postgresql/schema-inspector.js | 55 ++-- .../lib/dialects/sqlite/schema-inspector.js | 10 +- packages/core/database/lib/entity-manager.js | 88 ++--- .../core/database/lib/entity-repository.js | 2 +- packages/core/database/lib/fields.js | 10 +- packages/core/database/lib/index.js | 2 +- .../core/database/lib/lifecycles/index.js | 4 +- .../subscribers/models-lifecycles.js | 2 +- .../lib/lifecycles/subscribers/timestamps.js | 4 +- packages/core/database/lib/metadata/index.js | 4 +- .../core/database/lib/metadata/relations.js | 13 +- .../core/database/lib/migrations/index.js | 10 +- .../core/database/lib/migrations/storage.js | 15 +- .../core/database/lib/query/helpers/join.js | 6 +- .../database/lib/query/helpers/order-by.js | 2 +- .../database/lib/query/helpers/populate.js | 92 +++--- .../core/database/lib/query/helpers/search.js | 10 +- .../database/lib/query/helpers/transform.js | 4 +- .../core/database/lib/query/helpers/where.js | 34 +- .../core/database/lib/query/query-builder.js | 23 +- packages/core/database/lib/schema/builder.js | 30 +- packages/core/database/lib/schema/diff.js | 28 +- packages/core/database/lib/schema/index.js | 2 +- packages/core/database/lib/schema/schema.js | 8 +- packages/core/database/lib/schema/storage.js | 9 +- packages/core/database/lib/types/index.js | 12 +- .../core/database/lib/utils/content-types.js | 6 +- packages/core/email/admin/src/index.js | 4 +- .../email/admin/src/pages/Settings/index.js | 6 +- .../admin/src/pages/Settings/utils/api.js | 2 +- .../src/translations/tests/plural.test.js | 2 +- .../email/admin/src/utils/axiosInstance.js | 8 +- .../core/email/admin/src/utils/getTrad.js | 2 +- packages/core/email/admin/src/utils/schema.js | 5 +- packages/core/email/jest.config.front.js | 2 +- packages/core/email/server/bootstrap.js | 2 +- .../core/email/server/controllers/email.js | 15 +- packages/core/email/server/services/email.js | 2 +- .../core/helper-plugin/.storybook/preview.js | 2 +- .../core/helper-plugin/createBuildIndex.js | 2 +- .../src/components/DateTimePicker/index.js | 6 +- .../components/DateTimePicker/parseDate.js | 2 +- .../lib/src/components/DynamicTable/index.js | 18 +- .../components/FilterListURLQuery/index.js | 4 +- .../FilterPopoverURLQuery/Inputs.js | 10 +- .../components/FilterPopoverURLQuery/index.js | 24 +- .../lib/src/components/Form/index.js | 2 +- .../lib/src/components/GenericInput/index.js | 20 +- .../components/InjectionZone/InjectionZone.js | 2 +- .../InjectionZone/useInjectionZone.js | 2 +- .../lib/src/components/Link/index.js | 2 +- .../lib/src/components/LinkButton/index.js | 2 +- .../lib/src/components/NoMedia/index.js | 2 +- .../src/components/PageSizeURLQuery/index.js | 2 +- .../PageSizeURLQuery/tests/index.test.js | 2 +- .../components/PaginationURLQuery/index.js | 10 +- .../ReactSelect/components/ClearIndicator.js | 2 +- .../ReactSelect/utils/getSelectStyles.js | 24 +- .../lib/src/components/RelativeTime/index.js | 2 +- .../src/components/SearchURLQuery/index.js | 4 +- ...ntentManagementUtilRemoveFieldsFromData.js | 4 +- .../utils/formatContentTypeData.js | 2 +- .../src/hooks/useFormattedMessage/index.js | 2 +- .../lib/src/hooks/useLockScroll/index.js | 2 +- .../lib/src/hooks/useQueryParams/index.js | 4 +- .../lib/src/hooks/useRBAC/index.js | 2 +- .../lib/src/hooks/useRBAC/init.js | 2 +- .../lib/src/hooks/useRBAC/reducer.js | 2 +- .../useRBAC/utils/generateAllowedActions.js | 2 +- .../useRBAC/utils/generateResultsObject.js | 2 +- .../lib/src/hooks/useSelectionState/index.js | 14 +- .../src/icons/RemoveRoundedButton/index.js | 2 +- .../lib/src/utils/await-to-js/index.js | 4 +- .../lib/src/utils/difference/index.js | 2 +- .../getFileExtension/getFileExtension.js | 2 +- .../lib/src/utils/getYupInnerErrors/index.js | 10 +- .../lib/src/utils/hasPermissions/index.js | 12 +- .../prefixFileUrlWithBackendUrl.js | 2 +- .../lib/src/utils/pxToRem/index.js | 2 +- .../lib/src/utils/request/index.js | 10 +- .../lib/src/utils/stopPropagation/index.js | 2 +- packages/core/helper-plugin/webpack.config.js | 2 +- packages/core/strapi/bin/strapi.js | 48 +-- packages/core/strapi/jest.config.js | 2 +- packages/core/strapi/lib/Strapi.js | 10 +- .../commands/__tests__/admin-create.test.js | 16 +- .../commands/__tests__/admin-reset.test.js | 4 +- .../__tests__/generate-template.test.js | 4 +- .../core/strapi/lib/commands/admin-create.js | 7 +- .../core/strapi/lib/commands/admin-reset.js | 2 +- .../strapi/lib/commands/builders/admin.js | 2 +- .../lib/commands/builders/typescript.js | 4 +- .../strapi/lib/commands/configurationDump.js | 6 +- .../lib/commands/configurationRestore.js | 9 +- packages/core/strapi/lib/commands/console.js | 2 +- .../strapi/lib/commands/content-types/list.js | 4 +- .../strapi/lib/commands/controllers/list.js | 4 +- packages/core/strapi/lib/commands/develop.js | 23 +- .../core/strapi/lib/commands/hooks/list.js | 4 +- packages/core/strapi/lib/commands/install.js | 4 +- .../strapi/lib/commands/middlewares/list.js | 4 +- packages/core/strapi/lib/commands/new.js | 2 +- .../strapi/lib/commands/opt-in-telemetry.js | 6 +- .../strapi/lib/commands/opt-out-telemetry.js | 4 +- .../core/strapi/lib/commands/policies/list.js | 4 +- .../core/strapi/lib/commands/routes/list.js | 6 +- .../core/strapi/lib/commands/services/list.js | 4 +- .../strapi/lib/commands/ts/generate-types.js | 2 +- .../core/strapi/lib/commands/uninstall.js | 2 +- .../core/strapi/lib/commands/watchAdmin.js | 2 +- packages/core/strapi/lib/compile.js | 2 +- packages/core/strapi/lib/container.js | 2 +- .../lib/core-api/controller/transform.js | 8 +- .../lib/core-api/service/collection-type.js | 2 +- .../strapi/lib/core-api/service/pagination.js | 10 +- .../core/app-configuration/config-loader.js | 4 +- .../app-configuration/load-config-file.js | 6 +- packages/core/strapi/lib/core/bootstrap.js | 2 +- .../lib/core/domain/component/validator.js | 12 +- .../lib/core/domain/content-type/index.js | 2 +- .../lib/core/domain/content-type/validator.js | 32 +- .../strapi/lib/core/domain/module/index.js | 2 +- .../lib/core/domain/module/validation.js | 4 +- .../core/strapi/lib/core/loaders/admin.js | 2 +- packages/core/strapi/lib/core/loaders/apis.js | 52 ++- .../strapi/lib/core/loaders/components.js | 4 +- .../strapi/lib/core/loaders/middlewares.js | 2 +- .../loaders/plugins/get-enabled-plugins.js | 12 +- .../strapi/lib/core/loaders/plugins/index.js | 6 +- .../strapi/lib/core/loaders/sanitizers.js | 2 +- .../core/strapi/lib/core/loaders/src-index.js | 4 +- .../core/strapi/lib/core/registries/apis.js | 2 +- .../lib/core/registries/content-types.js | 2 +- .../strapi/lib/core/registries/modules.js | 2 +- .../strapi/lib/core/registries/plugins.js | 2 +- .../strapi/lib/core/registries/services.js | 2 +- packages/core/strapi/lib/factories.js | 6 +- .../strapi/lib/load/filepath-to-prop-path.js | 2 +- packages/core/strapi/lib/load/package-path.js | 2 +- .../lib/middlewares/__tests__/errors.test.js | 6 +- packages/core/strapi/lib/middlewares/body.js | 4 +- .../strapi/lib/middlewares/compression.js | 2 +- packages/core/strapi/lib/middlewares/cors.js | 13 +- packages/core/strapi/lib/middlewares/ip.js | 2 +- .../core/strapi/lib/middlewares/logger.js | 4 +- .../core/strapi/lib/middlewares/powered-by.js | 2 +- packages/core/strapi/lib/middlewares/query.js | 10 +- .../core/strapi/lib/middlewares/security.js | 4 +- .../strapi/lib/migrations/draft-publish.js | 6 +- .../services/__tests__/worker-queue.test.js | 4 +- .../core/strapi/lib/services/auth/index.js | 2 +- .../core/strapi/lib/services/core-store.js | 8 +- .../__tests__/entity-service.test.js | 2 +- .../lib/services/entity-service/components.js | 26 +- .../lib/services/entity-service/index.js | 102 +++--- .../lib/services/entity-validator/index.js | 266 +++++++-------- .../services/entity-validator/validators.js | 29 +- packages/core/strapi/lib/services/errors.js | 16 +- packages/core/strapi/lib/services/fs.js | 2 +- .../metrics/__tests__/middleware.test.js | 2 +- .../core/strapi/lib/services/metrics/index.js | 14 +- .../strapi/lib/services/metrics/is-truthy.js | 2 +- .../strapi/lib/services/metrics/sender.js | 8 +- .../lib/services/metrics/stringify-deep.js | 2 +- .../strapi/lib/services/server/admin-api.js | 2 +- .../lib/services/server/compose-endpoint.js | 14 +- .../strapi/lib/services/server/content-api.js | 2 +- .../strapi/lib/services/server/http-server.js | 6 +- .../core/strapi/lib/services/server/index.js | 8 +- .../core/strapi/lib/services/server/koa.js | 19 +- .../strapi/lib/services/server/middleware.js | 2 +- .../core/strapi/lib/services/server/policy.js | 2 +- .../services/server/register-middlewares.js | 12 +- .../lib/services/server/register-routes.js | 22 +- .../strapi/lib/services/server/routing.js | 37 +-- .../strapi/lib/services/utils/upload-files.js | 4 +- .../strapi/lib/services/webhook-runner.js | 14 +- .../core/strapi/lib/services/webhook-store.js | 4 +- packages/core/strapi/lib/utils/addSlash.js | 2 +- packages/core/strapi/lib/utils/ee.js | 2 +- .../core/strapi/lib/utils/import-default.js | 2 +- packages/core/strapi/lib/utils/run-checks.js | 4 +- packages/core/strapi/lib/utils/signals.js | 4 +- .../core/strapi/lib/utils/startup-logger.js | 2 +- .../strapi/lib/utils/update-notifier/index.js | 8 +- .../api/basic-compo-repeatable.test.e2e.js | 7 +- .../strapi/tests/api/basic-compo.test.e2e.js | 7 +- .../api/basic-dp-compo-repeatable.test.e2e.js | 7 +- .../tests/api/basic-dp-compo.test.e2e.js | 7 +- .../strapi/tests/api/basic-dp.test.e2e.js | 7 +- .../strapi/tests/api/basic-dz.test.e2e.js | 7 +- .../core/strapi/tests/api/basic.test.e2e.js | 7 +- .../api/populate/filtering/index.test.e2e.js | 16 +- .../tests/api/populate/sanitize.test.e2e.js | 2 +- ...epeatable-not-required-min-max.test.e2e.js | 15 +- .../repeatable-not-required.test.e2e.js | 15 +- .../repeatable-required-min-max.test.e2e.js | 15 +- .../repeatable-required.test.e2e.js | 15 +- .../single-not-required.test.e2e.js | 11 +- .../components/single-required.test.e2e.js | 11 +- .../strapi/tests/deepFiltering.test.e2e.js | 8 +- .../core/strapi/tests/endpoint.test.e2e.js | 8 +- .../core/strapi/tests/filtering.test.e2e.js | 36 ++- .../lifecycles/before-delete.test.e2e.js | 2 +- .../migration-draft-publish.test.e2e.js | 11 +- .../migration-required-attribute.test.e2e.js | 7 +- .../migration-unique-attribute.test.e2e.js | 5 +- .../tests/publication-state.test.e2e.js | 24 +- packages/core/strapi/tests/search.test.e2e.js | 15 +- .../AssetCard/UploadingAssetCard.js | 4 +- .../src/components/AssetCard/VideoPreview.js | 6 +- .../AssetCard/tests/DocAssetCard.test.js | 2 +- .../AssetCard/tests/ImageAssetCard.test.js | 2 +- .../AssetDialog/BrowseStep/Filters.js | 2 +- .../AssetDialog/BrowseStep/PageSize.js | 2 +- .../BrowseStep/PaginationFooter/components.js | 6 +- .../BrowseStep/PaginationFooter/index.js | 8 +- .../BrowseStep/SearchAsset/index.js | 6 +- .../SearchAsset/tests/index.test.js | 2 +- .../AssetDialog/BrowseStep/index.js | 6 +- .../BrowseStep/tests/index.test.js | 4 +- .../components/AssetDialog/DialogFooter.js | 8 +- .../admin/src/components/AssetDialog/index.js | 12 +- .../src/components/AssetList/Draggable.js | 4 +- .../admin/src/components/AssetList/index.js | 2 +- .../AssetList/tests/AssetList.test.js | 4 +- .../src/components/Breadcrumbs/Breadcrumbs.js | 2 +- .../Breadcrumbs/CrumbSimpleMenuAsync.js | 4 +- .../Breadcrumbs/tests/index.test.js | 2 +- .../BulkMoveDialog/BulkMoveDialog.js | 2 +- .../EditAssetDialog/PreviewBox/index.js | 11 +- .../EditAssetDialog/ReplaceMediaButton.js | 2 +- .../src/components/EditAssetDialog/index.js | 6 +- .../tests/EditAssetDialog.test.js | 2 +- .../EditFolderDialog/EditFolderDialog.js | 2 +- .../admin/src/components/FilterList/index.js | 4 +- .../FilterPopover/FilterValueInput.js | 6 +- .../src/components/FilterPopover/index.js | 154 +++++---- .../FolderCardBody/FolderCardBody.js | 2 +- .../FolderCardCheckbox/FolderCardCheckbox.js | 2 +- .../src/components/FolderCard/hooks/useId.js | 2 +- .../FolderCard/tests/FolderCard.test.js | 2 +- .../FolderList/tests/FolderList.test.js | 2 +- .../components/MediaLibraryDialog/index.js | 2 +- .../Carousel/CarouselAssets.js | 6 +- .../Carousel/EmptyStateAsset.js | 8 +- .../src/components/MediaLibraryInput/index.js | 22 +- .../tests/MediaLibraryInput.test.js | 2 +- .../admin/src/components/SelectTree/Option.js | 60 ++-- .../src/components/SelectTree/SelectTree.js | 18 +- .../SelectTree/tests/SelectTree.test.js | 6 +- .../SelectTree/utils/flattenTree.js | 2 +- .../SelectTree/utils/getOpenValues.js | 2 +- .../SelectTree/utils/getValuesToClose.js | 6 +- .../admin/src/components/SortPicker/index.js | 2 +- .../AddAssetStep/FromComputerForm.js | 8 +- .../tests/FromComputerForm.test.js | 6 +- .../PendingAssetStep/PendingAssetStep.js | 6 +- .../tests/PendingAssetStep.test.js | 4 +- .../UploadAssetDialog/UploadAssetDialog.js | 20 +- .../tests/UploadAssetDialog.test.js | 22 +- .../UploadProgress/tests/index.test.js | 2 +- .../admin/src/hooks/tests/useAssets.test.js | 2 +- .../admin/src/hooks/tests/useBulkMove.test.js | 2 +- .../src/hooks/tests/useBulkRemove.test.js | 2 +- .../src/hooks/tests/useEditFolder.test.js | 2 +- .../admin/src/hooks/tests/useFolder.test.js | 2 +- .../hooks/tests/useFolderStructure.test.js | 2 +- .../admin/src/hooks/tests/useFolders.test.js | 2 +- .../src/hooks/tests/useRemoveAsset.test.js | 2 +- .../upload/admin/src/hooks/useBulkMove.js | 2 +- .../upload/admin/src/hooks/useBulkRemove.js | 6 +- .../core/upload/admin/src/hooks/useCropImg.js | 4 +- .../upload/admin/src/hooks/useEditAsset.js | 6 +- .../upload/admin/src/hooks/useEditFolder.js | 4 +- .../admin/src/hooks/useFolderStructure.js | 2 +- .../admin/src/hooks/useModalQueryParams.js | 28 +- .../upload/admin/src/hooks/useRemoveAsset.js | 10 +- .../core/upload/admin/src/hooks/useUpload.js | 4 +- .../admin/src/hooks/utils/rename-keys.js | 5 +- .../src/hooks/utils/tests/rename-keys.test.js | 2 +- packages/core/upload/admin/src/index.js | 6 +- .../admin/src/pages/App/MediaLibrary.js | 32 +- .../admin/src/pages/App/components/Filters.js | 6 +- .../tests/EmptyOrNoPermissions.test.js | 2 +- .../src/pages/App/tests/BulkActions.test.js | 4 +- .../admin/src/pages/App/tests/Header.test.js | 2 +- .../src/pages/App/tests/MediaLibrary.test.js | 8 +- .../admin/src/pages/SettingsPage/index.js | 8 +- .../admin/src/pages/SettingsPage/init.js | 2 +- .../admin/src/pages/SettingsPage/reducer.js | 2 +- .../src/translations/tests/plural.test.js | 2 +- .../upload/admin/src/utils/axiosInstance.js | 8 +- .../admin/src/utils/containsAssetFilter.js | 6 +- .../upload/admin/src/utils/downloadFile.js | 2 +- .../upload/admin/src/utils/formatDuration.js | 4 +- .../upload/admin/src/utils/getAllowedFiles.js | 2 +- .../admin/src/utils/getBreadcrumbDataCM.js | 2 +- .../admin/src/utils/getFolderParents.js | 2 +- .../upload/admin/src/utils/getRequestUrl.js | 2 +- .../core/upload/admin/src/utils/getTrad.js | 2 +- .../upload/admin/src/utils/toSingularTypes.js | 4 +- .../upload/admin/src/utils/typeFromMime.js | 2 +- .../upload/admin/src/utils/urlYupSchema.js | 3 +- .../upload/admin/src/utils/urlsToAssets.js | 8 +- packages/core/upload/jest.config.front.js | 2 +- packages/core/upload/jest.config.js | 2 +- .../server/controllers/admin-folder-file.js | 8 +- .../validation/admin/folder-file.js | 8 +- .../controllers/validation/admin/folder.js | 36 ++- .../controllers/validation/admin/upload.js | 2 +- .../controllers/validation/admin/utils.js | 2 +- packages/core/upload/server/graphql.js | 6 +- .../core/upload/server/middlewares/upload.js | 2 +- packages/core/upload/server/register.js | 4 +- .../server/services/__tests__/metrics.js | 18 +- .../__tests__/upload/uploadImage.test.js | 6 +- packages/core/upload/server/services/file.js | 4 +- .../core/upload/server/services/folder.js | 18 +- .../server/services/image-manipulation.js | 27 +- .../core/upload/server/services/metrics.js | 4 +- .../core/upload/server/services/upload.js | 32 +- packages/core/upload/server/utils/cron.js | 2 +- packages/core/upload/server/utils/file.js | 12 +- packages/core/upload/server/utils/index.js | 2 +- .../tests/admin/file-folder.test.e2e.js | 2 +- .../core/upload/tests/admin/file.test.e2e.js | 2 +- .../tests/admin/folder-file.test.e2e.js | 10 +- .../tests/admin/folder-structure.test.e2e.js | 4 +- .../upload/tests/admin/folder.test.e2e.js | 6 +- .../tests/admin/image-dimension.test.e2e.js | 2 +- ...raphql-upload-automatic-folder.test.e2e.js | 2 +- .../upload-automatic-folder.test.e2e.js | 2 +- packages/core/utils/jest.config.js | 2 +- .../utils/lib/__tests__/content-types.test.js | 2 +- .../utils/lib/__tests__/env-helper.test.js | 11 +- .../core/utils/lib/__tests__/hooks.test.js | 29 +- .../utils/lib/__tests__/parse-type.test.js | 2 +- .../lib/__tests__/provider-factory.test.js | 24 +- .../utils/lib/__tests__/validators.test.js | 16 +- .../core/utils/lib/__tests__/visitors.test.js | 6 +- .../utils/lib/__tests__/yup-formatter.test.js | 22 +- packages/core/utils/lib/build-query.js | 12 +- packages/core/utils/lib/code-generator.js | 2 +- packages/core/utils/lib/config.js | 28 +- packages/core/utils/lib/content-types.js | 24 +- .../core/utils/lib/convert-query-params.js | 53 +-- packages/core/utils/lib/env-helper.js | 2 +- packages/core/utils/lib/format-yup-error.js | 4 +- packages/core/utils/lib/hooks.js | 2 +- packages/core/utils/lib/object-formatting.js | 2 +- packages/core/utils/lib/pagination.js | 10 +- packages/core/utils/lib/parse-multipart.js | 2 +- packages/core/utils/lib/parse-type.js | 8 +- packages/core/utils/lib/pipe-async.js | 16 +- packages/core/utils/lib/policy.js | 8 +- packages/core/utils/lib/print-value.js | 4 +- packages/core/utils/lib/provider-factory.js | 2 +- packages/core/utils/lib/relations.js | 4 +- packages/core/utils/lib/sanitize/index.js | 8 +- .../lib/sanitize/visitors/allowed-fields.js | 118 +++---- .../visitors/remove-restricted-relations.js | 94 +++--- .../sanitize/visitors/restricted-fields.js | 48 +-- packages/core/utils/lib/set-creator-fields.js | 20 +- packages/core/utils/lib/string-formatting.js | 18 +- .../core/utils/lib/template-configuration.js | 2 +- packages/core/utils/lib/traverse-entity.js | 8 +- packages/core/utils/lib/validators.js | 52 +-- packages/generators/admin/component/index.js | 10 +- packages/generators/admin/plopfile.js | 47 +-- .../admin/utils/fileExistsInPackages.js | 2 +- .../generators/admin/utils/getPluginList.js | 2 +- .../app/lib/create-cli-db-project.js | 2 +- .../app/lib/create-customized-project.js | 14 +- packages/generators/app/lib/create-project.js | 9 +- packages/generators/app/lib/generate-new.js | 2 +- packages/generators/app/lib/index.js | 8 +- .../files/js/src/admin/app.example.js | 2 +- .../lib/resources/json/common/package.json.js | 2 +- .../app/lib/resources/templates/env.js | 5 +- .../app/lib/utils/check-install-path.js | 2 +- .../app/lib/utils/merge-template.js | 6 +- .../app/lib/utils/parse-db-arguments.js | 4 +- packages/generators/app/lib/utils/usage.js | 2 +- .../lib/files/js/plugin/admin/src/index.js | 2 +- .../plugin/admin/src/utils/axiosInstance.js | 8 +- .../js/plugin/admin/src/utils/getTrad.js | 2 +- packages/generators/generators/lib/index.js | 2 +- .../generators/generators/lib/plopfile.js | 4 +- .../generators/generators/lib/plops/api.js | 8 +- .../generators/lib/plops/content-type.js | 10 +- .../generators/lib/plops/controller.js | 4 +- .../generators/lib/plops/middleware.js | 4 +- .../generators/generators/lib/plops/plugin.js | 8 +- .../generators/generators/lib/plops/policy.js | 4 +- .../lib/plops/prompts/ct-names-prompts.js | 6 +- .../plops/prompts/get-attributes-prompts.js | 12 +- .../plops/prompts/get-destination-prompts.js | 8 +- .../lib/plops/prompts/kind-prompts.js | 2 +- .../generators/lib/plops/service.js | 2 +- .../lib/plops/utils/get-file-path.js | 2 +- .../plops/utils/validate-attribute-input.js | 2 +- .../lib/plops/utils/validate-input.js | 2 +- .../plugins/documentation/admin/src/index.js | 6 +- .../admin/src/pages/PluginPage/index.js | 6 +- .../src/pages/PluginPage/tests/index.test.js | 2 +- .../admin/src/pages/SettingsPage/index.js | 6 +- .../pages/SettingsPage/tests/index.test.js | 2 +- .../admin/src/pages/utils/api.js | 2 +- .../admin/src/pages/utils/useReactQuery.js | 6 +- .../documentation/admin/src/utils/getTrad.js | 2 +- .../admin/src/utils/openWithNewTab.js | 2 +- .../plugins/documentation/server/bootstrap.js | 5 +- .../server/controllers/documentation.js | 9 +- .../documentation/server/public/index.html | 41 ++- .../documentation/server/public/login.html | 252 ++++++++------- .../server/services/documentation.js | 10 +- .../helpers/build-api-endpoint-path.js | 16 +- .../helpers/build-component-schema.js | 10 +- .../helpers/utils/clean-schema-attributes.js | 4 +- .../services/helpers/utils/pascal-case.js | 2 +- .../server/services/helpers/utils/routes.js | 4 +- packages/plugins/graphql/admin/src/index.js | 2 +- packages/plugins/graphql/jest.config.js | 2 +- packages/plugins/graphql/server/bootstrap.js | 39 ++- .../graphql/server/format-graphql-error.js | 15 +- .../server/services/builders/dynamic-zones.js | 12 +- .../services/builders/filters/content-type.js | 111 ++++--- .../server/services/builders/filters/index.js | 2 +- .../builders/filters/operators/index.js | 2 +- .../graphql/server/services/builders/index.js | 2 +- .../graphql/server/services/builders/input.js | 34 +- .../builders/mutations/collection-type.js | 2 +- .../services/builders/mutations/index.js | 2 +- .../builders/mutations/single-type.js | 2 +- .../builders/queries/collection-type.js | 4 +- .../server/services/builders/queries/index.js | 2 +- .../services/builders/queries/single-type.js | 4 +- .../builders/resolvers/association.js | 6 +- .../builders/resolvers/dynamic-zone.js | 2 +- .../services/builders/resolvers/index.js | 2 +- .../graphql/server/services/builders/type.js | 25 +- .../graphql/server/services/builders/utils.js | 2 +- .../server/services/content-api/index.js | 8 +- .../register-functions/collection-type.js | 2 +- .../content-type/dynamic-zones.js | 2 +- .../register-functions/content-type/enums.js | 2 +- .../register-functions/polymorphic.js | 4 +- .../register-functions/single-type.js | 2 +- .../services/content-api/wrap-resolvers.js | 58 ++-- .../server/services/extension/extension.js | 7 +- .../services/extension/shadow-crud-manager.js | 8 +- .../graphql/server/services/format/index.js | 2 +- .../server/services/internals/args/index.js | 2 +- .../internals/helpers/get-enabled-scalars.js | 22 +- .../services/internals/helpers/index.js | 2 +- .../server/services/internals/index.js | 2 +- .../server/services/internals/scalars/date.js | 16 +- .../services/internals/types/filters.js | 2 +- .../server/services/internals/types/index.js | 2 +- .../server/services/utils/attributes.js | 16 +- .../graphql/server/services/utils/index.js | 2 +- .../mappers/entity-to-response-entity.js | 2 +- .../graphql-filters-to-strapi-query.js | 6 +- .../mappers/graphql-scalar-to-operators.js | 2 +- .../server/services/utils/mappers/index.js | 2 +- .../graphql/server/services/utils/naming.js | 30 +- .../plugins/graphql/tests/crud.test.e2e.js | 12 +- .../graphql/tests/fields/date.test.e2e.js | 8 +- .../graphql/tests/fields/datetime.test.e2e.js | 8 +- .../graphql/tests/relations.test.e2e.js | 22 +- .../graphql/tests/single-type.test.e2e.js | 4 +- .../CMEditViewCopyLocale/index.js | 8 +- .../utils/generateOptions.js | 4 +- ...removePasswordAndRelationsFieldFromData.js | 4 +- .../CMEditViewLocalePicker/index.js | 6 +- .../CMEditViewInjectedComponents/index.js | 2 +- .../DeleteModalAdditionalInfos/index.js | 2 +- .../components/CheckboxConfirmation/index.js | 4 +- .../src/components/LocaleList/LocaleTable.js | 2 +- .../LocaleListCell/LocaleListCell.js | 14 +- .../src/components/LocalePicker/index.js | 6 +- .../src/components/LocaleSelect/index.js | 10 +- .../LocaleSelect/tests/LocaleSelect.test.js | 4 +- .../src/components/ModalCreate/BaseForm.js | 2 +- .../admin/src/components/ModalCreate/index.js | 2 +- .../contentManagerHooks/addColumnToTable.js | 2 +- .../mutateEditViewLayout.js | 10 +- .../addLocaleToCollectionTypesLinks.test.js | 4 +- .../tests/addLocaleToSingleTypesLinks.test.js | 4 +- .../utils/addLocaleToLinksSearch.js | 2 +- .../plugins/i18n/admin/src/hooks/reducers.js | 10 +- .../admin/src/hooks/useAddLocale/index.js | 4 +- .../hooks/useContentTypePermissions/index.js | 2 +- .../src/hooks/useDefaultLocales/index.js | 4 +- .../admin/src/hooks/useDeleteLocale/index.js | 2 +- .../i18n/admin/src/hooks/useHasI18n/index.js | 2 +- .../i18n/admin/src/hooks/useLocales/index.js | 8 +- packages/plugins/i18n/admin/src/index.js | 6 +- .../addCommonFieldsToInitialDataMiddleware.js | 140 ++++---- ...extendCTBAttributeInitialDataMiddleware.js | 108 ++++--- .../extendCTBInitialDataMiddleware.js | 2 +- .../middlewares/localePermissionMiddleware.js | 4 +- ...ommonFieldsToInitialDataMiddleware.test.js | 8 +- .../tests/localePermissionMiddleware.test.js | 14 +- .../pages/SettingsPage/LocaleSettingsPage.js | 2 +- .../SettingsPage/tests/SettingsPage.test.js | 4 +- ...selectCollectionTypesRelatedPermissions.js | 2 +- .../admin/src/selectors/selectI18nLocales.js | 2 +- .../src/selectors/tests/selectors.test.js | 2 +- .../i18n/admin/src/utils/axiosInstance.js | 8 +- .../i18n/admin/src/utils/getDefaultLocale.js | 6 +- .../i18n/admin/src/utils/getInitialLocale.js | 4 +- .../admin/src/utils/getLocaleFromQuery.js | 2 +- .../plugins/i18n/admin/src/utils/getTrad.js | 2 +- .../src/utils/mutateCTBContentTypeSchema.js | 4 +- packages/plugins/i18n/jest.config.front.js | 2 +- packages/plugins/i18n/jest.config.js | 2 +- packages/plugins/i18n/server/bootstrap.js | 54 ++-- .../plugins/i18n/server/constants/index.js | 2 +- .../i18n/server/content-types/locale/index.js | 2 +- .../i18n/server/controllers/content-types.js | 4 +- .../i18n/server/controllers/locales.js | 9 +- packages/plugins/i18n/server/domain/locale.js | 2 +- packages/plugins/i18n/server/graphql.js | 16 +- .../server/migrations/__tests__/field.test.js | 10 +- .../migrations/field/migrate-for-bookshelf.js | 17 +- .../i18n/server/migrations/field/migrate.js | 4 +- .../i18n/server/migrations/field/utils.js | 4 +- packages/plugins/i18n/server/register.js | 8 +- .../services/__tests__/content-types.test.js | 243 +++++++------- .../entity-service-decorator.test.js | 10 +- .../services/__tests__/localizations.test.js | 7 +- .../i18n/server/services/content-types.js | 42 ++- .../plugins/i18n/server/services/core-api.js | 106 +++--- .../services/entity-service-decorator.js | 8 +- .../plugins/i18n/server/services/locales.js | 14 +- .../i18n/server/services/localizations.js | 8 +- .../server/services/permissions/actions.js | 8 +- .../server/services/permissions/conditions.js | 2 +- .../server/services/permissions/engine.js | 2 +- .../services/permissions/sections-builder.js | 2 +- packages/plugins/i18n/server/utils/index.js | 2 +- .../i18n/server/validation/content-types.js | 2 +- .../plugins/i18n/server/validation/locales.js | 16 +- .../tests/content-api/content-api.test.e2e.js | 2 +- .../plugins/i18n/tests/graphql.test.e2e.js | 2 +- .../plugins/i18n/tests/locales.test.e2e.js | 8 +- packages/plugins/sentry/admin/src/index.js | 2 +- packages/plugins/sentry/jest.config.js | 2 +- .../sentry/server/middlewares/sentry.js | 2 +- .../sentry/server/services/sentry/index.js | 4 +- .../components/BoundRoute/getMethodColor.js | 2 +- .../admin/src/components/BoundRoute/index.js | 2 +- .../src/components/FormModal/Input/index.js | 2 +- .../admin/src/components/FormModal/index.js | 16 +- .../PermissionRow/CheckboxWrapper.js | 6 +- .../Permissions/PermissionRow/SubCategory.js | 24 +- .../Permissions/PermissionRow/index.js | 2 +- .../admin/src/components/Permissions/index.js | 4 +- .../admin/src/components/Permissions/init.js | 2 +- .../src/components/Permissions/reducer.js | 2 +- .../Permissions/tests/reducer.test.js | 4 +- .../admin/src/components/Policies/index.js | 2 +- .../src/components/UsersPermissions/index.js | 10 +- .../components/UsersPermissions/reducer.js | 2 +- .../UsersPermissions/tests/reducer.test.js | 12 +- .../admin/src/hooks/useFetchRole/index.js | 6 +- .../admin/src/hooks/useFetchRole/reducer.js | 2 +- .../admin/src/hooks/useForm/index.js | 2 +- .../admin/src/hooks/useForm/reducer.js | 2 +- .../src/hooks/useForm/tests/reducer.test.js | 8 +- .../admin/src/hooks/usePlugins/index.js | 2 +- .../admin/src/hooks/usePlugins/reducer.js | 2 +- .../admin/src/hooks/useRolesList/reducer.js | 2 +- .../users-permissions/admin/src/index.js | 10 +- .../admin/src/pages/AdvancedSettings/index.js | 21 +- .../src/pages/AdvancedSettings/utils/api.js | 2 +- .../pages/AdvancedSettings/utils/schema.js | 6 +- .../admin/src/pages/EmailTemplates/index.js | 16 +- .../src/pages/EmailTemplates/utils/api.js | 2 +- .../src/pages/EmailTemplates/utils/schema.js | 5 +- .../admin/src/pages/Providers/index.js | 44 +-- .../admin/src/pages/Providers/reducer.js | 2 +- .../admin/src/pages/Providers/utils/api.js | 4 +- .../Providers/utils/createProvidersArray.js | 2 +- .../admin/src/pages/Roles/CreatePage/index.js | 2 +- .../admin/src/pages/Roles/EditPage/index.js | 2 +- .../pages/Roles/EditPage/tests/index.test.js | 13 +- .../Roles/ListPage/components/TableBody.js | 9 +- .../admin/src/pages/Roles/ListPage/index.js | 4 +- .../pages/Roles/ListPage/tests/index.test.js | 4 +- .../admin/src/utils/axiosInstance.js | 8 +- .../admin/src/utils/cleanPermissions.js | 2 +- .../admin/src/utils/formatPolicies.js | 2 +- .../admin/src/utils/getRequestURL.js | 2 +- .../admin/src/utils/getTrad.js | 2 +- .../users-permissions/jest.config.front.js | 2 +- .../plugins/users-permissions/jest.config.js | 2 +- .../plugins/users-permissions/package.json | 1 - .../server/bootstrap/grant-config.js | 2 +- .../server/bootstrap/index.js | 78 ++--- .../server/controllers/auth.js | 5 +- .../controllers/content-manager-user.js | 16 +- .../server/controllers/settings.js | 2 +- .../server/controllers/user.js | 2 +- .../server/controllers/validation/auth.js | 15 +- .../controllers/validation/email-template.js | 3 +- .../server/controllers/validation/user.js | 20 +- .../graphql/mutations/auth/change-password.js | 5 +- .../graphql/mutations/auth/forgot-password.js | 5 +- .../server/graphql/mutations/auth/login.js | 5 +- .../server/graphql/mutations/auth/register.js | 5 +- .../graphql/mutations/auth/reset-password.js | 5 +- .../mutations/crud/role/create-role.js | 5 +- .../mutations/crud/role/delete-role.js | 5 +- .../mutations/crud/role/update-role.js | 5 +- .../mutations/crud/user/create-user.js | 5 +- .../mutations/crud/user/delete-user.js | 5 +- .../mutations/crud/user/update-user.js | 5 +- .../server/graphql/mutations/index.js | 2 +- .../server/graphql/types/index.js | 2 +- .../server/middlewares/rateLimit.js | 44 +-- .../users-permissions/server/register.js | 5 +- .../users-permissions/server/services/jwt.js | 20 +- .../server/services/providers-registry.js | 71 ++-- .../server/services/providers.js | 10 +- .../users-permissions/server/services/role.js | 14 +- .../users-permissions/server/services/user.js | 2 +- .../server/services/users-permissions.js | 24 +- .../server/strategies/users-permissions.js | 4 +- .../users-permissions/server/utils/index.js | 2 +- .../tests/admin/roles-api.test.e2e.js | 2 +- .../tests/content-api/auth.test.e2e.js | 4 +- .../tests/content-api/users-api.test.e2e.js | 5 +- .../tests/users-graphql.test.e2e.js | 6 +- .../providers/email-amazon-ses/lib/index.js | 3 +- packages/providers/email-mailgun/lib/index.js | 6 +- .../providers/email-sendgrid/lib/index.js | 2 +- .../providers/email-sendmail/lib/index.js | 2 +- .../providers/upload-cloudinary/lib/index.js | 17 +- packages/providers/upload-local/lib/index.js | 9 +- .../lib/normalizeOptions.js | 2 +- .../lib/transformers/import.js | 2 +- .../babel-plugin-switch-ee-ce/lib/utils.js | 14 +- .../babel-plugin-switch-ee-ce/package.json | 10 +- packages/utils/logger/lib/formats/index.js | 7 +- .../utils/logger/lib/formats/level-filter.js | 2 +- .../utils/logger/lib/formats/log-errors.js | 2 +- .../generators/schemas/attributes.test.js | 4 +- .../generators/schemas/global.test.js | 2 +- .../lib/admin/create-tsconfig-file.js | 2 +- .../utils/typescript/lib/compilers/watch.js | 8 +- .../lib/generators/schemas/attributes.js | 169 ++-------- .../lib/generators/schemas/global.js | 40 +-- .../lib/generators/schemas/imports.js | 2 +- .../lib/generators/schemas/index.js | 200 ++++++------ .../lib/generators/schemas/mappers.js | 131 ++++++++ .../lib/generators/schemas/schema.js | 64 ++-- .../lib/generators/schemas/utils.js | 34 +- .../lib/utils/report-diagnostics.js | 2 +- .../lib/utils/resolve-config-options.js | 2 +- .../add-missing-keys-to-other-language.js | 12 +- .../find-duplicated-translation.js | 15 +- .../merge-duplicated-translations/index.js | 30 +- .../front/reorder-admin-translation-files.js | 12 +- ...add-missing-keys-to-other-language.test.js | 4 +- scripts/front/utils/search-files-content.js | 13 +- scripts/front/utils/translation-files.js | 8 +- scripts/link.js | 8 +- scripts/open-api/serve.js | 2 +- scripts/unlink.js | 8 +- test/create-test-app.js | 9 +- test/e2e.js | 11 +- test/helpers/agent.js | 12 +- test/helpers/auth.js | 2 +- test/helpers/builder/action-registry.js | 2 +- test/helpers/builder/context.js | 2 +- test/helpers/models.js | 16 +- test/helpers/request.js | 4 +- test/helpers/test-app-generator.js | 4 +- test/helpers/utils.js | 17 +- test/helpers/waitRestart.js | 10 +- test/unit.setup.js | 12 +- yarn.lock | 86 ++--- 1307 files changed, 6323 insertions(+), 7034 deletions(-) create mode 100644 packages/utils/typescript/lib/generators/schemas/mappers.js diff --git a/.eslintrc.back.js b/.eslintrc.back.js index f75e9cfbe3..cbf9d11785 100644 --- a/.eslintrc.back.js +++ b/.eslintrc.back.js @@ -6,12 +6,31 @@ module.exports = { strapi: false, }, rules: { - 'node/no-unpublished-require': 'off', - 'no-process-exit': 'off', - 'node/exports-style': ['error', 'module.exports'], - 'node/no-new-require': 'error', - 'node/no-path-concat': 'error', - 'node/no-callback-literal': 'error', - 'node/handle-callback-err': 'error', + 'import/no-dynamic-require': 'off', + 'global-require': 'off', + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: [ + 'packages/admin-test-utils/**/*.js', + 'packages/generators/admin/**/*.js', + 'scripts/**/*.js', + '**/test/**/*.js', + '**/tests/**/*.js', + '**/__tests__/**/*.js', + '**/__mocks__/**/*.js', + ], + }, + ], + 'prefer-destructuring': ['error', { AssignmentExpression: { array: false } }], + eqeqeq: 'warn', + 'no-underscore-dangle': 'warn', + 'no-use-before-define': 'warn', + 'no-param-reassign': 'warn', + 'no-continue': 'warn', + 'no-process-exit': 'warn', + 'no-plusplus': 'warn', + 'no-loop-func': 'warn', + 'guard-for-in': 'warn', }, }; diff --git a/.eslintrc.front.js b/.eslintrc.front.js index 4dc9f78fd6..0ef1892b73 100644 --- a/.eslintrc.front.js +++ b/.eslintrc.front.js @@ -1,13 +1,6 @@ module.exports = { - parser: 'babel-eslint', - extends: [ - 'airbnb', - 'eslint:recommended', - 'plugin:react/recommended', - 'plugin:redux-saga/recommended', - 'prettier', - ], - plugins: ['react', 'redux-saga', 'react-hooks', 'import', 'jsx-a11y'], + parser: '@babel/eslint-parser', + extends: ['@strapi/eslint-config/front'], env: { browser: true, commonjs: true, @@ -16,11 +9,10 @@ module.exports = { mocha: true, }, parserOptions: { - ecmaVersion: 2018, - ecmaFeatures: { - jsx: true, + requireConfigFile: false, + babelOptions: { + presets: ['@babel/preset-react'], }, - sourceType: 'module', }, globals: { strapi: false, @@ -39,86 +31,7 @@ module.exports = { }, settings: { react: { - version: '16.5.2', + version: 'detect', }, }, - rules: { - 'import/no-unresolved': 0, - 'generator-star-spacing': 0, - 'no-console': 0, - 'require-atomic-updates': 0, - 'react-hooks/rules-of-hooks': 'error', - 'react-hooks/exhaustive-deps': 'error', - 'arrow-body-style': 0, - 'arrow-parens': 0, - camelcase: 0, - 'comma-dangle': 0, - 'consistent-return': [ - 2, - { - treatUndefinedAsUnspecified: true, - }, - ], - 'template-curly-spacing': 0, - '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, - 'import/prefer-default-export': 'off', - '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 }], - 'one-var': ['error', 'never'], - '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/no-unused-prop-types': 2, - 'react/jsx-props-no-spreading': 0, - 'react/jsx-one-expression-per-line': 0, - 'react/state-in-constructor': 0, - 'react/static-property-placement': 0, - 'react/display-name': 0, - 'react/jsx-wrap-multilines': 0, - }, }; diff --git a/.github/actions/check-pr-status/__tests__/action.test.js b/.github/actions/check-pr-status/__tests__/action.test.js index 3a32891a2e..0e598ed55a 100644 --- a/.github/actions/check-pr-status/__tests__/action.test.js +++ b/.github/actions/check-pr-status/__tests__/action.test.js @@ -6,7 +6,7 @@ jest.mock('@actions/core'); const github = require('@actions/github'); const core = require('@actions/core'); -test.each(action.BLOCKING_LABELS)('Test blocking labels %s', async label => { +test.each(action.BLOCKING_LABELS)('Test blocking labels %s', async (label) => { github.context = { payload: { pull_request: { diff --git a/.github/actions/check-pr-status/index.js b/.github/actions/check-pr-status/index.js index 86849c6750..099172b61e 100644 --- a/.github/actions/check-pr-status/index.js +++ b/.github/actions/check-pr-status/index.js @@ -7,20 +7,20 @@ async function main() { try { const labels = github.context.payload.pull_request?.labels ?? []; - const blockingLabels = labels.filter(label => BLOCKING_LABELS.includes(label.name)); + const blockingLabels = labels.filter((label) => BLOCKING_LABELS.includes(label.name)); if (blockingLabels.length > 0) { core.setFailed( `The PR has been labelled with a blocking label (${blockingLabels - .map(label => label.name) + .map((label) => label.name) .join(', ')}).` ); return; } - const sourceLabelCount = labels.filter(label => label.name.startsWith('source: ')).length; - const issueLabelCount = labels.filter(label => label.name.startsWith('pr: ')).length; + const sourceLabelCount = labels.filter((label) => label.name.startsWith('source: ')).length; + const issueLabelCount = labels.filter((label) => label.name.startsWith('pr: ')).length; if (sourceLabelCount !== 1) { core.setFailed(`The PR must have one and only one 'source:' label.`); diff --git a/.prettierrc.js b/.prettierrc.js index 102e3fa4b2..1613e2a6ef 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -5,4 +5,5 @@ module.exports = { tabWidth: 2, trailingComma: 'es5', printWidth: 100, + arrowParens: 'always', }; diff --git a/examples/getstarted/config/src/response-handlers.js b/examples/getstarted/config/src/response-handlers.js index 72b34df02d..2ad17f9b8a 100644 --- a/examples/getstarted/config/src/response-handlers.js +++ b/examples/getstarted/config/src/response-handlers.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - '404': async (/* ctx */) => { + 404: async (/* ctx */) => { // return ctx.notFound('My custom message 404'); }, }; diff --git a/examples/getstarted/src/api/address/middlewares/address-middleware.js b/examples/getstarted/src/api/address/middlewares/address-middleware.js index baeae56c18..9e31b84eb3 100644 --- a/examples/getstarted/src/api/address/middlewares/address-middleware.js +++ b/examples/getstarted/src/api/address/middlewares/address-middleware.js @@ -1,4 +1,4 @@ -module.exports = options => { +module.exports = (options) => { return (ctx, next) => { ctx.set('X-Strapi-Test', 'Address Middleware'); return next(); diff --git a/examples/getstarted/src/api/address/services/address.js b/examples/getstarted/src/api/address/services/address.js index c394b7fa86..f639b9695d 100644 --- a/examples/getstarted/src/api/address/services/address.js +++ b/examples/getstarted/src/api/address/services/address.js @@ -4,7 +4,7 @@ module.exports = createCoreService('api::address.address', { async find(...args) { const { results, pagination } = await super.find(...args); - results.forEach(result => { + results.forEach((result) => { result.counter = 1; }); diff --git a/examples/getstarted/src/extensions/users-permissions/strapi-server.js b/examples/getstarted/src/extensions/users-permissions/strapi-server.js index 235100b090..9ad0863dc0 100644 --- a/examples/getstarted/src/extensions/users-permissions/strapi-server.js +++ b/examples/getstarted/src/extensions/users-permissions/strapi-server.js @@ -1,3 +1,3 @@ -module.exports = plugin => { +module.exports = (plugin) => { return plugin; }; diff --git a/examples/getstarted/src/plugins/myplugin/admin/src/index.js b/examples/getstarted/src/plugins/myplugin/admin/src/index.js index 44d19676d8..f00a4b5125 100644 --- a/examples/getstarted/src/plugins/myplugin/admin/src/index.js +++ b/examples/getstarted/src/plugins/myplugin/admin/src/index.js @@ -29,7 +29,7 @@ export default { bootstrap() {}, async registerTrads({ locales }) { const importedTrads = await Promise.all( - locales.map(locale => { + locales.map((locale) => { return import( /* webpackChunkName: "[pluginId]-[request]" */ `./translations/${locale}.json` ) diff --git a/examples/getstarted/src/plugins/myplugin/admin/src/utils/getTrad.js b/examples/getstarted/src/plugins/myplugin/admin/src/utils/getTrad.js index a2b8632a8d..d0a071b26a 100644 --- a/examples/getstarted/src/plugins/myplugin/admin/src/utils/getTrad.js +++ b/examples/getstarted/src/plugins/myplugin/admin/src/utils/getTrad.js @@ -1,5 +1,5 @@ import pluginId from '../pluginId'; -const getTrad = id => `${pluginId}.${id}`; +const getTrad = (id) => `${pluginId}.${id}`; export default getTrad; diff --git a/examples/getstarted/src/plugins/myplugin/server/config/index.js b/examples/getstarted/src/plugins/myplugin/server/config/index.js index 46517110c5..d16884e338 100644 --- a/examples/getstarted/src/plugins/myplugin/server/config/index.js +++ b/examples/getstarted/src/plugins/myplugin/server/config/index.js @@ -4,7 +4,7 @@ module.exports = { default: { testConf: 1, }, - validator: config => { + validator: (config) => { if (typeof config.testConf !== 'number') { throw new Error('testConfig has to be a number'); } diff --git a/examples/kitchensink/src/admin/app.example.js b/examples/kitchensink/src/admin/app.example.js index d4278b95e4..aa8cbb54a7 100644 --- a/examples/kitchensink/src/admin/app.example.js +++ b/examples/kitchensink/src/admin/app.example.js @@ -2,8 +2,7 @@ import theme from './extensions/theme'; const config = { auth: { - logo: - 'https://images.unsplash.com/photo-1593642634367-d91a135587b5?ixid=MnwxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=750&q=80', + logo: 'https://images.unsplash.com/photo-1593642634367-d91a135587b5?ixid=MnwxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=750&q=80', }, head: { favicon: @@ -12,8 +11,7 @@ const config = { }, locales: ['fr', 'de'], menu: { - logo: - 'https://images.unsplash.com/photo-1593642634367-d91a135587b5?ixid=MnwxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=750&q=80', + logo: 'https://images.unsplash.com/photo-1593642634367-d91a135587b5?ixid=MnwxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=750&q=80', }, theme, translations: { @@ -29,7 +27,7 @@ const config = { notifications: { release: false }, }; -const bootstrap = app => { +const bootstrap = (app) => { console.log(app); }; diff --git a/examples/kitchensink/src/admin/app.js b/examples/kitchensink/src/admin/app.js index 417194815e..387cea3632 100644 --- a/examples/kitchensink/src/admin/app.js +++ b/examples/kitchensink/src/admin/app.js @@ -2,8 +2,7 @@ import theme from './extensions/theme'; const config = { auth: { - logo: - 'https://images.unsplash.com/photo-1593642634367-d91a135587b5?ixid=MnwxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=750&q=80', + logo: 'https://images.unsplash.com/photo-1593642634367-d91a135587b5?ixid=MnwxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=750&q=80', }, head: { favicon: @@ -12,8 +11,7 @@ const config = { }, locales: ['fr', 'de'], menu: { - logo: - 'https://images.unsplash.com/photo-1593642634367-d91a135587b5?ixid=MnwxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=750&q=80', + logo: 'https://images.unsplash.com/photo-1593642634367-d91a135587b5?ixid=MnwxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=750&q=80', }, theme, translations: { @@ -29,7 +27,7 @@ const config = { notifications: { release: false }, }; -const bootstrap = app => { +const bootstrap = (app) => { console.log(app); }; diff --git a/package.json b/package.json index 5a2d09cac8..b0a70b16c2 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,9 @@ "@babel/polyfill": "7.12.1" }, "devDependencies": { + "@babel/core": "7.18.10", + "@babel/eslint-parser": "7.18.9", + "@babel/preset-react": "7.18.6", "@strapi/eslint-config": "0.1.0", "@swc/core": "1.2.224", "@swc/jest": "0.2.22", @@ -84,20 +87,12 @@ "cross-env": "7.0.3", "dotenv": "14.2.0", "eslint": "8.21.0", - "eslint-config-airbnb-base": "15.0.0", - "eslint-config-prettier": "8.5.0", - "eslint-plugin-import": "2.26.0", - "eslint-plugin-jsdoc": "36.1.1", - "eslint-plugin-jsx-a11y": "6.6.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-react": "7.30.1", - "eslint-plugin-react-hooks": "4.6.0", - "eslint-plugin-redux-saga": "1.3.2", "execa": "1.0.0", "fs-extra": "10.1.0", "get-port": "5.1.1", "glob": "7.2.3", "husky": "3.1.0", + "inquirer": "8.2.4", "istanbul": "~0.4.2", "jest": "26.6.3", "jest-circus": "26.6.3", @@ -110,7 +105,7 @@ "npm-run-all": "4.1.5", "nx": "14.4.2", "plop": "2.7.6", - "prettier": "1.19.1", + "prettier": "2.7.1", "qs": "6.11.0", "react-test-renderer": "17.0.2", "request": "2.88.2", diff --git a/packages/admin-test-utils/lib/fixtures/store/index.js b/packages/admin-test-utils/lib/fixtures/store/index.js index 4c9ac95f14..4211451569 100644 --- a/packages/admin-test-utils/lib/fixtures/store/index.js +++ b/packages/admin-test-utils/lib/fixtures/store/index.js @@ -1,6 +1,5 @@ 'use strict'; -// eslint-disable-next-line node/no-extraneous-require const { combineReducers, createStore } = require('redux'); const reducers = { diff --git a/packages/admin-test-utils/lib/setup/strapi.js b/packages/admin-test-utils/lib/setup/strapi.js index a6421d14cf..3147b86eb6 100644 --- a/packages/admin-test-utils/lib/setup/strapi.js +++ b/packages/admin-test-utils/lib/setup/strapi.js @@ -25,4 +25,4 @@ global.strapi = { global.prompt = jest.fn(); -global.URL.createObjectURL = file => `http://localhost:4000/assets/${file.name}`; +global.URL.createObjectURL = (file) => `http://localhost:4000/assets/${file.name}`; diff --git a/packages/admin-test-utils/lib/setup/test-bundler.js b/packages/admin-test-utils/lib/setup/test-bundler.js index 03207ab94a..fb6c50c8e8 100644 --- a/packages/admin-test-utils/lib/setup/test-bundler.js +++ b/packages/admin-test-utils/lib/setup/test-bundler.js @@ -1,7 +1,6 @@ 'use strict'; // needed for regenerator-runtime -// (ES7 generator support is required by redux-saga) require('@babel/polyfill'); const noop = () => {}; diff --git a/packages/admin-test-utils/package.json b/packages/admin-test-utils/package.json index fa82dd43eb..d921cafba4 100644 --- a/packages/admin-test-utils/package.json +++ b/packages/admin-test-utils/package.json @@ -24,6 +24,9 @@ "@testing-library/jest-dom": "5.16.5", "jest-styled-components": "7.0.2" }, + "peerDependencies": { + "redux": "^4.0.1" + }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, diff --git a/packages/cli/create-strapi-app/create-strapi-app.js b/packages/cli/create-strapi-app/create-strapi-app.js index ce39878732..50188fb8b4 100644 --- a/packages/cli/create-strapi-app/create-strapi-app.js +++ b/packages/cli/create-strapi-app/create-strapi-app.js @@ -39,7 +39,7 @@ program .option('--template ', 'Specify a Strapi template') .option('--ts, --typescript', 'Use TypeScript to generate the project') .description('create a new application') - .action(directory => { + .action((directory) => { initProject(directory, program); }) .parse(process.argv); @@ -62,7 +62,7 @@ async function initProject(projectName, program) { await checkInstallPath(resolve(projectName)); } - const hasDatabaseOptions = databaseOptions.some(opt => program[opt]); + const hasDatabaseOptions = databaseOptions.some((opt) => program[opt]); if (program.quickstart && hasDatabaseOptions) { console.error( diff --git a/packages/cli/create-strapi-starter/create-strapi-starter.js b/packages/cli/create-strapi-starter/create-strapi-starter.js index 4e27261c30..919349bf52 100644 --- a/packages/cli/create-strapi-starter/create-strapi-starter.js +++ b/packages/cli/create-strapi-starter/create-strapi-starter.js @@ -57,7 +57,9 @@ function generateApp(projectArgs, programArgs) { } async function initProject(projectArgs, program) { - const hasIncompatibleQuickstartOptions = incompatibleQuickstartOptions.some(opt => program[opt]); + const hasIncompatibleQuickstartOptions = incompatibleQuickstartOptions.some( + (opt) => program[opt] + ); if (program.quickstart && hasIncompatibleQuickstartOptions) { console.error( @@ -96,7 +98,7 @@ async function initProject(projectArgs, program) { try { program.parse(process.argv); } catch (err) { - if (err.exitCode && err.exitCode != 0) { + if (err.exitCode && err.exitCode !== 0) { program.outputHelp(); } } diff --git a/packages/cli/create-strapi-starter/utils/build-starter.js b/packages/cli/create-strapi-starter/utils/build-starter.js index e76c084a89..8b01c42f08 100644 --- a/packages/cli/create-strapi-starter/utils/build-starter.js +++ b/packages/cli/create-strapi-starter/utils/build-starter.js @@ -72,10 +72,7 @@ async function installWithLogs(path, options) { const installPrefix = chalk.yellow('Installing dependencies:'); const loader = ora(installPrefix).start(); const logInstall = (chunk = '') => { - loader.text = `${installPrefix} ${chunk - .toString() - .split('\n') - .join(' ')}`; + loader.text = `${installPrefix} ${chunk.toString().split('\n').join(' ')}`; }; const runner = runInstall(path, options); @@ -94,7 +91,7 @@ async function installWithLogs(path, options) { * @param {boolean} options.useYarn Use yarn instead of npm */ async function getStarterInfo(starter, { useYarn } = {}) { - const isLocalStarter = ['./', '../', '/'].some(filePrefix => starter.startsWith(filePrefix)); + const isLocalStarter = ['./', '../', '/'].some((filePrefix) => starter.startsWith(filePrefix)); let starterPath; let starterParentPath; @@ -125,12 +122,8 @@ async function getStarterInfo(starter, { useYarn } = {}) { */ module.exports = async function buildStarter({ projectName, starter }, program) { const hasYarnInstalled = await hasYarn(); - const { - isLocalStarter, - starterPath, - starterParentPath, - starterPackageInfo, - } = await getStarterInfo(starter, { useYarn: hasYarnInstalled }); + const { isLocalStarter, starterPath, starterParentPath, starterPackageInfo } = + await getStarterInfo(starter, { useYarn: hasYarnInstalled }); // Project directory const rootPath = resolve(projectName); diff --git a/packages/core/admin/admin/src/StrapiApp.js b/packages/core/admin/admin/src/StrapiApp.js index fbc6a8e9c6..cca63eb768 100644 --- a/packages/core/admin/admin/src/StrapiApp.js +++ b/packages/core/admin/admin/src/StrapiApp.js @@ -61,15 +61,15 @@ class StrapiApp { }; } - addComponents = components => { + addComponents = (components) => { if (Array.isArray(components)) { - components.map(compo => this.library.components.add(compo)); + components.map((compo) => this.library.components.add(compo)); } else { this.library.components.add(components); } }; - addCorePluginMenuLink = link => { + addCorePluginMenuLink = (link) => { const stringifiedLink = JSON.stringify(link); invariant(link.to, `link.to should be defined for ${stringifiedLink}`); @@ -89,15 +89,15 @@ class StrapiApp { this.menu.push(link); }; - addFields = fields => { + addFields = (fields) => { if (Array.isArray(fields)) { - fields.map(field => this.library.fields.add(field)); + fields.map((field) => this.library.fields.add(field)); } else { this.library.fields.add(fields); } }; - addMenuLink = link => { + addMenuLink = (link) => { const stringifiedLink = JSON.stringify(link); invariant(link.to, `link.to should be defined for ${stringifiedLink}`); @@ -121,14 +121,14 @@ class StrapiApp { this.menu.push(link); }; - addMiddlewares = middlewares => { - middlewares.forEach(middleware => { + addMiddlewares = (middlewares) => { + middlewares.forEach((middleware) => { this.middlewares.add(middleware); }); }; - addReducers = reducers => { - Object.keys(reducers).forEach(reducerName => { + addReducers = (reducers) => { + Object.keys(reducers).forEach((reducerName) => { this.reducers.add(reducerName, reducers[reducerName]); }); }; @@ -156,13 +156,13 @@ class StrapiApp { invariant(this.settings[sectionId], 'The section does not exist'); invariant(Array.isArray(links), 'TypeError expected links to be an array'); - links.forEach(link => { + links.forEach((link) => { this.addSettingsLink(sectionId, link); }); }; async bootstrap() { - Object.keys(this.appPlugins).forEach(plugin => { + Object.keys(this.appPlugins).forEach((plugin) => { const bootstrap = this.appPlugins[plugin].bootstrap; if (bootstrap) { @@ -208,7 +208,7 @@ class StrapiApp { if (this.customConfigurations?.locales) { this.configurations.locales = [ 'en', - ...this.customConfigurations.locales?.filter(loc => loc !== 'en'), + ...(this.customConfigurations.locales?.filter((loc) => loc !== 'en') || []), ]; } @@ -237,7 +237,7 @@ class StrapiApp { } }; - createHook = name => { + createHook = (name) => { this.hooksDict[name] = createHook(); }; @@ -253,7 +253,7 @@ class StrapiApp { this.settings[section.id] = { ...section, links: [] }; - links.forEach(link => { + links.forEach((link) => { this.addSettingsLink(section.id, link); }); }; @@ -274,12 +274,12 @@ class StrapiApp { } }; - getPlugin = pluginId => { + getPlugin = (pluginId) => { return this.plugins[pluginId]; }; async initialize() { - Object.keys(this.appPlugins).forEach(plugin => { + Object.keys(this.appPlugins).forEach((plugin) => { this.appPlugins[plugin].register({ addComponents: this.addComponents, addCorePluginMenuLink: this.addCorePluginMenuLink, @@ -319,7 +319,7 @@ class StrapiApp { * @returns {Object} The imported admin translations */ async loadAdminTrads() { - const arrayOfPromises = this.configurations.locales.map(locale => { + const arrayOfPromises = this.configurations.locales.map((locale) => { return import(/* webpackChunkName: "[request]" */ `./translations/${locale}.json`) .then(({ default: data }) => { return { data, locale }; @@ -350,7 +350,7 @@ class StrapiApp { const adminTranslations = await this.loadAdminTrads(); const arrayOfPromises = Object.keys(this.appPlugins) - .map(plugin => { + .map((plugin) => { const registerTrads = this.appPlugins[plugin].registerTrads; if (registerTrads) { @@ -359,7 +359,7 @@ class StrapiApp { return null; }) - .filter(a => a); + .filter((a) => a); const pluginsTrads = await Promise.all(arrayOfPromises); const mergedTrads = pluginsTrads.reduce((acc, currentPluginTrads) => { @@ -369,7 +369,7 @@ class StrapiApp { return acc1; }, {}); - Object.keys(pluginTrads).forEach(locale => { + Object.keys(pluginTrads).forEach((locale) => { acc[locale] = { ...acc[locale], ...pluginTrads[locale] }; }); @@ -399,7 +399,7 @@ class StrapiApp { this.hooksDict[name].register(fn); }; - registerPlugin = pluginConf => { + registerPlugin = (pluginConf) => { const plugin = Plugin(pluginConf); this.plugins[plugin.pluginId] = plugin; @@ -414,7 +414,7 @@ class StrapiApp { : this.hooksDict[name].runWaterfall(initialValue, store); }; - runHookParallel = name => this.hooksDict[name].runParallel(); + runHookParallel = (name) => this.hooksDict[name].runParallel(); render() { const store = this.createStore(); diff --git a/packages/core/admin/admin/src/components/AuthenticatedApp/index.js b/packages/core/admin/admin/src/components/AuthenticatedApp/index.js index bbe6da4a25..04e7b3a1c5 100644 --- a/packages/core/admin/admin/src/components/AuthenticatedApp/index.js +++ b/packages/core/admin/admin/src/components/AuthenticatedApp/index.js @@ -56,9 +56,10 @@ const AuthenticatedApp = () => { }, ]); - const shouldUpdateStrapi = useMemo(() => checkLatestStrapiVersion(strapiVersion, tag_name), [ - tag_name, - ]); + const shouldUpdateStrapi = useMemo( + () => checkLatestStrapiVersion(strapiVersion, tag_name), + [tag_name] + ); useEffect(() => { if (userRoles) { diff --git a/packages/core/admin/admin/src/components/AuthenticatedApp/tests/index.test.js b/packages/core/admin/admin/src/components/AuthenticatedApp/tests/index.test.js index 757b96b065..476b32bc42 100644 --- a/packages/core/admin/admin/src/components/AuthenticatedApp/tests/index.test.js +++ b/packages/core/admin/admin/src/components/AuthenticatedApp/tests/index.test.js @@ -35,9 +35,21 @@ jest.mock('../utils/api', () => ({ fetchUserRoles: jest.fn(), })); -jest.mock('../../PluginsInitializer', () => () =>
PluginsInitializer
); +jest.mock( + '../../PluginsInitializer', + () => + function () { + return
PluginsInitializer
; + } +); // eslint-disable-next-line react/prop-types -jest.mock('../../RBACProvider', () => ({ children }) =>
{children}
); +jest.mock( + '../../RBACProvider', + () => + function ({ children }) { + return
{children}
; + } +); const queryClient = new QueryClient({ defaultOptions: { diff --git a/packages/core/admin/admin/src/components/AuthenticatedApp/utils/api.js b/packages/core/admin/admin/src/components/AuthenticatedApp/utils/api.js index fab3208161..2f03015bb4 100644 --- a/packages/core/admin/admin/src/components/AuthenticatedApp/utils/api.js +++ b/packages/core/admin/admin/src/components/AuthenticatedApp/utils/api.js @@ -6,7 +6,7 @@ import packageJSON from '../../../../../package.json'; const strapiVersion = packageJSON.version; const showUpdateNotif = !JSON.parse(localStorage.getItem('STRAPI_UPDATE_NOTIF')); -const fetchStrapiLatestRelease = async toggleNotification => { +const fetchStrapiLatestRelease = async (toggleNotification) => { try { const { data: { tag_name }, diff --git a/packages/core/admin/admin/src/components/AutoReloadOverlayBlockerProvider/index.js b/packages/core/admin/admin/src/components/AutoReloadOverlayBlockerProvider/index.js index a0eddbb254..9973715937 100644 --- a/packages/core/admin/admin/src/components/AutoReloadOverlayBlockerProvider/index.js +++ b/packages/core/admin/admin/src/components/AutoReloadOverlayBlockerProvider/index.js @@ -13,7 +13,7 @@ const AutoReloadOverlayBlockerProvider = ({ children }) => { const lockAppWithAutoreload = (config = undefined) => { setIsOpen(true); setConfig(config); - setState(prev => ({ ...prev, start: Date.now() })); + setState((prev) => ({ ...prev, start: Date.now() })); }; const unlockAppWithAutoreload = () => { @@ -36,7 +36,7 @@ const AutoReloadOverlayBlockerProvider = ({ children }) => { return null; } - setState(prev => ({ ...prev, elapsed: Math.round(Date.now() - prev.start) / 1000 })); + setState((prev) => ({ ...prev, elapsed: Math.round(Date.now() - prev.start) / 1000 })); return null; }, 1000); diff --git a/packages/core/admin/admin/src/components/ConfigurationsProvider/reducer.js b/packages/core/admin/admin/src/components/ConfigurationsProvider/reducer.js index 5f2e5d5921..d0696530e7 100644 --- a/packages/core/admin/admin/src/components/ConfigurationsProvider/reducer.js +++ b/packages/core/admin/admin/src/components/ConfigurationsProvider/reducer.js @@ -12,7 +12,7 @@ const initialState = { }; const reducer = (state = initialState, action) => - produce(state, draftState => { + produce(state, (draftState) => { switch (action.type) { case 'UPDATE_PROJECT_SETTINGS': { Object.assign(draftState, action.values); diff --git a/packages/core/admin/admin/src/components/GuidedTour/Homepage/components/Stepper.js b/packages/core/admin/admin/src/components/GuidedTour/Homepage/components/Stepper.js index f3409be7ac..a0c032d0b4 100644 --- a/packages/core/admin/admin/src/components/GuidedTour/Homepage/components/Stepper.js +++ b/packages/core/admin/admin/src/components/GuidedTour/Homepage/components/Stepper.js @@ -19,7 +19,7 @@ const getType = (activeSectionIndex, index) => { }; const StepperHomepage = ({ sections, currentSectionKey }) => { - const activeSectionIndex = sections.findIndex(section => section.key === currentSectionKey); + const activeSectionIndex = sections.findIndex((section) => section.key === currentSectionKey); return ( diff --git a/packages/core/admin/admin/src/components/GuidedTour/Homepage/components/tests/Stepper.test.js b/packages/core/admin/admin/src/components/GuidedTour/Homepage/components/tests/Stepper.test.js index 513af74fa2..d42c860ff5 100644 --- a/packages/core/admin/admin/src/components/GuidedTour/Homepage/components/tests/Stepper.test.js +++ b/packages/core/admin/admin/src/components/GuidedTour/Homepage/components/tests/Stepper.test.js @@ -31,7 +31,7 @@ const sections = [ }, ]; -const App = children => ( +const App = (children) => ( {children} diff --git a/packages/core/admin/admin/src/components/GuidedTour/Homepage/index.js b/packages/core/admin/admin/src/components/GuidedTour/Homepage/index.js index 367bb69293..d72871d541 100644 --- a/packages/core/admin/admin/src/components/GuidedTour/Homepage/index.js +++ b/packages/core/admin/admin/src/components/GuidedTour/Homepage/index.js @@ -29,12 +29,12 @@ const GuidedTourHomepage = () => { ), })); - const enrichedSections = sections.map(section => ({ + const enrichedSections = sections.map((section) => ({ isDone: Object.entries(guidedTourState[section.key]).every(([, value]) => value), ...section, })); - const activeSection = enrichedSections.find(section => !section.isDone)?.key; + const activeSection = enrichedSections.find((section) => !section.isDone)?.key; const handleSkip = () => { setSkipped(true); diff --git a/packages/core/admin/admin/src/components/GuidedTour/Modal/components/Content.js b/packages/core/admin/admin/src/components/GuidedTour/Modal/components/Content.js index be1ad8f7d2..09bcd0dafc 100644 --- a/packages/core/admin/admin/src/components/GuidedTour/Modal/components/Content.js +++ b/packages/core/admin/admin/src/components/GuidedTour/Modal/components/Content.js @@ -18,7 +18,7 @@ const Content = ({ id, defaultMessage }) => { {formatMessage( { id, defaultMessage }, { - documentationLink: children => ( + documentationLink: (children) => ( { {children} ), - b: children => {children}, - p: children => {children}, - light: children => {children}, - ul: children => ( + b: (children) => {children}, + p: (children) => {children}, + light: (children) => {children}, + ul: (children) => (
    {children}
), - li: children => {children}, + li: (children) => {children}, } )} diff --git a/packages/core/admin/admin/src/components/GuidedTour/Modal/components/Modal.js b/packages/core/admin/admin/src/components/GuidedTour/Modal/components/Modal.js index e501a65ac0..f60f5b71dd 100644 --- a/packages/core/admin/admin/src/components/GuidedTour/Modal/components/Modal.js +++ b/packages/core/admin/admin/src/components/GuidedTour/Modal/components/Modal.js @@ -36,7 +36,7 @@ const Modal = ({ onClose, onSkip, children, hideSkip }) => { spacing={8} role="dialog" aria-modal - onClick={e => e.stopPropagation()} + onClick={(e) => e.stopPropagation()} > { setSkipped, } = useGuidedTour(); const [isVisible, setIsVisible] = useState(currentStep); - const [ - { stepContent, sectionIndex, stepIndex, hasSectionAfter, hasStepAfter }, - dispatch, - ] = useReducer(reducer, initialState); + const [{ stepContent, sectionIndex, stepIndex, hasSectionAfter, hasStepAfter }, dispatch] = + useReducer(reducer, initialState); const { trackUsage } = useTracking(); useEffect(() => { diff --git a/packages/core/admin/admin/src/components/GuidedTour/Modal/reducer.js b/packages/core/admin/admin/src/components/GuidedTour/Modal/reducer.js index e71250eb0a..da50f47332 100644 --- a/packages/core/admin/admin/src/components/GuidedTour/Modal/reducer.js +++ b/packages/core/admin/admin/src/components/GuidedTour/Modal/reducer.js @@ -10,7 +10,7 @@ export const initialState = { }; const reducer = (state = initialState, action) => - produce(state, draftState => { + produce(state, (draftState) => { switch (action.type) { case 'UPDATE_MODAL': { draftState.stepContent = action.content; diff --git a/packages/core/admin/admin/src/components/GuidedTour/index.js b/packages/core/admin/admin/src/components/GuidedTour/index.js index c68af686a9..cab615509c 100644 --- a/packages/core/admin/admin/src/components/GuidedTour/index.js +++ b/packages/core/admin/admin/src/components/GuidedTour/index.js @@ -15,7 +15,7 @@ const GuidedTour = ({ children }) => { init ); - const setCurrentStep = step => { + const setCurrentStep = (step) => { // if step is null it is intentional, we need to dispatch it if (step !== null) { const isStepAlreadyDone = get(guidedTourState, step); @@ -34,7 +34,7 @@ const GuidedTour = ({ children }) => { }); }; - const setGuidedTourVisibility = value => { + const setGuidedTourVisibility = (value) => { dispatch({ type: 'SET_GUIDED_TOUR_VISIBILITY', value, @@ -51,7 +51,7 @@ const GuidedTour = ({ children }) => { }); }; - const startSection = sectionName => { + const startSection = (sectionName) => { const sectionSteps = guidedTourState[sectionName]; if (sectionSteps) { @@ -67,7 +67,7 @@ const GuidedTour = ({ children }) => { return null; }; - const setSkipped = value => { + const setSkipped = (value) => { persistStateToLocaleStorage.setSkipped(value); dispatch({ diff --git a/packages/core/admin/admin/src/components/GuidedTour/init.js b/packages/core/admin/admin/src/components/GuidedTour/init.js index 176fe444f1..4aadedce0b 100644 --- a/packages/core/admin/admin/src/components/GuidedTour/init.js +++ b/packages/core/admin/admin/src/components/GuidedTour/init.js @@ -5,14 +5,14 @@ import persistStateToLocaleStorage, { SKIPPED, } from './utils/persistStateToLocaleStorage'; -const init = initialState => { +const init = (initialState) => { const copyInitialState = { ...initialState }; const guidedTourLocaleStorage = persistStateToLocaleStorage.get(COMPLETED_STEPS); const currentStepLocaleStorage = persistStateToLocaleStorage.get(CURRENT_STEP); const skippedLocaleStorage = persistStateToLocaleStorage.get(SKIPPED); if (guidedTourLocaleStorage) { - guidedTourLocaleStorage.forEach(step => { + guidedTourLocaleStorage.forEach((step) => { const [sectionName, stepName] = step.split('.'); set(copyInitialState, ['guidedTourState', sectionName, stepName], true); }); diff --git a/packages/core/admin/admin/src/components/GuidedTour/reducer.js b/packages/core/admin/admin/src/components/GuidedTour/reducer.js index 47ea171977..7887e89b5b 100644 --- a/packages/core/admin/admin/src/components/GuidedTour/reducer.js +++ b/packages/core/admin/admin/src/components/GuidedTour/reducer.js @@ -22,7 +22,7 @@ export const initialState = { }; const reducer = (state = initialState, action) => - produce(state, draftState => { + produce(state, (draftState) => { switch (action.type) { case 'SET_CURRENT_STEP': { draftState.currentStep = action.step; diff --git a/packages/core/admin/admin/src/components/GuidedTour/utils/isGuidedTourCompleted.js b/packages/core/admin/admin/src/components/GuidedTour/utils/isGuidedTourCompleted.js index d48755d6a5..2296ed7ef5 100644 --- a/packages/core/admin/admin/src/components/GuidedTour/utils/isGuidedTourCompleted.js +++ b/packages/core/admin/admin/src/components/GuidedTour/utils/isGuidedTourCompleted.js @@ -1,4 +1,4 @@ -const isGuidedTourCompleted = guidedTourState => +const isGuidedTourCompleted = (guidedTourState) => Object.entries(guidedTourState).every(([, section]) => Object.entries(section).every(([, step]) => step) ); diff --git a/packages/core/admin/admin/src/components/GuidedTour/utils/persistStateToLocaleStorage.js b/packages/core/admin/admin/src/components/GuidedTour/utils/persistStateToLocaleStorage.js index 71104a32a2..57b3dd7bb5 100644 --- a/packages/core/admin/admin/src/components/GuidedTour/utils/persistStateToLocaleStorage.js +++ b/packages/core/admin/admin/src/components/GuidedTour/utils/persistStateToLocaleStorage.js @@ -9,7 +9,7 @@ const persistStateToLocaleStorage = { localStorage.removeItem(CURRENT_STEP); localStorage.removeItem(COMPLETED_STEPS); }, - addCompletedStep: completedStep => { + addCompletedStep(completedStep) { const currentSteps = parse(localStorage.getItem(COMPLETED_STEPS))?.slice() || []; const isAlreadyStored = currentSteps.includes(completedStep); @@ -20,13 +20,13 @@ const persistStateToLocaleStorage = { currentSteps.push(completedStep); localStorage.setItem(COMPLETED_STEPS, stringify(currentSteps)); }, - addCurrentStep: currentStep => { + addCurrentStep(currentStep) { localStorage.setItem(CURRENT_STEP, stringify(currentStep)); }, - setSkipped: value => { + setSkipped(value) { localStorage.setItem(SKIPPED, stringify(value)); }, - get: item => { + get(item) { return parse(localStorage.getItem(item)); }, }; diff --git a/packages/core/admin/admin/src/components/LanguageProvider/index.js b/packages/core/admin/admin/src/components/LanguageProvider/index.js index ac0b8b591f..d94e792dc3 100644 --- a/packages/core/admin/admin/src/components/LanguageProvider/index.js +++ b/packages/core/admin/admin/src/components/LanguageProvider/index.js @@ -23,7 +23,7 @@ const LanguageProvider = ({ children, localeNames, messages }) => { window.localStorage.setItem(localStorageKey, locale); }, [locale]); - const changeLocale = locale => { + const changeLocale = (locale) => { dispatch({ type: 'CHANGE_LOCALE', locale, diff --git a/packages/core/admin/admin/src/components/LanguageProvider/init.js b/packages/core/admin/admin/src/components/LanguageProvider/init.js index 2e63937469..54d4f8b7d4 100644 --- a/packages/core/admin/admin/src/components/LanguageProvider/init.js +++ b/packages/core/admin/admin/src/components/LanguageProvider/init.js @@ -1,6 +1,6 @@ import localStorageKey from './utils/localStorageKey'; -const init = localeNames => { +const init = (localeNames) => { const languageFromLocaleStorage = window.localStorage.getItem(localStorageKey); const appLanguage = localeNames[languageFromLocaleStorage] ? languageFromLocaleStorage : 'en'; diff --git a/packages/core/admin/admin/src/components/LeftMenu/index.js b/packages/core/admin/admin/src/components/LeftMenu/index.js index 79c21683af..23b936b3b8 100644 --- a/packages/core/admin/admin/src/components/LeftMenu/index.js +++ b/packages/core/admin/admin/src/components/LeftMenu/index.js @@ -62,18 +62,18 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => { const initials = userDisplayName .split(' ') - .map(name => name.substring(0, 1)) + .map((name) => name.substring(0, 1)) .join('') .substring(0, 2); - const handleToggleUserLinks = () => setUserLinksVisible(prev => !prev); + const handleToggleUserLinks = () => setUserLinksVisible((prev) => !prev); const handleLogout = () => { auth.clearAppStorage(); handleToggleUserLinks(); }; - const handleBlur = e => { + const handleBlur = (e) => { if ( !e.currentTarget.contains(e.relatedTarget) && e.relatedTarget?.parentElement?.id !== 'main-nav-user-button' @@ -121,7 +121,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => { defaultMessage: 'Plugins', })} > - {pluginsSectionLinks.map(link => { + {pluginsSectionLinks.map((link) => { const Icon = link.icon; return ( @@ -140,7 +140,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => { defaultMessage: 'General', })} > - {generalSectionLinks.map(link => { + {generalSectionLinks.map((link) => { const LinkIcon = link.icon; return ( @@ -201,7 +201,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => { )} - setCondensed(s => !s)}> + setCondensed((s) => !s)}> {condensed ? formatMessage({ id: 'app.components.LeftMenu.expand', diff --git a/packages/core/admin/admin/src/components/Notifications/Notification/index.js b/packages/core/admin/admin/src/components/Notifications/Notification/index.js index a2a4c4cf7e..38b8138830 100644 --- a/packages/core/admin/admin/src/components/Notifications/Notification/index.js +++ b/packages/core/admin/admin/src/components/Notifications/Notification/index.js @@ -8,7 +8,8 @@ const Notification = ({ dispatch, notification }) => { const { formatMessage } = useIntl(); const { message, link, type, id, onClose, timeout, blockTransition } = notification; - const formattedMessage = msg => (typeof msg === 'string' ? msg : formatMessage(msg, msg.values)); + const formattedMessage = (msg) => + typeof msg === 'string' ? msg : formatMessage(msg, msg.values); const handleClose = useCallback(() => { if (onClose) { onClose(); @@ -66,9 +67,7 @@ const Notification = ({ dispatch, notification }) => { defaultMessage: link.label?.defaultMessage || link.label?.id || link.label, })} - ) : ( - undefined - ) + ) : undefined } onClose={handleClose} closeLabel="Close" diff --git a/packages/core/admin/admin/src/components/Notifications/index.js b/packages/core/admin/admin/src/components/Notifications/index.js index c8d6b68865..598beef842 100644 --- a/packages/core/admin/admin/src/components/Notifications/index.js +++ b/packages/core/admin/admin/src/components/Notifications/index.js @@ -8,7 +8,7 @@ import reducer, { initialState } from './reducer'; const Notifications = ({ children }) => { const [{ notifications }, dispatch] = useReducer(reducer, initialState); - const displayNotification = config => { + const displayNotification = (config) => { dispatch({ type: 'SHOW_NOTIFICATION', config, @@ -26,7 +26,7 @@ const Notifications = ({ children }) => { width={`${500 / 16}rem`} zIndex={10} > - {notifications.map(notification => { + {notifications.map((notification) => { return ( ); diff --git a/packages/core/admin/admin/src/components/Notifications/reducer.js b/packages/core/admin/admin/src/components/Notifications/reducer.js index 1d67d1696f..fbbd816df5 100644 --- a/packages/core/admin/admin/src/components/Notifications/reducer.js +++ b/packages/core/admin/admin/src/components/Notifications/reducer.js @@ -8,7 +8,7 @@ const initialState = { const notificationReducer = (state = initialState, action) => // eslint-disable-next-line consistent-return - produce(state, draftState => { + produce(state, (draftState) => { switch (action.type) { case 'SHOW_NOTIFICATION': { draftState.notifications.push({ @@ -28,7 +28,7 @@ const notificationReducer = (state = initialState, action) => break; } case 'HIDE_NOTIFICATION': { - const indexToRemove = state.notifications.findIndex(notif => notif.id === action.id); + const indexToRemove = state.notifications.findIndex((notif) => notif.id === action.id); if (indexToRemove !== -1) { draftState.notifications.splice(indexToRemove, 1); diff --git a/packages/core/admin/admin/src/components/Notifications/tests/index.test.js b/packages/core/admin/admin/src/components/Notifications/tests/index.test.js index 44ee3386e1..6ff383a5a1 100644 --- a/packages/core/admin/admin/src/components/Notifications/tests/index.test.js +++ b/packages/core/admin/admin/src/components/Notifications/tests/index.test.js @@ -108,7 +108,7 @@ describe('', () => { expect(items).toHaveLength(1); await act(async () => { - await new Promise(resolve => setTimeout(resolve, 2500)); + await new Promise((resolve) => setTimeout(resolve, 2500)); }); const foundItems = screen.queryAllByText(/simple notif/); @@ -151,7 +151,7 @@ describe('', () => { expect(items).toHaveLength(1); await act(async () => { - await new Promise(resolve => setTimeout(resolve, 2500)); + await new Promise((resolve) => setTimeout(resolve, 2500)); }); const foundItems = screen.queryAllByText(/simple notif/); diff --git a/packages/core/admin/admin/src/components/PluginsInitializer/index.js b/packages/core/admin/admin/src/components/PluginsInitializer/index.js index 8a4c1abc50..bd3a1b6c74 100644 --- a/packages/core/admin/admin/src/components/PluginsInitializer/index.js +++ b/packages/core/admin/admin/src/components/PluginsInitializer/index.js @@ -8,11 +8,13 @@ import reducer, { initialState } from './reducer'; const PluginsInitializer = () => { const { plugins: appPlugins } = useStrapiApp(); const [{ plugins }, dispatch] = useReducer(reducer, initialState, () => init(appPlugins)); - const setPlugin = useRef(pluginId => { + const setPlugin = useRef((pluginId) => { dispatch({ type: 'SET_PLUGIN_READY', pluginId }); }); - const hasApluginNotReady = Object.keys(plugins).some(plugin => plugins[plugin].isReady === false); + const hasApluginNotReady = Object.keys(plugins).some( + (plugin) => plugins[plugin].isReady === false + ); if (hasApluginNotReady) { const initializers = Object.keys(plugins).reduce((acc, current) => { diff --git a/packages/core/admin/admin/src/components/PluginsInitializer/init.js b/packages/core/admin/admin/src/components/PluginsInitializer/init.js index 50429ad16f..c73c65fa20 100644 --- a/packages/core/admin/admin/src/components/PluginsInitializer/init.js +++ b/packages/core/admin/admin/src/components/PluginsInitializer/init.js @@ -1,4 +1,4 @@ -const init = plugins => { +const init = (plugins) => { return { plugins: Object.keys(plugins).reduce((acc, current) => { acc[current] = { ...plugins[current] }; diff --git a/packages/core/admin/admin/src/components/PluginsInitializer/reducer.js b/packages/core/admin/admin/src/components/PluginsInitializer/reducer.js index d21382e503..eb5826edc9 100644 --- a/packages/core/admin/admin/src/components/PluginsInitializer/reducer.js +++ b/packages/core/admin/admin/src/components/PluginsInitializer/reducer.js @@ -7,7 +7,7 @@ const initialState = { const reducer = (state = initialState, action) => /* eslint-disable-next-line consistent-return */ - produce(state, draftState => { + produce(state, (draftState) => { switch (action.type) { case 'SET_PLUGIN_READY': { set(draftState, ['plugins', action.pluginId, 'isReady'], true); diff --git a/packages/core/admin/admin/src/components/PluginsInitializer/tests/index.test.js b/packages/core/admin/admin/src/components/PluginsInitializer/tests/index.test.js index c983d60da9..80793e5617 100644 --- a/packages/core/admin/admin/src/components/PluginsInitializer/tests/index.test.js +++ b/packages/core/admin/admin/src/components/PluginsInitializer/tests/index.test.js @@ -3,7 +3,13 @@ import { StrapiAppProvider } from '@strapi/helper-plugin'; import { render } from '@testing-library/react'; import PluginsInitializer from '../index'; -jest.mock('../../../pages/Admin', () => () =>
ADMIN
); +jest.mock( + '../../../pages/Admin', + () => + function () { + return
ADMIN
; + } +); describe('ADMIN | COMPONENTS | PluginsInitializer', () => { it('should not crash', () => { diff --git a/packages/core/admin/admin/src/components/PrivateRoute/index.js b/packages/core/admin/admin/src/components/PrivateRoute/index.js index b5cc08bf1d..9f99bff0e9 100644 --- a/packages/core/admin/admin/src/components/PrivateRoute/index.js +++ b/packages/core/admin/admin/src/components/PrivateRoute/index.js @@ -20,7 +20,7 @@ const PrivateRoute = ({ component: Component, path, ...rest }) => { return ( + render={(props) => auth.getToken() !== null ? ( ) : ( diff --git a/packages/core/admin/admin/src/components/RBACProvider/actions.js b/packages/core/admin/admin/src/components/RBACProvider/actions.js index bb1629235f..dfaba17b30 100644 --- a/packages/core/admin/admin/src/components/RBACProvider/actions.js +++ b/packages/core/admin/admin/src/components/RBACProvider/actions.js @@ -2,7 +2,7 @@ import { RESET_STORE, SET_PERMISSIONS } from './constants'; const resetStore = () => ({ type: RESET_STORE }); -const setPermissions = permissions => ({ +const setPermissions = (permissions) => ({ type: SET_PERMISSIONS, permissions, }); diff --git a/packages/core/admin/admin/src/components/RBACProvider/index.js b/packages/core/admin/admin/src/components/RBACProvider/index.js index e93e52a7d2..15ec3ed7e8 100644 --- a/packages/core/admin/admin/src/components/RBACProvider/index.js +++ b/packages/core/admin/admin/src/components/RBACProvider/index.js @@ -5,7 +5,7 @@ import PropTypes from 'prop-types'; import { resetStore, setPermissions } from './actions'; const RBACProvider = ({ children, permissions, refetchPermissions }) => { - const { allPermissions } = useSelector(state => state.rbacProvider); + const { allPermissions } = useSelector((state) => state.rbacProvider); const dispatch = useDispatch(); diff --git a/packages/core/admin/admin/src/components/RBACProvider/reducer.js b/packages/core/admin/admin/src/components/RBACProvider/reducer.js index 9f28fd9871..1730c78751 100644 --- a/packages/core/admin/admin/src/components/RBACProvider/reducer.js +++ b/packages/core/admin/admin/src/components/RBACProvider/reducer.js @@ -18,12 +18,12 @@ const initialState = { const reducer = (state = initialState, action) => // eslint-disable-next-line consistent-return - produce(state, draftState => { + produce(state, (draftState) => { switch (action.type) { case SET_PERMISSIONS: { draftState.allPermissions = action.permissions; draftState.collectionTypesRelatedPermissions = action.permissions - .filter(perm => perm.subject) + .filter((perm) => perm.subject) .reduce((acc, current) => { const { subject, action } = current; diff --git a/packages/core/admin/admin/src/components/RBACProvider/tests/reducer.test.js b/packages/core/admin/admin/src/components/RBACProvider/tests/reducer.test.js index 06a104c953..36232ee26b 100644 --- a/packages/core/admin/admin/src/components/RBACProvider/tests/reducer.test.js +++ b/packages/core/admin/admin/src/components/RBACProvider/tests/reducer.test.js @@ -1,4 +1,4 @@ -import { permissions } from '../../../../../../../admin-test-utils/lib/fixtures'; +import { permissions } from '@strapi/admin-test-utils/lib/fixtures/fixtures'; import { setPermissions, resetStore } from '../actions'; import rbacProviderReducer, { initialState } from '../reducer'; diff --git a/packages/core/admin/admin/src/components/ThemeToggleProvider/index.js b/packages/core/admin/admin/src/components/ThemeToggleProvider/index.js index 4810780def..b056ee090e 100644 --- a/packages/core/admin/admin/src/components/ThemeToggleProvider/index.js +++ b/packages/core/admin/admin/src/components/ThemeToggleProvider/index.js @@ -20,7 +20,7 @@ const getDefaultTheme = () => { const ThemeToggleProvider = ({ children, themes }) => { const [currentTheme, setCurrentTheme] = useState(getDefaultTheme()); - const handleChangeTheme = nextTheme => { + const handleChangeTheme = (nextTheme) => { setCurrentTheme(nextTheme); localStorage.setItem(THEME_KEY, nextTheme); }; diff --git a/packages/core/admin/admin/src/components/UpgradePlanModal/index.js b/packages/core/admin/admin/src/components/UpgradePlanModal/index.js index 376889feb9..1768f7dcad 100644 --- a/packages/core/admin/admin/src/components/UpgradePlanModal/index.js +++ b/packages/core/admin/admin/src/components/UpgradePlanModal/index.js @@ -73,7 +73,7 @@ const UpgradePlanModal = ({ onClose, isOpen }) => { e.stopPropagation()} + onClick={(e) => e.stopPropagation()} aria-labelledby="upgrade-plan" background="neutral0" hasRadius diff --git a/packages/core/admin/admin/src/content-manager/components/AttributeFilter/Filters.js b/packages/core/admin/admin/src/content-manager/components/AttributeFilter/Filters.js index 2e93de492d..8a1f925675 100644 --- a/packages/core/admin/admin/src/content-manager/components/AttributeFilter/Filters.js +++ b/packages/core/admin/admin/src/content-manager/components/AttributeFilter/Filters.js @@ -16,7 +16,7 @@ const Filters = ({ displayedFilters }) => { if (!isVisible) { trackUsage('willFilterEntries'); } - setIsVisible(prev => !prev); + setIsVisible((prev) => !prev); }; return ( diff --git a/packages/core/admin/admin/src/content-manager/components/AttributeFilter/hooks/useAllowedAttributes.js b/packages/core/admin/admin/src/content-manager/components/AttributeFilter/hooks/useAllowedAttributes.js index c623406496..edfe341101 100644 --- a/packages/core/admin/admin/src/content-manager/components/AttributeFilter/hooks/useAllowedAttributes.js +++ b/packages/core/admin/admin/src/content-manager/components/AttributeFilter/hooks/useAllowedAttributes.js @@ -17,7 +17,7 @@ const useAllowedAttributes = (contentType, slug) => { const readPermissionForAttr = get(readPermissionsForSlug, ['0', 'properties', 'fields'], []); const attributesArray = Object.keys(get(contentType, ['attributes']), {}); const allowedAttributes = attributesArray - .filter(attr => { + .filter((attr) => { const current = get(contentType, ['attributes', attr], {}); if (!current.type) { diff --git a/packages/core/admin/admin/src/content-manager/components/AttributeFilter/index.js b/packages/core/admin/admin/src/content-manager/components/AttributeFilter/index.js index 215c476090..48f922124d 100644 --- a/packages/core/admin/admin/src/content-manager/components/AttributeFilter/index.js +++ b/packages/core/admin/admin/src/content-manager/components/AttributeFilter/index.js @@ -7,7 +7,7 @@ import Filters from './Filters'; const AttributeFilter = ({ contentType, slug, metadatas }) => { const { formatMessage } = useIntl(); const allowedAttributes = useAllowedAttributes(contentType, slug); - const displayedFilters = allowedAttributes.map(name => { + const displayedFilters = allowedAttributes.map((name) => { const attribute = contentType.attributes[name]; const { type, enum: options } = attribute; diff --git a/packages/core/admin/admin/src/content-manager/components/Block/index.js b/packages/core/admin/admin/src/content-manager/components/Block/index.js index e398d0773b..1e1a62f027 100644 --- a/packages/core/admin/admin/src/content-manager/components/Block/index.js +++ b/packages/core/admin/admin/src/content-manager/components/Block/index.js @@ -8,7 +8,7 @@ import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import { Wrapper, Sub } from './components'; -const renderMsg = msg =>

{msg}

; +const renderMsg = (msg) =>

{msg}

; const Block = ({ children, description, style, title }) => (
diff --git a/packages/core/admin/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js b/packages/core/admin/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js index 11e89a54f0..399ce2ddee 100644 --- a/packages/core/admin/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js +++ b/packages/core/admin/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js @@ -40,13 +40,8 @@ const CollectionTypeFormWrapper = ({ allLayoutData, children, slug, id, origin } const { push, replace } = useHistory(); const [{ rawQuery }] = useQueryParams(); const dispatch = useDispatch(); - const { - componentsDataStructure, - contentTypeDataStructure, - data, - isLoading, - status, - } = useSelector(selectCrudReducer); + const { componentsDataStructure, contentTypeDataStructure, data, isLoading, status } = + useSelector(selectCrudReducer); const redirectionLink = useFindRedirectionLink(slug); const isMounted = useRef(true); @@ -65,7 +60,7 @@ const CollectionTypeFormWrapper = ({ allLayoutData, children, slug, id, origin } }, [slug, id, isCreatingEntry, origin]); const cleanClonedData = useCallback( - data => { + (data) => { if (!origin) { return data; } @@ -81,7 +76,7 @@ const CollectionTypeFormWrapper = ({ allLayoutData, children, slug, id, origin } [origin] ); - const cleanReceivedData = useCallback(data => { + const cleanReceivedData = useCallback((data) => { const cleaned = removePasswordFieldsFromData( data, allLayoutDataRef.current.contentType, @@ -136,7 +131,7 @@ const CollectionTypeFormWrapper = ({ allLayoutData, children, slug, id, origin } const CancelToken = axios.CancelToken; const source = CancelToken.source(); - const fetchData = async source => { + const fetchData = async (source) => { dispatch(getData()); try { @@ -201,7 +196,7 @@ const CollectionTypeFormWrapper = ({ allLayoutData, children, slug, id, origin } ]); const displayErrors = useCallback( - err => { + (err) => { const errorPayload = err.response.data; let errorMessage = get(errorPayload, ['error', 'message'], 'Bad Request'); @@ -218,7 +213,7 @@ const CollectionTypeFormWrapper = ({ allLayoutData, children, slug, id, origin } ); const onDelete = useCallback( - async trackerProperty => { + async (trackerProperty) => { try { trackUsageRef.current('willDeleteEntry', trackerProperty); diff --git a/packages/core/admin/admin/src/content-manager/components/DragLayer/index.js b/packages/core/admin/admin/src/content-manager/components/DragLayer/index.js index 69ccb9a67c..12fac50850 100644 --- a/packages/core/admin/admin/src/content-manager/components/DragLayer/index.js +++ b/packages/core/admin/admin/src/content-manager/components/DragLayer/index.js @@ -36,7 +36,7 @@ function getItemStyles(initialOffset, currentOffset, mouseOffset) { const CustomDragLayer = () => { const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer( - monitor => ({ + (monitor) => ({ item: monitor.getItem(), itemType: monitor.getItemType(), initialOffset: monitor.getInitialSourceClientOffset(), diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/RelationMultiple/index.js b/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/RelationMultiple/index.js index ace7d6a937..52037e50cd 100644 --- a/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/RelationMultiple/index.js +++ b/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/RelationMultiple/index.js @@ -85,7 +85,7 @@ const RelationMultiple = ({ fieldSchema, metadatas, queryInfos, name, rowId, val {status === 'success' && ( <> - {data?.results.map(entry => ( + {data?.results.map((entry) => ( { return ( - {value.map(item => ( + {value.map((item) => ( diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/utils/tests/isSingleRelation.test.js b/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/utils/tests/isSingleRelation.test.js index eb9848be01..9392a7256e 100644 --- a/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/utils/tests/isSingleRelation.test.js +++ b/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/utils/tests/isSingleRelation.test.js @@ -1,7 +1,7 @@ import isSingleRelation from '../isSingleRelation'; describe('isSingleRelation', () => { - ['oneToOne', 'manyToOne', 'oneToOneMorph'].forEach(type => { + ['oneToOne', 'manyToOne', 'oneToOneMorph'].forEach((type) => { test(`is single relation: ${type}`, () => { expect(isSingleRelation(type)).toBeTruthy(); }); diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicTable/TableRows/index.js b/packages/core/admin/admin/src/content-manager/components/DynamicTable/TableRows/index.js index 0e37acdd4f..5d45eb2abc 100644 --- a/packages/core/admin/admin/src/content-manager/components/DynamicTable/TableRows/index.js +++ b/packages/core/admin/admin/src/content-manager/components/DynamicTable/TableRows/index.js @@ -38,7 +38,7 @@ const TableRows = ({ return ( {rows.map((data, index) => { - const isChecked = entriesToDelete.findIndex(id => id === data.id) !== -1; + const isChecked = entriesToDelete.findIndex((id) => id === data.id) !== -1; const itemLineText = formatMessage( { id: 'content-manager.components.DynamicTable.row-line', @@ -51,7 +51,7 @@ const TableRows = ({ { + fn() { trackUsage('willEditEntryFromList'); push({ pathname: `${pathname}/${data.id}`, @@ -170,8 +170,8 @@ TableRows.defaultProps = { canCreate: false, canDelete: false, entriesToDelete: [], - onClickDelete: () => {}, - onSelectRow: () => {}, + onClickDelete() {}, + onSelectRow() {}, rows: [], withBulkActions: false, withMainAction: false, diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicTable/index.js b/packages/core/admin/admin/src/content-manager/components/DynamicTable/index.js index 7ca5563c80..37c60ac454 100644 --- a/packages/core/admin/admin/src/content-manager/components/DynamicTable/index.js +++ b/packages/core/admin/admin/src/content-manager/components/DynamicTable/index.js @@ -35,7 +35,7 @@ const DynamicTable = ({ layout, }); - const formattedHeaders = headers.displayedHeaders.map(header => { + const formattedHeaders = headers.displayedHeaders.map((header) => { if (header.fieldSchema.type === 'relation') { const sortFieldValue = `${header.name}.${header.metadatas.mainField.name}`; @@ -65,7 +65,7 @@ const DynamicTable = ({ searchable: false, sortable: true, }, - cellFormatter: cellData => { + cellFormatter(cellData) { const isPublished = !isEmpty(cellData.publishedAt); return ; diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/AddComponentButton/index.js b/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/AddComponentButton/index.js index 0547ddbcf5..cd3cbf3800 100644 --- a/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/AddComponentButton/index.js +++ b/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/AddComponentButton/index.js @@ -120,26 +120,24 @@ const AddComponentButton = ({ } return ( - <> - - - - - - - - - {buttonLabel} - - - - - - + + + + + + + + + {buttonLabel} + + + + + ); }; diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/Component/index.js b/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/Component/index.js index 2cf23883c7..d76d3bdc54 100644 --- a/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/Component/index.js +++ b/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/Component/index.js @@ -88,7 +88,7 @@ const Component = ({ const formErrorsKeys = Object.keys(formErrors); - const fieldsErrors = formErrorsKeys.filter(errorKey => { + const fieldsErrors = formErrorsKeys.filter((errorKey) => { const errorKeysArray = errorKey.split('.'); if (`${errorKeysArray[0]}.${errorKeysArray[1]}` === `${name}.${index}`) { diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/ComponentPicker/Category/ComponentCard/index.js b/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/ComponentPicker/Category/ComponentCard/index.js index 820591beab..6f9ab169a2 100644 --- a/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/ComponentPicker/Category/ComponentCard/index.js +++ b/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/ComponentPicker/Category/ComponentCard/index.js @@ -75,7 +75,7 @@ function ComponentCard({ componentUid, intlLabel, icon, onClick }) { ComponentCard.defaultProps = { icon: 'dice-d6', - onClick: () => {}, + onClick() {}, }; ComponentCard.propTypes = { diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/ComponentPicker/index.js b/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/ComponentPicker/index.js index fb94816ac5..50d480cf6b 100644 --- a/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/ComponentPicker/index.js +++ b/packages/core/admin/admin/src/content-manager/components/DynamicZone/components/ComponentPicker/index.js @@ -16,7 +16,7 @@ const ComponentPicker = ({ components, isOpen, onClickAddComponent }) => { const [categoryToOpen, setCategoryToOpen] = useState(''); const dynamicComponentCategories = useMemo(() => { - const componentsWithInfo = components.map(componentUid => { + const componentsWithInfo = components.map((componentUid) => { const { category, info } = getComponentLayout(componentUid); return { componentUid, category, info }; @@ -38,7 +38,7 @@ const ComponentPicker = ({ components, isOpen, onClickAddComponent }) => { }, [isOpen, dynamicComponentCategories]); const handleAddComponentToDz = useCallback( - componentUid => { + (componentUid) => { onClickAddComponent(componentUid); setCategoryToOpen(''); }, @@ -46,7 +46,7 @@ const ComponentPicker = ({ components, isOpen, onClickAddComponent }) => { ); const handleClickToggle = useCallback( - categoryName => { + (categoryName) => { const nextCategoryToOpen = categoryToOpen === categoryName ? '' : categoryName; setCategoryToOpen(nextCategoryToOpen); diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicZone/index.js b/packages/core/admin/admin/src/content-manager/components/DynamicZone/index.js index ae8cfef989..879369ccdb 100644 --- a/packages/core/admin/admin/src/content-manager/components/DynamicZone/index.js +++ b/packages/core/admin/admin/src/content-manager/components/DynamicZone/index.js @@ -16,7 +16,7 @@ import ComponentPicker from './components/ComponentPicker'; /* eslint-disable react/no-array-index-key */ -const createCollapses = arrayLength => +const createCollapses = (arrayLength) => Array.from({ length: arrayLength }).map(() => ({ isOpen: false })); const DynamicZone = ({ @@ -53,7 +53,7 @@ const DynamicZone = ({ useEffect(() => { if (shouldOpenAddedComponent) { - setComponentsCollapses(prev => + setComponentsCollapses((prev) => prev.map((collapse, index) => { if (index === prev.length - 1) { return { ...collapse, isOpen: true }; @@ -71,10 +71,10 @@ const DynamicZone = ({ const { max = Infinity, min = -Infinity } = fieldSchema; const dynamicZoneErrors = useMemo(() => { return Object.keys(formErrors) - .filter(key => { + .filter((key) => { return key === name; }) - .map(key => formErrors[key]); + .map((key) => formErrors[key]); }, [formErrors, name]); const dynamicZoneAvailableComponents = useMemo(() => fieldSchema.components || [], [fieldSchema]); @@ -89,7 +89,7 @@ const DynamicZone = ({ hasError && get(dynamicZoneErrors, [0, 'id'], '') === 'components.Input.error.validation.max'; const handleAddComponent = useCallback( - componentUid => { + (componentUid) => { setIsOpen(false); addComponentToDynamicZone(name, componentUid, hasError); @@ -100,7 +100,7 @@ const DynamicZone = ({ const handleClickOpenPicker = () => { if (dynamicDisplayedComponentsLength < max) { - setIsOpen(prev => !prev); + setIsOpen((prev) => !prev); } else { toggleNotification({ type: 'info', @@ -109,8 +109,8 @@ const DynamicZone = ({ } }; - const handleToggleComponent = indexToToggle => { - setComponentsCollapses(prev => + const handleToggleComponent = (indexToToggle) => { + setComponentsCollapses((prev) => prev.map(({ isOpen }, index) => { if (index === indexToToggle) { return { isOpen: !isOpen }; @@ -123,7 +123,7 @@ const DynamicZone = ({ const handleMoveComponentDown = (name, currentIndex) => { moveComponentDown(name, currentIndex); - setComponentsCollapses(prev => { + setComponentsCollapses((prev) => { return prev.map(({ isOpen }, index, refArray) => { if (index === currentIndex + 1) { return { isOpen: refArray[currentIndex].isOpen }; @@ -140,7 +140,7 @@ const DynamicZone = ({ const handleMoveComponentUp = (name, currentIndex) => { moveComponentUp(name, currentIndex); - setComponentsCollapses(prev => { + setComponentsCollapses((prev) => { return prev.map(({ isOpen }, index, refArray) => { if (index === currentIndex - 1) { return { isOpen: refArray[currentIndex].isOpen }; diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicZone/utils/connect.js b/packages/core/admin/admin/src/content-manager/components/DynamicZone/utils/connect.js index 238d60ef82..b41217bc40 100644 --- a/packages/core/admin/admin/src/content-manager/components/DynamicZone/utils/connect.js +++ b/packages/core/admin/admin/src/content-manager/components/DynamicZone/utils/connect.js @@ -1,7 +1,7 @@ import React from 'react'; function connect(WrappedComponent, select) { - return function(props) { + return function (props) { // eslint-disable-next-line react/prop-types const selectors = select(props.name); diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicZone/utils/select.js b/packages/core/admin/admin/src/content-manager/components/DynamicZone/utils/select.js index aedcfd3e26..0b633ce9b1 100644 --- a/packages/core/admin/admin/src/content-manager/components/DynamicZone/utils/select.js +++ b/packages/core/admin/admin/src/content-manager/components/DynamicZone/utils/select.js @@ -17,7 +17,7 @@ function useSelect(name) { } = useCMEditViewDataManager(); const dynamicDisplayedComponents = useMemo( - () => get(modifiedData, [name], []).map(data => data.__component), + () => get(modifiedData, [name], []).map((data) => data.__component), [modifiedData, name] ); diff --git a/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/index.js b/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/index.js index 0cb49908fd..4b6f683337 100644 --- a/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/index.js +++ b/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/index.js @@ -264,7 +264,7 @@ const EditViewDataManagerProvider = ({ ); const createFormData = useCallback( - data => { + (data) => { // First we need to remove the added keys needed for the dnd const preparedData = removeKeyInObject(cloneDeep(data), '__temp_key__'); // Then we need to apply our helper @@ -288,7 +288,7 @@ const EditViewDataManagerProvider = ({ }, [hasDraftAndPublish, shouldNotRunValidations]); const handleSubmit = useCallback( - async e => { + async (e) => { e.preventDefault(); let errors = {}; @@ -358,8 +358,8 @@ const EditViewDataManagerProvider = ({ }, [allLayoutData, currentContentTypeLayout, isCreatingEntry, modifiedData, onPublish]); const shouldCheckDZErrors = useCallback( - dzName => { - const doesDZHaveError = Object.keys(formErrors).some(key => key.split('.')[0] === dzName); + (dzName) => { + const doesDZHaveError = Object.keys(formErrors).some((key) => key.split('.')[0] === dzName); const shouldCheckErrors = !isEmpty(formErrors) && doesDZHaveError; return shouldCheckErrors; @@ -413,7 +413,7 @@ const EditViewDataManagerProvider = ({ }); }, []); - const onRemoveRelation = useCallback(keys => { + const onRemoveRelation = useCallback((keys) => { dispatch({ type: 'REMOVE_RELATION', keys, @@ -526,7 +526,7 @@ const EditViewDataManagerProvider = ({ EditViewDataManagerProvider.defaultProps = { from: '/', initialValues: null, - redirectToPreviousPage: () => {}, + redirectToPreviousPage() {}, }; EditViewDataManagerProvider.propTypes = { diff --git a/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js b/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js index 04a2155db7..f93dd971e2 100644 --- a/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +++ b/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js @@ -18,7 +18,7 @@ const initialState = { const reducer = (state, action) => // eslint-disable-next-line consistent-return - produce(state, draftState => { + produce(state, (draftState) => { switch (action.type) { case 'ADD_NON_REPEATABLE_COMPONENT_TO_FIELD': { set( diff --git a/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js b/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js index 68e786ac21..269057ec1b 100644 --- a/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js +++ b/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js @@ -32,7 +32,7 @@ const cleanData = (retrievedData, currentSchema, componentsSchema) => { } case 'media': if (getOtherInfos(schema, [current, 'multiple']) === true) { - cleanedData = value ? value.filter(file => !(file instanceof File)) : null; + cleanedData = value ? value.filter((file) => !(file instanceof File)) : null; } else { cleanedData = get(value, 0) instanceof File ? null : get(value, 'id', null); } @@ -40,7 +40,7 @@ const cleanData = (retrievedData, currentSchema, componentsSchema) => { case 'component': if (isRepeatable) { cleanedData = value - ? value.map(data => { + ? value.map((data) => { const subCleanedData = recursiveCleanData(data, componentsSchema[component]); return subCleanedData; @@ -52,7 +52,7 @@ const cleanData = (retrievedData, currentSchema, componentsSchema) => { break; case 'dynamiczone': - cleanedData = value.map(componentData => { + cleanedData = value.map((componentData) => { const subCleanedData = recursiveCleanData( componentData, componentsSchema[componentData.__component] @@ -77,7 +77,7 @@ const cleanData = (retrievedData, currentSchema, componentsSchema) => { export const helperCleanData = (value, key) => { if (isArray(value)) { - return value.map(obj => (obj[key] ? obj[key] : obj)); + return value.map((obj) => (obj[key] ? obj[key] : obj)); } if (isObject(value)) { return value[key]; diff --git a/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/utils/schema.js b/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/utils/schema.js index 0d846a4c09..976c5f4b8d 100644 --- a/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/utils/schema.js +++ b/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/utils/schema.js @@ -9,12 +9,12 @@ import { translatedErrors as errorsTrads } from '@strapi/helper-plugin'; import isFieldTypeNumber from '../../../utils/isFieldTypeNumber'; -yup.addMethod(yup.mixed, 'defined', function() { - return this.test('defined', errorsTrads.required, value => value !== undefined); +yup.addMethod(yup.mixed, 'defined', function () { + return this.test('defined', errorsTrads.required, (value) => value !== undefined); }); -yup.addMethod(yup.array, 'notEmptyMin', function(min) { - return this.test('notEmptyMin', errorsTrads.min, value => { +yup.addMethod(yup.array, 'notEmptyMin', function (min) { + return this.test('notEmptyMin', errorsTrads.min, (value) => { if (isEmpty(value)) { return true; } @@ -23,8 +23,8 @@ yup.addMethod(yup.array, 'notEmptyMin', function(min) { }); }); -yup.addMethod(yup.string, 'isInferior', function(message, max) { - return this.test('isInferior', message, function(value) { +yup.addMethod(yup.string, 'isInferior', function (message, max) { + return this.test('isInferior', message, function (value) { if (!value) { return true; } @@ -37,8 +37,8 @@ yup.addMethod(yup.string, 'isInferior', function(message, max) { }); }); -yup.addMethod(yup.string, 'isSuperior', function(message, min) { - return this.test('isSuperior', message, function(value) { +yup.addMethod(yup.string, 'isSuperior', function (message, min) { + return this.test('isSuperior', message, function (value) { if (!value) { return true; } @@ -51,7 +51,7 @@ yup.addMethod(yup.string, 'isSuperior', function(message, min) { }); }); -const getAttributes = data => get(data, ['attributes'], {}); +const getAttributes = (data) => get(data, ['attributes'], {}); const createYupSchema = ( model, @@ -97,7 +97,7 @@ const createYupSchema = ( if (attribute.repeatable === true) { const { min, max, required } = attribute; - let componentSchema = yup.lazy(value => { + let componentSchema = yup.lazy((value) => { let baseSchema = yup.array().of(componentFieldSchema); if (min) { @@ -123,7 +123,7 @@ const createYupSchema = ( return acc; } - const componentSchema = yup.lazy(obj => { + const componentSchema = yup.lazy((obj) => { if (obj !== undefined) { return attribute.required === true && !options.isDraft ? componentFieldSchema.defined() @@ -154,7 +154,7 @@ const createYupSchema = ( if (min) { if (attribute.required) { dynamicZoneSchema = dynamicZoneSchema - .test('min', errorsTrads.min, value => { + .test('min', errorsTrads.min, (value) => { if (options.isCreatingEntry) { return value && value.length >= min; } @@ -165,7 +165,7 @@ const createYupSchema = ( return value !== null && value.length >= min; }) - .test('required', errorsTrads.required, value => { + .test('required', errorsTrads.required, (value) => { if (options.isCreatingEntry) { return value !== null || value !== undefined; } @@ -180,7 +180,7 @@ const createYupSchema = ( dynamicZoneSchema = dynamicZoneSchema.notEmptyMin(min); } } else if (attribute.required && !options.isDraft) { - dynamicZoneSchema = dynamicZoneSchema.test('required', errorsTrads.required, value => { + dynamicZoneSchema = dynamicZoneSchema.test('required', errorsTrads.required, (value) => { if (options.isCreatingEntry) { return value !== null || value !== undefined; } @@ -215,7 +215,7 @@ const createYupSchemaAttribute = (type, validations, options) => { if (type === 'json') { schema = yup .mixed(errorsTrads.json) - .test('isJSON', errorsTrads.json, value => { + .test('isJSON', errorsTrads.json, (value) => { if (value === undefined) { return true; } @@ -238,7 +238,7 @@ const createYupSchemaAttribute = (type, validations, options) => { if (['number', 'integer', 'float', 'decimal'].includes(type)) { schema = yup .number() - .transform(cv => (isNaN(cv) ? undefined : cv)) + .transform((cv) => (isNaN(cv) ? undefined : cv)) .typeError(); } @@ -250,7 +250,7 @@ const createYupSchemaAttribute = (type, validations, options) => { schema = yup.date(); } - Object.keys(validations).forEach(validation => { + Object.keys(validations).forEach((validation) => { const validationValue = validations[validation]; if ( @@ -269,7 +269,7 @@ const createYupSchemaAttribute = (type, validations, options) => { if (options.isCreatingEntry) { schema = schema.required(errorsTrads.required); } else { - schema = schema.test('required', errorsTrads.required, value => { + schema = schema.test('required', errorsTrads.required, (value) => { // Field is not touched and the user is editing the entry if (value === undefined && !options.isFromComponent) { return true; diff --git a/packages/core/admin/admin/src/content-manager/components/FieldComponent/utils/connect.js b/packages/core/admin/admin/src/content-manager/components/FieldComponent/utils/connect.js index 648a3d30e4..f1027b59e3 100644 --- a/packages/core/admin/admin/src/content-manager/components/FieldComponent/utils/connect.js +++ b/packages/core/admin/admin/src/content-manager/components/FieldComponent/utils/connect.js @@ -1,7 +1,7 @@ import React from 'react'; function connect(WrappedComponent, select) { - return function(props) { + return function (props) { // eslint-disable-next-line react/prop-types const selectors = select(props); diff --git a/packages/core/admin/admin/src/content-manager/components/FieldComponent/utils/select.js b/packages/core/admin/admin/src/content-manager/components/FieldComponent/utils/select.js index 661180525d..284dc1a44d 100644 --- a/packages/core/admin/admin/src/content-manager/components/FieldComponent/utils/select.js +++ b/packages/core/admin/admin/src/content-manager/components/FieldComponent/utils/select.js @@ -22,7 +22,7 @@ function useSelect({ isFromDynamicZone, name }) { const allDynamicZoneFields = useMemo(() => { const attributes = get(contentType, ['attributes'], {}); - const dynamicZoneFields = Object.keys(attributes).filter(attrName => { + const dynamicZoneFields = Object.keys(attributes).filter((attrName) => { return get(attributes, [attrName, 'type'], '') === 'dynamiczone'; }); @@ -43,17 +43,17 @@ function useSelect({ isFromDynamicZone, name }) { return true; } - const includedDynamicZoneFields = allowedFields.filter(name => name === compoName[0]); + const includedDynamicZoneFields = allowedFields.filter((name) => name === compoName[0]); if (includedDynamicZoneFields.length > 0) { return true; } const relatedChildrenAllowedFields = allowedFields - .map(fieldName => { + .map((fieldName) => { return fieldName.split('.'); }) - .filter(fieldName => { + .filter((fieldName) => { if (fieldName.length < compoName.length) { return false; } @@ -78,10 +78,10 @@ function useSelect({ isFromDynamicZone, name }) { const allowedFields = isCreatingEntry ? [] : readActionAllowedFields; const relatedChildrenAllowedFields = allowedFields - .map(fieldName => { + .map((fieldName) => { return fieldName.split('.'); }) - .filter(fieldName => { + .filter((fieldName) => { if (fieldName.length < compoName.length) { return false; } diff --git a/packages/core/admin/admin/src/content-manager/components/FormTitle/index.js b/packages/core/admin/admin/src/content-manager/components/FormTitle/index.js index e6b8cfc06e..bf5c46f694 100644 --- a/packages/core/admin/admin/src/content-manager/components/FormTitle/index.js +++ b/packages/core/admin/admin/src/content-manager/components/FormTitle/index.js @@ -5,7 +5,7 @@ import { FormattedMessage } from 'react-intl'; const FormTitle = ({ description, title }) => ( <> {!!title && } - {!!description && {msg =>

{msg}

}
} + {!!description && {(msg) =>

{msg}

}
} ); diff --git a/packages/core/admin/admin/src/content-manager/components/InjectionZoneList/index.js b/packages/core/admin/admin/src/content-manager/components/InjectionZoneList/index.js index 2b97bc695d..7738d2b140 100644 --- a/packages/core/admin/admin/src/content-manager/components/InjectionZoneList/index.js +++ b/packages/core/admin/admin/src/content-manager/components/InjectionZoneList/index.js @@ -13,7 +13,7 @@ const InjectionZoneList = ({ area, ...props }) => { // TODO return (
    - {compos.map(compo => { + {compos.map((compo) => { const component = compo.Component(props); if (component) { diff --git a/packages/core/admin/admin/src/content-manager/components/InputJSON/index.js b/packages/core/admin/admin/src/content-manager/components/InputJSON/index.js index bd604a1f32..182dc736a2 100644 --- a/packages/core/admin/admin/src/content-manager/components/InputJSON/index.js +++ b/packages/core/admin/admin/src/content-manager/components/InputJSON/index.js @@ -87,11 +87,10 @@ class InputJSON extends React.Component { setSize = () => this.codeMirror.setSize('100%', 'auto'); - getContentAtLine = line => this.codeMirror.getLine(line); + getContentAtLine = (line) => this.codeMirror.getLine(line); - getEditorOption = opt => this.codeMirror.getOption(opt); - - getValue = () => this.codeMirror.getValue(); + // getEditorOption = (opt) => this.codeMirror.getOption(opt); + // getValue = () => this.codeMirror.getValue(); markSelection = ({ message }) => { let line = parseInt(message.split(':')[0].split('line ')[1], 10) - 1; @@ -142,7 +141,7 @@ class InputJSON extends React.Component { this.timer = setTimeout(() => this.testJSON(doc.getValue()), WAIT); }; - testJSON = value => { + testJSON = (value) => { try { jsonlint.parse(value); } catch (err) { @@ -189,7 +188,7 @@ InputJSON.defaultProps = { error: undefined, intlLabel: undefined, labelAction: undefined, - onChange: () => {}, + onChange() {}, value: null, required: false, }; diff --git a/packages/core/admin/admin/src/content-manager/components/InputJSON/jsonlint.js b/packages/core/admin/admin/src/content-manager/components/InputJSON/jsonlint.js index fdf51fda7c..7bf146de32 100644 --- a/packages/core/admin/admin/src/content-manager/components/InputJSON/jsonlint.js +++ b/packages/core/admin/admin/src/content-manager/components/InputJSON/jsonlint.js @@ -1,6 +1,6 @@ /* Jison generated parser */ /* eslint-disable */ -var jsonlint = (function() { +var jsonlint = (function () { var parser = { trace: function trace() {}, yy: {}, @@ -453,7 +453,7 @@ var jsonlint = (function() { }, }; /* Jison generated lexer */ - var lexer = (function() { + var lexer = (function () { var lexer = { EOF: 1, parseError: function parseError(str, hash) { @@ -463,7 +463,7 @@ var jsonlint = (function() { throw new Error(str); } }, - setInput: function(input) { + setInput: function (input) { this._input = input; this._more = this._less = this.done = false; this.yylineno = this.yyleng = 0; @@ -472,7 +472,7 @@ var jsonlint = (function() { this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }; return this; }, - input: function() { + input: function () { var ch = this._input[0]; this.yytext += ch; this.yyleng++; @@ -483,34 +483,34 @@ var jsonlint = (function() { this._input = this._input.slice(1); return ch; }, - unput: function(ch) { + unput: function (ch) { this._input = ch + this._input; return this; }, - more: function() { + more: function () { this._more = true; return this; }, - less: function(n) { + less: function (n) { this._input = this.match.slice(n) + this._input; }, - pastInput: function() { + pastInput: function () { var past = this.matched.substr(0, this.matched.length - this.match.length); return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, ''); }, - upcomingInput: function() { + upcomingInput: function () { var next = this.match; if (next.length < 20) { next += this._input.substr(0, 20 - next.length); } return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ''); }, - showPosition: function() { + showPosition: function () { var pre = this.pastInput(); var c = new Array(pre.length + 1).join('-'); return pre + this.upcomingInput() + '\n' + c + '^'; }, - next: function() { + next: function () { if (this.done) { return this.EOF; } @@ -587,7 +587,7 @@ var jsonlint = (function() { _currentRules: function _currentRules() { return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; }, - topState: function() { + topState: function () { return this.conditionStack[this.conditionStack.length - 2]; }, pushState: function begin(condition) { @@ -669,7 +669,7 @@ var jsonlint = (function() { })(); if (typeof require !== 'undefined' && typeof exports !== 'undefined') { exports.parser = jsonlint; - exports.parse = function() { + exports.parse = function () { return jsonlint.parse.apply(jsonlint, arguments); }; exports.main = function commonjsMain(args) { diff --git a/packages/core/admin/admin/src/content-manager/components/InputUID/index.js b/packages/core/admin/admin/src/content-manager/components/InputUID/index.js index 40b1128f2b..ea443a1382 100644 --- a/packages/core/admin/admin/src/content-manager/components/InputUID/index.js +++ b/packages/core/admin/admin/src/content-manager/components/InputUID/index.js @@ -174,7 +174,7 @@ const InputUID = ({ setRegenerateLabel(null); }; - const handleChange = e => { + const handleChange = (e) => { if (e.target.value && isCreation) { setIsCustomized(true); } diff --git a/packages/core/admin/admin/src/content-manager/components/Inputs/index.js b/packages/core/admin/admin/src/content-manager/components/Inputs/index.js index 15a75e80fc..3f59cd56cf 100644 --- a/packages/core/admin/admin/src/content-manager/components/Inputs/index.js +++ b/packages/core/admin/admin/src/content-manager/components/Inputs/index.js @@ -157,10 +157,10 @@ function Inputs({ return disabled; }, [disabled, isCreatingEntry, isUserAllowedToEditField, isUserAllowedToReadField]); - const options = useMemo(() => generateOptions(fieldSchema.enum || [], isRequired), [ - fieldSchema, - isRequired, - ]); + const options = useMemo( + () => generateOptions(fieldSchema.enum || [], isRequired), + [fieldSchema, isRequired] + ); const { label, description, placeholder, visible } = metadatas; diff --git a/packages/core/admin/admin/src/content-manager/components/Inputs/utils/connect.js b/packages/core/admin/admin/src/content-manager/components/Inputs/utils/connect.js index 51685b4411..f7d486eb66 100644 --- a/packages/core/admin/admin/src/content-manager/components/Inputs/utils/connect.js +++ b/packages/core/admin/admin/src/content-manager/components/Inputs/utils/connect.js @@ -1,7 +1,7 @@ import React from 'react'; function connect(WrappedComponent, select) { - return function(props) { + return function (props) { // eslint-disable-next-line react/prop-types const selectors = select(props.keys); diff --git a/packages/core/admin/admin/src/content-manager/components/Inputs/utils/generateOptions.js b/packages/core/admin/admin/src/content-manager/components/Inputs/utils/generateOptions.js index 3ba48d8f65..c6058a333e 100644 --- a/packages/core/admin/admin/src/content-manager/components/Inputs/utils/generateOptions.js +++ b/packages/core/admin/admin/src/content-manager/components/Inputs/utils/generateOptions.js @@ -12,7 +12,7 @@ const generateOptions = (options, isRequired = false) => { key: '__enum_option_null', value: '', }, - ...options.map(option => { + ...options.map((option) => { return { metadatas: { intlLabel: { diff --git a/packages/core/admin/admin/src/content-manager/components/Inputs/utils/getStep.js b/packages/core/admin/admin/src/content-manager/components/Inputs/utils/getStep.js index 900f25b483..7c6653aee0 100644 --- a/packages/core/admin/admin/src/content-manager/components/Inputs/utils/getStep.js +++ b/packages/core/admin/admin/src/content-manager/components/Inputs/utils/getStep.js @@ -1,4 +1,4 @@ -const getStep = type => { +const getStep = (type) => { let step; if (type === 'float' || type === 'decimal') { diff --git a/packages/core/admin/admin/src/content-manager/components/LayoutDndProvider/index.js b/packages/core/admin/admin/src/content-manager/components/LayoutDndProvider/index.js index 9c80e9af3e..bb50f2b79f 100644 --- a/packages/core/admin/admin/src/content-manager/components/LayoutDndProvider/index.js +++ b/packages/core/admin/admin/src/content-manager/components/LayoutDndProvider/index.js @@ -44,16 +44,16 @@ function LayoutDndProvider({ LayoutDndProvider.defaultProps = { attributes: {}, buttonData: [], - goTo: () => {}, + goTo() {}, layout: [], metadatas: {}, - moveItem: () => {}, - moveRow: () => {}, - onAddData: () => {}, + moveItem() {}, + moveRow() {}, + onAddData() {}, relationsLayout: [], - removeField: () => {}, + removeField() {}, selectedItemName: null, - setEditFieldToSelect: () => {}, + setEditFieldToSelect() {}, }; LayoutDndProvider.propTypes = { diff --git a/packages/core/admin/admin/src/content-manager/components/NonRepeatableComponent/index.js b/packages/core/admin/admin/src/content-manager/components/NonRepeatableComponent/index.js index 9137cc610a..f85cc13e72 100644 --- a/packages/core/admin/admin/src/content-manager/components/NonRepeatableComponent/index.js +++ b/packages/core/admin/admin/src/content-manager/components/NonRepeatableComponent/index.js @@ -12,10 +12,10 @@ import Inputs from '../Inputs'; const NonRepeatableComponent = ({ componentUid, isFromDynamicZone, isNested, name }) => { const { getComponentLayout } = useContentTypeLayout(); - const componentLayoutData = useMemo(() => getComponentLayout(componentUid), [ - componentUid, - getComponentLayout, - ]); + const componentLayoutData = useMemo( + () => getComponentLayout(componentUid), + [componentUid, getComponentLayout] + ); const fields = componentLayoutData.layouts.edit; return ( diff --git a/packages/core/admin/admin/src/content-manager/components/PreviewWysiwyg/utils/mdRenderer.js b/packages/core/admin/admin/src/content-manager/components/PreviewWysiwyg/utils/mdRenderer.js index 002fe85bad..b8c2cf212b 100644 --- a/packages/core/admin/admin/src/content-manager/components/PreviewWysiwyg/utils/mdRenderer.js +++ b/packages/core/admin/admin/src/content-manager/components/PreviewWysiwyg/utils/mdRenderer.js @@ -25,7 +25,7 @@ const md = new Markdown({ linkify: true, typographer: true, // Code from: https://github.com/markdown-it/markdown-it/blob/master/support/demo_template/index.js#L83 - highlight: (str, lang) => { + highlight(str, lang) { if (lang && lang !== 'auto' && getLanguage(lang)) { return ( '
     e.stopPropagation()}
    +                      onClick={(e) => e.stopPropagation()}
                         >
                           
                         
    @@ -294,8 +288,8 @@ const DraggedItem = ({
     DraggedItem.defaultProps = {
       isDraggingSibling: false,
       isOpen: false,
    -  setIsDraggingSibling: () => {},
    -  toggleCollapses: () => {},
    +  setIsDraggingSibling() {},
    +  toggleCollapses() {},
     };
     
     DraggedItem.propTypes = {
    diff --git a/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/DraggedItem/utils/connect.js b/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/DraggedItem/utils/connect.js
    index 563d58b445..e9c07d0f24 100644
    --- a/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/DraggedItem/utils/connect.js
    +++ b/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/DraggedItem/utils/connect.js
    @@ -1,7 +1,7 @@
     import React from 'react';
     
     function connect(WrappedComponent, select) {
    -  return function(props) {
    +  return function (props) {
         const selectors = select(props);
     
         return ;
    diff --git a/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/index.js b/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/index.js
    index b6d31cff45..2b7c6931ab 100644
    --- a/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/index.js
    +++ b/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/index.js
    @@ -49,10 +49,10 @@ const RepeatableComponent = ({
       const [isDraggingSibling, setIsDraggingSibling] = useState(false);
       const [, drop] = useDrop({ accept: ItemTypes.COMPONENT });
       const { getComponentLayout } = useContentTypeLayout();
    -  const componentLayoutData = useMemo(() => getComponentLayout(componentUid), [
    -    componentUid,
    -    getComponentLayout,
    -  ]);
    +  const componentLayoutData = useMemo(
    +    () => getComponentLayout(componentUid),
    +    [componentUid, getComponentLayout]
    +  );
     
       const nextTempKey = useMemo(() => {
         return getMaxTempKey(componentValue || []) + 1;
    @@ -113,7 +113,7 @@ const RepeatableComponent = ({
       }
     
       const doesRepComponentHasChildError = componentErrorKeys.some(
    -    error => error.split('.').length > 1
    +    (error) => error.split('.').length > 1
       );
     
       if (doesRepComponentHasChildError && !hasMinError) {
    diff --git a/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/utils/connect.js b/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/utils/connect.js
    index 563d58b445..e9c07d0f24 100644
    --- a/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/utils/connect.js
    +++ b/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/utils/connect.js
    @@ -1,7 +1,7 @@
     import React from 'react';
     
     function connect(WrappedComponent, select) {
    -  return function(props) {
    +  return function (props) {
         const selectors = select(props);
     
         return ;
    diff --git a/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/utils/getComponentErrorKeys.js b/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/utils/getComponentErrorKeys.js
    index d12c3e8eb3..59081b74b9 100644
    --- a/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/utils/getComponentErrorKeys.js
    +++ b/packages/core/admin/admin/src/content-manager/components/RepeatableComponent/utils/getComponentErrorKeys.js
    @@ -1,7 +1,7 @@
     export default function getComponentErrorKeys(name, formErrors) {
       return Object.keys(formErrors)
    -    .filter(errorKey => errorKey.startsWith(name))
    -    .map(errorKey =>
    +    .filter((errorKey) => errorKey.startsWith(name))
    +    .map((errorKey) =>
           errorKey
             .split('.')
             .slice(0, name.split('.').length + 1)
    diff --git a/packages/core/admin/admin/src/content-manager/components/SectionTitle/index.js b/packages/core/admin/admin/src/content-manager/components/SectionTitle/index.js
    index c8c870dd2f..7eed2469e2 100644
    --- a/packages/core/admin/admin/src/content-manager/components/SectionTitle/index.js
    +++ b/packages/core/admin/admin/src/content-manager/components/SectionTitle/index.js
    @@ -10,7 +10,7 @@ const SectionTitle = ({ isSettings }) => {
     
       return (
         
    - {msg => {msg}} + {(msg) => {msg}}
    ); }; diff --git a/packages/core/admin/admin/src/content-manager/components/SelectMany/ListItem.js b/packages/core/admin/admin/src/content-manager/components/SelectMany/ListItem.js index 5a25b242d0..2eb9ab9a83 100644 --- a/packages/core/admin/admin/src/content-manager/components/SelectMany/ListItem.js +++ b/packages/core/admin/admin/src/content-manager/components/SelectMany/ListItem.js @@ -79,7 +79,7 @@ function ListItem({ } ListItem.defaultProps = { - onRemove: () => {}, + onRemove() {}, searchToPersist: null, targetModel: '', }; diff --git a/packages/core/admin/admin/src/content-manager/components/SelectMany/index.js b/packages/core/admin/admin/src/content-manager/components/SelectMany/index.js index 9dea24cc85..7d8459a89f 100644 --- a/packages/core/admin/admin/src/content-manager/components/SelectMany/index.js +++ b/packages/core/admin/admin/src/content-manager/components/SelectMany/index.js @@ -46,7 +46,7 @@ function SelectMany({ id={name} filterOption={(candidate, input) => { if (!isEmpty(value)) { - const isSelected = value.findIndex(item => item.id === candidate.value.id) !== -1; + const isSelected = value.findIndex((item) => item.id === candidate.value.id) !== -1; if (isSelected) { return false; diff --git a/packages/core/admin/admin/src/content-manager/components/SelectOne/SingleValue.js b/packages/core/admin/admin/src/content-manager/components/SelectOne/SingleValue.js index 50e0c51f8f..6427a13328 100644 --- a/packages/core/admin/admin/src/content-manager/components/SelectOne/SingleValue.js +++ b/packages/core/admin/admin/src/content-manager/components/SelectOne/SingleValue.js @@ -22,7 +22,7 @@ const StyledBullet = styled.div` cursor: pointer; `; -const SingleValue = props => { +const SingleValue = (props) => { const { formatMessage } = useIntl(); const Component = components.SingleValue; const hasDraftAndPublish = has(get(props, 'data.value'), 'publishedAt'); diff --git a/packages/core/admin/admin/src/content-manager/components/SelectWrapper/Option.js b/packages/core/admin/admin/src/content-manager/components/SelectWrapper/Option.js index ea175ed839..23ddd224f7 100644 --- a/packages/core/admin/admin/src/content-manager/components/SelectWrapper/Option.js +++ b/packages/core/admin/admin/src/content-manager/components/SelectWrapper/Option.js @@ -20,7 +20,7 @@ const StyledBullet = styled.div` cursor: pointer; `; -const Option = props => { +const Option = (props) => { const { formatMessage } = useIntl(); const Component = components.Option; const hasDraftAndPublish = has(get(props, 'data.value'), 'publishedAt'); diff --git a/packages/core/admin/admin/src/content-manager/components/SelectWrapper/index.js b/packages/core/admin/admin/src/content-manager/components/SelectWrapper/index.js index 1c1870212d..ef5810095b 100644 --- a/packages/core/admin/admin/src/content-manager/components/SelectWrapper/index.js +++ b/packages/core/admin/admin/src/content-manager/components/SelectWrapper/index.js @@ -64,13 +64,8 @@ function SelectWrapper({ const [{ query }] = useQueryParams(); // Disable the input in case of a polymorphic relation const isMorph = useMemo(() => relationType.toLowerCase().includes('morph'), [relationType]); - const { - addRelation, - modifiedData, - moveRelation, - onChange, - onRemoveRelation, - } = useCMEditViewDataManager(); + const { addRelation, modifiedData, moveRelation, onChange, onRemoveRelation } = + useCMEditViewDataManager(); const { pathname } = useLocation(); const value = get(modifiedData, name, null); @@ -80,11 +75,11 @@ function SelectWrapper({ const [isOpen, setIsOpen] = useState(false); const filteredOptions = useMemo(() => { - return options.filter(option => { + return options.filter((option) => { if (!isEmpty(value)) { // SelectMany if (Array.isArray(value)) { - return findIndex(value, o => o.id === option.value.id) === -1; + return findIndex(value, (o) => o.id === option.value.id) === -1; } // SelectOne @@ -95,13 +90,8 @@ function SelectWrapper({ }); }, [options, value]); - const { - endPoint, - containsKey, - defaultParams, - shouldDisplayRelationLink, - paramsToKeep, - } = queryInfos; + const { endPoint, containsKey, defaultParams, shouldDisplayRelationLink, paramsToKeep } = + queryInfos; const isSingle = ['oneWay', 'oneToOne', 'manyToOne', 'oneToManyMorph', 'oneToOneMorph'].includes( relationType @@ -116,11 +106,11 @@ function SelectWrapper({ return [value.id]; } - return value.map(val => val.id); + return value.map((val) => val.id); }, [isSingle, value]); const getData = useCallback( - async source => { + async (source) => { // Currently polymorphic relations are not handled if (isMorph) { setIsLoading(false); @@ -149,19 +139,19 @@ function SelectWrapper({ { params, cancelToken: source.token } ); - const formattedData = data.map(obj => { + const formattedData = data.map((obj) => { return { value: obj, label: obj[mainField.name] }; }); - setOptions(prevState => + setOptions((prevState) => prevState.concat(formattedData).filter((obj, index) => { - const objIndex = prevState.findIndex(el => el.value.id === obj.value.id); + const objIndex = prevState.findIndex((el) => el.value.id === obj.value.id); if (objIndex === -1) { return true; } - return prevState.findIndex(el => el.value.id === obj.value.id) === index; + return prevState.findIndex((el) => el.value.id === obj.value.id) === index; }) ); setIsLoading(false); @@ -197,7 +187,7 @@ function SelectWrapper({ const handleInputChange = (inputValue, { action }) => { if (action === 'input-change') { - setState(prevState => { + setState((prevState) => { if (prevState.contains === inputValue) { return prevState; } @@ -210,7 +200,7 @@ function SelectWrapper({ }; const handleMenuScrollToBottom = () => { - setState(prevState => ({ + setState((prevState) => ({ ...prevState, start: prevState.start + 20, })); @@ -221,11 +211,11 @@ function SelectWrapper({ setIsOpen(false); }; - const handleChange = value => { + const handleChange = (value) => { onChange({ target: { name, value: value ? value.value : value } }); }; - const handleAddRelation = value => { + const handleAddRelation = (value) => { if (!isEmpty(value)) { addRelation({ target: { name, value } }); } diff --git a/packages/core/admin/admin/src/content-manager/components/SelectWrapper/utils/connect.js b/packages/core/admin/admin/src/content-manager/components/SelectWrapper/utils/connect.js index 648a3d30e4..f1027b59e3 100644 --- a/packages/core/admin/admin/src/content-manager/components/SelectWrapper/utils/connect.js +++ b/packages/core/admin/admin/src/content-manager/components/SelectWrapper/utils/connect.js @@ -1,7 +1,7 @@ import React from 'react'; function connect(WrappedComponent, select) { - return function(props) { + return function (props) { // eslint-disable-next-line react/prop-types const selectors = select(props); diff --git a/packages/core/admin/admin/src/content-manager/components/SingleTypeFormWrapper/index.js b/packages/core/admin/admin/src/content-manager/components/SingleTypeFormWrapper/index.js index 72dadec8f3..63cf0dee7e 100644 --- a/packages/core/admin/admin/src/content-manager/components/SingleTypeFormWrapper/index.js +++ b/packages/core/admin/admin/src/content-manager/components/SingleTypeFormWrapper/index.js @@ -38,16 +38,11 @@ const SingleTypeFormWrapper = ({ allLayoutData, children, slug }) => { const toggleNotification = useNotification(); const dispatch = useDispatch(); - const { - componentsDataStructure, - contentTypeDataStructure, - data, - isLoading, - status, - } = useSelector(selectCrudReducer); + const { componentsDataStructure, contentTypeDataStructure, data, isLoading, status } = + useSelector(selectCrudReducer); const cleanReceivedData = useCallback( - data => { + (data) => { const cleaned = removePasswordFieldsFromData( data, allLayoutData.contentType, @@ -100,7 +95,7 @@ const SingleTypeFormWrapper = ({ allLayoutData, children, slug }) => { const CancelToken = axios.CancelToken; const source = CancelToken.source(); - const fetchData = async source => { + const fetchData = async (source) => { dispatch(getData()); setIsCreatingEntry(true); @@ -142,7 +137,7 @@ const SingleTypeFormWrapper = ({ allLayoutData, children, slug }) => { }, [cleanReceivedData, push, slug, dispatch, searchToSend, rawQuery, toggleNotification]); const displayErrors = useCallback( - err => { + (err) => { const errorPayload = err.response.data; let errorMessage = get(errorPayload, ['error', 'message'], 'Bad Request'); @@ -159,7 +154,7 @@ const SingleTypeFormWrapper = ({ allLayoutData, children, slug }) => { ); const onDelete = useCallback( - async trackerProperty => { + async (trackerProperty) => { try { trackUsageRef.current('willDeleteEntry', trackerProperty); diff --git a/packages/core/admin/admin/src/content-manager/components/SingleTypeFormWrapper/utils/getRequestUrl.js b/packages/core/admin/admin/src/content-manager/components/SingleTypeFormWrapper/utils/getRequestUrl.js index 4b108c472b..8ad02f911d 100644 --- a/packages/core/admin/admin/src/content-manager/components/SingleTypeFormWrapper/utils/getRequestUrl.js +++ b/packages/core/admin/admin/src/content-manager/components/SingleTypeFormWrapper/utils/getRequestUrl.js @@ -1,5 +1,5 @@ import { getRequestUrl } from '../../../utils'; -const requestURL = path => getRequestUrl(`single-types/${path}`); +const requestURL = (path) => getRequestUrl(`single-types/${path}`); export default requestURL; diff --git a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/Editor.js b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/Editor.js index c82a7d8649..cd52003914 100644 --- a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/Editor.js +++ b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/Editor.js @@ -37,7 +37,7 @@ const Editor = ({ }); CodeMirror.commands.newlineAndIndentContinueMarkdownList = newlineAndIndentContinueMarkdownList; - editorRef.current.on('change', doc => { + editorRef.current.on('change', (doc) => { onChangeRef.current({ target: { name, value: doc.getValue(), type: 'wysiwyg' } }); }); }, [editorRef, textareaRef, name, placeholder]); diff --git a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/EditorLayout.js b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/EditorLayout.js index bd3e262e78..8e4b0e5c69 100644 --- a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/EditorLayout.js +++ b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/EditorLayout.js @@ -78,7 +78,7 @@ export const EditorLayout = ({ children, isExpandMode, error, previewContent, on overflow="hidden" width="70%" height="70%" - onClick={e => e.stopPropagation()} + onClick={(e) => e.stopPropagation()} > diff --git a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/WysiwygFooter.js b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/WysiwygFooter.js index 92509c7f79..480ae839bc 100644 --- a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/WysiwygFooter.js +++ b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/WysiwygFooter.js @@ -28,7 +28,7 @@ const WysiwygFooter = ({ onToggleExpand }) => { }; WysiwygFooter.defaultProps = { - onToggleExpand: () => {}, + onToggleExpand() {}, }; WysiwygFooter.propTypes = { diff --git a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/WysiwygNav.js b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/WysiwygNav.js index 9cb75b0fc7..192abab576 100644 --- a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/WysiwygNav.js +++ b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/WysiwygNav.js @@ -45,7 +45,7 @@ const WysiwygNav = ({ const buttonMoreRef = useRef(); const handleTogglePopover = () => { - setVisiblePopover(prev => !prev); + setVisiblePopover((prev) => !prev); }; if (disabled || isPreviewMode) { @@ -110,7 +110,7 @@ const WysiwygNav = ({ id="selectTitle" placeholder={selectPlaceholder} size="S" - onChange={value => onActionClick(value, editorRef)} + onChange={(value) => onActionClick(value, editorRef)} > @@ -233,8 +233,8 @@ const WysiwygNav = ({ WysiwygNav.defaultProps = { isPreviewMode: false, - onActionClick: () => {}, - onToggleMediaLib: () => {}, + onActionClick() {}, + onToggleMediaLib() {}, onTogglePreviewMode: undefined, }; diff --git a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/index.js b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/index.js index 185b99df04..d8fdbe8e3c 100644 --- a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/index.js +++ b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/index.js @@ -52,11 +52,11 @@ const Wysiwyg = ({ const MediaLibraryDialog = components['media-library']; - const handleToggleMediaLib = () => setMediaLibVisible(prev => !prev); - const handleTogglePreviewMode = () => setIsPreviewMode(prev => !prev); + const handleToggleMediaLib = () => setMediaLibVisible((prev) => !prev); + const handleTogglePreviewMode = () => setIsPreviewMode((prev) => !prev); const handleToggleExpand = () => { setIsPreviewMode(false); - setIsExpandMode(prev => !prev); + setIsExpandMode((prev) => !prev); }; const handleActionClick = (value, currentEditorRef, togglePopover) => { @@ -100,8 +100,8 @@ const Wysiwyg = ({ } }; - const handleSelectAssets = files => { - const formattedFiles = files.map(f => ({ + const handleSelectAssets = (files) => { + const formattedFiles = files.map((f) => ({ alt: f.alternativeText || f.name, url: prefixFileUrlWithBackendUrl(f.url), mime: f.mime, diff --git a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/tests/index.test.js b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/tests/index.test.js index 1b30d01df4..3ae8fe6bcc 100644 --- a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/tests/index.test.js +++ b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/tests/index.test.js @@ -29,7 +29,7 @@ describe('Wysiwyg render and actions buttons', () => { let returnedValue; beforeEach(() => { - const onChange = jest.fn(e => { + const onChange = jest.fn((e) => { returnedValue = e.target.value; }); @@ -1402,9 +1402,9 @@ describe('Wysiwyg render and actions buttons', () => { fireEvent.click(renderedContainer.querySelector('#Underline')); const hasUnderlineMarkdown = getContainerByText((content, node) => { - const hasText = node => node.textContent === 'Underline'; + const hasText = (node) => node.textContent === 'Underline'; const nodeHasText = hasText(node); - const childrenDontHaveText = Array.from(node.children).every(child => !hasText(child)); + const childrenDontHaveText = Array.from(node.children).every((child) => !hasText(child)); return nodeHasText && childrenDontHaveText; }); @@ -1560,9 +1560,9 @@ Code fireEvent.click(renderedContainer.querySelector('#Underline')); const hasUnderlineMarkdown = containerQueryByText((content, node) => { - const hasText = node => node.textContent === 'Underline'; + const hasText = (node) => node.textContent === 'Underline'; const nodeHasText = hasText(node); - const childrenDontHaveText = Array.from(node.children).every(child => !hasText(child)); + const childrenDontHaveText = Array.from(node.children).every((child) => !hasText(child)); return nodeHasText && childrenDontHaveText; }); @@ -1646,7 +1646,7 @@ describe('Wysiwyg render actions with initial value', () => { let returnedValue = 'hello world'; beforeEach(() => { - const onChange = jest.fn(e => { + const onChange = jest.fn((e) => { returnedValue += e.target.value; }); diff --git a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/utils/utils.js b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/utils/utils.js index 1c6410a7cf..8540505899 100644 --- a/packages/core/admin/admin/src/content-manager/components/Wysiwyg/utils/utils.js +++ b/packages/core/admin/admin/src/content-manager/components/Wysiwyg/utils/utils.js @@ -30,7 +30,7 @@ export const replaceText = (markdownName, textToChange) => { return editedText; }; -export const insertText = markdownName => { +export const insertText = (markdownName) => { let editedText; // object to calculate text that will be selected after insert of markdown let selection = { start: markdownName.length, end: 0 }; @@ -75,7 +75,7 @@ export const insertText = markdownName => { return { editedText, selection }; }; -export const insertListOrTitle = markdown => { +export const insertListOrTitle = (markdown) => { let textToInsert; switch (markdown) { @@ -140,8 +140,8 @@ export const listHandler = (editor, listType) => { const selections = doc.listSelections(); let remove = null; - editor.current.operation(function() { - selections.forEach(function(selection) { + editor.current.operation(function () { + selections.forEach(function (selection) { const pos = [selection.head.line, selection.anchor.line].sort(); // Remove if the first text starts with it diff --git a/packages/core/admin/admin/src/content-manager/hooks/useContentTypeLayout/index.js b/packages/core/admin/admin/src/content-manager/hooks/useContentTypeLayout/index.js index 39b705960d..ea15a1211b 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useContentTypeLayout/index.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useContentTypeLayout/index.js @@ -7,7 +7,7 @@ const useContentTypeLayout = () => { const currentLayout = useSelector(selectLayout); const getComponentLayout = useCallback( - componentUid => { + (componentUid) => { return get(currentLayout, ['components', componentUid], {}); }, [currentLayout] diff --git a/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/index.js b/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/index.js index e1128e3740..f479b4b3c0 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/index.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/index.js @@ -7,10 +7,10 @@ import reducer, { initialState } from './reducer'; import { makeSelectModelAndComponentSchemas } from '../../pages/App/selectors'; import { getRequestUrl } from '../../utils'; -const useFetchContentTypeLayout = contentTypeUID => { +const useFetchContentTypeLayout = (contentTypeUID) => { const [{ error, isLoading, layout, layouts }, dispatch] = useReducer(reducer, initialState); const schemasSelector = useMemo(makeSelectModelAndComponentSchemas, []); - const { schemas } = useSelector(state => schemasSelector(state), shallowEqual); + const { schemas } = useSelector((state) => schemasSelector(state), shallowEqual); const isMounted = useRef(true); const getData = useCallback( @@ -68,7 +68,7 @@ const useFetchContentTypeLayout = contentTypeUID => { }, [contentTypeUID, getData]); const updateLayout = useCallback( - data => { + (data) => { dispatch({ type: 'UPDATE_LAYOUT', newLayout: formatLayouts(data, schemas), diff --git a/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/reducer.js b/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/reducer.js index 145f36eb02..fd496b281b 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/reducer.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/reducer.js @@ -9,7 +9,7 @@ export const initialState = { }; const reducer = (state, action) => - produce(state, draftState => { + produce(state, (draftState) => { switch (action.type) { case 'GET_DATA': { draftState.isLoading = true; diff --git a/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/tests/reducer.test.js b/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/tests/reducer.test.js index 4f520d199b..ce10c20009 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/tests/reducer.test.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/tests/reducer.test.js @@ -23,7 +23,7 @@ describe('CONTENT MANAGER | hooks | useFetchContentTypeLayout | reducer', () => const action = { type: 'GET_DATA' }; - const expected = produce(state, draft => { + const expected = produce(state, (draft) => { draft.isLoading = true; draft.error = null; }); @@ -37,7 +37,7 @@ describe('CONTENT MANAGER | hooks | useFetchContentTypeLayout | reducer', () => data: { contentType: { uid: 'test' } }, }; - const expected = produce(state, draft => { + const expected = produce(state, (draft) => { draft.isLoading = false; draft.layout = { contentType: { uid: 'test' } }; draft.layouts = { test: { contentType: { uid: 'test' } } }; @@ -52,7 +52,7 @@ describe('CONTENT MANAGER | hooks | useFetchContentTypeLayout | reducer', () => error: true, }; - const expected = produce(state, draft => { + const expected = produce(state, (draft) => { draft.isLoading = false; draft.error = true; }); diff --git a/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js b/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js index 6ae3d0e015..cec42ece63 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js @@ -1,7 +1,7 @@ import { cloneDeep, get, set } from 'lodash'; import { getRequestUrl, mergeMetasWithSchema } from '../../../utils'; -const getRelationModel = (targetModel, models) => models.find(model => model.uid === targetModel); +const getRelationModel = (targetModel, models) => models.find((model) => model.uid === targetModel); // editRelations is an array of strings... const formatEditRelationsLayoutWithMetas = (contentTypeConfiguration, models) => { @@ -46,7 +46,7 @@ const formatLayouts = (initialData, models) => { set(data, ['contentType', 'layouts', 'editRelations'], formattedEditRelationsLayout); set(data, ['contentType', 'layouts', 'list'], formattedListLayout); - Object.keys(data.components).forEach(compoUID => { + Object.keys(data.components).forEach((compoUID) => { const formattedCompoEditLayout = formatLayoutWithMetas( data.components[compoUID], ctUid, @@ -63,7 +63,7 @@ const createMetasSchema = (initialData, models) => { const data = mergeMetasWithSchema(cloneDeep(initialData), models, 'contentType'); const { components, contentType } = data; - const formatMetadatas = targetSchema => { + const formatMetadatas = (targetSchema) => { return Object.keys(targetSchema.metadatas).reduce((acc, current) => { const schema = get(targetSchema, ['attributes', current], {}); let metadatas = targetSchema.metadatas[current]; @@ -96,7 +96,7 @@ const createMetasSchema = (initialData, models) => { set(data, ['contentType', 'metadatas'], formatMetadatas(contentType)); - Object.keys(components).forEach(compoUID => { + Object.keys(components).forEach((compoUID) => { const currentCompo = components[compoUID]; const updatedMetas = formatMetadatas(currentCompo); @@ -108,7 +108,7 @@ const createMetasSchema = (initialData, models) => { const formatLayoutWithMetas = (contentTypeConfiguration, ctUid, models) => { const formatted = contentTypeConfiguration.layouts.edit.reduce((acc, current) => { - const row = current.map(attribute => { + const row = current.map((attribute) => { const fieldSchema = get(contentTypeConfiguration, ['attributes', attribute.name], {}); const data = { @@ -241,8 +241,8 @@ const generateRelationQueryInfosForComponents = ( return queryInfos; }; -const getDisplayedModels = models => - models.filter(model => model.isDisplayed).map(({ uid }) => uid); +const getDisplayedModels = (models) => + models.filter((model) => model.isDisplayed).map(({ uid }) => uid); export default formatLayouts; export { diff --git a/packages/core/admin/admin/src/content-manager/hooks/useFindRedirectionLink/index.js b/packages/core/admin/admin/src/content-manager/hooks/useFindRedirectionLink/index.js index 7d0a316be5..124fa0a7a1 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useFindRedirectionLink/index.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useFindRedirectionLink/index.js @@ -3,7 +3,7 @@ import { useQueryParams } from '@strapi/helper-plugin'; import selectMenuLinks from './selectors'; import getRedirectionLink from './utils/getRedirectionLink'; -const useFindRedirectionLink = slug => { +const useFindRedirectionLink = (slug) => { const [{ rawQuery }] = useQueryParams(); const collectionTypesMenuLinks = useSelector(selectMenuLinks); const redirectionLink = getRedirectionLink(collectionTypesMenuLinks, slug, rawQuery); diff --git a/packages/core/admin/admin/src/content-manager/hooks/useFindRedirectionLink/selectors.js b/packages/core/admin/admin/src/content-manager/hooks/useFindRedirectionLink/selectors.js index e9b9f09414..881cadb774 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useFindRedirectionLink/selectors.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useFindRedirectionLink/selectors.js @@ -1,4 +1,4 @@ -const selectMenuLinks = state => { +const selectMenuLinks = (state) => { const cmState = state['content-manager_app']; return cmState.collectionTypeLinks; diff --git a/packages/core/admin/admin/src/content-manager/hooks/useFindRedirectionLink/tests/selectors.test.js b/packages/core/admin/admin/src/content-manager/hooks/useFindRedirectionLink/tests/selectors.test.js index 7a95e0f7b0..05a12c4c5b 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useFindRedirectionLink/tests/selectors.test.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useFindRedirectionLink/tests/selectors.test.js @@ -1,5 +1,5 @@ +import { fixtures } from '@strapi/admin-test-utils/lib'; import selectMenuLinks from '../selectors'; -import { fixtures } from '../../../../../../../../admin-test-utils'; describe('CONTENT MANAGER | Containers | CollectionTypeFormWrapper | selectors', () => { let store; diff --git a/packages/core/admin/admin/src/content-manager/hooks/useSyncRbac/reducer.js b/packages/core/admin/admin/src/content-manager/hooks/useSyncRbac/reducer.js index 307ead6cca..42a3cad550 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useSyncRbac/reducer.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useSyncRbac/reducer.js @@ -12,7 +12,7 @@ export const initialState = { const rbacManagerReducer = (state = initialState, action) => // eslint-disable-next-line consistent-return - produce(state, draftState => { + produce(state, (draftState) => { switch (action.type) { case SET_PERMISSIONS: { draftState.permissions = Object.entries(action.permissions).reduce((acc, current) => { diff --git a/packages/core/admin/admin/src/content-manager/hooks/useSyncRbac/selectors.js b/packages/core/admin/admin/src/content-manager/hooks/useSyncRbac/selectors.js index ce8505f9f4..ffbd4ee762 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useSyncRbac/selectors.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useSyncRbac/selectors.js @@ -1,4 +1,4 @@ -export const selectPermissions = state => state['content-manager_rbacManager'].permissions; +export const selectPermissions = (state) => state['content-manager_rbacManager'].permissions; -export const selectCollectionTypePermissions = state => +export const selectCollectionTypePermissions = (state) => state.rbacProvider.collectionTypesRelatedPermissions; diff --git a/packages/core/admin/admin/src/content-manager/hooks/useSyncRbac/tests/selectors.test.js b/packages/core/admin/admin/src/content-manager/hooks/useSyncRbac/tests/selectors.test.js index 416c47c031..92134b8a5e 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useSyncRbac/tests/selectors.test.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useSyncRbac/tests/selectors.test.js @@ -1,4 +1,4 @@ -import { fixtures } from '../../../../../../../../admin-test-utils/lib'; +import { fixtures } from '@strapi/admin-test-utils/lib/lib'; import { selectPermissions, selectCollectionTypePermissions } from '../selectors'; describe('Admin | content manager | hooks | useSyncRbac | selectors', () => { diff --git a/packages/core/admin/admin/src/content-manager/pages/App/LeftMenu/index.js b/packages/core/admin/admin/src/content-manager/pages/App/LeftMenu/index.js index 851b75fc57..b7e0ddcd2c 100644 --- a/packages/core/admin/admin/src/content-manager/pages/App/LeftMenu/index.js +++ b/packages/core/admin/admin/src/content-manager/pages/App/LeftMenu/index.js @@ -22,19 +22,19 @@ import getTrad from '../../../utils/getTrad'; import { makeSelectModelLinks } from '../selectors'; const matchByTitle = (links, search) => - matchSorter(links, toLower(search), { keys: [item => toLower(item.title)] }); + matchSorter(links, toLower(search), { keys: [(item) => toLower(item.title)] }); const LeftMenu = () => { const [search, setSearch] = useState(''); const { formatMessage } = useIntl(); const modelLinksSelector = useMemo(makeSelectModelLinks, []); const { collectionTypeLinks, singleTypeLinks } = useSelector( - state => modelLinksSelector(state), + (state) => modelLinksSelector(state), shallowEqual ); - const toIntl = links => - links.map(link => { + const toIntl = (links) => + links.map((link) => { return { ...link, title: formatMessage({ id: link.title, defaultMessage: link.title }), @@ -52,7 +52,7 @@ const LeftMenu = () => { defaultMessage: 'Collection Types', }, searchable: true, - links: sortBy(matchByTitle(intlCollectionTypeLinks, search), object => + links: sortBy(matchByTitle(intlCollectionTypeLinks, search), (object) => object.title.toLowerCase() ), }, @@ -63,7 +63,7 @@ const LeftMenu = () => { defaultMessage: 'Single Types', }, searchable: true, - links: sortBy(matchByTitle(intlSingleTypeLinks, search), object => + links: sortBy(matchByTitle(intlSingleTypeLinks, search), (object) => object.title.toLowerCase() ), }, @@ -96,7 +96,7 @@ const LeftMenu = () => { })} /> - {menu.map(section => { + {menu.map((section) => { const label = formatMessage( { id: section.title.id, defaultMessage: section.title.defaultMessage }, section.title.values @@ -108,7 +108,7 @@ const LeftMenu = () => { label={label} badgeLabel={section.links.length.toString()} > - {section.links.map(link => { + {section.links.map((link) => { const search = link.search ? `?${link.search}` : ''; return ( diff --git a/packages/core/admin/admin/src/content-manager/pages/App/index.js b/packages/core/admin/admin/src/content-manager/pages/App/index.js index 0868edded1..9621b9d270 100644 --- a/packages/core/admin/admin/src/content-manager/pages/App/index.js +++ b/packages/core/admin/admin/src/content-manager/pages/App/index.js @@ -28,7 +28,7 @@ const cmPermissions = permissions.contentManager; const App = () => { const contentTypeMatch = useRouteMatch(`/content-manager/:kind/:uid`); const { status, collectionTypeLinks, singleTypeLinks, models, refetchData } = useModels(); - const authorisedModels = sortBy([...collectionTypeLinks, ...singleTypeLinks], model => + const authorisedModels = sortBy([...collectionTypeLinks, ...singleTypeLinks], (model) => model.title.toLowerCase() ); const { pathname } = useLocation(); @@ -114,7 +114,7 @@ const App = () => { export { App }; -export default () => { +export default function () { const { formatMessage } = useIntl(); return ( @@ -125,4 +125,4 @@ export default () => { ); -}; +} diff --git a/packages/core/admin/admin/src/content-manager/pages/App/reducer.js b/packages/core/admin/admin/src/content-manager/pages/App/reducer.js index 3551a3f0bb..f50aff92c3 100644 --- a/packages/core/admin/admin/src/content-manager/pages/App/reducer.js +++ b/packages/core/admin/admin/src/content-manager/pages/App/reducer.js @@ -15,7 +15,7 @@ const initialState = { }; const mainReducer = (state = initialState, action) => - produce(state, draftState => { + produce(state, (draftState) => { switch (action.type) { case GET_DATA: { draftState.status = 'loading'; diff --git a/packages/core/admin/admin/src/content-manager/pages/App/selectors.js b/packages/core/admin/admin/src/content-manager/pages/App/selectors.js index d05191c5eb..e5b433387e 100644 --- a/packages/core/admin/admin/src/content-manager/pages/App/selectors.js +++ b/packages/core/admin/admin/src/content-manager/pages/App/selectors.js @@ -1,19 +1,19 @@ import { createSelector } from 'reselect'; import { initialState } from './reducer'; -const selectAppDomain = () => state => { +const selectAppDomain = () => (state) => { return state['content-manager_app'] || initialState; }; const makeSelectApp = () => - createSelector(selectAppDomain(), substate => { + createSelector(selectAppDomain(), (substate) => { return substate; }); -const makeSelectModels = () => createSelector(selectAppDomain(), state => state.models); +const makeSelectModels = () => createSelector(selectAppDomain(), (state) => state.models); const makeSelectModelLinks = () => - createSelector(selectAppDomain(), state => ({ + createSelector(selectAppDomain(), (state) => ({ collectionTypeLinks: state.collectionTypeLinks, singleTypeLinks: state.singleTypeLinks, })); diff --git a/packages/core/admin/admin/src/content-manager/pages/App/tests/index.test.js b/packages/core/admin/admin/src/content-manager/pages/App/tests/index.test.js index fabcc8532e..218522a548 100644 --- a/packages/core/admin/admin/src/content-manager/pages/App/tests/index.test.js +++ b/packages/core/admin/admin/src/content-manager/pages/App/tests/index.test.js @@ -25,7 +25,13 @@ jest.mock('@fortawesome/react-fontawesome', () => ({ FontAwesomeIcon: () => null, })); -jest.mock('../../NoContentType', () => () =>
    NoContentType
    ); +jest.mock( + '../../NoContentType', + () => + function () { + return
    NoContentType
    ; + } +); jest.mock('@strapi/helper-plugin', () => ({ ...jest.requireActual('@strapi/helper-plugin'), diff --git a/packages/core/admin/admin/src/content-manager/pages/App/tests/reducer.test.js b/packages/core/admin/admin/src/content-manager/pages/App/tests/reducer.test.js index e8eac78778..7817b09107 100644 --- a/packages/core/admin/admin/src/content-manager/pages/App/tests/reducer.test.js +++ b/packages/core/admin/admin/src/content-manager/pages/App/tests/reducer.test.js @@ -22,7 +22,7 @@ describe('Content Manager | App | reducer', () => { it('should handle the getData action correctly', () => { state.status = 'resolved'; - const expected = produce(state, draft => { + const expected = produce(state, (draft) => { draft.status = 'loading'; }); @@ -50,7 +50,7 @@ describe('Content Manager | App | reducer', () => { isDisplayed: true, }, ]; - const expected = produce(state, draft => { + const expected = produce(state, (draft) => { draft.status = 'resolved'; draft.components = ['test']; draft.models = ['test']; diff --git a/packages/core/admin/admin/src/content-manager/pages/App/tests/selectors.test.js b/packages/core/admin/admin/src/content-manager/pages/App/tests/selectors.test.js index 2329e7c4d9..7c266f69d0 100644 --- a/packages/core/admin/admin/src/content-manager/pages/App/tests/selectors.test.js +++ b/packages/core/admin/admin/src/content-manager/pages/App/tests/selectors.test.js @@ -1,4 +1,4 @@ -import { fixtures } from '../../../../../../../../admin-test-utils'; +import { fixtures } from '@strapi/admin-test-utils/lib'; import { makeSelectModels } from '../selectors'; describe('Content Manager | App | selectors', () => { diff --git a/packages/core/admin/admin/src/content-manager/pages/App/useModels.js b/packages/core/admin/admin/src/content-manager/pages/App/useModels.js index 30ceea5a56..382114690a 100644 --- a/packages/core/admin/admin/src/content-manager/pages/App/useModels.js +++ b/packages/core/admin/admin/src/content-manager/pages/App/useModels.js @@ -35,7 +35,7 @@ const useModels = () => { data: { data: models }, }, ] = await Promise.all( - ['components', 'content-types'].map(endPoint => + ['components', 'content-types'].map((endPoint) => axiosInstance.get(getRequestUrl(endPoint), { cancelToken: source.token }) ) ); diff --git a/packages/core/admin/admin/src/content-manager/pages/App/utils/generateModelsLinks.js b/packages/core/admin/admin/src/content-manager/pages/App/utils/generateModelsLinks.js index b36dee0fa6..8030c25829 100644 --- a/packages/core/admin/admin/src/content-manager/pages/App/utils/generateModelsLinks.js +++ b/packages/core/admin/admin/src/content-manager/pages/App/utils/generateModelsLinks.js @@ -3,8 +3,8 @@ import { stringify } from 'qs'; const generateLinks = (links, type, configurations = []) => { return links - .filter(link => link.isDisplayed) - .map(link => { + .filter((link) => link.isDisplayed) + .map((link) => { const collectionTypesPermissions = [ { action: 'plugin::content-manager.explorer.create', subject: link.uid }, { action: 'plugin::content-manager.explorer.read', subject: link.uid }, diff --git a/packages/core/admin/admin/src/content-manager/pages/App/utils/tests/getContentTypeLinks.js b/packages/core/admin/admin/src/content-manager/pages/App/utils/tests/getContentTypeLinks.js index 65e993734d..37dae5842d 100644 --- a/packages/core/admin/admin/src/content-manager/pages/App/utils/tests/getContentTypeLinks.js +++ b/packages/core/admin/admin/src/content-manager/pages/App/utils/tests/getContentTypeLinks.js @@ -70,7 +70,7 @@ describe('checkPermissions', () => { }, ]; - request.mockImplementation(url => { + request.mockImplementation((url) => { if (url === '/content-manager/content-types') { return Promise.resolve({ data }); } diff --git a/packages/core/admin/admin/src/content-manager/pages/CollectionTypeRecursivePath/index.js b/packages/core/admin/admin/src/content-manager/pages/CollectionTypeRecursivePath/index.js index f5a8ae1654..0fbed8d7fb 100644 --- a/packages/core/admin/admin/src/content-manager/pages/CollectionTypeRecursivePath/index.js +++ b/packages/core/admin/admin/src/content-manager/pages/CollectionTypeRecursivePath/index.js @@ -81,7 +81,7 @@ const CollectionTypeRecursivePath = ({ { path: ':id', comp: EditViewLayoutManager }, { path: '', comp: ListViewLayout }, ].map(({ path, comp }) => ( - renderRoute(props, comp)} /> + renderRoute(props, comp)} /> )); return ( diff --git a/packages/core/admin/admin/src/content-manager/pages/ComponentSetttingsView/index.js b/packages/core/admin/admin/src/content-manager/pages/ComponentSetttingsView/index.js index dbba86ff3c..8480c5f2db 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ComponentSetttingsView/index.js +++ b/packages/core/admin/admin/src/content-manager/pages/ComponentSetttingsView/index.js @@ -16,14 +16,14 @@ const cmPermissions = permissions.contentManager; const ComponentSettingsView = () => { const [{ isLoading, data: layout }, dispatch] = useReducer(crudReducer, crudInitialState); const schemasSelector = useMemo(makeSelectModelAndComponentSchemas, []); - const { schemas } = useSelector(state => schemasSelector(state), shallowEqual); + const { schemas } = useSelector((state) => schemasSelector(state), shallowEqual); const { uid } = useParams(); useEffect(() => { const CancelToken = axios.CancelToken; const source = CancelToken.source(); - const fetchData = async source => { + const fetchData = async (source) => { try { dispatch(getData()); diff --git a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/ComponentFieldList.js b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/ComponentFieldList.js index d7df4f7ccb..73ce036517 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/ComponentFieldList.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/ComponentFieldList.js @@ -22,7 +22,7 @@ const ComponentFieldList = ({ componentUid }) => { {componentLayout.map((row, index) => ( // eslint-disable-next-line react/no-array-index-key - {row.map(rowContent => ( + {row.map((rowContent) => ( ({ + collect: (monitor) => ({ canDrop: monitor.canDrop(), clientOffset: monitor.getClientOffset(), isOver: monitor.isOver(), @@ -225,7 +225,7 @@ const DisplayedFieldButton = ({ }); const [{ isDragging, getItem }, drag, dragPreview] = useDrag({ type: ItemTypes.EDIT_FIELD, - item: () => { + item() { setIsDraggingSibling(true); return { @@ -244,11 +244,11 @@ const DisplayedFieldButton = ({ // We will need to add a 12 size _TEMP_ div to offer a drop target between each existing row. return name !== '_TEMP_'; }, - collect: monitor => ({ + collect: (monitor) => ({ isDragging: monitor.isDragging(), getItem: monitor.getItem(), }), - end: () => { + end() { setIsDraggingSibling(false); }, }); @@ -344,7 +344,7 @@ const DisplayedFieldButton = ({ as="span" type="button" ref={refs.dragRef} - onClick={e => e.stopPropagation()} + onClick={(e) => e.stopPropagation()} alignItems="center" paddingLeft={3} paddingRight={3} diff --git a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFields.js b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFields.js index 4f6c8d43fc..97d8753bf5 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFields.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFields.js @@ -57,7 +57,7 @@ const DisplayedFields = ({ editLayout, editLayoutRemainingFields, onRemoveField, variant="secondary" disabled={editLayoutRemainingFields.length === 0} > - {editLayoutRemainingFields.map(field => ( + {editLayoutRemainingFields.map((field) => ( onAddField(field)}> {field} diff --git a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/DynamicZoneList.js b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/DynamicZoneList.js index e1e02251a7..901dd1e03a 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/DynamicZoneList.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/DynamicZoneList.js @@ -46,7 +46,7 @@ const DynamicZoneList = ({ components }) => { return ( - {components.map(componentUid => ( + {components.map((componentUid) => ( { + onChange={(e) => { onChange({ target: { name, value: e.target.checked } }); }} checked={value} @@ -37,10 +37,10 @@ const GenericInput = ({ type, options, onChange, value, name, ...inputProps }) = { + onChange={(value) => { onSizeChange({ name: selectedField, value }); }} label={formatMessage({ diff --git a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/RelationalFieldButton.js b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/RelationalFieldButton.js index 39a462ec91..eb8446f5f0 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/RelationalFieldButton.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/RelationalFieldButton.js @@ -56,10 +56,10 @@ const RelationalFieldButton = ({ const [{ isDragging }, drag, dragPreview] = useDrag({ type: ItemTypes.EDIT_RELATION, - item: () => { + item() { return { index, labelField: children, name }; }, - collect: monitor => ({ + collect: (monitor) => ({ isDragging: monitor.isDragging(), }), }); @@ -94,7 +94,7 @@ const RelationalFieldButton = ({ as="span" type="button" ref={dragButtonRef} - onClick={e => e.stopPropagation()} + onClick={(e) => e.stopPropagation()} alignItems="center" paddingLeft={3} paddingRight={3} diff --git a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/RelationalFields.js b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/RelationalFields.js index 524912d4d9..e2eb5fbc36 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/RelationalFields.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/components/RelationalFields.js @@ -77,7 +77,7 @@ const RelationalFields = ({ variant="secondary" disabled={editRelationsLayoutRemainingFields.length === 0} > - {editRelationsLayoutRemainingFields.map(remainingRelation => ( + {editRelationsLayoutRemainingFields.map((remainingRelation) => ( { + const entryTitleOptions = Object.keys(attributes).filter((attr) => { const type = get(attributes, [attr, 'type'], ''); return ( @@ -68,22 +68,22 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd const editLayout = get(modifiedData, ['layouts', 'edit'], []); const displayedFields = flatMap(editLayout, 'rowContent'); const editLayoutRemainingFields = Object.keys(modifiedData.attributes) - .filter(attr => { + .filter((attr) => { if (!isContentTypeView) { return true; } return get(modifiedData, ['attributes', attr, 'type'], '') !== 'relation'; }) - .filter(attr => get(modifiedData, ['metadatas', attr, 'edit', 'visible'], false) === true) - .filter(attr => { - return displayedFields.findIndex(el => el.name === attr) === -1; + .filter((attr) => get(modifiedData, ['metadatas', attr, 'edit', 'visible'], false) === true) + .filter((attr) => { + return displayedFields.findIndex((el) => el.name === attr) === -1; }) .sort(); const relationsLayout = get(modifiedData, ['layouts', 'editRelations'], []); const editRelationsLayoutRemainingFields = Object.keys(attributes) - .filter(attr => attributes[attr].type === 'relation') - .filter(attr => relationsLayout.indexOf(attr) === -1); + .filter((attr) => attributes[attr].type === 'relation') + .filter((attr) => relationsLayout.indexOf(attr) === -1); const handleChange = ({ target: { name, value } }) => { dispatch({ @@ -94,11 +94,11 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd }; const handleToggleModal = () => { - setIsModalFormOpen(prev => !prev); + setIsModalFormOpen((prev) => !prev); }; const toggleConfirmDialog = () => { - setIsConfirmDialogOpen(prev => !prev); + setIsConfirmDialogOpen((prev) => !prev); }; const handleMetaChange = ({ target: { name, value } }) => { @@ -117,7 +117,7 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd }); }; - const handleMetaSubmit = e => { + const handleMetaSubmit = (e) => { e.preventDefault(); dispatch({ type: 'SUBMIT_META_FORM', @@ -125,17 +125,17 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd handleToggleModal(); }; - const handleSubmit = e => { + const handleSubmit = (e) => { e.preventDefault(); toggleConfirmDialog(); }; const submitMutation = useMutation( - body => { + (body) => { return putCMSettingsEV(body, slug, isContentTypeView); }, { - onSuccess: ({ data }) => { + onSuccess({ data }) { if (updateLayout) { updateLayout(data.data); } @@ -145,7 +145,7 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd toggleConfirmDialog(); trackUsage('didEditEditSettings'); }, - onError: () => { + onError() { toggleNotification({ type: 'warning', message: { id: 'notification.error' } }); }, } @@ -215,7 +215,7 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd onMoveField={handleMoveField} moveRow={moveRow} moveItem={moveItem} - setEditFieldToSelect={name => { + setEditFieldToSelect={(name) => { dispatch({ type: 'SET_FIELD_TO_EDIT', name, @@ -242,7 +242,7 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd navigationAction={ } - onClick={e => { + onClick={(e) => { e.preventDefault(); goBack(); }} @@ -292,7 +292,7 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd id: getTrad('containers.SettingPage.editSettings.entry.title.description'), defaultMessage: 'Set the display field of your entry', })} - onChange={value => { + onChange={(value) => { handleChange({ target: { name: 'settings.mainField', @@ -302,7 +302,7 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd }} value={modifiedData.settings.mainField} > - {entryTitleOptions.map(attribute => ( + {entryTitleOptions.map((attribute) => ( @@ -325,7 +325,7 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd attributes={attributes} editLayout={editLayout} editLayoutRemainingFields={editLayoutRemainingFields} - onAddField={field => { + onAddField={(field) => { dispatch({ type: 'ON_ADD_FIELD', name: field, @@ -345,8 +345,8 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd dispatch({ type: 'ADD_RELATION', name })} - onRemoveField={index => dispatch({ type: 'REMOVE_RELATION', index })} + onAddField={(name) => dispatch({ type: 'ADD_RELATION', name })} + onRemoveField={(index) => dispatch({ type: 'REMOVE_RELATION', index })} /> )} diff --git a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/reducer.js b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/reducer.js index 0d582ab6ed..e505d2f87e 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/reducer.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/reducer.js @@ -17,7 +17,7 @@ const initialState = { const reducer = (state = initialState, action) => // eslint-disable-next-line consistent-return - produce(state, draftState => { + produce(state, (draftState) => { const layoutPathEdit = ['modifiedData', 'layouts', 'edit']; const layoutPathRelations = ['modifiedData', 'layouts', 'editRelations']; diff --git a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/utils/createPossibleMainFieldsForModelsAndComponents.js b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/utils/createPossibleMainFieldsForModelsAndComponents.js index 5676922a5b..06fd9dd28f 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/utils/createPossibleMainFieldsForModelsAndComponents.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/utils/createPossibleMainFieldsForModelsAndComponents.js @@ -1,9 +1,9 @@ import { get } from 'lodash'; -const createPossibleMainFieldsForModelsAndComponents = array => { +const createPossibleMainFieldsForModelsAndComponents = (array) => { return array.reduce((acc, current) => { const attributes = get(current, ['attributes'], {}); - const possibleMainFields = Object.keys(attributes).filter(attr => { + const possibleMainFields = Object.keys(attributes).filter((attr) => { return ![ 'boolean', 'component', diff --git a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/utils/getInputProps.js b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/utils/getInputProps.js index 5f089c124d..bd66239495 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/utils/getInputProps.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/utils/getInputProps.js @@ -1,6 +1,6 @@ import { getTrad } from '../../../utils'; -const getInputProps = fieldName => { +const getInputProps = (fieldName) => { let type; switch (fieldName) { diff --git a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/utils/layout.js b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/utils/layout.js index 9acb0d7049..2b655b6476 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/utils/layout.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditSettingsView/utils/layout.js @@ -1,7 +1,7 @@ /* eslint-disable indent */ -const getRowSize = arr => arr.reduce((sum, value) => sum + value.size, 0); +const getRowSize = (arr) => arr.reduce((sum, value) => sum + value.size, 0); -const createLayout = arr => { +const createLayout = (arr) => { return arr.reduce((acc, current, index) => { const row = { rowId: index, rowContent: current }; @@ -9,7 +9,7 @@ const createLayout = arr => { }, []); }; -const formatLayout = arr => { +const formatLayout = (arr) => { return arr .reduce((acc, current) => { let toPush = []; @@ -33,7 +33,7 @@ const formatLayout = arr => { ? 0 : Math.max.apply( Math, - acc.map(o => o.rowId) + acc.map((o) => o.rowId) ) + 1; const currentRowSize = getRowSize(currentRow); @@ -57,8 +57,8 @@ const formatLayout = arr => { return acc; }, []) - .filter(row => row.rowContent.length > 0) - .filter(row => { + .filter((row) => row.rowContent.length > 0) + .filter((row) => { if (row.rowContent.length === 1) { return row.rowContent[0].name !== '_TEMP_'; } @@ -67,15 +67,15 @@ const formatLayout = arr => { }); }; -const unformatLayout = arr => { +const unformatLayout = (arr) => { return arr.reduce((acc, current) => { - const currentRow = current.rowContent.filter(content => content.name !== '_TEMP_'); + const currentRow = current.rowContent.filter((content) => content.name !== '_TEMP_'); return acc.concat([currentRow]); }, []); }; -const getDefaultInputSize = type => { +const getDefaultInputSize = (type) => { switch (type) { case 'boolean': case 'date': @@ -97,7 +97,7 @@ const getDefaultInputSize = type => { const getFieldSize = (name, layouts = []) => { return layouts.reduce((acc, { rowContent }) => { - const size = rowContent.find(row => row.name === name)?.size ?? null; + const size = rowContent.find((row) => row.name === name)?.size ?? null; if (size) { acc = size; @@ -108,8 +108,8 @@ const getFieldSize = (name, layouts = []) => { }; const setFieldSize = (name, size, layouts = []) => { - return layouts.map(row => { - row.rowContent = row.rowContent.map(column => { + return layouts.map((row) => { + row.rowContent = row.rowContent.map((column) => { if (column.name === name) { return { ...column, diff --git a/packages/core/admin/admin/src/content-manager/pages/EditView/DeleteLink/index.js b/packages/core/admin/admin/src/content-manager/pages/EditView/DeleteLink/index.js index 85402afe75..73b0b985a2 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditView/DeleteLink/index.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditView/DeleteLink/index.js @@ -15,7 +15,7 @@ const DeleteLink = ({ isCreatingEntry, onDelete, onDeleteSucceeded, trackerPrope const { formatMessage } = useIntl(); const toggleNotification = useNotification(); - const toggleWarningDelete = () => setWarningDelete(prevState => !prevState); + const toggleWarningDelete = () => setWarningDelete((prevState) => !prevState); const handleConfirmDelete = async () => { try { diff --git a/packages/core/admin/admin/src/content-manager/pages/EditView/DeleteLink/utils/connect.js b/packages/core/admin/admin/src/content-manager/pages/EditView/DeleteLink/utils/connect.js index b7735feb99..e42d7e8a28 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditView/DeleteLink/utils/connect.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditView/DeleteLink/utils/connect.js @@ -1,7 +1,7 @@ import React from 'react'; function connect(WrappedComponent, select) { - return function(props) { + return function (props) { // eslint-disable-next-line react/prop-types const selectors = select(); diff --git a/packages/core/admin/admin/src/content-manager/pages/EditView/DraftAndPublishBadge/tests/index.test.js b/packages/core/admin/admin/src/content-manager/pages/EditView/DraftAndPublishBadge/tests/index.test.js index 478b36a4d6..b430e7c999 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditView/DraftAndPublishBadge/tests/index.test.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditView/DraftAndPublishBadge/tests/index.test.js @@ -12,7 +12,7 @@ import { ThemeProvider, lightTheme } from '@strapi/design-system'; import { IntlProvider } from 'react-intl'; import { DraftAndPublishBadge } from '../index'; -const makeApp = props => ( +const makeApp = (props) => ( diff --git a/packages/core/admin/admin/src/content-manager/pages/EditView/DraftAndPublishBadge/utils/connect.js b/packages/core/admin/admin/src/content-manager/pages/EditView/DraftAndPublishBadge/utils/connect.js index b7735feb99..e42d7e8a28 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditView/DraftAndPublishBadge/utils/connect.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditView/DraftAndPublishBadge/utils/connect.js @@ -1,7 +1,7 @@ import React from 'react'; function connect(WrappedComponent, select) { - return function(props) { + return function (props) { // eslint-disable-next-line react/prop-types const selectors = select(); diff --git a/packages/core/admin/admin/src/content-manager/pages/EditView/Header/index.js b/packages/core/admin/admin/src/content-manager/pages/EditView/Header/index.js index b3e5d9b96d..ca1c1f4974 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditView/Header/index.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditView/Header/index.js @@ -134,8 +134,8 @@ const Header = ({ ); } - const toggleWarningUnpublish = () => setWarningUnpublish(prevState => !prevState); - const toggleWarningDraftRelation = () => setShowWarningDraftRelation(prevState => !prevState); + const toggleWarningUnpublish = () => setWarningUnpublish((prevState) => !prevState); + const toggleWarningDraftRelation = () => setShowWarningDraftRelation((prevState) => !prevState); const handlePublish = () => { toggleWarningDraftRelation(); @@ -165,7 +165,7 @@ const Header = ({ // Needed in order to redirect the user with the correct search params // Since parts is using a link from react-router-dom the best way to do it is to disable the // event - onClick={e => { + onClick={(e) => { e.preventDefault(); goBack(); }} @@ -254,7 +254,7 @@ const Header = ({ }, { br: () =>
    , - b: chunks => {chunks}, + b: (chunks) => {chunks}, count: draftRelationsCountRef.current, } )} diff --git a/packages/core/admin/admin/src/content-manager/pages/EditView/Header/utils/connect.js b/packages/core/admin/admin/src/content-manager/pages/EditView/Header/utils/connect.js index b7735feb99..e42d7e8a28 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditView/Header/utils/connect.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditView/Header/utils/connect.js @@ -1,7 +1,7 @@ import React from 'react'; function connect(WrappedComponent, select) { - return function(props) { + return function (props) { // eslint-disable-next-line react/prop-types const selectors = select(); diff --git a/packages/core/admin/admin/src/content-manager/pages/EditView/Header/utils/getDraftRelations.js b/packages/core/admin/admin/src/content-manager/pages/EditView/Header/utils/getDraftRelations.js index 523266a145..e57b1f83de 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditView/Header/utils/getDraftRelations.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditView/Header/utils/getDraftRelations.js @@ -14,7 +14,7 @@ const getDraftRelations = (data, ctSchema, components) => { } if (type === 'dynamiczone') { - currentData.forEach(curr => { + currentData.forEach((curr) => { const compoSchema = get(components, curr.__component, {}); acc += getDraftRelationsCount(curr, compoSchema); @@ -27,7 +27,7 @@ const getDraftRelations = (data, ctSchema, components) => { const compoSchema = get(components, compoUID, {}); if (isRepeatable) { - currentData.forEach(curr => { + currentData.forEach((curr) => { acc += getDraftRelationsCount(curr, compoSchema); }); } else { @@ -43,7 +43,7 @@ const getDraftRelations = (data, ctSchema, components) => { acc += 1; } } else { - currentData.forEach(value => { + currentData.forEach((value) => { if (has(value, 'publishedAt') && isEmpty(value.publishedAt)) { acc += 1; } diff --git a/packages/core/admin/admin/src/content-manager/pages/EditView/Informations/utils/getUnits.js b/packages/core/admin/admin/src/content-manager/pages/EditView/Informations/utils/getUnits.js index 89ad6f06c7..b8f2bda420 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditView/Informations/utils/getUnits.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditView/Informations/utils/getUnits.js @@ -4,7 +4,7 @@ const msPerDay = msPerHour * 24; const msPerMonth = msPerDay * 30; const msPerYear = msPerDay * 365; -const getUnits = value => { +const getUnits = (value) => { if (value < msPerMinute) { return { unit: 'second', value: -Math.round(value / 1000) }; } diff --git a/packages/core/admin/admin/src/content-manager/pages/EditView/index.js b/packages/core/admin/admin/src/content-manager/pages/EditView/index.js index 0e6669cb00..8ff1f2851d 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditView/index.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditView/index.js @@ -44,13 +44,10 @@ const EditView = ({ }) => { const { trackUsage } = useTracking(); const { formatMessage } = useIntl(); - const { - createActionAllowedFields, - readActionAllowedFields, - updateActionAllowedFields, - } = useMemo(() => { - return getFieldsActionMatchingPermissions(userPermissions, slug); - }, [userPermissions, slug]); + const { createActionAllowedFields, readActionAllowedFields, updateActionAllowedFields } = + useMemo(() => { + return getFieldsActionMatchingPermissions(userPermissions, slug); + }, [userPermissions, slug]); const configurationPermissions = useMemo(() => { return isSingleType @@ -70,9 +67,9 @@ const EditView = ({ ); // Check if a block is a dynamic zone - const isDynamicZone = useCallback(block => { - return block.every(subBlock => { - return subBlock.every(obj => obj.fieldSchema.type === 'dynamiczone'); + const isDynamicZone = useCallback((block) => { + return block.every((subBlock) => { + return subBlock.every((obj) => obj.fieldSchema.type === 'dynamiczone'); }); }, []); diff --git a/packages/core/admin/admin/src/content-manager/pages/EditView/utils/createAttributesLayout.js b/packages/core/admin/admin/src/content-manager/pages/EditView/utils/createAttributesLayout.js index 4a870983cf..793d5b93bd 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditView/utils/createAttributesLayout.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditView/utils/createAttributesLayout.js @@ -4,7 +4,7 @@ import { get, isEmpty } from 'lodash'; /* eslint-disable no-unused-vars */ const createAttributesLayout = (currentLayout, attributes) => { - const getType = name => get(attributes, [name, 'type'], ''); + const getType = (name) => get(attributes, [name, 'type'], ''); let currentRowIndex = 0; const newLayout = []; @@ -29,7 +29,7 @@ const createAttributesLayout = (currentLayout, attributes) => { } } - return newLayout.filter(arr => arr.length > 0); + return newLayout.filter((arr) => arr.length > 0); }; export default createAttributesLayout; diff --git a/packages/core/admin/admin/src/content-manager/pages/EditView/utils/getFieldsActionMatchingPermissions.js b/packages/core/admin/admin/src/content-manager/pages/EditView/utils/getFieldsActionMatchingPermissions.js index 7a38071e65..a50ffa348a 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditView/utils/getFieldsActionMatchingPermissions.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditView/utils/getFieldsActionMatchingPermissions.js @@ -2,7 +2,7 @@ import { uniq, flatMap } from 'lodash'; import { findMatchingPermissions } from '@strapi/helper-plugin'; const getFieldsActionMatchingPermissions = (userPermissions, slug) => { - const getMatchingPermissions = action => { + const getMatchingPermissions = (action) => { const matched = findMatchingPermissions(userPermissions, [ { action: `plugin::content-manager.explorer.${action}`, diff --git a/packages/core/admin/admin/src/content-manager/pages/EditViewLayoutManager/Permissions.js b/packages/core/admin/admin/src/content-manager/pages/EditViewLayoutManager/Permissions.js index fb0b632721..8d4d4eb715 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditViewLayoutManager/Permissions.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditViewLayoutManager/Permissions.js @@ -5,7 +5,7 @@ import isEqual from 'react-fast-compare'; import EditView from '../EditView'; import { generatePermissionsObject } from '../../utils'; -const Permissions = props => { +const Permissions = (props) => { const viewPermissions = useMemo(() => generatePermissionsObject(props.slug), [props.slug]); const { isLoading, allowedActions } = useRBAC(viewPermissions, props.userPermissions); diff --git a/packages/core/admin/admin/src/content-manager/pages/EditViewLayoutManager/reducer.js b/packages/core/admin/admin/src/content-manager/pages/EditViewLayoutManager/reducer.js index 7b6427fc94..a33dc0c8e1 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditViewLayoutManager/reducer.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditViewLayoutManager/reducer.js @@ -12,7 +12,7 @@ export const initialState = { const editViewManagerReducer = (state = initialState, action) => // eslint-disable-next-line consistent-return - produce(state, drafState => { + produce(state, (drafState) => { switch (action.type) { case RESET_PROPS: { drafState.currentLayout = null; diff --git a/packages/core/admin/admin/src/content-manager/pages/EditViewLayoutManager/selectors.js b/packages/core/admin/admin/src/content-manager/pages/EditViewLayoutManager/selectors.js index 23ef166c45..df96465c24 100644 --- a/packages/core/admin/admin/src/content-manager/pages/EditViewLayoutManager/selectors.js +++ b/packages/core/admin/admin/src/content-manager/pages/EditViewLayoutManager/selectors.js @@ -1,3 +1,3 @@ -const selectLayout = state => state['content-manager_editViewLayoutManager'].currentLayout; +const selectLayout = (state) => state['content-manager_editViewLayoutManager'].currentLayout; export default selectLayout; diff --git a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js index 0391a1f012..b412db94bc 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js @@ -141,13 +141,13 @@ const DraggableCard = ({ const [{ isDragging }, drag, preview] = useDrag({ type: ItemTypes.FIELD, - item: () => { + item() { return { index, labelField, name }; }, - collect: monitor => ({ + collect: (monitor) => ({ isDragging: monitor.isDragging(), }), - end: () => { + end() { setIsDraggingSibling(false); }, }); @@ -167,7 +167,7 @@ const DraggableCard = ({ // anymore, this hack forces a rerender in order to apply the dragRef useEffect(() => { if (!isDraggingSibling) { - forceRerenderAfterDnd(prev => !prev); + forceRerenderAfterDnd((prev) => !prev); } }, [isDraggingSibling]); @@ -203,7 +203,7 @@ const DraggableCard = ({ }, { item: name } )} - onClick={e => e.stopPropagation()} + onClick={(e) => e.stopPropagation()} ref={refs.dragRef} type="button" > @@ -214,7 +214,7 @@ const DraggableCard = ({ { + onClick={(e) => { e.stopPropagation(); onClickEditField(name); }} diff --git a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/EditFieldForm.js b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/EditFieldForm.js index 7be70bd6f4..3c6dc2ce85 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/EditFieldForm.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/EditFieldForm.js @@ -72,7 +72,7 @@ const EditFieldForm = ({ defaultMessage: 'Label', })} name="label" - onChange={e => onChangeEditLabel(e)} + onChange={(e) => onChangeEditLabel(e)} value={fieldForm.label} hint={formatMessage({ id: getTrad('form.Input.label.inputDescription'), @@ -90,8 +90,9 @@ const EditFieldForm = ({ defaultMessage: 'Enable sort on this field', })} name="sortable" - onChange={e => - onChangeEditLabel({ target: { name: 'sortable', value: e.target.checked } })} + onChange={(e) => + onChangeEditLabel({ target: { name: 'sortable', value: e.target.checked } }) + } onLabel={formatMessage({ id: 'app.components.ToggleCheckbox.on-label', defaultMessage: 'on', diff --git a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/Settings.js b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/Settings.js index 9f929d5eb4..f190f1ad1d 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/Settings.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/Settings.js @@ -34,7 +34,7 @@ const Settings = ({ modifiedData, onChange, sortOptions }) => { id: getTrad('form.Input.search'), defaultMessage: 'Enable search', })} - onChange={e => { + onChange={(e) => { onChange({ target: { name: 'settings.searchable', value: e.target.checked } }); }} onLabel={formatMessage({ @@ -53,7 +53,7 @@ const Settings = ({ modifiedData, onChange, sortOptions }) => { id: getTrad('form.Input.filters'), defaultMessage: 'Enable filters', })} - onChange={e => { + onChange={(e) => { onChange({ target: { name: 'settings.filterable', value: e.target.checked } }); }} onLabel={formatMessage({ @@ -72,7 +72,7 @@ const Settings = ({ modifiedData, onChange, sortOptions }) => { id: getTrad('form.Input.bulkActions'), defaultMessage: 'Enable bulk actions', })} - onChange={e => { + onChange={(e) => { onChange({ target: { name: 'settings.bulkable', value: e.target.checked } }); }} onLabel={formatMessage({ @@ -99,11 +99,11 @@ const Settings = ({ modifiedData, onChange, sortOptions }) => { defaultMessage: 'Note: You can override this value in the Collection Type settings page.', })} - onChange={value => onChange({ target: { name: 'settings.pageSize', value } })} + onChange={(value) => onChange({ target: { name: 'settings.pageSize', value } })} name="settings.pageSize" value={modifiedData.settings.pageSize || ''} > - {[10, 20, 50, 100].map(pageSize => ( + {[10, 20, 50, 100].map((pageSize) => ( @@ -116,11 +116,11 @@ const Settings = ({ modifiedData, onChange, sortOptions }) => { id: getTrad('form.Input.defaultSort'), defaultMessage: 'Default sort attribute', })} - onChange={value => onChange({ target: { name: 'settings.defaultSortBy', value } })} + onChange={(value) => onChange({ target: { name: 'settings.defaultSortBy', value } })} name="settings.defaultSortBy" value={modifiedData.settings.defaultSortBy || ''} > - {sortOptions.map(sortBy => ( + {sortOptions.map((sortBy) => ( @@ -133,11 +133,11 @@ const Settings = ({ modifiedData, onChange, sortOptions }) => { id: getTrad('form.Input.sort.order'), defaultMessage: 'Default sort order', })} - onChange={value => onChange({ target: { name: 'settings.defaultSortOrder', value } })} + onChange={(value) => onChange({ target: { name: 'settings.defaultSortOrder', value } })} name="settings.defaultSortOrder" value={modifiedData.settings.defaultSortOrder || ''} > - {['ASC', 'DESC'].map(order => ( + {['ASC', 'DESC'].map((order) => ( diff --git a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/SortDisplayedFields.js b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/SortDisplayedFields.js index e90eac7cce..64b35d75b6 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/SortDisplayedFields.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/SortDisplayedFields.js @@ -83,7 +83,7 @@ const SortDisplayedFields = ({ isDraggingSibling={isDraggingSibling} onMoveField={onMoveField} onClickEditField={onClickEditField} - onRemoveField={e => handleRemoveField(e, index)} + onRemoveField={(e) => handleRemoveField(e, index)} name={field} labelField={metadatas[field].list.label || field} setIsDraggingSibling={setIsDraggingSibling} @@ -102,7 +102,7 @@ const SortDisplayedFields = ({ disabled={listRemainingFields.length <= 0} data-testid="add-field" > - {listRemainingFields.map(field => ( + {listRemainingFields.map((field) => ( handleAddField(field)}> {field} diff --git a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/index.js b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/index.js index 2a3099860b..eb05ba73ab 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/index.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/index.js @@ -34,9 +34,9 @@ const ListSettingsView = ({ layout, slug }) => { const { refetchData } = useContext(ModelsContext); const [showWarningSubmit, setWarningSubmit] = useState(false); - const toggleWarningSubmit = () => setWarningSubmit(prevState => !prevState); + const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState); const [isModalFormOpen, setIsModalFormOpen] = useState(false); - const toggleModalForm = () => setIsModalFormOpen(prevState => !prevState); + const toggleModalForm = () => setIsModalFormOpen((prevState) => !prevState); const [reducerState, dispatch] = useReducer(reducer, initialState, () => init(initialState, layout) ); @@ -76,7 +76,7 @@ const ListSettingsView = ({ layout, slug }) => { submitMutation.mutate(body); }; - const handleAddField = item => { + const handleAddField = (item) => { dispatch({ type: 'ADD_FIELD', item, @@ -99,13 +99,13 @@ const ListSettingsView = ({ layout, slug }) => { } }; - const handleSubmit = e => { + const handleSubmit = (e) => { e.preventDefault(); toggleWarningSubmit(); trackUsage('willSaveContentTypeLayout'); }; - const handleClickEditField = fieldToEdit => { + const handleClickEditField = (fieldToEdit) => { dispatch({ type: 'SET_FIELD_TO_EDIT', fieldToEdit, @@ -120,7 +120,7 @@ const ListSettingsView = ({ layout, slug }) => { toggleModalForm(); }; - const handleSubmitFieldEdit = e => { + const handleSubmitFieldEdit = (e) => { e.preventDefault(); toggleModalForm(); dispatch({ @@ -128,12 +128,12 @@ const ListSettingsView = ({ layout, slug }) => { }); }; - const submitMutation = useMutation(body => putCMSettingsLV(body, slug), { - onSuccess: () => { + const submitMutation = useMutation((body) => putCMSettingsLV(body, slug), { + onSuccess() { trackUsage('didEditListSettings'); refetchData(); }, - onError: () => { + onError() { toggleNotification({ type: 'warning', message: { id: 'notification.error' }, diff --git a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/reducer.js b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/reducer.js index 4fd33f238d..cb9d38ef12 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/reducer.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/reducer.js @@ -12,7 +12,7 @@ const initialState = { const reducer = (state = initialState, action) => // eslint-disable-next-line consistent-return - produce(state, draftState => { + produce(state, (draftState) => { const layoutFieldListPath = ['modifiedData', 'layouts', 'list']; switch (action.type) { case 'ADD_FIELD': { diff --git a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/tests/index.test.js b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/tests/index.test.js index d35a58d180..916caa4d58 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/tests/index.test.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/tests/index.test.js @@ -92,7 +92,7 @@ const layout = { uid: 'api::restaurant.restaurant', }; -const makeApp = history => ( +const makeApp = (history) => ( diff --git a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/utils/ellipsisCardTitle.js b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/utils/ellipsisCardTitle.js index 512d1579fd..66bd666cf9 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/utils/ellipsisCardTitle.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/utils/ellipsisCardTitle.js @@ -1,4 +1,4 @@ -const ellipsisCardTitle = title => { +const ellipsisCardTitle = (title) => { const formatedTitle = title.length > 20 ? `${title.substring(0, 20)}...` : title; return formatedTitle; diff --git a/packages/core/admin/admin/src/content-manager/pages/ListView/FieldPicker/index.js b/packages/core/admin/admin/src/content-manager/pages/ListView/FieldPicker/index.js index 414d50238c..d653b932f8 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListView/FieldPicker/index.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListView/FieldPicker/index.js @@ -16,7 +16,7 @@ const FieldPicker = ({ layout }) => { const { trackUsage } = useTracking(); const { formatMessage } = useIntl(); - const allAllowedHeaders = getAllAllowedHeaders(layout.contentType.attributes).map(attrName => { + const allAllowedHeaders = getAllAllowedHeaders(layout.contentType.attributes).map((attrName) => { const metadatas = layout.contentType.metadatas[attrName].list; return { @@ -26,18 +26,18 @@ const FieldPicker = ({ layout }) => { }); const values = displayedHeaders.map(({ name }) => name); - const handleChange = updatedValues => { + const handleChange = (updatedValues) => { trackUsage('didChangeDisplayedFields'); // removing a header if (updatedValues.length < values.length) { - const removedHeader = values.filter(value => { + const removedHeader = values.filter((value) => { return updatedValues.indexOf(value) === -1; }); dispatch(onChangeListHeaders({ name: removedHeader[0], value: true })); } else { - const addedHeader = updatedValues.filter(value => { + const addedHeader = updatedValues.filter((value) => { return values.indexOf(value) === -1; }); @@ -51,18 +51,19 @@ const FieldPicker = ({ layout }) => { aria-label="change displayed fields" value={values} onChange={handleChange} - customizeContent={values => + customizeContent={(values) => formatMessage( { id: getTrad('select.currently.selected'), defaultMessage: '{count} currently selected', }, { count: values.length } - )} + ) + } multi size="S" > - {allAllowedHeaders.map(header => { + {allAllowedHeaders.map((header) => { return (