diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9fc2f99..d0dea17 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,7 +2,7 @@ name: 'Build' on: push: - branches: [master, develop] + branches: [develop] pull_request: branches: [master, develop] diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3b33b92..dda9b61 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -2,7 +2,7 @@ name: 'Lint' on: push: - branches: [master, develop] + branches: [develop] pull_request: branches: [master, develop] diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b79edc2..24d6cad 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,7 +2,7 @@ name: 'Test' on: push: - branches: [master, develop] + branches: [develop] pull_request: branches: [master, develop] diff --git a/README.md b/README.md index acd3014..436f551 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ **html-w3c-validator** is a CLI tool to validate multiple html pages using [validator.w3.org](https://validator.w3.org/). -You might use a JavaScript framework or simply use HTML: **you should validate your production HTML** and this validation should be part of your CI/CD pipeline (tests, linting, etc.). +You might use a JavaScript framework or simply use HTML but **you should always validate your production HTML** and this validation should be part of your CI/CD pipeline (tests, linting, etc.). ### Why should I validate my HTML pages? @@ -66,9 +66,12 @@ npm install --save-dev html-w3c-validator start-server-and-test ### `.html-w3c-validatorrc.json` -```json +```jsonc { - "urls": ["http://localhost:3000/", "http://localhost:3000/about"] + "urls": ["http://localhost:3000/", "http://localhost:3000/about"], + + // You can also specify HTML files instead of URLs + "files": ["./index.html", "./about.html"] } ``` diff --git a/example/.html-w3c-validatorrc.json b/example/.html-w3c-validatorrc.json index e72a04d..256c809 100644 --- a/example/.html-w3c-validatorrc.json +++ b/example/.html-w3c-validatorrc.json @@ -1,3 +1,4 @@ { - "urls": ["http://localhost:3000/", "http://localhost:3000/about"] + "urls": ["http://localhost:3000/", "http://localhost:3000/about"], + "files": ["./build/index.html", "./build/about.html"] } diff --git a/example/package-lock.json b/example/package-lock.json index 8d35ff9..e962402 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -31,15 +31,16 @@ "@commitlint/cli": "16.2.1", "@commitlint/config-conventional": "16.2.1", "@swc/cli": "0.1.55", - "@swc/core": "1.2.143", + "@swc/core": "1.2.144", "@swc/jest": "0.2.17", "@types/html-validator": "5.0.2", - "@types/jest": "27.4.0", + "@types/jest": "27.4.1", "@types/mock-fs": "4.13.1", - "@types/node": "17.0.18", + "@types/node": "17.0.21", + "@typescript-eslint/eslint-plugin": "5.12.1", "editorconfig-checker": "4.0.2", "eslint": "8.9.0", - "eslint-config-conventions": "1.0.1", + "eslint-config-conventions": "1.1.0", "eslint-config-prettier": "8.4.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-prettier": "4.0.0", @@ -53,7 +54,7 @@ "lint-staged": "12.3.4", "markdownlint-cli": "0.31.1", "mock-fs": "5.1.2", - "pinst": "2.1.6", + "pinst": "3.0.0", "prettier": "2.5.1", "rimraf": "3.0.2", "semantic-release": "19.0.2", @@ -1810,8 +1811,7 @@ "../node_modules/@types/json-schema": { "version": "7.0.9", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "../node_modules/@types/json5": { "version": "0.0.29", @@ -1878,7 +1878,6 @@ "version": "5.12.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.12.0", "@typescript-eslint/type-utils": "5.12.0", @@ -1938,7 +1937,6 @@ "version": "5.12.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/types": "5.12.0", "@typescript-eslint/visitor-keys": "5.12.0" @@ -1955,7 +1953,6 @@ "version": "5.12.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/utils": "5.12.0", "debug": "^4.3.2", @@ -1981,7 +1978,6 @@ "version": "5.12.0", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -1994,7 +1990,6 @@ "version": "5.12.0", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/types": "5.12.0", "@typescript-eslint/visitor-keys": "5.12.0", @@ -2021,7 +2016,6 @@ "version": "5.12.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/json-schema": "^7.0.9", "@typescript-eslint/scope-manager": "5.12.0", @@ -2045,7 +2039,6 @@ "version": "5.12.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/types": "5.12.0", "eslint-visitor-keys": "^3.0.0" @@ -4161,7 +4154,6 @@ "version": "5.1.1", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -4290,7 +4282,6 @@ "version": "4.3.0", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=4.0" } @@ -12126,7 +12117,6 @@ "version": "3.21.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^1.8.1" }, @@ -12140,8 +12130,7 @@ "../node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", "dev": true, - "license": "0BSD", - "peer": true + "license": "0BSD" }, "../node_modules/typanion": { "version": "3.7.1", @@ -14299,17 +14288,18 @@ "@commitlint/cli": "16.2.1", "@commitlint/config-conventional": "16.2.1", "@swc/cli": "0.1.55", - "@swc/core": "1.2.143", + "@swc/core": "1.2.144", "@swc/jest": "0.2.17", "@types/html-validator": "5.0.2", - "@types/jest": "27.4.0", + "@types/jest": "27.4.1", "@types/mock-fs": "4.13.1", - "@types/node": "17.0.18", + "@types/node": "17.0.21", + "@typescript-eslint/eslint-plugin": "5.12.1", "chalk": "4.1.2", "clipanion": "3.1.0", "editorconfig-checker": "4.0.2", "eslint": "8.9.0", - "eslint-config-conventions": "1.0.1", + "eslint-config-conventions": "1.1.0", "eslint-config-prettier": "8.4.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-prettier": "4.0.0", @@ -14325,7 +14315,7 @@ "markdownlint-cli": "0.31.1", "mock-fs": "5.1.2", "ora": "5.4.1", - "pinst": "2.1.6", + "pinst": "3.0.0", "prettier": "2.5.1", "read-pkg": "5.2.0", "rimraf": "3.0.2", @@ -15537,8 +15527,7 @@ }, "@types/json-schema": { "version": "7.0.9", - "dev": true, - "peer": true + "dev": true }, "@types/json5": { "version": "0.0.29", @@ -15593,7 +15582,6 @@ "@typescript-eslint/eslint-plugin": { "version": "5.12.0", "dev": true, - "peer": true, "requires": { "@typescript-eslint/scope-manager": "5.12.0", "@typescript-eslint/type-utils": "5.12.0", @@ -15620,7 +15608,6 @@ "@typescript-eslint/scope-manager": { "version": "5.12.0", "dev": true, - "peer": true, "requires": { "@typescript-eslint/types": "5.12.0", "@typescript-eslint/visitor-keys": "5.12.0" @@ -15629,7 +15616,6 @@ "@typescript-eslint/type-utils": { "version": "5.12.0", "dev": true, - "peer": true, "requires": { "@typescript-eslint/utils": "5.12.0", "debug": "^4.3.2", @@ -15638,13 +15624,11 @@ }, "@typescript-eslint/types": { "version": "5.12.0", - "dev": true, - "peer": true + "dev": true }, "@typescript-eslint/typescript-estree": { "version": "5.12.0", "dev": true, - "peer": true, "requires": { "@typescript-eslint/types": "5.12.0", "@typescript-eslint/visitor-keys": "5.12.0", @@ -15658,7 +15642,6 @@ "@typescript-eslint/utils": { "version": "5.12.0", "dev": true, - "peer": true, "requires": { "@types/json-schema": "^7.0.9", "@typescript-eslint/scope-manager": "5.12.0", @@ -15671,7 +15654,6 @@ "@typescript-eslint/visitor-keys": { "version": "5.12.0", "dev": true, - "peer": true, "requires": { "@typescript-eslint/types": "5.12.0", "eslint-visitor-keys": "^3.0.0" @@ -17041,7 +17023,6 @@ "eslint-scope": { "version": "5.1.1", "dev": true, - "peer": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -17105,8 +17086,7 @@ }, "estraverse": { "version": "4.3.0", - "dev": true, - "peer": true + "dev": true }, "esutils": { "version": "2.0.3", @@ -22256,15 +22236,13 @@ "tsutils": { "version": "3.21.0", "dev": true, - "peer": true, "requires": { "tslib": "^1.8.1" }, "dependencies": { "tslib": { "version": "1.14.1", - "dev": true, - "peer": true + "dev": true } } }, diff --git a/package-lock.json b/package-lock.json index c58c827..0d08630 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,15 +24,16 @@ "@commitlint/cli": "16.2.1", "@commitlint/config-conventional": "16.2.1", "@swc/cli": "0.1.55", - "@swc/core": "1.2.143", + "@swc/core": "1.2.144", "@swc/jest": "0.2.17", "@types/html-validator": "5.0.2", - "@types/jest": "27.4.0", + "@types/jest": "27.4.1", "@types/mock-fs": "4.13.1", - "@types/node": "17.0.18", + "@types/node": "17.0.21", + "@typescript-eslint/eslint-plugin": "5.12.1", "editorconfig-checker": "4.0.2", "eslint": "8.9.0", - "eslint-config-conventions": "1.0.1", + "eslint-config-conventions": "1.1.0", "eslint-config-prettier": "8.4.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-prettier": "4.0.0", @@ -46,7 +47,7 @@ "lint-staged": "12.3.4", "markdownlint-cli": "0.31.1", "mock-fs": "5.1.2", - "pinst": "2.1.6", + "pinst": "3.0.0", "prettier": "2.5.1", "rimraf": "3.0.2", "semantic-release": "19.0.2", @@ -242,9 +243,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", + "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", "devOptional": true, "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", @@ -253,8 +254,8 @@ "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -938,9 +939,9 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", - "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -1729,9 +1730,9 @@ } }, "node_modules/@swc/core": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.143.tgz", - "integrity": "sha512-kZ1OVaNS183b3nMZBDQMev/ULpF/iUcF4bwlx+Nz6GH7D9qGTTbhiN7xWkoCWjcCY1TF8Bt7z1+ddX6ibPSc8w==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.144.tgz", + "integrity": "sha512-gQoNc7eu6oeaiQEd4c7fAb32GOpj8WyDBD+XtSrnfMXv6EPj4i71X3gh98SamHD9WqTn0cFCXUZF8JnHbhQFIw==", "dev": true, "engines": { "node": ">=10" @@ -1741,25 +1742,25 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-android-arm-eabi": "1.2.143", - "@swc/core-android-arm64": "1.2.143", - "@swc/core-darwin-arm64": "1.2.143", - "@swc/core-darwin-x64": "1.2.143", - "@swc/core-freebsd-x64": "1.2.143", - "@swc/core-linux-arm-gnueabihf": "1.2.143", - "@swc/core-linux-arm64-gnu": "1.2.143", - "@swc/core-linux-arm64-musl": "1.2.143", - "@swc/core-linux-x64-gnu": "1.2.143", - "@swc/core-linux-x64-musl": "1.2.143", - "@swc/core-win32-arm64-msvc": "1.2.143", - "@swc/core-win32-ia32-msvc": "1.2.143", - "@swc/core-win32-x64-msvc": "1.2.143" + "@swc/core-android-arm-eabi": "1.2.144", + "@swc/core-android-arm64": "1.2.144", + "@swc/core-darwin-arm64": "1.2.144", + "@swc/core-darwin-x64": "1.2.144", + "@swc/core-freebsd-x64": "1.2.144", + "@swc/core-linux-arm-gnueabihf": "1.2.144", + "@swc/core-linux-arm64-gnu": "1.2.144", + "@swc/core-linux-arm64-musl": "1.2.144", + "@swc/core-linux-x64-gnu": "1.2.144", + "@swc/core-linux-x64-musl": "1.2.144", + "@swc/core-win32-arm64-msvc": "1.2.144", + "@swc/core-win32-ia32-msvc": "1.2.144", + "@swc/core-win32-x64-msvc": "1.2.144" } }, "node_modules/@swc/core-android-arm-eabi": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.143.tgz", - "integrity": "sha512-OyRhH2NfHRm8jgN6KxpEX5fBg2KaGdocPQgSWzhk9QSnn+juacBXg6lE9lQEb1nekb36XusE51GNiImOnZI9RQ==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.144.tgz", + "integrity": "sha512-zbcLJDj6i1/T4TcTwBdQdP5Y87EBJxlxHfF94iZL4PbIZNJ+D6pBklCoNl2wb61UWiTC7hf/oahuRYY5MshguA==", "cpu": [ "arm" ], @@ -1773,9 +1774,9 @@ } }, "node_modules/@swc/core-android-arm64": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.143.tgz", - "integrity": "sha512-hMnZcFkoI26n3QakazyNmuMpaIm/pyC1KJXvp49wTaFazbeG0OqxbWvzUIK3vDnXJPuNf1m9c0jXtvQaXbacvQ==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.144.tgz", + "integrity": "sha512-thP9dB7+MLjg7KYqyShfdQ8V48BJ1YVi6FRFxTUJV9Nf55cxA0nNFTyCjF2Lm2OEdUbcnGFQNvjoCaCUajcmcA==", "cpu": [ "arm64" ], @@ -1789,9 +1790,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.143.tgz", - "integrity": "sha512-Mcd27MvxBCqNJ9HHEu2RH7lY0zcImSP1/3uivJ4eiiAE7WSUdrs9flhryZ7AlOfs0DR7b4fpjJgK0tZyg9K9Yw==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.144.tgz", + "integrity": "sha512-4P7YNa04msjaaHOzOtQRPcS93iUZNydALBsVg3pDDII/w2ypegx0Chqd/Hj3ch6MHhyIw52LUrdtavzULCcgTA==", "cpu": [ "arm64" ], @@ -1805,9 +1806,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.143.tgz", - "integrity": "sha512-KV8147NuOqU6wCliAF+PmpbUecwUn0GynOUjb44kMbwCsYeH/Pm5FewGvyW9Dr7rnpnoT11pOUAJlcRzRfXrDA==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.144.tgz", + "integrity": "sha512-u9TAgeNnMu1g7rEA56TYLaeogsj/zZwPVGP3EYbcMRuMayznc83ay48EY9Mw1YOXg9PSkvysyHtkfgq4JH8LCw==", "cpu": [ "x64" ], @@ -1821,9 +1822,9 @@ } }, "node_modules/@swc/core-freebsd-x64": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.143.tgz", - "integrity": "sha512-SU3hOtPqwaCxTO8jajEaNMO8aU0/5JduuRBbv843UzCz9S2on+dTYNkm94TsBxhX+JYN+T9yGi/tynoTjKj1QA==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.144.tgz", + "integrity": "sha512-Hh75pdZqSGSqV7jy0qNNWDwiJpvcteX5RlPV1FM7nvG0pzP+MbkD+X48dMN++J5K5w8vURJFQw5xPdUFgBHWXw==", "cpu": [ "x64" ], @@ -1837,9 +1838,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.143.tgz", - "integrity": "sha512-ZGfb0Fz2jQqrRv3gg0gdzQfkZbqTAC9ac03fXx0KiNFgkAjnWNm0JYRQe0sxa1L5wBml2Sv4aAFIN1BHi6roVA==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.144.tgz", + "integrity": "sha512-8NMu9StMGA6tJEtHISTxG//+f9Jb6SzAErfMN60QeeNBrc2ln1wxFcQiQqnNNF1jFegbRgtOoRMwcVlL6EEKfA==", "cpu": [ "arm" ], @@ -1853,9 +1854,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.143.tgz", - "integrity": "sha512-roLB+QYf7omusDTNfqsAuFWMyeRjXi2Wp1abNh++7YZVhkZ57q1tUNJiqw6KJhaSd5KSQGpBygarDRvL70ZZ4Q==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.144.tgz", + "integrity": "sha512-Ug/qN0aFQXeT8iTEpXEZdmXpvt9fZ5fA3HuRf4ULzkh89v+blICeu4L3er7y9YCpfMY1Pg1+SPNqBYXmxzrt3w==", "cpu": [ "arm64" ], @@ -1869,9 +1870,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.143.tgz", - "integrity": "sha512-66qRHVh2F4Z0b6G8n9CEKuKwYVIzfTlNHixwoqCgdCbHT5n1lUiWigDel1psCDbrD/p9nWTU0lfVtbqmKJWnPw==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.144.tgz", + "integrity": "sha512-qLZnHNOtCRjqGGIZ8VbkgOQjtSXcUFrlQCfrfS4IZVH/WawrE+qpJ7r7x8Qn7Mu1n+kAAzsdn7daMZooBTNoeQ==", "cpu": [ "arm64" ], @@ -1885,9 +1886,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.143.tgz", - "integrity": "sha512-FSn9E+uWSyLQtHFpJcj+jNU+NPxrwOMlB+XUObfRcZwRzV6W0KeGLwnwvuhByYmGE7ujvEGCEQpLP95ER88TzQ==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.144.tgz", + "integrity": "sha512-B8dmeZbBGNcVg9PSse9EzNFjd3JJwhWmahHhszWKHgTwatRN5FdDxbcvi41ay0J23sp/3ifMmezqJdpb7b0oSQ==", "cpu": [ "x64" ], @@ -1901,9 +1902,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.143.tgz", - "integrity": "sha512-yCD0LkqUVTLz07MD1m5gajfdOobIqUdQ8E0ZarkcCqvd6eLygXb7U2fn0pZs1eadOqxLSjEjig1i2bCx655Z5w==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.144.tgz", + "integrity": "sha512-x26E7JY9gTOQS8M/QEgflJeU5D0QI/1jYEpT5/3HmXckVkSnmUNEus9g2kmdj0piPwTkrnLoZ7SClU81dUVIig==", "cpu": [ "x64" ], @@ -1917,9 +1918,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.143.tgz", - "integrity": "sha512-ehdvirsmL5yJ3J5HUcZD48VBFFiINX61FM5NTfRQgZgqGTyZo88iNTHsBmQXaEtp25y9xr6xXtKXeRGIBpuszg==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.144.tgz", + "integrity": "sha512-7ZCMrBajnd7Ro514zHSBh59fNpL/wSDkYeNpdRjG893udXJuailD9kw0iVgmxk17x7w5xtiFil6y6YP11b5zzQ==", "cpu": [ "arm64" ], @@ -1933,9 +1934,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.143.tgz", - "integrity": "sha512-ZWENEbRo9Jbqm/3ezLGotYN7siIEYC5PoJQBi+P/Fg42xm7bUpewIbbGmizOMN0d0+OWVc2V1IFg9bbA0oZbpg==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.144.tgz", + "integrity": "sha512-Fza2BNR0q5cjdpzfXQOvJ8rNreZsCPHnjyeoSpoju8Kmuu8TVo89idkj9VkgiNuNyGFMzA5ovb+mqwA9yYpKhg==", "cpu": [ "ia32" ], @@ -1949,9 +1950,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.143.tgz", - "integrity": "sha512-IBJ4DLOtMOAzW1+fFkdoj0e85l+CLj+Zn3jjUtdlYKroEunA3xNGci5+Ak/NRvt4lnlPlyVyw+2JXsfpnV2FCA==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.144.tgz", + "integrity": "sha512-RO2RxXwYS6GvRBHaBQq+BCKRTFJouqMMutopEtt14V7r8nvEvbg8RKl47oT1h08oRL7M3M8q9j95V9sNciqrXQ==", "cpu": [ "x64" ], @@ -2096,12 +2097,12 @@ } }, "node_modules/@types/jest": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz", - "integrity": "sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==", + "version": "27.4.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", + "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", "dev": true, "dependencies": { - "jest-diff": "^27.0.0", + "jest-matcher-utils": "^27.0.0", "pretty-format": "^27.0.0" } }, @@ -2109,8 +2110,7 @@ "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@types/json5": { "version": "0.0.29", @@ -2134,9 +2134,9 @@ } }, "node_modules/@types/node": { - "version": "17.0.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz", - "integrity": "sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==", + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", + "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", "devOptional": true }, "node_modules/@types/normalize-package-data": { @@ -2184,15 +2184,14 @@ "devOptional": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz", - "integrity": "sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.1.tgz", + "integrity": "sha512-M499lqa8rnNK7mUv74lSFFttuUsubIRdAbHcVaP93oFcKkEmHmLqy2n7jM9C8DVmFMYK61ExrZU6dLYhQZmUpw==", "dev": true, - "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.12.0", - "@typescript-eslint/type-utils": "5.12.0", - "@typescript-eslint/utils": "5.12.0", + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/type-utils": "5.12.1", + "@typescript-eslint/utils": "5.12.1", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -2218,15 +2217,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.0.tgz", - "integrity": "sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.1.tgz", + "integrity": "sha512-6LuVUbe7oSdHxUWoX/m40Ni8gsZMKCi31rlawBHt7VtW15iHzjbpj2WLiToG2758KjtCCiLRKZqfrOdl3cNKuw==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.12.0", - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/typescript-estree": "5.12.0", + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/typescript-estree": "5.12.1", "debug": "^4.3.2" }, "engines": { @@ -2246,14 +2245,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz", - "integrity": "sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz", + "integrity": "sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==", "dev": true, - "peer": true, "dependencies": { - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/visitor-keys": "5.12.0" + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2264,13 +2262,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz", - "integrity": "sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.1.tgz", + "integrity": "sha512-Gh8feEhsNLeCz6aYqynh61Vsdy+tiNNkQtc+bN3IvQvRqHkXGUhYkUi+ePKzP0Mb42se7FDb+y2SypTbpbR/Sg==", "dev": true, - "peer": true, "dependencies": { - "@typescript-eslint/utils": "5.12.0", + "@typescript-eslint/utils": "5.12.1", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -2291,11 +2288,10 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.0.tgz", - "integrity": "sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.1.tgz", + "integrity": "sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==", "dev": true, - "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2305,14 +2301,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz", - "integrity": "sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz", + "integrity": "sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==", "dev": true, - "peer": true, "dependencies": { - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/visitor-keys": "5.12.0", + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -2333,16 +2328,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.0.tgz", - "integrity": "sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.1.tgz", + "integrity": "sha512-Qq9FIuU0EVEsi8fS6pG+uurbhNTtoYr4fq8tKjBupsK5Bgbk2I32UGm0Sh+WOyjOPgo/5URbxxSNV6HYsxV4MQ==", "dev": true, - "peer": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.12.0", - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/typescript-estree": "5.12.0", + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/typescript-estree": "5.12.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -2357,14 +2351,35 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz", - "integrity": "sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg==", + "node_modules/@typescript-eslint/utils/node_modules/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==", "dev": true, - "peer": true, "dependencies": { - "@typescript-eslint/types": "5.12.0", + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz", + "integrity": "sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.12.1", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -4109,9 +4124,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz", - "integrity": "sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw==", + "version": "1.4.72", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.72.tgz", + "integrity": "sha512-9LkRQwjW6/wnSfevR21a3k8sOJ+XWSH7kkzs9/EUenKmuDkndP3W9y1yCZpOxufwGbX3JV8glZZSDb4o95zwXQ==", "devOptional": true }, "node_modules/emittery": { @@ -4266,15 +4281,6 @@ "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "devOptional": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/escodegen/node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -4389,21 +4395,19 @@ } }, "node_modules/eslint-config-conventions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-conventions/-/eslint-config-conventions-1.0.1.tgz", - "integrity": "sha512-A+cTHjTkxUadQkXQtk0+dMHLNaaQOLXjodA8ttfGYD1xtTAvk2WyAm4PHF1aaUXyYl25qujbjLBWin54SHrk4Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-conventions/-/eslint-config-conventions-1.1.0.tgz", + "integrity": "sha512-y++k1iIB1kxbdNyETq2AMRiAs2OVkjLbesIp8Jm9svUrbzsqzPiZfW2Mn+7vAoTtCwRjd7B9UrzPT2alpKPK7Q==", "dev": true, "engines": { "node": ">=16.0.0", "npm": ">=8.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.12.0", "eslint": "^8.9.0", "eslint-plugin-import": "^2.25.4", "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-unicorn": "^41.0.0", - "typescript": "^4.4.0" + "eslint-plugin-unicorn": "^41.0.0" } }, "node_modules/eslint-config-prettier": { @@ -4645,17 +4649,16 @@ } }, "node_modules/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.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, - "peer": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint-utils": { @@ -4693,28 +4696,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/espree": { "version": "9.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", @@ -4753,15 +4734,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -4774,21 +4746,11 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "peer": true, + "devOptional": true, "engines": { "node": ">=4.0" } @@ -5112,9 +5074,9 @@ ] }, "node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -11050,18 +11012,16 @@ } }, "node_modules/pinst": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/pinst/-/pinst-2.1.6.tgz", - "integrity": "sha512-B4dYmf6nEXg1NpDSB+orYWvKa5Kfmz5KzWC29U59dpVM4S/+xp0ak/JMEsw04UQTNNKps7klu0BUalr343Gt9g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pinst/-/pinst-3.0.0.tgz", + "integrity": "sha512-cengSmBxtCyaJqtRSvJorIIZXMXg+lJ3sIljGmtBGUVonMnMsVJbnzl6jGN1HkOWwxNuJynCJ2hXxxqCQrFDdw==", "dev": true, - "dependencies": { - "fromentries": "^1.3.2" - }, + "hasInstallScript": true, "bin": { "pinst": "bin.js" }, "engines": { - "node": ">=10.0.0" + "node": ">=12.0.0" } }, "node_modules/pirates": { @@ -13047,7 +13007,6 @@ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "peer": true, "dependencies": { "tslib": "^1.8.1" }, @@ -13062,8 +13021,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "peer": true + "dev": true }, "node_modules/typanion": { "version": "3.7.1", @@ -13802,9 +13760,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", + "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", "devOptional": true, "requires": { "@babel/helper-environment-visitor": "^7.16.7", @@ -13813,8 +13771,8 @@ "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" } }, "@babel/helper-plugin-utils": { @@ -14333,9 +14291,9 @@ } }, "@humanwhocodes/config-array": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", - "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -14971,114 +14929,114 @@ } }, "@swc/core": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.143.tgz", - "integrity": "sha512-kZ1OVaNS183b3nMZBDQMev/ULpF/iUcF4bwlx+Nz6GH7D9qGTTbhiN7xWkoCWjcCY1TF8Bt7z1+ddX6ibPSc8w==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.144.tgz", + "integrity": "sha512-gQoNc7eu6oeaiQEd4c7fAb32GOpj8WyDBD+XtSrnfMXv6EPj4i71X3gh98SamHD9WqTn0cFCXUZF8JnHbhQFIw==", "dev": true, "requires": { - "@swc/core-android-arm-eabi": "1.2.143", - "@swc/core-android-arm64": "1.2.143", - "@swc/core-darwin-arm64": "1.2.143", - "@swc/core-darwin-x64": "1.2.143", - "@swc/core-freebsd-x64": "1.2.143", - "@swc/core-linux-arm-gnueabihf": "1.2.143", - "@swc/core-linux-arm64-gnu": "1.2.143", - "@swc/core-linux-arm64-musl": "1.2.143", - "@swc/core-linux-x64-gnu": "1.2.143", - "@swc/core-linux-x64-musl": "1.2.143", - "@swc/core-win32-arm64-msvc": "1.2.143", - "@swc/core-win32-ia32-msvc": "1.2.143", - "@swc/core-win32-x64-msvc": "1.2.143" + "@swc/core-android-arm-eabi": "1.2.144", + "@swc/core-android-arm64": "1.2.144", + "@swc/core-darwin-arm64": "1.2.144", + "@swc/core-darwin-x64": "1.2.144", + "@swc/core-freebsd-x64": "1.2.144", + "@swc/core-linux-arm-gnueabihf": "1.2.144", + "@swc/core-linux-arm64-gnu": "1.2.144", + "@swc/core-linux-arm64-musl": "1.2.144", + "@swc/core-linux-x64-gnu": "1.2.144", + "@swc/core-linux-x64-musl": "1.2.144", + "@swc/core-win32-arm64-msvc": "1.2.144", + "@swc/core-win32-ia32-msvc": "1.2.144", + "@swc/core-win32-x64-msvc": "1.2.144" } }, "@swc/core-android-arm-eabi": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.143.tgz", - "integrity": "sha512-OyRhH2NfHRm8jgN6KxpEX5fBg2KaGdocPQgSWzhk9QSnn+juacBXg6lE9lQEb1nekb36XusE51GNiImOnZI9RQ==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.144.tgz", + "integrity": "sha512-zbcLJDj6i1/T4TcTwBdQdP5Y87EBJxlxHfF94iZL4PbIZNJ+D6pBklCoNl2wb61UWiTC7hf/oahuRYY5MshguA==", "dev": true, "optional": true }, "@swc/core-android-arm64": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.143.tgz", - "integrity": "sha512-hMnZcFkoI26n3QakazyNmuMpaIm/pyC1KJXvp49wTaFazbeG0OqxbWvzUIK3vDnXJPuNf1m9c0jXtvQaXbacvQ==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.144.tgz", + "integrity": "sha512-thP9dB7+MLjg7KYqyShfdQ8V48BJ1YVi6FRFxTUJV9Nf55cxA0nNFTyCjF2Lm2OEdUbcnGFQNvjoCaCUajcmcA==", "dev": true, "optional": true }, "@swc/core-darwin-arm64": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.143.tgz", - "integrity": "sha512-Mcd27MvxBCqNJ9HHEu2RH7lY0zcImSP1/3uivJ4eiiAE7WSUdrs9flhryZ7AlOfs0DR7b4fpjJgK0tZyg9K9Yw==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.144.tgz", + "integrity": "sha512-4P7YNa04msjaaHOzOtQRPcS93iUZNydALBsVg3pDDII/w2ypegx0Chqd/Hj3ch6MHhyIw52LUrdtavzULCcgTA==", "dev": true, "optional": true }, "@swc/core-darwin-x64": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.143.tgz", - "integrity": "sha512-KV8147NuOqU6wCliAF+PmpbUecwUn0GynOUjb44kMbwCsYeH/Pm5FewGvyW9Dr7rnpnoT11pOUAJlcRzRfXrDA==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.144.tgz", + "integrity": "sha512-u9TAgeNnMu1g7rEA56TYLaeogsj/zZwPVGP3EYbcMRuMayznc83ay48EY9Mw1YOXg9PSkvysyHtkfgq4JH8LCw==", "dev": true, "optional": true }, "@swc/core-freebsd-x64": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.143.tgz", - "integrity": "sha512-SU3hOtPqwaCxTO8jajEaNMO8aU0/5JduuRBbv843UzCz9S2on+dTYNkm94TsBxhX+JYN+T9yGi/tynoTjKj1QA==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.144.tgz", + "integrity": "sha512-Hh75pdZqSGSqV7jy0qNNWDwiJpvcteX5RlPV1FM7nvG0pzP+MbkD+X48dMN++J5K5w8vURJFQw5xPdUFgBHWXw==", "dev": true, "optional": true }, "@swc/core-linux-arm-gnueabihf": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.143.tgz", - "integrity": "sha512-ZGfb0Fz2jQqrRv3gg0gdzQfkZbqTAC9ac03fXx0KiNFgkAjnWNm0JYRQe0sxa1L5wBml2Sv4aAFIN1BHi6roVA==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.144.tgz", + "integrity": "sha512-8NMu9StMGA6tJEtHISTxG//+f9Jb6SzAErfMN60QeeNBrc2ln1wxFcQiQqnNNF1jFegbRgtOoRMwcVlL6EEKfA==", "dev": true, "optional": true }, "@swc/core-linux-arm64-gnu": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.143.tgz", - "integrity": "sha512-roLB+QYf7omusDTNfqsAuFWMyeRjXi2Wp1abNh++7YZVhkZ57q1tUNJiqw6KJhaSd5KSQGpBygarDRvL70ZZ4Q==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.144.tgz", + "integrity": "sha512-Ug/qN0aFQXeT8iTEpXEZdmXpvt9fZ5fA3HuRf4ULzkh89v+blICeu4L3er7y9YCpfMY1Pg1+SPNqBYXmxzrt3w==", "dev": true, "optional": true }, "@swc/core-linux-arm64-musl": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.143.tgz", - "integrity": "sha512-66qRHVh2F4Z0b6G8n9CEKuKwYVIzfTlNHixwoqCgdCbHT5n1lUiWigDel1psCDbrD/p9nWTU0lfVtbqmKJWnPw==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.144.tgz", + "integrity": "sha512-qLZnHNOtCRjqGGIZ8VbkgOQjtSXcUFrlQCfrfS4IZVH/WawrE+qpJ7r7x8Qn7Mu1n+kAAzsdn7daMZooBTNoeQ==", "dev": true, "optional": true }, "@swc/core-linux-x64-gnu": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.143.tgz", - "integrity": "sha512-FSn9E+uWSyLQtHFpJcj+jNU+NPxrwOMlB+XUObfRcZwRzV6W0KeGLwnwvuhByYmGE7ujvEGCEQpLP95ER88TzQ==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.144.tgz", + "integrity": "sha512-B8dmeZbBGNcVg9PSse9EzNFjd3JJwhWmahHhszWKHgTwatRN5FdDxbcvi41ay0J23sp/3ifMmezqJdpb7b0oSQ==", "dev": true, "optional": true }, "@swc/core-linux-x64-musl": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.143.tgz", - "integrity": "sha512-yCD0LkqUVTLz07MD1m5gajfdOobIqUdQ8E0ZarkcCqvd6eLygXb7U2fn0pZs1eadOqxLSjEjig1i2bCx655Z5w==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.144.tgz", + "integrity": "sha512-x26E7JY9gTOQS8M/QEgflJeU5D0QI/1jYEpT5/3HmXckVkSnmUNEus9g2kmdj0piPwTkrnLoZ7SClU81dUVIig==", "dev": true, "optional": true }, "@swc/core-win32-arm64-msvc": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.143.tgz", - "integrity": "sha512-ehdvirsmL5yJ3J5HUcZD48VBFFiINX61FM5NTfRQgZgqGTyZo88iNTHsBmQXaEtp25y9xr6xXtKXeRGIBpuszg==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.144.tgz", + "integrity": "sha512-7ZCMrBajnd7Ro514zHSBh59fNpL/wSDkYeNpdRjG893udXJuailD9kw0iVgmxk17x7w5xtiFil6y6YP11b5zzQ==", "dev": true, "optional": true }, "@swc/core-win32-ia32-msvc": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.143.tgz", - "integrity": "sha512-ZWENEbRo9Jbqm/3ezLGotYN7siIEYC5PoJQBi+P/Fg42xm7bUpewIbbGmizOMN0d0+OWVc2V1IFg9bbA0oZbpg==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.144.tgz", + "integrity": "sha512-Fza2BNR0q5cjdpzfXQOvJ8rNreZsCPHnjyeoSpoju8Kmuu8TVo89idkj9VkgiNuNyGFMzA5ovb+mqwA9yYpKhg==", "dev": true, "optional": true }, "@swc/core-win32-x64-msvc": { - "version": "1.2.143", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.143.tgz", - "integrity": "sha512-IBJ4DLOtMOAzW1+fFkdoj0e85l+CLj+Zn3jjUtdlYKroEunA3xNGci5+Ak/NRvt4lnlPlyVyw+2JXsfpnV2FCA==", + "version": "1.2.144", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.144.tgz", + "integrity": "sha512-RO2RxXwYS6GvRBHaBQq+BCKRTFJouqMMutopEtt14V7r8nvEvbg8RKl47oT1h08oRL7M3M8q9j95V9sNciqrXQ==", "dev": true, "optional": true }, @@ -15205,12 +15163,12 @@ } }, "@types/jest": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz", - "integrity": "sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==", + "version": "27.4.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", + "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", "dev": true, "requires": { - "jest-diff": "^27.0.0", + "jest-matcher-utils": "^27.0.0", "pretty-format": "^27.0.0" } }, @@ -15218,8 +15176,7 @@ "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true, - "peer": true + "dev": true }, "@types/json5": { "version": "0.0.29", @@ -15243,9 +15200,9 @@ } }, "@types/node": { - "version": "17.0.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz", - "integrity": "sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==", + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", + "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", "devOptional": true }, "@types/normalize-package-data": { @@ -15293,15 +15250,14 @@ "devOptional": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz", - "integrity": "sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.1.tgz", + "integrity": "sha512-M499lqa8rnNK7mUv74lSFFttuUsubIRdAbHcVaP93oFcKkEmHmLqy2n7jM9C8DVmFMYK61ExrZU6dLYhQZmUpw==", "dev": true, - "peer": true, "requires": { - "@typescript-eslint/scope-manager": "5.12.0", - "@typescript-eslint/type-utils": "5.12.0", - "@typescript-eslint/utils": "5.12.0", + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/type-utils": "5.12.1", + "@typescript-eslint/utils": "5.12.1", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -15311,57 +15267,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.0.tgz", - "integrity": "sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.1.tgz", + "integrity": "sha512-6LuVUbe7oSdHxUWoX/m40Ni8gsZMKCi31rlawBHt7VtW15iHzjbpj2WLiToG2758KjtCCiLRKZqfrOdl3cNKuw==", "dev": true, "peer": true, "requires": { - "@typescript-eslint/scope-manager": "5.12.0", - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/typescript-estree": "5.12.0", + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/typescript-estree": "5.12.1", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz", - "integrity": "sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz", + "integrity": "sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==", "dev": true, - "peer": true, "requires": { - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/visitor-keys": "5.12.0" + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1" } }, "@typescript-eslint/type-utils": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz", - "integrity": "sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.1.tgz", + "integrity": "sha512-Gh8feEhsNLeCz6aYqynh61Vsdy+tiNNkQtc+bN3IvQvRqHkXGUhYkUi+ePKzP0Mb42se7FDb+y2SypTbpbR/Sg==", "dev": true, - "peer": true, "requires": { - "@typescript-eslint/utils": "5.12.0", + "@typescript-eslint/utils": "5.12.1", "debug": "^4.3.2", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.0.tgz", - "integrity": "sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ==", - "dev": true, - "peer": true + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.1.tgz", + "integrity": "sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==", + "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz", - "integrity": "sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz", + "integrity": "sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==", "dev": true, - "peer": true, "requires": { - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/visitor-keys": "5.12.0", + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -15370,28 +15322,44 @@ } }, "@typescript-eslint/utils": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.0.tgz", - "integrity": "sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.1.tgz", + "integrity": "sha512-Qq9FIuU0EVEsi8fS6pG+uurbhNTtoYr4fq8tKjBupsK5Bgbk2I32UGm0Sh+WOyjOPgo/5URbxxSNV6HYsxV4MQ==", "dev": true, - "peer": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.12.0", - "@typescript-eslint/types": "5.12.0", - "@typescript-eslint/typescript-estree": "5.12.0", + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/typescript-estree": "5.12.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } } }, "@typescript-eslint/visitor-keys": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz", - "integrity": "sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz", + "integrity": "sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==", "dev": true, - "peer": true, "requires": { - "@typescript-eslint/types": "5.12.0", + "@typescript-eslint/types": "5.12.1", "eslint-visitor-keys": "^3.0.0" } }, @@ -16708,9 +16676,9 @@ } }, "electron-to-chromium": { - "version": "1.4.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz", - "integrity": "sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw==", + "version": "1.4.72", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.72.tgz", + "integrity": "sha512-9LkRQwjW6/wnSfevR21a3k8sOJ+XWSH7kkzs9/EUenKmuDkndP3W9y1yCZpOxufwGbX3JV8glZZSDb4o95zwXQ==", "devOptional": true }, "emittery": { @@ -16823,12 +16791,6 @@ "source-map": "~0.6.1" }, "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "devOptional": true - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -16918,30 +16880,12 @@ "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "eslint-config-conventions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-conventions/-/eslint-config-conventions-1.0.1.tgz", - "integrity": "sha512-A+cTHjTkxUadQkXQtk0+dMHLNaaQOLXjodA8ttfGYD1xtTAvk2WyAm4PHF1aaUXyYl25qujbjLBWin54SHrk4Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-conventions/-/eslint-config-conventions-1.1.0.tgz", + "integrity": "sha512-y++k1iIB1kxbdNyETq2AMRiAs2OVkjLbesIp8Jm9svUrbzsqzPiZfW2Mn+7vAoTtCwRjd7B9UrzPT2alpKPK7Q==", "dev": true, "requires": {} }, @@ -17129,14 +17073,13 @@ } }, "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.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, - "peer": true, "requires": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" } }, "eslint-utils": { @@ -17184,14 +17127,6 @@ "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": { @@ -17201,22 +17136,13 @@ "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==", - "dev": true, - "peer": true + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "devOptional": true }, "esutils": { "version": "2.0.3", @@ -17461,9 +17387,9 @@ "dev": true }, "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -21749,13 +21675,10 @@ "dev": true }, "pinst": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/pinst/-/pinst-2.1.6.tgz", - "integrity": "sha512-B4dYmf6nEXg1NpDSB+orYWvKa5Kfmz5KzWC29U59dpVM4S/+xp0ak/JMEsw04UQTNNKps7klu0BUalr343Gt9g==", - "dev": true, - "requires": { - "fromentries": "^1.3.2" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pinst/-/pinst-3.0.0.tgz", + "integrity": "sha512-cengSmBxtCyaJqtRSvJorIIZXMXg+lJ3sIljGmtBGUVonMnMsVJbnzl6jGN1HkOWwxNuJynCJ2hXxxqCQrFDdw==", + "dev": true }, "pirates": { "version": "4.0.5", @@ -23272,7 +23195,6 @@ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "peer": true, "requires": { "tslib": "^1.8.1" }, @@ -23281,8 +23203,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "peer": true + "dev": true } } }, diff --git a/package.json b/package.json index aa10998..9e29d6c 100644 --- a/package.json +++ b/package.json @@ -54,15 +54,16 @@ "@commitlint/cli": "16.2.1", "@commitlint/config-conventional": "16.2.1", "@swc/cli": "0.1.55", - "@swc/core": "1.2.143", + "@swc/core": "1.2.144", "@swc/jest": "0.2.17", "@types/html-validator": "5.0.2", - "@types/jest": "27.4.0", + "@types/jest": "27.4.1", "@types/mock-fs": "4.13.1", - "@types/node": "17.0.18", + "@types/node": "17.0.21", + "@typescript-eslint/eslint-plugin": "5.12.1", "editorconfig-checker": "4.0.2", "eslint": "8.9.0", - "eslint-config-conventions": "1.0.1", + "eslint-config-conventions": "1.1.0", "eslint-config-prettier": "8.4.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-prettier": "4.0.0", @@ -76,7 +77,7 @@ "lint-staged": "12.3.4", "markdownlint-cli": "0.31.1", "mock-fs": "5.1.2", - "pinst": "2.1.6", + "pinst": "3.0.0", "prettier": "2.5.1", "rimraf": "3.0.2", "semantic-release": "19.0.2", diff --git a/src/HTMLValidatorCommand.ts b/src/HTMLValidatorCommand.ts index e88f680..15c5fa2 100644 --- a/src/HTMLValidatorCommand.ts +++ b/src/HTMLValidatorCommand.ts @@ -4,7 +4,10 @@ import fs from 'node:fs' import { Command } from 'clipanion' import chalk from 'chalk' import ora from 'ora' -import validateHTML, { ValidationMessageLocationObject } from 'html-validator' +import validateHTML, { + ValidationMessageLocationObject, + ParsedJsonAsValidationResults +} from 'html-validator' import { table } from 'table' import { isExistingPath } from './utils/isExistingPath.js' @@ -13,11 +16,12 @@ const CURRENT_DIRECTORY = process.cwd() const CONFIG_FILE_NAME = '.html-w3c-validatorrc.json' interface Config { - urls: string[] + urls?: string[] + files?: string[] } interface Error { - url: string + data: string messagesTable: string[][] } @@ -39,59 +43,104 @@ export class HTMLValidatorCommand extends Command { const configData = await fs.promises.readFile(configPath, { encoding: 'utf-8' }) - let config: Config = { urls: [] } + let config: Config = { urls: [], files: [] } let isValidConfig = true try { config = JSON.parse(configData) } catch { isValidConfig = false } - isValidConfig = isValidConfig && Array.isArray(config.urls) + isValidConfig = + isValidConfig && + (Array.isArray(config.urls) || Array.isArray(config.urls)) if (!isValidConfig) { throw new Error( `Invalid config file at ${configPath}. Please check the syntax.` ) } - + const urls = + config.urls == null + ? [] + : config.urls.map((url) => { + return { type: 'url', data: url } + }) + const files = + config.files == null + ? [] + : config.files.map((file) => { + return { type: 'file', data: file } + }) + const dataToValidate = [...urls, ...files] const errors: Error[] = [] let isValid = true - for (const url of config.urls) { - const loader = ora(`Validating ${url}`).start() - const result = await validateHTML({ - url, - format: 'json', - isLocal: true - }) - const isValidHTML = result.messages.length === 0 - if (isValidHTML) { - loader.succeed() - } else { - loader.fail() - const messagesTable: string[][] = [] - for (const message of result.messages) { - const row: string[] = [] - if (message.type === 'error') { - row.push(chalk.red(message.type)) - } else { - row.push(chalk.yellow(message.type)) - } - row.push(message.message) - const violation = message as ValidationMessageLocationObject - if (violation.extract != null) { - row.push( - `line: ${violation.lastLine}, column: ${violation.firstColumn}-${violation.lastColumn}` + for (const { data, type } of dataToValidate) { + const loader = ora(`Validating ${data}`).start() + try { + const options = { + format: 'json' as 'json' | undefined + } + let result: ParsedJsonAsValidationResults | undefined + if (type === 'url') { + result = await validateHTML({ + url: data, + isLocal: true, + ...options + }) + } else if (type === 'file') { + const htmlPath = path.resolve(CURRENT_DIRECTORY, data) + if (!(await isExistingPath(htmlPath))) { + throw new Error( + `No file found at ${htmlPath}. Please check the path.` ) } - messagesTable.push(row) + const html = await fs.promises.readFile(htmlPath, { + encoding: 'utf-8' + }) + result = await validateHTML({ + data: html, + ...options + }) + } else { + throw new Error('Invalid type') } - errors.push({ url, messagesTable }) + const isValidHTML = result.messages.length === 0 + if (isValidHTML) { + loader.succeed() + } else { + loader.fail() + const messagesTable: string[][] = [] + for (const message of result.messages) { + const row: string[] = [] + if (message.type === 'error') { + row.push(chalk.red(message.type)) + } else { + row.push(chalk.yellow(message.type)) + } + row.push(message.message) + const violation = message as ValidationMessageLocationObject + if (violation.extract != null) { + row.push( + `line: ${violation.lastLine}, column: ${violation.firstColumn}-${violation.lastColumn}` + ) + } + messagesTable.push(row) + } + errors.push({ data, messagesTable }) + isValid = false + } + } catch (error) { + loader.fail() isValid = false + if (error instanceof Error) { + const messagesTable: string[][] = [[error.message]] + errors.push({ data, messagesTable }) + } } } if (!isValid) { for (const error of errors) { - console.error(`\n${error.url}`) + console.error(`\n${error.data}`) console.error(table(error.messagesTable)) console.error('------------------------------') }