+
diff --git a/includes/footer.php b/includes/footer.php
index baec313..e9c70c2 100644
--- a/includes/footer.php
+++ b/includes/footer.php
@@ -3,32 +3,32 @@
-
FLIP AND STRIP
+
FLIP AND STRIP
Quality motorcycle, ATV/UTV, and boat parts
Low miles, tested, and inspected parts from top brands including Harley Davidson, Yamaha, Honda, Kawasaki, Suzuki, BMW, and more.
-
Quick Links
+
Quick Links
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..7305855
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,3894 @@
+{
+ "name": "fas-linting",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "fas-linting",
+ "devDependencies": {
+ "@axe-core/cli": "4.11.1",
+ "eslint": "8.57.1",
+ "globals": "17.4.0",
+ "htmlhint": "1.9.2",
+ "stylelint": "17.4.0",
+ "stylelint-config-standard": "40.0.0"
+ }
+ },
+ "node_modules/@axe-core/cli": {
+ "version": "4.11.1",
+ "resolved": "https://registry.npmjs.org/@axe-core/cli/-/cli-4.11.1.tgz",
+ "integrity": "sha512-xC7doMReoy7QnQ18azdpIZHoYL1HcG5c5wvEcCpm5kWny520RGTRrBcnAZENaQ9nTQAkE7fXZFK4Z1cfBDTBFg==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "dependencies": {
+ "@axe-core/webdriverjs": "^4.11.1",
+ "axe-core": "~4.11.1",
+ "chromedriver": "latest",
+ "colors": "^1.4.0",
+ "commander": "^9.4.1",
+ "dotenv": "^17.2.2",
+ "selenium-webdriver": "~4.39.0"
+ },
+ "bin": {
+ "axe": "dist/src/bin/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@axe-core/webdriverjs": {
+ "version": "4.11.1",
+ "resolved": "https://registry.npmjs.org/@axe-core/webdriverjs/-/webdriverjs-4.11.1.tgz",
+ "integrity": "sha512-UVq7uBsqaQlHj7PQPg+WhE0nV6ccYtE0cnGglStS5RE3RAB+gQcb30R1k3usI+Q/xyROSJHhusOus4BzqrlZ1w==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "dependencies": {
+ "axe-core": "~4.11.1"
+ },
+ "peerDependencies": {
+ "selenium-webdriver": ">3.0.0-beta || >=2.53.1 || >4.0.0-alpha"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@bazel/runfiles": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/@bazel/runfiles/-/runfiles-6.5.0.tgz",
+ "integrity": "sha512-RzahvqTkfpY2jsDxo8YItPX+/iZ6hbiikw1YhE0bA9EKBR5Og8Pa6FHn9PO9M0zaXRVsr0GFQLKbB/0rzy9SzA==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/@cacheable/memory": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.8.tgz",
+ "integrity": "sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@cacheable/utils": "^2.4.0",
+ "@keyv/bigmap": "^1.3.1",
+ "hookified": "^1.15.1",
+ "keyv": "^5.6.0"
+ }
+ },
+ "node_modules/@cacheable/memory/node_modules/@keyv/bigmap": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz",
+ "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hashery": "^1.4.0",
+ "hookified": "^1.15.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "keyv": "^5.6.0"
+ }
+ },
+ "node_modules/@cacheable/memory/node_modules/keyv": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz",
+ "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@keyv/serialize": "^1.1.1"
+ }
+ },
+ "node_modules/@cacheable/utils": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.4.0.tgz",
+ "integrity": "sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hashery": "^1.5.0",
+ "keyv": "^5.6.0"
+ }
+ },
+ "node_modules/@cacheable/utils/node_modules/keyv": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz",
+ "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@keyv/serialize": "^1.1.1"
+ }
+ },
+ "node_modules/@csstools/css-calc": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.1.1.tgz",
+ "integrity": "sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^4.0.0",
+ "@csstools/css-tokenizer": "^4.0.0"
+ }
+ },
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz",
+ "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^4.0.0"
+ }
+ },
+ "node_modules/@csstools/css-syntax-patches-for-csstree": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.1.tgz",
+ "integrity": "sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "peerDependencies": {
+ "css-tree": "^3.2.1"
+ },
+ "peerDependenciesMeta": {
+ "css-tree": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz",
+ "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.19.0"
+ }
+ },
+ "node_modules/@csstools/media-query-list-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-5.0.0.tgz",
+ "integrity": "sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^4.0.0",
+ "@csstools/css-tokenizer": "^4.0.0"
+ }
+ },
+ "node_modules/@csstools/selector-resolve-nested": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-4.0.0.tgz",
+ "integrity": "sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.1.1"
+ }
+ },
+ "node_modules/@csstools/selector-specificity": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-6.0.0.tgz",
+ "integrity": "sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.1.1"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+ "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
+ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+ "deprecated": "Use @eslint/config-array instead",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.3",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@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,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "deprecated": "Use @eslint/object-schema instead",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@keyv/serialize": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz",
+ "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@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,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@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,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@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,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@testim/chrome-version": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz",
+ "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tootallnate/quickjs-emscripten": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
+ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "25.5.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz",
+ "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "undici-types": "~7.18.0"
+ }
+ },
+ "node_modules/@types/sarif": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz",
+ "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/acorn": {
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+ "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/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,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/argparse": {
+ "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,
+ "license": "Python-2.0"
+ },
+ "node_modules/ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/axe-core": {
+ "version": "4.11.1",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.1.tgz",
+ "integrity": "sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz",
+ "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.15.11",
+ "form-data": "^4.0.5",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/axios/node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/basic-ftp": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz",
+ "integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/cacheable": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.3.tgz",
+ "integrity": "sha512-iffYMX4zxKp54evOH27fm92hs+DeC1DhXmNVN8Tr94M/iZIV42dqTHSR2Ik4TOSPyOAwKr7Yu3rN9ALoLkbWyQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@cacheable/memory": "^2.0.8",
+ "@cacheable/utils": "^2.4.0",
+ "hookified": "^1.15.0",
+ "keyv": "^5.6.0",
+ "qified": "^0.6.0"
+ }
+ },
+ "node_modules/cacheable/node_modules/keyv": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz",
+ "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@keyv/serialize": "^1.1.1"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chromedriver": {
+ "version": "146.0.4",
+ "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-146.0.4.tgz",
+ "integrity": "sha512-/yNqo99Xm0qgAjSh7DYy2KX6pfgyGnIM/k+2jUSc0T6CUCP5k26DWrAYU7Sy0t/dKCntMl45FDWfqP+yRWaCZQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@testim/chrome-version": "^1.1.4",
+ "axios": "^1.13.5",
+ "compare-versions": "^6.1.0",
+ "extract-zip": "^2.0.1",
+ "proxy-agent": "^6.5.0",
+ "proxy-from-env": "^2.0.0",
+ "tcp-port-used": "^1.0.2"
+ },
+ "bin": {
+ "chromedriver": "bin/chromedriver"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/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,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/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,
+ "license": "MIT"
+ },
+ "node_modules/colord": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/colors": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || >=14"
+ }
+ },
+ "node_modules/compare-versions": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz",
+ "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cosmiconfig": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz",
+ "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-functions-list": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.3.3.tgz",
+ "integrity": "sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz",
+ "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.27.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/data-uri-to-buffer": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
+ "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/degenerator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
+ "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ast-types": "^0.13.4",
+ "escodegen": "^2.1.0",
+ "esprima": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "17.3.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz",
+ "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
+ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.1",
+ "@humanwhocodes/config-array": "^0.13.0",
+ "@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.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.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",
+ "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",
+ "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.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "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,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "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,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/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,
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+ "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "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,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "node_modules/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,
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
+ "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/fastest-levenshtein": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.9.1"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz",
+ "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.11",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.3.4",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz",
+ "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-east-asian-width": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz",
+ "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-uri": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz",
+ "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "basic-ftp": "^5.0.2",
+ "data-uri-to-buffer": "^6.0.2",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/glob": {
+ "version": "13.0.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
+ "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "minimatch": "^10.2.2",
+ "minipass": "^7.1.3",
+ "path-scurry": "^2.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/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,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
+ "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "10.2.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
+ "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/global-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "global-prefix": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/globals": {
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz",
+ "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby": {
+ "version": "16.1.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-16.1.1.tgz",
+ "integrity": "sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "fast-glob": "^3.3.3",
+ "ignore": "^7.0.5",
+ "is-path-inside": "^4.0.0",
+ "slash": "^5.1.0",
+ "unicorn-magic": "^0.4.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby/node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/globby/node_modules/is-path-inside": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz",
+ "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globjoin": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
+ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hashery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.5.0.tgz",
+ "integrity": "sha512-nhQ6ExaOIqti2FDWoEMWARUqIKyjr2VcZzXShrI+A3zpeiuPWzx6iPftt44LhP74E5sW36B75N6VHbvRtpvO6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hookified": "^1.14.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hookified": {
+ "version": "1.15.1",
+ "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz",
+ "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/html-tags": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-5.1.0.tgz",
+ "integrity": "sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/htmlhint": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/htmlhint/-/htmlhint-1.9.2.tgz",
+ "integrity": "sha512-PweWSPA1Pb+AVFIOSpIGu5KhLdmtk/uf/0CpjvrDf6XUWmdTyqUljlylwSxQ0AWLvPGcBxK2n8uISsI4lCOkBQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "async": "3.2.6",
+ "chalk": "4.1.2",
+ "commander": "11.1.0",
+ "glob": "^13.0.6",
+ "is-glob": "^4.0.3",
+ "node-sarif-builder": "3.2.0",
+ "strip-json-comments": "3.1.1",
+ "xml": "1.0.1"
+ },
+ "bin": {
+ "htmlhint": "bin/htmlhint"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "Open Collective",
+ "url": "https://opencollective.com/htmlhint"
+ }
+ },
+ "node_modules/htmlhint/node_modules/commander": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-meta-resolve": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz",
+ "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/ip-address": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
+ "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/ip-regex": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz",
+ "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-url": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
+ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is2": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz",
+ "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "ip-regex": "^4.1.0",
+ "is-url": "^1.2.4"
+ },
+ "engines": {
+ "node": ">=v0.10.0"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/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,
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/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,
+ "license": "MIT"
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "dev": true,
+ "license": "(MIT OR GPL-3.0-or-later)",
+ "dependencies": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ }
+ },
+ "node_modules/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,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "immediate": "~3.0.5"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lru-cache": {
+ "version": "11.2.7",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz",
+ "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/mathml-tag-names": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-4.0.0.tgz",
+ "integrity": "sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.27.1",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
+ "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/meow": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-14.1.0.tgz",
+ "integrity": "sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/netmask": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
+ "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/node-sarif-builder": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/node-sarif-builder/-/node-sarif-builder-3.2.0.tgz",
+ "integrity": "sha512-kVIOdynrF2CRodHZeP/97Rh1syTUHBNiw17hUCIVhlhEsWlfJm19MuO56s4MdKbr22xWx6mzMnNAgXzVlIYM9Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/sarif": "^2.1.7",
+ "fs-extra": "^11.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "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.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pac-proxy-agent": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
+ "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tootallnate/quickjs-emscripten": "^0.23.0",
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "get-uri": "^6.0.1",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.6",
+ "pac-resolver": "^7.0.1",
+ "socks-proxy-agent": "^8.0.5"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pac-resolver": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
+ "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "degenerator": "^5.0.0",
+ "netmask": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true,
+ "license": "(MIT AND Zlib)"
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-scurry": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
+ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz",
+ "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-safe-parser": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz",
+ "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/proxy-agent": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz",
+ "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "^7.0.1",
+ "https-proxy-agent": "^7.0.6",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "^7.1.0",
+ "proxy-from-env": "^1.1.0",
+ "socks-proxy-agent": "^8.0.5"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/proxy-from-env": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
+ "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/pump": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz",
+ "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qified": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/qified/-/qified-0.6.0.tgz",
+ "integrity": "sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hookified": "^1.14.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/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,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/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,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/selenium-webdriver": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.39.0.tgz",
+ "integrity": "sha512-NAs9jCU+UeZ/ZmRb8R6zOp7N8eMklefdBYASnaRmCNXdgFE8w3OCxxZmLixkwqnGDHY5VF7hCulfw1Mls43N/A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/SeleniumHQ"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/selenium"
+ }
+ ],
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@bazel/runfiles": "^6.5.0",
+ "jszip": "^3.10.1",
+ "tmp": "^0.2.5",
+ "ws": "^8.18.3"
+ },
+ "engines": {
+ "node": ">= 20.0.0"
+ }
+ },
+ "node_modules/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/slash": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/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,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
+ "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^10.0.1",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
+ "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz",
+ "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint": {
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.4.0.tgz",
+ "integrity": "sha512-3kQ2/cHv3Zt8OBg+h2B8XCx9evEABQIrv4hh3uXahGz/ZEHrTR80zxBiK2NfXNaSoyBzxO1pjsz1Vhdzwn5XSw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/stylelint"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-calc": "^3.1.1",
+ "@csstools/css-parser-algorithms": "^4.0.0",
+ "@csstools/css-syntax-patches-for-csstree": "^1.0.27",
+ "@csstools/css-tokenizer": "^4.0.0",
+ "@csstools/media-query-list-parser": "^5.0.0",
+ "@csstools/selector-resolve-nested": "^4.0.0",
+ "@csstools/selector-specificity": "^6.0.0",
+ "colord": "^2.9.3",
+ "cosmiconfig": "^9.0.0",
+ "css-functions-list": "^3.3.3",
+ "css-tree": "^3.1.0",
+ "debug": "^4.4.3",
+ "fast-glob": "^3.3.3",
+ "fastest-levenshtein": "^1.0.16",
+ "file-entry-cache": "^11.1.2",
+ "global-modules": "^2.0.0",
+ "globby": "^16.1.0",
+ "globjoin": "^0.1.4",
+ "html-tags": "^5.1.0",
+ "ignore": "^7.0.5",
+ "import-meta-resolve": "^4.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-plain-object": "^5.0.0",
+ "mathml-tag-names": "^4.0.0",
+ "meow": "^14.0.0",
+ "micromatch": "^4.0.8",
+ "normalize-path": "^3.0.0",
+ "picocolors": "^1.1.1",
+ "postcss": "^8.5.6",
+ "postcss-safe-parser": "^7.0.1",
+ "postcss-selector-parser": "^7.1.1",
+ "postcss-value-parser": "^4.2.0",
+ "string-width": "^8.1.1",
+ "supports-hyperlinks": "^4.4.0",
+ "svg-tags": "^1.0.0",
+ "table": "^6.9.0",
+ "write-file-atomic": "^7.0.0"
+ },
+ "bin": {
+ "stylelint": "bin/stylelint.mjs"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ }
+ },
+ "node_modules/stylelint-config-recommended": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-18.0.0.tgz",
+ "integrity": "sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/stylelint"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^17.0.0"
+ }
+ },
+ "node_modules/stylelint-config-standard": {
+ "version": "40.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-40.0.0.tgz",
+ "integrity": "sha512-EznGJxOUhtWck2r6dJpbgAdPATIzvpLdK9+i5qPd4Lx70es66TkBPljSg4wN3Qnc6c4h2n+WbUrUynQ3fanjHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/stylelint"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "stylelint-config-recommended": "^18.0.0"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^17.0.0"
+ }
+ },
+ "node_modules/stylelint/node_modules/file-entry-cache": {
+ "version": "11.1.2",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.2.tgz",
+ "integrity": "sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^6.1.20"
+ }
+ },
+ "node_modules/stylelint/node_modules/flat-cache": {
+ "version": "6.1.20",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.20.tgz",
+ "integrity": "sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cacheable": "^2.3.2",
+ "flatted": "^3.3.3",
+ "hookified": "^1.15.0"
+ }
+ },
+ "node_modules/stylelint/node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.4.0.tgz",
+ "integrity": "sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^5.0.1",
+ "supports-color": "^10.2.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/has-flag": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz",
+ "integrity": "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/supports-color": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz",
+ "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "node_modules/table": {
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz",
+ "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "ajv": "^8.0.1",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/table/node_modules/ajv": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/table/node_modules/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,
+ "license": "MIT"
+ },
+ "node_modules/table/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tcp-port-used": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz",
+ "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4.3.1",
+ "is2": "^2.0.6"
+ }
+ },
+ "node_modules/tcp-port-used/node_modules/debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tcp-port-used/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/tmp": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz",
+ "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD"
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
+ "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/unicorn-magic": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz",
+ "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/write-file-atomic": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.1.tgz",
+ "integrity": "sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.19.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz",
+ "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xml": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
+ "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..41230a9
--- /dev/null
+++ b/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "fas-linting",
+ "private": true,
+ "description": "Frontend linting and accessibility tooling for Flip and Strip",
+ "scripts": {
+ "lint": "npm run lint:js && npm run lint:css && npm run lint:html && npm run lint:a11y",
+ "lint:js": "eslint \"public/js/**/*.js\" \"admin/js/**/*.js\"",
+ "lint:css": "stylelint \"public/css/**/*.css\" \"admin/css/**/*.css\"",
+ "lint:html": "bash ./scripts/render-pages.sh html",
+ "lint:a11y": "bash ./scripts/render-pages.sh axe"
+ },
+ "devDependencies": {
+ "@axe-core/cli": "4.11.1",
+ "eslint": "8.57.1",
+ "globals": "17.4.0",
+ "htmlhint": "1.9.2",
+ "stylelint": "17.4.0",
+ "stylelint-config-standard": "40.0.0"
+ }
+}
diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon
new file mode 100644
index 0000000..212503b
--- /dev/null
+++ b/phpstan-baseline.neon
@@ -0,0 +1,2121 @@
+parameters:
+ ignoreErrors:
+ -
+ message: "#^Method AdminAuth\\:\\:__construct\\(\\) has parameter \\$db with no type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:changePassword\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:changePassword\\(\\) has parameter \\$adminId with no type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:changePassword\\(\\) has parameter \\$currentPassword with no type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:changePassword\\(\\) has parameter \\$newPassword with no type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:createInitialAdmin\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:createInitialAdmin\\(\\) has parameter \\$email with no type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:createInitialAdmin\\(\\) has parameter \\$password with no type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:createInitialAdmin\\(\\) has parameter \\$username with no type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:isLoggedIn\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:login\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:login\\(\\) has parameter \\$password with no type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:login\\(\\) has parameter \\$username with no type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:logout\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Method AdminAuth\\:\\:requireLogin\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Property AdminAuth\\:\\:\\$db has no type specified\\.$#"
+ count: 1
+ path: admin/auth.php
+
+ -
+ message: "#^Function renderBannerFormFields\\(\\) has parameter \\$colorOptions with no value type specified in iterable type array\\.$#"
+ count: 1
+ path: admin/banners.php
+
+ -
+ message: "#^Function renderBannerFormFields\\(\\) has parameter \\$textColorOptions with no value type specified in iterable type array\\.$#"
+ count: 1
+ path: admin/banners.php
+
+ -
+ message: "#^Function renderBannerFormFields\\(\\) should return string but returns string\\|false\\.$#"
+ count: 1
+ path: admin/banners.php
+
+ -
+ message: "#^Comparison operation \"\\>\" between int\\<1, max\\> and 0 is always true\\.$#"
+ count: 1
+ path: admin/products.php
+
+ -
+ message: "#^Function handlePaymentCompleted\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: api/paypal-webhook.php
+
+ -
+ message: "#^Function handlePaymentCompleted\\(\\) has parameter \\$webhookData with no type specified\\.$#"
+ count: 1
+ path: api/paypal-webhook.php
+
+ -
+ message: "#^Function handlePaymentFailed\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: api/paypal-webhook.php
+
+ -
+ message: "#^Function handlePaymentFailed\\(\\) has parameter \\$webhookData with no type specified\\.$#"
+ count: 1
+ path: api/paypal-webhook.php
+
+ -
+ message: "#^Function completeOrder\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: api/process-order.php
+
+ -
+ message: "#^Function completeOrder\\(\\) has parameter \\$input with no type specified\\.$#"
+ count: 1
+ path: api/process-order.php
+
+ -
+ message: "#^Function completeOrder\\(\\) has parameter \\$orderModel with no type specified\\.$#"
+ count: 1
+ path: api/process-order.php
+
+ -
+ message: "#^Function completeOrder\\(\\) has parameter \\$productModel with no type specified\\.$#"
+ count: 1
+ path: api/process-order.php
+
+ -
+ message: "#^Function createOrder\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: api/process-order.php
+
+ -
+ message: "#^Function createOrder\\(\\) has parameter \\$input with no type specified\\.$#"
+ count: 1
+ path: api/process-order.php
+
+ -
+ message: "#^Function createOrder\\(\\) has parameter \\$orderModel with no type specified\\.$#"
+ count: 1
+ path: api/process-order.php
+
+ -
+ message: "#^Function createOrder\\(\\) has parameter \\$productModel with no type specified\\.$#"
+ count: 1
+ path: api/process-order.php
+
+ -
+ message: "#^Dead catch \\- Exception is never thrown in the try block\\.$#"
+ count: 1
+ path: api/products.php
+
+ -
+ message: "#^Function normalizeImagePath\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: api/products.php
+
+ -
+ message: "#^Function normalizeImagePath\\(\\) has parameter \\$path with no type specified\\.$#"
+ count: 1
+ path: api/products.php
+
+ -
+ message: "#^Function resolveLocalImagePath\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: api/products.php
+
+ -
+ message: "#^Function resolveLocalImagePath\\(\\) has parameter \\$path with no type specified\\.$#"
+ count: 1
+ path: api/products.php
+
+ -
+ message: "#^Variable \\$imageUrl in empty\\(\\) always exists and is not falsy\\.$#"
+ count: 1
+ path: api/products.php
+
+ -
+ message: "#^Parameter \\#1 \\$modTimeFrom of method FAS\\\\Integrations\\\\EbayAPI\\:\\:getSellerEvents\\(\\) expects FAS\\\\Integrations\\\\DateTime\\|string\\|null, DateTime given\\.$#"
+ count: 1
+ path: cron/ebay-sync-cron.php
+
+ -
+ message: "#^Parameter \\#2 \\$modTimeTo of method FAS\\\\Integrations\\\\EbayAPI\\:\\:getSellerEvents\\(\\) expects FAS\\\\Integrations\\\\DateTime\\|string\\|null, DateTime given\\.$#"
+ count: 1
+ path: cron/ebay-sync-cron.php
+
+ -
+ message: "#^Parameter \\#1 \\$statement of method PDO\\:\\:exec\\(\\) expects string, string\\|false given\\.$#"
+ count: 1
+ path: database/init-sqlite.php
+
+ -
+ message: "#^Parameter \\#1 \\$stream of function fclose expects resource, resource\\|false given\\.$#"
+ count: 1
+ path: database/init-sqlite.php
+
+ -
+ message: "#^Parameter \\#1 \\$stream of function fgets expects resource, resource\\|false given\\.$#"
+ count: 1
+ path: database/init-sqlite.php
+
+ -
+ message: "#^Parameter \\#1 \\$string of function strtolower expects string, string\\|false given\\.$#"
+ count: 1
+ path: database/init-sqlite.php
+
+ -
+ message: "#^Parameter \\#1 \\$stream of function fclose expects resource, resource\\|false given\\.$#"
+ count: 1
+ path: database/remove-example-products.php
+
+ -
+ message: "#^Parameter \\#1 \\$stream of function fgets expects resource, resource\\|false given\\.$#"
+ count: 1
+ path: database/remove-example-products.php
+
+ -
+ message: "#^Parameter \\#1 \\$string of function trim expects string, string\\|false given\\.$#"
+ count: 1
+ path: database/remove-example-products.php
+
+ -
+ message: "#^Function getEffectivePrice\\(\\) return type has no value type specified in iterable type array\\.$#"
+ count: 1
+ path: includes/sale-helper.php
+
+ -
+ message: "#^Function getSaleConfig\\(\\) return type has no value type specified in iterable type array\\.$#"
+ count: 1
+ path: includes/sale-helper.php
+
+ -
+ message: "#^Binary operation \"\\+\" between int\\|string and 1 results in an error\\.$#"
+ count: 1
+ path: product.php
+
+ -
+ message: "#^Function normalizeImagePath\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: product.php
+
+ -
+ message: "#^Function normalizeImagePath\\(\\) has parameter \\$path with no type specified\\.$#"
+ count: 1
+ path: product.php
+
+ -
+ message: "#^Function resolveLocalImagePath\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: product.php
+
+ -
+ message: "#^Function resolveLocalImagePath\\(\\) has parameter \\$path with no type specified\\.$#"
+ count: 1
+ path: product.php
+
+ -
+ message: "#^Variable \\$mainImage in empty\\(\\) always exists and is not falsy\\.$#"
+ count: 1
+ path: product.php
+
+ -
+ message: "#^Function normalizeImagePath\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: products.php
+
+ -
+ message: "#^Function normalizeImagePath\\(\\) has parameter \\$path with no type specified\\.$#"
+ count: 1
+ path: products.php
+
+ -
+ message: "#^Function resolveLocalImagePath\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: products.php
+
+ -
+ message: "#^Function resolveLocalImagePath\\(\\) has parameter \\$path with no type specified\\.$#"
+ count: 1
+ path: products.php
+
+ -
+ message: "#^Variable \\$imageUrl in empty\\(\\) always exists and is not falsy\\.$#"
+ count: 1
+ path: products.php
+
+ -
+ message: "#^Argument of an invalid type array\\
\\|false supplied for foreach, only iterables are supported\\.$#"
+ count: 2
+ path: scripts/cleanup-gallery.php
+
+ -
+ message: "#^Binary operation \"\\.\" between non\\-empty\\-array\\\\|non\\-falsy\\-string and '/' results in an error\\.$#"
+ count: 1
+ path: scripts/cleanup-gallery.php
+
+ -
+ message: "#^Parameter \\#1 \\$directory of function mkdir expects string, array\\\\|string given\\.$#"
+ count: 1
+ path: scripts/cleanup-gallery.php
+
+ -
+ message: "#^Parameter \\#1 \\$filename of function is_dir expects string, array\\\\|string given\\.$#"
+ count: 1
+ path: scripts/cleanup-gallery.php
+
+ -
+ message: "#^Parameter \\#1 \\.\\.\\.\\$arrays of function array_merge expects array, array\\\\|false given\\.$#"
+ count: 1
+ path: scripts/cleanup-gallery.php
+
+ -
+ message: "#^Parameter \\#2 \\$subject of function preg_match_all expects string, string\\|false given\\.$#"
+ count: 3
+ path: scripts/cleanup-gallery.php
+
+ -
+ message: "#^Parameter \\#2 \\.\\.\\.\\$arrays of function array_merge expects array, array\\\\|false given\\.$#"
+ count: 1
+ path: scripts/cleanup-gallery.php
+
+ -
+ message: "#^Parameter \\#3 \\.\\.\\.\\$arrays of function array_merge expects array, array\\\\|false given\\.$#"
+ count: 1
+ path: scripts/cleanup-gallery.php
+
+ -
+ message: "#^Parameter \\#4 \\.\\.\\.\\$arrays of function array_merge expects array, array\\\\|false given\\.$#"
+ count: 1
+ path: scripts/cleanup-gallery.php
+
+ -
+ message: "#^Part \\$backupDir \\(non\\-empty\\-array\\\\|non\\-falsy\\-string\\) of encapsed string cannot be cast to string\\.$#"
+ count: 1
+ path: scripts/cleanup-gallery.php
+
+ -
+ message: "#^Method FAS\\\\Config\\\\Database\\:\\:getConnection\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/config/Database.php
+
+ -
+ message: "#^Method FAS\\\\Config\\\\Database\\:\\:getInstance\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/config/Database.php
+
+ -
+ message: "#^Property FAS\\\\Config\\\\Database\\:\\:\\$connection has no type specified\\.$#"
+ count: 1
+ path: src/config/Database.php
+
+ -
+ message: "#^Property FAS\\\\Config\\\\Database\\:\\:\\$instance has no type specified\\.$#"
+ count: 1
+ path: src/config/Database.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:__construct\\(\\) has parameter \\$config with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:buildParcels\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:buildParcels\\(\\) has parameter \\$items with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:createShipment\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:createShipment\\(\\) has parameter \\$courierID with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:createShipment\\(\\) has parameter \\$items with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:createShipment\\(\\) has parameter \\$orderId with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:createShipment\\(\\) has parameter \\$shippingAddress with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:formatDeliveryTime\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:formatDeliveryTime\\(\\) has parameter \\$option with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:getCountryCode\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:getCountryCode\\(\\) has parameter \\$country with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:getOriginAddress\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:getOriginAddress\\(\\) has parameter \\$warehouse with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:getShippingRates\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:getShippingRates\\(\\) has parameter \\$destinationAddress with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:getShippingRates\\(\\) has parameter \\$items with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:getShippingRates\\(\\) has parameter \\$originWarehouse with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:logToFile\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:logToFile\\(\\) has parameter \\$message with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:makeRequest\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:makeRequest\\(\\) has parameter \\$data with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:makeRequest\\(\\) has parameter \\$endpoint with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:makeRequest\\(\\) has parameter \\$method with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:parseRates\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EasyShipAPI\\:\\:parseRates\\(\\) has parameter \\$rates with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Parameter \\#1 \\$json of function json_decode expects string, bool\\|string given\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EasyShipAPI\\:\\:\\$apiKey has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EasyShipAPI\\:\\:\\$apiUrl has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EasyShipAPI\\:\\:\\$logFile has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EasyShipAPI\\:\\:\\$maxRetries has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EasyShipAPI\\:\\:\\$platformName has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EasyShipAPI\\:\\:\\$timeout has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EasyShipAPI.php
+
+ -
+ message: "#^Call to method diff\\(\\) on an unknown class FAS\\\\Integrations\\\\DateTime\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Empty array passed to foreach\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:__construct\\(\\) has parameter \\$config with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:__construct\\(\\) has parameter \\$configFilePath with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:buildGetSellerEventsRequest\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:buildGetSellerEventsRequest\\(\\) has parameter \\$entriesPerPage with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:buildGetSellerEventsRequest\\(\\) has parameter \\$pageNumber with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:buildGetSellerListRequest\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:buildGetSellerListRequest\\(\\) has parameter \\$endDate with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:buildGetSellerListRequest\\(\\) has parameter \\$entriesPerPage with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:buildGetSellerListRequest\\(\\) has parameter \\$pageNumber with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:buildGetSellerListRequest\\(\\) has parameter \\$startDate with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:extractCategoryMfgModelFromStoreCategory\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:extractCategoryMfgModelFromStoreCategory\\(\\) has parameter \\$storeCategoryId with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:extractMfgModelFromStoreCategory\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:extractMfgModelFromStoreCategory\\(\\) has parameter \\$storeCategoryId with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:getItemDetails\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:getItemDetails\\(\\) has parameter \\$itemId with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:getSellerEvents\\(\\) return type has no value type specified in iterable type array\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:getStoreCategories\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:getStoreCategoriesHierarchical\\(\\) return type has no value type specified in iterable type array\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:getStoreItems\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:getStoreItems\\(\\) has parameter \\$endDate with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:getStoreItems\\(\\) has parameter \\$entriesPerPage with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:getStoreItems\\(\\) has parameter \\$pageNumber with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:getStoreItems\\(\\) has parameter \\$startDate with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:getStoreItems\\(\\) has parameter \\$storeName with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:getTotalRetryWaitTime\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:isRateLimitError\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:isRateLimitError\\(\\) has parameter \\$errorMessage with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:makeRequest\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:makeRequest\\(\\) has parameter \\$maxRetries with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:makeRequest\\(\\) has parameter \\$retryCount with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:makeRequest\\(\\) has parameter \\$url with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:makeRequest\\(\\) has parameter \\$useOAuth with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:makeTradingApiRequest\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:makeTradingApiRequest\\(\\) has parameter \\$callName with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:makeTradingApiRequest\\(\\) has parameter \\$maxRetries with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:makeTradingApiRequest\\(\\) has parameter \\$retryCount with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:makeTradingApiRequest\\(\\) has parameter \\$url with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:makeTradingApiRequest\\(\\) has parameter \\$xmlRequest with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:mapStoreCategoryToWebsite\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:mapStoreCategoryToWebsite\\(\\) has parameter \\$storeCategoryName with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseInventoryResponse\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseInventoryResponse\\(\\) has parameter \\$entriesPerPage with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseInventoryResponse\\(\\) has parameter \\$pageNumber with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseInventoryResponse\\(\\) has parameter \\$response with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseInventoryResponse\\(\\) is unused\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseItemDetails\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseItemDetails\\(\\) has parameter \\$item with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseItemDetails\\(\\) is unused\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseItemsResponse\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseItemsResponse\\(\\) has parameter \\$response with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseStoreCategories\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseStoreCategories\\(\\) has parameter \\$categoriesData with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseTradingApiResponse\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseTradingApiResponse\\(\\) has parameter \\$entriesPerPage with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseTradingApiResponse\\(\\) has parameter \\$pageNumber with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseTradingApiResponse\\(\\) has parameter \\$response with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseXmlResponse\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:parseXmlResponse\\(\\) has parameter \\$xmlString with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:saveTokensToConfig\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:searchItems\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:searchItems\\(\\) has parameter \\$categoryId with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:searchItems\\(\\) has parameter \\$entriesPerPage with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:searchItems\\(\\) has parameter \\$keywords with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:searchItems\\(\\) has parameter \\$pageNumber with no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\EbayAPI\\:\\:wasRateLimited\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Parameter \\#1 \\$description of method FAS\\\\Integrations\\\\EbayAPI\\:\\:removeTemplatedTitleFromDescription\\(\\) expects string\\|null, array\\|float\\|int\\|string\\|false given\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Parameter \\#1 \\$json of function json_decode expects string, bool\\|string given\\.$#"
+ count: 2
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Parameter \\#1 \\$json of function json_decode expects string, string\\|false given\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Parameter \\#1 \\$json of function json_decode expects string, string\\|true given\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Parameter \\#1 \\$modTimeFrom of method FAS\\\\Integrations\\\\EbayAPI\\:\\:buildGetSellerEventsRequest\\(\\) expects DateTime, DateTime\\|FAS\\\\Integrations\\\\DateTime given\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Parameter \\#1 \\$string of function strip_tags expects string, array\\\\|string\\|null given\\.$#"
+ count: 2
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Parameter \\#1 \\$string of function strlen expects string, bool\\|string given\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Parameter \\#1 \\$string of function substr expects string, bool\\|string given\\.$#"
+ count: 3
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Parameter \\#2 \\$modTimeTo of method FAS\\\\Integrations\\\\EbayAPI\\:\\:buildGetSellerEventsRequest\\(\\) expects DateTime, DateTime\\|FAS\\\\Integrations\\\\DateTime given\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Parameter \\$modTimeFrom of method FAS\\\\Integrations\\\\EbayAPI\\:\\:getSellerEvents\\(\\) has invalid type FAS\\\\Integrations\\\\DateTime\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Parameter \\$modTimeTo of method FAS\\\\Integrations\\\\EbayAPI\\:\\:getSellerEvents\\(\\) has invalid type FAS\\\\Integrations\\\\DateTime\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$appId has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$certId has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$configFile has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$devId has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$devId is never read, only written\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$findingApiUrl has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$inventoryApiUrl has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$inventoryApiUrl is never read, only written\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$rateLimitExceeded has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$refreshToken has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$sandbox has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$shoppingApiUrl has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$shoppingApiUrl is never read, only written\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$siteId has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$storeCategoriesCache has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$tokenExpiresAt has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$tradingApiUrl has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\EbayAPI\\:\\:\\$userToken has no type specified\\.$#"
+ count: 1
+ path: src/integrations/EbayAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:__construct\\(\\) has parameter \\$config with no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:captureOrder\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:captureOrder\\(\\) has parameter \\$orderId with no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:createOrder\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:createOrder\\(\\) has parameter \\$items with no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:createOrder\\(\\) has parameter \\$shippingAmount with no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:createOrder\\(\\) has parameter \\$taxAmount with no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:getAccessToken\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:getApproveUrl\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:getApproveUrl\\(\\) has parameter \\$links with no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:getOrderDetails\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:getOrderDetails\\(\\) has parameter \\$orderId with no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:makeRequest\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:makeRequest\\(\\) has parameter \\$data with no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:makeRequest\\(\\) has parameter \\$endpoint with no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:makeRequest\\(\\) has parameter \\$method with no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:verifyWebhookSignature\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:verifyWebhookSignature\\(\\) has parameter \\$body with no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Integrations\\\\PayPalAPI\\:\\:verifyWebhookSignature\\(\\) has parameter \\$headers with no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Parameter \\#1 \\$json of function json_decode expects string, bool\\|string given\\.$#"
+ count: 2
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\PayPalAPI\\:\\:\\$accessToken has no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\PayPalAPI\\:\\:\\$apiUrl has no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\PayPalAPI\\:\\:\\$clientId has no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\PayPalAPI\\:\\:\\$clientSecret has no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\PayPalAPI\\:\\:\\$currency has no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\PayPalAPI\\:\\:\\$maxRetries has no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\PayPalAPI\\:\\:\\$mode has no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\PayPalAPI\\:\\:\\$timeout has no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Property FAS\\\\Integrations\\\\PayPalAPI\\:\\:\\$tokenExpiry has no type specified\\.$#"
+ count: 1
+ path: src/integrations/PayPalAPI.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Banner\\:\\:__construct\\(\\) has parameter \\$db with no type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Banner\\:\\:create\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Banner\\:\\:create\\(\\) has parameter \\$data with no type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Banner\\:\\:delete\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Banner\\:\\:delete\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Banner\\:\\:getActive\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Banner\\:\\:getAll\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Banner\\:\\:getById\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Banner\\:\\:getById\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Banner\\:\\:update\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Banner\\:\\:update\\(\\) has parameter \\$data with no type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Banner\\:\\:update\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Property FAS\\\\Models\\\\Banner\\:\\:\\$db has no type specified\\.$#"
+ count: 1
+ path: src/models/Banner.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:__construct\\(\\) has parameter \\$db with no type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:calculateDiscount\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:calculateDiscount\\(\\) has parameter \\$coupon with no type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:calculateDiscount\\(\\) has parameter \\$subtotal with no type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:create\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:create\\(\\) has parameter \\$data with no type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:delete\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:delete\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:getAll\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:getById\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:getById\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:incrementUsage\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:incrementUsage\\(\\) has parameter \\$code with no type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:update\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:update\\(\\) has parameter \\$data with no type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:update\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:validateCoupon\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:validateCoupon\\(\\) has parameter \\$code with no type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Coupon\\:\\:validateCoupon\\(\\) has parameter \\$subtotal with no type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Property FAS\\\\Models\\\\Coupon\\:\\:\\$db has no type specified\\.$#"
+ count: 1
+ path: src/models/Coupon.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:__construct\\(\\) has parameter \\$db with no type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:createOrUpdate\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:createOrUpdate\\(\\) has parameter \\$ebayCat1Name with no type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:createOrUpdate\\(\\) has parameter \\$homepageCategory with no type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:createOrUpdate\\(\\) has parameter \\$priority with no type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:delete\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:delete\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:getAll\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:getAllGroupedByEbayCategory\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:getById\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:getById\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:getEbayCategoriesForHomepageCategory\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:getEbayCategoriesForHomepageCategory\\(\\) has parameter \\$homepageCategory with no type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:getEbayCategoriesFromProducts\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:getHomepageCategoryForEbayCategory\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:getHomepageCategoryForEbayCategory\\(\\) has parameter \\$ebayCat1Name with no type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:normalizeEbayCategoryName\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:normalizeEbayCategoryName\\(\\) has parameter \\$name with no type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Property FAS\\\\Models\\\\HomepageCategoryMapping\\:\\:\\$db has no type specified\\.$#"
+ count: 1
+ path: src/models/HomepageCategoryMapping.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:__construct\\(\\) has parameter \\$db with no type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:addItems\\(\\) has parameter \\$items with no value type specified in iterable type array\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:create\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:generateOrderNumber\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:getById\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:getById\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:getByOrderNumber\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:getByOrderNumber\\(\\) has parameter \\$orderNumber with no type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:getByPayPalOrderId\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:getByPayPalOrderId\\(\\) has parameter \\$paypalOrderId with no type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:getCountAll\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:getItems\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:getItems\\(\\) has parameter \\$orderId with no type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:getTotalRevenue\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:update\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:update\\(\\) has parameter \\$data with no type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Order\\:\\:update\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Property FAS\\\\Models\\\\Order\\:\\:\\$db has no type specified\\.$#"
+ count: 1
+ path: src/models/Order.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:__construct\\(\\) has parameter \\$db with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:create\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:create\\(\\) has parameter \\$data with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:delete\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:delete\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:extractStoreCategoryHierarchy\\(\\) return type has no value type specified in iterable type array\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAll\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAll\\(\\) has parameter \\$category with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAll\\(\\) has parameter \\$manufacturer with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAll\\(\\) has parameter \\$page with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAll\\(\\) has parameter \\$perPage with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAll\\(\\) has parameter \\$search with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllByEbayCategory\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllByEbayCategory\\(\\) has parameter \\$cat1Id with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllByEbayCategory\\(\\) has parameter \\$cat2Id with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllByEbayCategory\\(\\) has parameter \\$cat3Id with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllByEbayCategory\\(\\) has parameter \\$manufacturer with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllByEbayCategory\\(\\) has parameter \\$page with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllByEbayCategory\\(\\) has parameter \\$perPage with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllByEbayCategory\\(\\) has parameter \\$search with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllProducts\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllProducts\\(\\) has parameter \\$page with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllProducts\\(\\) has parameter \\$perPage with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllProducts\\(\\) has parameter \\$search with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getAllProducts\\(\\) has parameter \\$sourceFilter with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getByEbayId\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getByEbayId\\(\\) has parameter \\$ebayItemId with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getById\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getById\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getById\\(\\) has parameter \\$includeInactive with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCount\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCount\\(\\) has parameter \\$category with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCount\\(\\) has parameter \\$manufacturer with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCount\\(\\) has parameter \\$search with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCountAll\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCountAll\\(\\) has parameter \\$search with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCountAll\\(\\) has parameter \\$sourceFilter with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCountByEbayCategory\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCountByEbayCategory\\(\\) has parameter \\$cat1Id with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCountByEbayCategory\\(\\) has parameter \\$cat2Id with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCountByEbayCategory\\(\\) has parameter \\$cat3Id with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCountByEbayCategory\\(\\) has parameter \\$manufacturer with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getCountByEbayCategory\\(\\) has parameter \\$search with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getDb\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getEbayStoreCategoryArray\\(\\) has parameter \\$product with no value type specified in iterable type array\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getEbayStoreCategoryArray\\(\\) return type has no value type specified in iterable type array\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getEbayStoreCategoryPath\\(\\) has parameter \\$product with no value type specified in iterable type array\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:getManufacturers\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:hideByEbayId\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:hideByEbayId\\(\\) has parameter \\$ebayItemId with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:mapEbayCategory\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:mapEbayCategory\\(\\) has parameter \\$ebayCat1Name with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:mapEbayCategory\\(\\) has parameter \\$ebayCategoryId with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:mapEbayCategory\\(\\) has parameter \\$ebayCategoryName with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:mapEbayCategory\\(\\) has parameter \\$itemTitle with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:syncFromEbay\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:syncFromEbay\\(\\) has parameter \\$ebayData with no value type specified in iterable type array\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:toggleWebsiteVisibility\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:toggleWebsiteVisibility\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:update\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:update\\(\\) has parameter \\$data with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:update\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:updateImages\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:updateImages\\(\\) has parameter \\$newImagesJson with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Product\\:\\:updateImages\\(\\) has parameter \\$prodId with no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Property FAS\\\\Models\\\\Product\\:\\:\\$db has no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Property FAS\\\\Models\\\\Product\\:\\:\\$mappingModel has no type specified\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Strict comparison using \\=\\=\\= between mixed and null will always evaluate to false\\.$#"
+ count: 1
+ path: src/models/Product.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:__construct\\(\\) has parameter \\$db with no type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:create\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:create\\(\\) has parameter \\$data with no type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:delete\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:delete\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:getAll\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:getAll\\(\\) has parameter \\$includeInactive with no type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:getByCode\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:getByCode\\(\\) has parameter \\$code with no type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:getById\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:getById\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:getDefault\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:getForCartItems\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:getForCartItems\\(\\) has parameter \\$items with no type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:getForProduct\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:getForProduct\\(\\) has parameter \\$productId with no type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:setAsDefault\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:setAsDefault\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:update\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:update\\(\\) has parameter \\$data with no type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Models\\\\Warehouse\\:\\:update\\(\\) has parameter \\$id with no type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Property FAS\\\\Models\\\\Warehouse\\:\\:\\$db has no type specified\\.$#"
+ count: 1
+ path: src/models/Warehouse.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\CSRF\\:\\:generateToken\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/CSRF.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\CSRF\\:\\:getToken\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/CSRF.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\CSRF\\:\\:tokenField\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/CSRF.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\CSRF\\:\\:validateRequest\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/CSRF.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\CSRF\\:\\:validateToken\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/CSRF.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\CSRF\\:\\:validateToken\\(\\) has parameter \\$token with no type specified\\.$#"
+ count: 1
+ path: src/utils/CSRF.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:finalize\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:init\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:init\\(\\) has parameter \\$logFilePath with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:log\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:log\\(\\) has parameter \\$context with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:log\\(\\) has parameter \\$message with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logError\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logError\\(\\) has parameter \\$exception with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logError\\(\\) has parameter \\$message with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logPhpError\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logPhpError\\(\\) has parameter \\$errfile with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logPhpError\\(\\) has parameter \\$errline with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logPhpError\\(\\) has parameter \\$errno with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logPhpError\\(\\) has parameter \\$errstr with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logRequest\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logRequest\\(\\) has parameter \\$method with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logRequest\\(\\) has parameter \\$url with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logResponse\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logResponse\\(\\) has parameter \\$httpCode with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logResponse\\(\\) has parameter \\$response with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logWarning\\(\\) has no return type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Method FAS\\\\Utils\\\\SyncLogger\\:\\:logWarning\\(\\) has parameter \\$message with no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Offset 1\\|2\\|256\\|512 on array\\{1\\: 'ERROR', 2\\: 'WARNING', 256\\: 'USER_ERROR', 512\\: 'USER_WARNING'\\} on left side of \\?\\? always exists and is not nullable\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Property FAS\\\\Utils\\\\SyncLogger\\:\\:\\$isEnabled has no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
+
+ -
+ message: "#^Property FAS\\\\Utils\\\\SyncLogger\\:\\:\\$logFile has no type specified\\.$#"
+ count: 1
+ path: src/utils/SyncLogger.php
diff --git a/phpstan.neon.dist b/phpstan.neon.dist
new file mode 100644
index 0000000..832fd75
--- /dev/null
+++ b/phpstan.neon.dist
@@ -0,0 +1,27 @@
+includes:
+ - phpstan-baseline.neon
+
+parameters:
+ level: 7
+ paths:
+ - about.php
+ - cart.php
+ - checkout.php
+ - contact.php
+ - diagnostic_script.php
+ - index.php
+ - install.php
+ - product.php
+ - products.php
+ - admin
+ - api
+ - cron
+ - database
+ - includes
+ - scripts
+ - src
+ excludePaths:
+ analyse:
+ - vendor/*
+ - node_modules/*
+ tmpDir: /tmp/phpstan-fas
diff --git a/product.php b/product.php
index 9da96b2..1739c38 100644
--- a/product.php
+++ b/product.php
@@ -51,6 +51,21 @@ function normalizeImagePath($path) {
return $path;
}
+function resolveLocalImagePath($path) {
+ if (!is_string($path) || $path === '' || strpos($path, '..') !== false) {
+ return null;
+ }
+
+ $basePath = realpath(__DIR__);
+ $resolvedPath = realpath(__DIR__ . '/' . ltrim($path, '/'));
+
+ if ($basePath === false || $resolvedPath === false) {
+ return null;
+ }
+
+ return strpos($resolvedPath, $basePath . DIRECTORY_SEPARATOR) === 0 ? $resolvedPath : null;
+}
+
// Normalize all image paths
$images = array_map('normalizeImagePath', $images);
@@ -135,9 +150,10 @@ function normalizeImagePath($path) {
@@ -161,9 +177,10 @@ class="img-fluid product-detail-img w-100"
diff --git a/products.php b/products.php
index 5091769..9c14034 100644
--- a/products.php
+++ b/products.php
@@ -89,6 +89,21 @@ function normalizeImagePath($path) {
return $path;
}
+function resolveLocalImagePath($path) {
+ if (!is_string($path) || $path === '' || strpos($path, '..') !== false) {
+ return null;
+ }
+
+ $basePath = realpath(__DIR__);
+ $resolvedPath = realpath(__DIR__ . '/' . ltrim($path, '/'));
+
+ if ($basePath === false || $resolvedPath === false) {
+ return null;
+ }
+
+ return strpos($resolvedPath, $basePath . DIRECTORY_SEPARATOR) === 0 ? $resolvedPath : null;
+}
+
// Get filter parameters (already got homepageCategory above for redirect)
$ebayCat1 = $_GET['cat1'] ?? null; // Level 1 eBay category ID
$ebayCat2 = $_GET['cat2'] ?? null; // Level 2 eBay category ID
@@ -122,6 +137,7 @@ function normalizeImagePath($path) {
}
} catch (Exception $e) {
$ebayCategories = [];
+ $ebayAPI = null;
error_log("Failed to load eBay categories: " . $e->getMessage());
error_log("Stack trace: " . $e->getTraceAsString());
}
@@ -138,7 +154,7 @@ function normalizeImagePath($path) {
// Get current category name for display
$currentCategoryName = 'All Products';
if ($ebayCat3 || $ebayCat2 || $ebayCat1) {
- $flatCategories = $ebayAPI->getStoreCategories();
+ $flatCategories = $ebayAPI ? $ebayAPI->getStoreCategories() : [];
if ($ebayCat3 && isset($flatCategories[$ebayCat3])) {
$cat = $flatCategories[$ebayCat3];
$currentCategoryName = ($cat['topLevel'] ?? '') . ' > ' . ($cat['parent'] ?? '') . ' > ' . $cat['name'];
@@ -299,9 +315,10 @@ class="category-link list-group-item list-group-item-action ps-5
diff --git a/public/js/animations.js b/public/js/animations.js
index 3b86657..c02c7a5 100644
--- a/public/js/animations.js
+++ b/public/js/animations.js
@@ -50,10 +50,20 @@ function initToastNotifications() {
const toast = document.createElement('div');
toast.className = `toast-notification alert alert-${type} alert-dismissible fade show`;
toast.setAttribute('role', 'alert');
- toast.innerHTML = `
- ${type === 'success' ? 'Success!' : type === 'danger' ? 'Error!' : 'Info'} ${message}
-
- `;
+ const title = document.createElement('strong');
+ title.textContent = type === 'success' ? 'Success!' : type === 'danger' ? 'Error!' : 'Info';
+
+ const text = document.createTextNode(` ${message}`);
+
+ const closeButton = document.createElement('button');
+ closeButton.type = 'button';
+ closeButton.className = 'btn-close';
+ closeButton.setAttribute('data-bs-dismiss', 'alert');
+ closeButton.setAttribute('aria-label', 'Close');
+
+ toast.appendChild(title);
+ toast.appendChild(text);
+ toast.appendChild(closeButton);
document.body.appendChild(toast);
@@ -134,13 +144,18 @@ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
* Add to cart animation
*/
window.animateAddToCart = function(buttonElement) {
- const originalText = buttonElement.innerHTML;
- buttonElement.innerHTML = ' Added!';
+ const originalNodes = Array.from(buttonElement.childNodes).map(node => node.cloneNode(true));
+ const addedIcon = document.createElement('i');
+ addedIcon.className = 'bi bi-check2-circle';
+
+ buttonElement.replaceChildren();
+ buttonElement.appendChild(addedIcon);
+ buttonElement.appendChild(document.createTextNode(' Added!'));
buttonElement.classList.add('btn-success');
buttonElement.classList.remove('btn-danger');
setTimeout(() => {
- buttonElement.innerHTML = originalText;
+ buttonElement.replaceChildren(...originalNodes.map(node => node.cloneNode(true)));
buttonElement.classList.remove('btn-success');
buttonElement.classList.add('btn-danger');
}, 2000);
diff --git a/public/js/main.js b/public/js/main.js
index 6725005..1b430a3 100644
--- a/public/js/main.js
+++ b/public/js/main.js
@@ -191,18 +191,5 @@ function setupSearch() {
}
}
-// Debounce helper
-function debounce(func, wait) {
- let timeout;
- return function executedFunction(...args) {
- const later = () => {
- clearTimeout(timeout);
- func(...args);
- };
- clearTimeout(timeout);
- timeout = setTimeout(later, wait);
- };
-}
-
// Export cart for use in other pages
window.cart = cart;
diff --git a/scripts/render-pages.sh b/scripts/render-pages.sh
new file mode 100644
index 0000000..84755eb
--- /dev/null
+++ b/scripts/render-pages.sh
@@ -0,0 +1,81 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+MODE="${1:-all}"
+ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
+TMP_DIR="/tmp/fas-rendered"
+SERVER_LOG="$TMP_DIR/php-server.log"
+SERVER_HOST="127.0.0.1"
+SERVER_PORT="8000"
+BASE_URL="http://${SERVER_HOST}:${SERVER_PORT}"
+PAGES=("about.php" "contact.php" "cart.php")
+
+mkdir -p "$TMP_DIR"
+
+if [ ! -f "$ROOT_DIR/src/config/config.php" ]; then
+ cp "$ROOT_DIR/src/config/config.example.php" "$ROOT_DIR/src/config/config.php"
+fi
+
+touch "$ROOT_DIR/database/flipandstrip.db"
+
+resolve_browser_driver_paths() {
+ npx --yes browser-driver-manager install chrome >/dev/null
+ local driver_env
+ driver_env="$(npx --yes browser-driver-manager which)"
+
+ CHROMEDRIVER_PATH="$(printf '%s\n' "$driver_env" | sed -n 's/^CHROMEDRIVER_TEST_PATH=\"\(.*\)\"$/\1/p')"
+ CHROME_PATH="$(printf '%s\n' "$driver_env" | sed -n 's/^CHROME_TEST_PATH=\"\(.*\)\"$/\1/p')"
+
+ if [ -z "${CHROMEDRIVER_PATH}" ] || [ -z "${CHROME_PATH}" ]; then
+ echo "Unable to locate Chrome or ChromeDriver after installation." >&2
+ exit 1
+ fi
+}
+
+run_htmlhint() {
+ npx htmlhint "${TMP_DIR}"/*.html
+}
+
+run_axe() {
+ resolve_browser_driver_paths
+ npx axe --exit --disable color-contrast --chrome-path "${CHROME_PATH}" --chromedriver-path "${CHROMEDRIVER_PATH}" "${BASE_URL}/about.php" "${BASE_URL}/contact.php" "${BASE_URL}/cart.php"
+}
+
+php -S "${SERVER_HOST}:${SERVER_PORT}" -t "$ROOT_DIR" >"$SERVER_LOG" 2>&1 &
+SERVER_PID=$!
+
+cleanup() {
+ if kill -0 "$SERVER_PID" 2>/dev/null; then
+ kill "$SERVER_PID"
+ wait "$SERVER_PID" 2>/dev/null || true
+ fi
+}
+trap cleanup EXIT
+
+for _ in $(seq 1 20); do
+ if curl --silent --fail "${BASE_URL}/about.php" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+
+for page in "${PAGES[@]}"; do
+ curl --silent --show-error --fail "${BASE_URL}/${page}" --output "${TMP_DIR}/${page%.php}.html"
+done
+
+case "$MODE" in
+ html)
+ run_htmlhint
+ ;;
+ axe)
+ run_axe
+ ;;
+ all)
+ run_htmlhint
+ run_axe
+ ;;
+ *)
+ echo "Unsupported mode: $MODE" >&2
+ exit 1
+ ;;
+esac
diff --git a/src/config/config.example.php b/src/config/config.example.php
index 6822179..a600d67 100644
--- a/src/config/config.example.php
+++ b/src/config/config.example.php
@@ -48,11 +48,6 @@
'currency' => 'USD'
],
- // Site configuration
- 'site' => [
- 'url' => 'https://yoursite.com', // Your site URL (without trailing slash)
- ],
-
'easyship' => [
'api_key' => 'YOUR_EASYSHIP_API_KEY',
'platform_name' => 'Flip and Strip',