From 9b36f1b2c2c6c6b5cf4a5c79e1a59c0c232b5fd3 Mon Sep 17 00:00:00 2001 From: Wilco Fiers Date: Mon, 3 Aug 2020 16:50:31 +0200 Subject: [PATCH 1/4] test: add eslint --- .eslintrc.json | 26 ++ .github/workflows/build.yml | 1 + .github/workflows/test.yml | 1 + build/.eslintrc.json | 11 + build/create-testcases.js | 2 +- build/get-implementations.js | 20 +- gatsby/get-node-data.js | 3 +- package-lock.json | 425 +++++++++++++++--- package.json | 8 + plugins/rule-example-open-in-new-tab/index.js | 2 +- plugins/swap-heading-level/index.js | 2 +- src/components/footer.js | 2 +- src/components/rule-card.js | 10 +- src/components/seo.js | 6 +- src/templates/changelog.js | 2 +- 15 files changed, 423 insertions(+), 98 deletions(-) create mode 100644 .eslintrc.json create mode 100644 build/.eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000000..a7815ecae5 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,26 @@ +{ + "root": true, + "env": { + "browser": true, + "es2020": true, + "node": true + }, + "extends": ["eslint:recommended", "plugin:react/recommended", "prettier"], + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": 11, + "sourceType": "module" + }, + "settings": { + "react": { + "version": "detect" + } + }, + "plugins": ["react"], + "rules": { + "react/prop-types": "off", + "react/display-name": "off" + } +} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2bf614dd8f..de004d38d9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,6 +24,7 @@ jobs: GITHUB_USER_PERSONAL_ACCESS_TOKEN: ${{ secrets.USER_PAT }} - run: | npm install + npm run lint npm run build git config user.name "${{ secrets.USER_NAME }}" git config user.email "${{ secrets.USER_EMAIL }}" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8806ce98ce..18d55aba23 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,4 +20,5 @@ jobs: with: GITHUB_USER_PERSONAL_ACCESS_TOKEN: ${{ secrets.USER_PAT }} - run: npm install + - run: npm run lint - run: npm run build diff --git a/build/.eslintrc.json b/build/.eslintrc.json new file mode 100644 index 0000000000..5f32979377 --- /dev/null +++ b/build/.eslintrc.json @@ -0,0 +1,11 @@ +{ + "env": { + "node": true + }, + "extends": ["eslint:recommended", "prettier"], + "parserOptions": { + "ecmaVersion": 11, + "sourceType": "module" + }, + "rules": {} +} diff --git a/build/create-testcases.js b/build/create-testcases.js index a500d38f04..333f890fb0 100755 --- a/build/create-testcases.js +++ b/build/create-testcases.js @@ -60,7 +60,7 @@ async function init(program) { * -> get code snippets * -> and their relevant titles */ - for (const { frontmatter, body, markdownAST } of rulesData) { + for (const { frontmatter, markdownAST } of rulesData) { const { id: ruleId, name: ruleName, accessibility_requirements: ruleAccessibilityRequirements } = frontmatter /** diff --git a/build/get-implementations.js b/build/get-implementations.js index 0009e04ea3..ff11b56987 100644 --- a/build/get-implementations.js +++ b/build/get-implementations.js @@ -37,19 +37,15 @@ async function init({ implementationsFile }) { execCommand(`mkdir -p "./_data/implementations"`) for (const { organisation, toolName, jsonReports, testcases: actTestcases, output, description } of implementations) { - try { - const earlReports = await loadJson(jsonReports) - const [testcases] = await loadJson(actTestcases) - const mapping = await actMapGenerator(earlReports, testcases, { organisation, toolName }) - const result = { - ...mapping, - description, - } - await createFile(output, JSON.stringify(result, undefined, 2)) - console.info(`Generated implementations for ${toolName} from ${organisation}`) - } catch (error) { - throw error + const earlReports = await loadJson(jsonReports) + const [testcases] = await loadJson(actTestcases) + const mapping = await actMapGenerator(earlReports, testcases, { organisation, toolName }) + const result = { + ...mapping, + description, } + await createFile(output, JSON.stringify(result, undefined, 2)) + console.info(`Generated implementations for ${toolName} from ${organisation}`) } } diff --git a/gatsby/get-node-data.js b/gatsby/get-node-data.js index 44182672d0..1b8f491dcc 100644 --- a/gatsby/get-node-data.js +++ b/gatsby/get-node-data.js @@ -22,7 +22,7 @@ const getNodeData = async options => { } switch (sourceInstanceName) { - case 'rules': + case 'rules': { const { id } = attributes const path = `${sourceInstanceName}/${id}` const gitUrl = `https://api.github.com/repos/act-rules/act-rules.github.io/commits?path=_rules/${relativePath}` @@ -33,6 +33,7 @@ const getNodeData = async options => { path, changelog: JSON.stringify(logs), } + } default: return { ...defaults, diff --git a/package-lock.json b/package-lock.json index a192c3f7bc..62def7ca66 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7492,6 +7492,23 @@ } } }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=", + "dev": true + } + } + }, "entities": { "version": "2.0.3", "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/entities/-/entities-2.0.3.tgz", @@ -7592,21 +7609,23 @@ } }, "eslint": { - "version": "6.8.0", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha1-YiYtZylzn5J1cjgkMC+yJ8jJP/s=", + "version": "7.6.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/eslint/-/eslint-7.6.0.tgz", + "integrity": "sha1-Ui1nz66glyTZaUnHDnoFUGFNZNY=", + "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.0", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^1.3.0", + "espree": "^7.2.0", + "esquery": "^1.2.0", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", @@ -7615,100 +7634,218 @@ "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", "is-glob": "^4.0.0", "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", + "levn": "^0.4.1", + "lodash": "^4.17.19", "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.3", + "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", "table": "^5.2.3", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=" + "version": "5.0.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=", + "dev": true }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "version": "4.2.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=", + "dev": true, "requires": { - "color-convert": "^1.9.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, "chalk": { - "version": "2.4.2", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "version": "4.1.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=", + "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=", + "color-convert": { + "version": "2.0.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha1-9zqFudXUHQRVUcF34ogtSshXKKY=", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "globals": { "version": "12.4.0", "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/globals/-/globals-12.4.0.tgz", "integrity": "sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=", + "dev": true, "requires": { "type-fest": "^0.8.1" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, "ignore": { "version": "4.0.6", "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=" + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", + "dev": true }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=" + "levn": { + "version": "0.4.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/levn/-/levn-0.4.1.tgz", + "integrity": "sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha1-5I3e2+MLMyF4PFtDAfvTU7weSks=", + "dev": true + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk=", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=", + "dev": true }, "semver": { - "version": "6.3.0", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/semver/-/semver-6.3.0.tgz", - "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=" + "version": "7.3.2", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/semver/-/semver-7.3.2.tgz", + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=", + "dev": true }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "version": "6.0.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", + "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } }, "supports-color": { - "version": "5.5.0", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "version": "7.1.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=", + "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" } }, "v8-compile-cache": { "version": "2.1.1", "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha1-VLw83UMxe8qR413K8wWxpyN950U=" + "integrity": "sha1-VLw83UMxe8qR413K8wWxpyN950U=", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/which/-/which-2.0.2.tgz", + "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "eslint-config-prettier": { + "version": "6.11.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", + "integrity": "sha1-9tIjjBKQ0ByFmotcH301KgsNqLE=", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + }, + "dependencies": { + "get-stdin": { + "version": "6.0.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=", + "dev": true } } }, @@ -8002,9 +8139,9 @@ } }, "eslint-plugin-react": { - "version": "7.20.3", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/eslint-plugin-react/-/eslint-plugin-react-7.20.3.tgz", - "integrity": "sha1-BZBSXn64OJDOcfc8LPg2KErYwvE=", + "version": "7.20.5", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/eslint-plugin-react/-/eslint-plugin-react-7.20.5.tgz", + "integrity": "sha1-KUgPMHH2SgSyw9mdm0YM4PdvuFc=", "requires": { "array-includes": "^3.1.1", "array.prototype.flatmap": "^1.2.3", @@ -8057,19 +8194,21 @@ "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=" }, "espree": { - "version": "6.2.1", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/espree/-/espree-6.2.1.tgz", - "integrity": "sha1-d/xy4f10SiBSwg84pbV1gy6Cc0o=", + "version": "7.2.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/espree/-/espree-7.2.0.tgz", + "integrity": "sha1-HCY9W1E9utCsMMSZG5OsNU6UjWk=", + "dev": true, "requires": { - "acorn": "^7.1.1", + "acorn": "^7.3.1", "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^1.3.0" }, "dependencies": { "acorn": { - "version": "7.3.1", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/acorn/-/acorn-7.3.1.tgz", - "integrity": "sha1-hQEHVNtTw/uvO56j4IOqXF0Uf/0=" + "version": "7.4.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha1-4a1IbmxUUBY0xsOXxcEh2qODYHw=", + "dev": true } } }, @@ -9214,6 +9353,11 @@ "yaml-loader": "^0.6.0" }, "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha1-4a1IbmxUUBY0xsOXxcEh2qODYHw=" + }, "ansi-regex": { "version": "4.1.0", "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/ansi-regex/-/ansi-regex-4.1.0.tgz", @@ -9325,6 +9469,133 @@ "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=" }, + "eslint": { + "version": "6.8.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha1-YiYtZylzn5J1cjgkMC+yJ8jJP/s=", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/semver/-/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=" + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/debug/-/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "requires": { + "ms": "^2.1.1" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/semver/-/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha1-VLw83UMxe8qR413K8wWxpyN950U=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/which/-/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/espree/-/espree-6.2.1.tgz", + "integrity": "sha1-d/xy4f10SiBSwg84pbV1gy6Cc0o=", + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, "execa": { "version": "3.4.0", "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/execa/-/execa-3.4.0.tgz", @@ -9434,6 +9705,14 @@ "pump": "^3.0.0" } }, + "globals": { + "version": "12.4.0", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/globals/-/globals-12.4.0.tgz", + "integrity": "sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=", + "requires": { + "type-fest": "^0.8.1" + } + }, "hosted-git-info": { "version": "3.0.4", "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/hosted-git-info/-/hosted-git-info-3.0.4.tgz", @@ -9442,6 +9721,11 @@ "lru-cache": "^5.1.1" } }, + "ignore": { + "version": "4.0.6", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=" + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -9550,6 +9834,11 @@ "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/path-key/-/path-key-3.1.1.tgz", "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=" }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=" + }, "resolve-cwd": { "version": "3.0.0", "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -23009,9 +23298,9 @@ } }, "strip-json-comments": { - "version": "3.1.0", - "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/strip-json-comments/-/strip-json-comments-3.1.0.tgz", - "integrity": "sha1-djjTFCISns9EV0QACfugP5+awYA=" + "version": "3.1.1", + "resolved": "https://agora.dequecloud.com/artifactory/api/npm/dequelabs/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=" }, "strip-outer": { "version": "1.0.1", diff --git a/package.json b/package.json index 48153a26c2..2008508ec1 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,9 @@ }, "devDependencies": { "dotenv": "^8.2.0", + "eslint": "^7.6.0", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-react": "^7.20.5", "husky": "^3.1.0", "js-yaml": "^3.14.0", "lint-staged": "^9.5.0", @@ -86,6 +89,7 @@ "getData": "npm run getWcagMetaData && npm run createTestcases && npm run createGlossaryUsages && npm run createRulesUsages && npm run implementations", "clean": "gatsby clean", "develop": "gatsby develop", + "lint": "eslint {build,gatsby,plugins,src,utils}/**/*.js", "prebuild": "npm run clean && npm --prefix './node_modules/act-rules-community' run formatRulesDir && npm run getData", "build": "gatsby build", "format": "prettier --write *.{html,js,jsx,json,md,scss,yml} './{.github,build,gatsby,plugins,src,utils}/**/*.{html,js,jsx,json,md,scss,yml}'", @@ -116,6 +120,10 @@ "*.{html,js,jsx,json,md,scss,yml}": [ "prettier --write", "git add" + ], + "*.{js,jsx}": [ + "eslint --fix", + "git add" ] }, "husky": { diff --git a/plugins/rule-example-open-in-new-tab/index.js b/plugins/rule-example-open-in-new-tab/index.js index d732c8330c..d0aab2173b 100644 --- a/plugins/rule-example-open-in-new-tab/index.js +++ b/plugins/rule-example-open-in-new-tab/index.js @@ -15,7 +15,7 @@ module.exports = ({ markdownAST, markdownNode }, pluginOptions) => { return markdownAST } - visit(markdownAST, 'heading', (node, index, parent) => { + visit(markdownAST, 'heading', node => { if (!node || !node.children || node.depth !== headingDepth) { return } diff --git a/plugins/swap-heading-level/index.js b/plugins/swap-heading-level/index.js index 91695bf7d6..8195c79657 100644 --- a/plugins/swap-heading-level/index.js +++ b/plugins/swap-heading-level/index.js @@ -13,7 +13,7 @@ module.exports = ({ markdownAST, markdownNode }, pluginOptions) => { return markdownAST } - visit(markdownAST, 'heading', (node, index, parent) => { + visit(markdownAST, 'heading', node => { if (node.depth !== fromHeadingDepth) { return } diff --git a/src/components/footer.js b/src/components/footer.js index 9d02e40057..bc234c9ce9 100755 --- a/src/components/footer.js +++ b/src/components/footer.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import './footer.scss' -const Footer = ({ actRulesRepoUrl }) => ( +const Footer = () => (