From 610fd6c03d54151fd2231eda7a9d2144565e420f Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Thu, 26 Oct 2023 11:04:47 +0100 Subject: [PATCH 01/44] Add publishing workflow --- .github/workflows/publish.yml | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..551c39f --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,37 @@ +on: + release: + types: [created, edited, published] + workflow_dispatch: + inputs: + dryRun: + description: 'Dry run only' + required: true + default: true + type: boolean + + jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 + with: + node-version: 16 + registry-url: 'https://registry.npmjs.org' + - run: npm ci + + - name: Publish package + env: + NODE_AUTH_TOKEN: ${{ secrets.REGISTRY_PUBLISH_TOKEN }} + if: > + (github.event_name == 'release' && github.event.action == 'published') || + (github.event_name == 'workflow_dispatch' && !inputs.dryRun) + run: npm publish + + - name: Publish package (dry run) + env: + NODE_AUTH_TOKEN: ${{ secrets.REGISTRY_PUBLISH_TOKEN }} + if: > + (github.event_name == 'release' && github.event.action != 'published') || + (github.event_name == 'workflow_dispatch' && inputs.dryRun) + run: npm publish --dry-run From 327b54874f829405976d048deaba68ec41599993 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Thu, 26 Oct 2023 11:09:22 +0100 Subject: [PATCH 02/44] Always run linter --- .github/workflows/tests.yml | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 94473ee..e4695fd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,7 +1,3 @@ -# This workflow will do a clean install of node dependencies, build the source code and run tests. -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions - -name: Build and lint on: push: @@ -16,15 +12,12 @@ jobs: matrix: include: - node-version: 12.x - lint: true # Linter is run only once to shorten the total build time - node-version: 14.x - node-version: 16.x steps: - - name: Checkout code from ${{ github.repository }} - uses: actions/checkout@v4 - - name: Setup node - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - name: MongoDB in GitHub Actions @@ -33,13 +26,10 @@ jobs: mongodb-version: 3.4 - name: Install dependencies run: npm ci - - name: Run linter - if: ${{ matrix.lint }} - run: make lint + - run: make lint - name: Create test config run: cp config/test.sample.json config/test.json - name: Start test app run: NODE_ENV=test node index.js & - run: sleep 10s - - name: Run tests - run: make test + - run: make test From 1e24f29db8f4270f2ecbdedc86936a56d510bf4d Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Thu, 26 Oct 2023 11:09:45 +0100 Subject: [PATCH 03/44] Use `npm ci` instead of `npm i` --- .github/workflows/tests.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e4695fd..956fcc3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -24,8 +24,7 @@ jobs: uses: supercharge/mongodb-github-action@1.3.0 with: mongodb-version: 3.4 - - name: Install dependencies - run: npm ci + - run: npm ci - run: make lint - name: Create test config run: cp config/test.sample.json config/test.json From 99319ff528942c19555aef756922cd35516f119c Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Thu, 26 Oct 2023 11:20:41 +0100 Subject: [PATCH 04/44] Reformat YAML --- .github/workflows/publish.yml | 72 +++++++++++++++++------------------ 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 551c39f..2a8c751 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,37 +1,37 @@ on: - release: - types: [created, edited, published] - workflow_dispatch: - inputs: - dryRun: - description: 'Dry run only' - required: true - default: true - type: boolean - - jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 - with: - node-version: 16 - registry-url: 'https://registry.npmjs.org' - - run: npm ci - - - name: Publish package - env: - NODE_AUTH_TOKEN: ${{ secrets.REGISTRY_PUBLISH_TOKEN }} - if: > - (github.event_name == 'release' && github.event.action == 'published') || - (github.event_name == 'workflow_dispatch' && !inputs.dryRun) - run: npm publish - - - name: Publish package (dry run) - env: - NODE_AUTH_TOKEN: ${{ secrets.REGISTRY_PUBLISH_TOKEN }} - if: > - (github.event_name == 'release' && github.event.action != 'published') || - (github.event_name == 'workflow_dispatch' && inputs.dryRun) - run: npm publish --dry-run + release: + types: [created, edited, published] + workflow_dispatch: + inputs: + dryRun: + description: "Dry run only" + required: true + default: true + type: boolean + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 + with: + node-version: 16 + registry-url: "https://registry.npmjs.org" + - run: npm ci + + - name: Publish package + env: + NODE_AUTH_TOKEN: ${{ secrets.REGISTRY_PUBLISH_TOKEN }} + if: > + (github.event_name == 'release' && github.event.action == 'published') || + (github.event_name == 'workflow_dispatch' && !inputs.dryRun) + run: npm publish + + - name: Publish package (dry run) + env: + NODE_AUTH_TOKEN: ${{ secrets.REGISTRY_PUBLISH_TOKEN }} + if: > + (github.event_name == 'release' && github.event.action != 'published') || + (github.event_name == 'workflow_dispatch' && inputs.dryRun) + run: npm publish --dry-run From b4f64682def0ee92950bdd87e5e9643c8f33c335 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Fri, 3 Nov 2023 23:17:09 +0000 Subject: [PATCH 05/44] Increase `INTEGRATION_TIMEOUT` to `20000` from `5000` --- Makefile.node | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.node b/Makefile.node index a8b95f0..76374d2 100644 --- a/Makefile.node +++ b/Makefile.node @@ -21,7 +21,7 @@ NPM_BIN = ./node_modules/.bin export PATH := $(NPM_BIN):$(PATH) export EXPECTED_COVERAGE := 90 -export INTEGRATION_TIMEOUT := 5000 +export INTEGRATION_TIMEOUT := 20000 export INTEGRATION_SLOW := 4000 From 6eb3db472d4ca63be03e896c57c7f994f11580a8 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Fri, 3 Nov 2023 23:17:44 +0000 Subject: [PATCH 06/44] Remove outdated makefile items --- Makefile.node | 38 +------------------------------------- 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/Makefile.node b/Makefile.node index 76374d2..43b79d2 100644 --- a/Makefile.node +++ b/Makefile.node @@ -1,14 +1,3 @@ -# -# Node.js Makefile -# ================ -# -# Do not update this file manually – it's maintained separately on GitHub: -# https://github.com/rowanmanning/makefiles/blob/master/Makefile.node -# -# To update to the latest version, run `make update-makefile`. -# - - # Meta tasks # ---------- @@ -57,29 +46,12 @@ node_modules: package.json # Verify tasks # ------------ -verify: verify-javascript verify-dust verify-spaces - @$(TASK_DONE) - -verify-javascript: verify-eslint verify-jshint verify-jscs +verify: verify-eslint @$(TASK_DONE) -verify-dust: - @if [ -e .dustmiterc* ]; then dustmite --path ./view && $(TASK_DONE); fi - verify-eslint: @if [ -e .eslintrc* ]; then eslint . && $(TASK_DONE); fi -verify-jshint: - @if [ -e .jshintrc* ]; then jshint . && $(TASK_DONE); fi - -verify-jscs: - @if [ -e .jscsrc* ]; then jscs . && $(TASK_DONE); fi - -verify-spaces: - @if [ -e .editorconfig* ] && [ -x $(NPM_BIN)/lintspaces ]; then \ - git ls-files | xargs lintspaces -e .editorconfig && $(TASK_DONE); \ - fi - verify-coverage: @if [ -d coverage ]; then \ if [ -x $(NPM_BIN)/nyc ]; then \ @@ -115,11 +87,3 @@ test-unit-coverage: test-integration: @if [ -d test/integration ]; then mocha test/integration --exit --timeout $(INTEGRATION_TIMEOUT) --slow $(INTEGRATION_SLOW) && $(TASK_DONE); fi - - -# Tooling tasks -# ------------- - -update-makefile: - @curl -s https://raw.githubusercontent.com/rowanmanning/makefiles/master/Makefile.node > Makefile.node - @$(TASK_DONE) From 9a741ac194a467c905bd666b093d24e5cb043197 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 12:56:24 +0000 Subject: [PATCH 07/44] Update to `eslint@^8.52` and `pa11y-lint-config@^3` --- package-lock.json | 640 +++++++++++++++++++--------------------------- package.json | 4 +- 2 files changed, 268 insertions(+), 376 deletions(-) diff --git a/package-lock.json b/package-lock.json index de36e21..0cf143a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,65 +4,41 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true }, - "@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.15.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } + "eslint-visitor-keys": "^3.3.0" } }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true + }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "dev": true, "requires": { "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.6.0", + "globals": "^13.19.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" }, "dependencies": { @@ -77,9 +53,24 @@ "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } } } }, + "@eslint/js": { + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", + "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", + "dev": true + }, "@hapi/accept": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-5.0.2.tgz", @@ -356,22 +347,65 @@ } }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, "@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -415,10 +449,16 @@ "@types/node": "*" } }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true }, "acorn-jsx": { @@ -459,15 +499,6 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -479,13 +510,10 @@ } }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "array-map": { "version": "0.0.0", @@ -514,12 +542,6 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, "async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", @@ -747,21 +769,6 @@ "wrap-ansi": "^7.0.0" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -889,15 +896,6 @@ "once": "^1.4.0" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "envinfo": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", @@ -916,143 +914,123 @@ "dev": true }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", + "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.53.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "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", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "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", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "is-glob": "^4.0.3" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" } } } }, "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "estraverse": "^5.2.0" } }, "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "esrecurse": { @@ -1062,20 +1040,12 @@ "dev": true, "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "esutils": { @@ -1125,6 +1095,15 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -1168,19 +1147,20 @@ "dev": true }, "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", "dev": true, "requires": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "foreach": { @@ -1228,12 +1208,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -1280,14 +1254,20 @@ } }, "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "requires": { "type-fest": "^0.20.2" } }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -1304,12 +1284,6 @@ "har-schema": "^2.0.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, "hasown": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", @@ -1360,9 +1334,9 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, "import-fresh": { @@ -1373,14 +1347,6 @@ "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } } }, "imurmurhash": { @@ -1450,6 +1416,12 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, "is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -1476,7 +1448,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isstream": { @@ -1512,20 +1484,13 @@ } } }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "jsbn": { @@ -1534,6 +1499,12 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -1576,6 +1547,15 @@ "verror": "1.10.0" } }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, "kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", @@ -1606,12 +1586,6 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -1859,17 +1833,17 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "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" + "type-check": "^0.4.0" } }, "p-limit": { @@ -1929,9 +1903,9 @@ } }, "pa11y-lint-config": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pa11y-lint-config/-/pa11y-lint-config-2.0.0.tgz", - "integrity": "sha512-p/tWf4cMQk9BUzXMWgdd8DVzGH1geLwxukKN33cUaLdlrkUAgc2OkDYxNx3HqP6ipybLm2LvPzizcbBDaU0wlg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pa11y-lint-config/-/pa11y-lint-config-3.0.0.tgz", + "integrity": "sha512-3ELcP9d1ipmvwAy4FN18MT7a1c+e/JXClEhyYUE3ZN/7ammN0Lm0IFzQnJQI/FdO8BFRBDycP1TKP+0yEHh5+A==", "dev": true }, "parent-module": { @@ -2087,6 +2061,12 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -2119,12 +2099,6 @@ "picomatch": "^2.2.1" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -2164,10 +2138,16 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, "rimraf": { @@ -2178,6 +2158,15 @@ "glob": "^7.1.3" } }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2230,43 +2219,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, "sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -2276,12 +2228,6 @@ "memory-pager": "^1.0.2" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -2333,48 +2279,6 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "table": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", - "integrity": "sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.7.1.tgz", - "integrity": "sha512-gPpOObTO1QjbnN1sVMjJcp1TF9nggMfO4MBR5uQl6ZVTOaEPq5i4oq/6R9q2alMMPB3eg53wFv1RuJBLuxf3Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, "tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -2559,12 +2463,6 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -2599,12 +2497,6 @@ "isexe": "^2.0.0" } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, "workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", diff --git a/package.json b/package.json index c930aab..6d34d93 100644 --- a/package.json +++ b/package.json @@ -33,9 +33,9 @@ "underscore": "~1.13.6" }, "devDependencies": { - "eslint": "^7.27.0", + "eslint": "^8.52.0", "mocha": "^10.1.0", - "pa11y-lint-config": "^2.0.0", + "pa11y-lint-config": "^3.0.0", "proclaim": "^3.6.0", "request": "^2.88.2" }, From d2e3081f15daba2ee8d4ab03e45fc6d17e119d03 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 12:57:30 +0000 Subject: [PATCH 08/44] Replace the warning about Node.js 16, since it's passing in the workflow --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 63d21b3..d9c4d5d 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,7 @@ If you're trying to run accessibility tests as part of a CI/CD system, you may w ## Requirements -Pa11y Webservice is a [Node.js][node] application and requires a stable or LTS version of Node, currently version 12 or 14. - -⚠️ At the moment, Pa11y Webservice won't work with Node.js v16. Please use Node.js 12 or 14. ⚠️ +Pa11y Webservice is a [Node.js][node] application and is designed to support a stable/LTS version of Node. Pa11y 4 supports Node.js versions 12, 14 and 16. Pa11y Webservice also requires a [MongoDB][mongo] database to be available so it can store the results of the tests. The database doesn't have to be in the same server or computer where Pa11y Webservice is running from. From 9ffabf4617f94d5eefba26054bf315d77571feca Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 12:59:57 +0000 Subject: [PATCH 09/44] Lower-case headings to match `pa11y/pa11y`, use backticks for config options --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d9c4d5d..88301c3 100644 --- a/README.md +++ b/README.md @@ -79,14 +79,14 @@ Once the configuration has been created, the app can be run in the desired mode NODE_ENV=development npm start ``` -## API Documentation +## API documentation The webservice which Pa11y Webservice exposes is documented in the wiki: - [Webservice endpoints][wiki-web-service] - [Resource types][wiki-resources] -## Client Libraries +## Client libraries - [Pa11y Webservice Node.js Client][pa11y-webservice-client-node] @@ -96,29 +96,29 @@ If both environment variables _and_ a configuration file are present, the settin The boot configurations for Pa11y Webservice are as follows. Look at the sample JSON files in the repo for example usage. -### database +### `database` *(string)* The mongodb [connection string][mongo-connection-string] for your database. Set via a config file or the `DATABASE` environment variable. -### host +### `host` *(string)* The host to run the application on. This is normally best left as `"0.0.0.0"` – which means the application will run on any incoming connections. Set via a config file or the `HOST` environment variable. -### port +### `port` *(number)* The port to run the application on. Set via a config file or the `PORT` environment variable. -### cron +### `cron` *(string)* A crontab which describes when to generate reports for each task in the application. Set via a config file or the `CRON` environment variable. -### chromeLaunchConfig (config file only) +### `chromeLaunchConfig` (config file only) *(object)* Launch options for the Headless Chrome instance. See the [`chromeLaunchConfig`](https://github.com/pa11y/pa11y#chromelaunchconfig-object) documentation for configuration options. -This configuration option isn't available when you're using environment variables. [Use a JSON configuration file](https://github.com/pa11y/pa11y-webservice#option-2-using-config-files) if you need to pass these parameters. +This option can only be provided by [a JSON configuration file](https://github.com/pa11y/pa11y-webservice#option-2-using-config-files). It can't be set with an environment variable. -### numWorkers +### `numWorkers` *(number)* The concurrency limit or number of workers that will be running concurrently on each cron execution. Set via a config file or the `NUM_WORKERS` environment variable. @@ -149,7 +149,7 @@ NODE_ENV=development make fixtures NODE_ENV=test make fixtures ``` -## Support and Migration +## Support and migration Pa11y Webservice major versions are normally supported for 6 months after their last minor release. This means that patch-level changes will be added and bugs will be fixed. The table below outlines the end-of-support dates for major versions, and the last minor release for that version. From 9ba231162930665c2b5d1eaec45b93e8409fab98 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 13:01:02 +0000 Subject: [PATCH 10/44] Update copyright date to 2023 --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 88301c3..72ee2f6 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Pa11y Webservice also requires a [MongoDB][mongo] database to be available so it Since version 3, Pa11y Webservice uses Headless Chrome in order to run the tests. This means that additional dependencies maybe be required. -In [Unix-like](https://en.wikipedia.org/wiki/Unix-like) systems you may need to install the `libnss3` and `libgconf-2-4` libraries in order to be able to run Chrome. If you're trying to run the app in a headless environment (e.g. the cloud, or a headless server), you may also need to configure Xvfb before. Please refer to the documentation from your provider for details on how to do this. +In [Unix-like](https://en.wikipedia.org/wiki/Unix-like) systems you may need to install the `libnss3` and `libgconf-2-4` libraries to be able to run Chrome. If you're trying to run the app in a headless environment (e.g. the cloud, or a headless server), you may also need to configure Xvfb first. Please refer to the documentation from your provider for details on how to do this. ## Setup @@ -166,8 +166,8 @@ If you're opening issues related to these, please mention the version that the i ## License -Pa11y Webservice is licensed under the [GNU General Public License 3.0][info-license].
-Copyright © 2013–2019, Team Pa11y and contributors +Pa11y Webservice is licensed under the [GNU General Public License 3.0][info-license]. +Copyright © 2013–2023, Team Pa11y and contributors [gpl]: http://www.gnu.org/licenses/gpl-3.0.html [mongo]: http://www.mongodb.org/ From f0dbd6f1e00396220b6700163b842fc9d5097afb Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 13:01:44 +0000 Subject: [PATCH 11/44] Apply agreed support policy; tighten up Node.js versions --- README.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 72ee2f6..55a7f1e 100644 --- a/README.md +++ b/README.md @@ -151,18 +151,20 @@ NODE_ENV=test make fixtures ## Support and migration -Pa11y Webservice major versions are normally supported for 6 months after their last minor release. This means that patch-level changes will be added and bugs will be fixed. The table below outlines the end-of-support dates for major versions, and the last minor release for that version. +> [!NOTE] +> We maintain a [migration guide](MIGRATION.md) to help you migrate between major versions. -We also maintain a [migration guide](MIGRATION.md) to help you migrate. +When we release a new major version we will continue to support the previous major version for 6 months. This support will be limited to fixes for critical bugs and security issues. If you're opening an issue related to this project, please mention the specific version that the issue affects. -| :grey_question: | Major Version | Last Minor Release | Node.js Versions | Support End Date | -| :-------------- | :------------ | :----------------- | :--------------- | :--------------- | -| :heart: | 4 | N/A | 12+ | N/A | -| :hourglass: | 3 | 3.2.1 | 8+ | 2022-05-26 | -| :skull: | 2 | 2.3.1 | 4+ | 2020-01-04 | -| :skull: | 1 | 1.11 | 0.10–6 | 2016-12-05 | +The following table lists the major versions available and, for each previous major version, its end-of-support date, and its final minor version released. + +| Major version | Final minor version | Node.js support | Support end date | +| :------------ | :----------------- | :--------------- | :--------------- | +| 4 | N/A | 12, 14, 16 | N/A | +| 3 | 3.2.1 | 8, 10 | 2022-05-26 | +| 2 | 2.3.1 | 4, 6 | 2020-01-04 | +| 1 | 1.11 | 0.10, 0.12, 4, 6 | 2016-12-05 | -If you're opening issues related to these, please mention the version that the issue relates to. ## License From 1ce2fdd66137b85c1ef4c19528d1b16dc1d8670c Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 13:03:47 +0000 Subject: [PATCH 12/44] Upgrade to `joi@~17.11` --- package-lock.json | 28 +++------------------------- package.json | 2 +- 2 files changed, 4 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0cf143a..dab760c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -412,13 +412,6 @@ "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", "requires": { "@hapi/hoek": "^9.0.0" - }, - "dependencies": { - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - } } }, "@sideway/formula": { @@ -1458,30 +1451,15 @@ "dev": true }, "joi": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.1.tgz", - "integrity": "sha512-teoLhIvWE298R6AeJywcjR4sX2hHjB3/xJX4qPjg+gTg+c0mzUDsziYlqPmLomq9gVsfaMcgPaGc7VxtD/9StA==", + "version": "17.11.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", + "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", "requires": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", "@sideway/address": "^4.1.3", "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" - }, - "dependencies": { - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - } } }, "js-yaml": { diff --git a/package.json b/package.json index 6d34d93..fd5da9d 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@hapi/hapi": "~20.3.0", "async": "~3.2.4", "cron": "~2.1.0", - "joi": "~17.7.0", + "joi": "~17.11.0", "kleur": "~4.1.5", "mongodb": "~3.7.3", "pa11y": "~6.2.3", From 268d1480438b1d374258d1ce1bd3b6b67666825a Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 13:09:01 +0000 Subject: [PATCH 13/44] Rename workflow from `checkout_and_test` to `test`, matching other repos --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 956fcc3..14e1a5f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -6,7 +6,7 @@ on: pull_request: jobs: - checkout_and_test: + test: runs-on: ubuntu-20.04 strategy: matrix: From c0449c8f88646e4742c91238a6c174dbc1fd3c19 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 13:09:21 +0000 Subject: [PATCH 14/44] Shorten the matrix of Node.js versions --- .github/workflows/tests.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 14e1a5f..cc7c4e3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -10,11 +10,7 @@ jobs: runs-on: ubuntu-20.04 strategy: matrix: - include: - - node-version: 12.x - - node-version: 14.x - - node-version: 16.x - + node-version: [12, 14, 16] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v3 From 27073d406c7d629301f80c12b3530001b51f37c8 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 13:09:41 +0000 Subject: [PATCH 15/44] Improve the comments that remain --- .github/workflows/tests.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cc7c4e3..84a243d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,4 +1,3 @@ - on: push: branches: @@ -16,15 +15,15 @@ jobs: - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - - name: MongoDB in GitHub Actions + - name: Supply MongoDB 3.4 uses: supercharge/mongodb-github-action@1.3.0 with: mongodb-version: 3.4 - run: npm ci - run: make lint - - name: Create test config + - name: Supply test configuration run: cp config/test.sample.json config/test.json - - name: Start test app + - name: Make webservice available to be tested run: NODE_ENV=test node index.js & - run: sleep 10s - run: make test From 2c08ffcc7c9b9a0c9a29eb62187e2b7bc94725d4 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 13:20:09 +0000 Subject: [PATCH 16/44] Upgrade to `cron@~2.4.4` --- package-lock.json | 20 +++++++++++++------- package.json | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index dab760c..392a72d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -424,6 +424,11 @@ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, + "@types/luxon": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.4.tgz", + "integrity": "sha512-H9OXxv4EzJwE75aTPKpiGXJq+y4LFxjpsdgKwSmr503P5DkWc3AG7VAFYrFNVvqemT5DfgZJV9itYhqBHSGujA==" + }, "@types/node": { "version": "20.8.10", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz", @@ -787,11 +792,12 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cron": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cron/-/cron-2.1.0.tgz", - "integrity": "sha512-Hq7u3P8y7UWYvsZbSKHHJDVG0VO9O7tp2qljxzTScelcTODBfCme8AIhnZsFwmQ9NchZ3hr2uNr+s3DSms7q6w==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/cron/-/cron-2.4.4.tgz", + "integrity": "sha512-MHlPImXJj3K7x7lyUHjtKEOl69CSlTOWxS89jiFgNkzXfvhVjhMz/nc7/EIfN9vgooZp8XTtXJ1FREdmbyXOiQ==", "requires": { - "luxon": "^1.23.x" + "@types/luxon": "~3.3.0", + "luxon": "~3.3.0" } }, "cross-spawn": { @@ -1583,9 +1589,9 @@ } }, "luxon": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz", - "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==" }, "memory-pager": { "version": "1.5.0", diff --git a/package.json b/package.json index fd5da9d..ae0bbd1 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "dependencies": { "@hapi/hapi": "~20.3.0", "async": "~3.2.4", - "cron": "~2.1.0", + "cron": "~2.4.4", "joi": "~17.11.0", "kleur": "~4.1.5", "mongodb": "~3.7.3", From cf9a9229a714516b451e26fc808b8da0a0551bbf Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 13:25:54 +0000 Subject: [PATCH 17/44] Point the build badge to GitHub Actions, replacing Travis --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 55a7f1e..fff6fee 100644 --- a/README.md +++ b/README.md @@ -189,8 +189,8 @@ Copyright © 2013–2023, Team Pa11y and contributors [info-license]: LICENSE [info-node]: package.json [info-npm]: https://www.npmjs.com/package/pa11y-webservice -[info-build]: https://travis-ci.org/pa11y/pa11y-webservice +[info-build]: https://github.com/pa11y/pa11y-webservice/actions/workflows/tests.yml [shield-license]: https://img.shields.io/badge/license-GPL%203.0-blue.svg [shield-node]: https://img.shields.io/node/v/pa11y-webservice [shield-npm]: https://img.shields.io/npm/v/pa11y-webservice.svg -[shield-build]: https://img.shields.io/travis/pa11y/pa11y-webservice/master.svg +[shield-build]: https://github.com/pa11y/pa11y-webservice/actions/workflows/tests.yml/badge.svg From 66eed1dbf347b1a3d04d0b2e4c70fec0b5757744 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 13:28:39 +0000 Subject: [PATCH 18/44] Consistently use single quotes --- .github/workflows/publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2a8c751..9511fe6 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: inputs: dryRun: - description: "Dry run only" + description: 'Dry run only' required: true default: true type: boolean @@ -17,7 +17,7 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 16 - registry-url: "https://registry.npmjs.org" + registry-url: 'https://registry.npmjs.org' - run: npm ci - name: Publish package From 675056bdea84f884247bf5e20f926f28da0a8c7f Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 13:51:27 +0000 Subject: [PATCH 19/44] Require presence of test folders and remove generalised items --- Makefile.node | 38 ++++++-------------------------------- 1 file changed, 6 insertions(+), 32 deletions(-) diff --git a/Makefile.node b/Makefile.node index 43b79d2..0538722 100644 --- a/Makefile.node +++ b/Makefile.node @@ -1,3 +1,4 @@ + # Meta tasks # ---------- @@ -46,44 +47,17 @@ node_modules: package.json # Verify tasks # ------------ -verify: verify-eslint - @$(TASK_DONE) - -verify-eslint: - @if [ -e .eslintrc* ]; then eslint . && $(TASK_DONE); fi - -verify-coverage: - @if [ -d coverage ]; then \ - if [ -x $(NPM_BIN)/nyc ]; then \ - nyc check-coverage --lines $(EXPECTED_COVERAGE) --functions $(EXPECTED_COVERAGE) --branches $(EXPECTED_COVERAGE) && $(TASK_DONE); \ - else \ - if [ -x $(NPM_BIN)/istanbul ]; then \ - istanbul check-coverage --statement $(EXPECTED_COVERAGE) --branch $(EXPECTED_COVERAGE) --function $(EXPECTED_COVERAGE) && $(TASK_DONE); \ - fi \ - fi \ - fi +verify: + @eslint . && $(TASK_DONE) # Test tasks # ---------- -test: test-unit-coverage verify-coverage test-integration +test: test-unit test-integration @$(TASK_DONE) test-unit: - @if [ -d test/unit ]; then mocha test/unit --exit --recursive && $(TASK_DONE); fi - -test-unit-coverage: - @if [ -d test/unit ]; then \ - if [ -x $(NPM_BIN)/nyc ]; then \ - nyc --reporter=text --reporter=html $(NPM_BIN)/_mocha test/unit --exit --recursive && $(TASK_DONE); \ - else \ - if [ -x $(NPM_BIN)/istanbul ]; then \ - istanbul cover $(NPM_BIN)/_mocha -- test/unit --exit --recursive && $(TASK_DONE); \ - else \ - make test-unit; \ - fi \ - fi \ - fi + @mocha test/unit --exit --recursive && $(TASK_DONE) test-integration: - @if [ -d test/integration ]; then mocha test/integration --exit --timeout $(INTEGRATION_TIMEOUT) --slow $(INTEGRATION_SLOW) && $(TASK_DONE); fi + @mocha test/integration --exit --timeout $(INTEGRATION_TIMEOUT) --slow $(INTEGRATION_SLOW) && $(TASK_DONE) From 743760fed9539e4ac257556f82e312b7ab0c9674 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 15:24:51 +0000 Subject: [PATCH 20/44] Settle on `make lint` throughout rather than the combination of `verify` and `lint` --- Makefile | 13 +------------ Makefile.node | 11 +++-------- package.json | 3 ++- 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 5aec8d4..91161d3 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,6 @@ include Makefile.node - -# Verify tasks -# ------------ - -# Lint alias for backwards compatibility -lint: verify - - -# Database tasks -# -------------- - -# Add fixtures +# Add fixtures to database fixtures: @node ./script/fixtures.js @$(TASK_DONE) diff --git a/Makefile.node b/Makefile.node index 0538722..4820158 100644 --- a/Makefile.node +++ b/Makefile.node @@ -10,7 +10,6 @@ NPM_BIN = ./node_modules/.bin export PATH := $(NPM_BIN):$(PATH) -export EXPECTED_COVERAGE := 90 export INTEGRATION_TIMEOUT := 20000 export INTEGRATION_SLOW := 4000 @@ -25,7 +24,6 @@ TASK_DONE = echo "✓ $@ done" # ----------- all: install ci -ci: verify test # Install tasks @@ -44,15 +42,12 @@ node_modules: package.json @$(TASK_DONE) -# Verify tasks -# ------------ +# Linting and testing +# ------------------- -verify: +lint: @eslint . && $(TASK_DONE) -# Test tasks -# ---------- - test: test-unit test-integration @$(TASK_DONE) diff --git a/package.json b/package.json index ae0bbd1..2ecee20 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,8 @@ "main": "./app.js", "scripts": { "start": "node index.js", - "test": "make ci" + "test": "make test", + "lint": "make lint" }, "files": [ "*.js", From 6a8b9a0848fe706f048178f9e7031bc371c90dbd Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 15:26:26 +0000 Subject: [PATCH 21/44] Split testing in workflow; move unit tests before service boot --- .github/workflows/tests.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 84a243d..433de2c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -21,9 +21,11 @@ jobs: mongodb-version: 3.4 - run: npm ci - run: make lint - - name: Supply test configuration + - run: make test-unit + - name: Supply integration test configuration run: cp config/test.sample.json config/test.json - - name: Make webservice available to be tested + - name: Make webservice available to be integration-tested run: NODE_ENV=test node index.js & - run: sleep 10s - - run: make test + - run: make test-integration + From 0f5d9461fc64eb94be8c21892d160986c17c9690 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 15:29:25 +0000 Subject: [PATCH 22/44] Embed vars since they're already documented, narrow headings --- Makefile.node | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/Makefile.node b/Makefile.node index 4820158..4f5c119 100644 --- a/Makefile.node +++ b/Makefile.node @@ -1,17 +1,13 @@ - -# Meta tasks -# ---------- +# Ignore presence of folder `test` +# -------------------------------- .PHONY: test -# Useful variables -# ---------------- +# Make deps available +# ------------------- -NPM_BIN = ./node_modules/.bin -export PATH := $(NPM_BIN):$(PATH) -export INTEGRATION_TIMEOUT := 20000 -export INTEGRATION_SLOW := 4000 +export PATH := ./node_modules/.bin:$(PATH) # Output helpers @@ -55,4 +51,4 @@ test-unit: @mocha test/unit --exit --recursive && $(TASK_DONE) test-integration: - @mocha test/integration --exit --timeout $(INTEGRATION_TIMEOUT) --slow $(INTEGRATION_SLOW) && $(TASK_DONE) + @mocha test/integration --exit --timeout 20000 --slow 4000 && $(TASK_DONE) From c881189a0844c493cf22f573ed9460486156d803 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 15:29:48 +0000 Subject: [PATCH 23/44] Exit with an error when webservice isn't running --- test/integration/setup.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/integration/setup.js b/test/integration/setup.js index d91f669..230d3ac 100644 --- a/test/integration/setup.js +++ b/test/integration/setup.js @@ -20,6 +20,8 @@ const createNavigator = require('./helper/navigate'); const loadFixtures = require('../../data/fixture/load'); const request = require('request'); +const errorCodeForNoService = 2; + // Run before all tests before(function(done) { this.baseUrl = `http://localhost:${config.port}/`; @@ -46,7 +48,7 @@ function assertTestAppIsRunning(baseUrl, done) { request(baseUrl, error => { if (error) { console.error(`Error: Test app not started. NODE_ENV was ${process.env.NODE_ENV}; run with \`NODE_ENV=test node index.js\``); - process.exit(); + process.exit(errorCodeForNoService); } done(); }); From 04e239ea513ba492001b3c15bd7f4f0d8d09845d Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 15:31:09 +0000 Subject: [PATCH 24/44] Clarify relationship between tests and service in contribution section --- README.md | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index fff6fee..ad1d7e8 100644 --- a/README.md +++ b/README.md @@ -126,26 +126,36 @@ This option can only be provided by [a JSON configuration file](https://github.c There are many ways to contribute to Pa11y Webservice, we cover these in the [contributing guide](CONTRIBUTING.md) for this repo. -If you're ready to contribute some code, you'll need to clone the repo and get set up as outlined in the [setup guide](#setup). To run the test suite, remember to copy its config file with `cp config/test.sample.json config/test.json` if you haven't done so already! Manually start the application in test mode with: +If you're ready to contribute some code, follow the [setup guide](#setup). The project can be linted and unit tested immediately: ```sh -NODE_ENV=test npm start +make lint # Lint the code +make test-unit # Run the unit tests ``` -You'll now be able to run the following commands, either in a separate terminal session or by putting the server process into the background (`ctrl+z` then `bg`): +The integration tests require the service to be running in the background, since they'll be checking its behaviour. -```sh -make verify # Verify all of the code (ESLint) -make test # Run all tests -make test-integration # Run the integration tests -``` +1. Create a configuration file for the `test` mode; one can be created quickly with `cp config/test.sample.json config/test.json` +1. Start the service in test mode with: + ```sh + NODE_ENV=test npm start & + ``` + + The `&` places the service into the background. An alternative approach is to run `NODE_ENV=test npm start`, suspend the process with `CTRL+z`, and finally run `bg` to place it into the background. +1. ```sh + make test-integration # Run the integration tests + make test # Run both the integration tests and the unit tests mentioned above + ``` ## Fixtures -For demoing Pa11y Webservice, you can insert some example tasks and results by running one of the following commands (depending on your environment): +For demoing Pa11y Webservice, you can insert some example tasks and results by running one of the following commands, depending on your environment: ```sh NODE_ENV=development make fixtures +``` + +```sh NODE_ENV=test make fixtures ``` From a29a53de064163c1af4e5f353eecca9f8a3157ad Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 15:35:02 +0000 Subject: [PATCH 25/44] Reorganise requirements and introduction's advice about options --- README.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index ad1d7e8..155b283 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,5 @@ # Pa11y Webservice -Pa11y Webservice is a Node.js app that provides scheduled accessibility reports for multiple URLs. It runs [Pa11y][pa11y] on a list of URLs, which you can update and query the results of via a JSON web-service. - -Pa11y Webservice doesn't have a UI. In most scenarios, you may find easier to configure and run accessibility tests from [Pa11y Dashboard][pa11y-dashboard] than from Pa11y Webservice itself, so we recommend to have a look at it first. - -If you're trying to run accessibility tests as part of a CI/CD system, you may want to use [Pa11y][pa11y] or [Pa11y CI][pa11y-ci] instead, as they better suited to these tasks. - [![NPM version][shield-npm]][info-npm] [![Node.js version support][shield-node]][info-node] [![Build status][shield-build]][info-build] @@ -13,15 +7,20 @@ If you're trying to run accessibility tests as part of a CI/CD system, you may w --- -## Requirements +Pa11y Webservice is a Node.js service that can schedule accessibility testing, using [Pa11y][pa11y], for multiple URLs. -Pa11y Webservice is a [Node.js][node] application and is designed to support a stable/LTS version of Node. Pa11y 4 supports Node.js versions 12, 14 and 16. +Use this service if you're ready to interact with a restful API to coordinate your testing. For other scenarios, another Pa11y tool may be more appropriate: + +- [Pa11y Dashboard][pa11y-dashboard] provides a visual interface +- [Pa11y CI][pa11y-ci], and [Pa11y][pa11y] itself, can be executed from the command line, which is likely to be more useful for accessibility testing as part of a CI/CD workflow + +## Requirements -Pa11y Webservice also requires a [MongoDB][mongo] database to be available so it can store the results of the tests. The database doesn't have to be in the same server or computer where Pa11y Webservice is running from. +Pa11y Webservice is a [Node.js][node] application designed to support a stable/LTS version of Node. Pa11y 4 requires Node.js version 12, 14 or 16. -Since version 3, Pa11y Webservice uses Headless Chrome in order to run the tests. This means that additional dependencies maybe be required. +The service stores test results in a [MongoDB][mongo] database, and expects one to be available and running. -In [Unix-like](https://en.wikipedia.org/wiki/Unix-like) systems you may need to install the `libnss3` and `libgconf-2-4` libraries to be able to run Chrome. If you're trying to run the app in a headless environment (e.g. the cloud, or a headless server), you may also need to configure Xvfb first. Please refer to the documentation from your provider for details on how to do this. +Pa11y (and therefore this service) uses Headless Chrome to perform accessibility testing, the installation of which sometimes requires additional dependencies to be required on Linux and other Unix-like systems. Your distribution's documentation should describe how to install these. ## Setup From 8cddd1eb5cb005850f2d364611bcbe7ab8d4cd87 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 15:37:00 +0000 Subject: [PATCH 26/44] Integrate regions discussing configuration and reorganise --- README.md | 74 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 155b283..c891459 100644 --- a/README.md +++ b/README.md @@ -24,38 +24,40 @@ Pa11y (and therefore this service) uses Headless Chrome to perform accessibility ## Setup -In order to run Pa11y Webservice, we recommend cloning this repository locally: +Clone this repository: ```sh git clone https://github.com/pa11y/pa11y-webservice.git ``` -Then installing the dependencies: +Now install its dependencies: ```sh cd pa11y-webservice npm install ``` -The last step before being able to run the application is to define a configuration for it. This can be done in two ways: +We're nearly ready to run the service, but first we must provide some configuration. -### Option 1: Using Environment Variables +## Configuration -Each configuration can be set with an environment variable rather than a config file. For example to run the application on port `8080` you can use the following: +The service can be configured using either runtime environment variables or a configuration file. When both are present, the configuration file will override the environment. We provide sample versions of the [configuration file](config). + +Each option which can be configured is documented [here](#configurations), listed by its JSON-file property name - the environment variable equivalent is identical, but upper-snake-cased. + +### Configuration using environment variables + +To configure a port for the service, say, `8080`, the relevant environment variable is `PORT`: ```sh PORT=8080 npm start ``` -The [available configurations are documented here](#configurations). - -### Option 2: Using Config Files - -The alternative to environment variables is to set the configuration in one or more JSON files. You can define as many config files as environments you're planning to run the app from. Each config file will contain the configuration for one of these environments or modes. +### Configuration using a JSON file -The mode that the app will run on can be set using the `NODE_ENV` environment variable. If no environment is defined, Pa11y Webservice will run in `development` mode. Common values for the `NODE_ENV` variable are `production`, `development` or `test`. +Configuration in a JSON file. You could, for example, define a separate JSON file for each of several contexts. We label each of these a 'mode'. -Pa11y Webservice will use the config file that matches the environment name. For example, if `NODE_ENV` equals `production`, the `production.json` config file will be used. +The mode is set by the `NODE_ENV` environment variable, and defaults to `development` when it's absent. Pa11y Webservice will use the config file with the name `{mode}.json`. For example, providing `NODE_ENV=production` would lead to the service looking for `production.json`. ```sh NODE_ENV=production npm start @@ -78,48 +80,54 @@ Once the configuration has been created, the app can be run in the desired mode NODE_ENV=development npm start ``` -## API documentation +### List of configuration options -The webservice which Pa11y Webservice exposes is documented in the wiki: +#### `database` -- [Webservice endpoints][wiki-web-service] -- [Resource types][wiki-resources] +*(string)* The MongoDB [connection string][mongo-connection-string] for your database. -## Client libraries +Env equivalent: `DATABASE`. -- [Pa11y Webservice Node.js Client][pa11y-webservice-client-node] +#### `host` -## Configurations +*(string)* The host to run the application on. This is normally best left as `"0.0.0.0"`, which means the application will run on any incoming connections. -If both environment variables _and_ a configuration file are present, the settings in the configuration file will override the environment variables. +Env equivalent: `HOST`. -The boot configurations for Pa11y Webservice are as follows. Look at the sample JSON files in the repo for example usage. +#### `port` -### `database` +*(number)* The port to run the application on. -*(string)* The mongodb [connection string][mongo-connection-string] for your database. Set via a config file or the `DATABASE` environment variable. +Env equivalent: `PORT`. -### `host` +#### `cron` -*(string)* The host to run the application on. This is normally best left as `"0.0.0.0"` – which means the application will run on any incoming connections. Set via a config file or the `HOST` environment variable. +*(string)* A crontab which describes when to generate reports for each task in the application. -### `port` +Env equivalent: `CRON`. -*(number)* The port to run the application on. Set via a config file or the `PORT` environment variable. +#### `numWorkers` -### `cron` +*(number)* The concurrency limit or number of workers that will be running concurrently on each cron execution. Set via a config file or the `NUM_WORKERS` environment variable. -*(string)* A crontab which describes when to generate reports for each task in the application. Set via a config file or the `CRON` environment variable. +Env equivalent: `NUM_WORKERS`. -### `chromeLaunchConfig` (config file only) +#### `chromeLaunchConfig` (config file only) *(object)* Launch options for the Headless Chrome instance. See the [`chromeLaunchConfig`](https://github.com/pa11y/pa11y#chromelaunchconfig-object) documentation for configuration options. -This option can only be provided by [a JSON configuration file](https://github.com/pa11y/pa11y-webservice#option-2-using-config-files). It can't be set with an environment variable. +Env equivalent: none. This option can only be defined by a file. -### `numWorkers` +## API documentation -*(number)* The concurrency limit or number of workers that will be running concurrently on each cron execution. Set via a config file or the `NUM_WORKERS` environment variable. +Our wiki documents the interface presented by this webservice: + +- [Webservice endpoints][wiki-web-service] +- [Resource types][wiki-resources] + +## Client libraries + +- [Pa11y Webservice Node.js Client][pa11y-webservice-client-node] ## Contributing From 7175c6dd0b532e6d6accaed72e95f68974ac28bb Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 15:37:36 +0000 Subject: [PATCH 27/44] Remove unused link definitions --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index c891459..0e396ae 100644 --- a/README.md +++ b/README.md @@ -177,7 +177,7 @@ The following table lists the major versions available and, for each previous ma | Major version | Final minor version | Node.js support | Support end date | | :------------ | :----------------- | :--------------- | :--------------- | -| 4 | N/A | 12, 14, 16 | N/A | +| 4 | | 12, 14, 16 | ✅ Current major version | | 3 | 3.2.1 | 8, 10 | 2022-05-26 | | 2 | 2.3.1 | 4, 6 | 2020-01-04 | | 1 | 1.11 | 0.10, 0.12, 4, 6 | 2016-12-05 | @@ -195,11 +195,7 @@ Copyright © 2013–2023, Team Pa11y and contributors [pa11y]: https://github.com/pa11y/pa11y [pa11y-ci]: https://github.com/pa11y/pa11y-ci [pa11y-dashboard]: https://github.com/pa11y/pa11y-dashboard -[pa11y-docs]: https://github.com/pa11y/pa11y#installing [pa11y-webservice-client-node]: https://github.com/pa11y/pa11y-webservice-client-node -[phantom]: http://phantomjs.org/ -[travis]: https://travis-ci.org/pa11y/pa11y-webservice -[travis-img]: https://travis-ci.org/pa11y/pa11y-webservice.png?branch=master [wiki-web-service]: https://github.com/pa11y/pa11y-webservice/wiki/Web-Service-Endpoints [wiki-resources]: https://github.com/pa11y/pa11y-webservice/wiki/Resource-Types From eeffaf387f7355f761ca68dcc2ece3d989494177 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 15:48:23 +0000 Subject: [PATCH 28/44] Publish with minimum supported Node.js version (12) --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9511fe6..be379b4 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 12 registry-url: 'https://registry.npmjs.org' - run: npm ci From 1ea8f61537e606111b09e02ef3972a3cee9fb8bd Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 15:48:50 +0000 Subject: [PATCH 29/44] Move MongoDB action adjacent to remainder of integration test setup to allow early failures --- .github/workflows/tests.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 433de2c..f4ca343 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,17 +15,18 @@ jobs: - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - - name: Supply MongoDB 3.4 - uses: supercharge/mongodb-github-action@1.3.0 - with: - mongodb-version: 3.4 - run: npm ci - run: make lint - run: make test-unit - - name: Supply integration test configuration + + - name: Supply MongoDB 3.4 + uses: supercharge/mongodb-github-action@1.3.0 + with: + mongodb-version: 3.4 + - name: Supply integration test configuration file run: cp config/test.sample.json config/test.json - name: Make webservice available to be integration-tested run: NODE_ENV=test node index.js & - run: sleep 10s - - run: make test-integration + - run: make test-integration From fd668314c2302bebfe50414e28ba7056c656b1aa Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 16:15:01 +0000 Subject: [PATCH 30/44] Fix copyright newline --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e396ae..d8bc4df 100644 --- a/README.md +++ b/README.md @@ -185,7 +185,7 @@ The following table lists the major versions available and, for each previous ma ## License -Pa11y Webservice is licensed under the [GNU General Public License 3.0][info-license]. +Pa11y Webservice is licensed under the [GNU General Public License 3.0][info-license]. Copyright © 2013–2023, Team Pa11y and contributors [gpl]: http://www.gnu.org/licenses/gpl-3.0.html From b472018a2b6f123feca89875370565fd7da70ee8 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 16:15:14 +0000 Subject: [PATCH 31/44] Make requirements clearer --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d8bc4df..cc77175 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,10 @@ Use this service if you're ready to interact with a restful API to coordinate yo ## Requirements -Pa11y Webservice is a [Node.js][node] application designed to support a stable/LTS version of Node. Pa11y 4 requires Node.js version 12, 14 or 16. +- **[Node.js][node]**: Each major version of Pa11y Webservice is designed to support a set of stable/LTS versions of Node. Pa11y 4 requires Node.js version 12, 14 or 16. +- **[MongoDB][mongo]**: The service stores test results in a MongoDB database, and expects one to be available and running. -The service stores test results in a [MongoDB][mongo] database, and expects one to be available and running. - -Pa11y (and therefore this service) uses Headless Chrome to perform accessibility testing, the installation of which sometimes requires additional dependencies to be required on Linux and other Unix-like systems. Your distribution's documentation should describe how to install these. +Pa11y (and therefore this service) uses Headless Chrome to perform accessibility testing. On Linux and other Unix-like systems, Pa11y's attempt to install it as a dependency sometimes fails since additional operating system packages will be required. Your distribution's documentation should describe how to install these. ## Setup From c9fe57f97ef9008ff47dce974565354c83b72247 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 16:15:33 +0000 Subject: [PATCH 32/44] Fix tone in introduction after revision --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cc77175..3f0ff25 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Pa11y Webservice is a Node.js service that can schedule accessibility testing, using [Pa11y][pa11y], for multiple URLs. -Use this service if you're ready to interact with a restful API to coordinate your testing. For other scenarios, another Pa11y tool may be more appropriate: +Use this service if you'd like to coordinate your testing by interacting with a restful API. For other scenarios, another Pa11y tool may be more appropriate: - [Pa11y Dashboard][pa11y-dashboard] provides a visual interface - [Pa11y CI][pa11y-ci], and [Pa11y][pa11y] itself, can be executed from the command line, which is likely to be more useful for accessibility testing as part of a CI/CD workflow From 37188d8231cfe5dea9a84cd1e29ae193e19f2e1e Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 16:16:03 +0000 Subject: [PATCH 33/44] Emphasise headless chrome config exclusivity --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f0ff25..9e89a32 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ PORT=8080 npm start ### Configuration using a JSON file -Configuration in a JSON file. You could, for example, define a separate JSON file for each of several contexts. We label each of these a 'mode'. +Configuration can also be provided by a JSON file, allowing separate configurations to be maintained for multiple contexts. This method is also the only way to configure the instance of Headless Chrome that Pa11y will use. The mode is set by the `NODE_ENV` environment variable, and defaults to `development` when it's absent. Pa11y Webservice will use the config file with the name `{mode}.json`. For example, providing `NODE_ENV=production` would lead to the service looking for `production.json`. From 5a9ab3319693ca1c3267111d001f7a2fc1337f68 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 16:16:51 +0000 Subject: [PATCH 34/44] Link to config dir, be clearer about modes, separate scripts --- README.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 9e89a32..54691b8 100644 --- a/README.md +++ b/README.md @@ -56,27 +56,24 @@ PORT=8080 npm start Configuration can also be provided by a JSON file, allowing separate configurations to be maintained for multiple contexts. This method is also the only way to configure the instance of Headless Chrome that Pa11y will use. -The mode is set by the `NODE_ENV` environment variable, and defaults to `development` when it's absent. Pa11y Webservice will use the config file with the name `{mode}.json`. For example, providing `NODE_ENV=production` would lead to the service looking for `production.json`. +We label each of these contexts a 'mode'. The mode is set by the `NODE_ENV` environment variable, and defaults to `development`. Pa11y Webservice will look for the mode's configuration file at `config/{mode}.json`. Providing `NODE_ENV=production` would lead to the service looking for `config/production.json`: ```sh NODE_ENV=production npm start -# Will use the production.json config file ``` -The `config/` directory contains three example config files. You can use these as a base to create your own configuration. +The [`config`](config) directory here contains three examples. You could use one as a base to create your own configuration. ```sh cp config/development.sample.json config/development.json -cp config/production.sample.json config/production.json -cp config/test.sample.json config/test.json ``` -The [available configurations are documented here](#configurations). - -Once the configuration has been created, the app can be run in the desired mode by changing the `NODE_ENV` environment variable: +```sh +cp config/production.sample.json config/production.json +``` ```sh -NODE_ENV=development npm start +cp config/test.sample.json config/test.json ``` ### List of configuration options From 69288b5b71c0ade9163edf4e3e0e6cd662f3eae9 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 16:17:27 +0000 Subject: [PATCH 35/44] Fix weird environment var section after revision --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 54691b8..2cf285f 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Each option which can be configured is documented [here](#configurations), liste ### Configuration using environment variables -To configure a port for the service, say, `8080`, the relevant environment variable is `PORT`: +Supply each option to the service's environment. For example, to supply a port inline at the time of execution, the relevant environment variable would be `PORT`: ```sh PORT=8080 npm start From 81a87c8442d6cbba9469bb1bb01f6898b8cc947b Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 16:17:59 +0000 Subject: [PATCH 36/44] Shorten options descriptions --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 2cf285f..f29383f 100644 --- a/README.md +++ b/README.md @@ -40,9 +40,9 @@ We're nearly ready to run the service, but first we must provide some configurat ## Configuration -The service can be configured using either runtime environment variables or a configuration file. When both are present, the configuration file will override the environment. We provide sample versions of the [configuration file](config). +The service can be configured using either runtime environment variables or a configuration file. When both are present, the file's contents will override the environment variables. We provide sample versions of the [configuration file](config). -Each option which can be configured is documented [here](#configurations), listed by its JSON-file property name - the environment variable equivalent is identical, but upper-snake-cased. +Each configurable option is documented [here](#configurations), listed by its JSON-file property name. The environment variable equivalent for each option is identical, but upper-snake-cased. ### Configuration using environment variables @@ -98,19 +98,19 @@ Env equivalent: `PORT`. #### `cron` -*(string)* A crontab which describes when to generate reports for each task in the application. +*(string)* A crontab which describes when to generate reports for each task. Env equivalent: `CRON`. #### `numWorkers` -*(number)* The concurrency limit or number of workers that will be running concurrently on each cron execution. Set via a config file or the `NUM_WORKERS` environment variable. +*(number)* The number of workers that will be running concurrently on each cron execution. Env equivalent: `NUM_WORKERS`. #### `chromeLaunchConfig` (config file only) -*(object)* Launch options for the Headless Chrome instance. See the [`chromeLaunchConfig`](https://github.com/pa11y/pa11y#chromelaunchconfig-object) documentation for configuration options. +*(object)* Options to be supplied to the instance of Headless Chrome that Pa11y will create. See [`chromeLaunchConfig`](https://github.com/pa11y/pa11y#chromelaunchconfig-object)'s documentation for more information. Env equivalent: none. This option can only be defined by a file. From ff9d8cd5f3adfc0f5eac0790e0ef6c1f27f2438c Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 16:18:43 +0000 Subject: [PATCH 37/44] Link to fixtures --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f29383f..ddbee57 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,7 @@ The integration tests require the service to be running in the background, since ## Fixtures -For demoing Pa11y Webservice, you can insert some example tasks and results by running one of the following commands, depending on your environment: +If you'd like to preview Pa11y Webservice or present it to someone else, we've provided some [sample tasks and results](data/fixture), which can be embedded by running one of the following commands: ```sh NODE_ENV=development make fixtures From 2d6018b8156b8d18606070324ff92536584da809 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 17:09:15 +0000 Subject: [PATCH 38/44] Fix link to list of configuration options --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ddbee57..b60e9a5 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ We're nearly ready to run the service, but first we must provide some configurat The service can be configured using either runtime environment variables or a configuration file. When both are present, the file's contents will override the environment variables. We provide sample versions of the [configuration file](config). -Each configurable option is documented [here](#configurations), listed by its JSON-file property name. The environment variable equivalent for each option is identical, but upper-snake-cased. +Each configurable option is documented [here](#list-of-configuration-options), listed by its JSON-file property name. The environment variable equivalent for each option is identical, but upper-snake-cased. ### Configuration using environment variables From ba5b554bc3d25d4e63b4dd799b06d86220aa9133 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 17:09:48 +0000 Subject: [PATCH 39/44] Use normal weight for requirements links --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b60e9a5..91b12fa 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,8 @@ Use this service if you'd like to coordinate your testing by interacting with a ## Requirements -- **[Node.js][node]**: Each major version of Pa11y Webservice is designed to support a set of stable/LTS versions of Node. Pa11y 4 requires Node.js version 12, 14 or 16. -- **[MongoDB][mongo]**: The service stores test results in a MongoDB database, and expects one to be available and running. +- [Node.js][node]: Each major version of Pa11y Webservice is designed to support a set of stable/LTS versions of Node. Pa11y 4 requires Node.js version 12, 14 or 16. +- [MongoDB][mongo]: The service stores test results in a MongoDB database, and expects one to be available and running. Pa11y (and therefore this service) uses Headless Chrome to perform accessibility testing. On Linux and other Unix-like systems, Pa11y's attempt to install it as a dependency sometimes fails since additional operating system packages will be required. Your distribution's documentation should describe how to install these. From 682a452c552ee91c0f2cf4177757368e0391ac4e Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 17:15:13 +0000 Subject: [PATCH 40/44] Make first line sound better --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 91b12fa..d6c5f49 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ --- -Pa11y Webservice is a Node.js service that can schedule accessibility testing, using [Pa11y][pa11y], for multiple URLs. +Pa11y Webservice is a Node.js service that can schedule accessibility testing for multiple URLs, using [Pa11y][pa11y]. Use this service if you'd like to coordinate your testing by interacting with a restful API. For other scenarios, another Pa11y tool may be more appropriate: From cc924cd25fd770f98b808c8fd5570fd723199463 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 17:15:39 +0000 Subject: [PATCH 41/44] Improve introduction to `#configuration` --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d6c5f49..1f14a0e 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ We're nearly ready to run the service, but first we must provide some configurat ## Configuration -The service can be configured using either runtime environment variables or a configuration file. When both are present, the file's contents will override the environment variables. We provide sample versions of the [configuration file](config). +The service can be configured in one of two ways: using environment variables, or using a configuration file. When both are present, the file's contents will override the environment variables. We provide some [sample configuration files](config) for reference. Each configurable option is documented [here](#list-of-configuration-options), listed by its JSON-file property name. The environment variable equivalent for each option is identical, but upper-snake-cased. From 697713aef2a57d191bc87726192716f7827e5f75 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 17:17:49 +0000 Subject: [PATCH 42/44] Change 'Pa11y 4` to `Pa11y Webservice 4` --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1f14a0e..567e082 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Use this service if you'd like to coordinate your testing by interacting with a ## Requirements -- [Node.js][node]: Each major version of Pa11y Webservice is designed to support a set of stable/LTS versions of Node. Pa11y 4 requires Node.js version 12, 14 or 16. +- [Node.js][node]: Each major version of Pa11y Webservice is designed to support a set of stable/LTS versions of Node.js. Pa11y Webservice 4 requires Node.js 12, 14 or 16. - [MongoDB][mongo]: The service stores test results in a MongoDB database, and expects one to be available and running. Pa11y (and therefore this service) uses Headless Chrome to perform accessibility testing. On Linux and other Unix-like systems, Pa11y's attempt to install it as a dependency sometimes fails since additional operating system packages will be required. Your distribution's documentation should describe how to install these. From 887a948bea9fb685bfb56ae7314f1fa8ffb89520 Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 17:18:55 +0000 Subject: [PATCH 43/44] Remove unused task `make all` --- Makefile.node | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Makefile.node b/Makefile.node index 4f5c119..66e2b5f 100644 --- a/Makefile.node +++ b/Makefile.node @@ -16,12 +16,6 @@ export PATH := ./node_modules/.bin:$(PATH) TASK_DONE = echo "✓ $@ done" -# Group tasks -# ----------- - -all: install ci - - # Install tasks # ------------- From 35393f523009538a6c6700f94933ed6ca160dc5e Mon Sep 17 00:00:00 2001 From: Danyal Aytekin Date: Tue, 7 Nov 2023 17:20:43 +0000 Subject: [PATCH 44/44] Remove make's install tasks since we use `npm install` and `npm ci` in the readme and CI --- Makefile.node | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/Makefile.node b/Makefile.node index 66e2b5f..f96d658 100644 --- a/Makefile.node +++ b/Makefile.node @@ -16,22 +16,6 @@ export PATH := ./node_modules/.bin:$(PATH) TASK_DONE = echo "✓ $@ done" -# Install tasks -# ------------- - -clean: - @git clean -fxd - @$(TASK_DONE) - -install: node_modules - @$(TASK_DONE) - -node_modules: package.json - @npm prune --production=false - @npm install - @$(TASK_DONE) - - # Linting and testing # -------------------