From 1ab45204b982335f1e58908e8584a098f4f324b5 Mon Sep 17 00:00:00 2001 From: Bram Verhulst Date: Thu, 29 Aug 2024 15:47:58 +0200 Subject: [PATCH] Add Formatting (Thank God) --- eslint.config.mjs | 11 + package-lock.json | 2124 ++++++++++++++++- package.json | 4 + scripts/Commandeer/Trigger/maker.ts | 21 +- scripts/Commandeer/Trigger/manager.ts | 20 +- scripts/Commandeer/animations/animation.ts | 4 +- scripts/Commandeer/command/command.ts | 6 +- .../completionCondition/BlockCondition.ts | 1 - .../ButtonPushCondition.ts | 2 +- .../level/abstractTrackFollowMission.ts | 10 +- scripts/Commandeer/level/level.ts | 22 +- scripts/Commandeer/level/levelTypes.ts | 6 +- scripts/Commandeer/mindKeeper.ts | 15 +- scripts/Commandeer/nextLevel.ts | 3 + scripts/Commandeer/pupeteer.ts | 11 +- scripts/Commandeer/trail/trailEngine.ts | 12 +- scripts/Commandeer/trail/trailMaker.ts | 2 +- scripts/Commandeer/utils/agentUtils.ts | 10 +- scripts/Commandeer/utils/arrow.ts | 19 +- scripts/Commandeer/utils/levelUtils.ts | 9 +- scripts/Commandeer/utils/particleUtils.ts | 23 +- scripts/Commandeer/utils/waitUtil.ts | 4 +- scripts/levelConditions/levelIntro.ts | 4 +- .../mission2part1Conditions.ts | 4 +- .../mission2part2Conditions.ts | 4 +- scripts/levels/levelIntro.ts | 36 +- scripts/levels/mission1/mission1part1.ts | 2 +- scripts/levels/mission1/mission1part2.ts | 4 +- scripts/levels/mission1/mission1part3.ts | 4 +- scripts/levels/mission2/mission2part1.ts | 8 +- scripts/levels/mission2/mission2part2.ts | 8 +- scripts/levels/mission3/mission3part3.ts | 2 +- scripts/main.ts | 159 +- scripts/trails/startTrail.ts | 3 +- scripts/triggers.ts | 8 +- 35 files changed, 2331 insertions(+), 254 deletions(-) create mode 100644 eslint.config.mjs diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..e42f20a --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,11 @@ +import globals from "globals"; +import pluginJs from "@eslint/js"; +import tseslint from "typescript-eslint"; + +export default [ + { files: ["**/*.{js,mjs,cjs,ts}"] }, + { languageOptions: { globals: globals.browser } }, + pluginJs.configs.recommended, + // Dont make errors of unused parameters in lambdas + ...tseslint.configs.recommended, +]; diff --git a/package-lock.json b/package-lock.json index 4cc359d..de07639 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,8 +12,11 @@ "decode-uri-component": "^0.2.2" }, "devDependencies": { + "@eslint/js": "^9.9.1", "@minecraft/server-ui": "^1.1.0", "del": "^6.0.0", + "eslint": "^9.9.1", + "globals": "^15.9.0", "gulp": "^4.0.2", "gulp-cli": "^2.3.0", "gulp-rename": "^2.0.0", @@ -24,9 +27,171 @@ "readline-sync": "^1.4.10", "source-map": "^0.7.4", "typescript": "^4.4.3", + "typescript-eslint": "^8.3.0", "yargs": "^17.7.2" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/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-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/config-array/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/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/js": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@gulp-sourcemaps/identity-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", @@ -87,6 +252,34 @@ "node": ">=0.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/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@minecraft/common": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@minecraft/common/-/common-1.1.0.tgz", @@ -155,6 +348,323 @@ "node": ">= 8" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz", + "integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/type-utils": "8.3.0", + "@typescript-eslint/utils": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz", + "integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/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/@typescript-eslint/scope-manager": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz", + "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz", + "integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.3.0", + "@typescript-eslint/utils": "8.3.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/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/@typescript-eslint/types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz", + "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz", + "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz", + "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz", + "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.3.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/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/acorn": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", @@ -167,6 +677,16 @@ "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/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -180,6 +700,23 @@ "node": ">=8" } }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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-colors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", @@ -400,6 +937,13 @@ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, + "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/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -808,6 +1352,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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/camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", @@ -818,6 +1372,23 @@ "node": ">=0.10.0" } }, + "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/chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -1064,6 +1635,37 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/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/css": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", @@ -1132,6 +1734,13 @@ "node": ">=0.10" } }, + "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/default-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", @@ -1351,6 +1960,251 @@ "node": ">=6" } }, + "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/eslint": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", + "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.9.1", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/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/eslint/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/eslint/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/eslint/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/espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "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/event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", @@ -1532,11 +2386,19 @@ "node": ">= 0.10" } }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "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.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1548,6 +2410,13 @@ "node": ">=8.6.0" } }, + "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": "1.1.4", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", @@ -1563,6 +2432,19 @@ "reusify": "^1.0.4" } }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -1772,6 +2654,27 @@ "node": ">= 0.10" } }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, "node_modules/flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -2040,6 +2943,19 @@ "node": ">=0.10.0" } }, + "node_modules/globals": { + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -2078,6 +2994,13 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "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/gulp": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", @@ -2389,6 +3312,16 @@ "node": ">= 0.4.0" } }, + "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-property-descriptors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", @@ -2472,14 +3405,42 @@ "license": "ISC" }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "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/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "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/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/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -2817,6 +3778,33 @@ "node": ">=0.10.0" } }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "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-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", @@ -2829,6 +3817,16 @@ "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", "dev": true }, + "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": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", @@ -2888,6 +3886,20 @@ "node": ">= 0.10" } }, + "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/liftoff": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", @@ -2936,6 +3948,29 @@ "node": ">=0.10.0" } }, + "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/lru-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", @@ -3423,6 +4458,13 @@ "node": ">=0.10.0" } }, + "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/nbtify": { "version": "1.85.0", "resolved": "https://registry.npmjs.org/nbtify/-/nbtify-1.85.0.tgz", @@ -3618,6 +4660,31 @@ "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/optionator/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/ordered-read-streams": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", @@ -3640,6 +4707,38 @@ "node": ">=0.10.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/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -3655,6 +4754,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -3737,6 +4849,16 @@ "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-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -3911,6 +5033,16 @@ "node": ">=0.10.0" } }, + "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/pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -3947,6 +5079,16 @@ "pump": "^2.0.0" } }, + "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/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -4352,6 +5494,16 @@ "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/resolve-options": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", @@ -4499,6 +5651,29 @@ "node": ">=0.10.0" } }, + "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/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -4876,6 +6051,32 @@ "node": ">=0.10.0" } }, + "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/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-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -4898,6 +6099,13 @@ "es6-symbol": "^3.1.1" } }, + "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/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -5111,12 +6319,38 @@ "node": ">= 0.10" } }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", "dev": true }, + "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/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -5136,6 +6370,30 @@ "node": ">=4.2.0" } }, + "node_modules/typescript-eslint": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.3.0.tgz", + "integrity": "sha512-EvWjwWLwwKDIJuBjk2I6UkV8KEQcwZ0VM10nR1rIunRDIP67QJTZAHBXTX0HW/oI1H10YESF8yWie8fRQxjvFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.3.0", + "@typescript-eslint/parser": "8.3.0", + "@typescript-eslint/utils": "8.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -5258,6 +6516,16 @@ "yarn": "*" } }, + "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/urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -5406,6 +6674,16 @@ "dev": true, "license": "ISC" }, + "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/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -5486,9 +6764,125 @@ "dependencies": { "buffer-crc32": "~0.2.3" } + }, + "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" + } } }, "dependencies": { + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "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 + } + } + }, + "@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true + }, + "@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "requires": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "dependencies": { + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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 + } + } + }, + "@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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" + }, + "dependencies": { + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true + }, + "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 + } + } + }, + "@eslint/js": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", + "dev": true + }, + "@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true + }, "@gulp-sourcemaps/identity-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", @@ -5541,6 +6935,18 @@ } } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true + }, "@minecraft/common": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@minecraft/common/-/common-1.1.0.tgz", @@ -5600,12 +7006,198 @@ "fastq": "^1.6.0" } }, + "@typescript-eslint/eslint-plugin": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz", + "integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/type-utils": "8.3.0", + "@typescript-eslint/utils": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/parser": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz", + "integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", + "debug": "^4.3.4" + }, + "dependencies": { + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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 + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz", + "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz", + "integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "8.3.0", + "@typescript-eslint/utils": "8.3.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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 + } + } + }, + "@typescript-eslint/types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz", + "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz", + "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "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 + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + } + } + }, + "@typescript-eslint/utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz", + "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz", + "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.3.0", + "eslint-visitor-keys": "^3.4.3" + }, + "dependencies": { + "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 + } + } + }, "acorn": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, + "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, + "requires": {} + }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -5616,6 +7208,18 @@ "indent-string": "^4.0.0" } }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi-colors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", @@ -5785,6 +7389,12 @@ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, + "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 + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -6103,12 +7713,28 @@ "get-intrinsic": "^1.0.2" } }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", "dev": true }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -6313,6 +7939,28 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "css": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", @@ -6373,6 +8021,12 @@ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" }, + "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 + }, "default-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", @@ -6551,6 +8205,161 @@ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true }, + "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 + }, + "eslint": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", + "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.9.1", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "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" + }, + "dependencies": { + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "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 + }, + "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 + } + } + }, + "eslint-scope": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true + }, + "espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "dev": true, + "requires": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, + "dependencies": { + "acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true + } + } + }, + "esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "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, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, "event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", @@ -6708,10 +8517,16 @@ "time-stamp": "^1.0.0" } }, + "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 + }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -6721,6 +8536,12 @@ "micromatch": "^4.0.4" } }, + "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 + }, "fast-levenshtein": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", @@ -6736,6 +8557,15 @@ "reusify": "^1.0.4" } }, + "file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "requires": { + "flat-cache": "^4.0.0" + } + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -6903,6 +8733,22 @@ "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", "dev": true }, + "flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + } + }, + "flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -7115,6 +8961,12 @@ "which": "^1.2.14" } }, + "globals": { + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", + "dev": true + }, "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -7144,6 +8996,12 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "gulp": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", @@ -7391,6 +9249,12 @@ "function-bind": "^1.1.1" } }, + "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 + }, "has-property-descriptors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", @@ -7454,9 +9318,25 @@ "dev": true }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "indent-string": { @@ -7721,6 +9601,27 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-schema-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 + }, "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", @@ -7733,6 +9634,15 @@ "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", "dev": true }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", @@ -7776,6 +9686,16 @@ "flush-write-stream": "^1.0.2" } }, + "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, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, "liftoff": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", @@ -7816,6 +9736,21 @@ "strip-bom": "^2.0.0" } }, + "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, + "requires": { + "p-locate": "^5.0.0" + } + }, + "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 + }, "lru-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", @@ -8205,6 +10140,12 @@ } } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, "nbtify": { "version": "1.85.0", "resolved": "https://registry.npmjs.org/nbtify/-/nbtify-1.85.0.tgz", @@ -8355,6 +10296,28 @@ "wrappy": "1" } }, + "optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "dependencies": { + "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 + } + } + }, "ordered-read-streams": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", @@ -8373,6 +10336,24 @@ "lcid": "^1.0.0" } }, + "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, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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, + "requires": { + "p-limit": "^3.0.2" + } + }, "p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -8382,6 +10363,15 @@ "aggregate-error": "^3.0.0" } }, + "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, + "requires": { + "callsites": "^3.0.0" + } + }, "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -8441,6 +10431,12 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "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 + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -8567,6 +10563,12 @@ } } }, + "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 + }, "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -8600,6 +10602,12 @@ "pump": "^2.0.0" } }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -8906,6 +10914,12 @@ "global-modules": "^1.0.0" } }, + "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 + }, "resolve-options": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", @@ -9010,6 +11024,21 @@ } } }, + "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, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "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 + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -9316,6 +11345,21 @@ "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", "dev": true }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -9332,6 +11376,12 @@ "es6-symbol": "^3.1.1" } }, + "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 + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -9504,12 +11554,28 @@ "through2": "^2.0.3" } }, + "ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "requires": {} + }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", "dev": true }, + "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, + "requires": { + "prelude-ls": "^1.2.1" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -9522,6 +11588,17 @@ "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", "dev": true }, + "typescript-eslint": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.3.0.tgz", + "integrity": "sha512-EvWjwWLwwKDIJuBjk2I6UkV8KEQcwZ0VM10nR1rIunRDIP67QJTZAHBXTX0HW/oI1H10YESF8yWie8fRQxjvFA==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "8.3.0", + "@typescript-eslint/parser": "8.3.0", + "@typescript-eslint/utils": "8.3.0" + } + }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -9620,6 +11697,15 @@ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -9743,6 +11829,12 @@ "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", "dev": true }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -9801,6 +11893,12 @@ "requires": { "buffer-crc32": "~0.2.3" } + }, + "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 } } } diff --git a/package.json b/package.json index 4189493..880f36c 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,11 @@ "description": "Minecraft TypeScript Starter Project", "private": true, "devDependencies": { + "@eslint/js": "^9.9.1", "@minecraft/server-ui": "^1.1.0", "del": "^6.0.0", + "eslint": "^9.9.1", + "globals": "^15.9.0", "gulp": "^4.0.2", "gulp-cli": "^2.3.0", "gulp-rename": "^2.0.0", @@ -17,6 +20,7 @@ "readline-sync": "^1.4.10", "source-map": "^0.7.4", "typescript": "^4.4.3", + "typescript-eslint": "^8.3.0", "yargs": "^17.7.2" }, "scripts": { diff --git a/scripts/Commandeer/Trigger/maker.ts b/scripts/Commandeer/Trigger/maker.ts index 1567fb3..433479c 100644 --- a/scripts/Commandeer/Trigger/maker.ts +++ b/scripts/Commandeer/Trigger/maker.ts @@ -13,7 +13,7 @@ import { world, } from "@minecraft/server"; import { vector3, vector3Distance } from "../utils/vectorUtils"; -import { Mindkeeper, StoreType } from "../mindKeeper"; +import { Mindkeeper } from "../mindKeeper"; import { spawnParticle } from "../utils/particleUtils"; import { Manager } from "./manager"; @@ -46,7 +46,7 @@ export class Maker { } if (event.message === "!deleteCurrentTrigger") { - let currentTriggerdTrigger = this.manager + const currentTriggerdTrigger = this.manager .GetTriggers() .filter((trigger) => trigger.IsPlayerInside(event.sender as Player)); if (currentTriggerdTrigger.length > 0) { @@ -85,12 +85,12 @@ export class Maker { if (this.waitingForPoint2) { this.point2 = vector3(blockInteracted.location.x, blockInteracted.location.y, blockInteracted.location.z); - let minX = Math.min(this.point1.x, this.point2.x); - let maxX = Math.max(this.point1.x, this.point2.x) + 1; - let minY = Math.min(this.point1.y, this.point2.y); - let maxY = Math.max(this.point1.y, this.point2.y) + 1; - let minZ = Math.min(this.point1.z, this.point2.z); - let maxZ = Math.max(this.point1.z, this.point2.z) + 1; + const minX = Math.min(this.point1.x, this.point2.x); + const maxX = Math.max(this.point1.x, this.point2.x) + 1; + const minY = Math.min(this.point1.y, this.point2.y); + const maxY = Math.max(this.point1.y, this.point2.y) + 1; + const minZ = Math.min(this.point1.z, this.point2.z); + const maxZ = Math.max(this.point1.z, this.point2.z) + 1; //Take the outer bounds of the two points this.point1 = vector3(minX, minY, minZ); @@ -126,7 +126,7 @@ export class Maker { const z = pos1.z + (zStep / steps) * i; //make the ends and starts a different color - let map = new MolangVariableMap(); + const map = new MolangVariableMap(); if (i == 0 || i == steps) { map.setColorRGB("variable.color", { red: 0, green: 255, blue: 0 }); const particleData: MolangVariableMap = new MolangVariableMap(); @@ -159,7 +159,7 @@ export class Maker { } Update() { - let shouldRender = this.mindKeeper.get("ShowTriggers") as boolean; + const shouldRender = this.mindKeeper.get("ShowTriggers") as boolean; this.manager.GetTriggers().forEach((trigger: Trigger) => { trigger.Update(); @@ -178,7 +178,6 @@ export class Maker { }); distances.sort((a, b) => a.distance - b.distance); - const closestPlayer = distances[0].player; const distance = distances[0].distance; if (distance > 25) return; diff --git a/scripts/Commandeer/Trigger/manager.ts b/scripts/Commandeer/Trigger/manager.ts index b9ed188..e5b9557 100644 --- a/scripts/Commandeer/Trigger/manager.ts +++ b/scripts/Commandeer/Trigger/manager.ts @@ -1,4 +1,4 @@ -import { ChatSendAfterEvent, ItemUseOnBeforeEvent, Player, system, world } from "@minecraft/server"; +import { ChatSendAfterEvent, ItemUseOnBeforeEvent, Player, world } from "@minecraft/server"; import { Mindkeeper, StoreType } from "../mindKeeper"; import { vector3 } from "../utils/vectorUtils"; import { Maker } from "./maker"; @@ -16,6 +16,12 @@ export class TriggerEvent { export type TriggerEventHandler = (event: TriggerEvent) => void; +type TriggerData = { + point1: { x: number; y: number; z: number }; + point2: { x: number; y: number; z: number }; + eventToDispatch: string; +}; + export class Manager { private triggers: Trigger[] = []; private functionTriggers: Map = new Map(); @@ -58,13 +64,13 @@ export class Manager { const triggers = this.mindKeeper.get("triggers") as string; if (triggers === undefined) return; - const data = JSON.parse(triggers); - data.forEach((trigger: any) => { - let point1 = vector3(trigger.point1.x, trigger.point1.y, trigger.point1.z); - let point2 = vector3(trigger.point2.x, trigger.point2.y, trigger.point2.z); - let eventToDispatch = trigger.eventToDispatch; + const data = JSON.parse(triggers) as TriggerData[]; + data.forEach((trigger: TriggerData) => { + const point1 = vector3(trigger.point1.x, trigger.point1.y, trigger.point1.z); + const point2 = vector3(trigger.point2.x, trigger.point2.y, trigger.point2.z); + const eventToDispatch = trigger.eventToDispatch; - let newTrigger = new Trigger(point1, point2); + const newTrigger = new Trigger(point1, point2); newTrigger.eventToDispatch = eventToDispatch; this.triggers.push(newTrigger); diff --git a/scripts/Commandeer/animations/animation.ts b/scripts/Commandeer/animations/animation.ts index b7b4561..31e8813 100644 --- a/scripts/Commandeer/animations/animation.ts +++ b/scripts/Commandeer/animations/animation.ts @@ -42,13 +42,13 @@ async function playAnimation( world.sendMessage("Animation already playing"); return; } - let frameCount = frames.length; + const frameCount = frames.length; if (!force) { animationPlaying = true; } for (let i = 0; i < frameCount; i++) { - let frame = reverse ? frames[frameCount - i - 1] : frames[i]; + const frame = reverse ? frames[frameCount - i - 1] : frames[i]; await world .getDimension("overworld") .runCommandAsync( diff --git a/scripts/Commandeer/command/command.ts b/scripts/Commandeer/command/command.ts index 7a051d1..280d169 100644 --- a/scripts/Commandeer/command/command.ts +++ b/scripts/Commandeer/command/command.ts @@ -11,7 +11,7 @@ export class Command { } constructor(argv: string[], player: Player) { this.argv = (function* () { - for (let arg of argv) yield arg; + for (const arg of argv) yield arg; })(); this.__player = player; } @@ -83,13 +83,13 @@ export class Commands { public static register(prefix: string, command: string, commandFunction: (arg: Command) => void): void { if (prefix.startsWith("/")) throw Error("Unable to register slash commands."); world.beforeEvents.chatSend.subscribe((arg) => { - var argv = arg.message.split(/(".*?"|[^"\s]+)+(?=\s*|\s*$)/g).filter((e) => e.trim().length > 0); + const argv = arg.message.split(/(".*?"|[^"\s]+)+(?=\s*|\s*$)/g).filter((e) => e.trim().length > 0); if (argv[0] === `${prefix}${command}`) { arg.cancel = true; try { commandFunction(new Command(argv, arg.sender)); } catch (err) { - let { statusMessage } = JSON.parse(err as string); + const { statusMessage } = JSON.parse(err as string); console.error(err); arg.sender.sendMessage(`§c${statusMessage}`); } diff --git a/scripts/Commandeer/completionCondition/BlockCondition.ts b/scripts/Commandeer/completionCondition/BlockCondition.ts index cc10f5b..235475f 100644 --- a/scripts/Commandeer/completionCondition/BlockCondition.ts +++ b/scripts/Commandeer/completionCondition/BlockCondition.ts @@ -1,6 +1,5 @@ import { BlockType, Vector3, world } from "@minecraft/server"; import AbstractLevelCondition from "./AbstractCondition"; -import { Vector3ToString } from "../utils/vectorUtils"; class BlockCondition extends AbstractLevelCondition { position: Vector3; diff --git a/scripts/Commandeer/completionCondition/ButtonPushCondition.ts b/scripts/Commandeer/completionCondition/ButtonPushCondition.ts index 2ff976d..0a5ff6f 100644 --- a/scripts/Commandeer/completionCondition/ButtonPushCondition.ts +++ b/scripts/Commandeer/completionCondition/ButtonPushCondition.ts @@ -1,4 +1,4 @@ -import { BlockType, Vector3, world } from "@minecraft/server"; +import { Vector3, world } from "@minecraft/server"; import AbstractLevelCondition from "./AbstractCondition"; class ButtonPushCondition extends AbstractLevelCondition { diff --git a/scripts/Commandeer/level/abstractTrackFollowMission.ts b/scripts/Commandeer/level/abstractTrackFollowMission.ts index 83969a9..5f342e5 100644 --- a/scripts/Commandeer/level/abstractTrackFollowMission.ts +++ b/scripts/Commandeer/level/abstractTrackFollowMission.ts @@ -1,9 +1,9 @@ import { Vector3, world } from "@minecraft/server"; import Level from "./level"; import pupeteer from "../pupeteer"; -import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../utils/agentUtils"; +import { teleportAgent, isAgentAt, getAgentLocation } from "../utils/agentUtils"; import { startLevel } from "../utils/levelUtils"; -import { vector3, Vector3Add, Vector3ToCommandString } from "../utils/vectorUtils"; +import { vector3, Vector3Add } from "../utils/vectorUtils"; import { mindKeeper, CURRENT_LEVEL } from "../../main"; import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; @@ -37,9 +37,9 @@ class AbstractAgentTrackMission extends Level { let isComplete = false; let isOutOfBounds = false; - let agentPos = getAgentLocation(); - let blockLava = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -7, 0))); - let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); + const agentPos = getAgentLocation(); + const blockLava = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -7, 0))); + const blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); if ( blockLava && diff --git a/scripts/Commandeer/level/level.ts b/scripts/Commandeer/level/level.ts index 90797a4..a40c30b 100644 --- a/scripts/Commandeer/level/level.ts +++ b/scripts/Commandeer/level/level.ts @@ -1,20 +1,18 @@ -import { World } from "@minecraft/server"; - class Level { - levelCompleteCallback: Function; - levelCheckCallback: Function; - levelSetupCallback: Function; - levelUpdateCallback: Function; - levelResetCallback: Function; + levelCompleteCallback: VoidFunction; + levelCheckCallback: () => boolean; + levelSetupCallback: VoidFunction; + levelUpdateCallback: VoidFunction; + levelResetCallback: VoidFunction; isCompleted: boolean = false; isSetup: boolean = false; constructor( - levelSetupCallback: Function, - levelUpdateCallback: Function, - levelCompleteCallback: Function, - levelCheckCallback: Function, - levelResetCallback: Function = () => {} + levelSetupCallback: VoidFunction, + levelUpdateCallback: VoidFunction, + levelCompleteCallback: VoidFunction, + levelCheckCallback: () => boolean, + levelResetCallback: VoidFunction = () => {} ) { this.levelSetupCallback = levelSetupCallback; this.levelCompleteCallback = levelCompleteCallback; diff --git a/scripts/Commandeer/level/levelTypes.ts b/scripts/Commandeer/level/levelTypes.ts index 2db4f31..d03ae7b 100644 --- a/scripts/Commandeer/level/levelTypes.ts +++ b/scripts/Commandeer/level/levelTypes.ts @@ -1,4 +1,4 @@ -import { BlockType, Vector3, world, World } from "@minecraft/server"; +import { Vector3, world, World } from "@minecraft/server"; export type blockCondition = { block: string; @@ -14,7 +14,7 @@ export type blockCondition = { * @throws Throws an error if there is no lever at the specified position. */ export function leverOn(world: World, position: Vector3): boolean { - let lever = world.getDimension("overworld").getBlock(position); + const lever = world.getDimension("overworld").getBlock(position); if (!(lever?.typeId == "minecraft:lever")) { throw new Error(`No lever at ${position}`); } @@ -46,7 +46,7 @@ export type LevelNoGoZone = { export const checkBlockCondition = (condition: LevelBlockCondition): boolean => { let isComplete: boolean = true; condition.conditions.forEach((condition) => { - let block = world.getDimension("overworld").getBlock(condition.position); + const block = world.getDimension("overworld").getBlock(condition.position); if (block!.typeId != condition.block) { isComplete = false; } diff --git a/scripts/Commandeer/mindKeeper.ts b/scripts/Commandeer/mindKeeper.ts index a48841f..98040c1 100644 --- a/scripts/Commandeer/mindKeeper.ts +++ b/scripts/Commandeer/mindKeeper.ts @@ -75,10 +75,11 @@ class Mindkeeper { for (let i = 0; i < this.registerdStores.length; i++) { let isAlreadyDefined = true; try { - let test = this.world.getDynamicProperty(this.registerdStores[i].getName()); + const test = this.world.getDynamicProperty(this.registerdStores[i].getName()); if (test === undefined) { isAlreadyDefined = false; } + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e) { isAlreadyDefined = false; } @@ -125,12 +126,13 @@ class Mindkeeper { */ get(store: string): string | number | boolean | Vector3 | undefined { try { - let data = this.world.getDynamicProperty(store); + const data = this.world.getDynamicProperty(store); if (data === undefined) { this.world.sendMessage(`Store ${store} is not defined`); return undefined; } return data; + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e) { // this.world.sendMessage(`Store ${store} is not defined`); return undefined; @@ -142,7 +144,7 @@ class Mindkeeper { * @param store The name of the store. */ increment(store: string): void { - let data = this.get(store); + const data = this.get(store); if (typeof data === "number") { this.set(store, data + 1); } @@ -155,6 +157,7 @@ class Mindkeeper { private secondWarning = false; chatCommands(event: ChatSendAfterEvent) { const command = event.message.split(" ")[0]; + // eslint-disable-next-line @typescript-eslint/no-unused-vars const args = event.message.split(" ").slice(1); if (command === "!get") { @@ -173,9 +176,8 @@ class Mindkeeper { this.world.sendMessage(`Please provide a value to set for ${store}`); return; } - const type = event.message.split(" ")[3]; - let actualType = this.getStores() + const actualType = this.getStores() .find((s) => s.getName() === store) ?.getType(); @@ -195,10 +197,11 @@ class Mindkeeper { } this.set(store, Number(value)); break; - case StoreType.boolean: + case StoreType.boolean: { const ActualValue = value.toLowerCase(); this.set(store, ActualValue === "true"); break; + } } this.world.sendMessage(`Value of ${store} is ${value}`); } diff --git a/scripts/Commandeer/nextLevel.ts b/scripts/Commandeer/nextLevel.ts index 98a0a9d..eb6f326 100644 --- a/scripts/Commandeer/nextLevel.ts +++ b/scripts/Commandeer/nextLevel.ts @@ -1,7 +1,10 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ class NextLevel { currentState = 0; + // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type states: Array = []; + // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type constructor(states: Array) { this.states = states; } diff --git a/scripts/Commandeer/pupeteer.ts b/scripts/Commandeer/pupeteer.ts index 8e2ad9c..151ef61 100644 --- a/scripts/Commandeer/pupeteer.ts +++ b/scripts/Commandeer/pupeteer.ts @@ -6,7 +6,6 @@ import { TicksPerSecond, TitleDisplayOptions, Vector3, - World, system, world, } from "@minecraft/server"; @@ -46,7 +45,7 @@ class Pupeteer { static setTitleTimed(message: string, duration: number): void { world.getPlayers().forEach((player) => { - let options: TitleDisplayOptions = { + const options: TitleDisplayOptions = { fadeInDuration: 20, fadeOutDuration: 20, stayDuration: duration * TicksPerSecond, @@ -88,11 +87,11 @@ class Pupeteer { static testForLocation(location: Vector3, radius: number): boolean { let isPlayerInArea = false; world.getPlayers().forEach((player) => { - let dx = location.x - player.location.x; - let dy = location.y - player.location.y; - let dz = location.z - player.location.z; + const dx = location.x - player.location.x; + const dy = location.y - player.location.y; + const dz = location.z - player.location.z; - let distance = Math.sqrt(dx * dx + dy * dy + dz * dz); + const distance = Math.sqrt(dx * dx + dy * dy + dz * dz); if (distance < radius) { isPlayerInArea = true; } diff --git a/scripts/Commandeer/trail/trailEngine.ts b/scripts/Commandeer/trail/trailEngine.ts index 3df6b80..84d3f11 100644 --- a/scripts/Commandeer/trail/trailEngine.ts +++ b/scripts/Commandeer/trail/trailEngine.ts @@ -1,5 +1,4 @@ -import { MolangVariableMap, Vector3, world } from "@minecraft/server"; -import { Vector3Add } from "../utils/vectorUtils"; +import { MolangVariableMap, Vector3 } from "@minecraft/server"; import { TrailType } from "./trailTypes"; import { PARTICLES, spawnParticle } from "../utils/particleUtils"; @@ -14,10 +13,12 @@ class TrailPoint { spawn() { // let spawnPosition: Vector3 = Vector3Add(this.postion, { x: 0.5, y: 0.5, z: 0.5 }); - let spawnPosition: Vector3 = this.postion; + const spawnPosition: Vector3 = this.postion; try { spawnParticle(spawnPosition, PARTICLES.balloon_gas_particle, new MolangVariableMap()); - } catch (e) {} + } catch (error) { + console.error("Error spawning particle", error); + } } } @@ -54,7 +55,6 @@ class Trail { if (this.currentParticleCounter >= this.nextParticleTimer) { this.currentParticleCounter = 0; //wrapindex is in how many segments the trail is divided into - let pointsPerInterval = this.wrapIndex > 0 ? this.calculatedLength / this.wrapIndex : 0; this.points .filter((point) => { if (this.wrapIndex > 0) { @@ -68,7 +68,7 @@ class Trail { }); this.currentPoint++; - let actualLength = this.wrapIndex > 0 ? this.wrapIndex : this.calculatedLength; + const actualLength = this.wrapIndex > 0 ? this.wrapIndex : this.calculatedLength; if (this.currentPoint >= actualLength) { this.currentPoint = 0; } diff --git a/scripts/Commandeer/trail/trailMaker.ts b/scripts/Commandeer/trail/trailMaker.ts index ddf1a59..c130e94 100644 --- a/scripts/Commandeer/trail/trailMaker.ts +++ b/scripts/Commandeer/trail/trailMaker.ts @@ -1,7 +1,6 @@ import { Block, ChatSendAfterEvent, - EntityInventoryComponent, ItemStack, ItemUseOnBeforeEvent, MolangVariableMap, @@ -14,6 +13,7 @@ import { spawnParticle } from "../utils/particleUtils"; import Pupeteer from "../pupeteer"; import Chalk from "../chalk"; +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace TrailMaker { export class Maker { currentTrail: Trail; diff --git a/scripts/Commandeer/utils/agentUtils.ts b/scripts/Commandeer/utils/agentUtils.ts index db4c967..a672967 100644 --- a/scripts/Commandeer/utils/agentUtils.ts +++ b/scripts/Commandeer/utils/agentUtils.ts @@ -1,17 +1,15 @@ import { Entity, Vector3, world } from "@minecraft/server"; -import { Vector3Add, Vector3ToString, vector3 } from "./vectorUtils"; +import { Vector3Add, vector3 } from "./vectorUtils"; import { mindKeeper } from "../../main"; //Make a facing with vector3 -type Facing = Vector3; - function teleportAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void { if (facing == vector3(0, 0, 0)) { world .getDimension("overworld") .runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`); } else { - let facing2 = Vector3Add(position, facing); + const facing2 = Vector3Add(position, facing); world .getDimension("overworld") .runCommand( @@ -38,13 +36,13 @@ function isAgentAt(position: Vector3): boolean { } function getAgent(): Entity { - let agent = world.getEntity(mindKeeper.get("agentid") as string); + const agent = world.getEntity(mindKeeper.get("agentid") as string); return agent!; } function getAgentLocation(): Vector3 { let agentLocation: Vector3 = vector3(0, 0, 0); - let agent = world.getEntity(mindKeeper.get("agentid") as string); + const agent = world.getEntity(mindKeeper.get("agentid") as string); agentLocation = agent!.location; return agentLocation; diff --git a/scripts/Commandeer/utils/arrow.ts b/scripts/Commandeer/utils/arrow.ts index 74025bc..9b14af0 100644 --- a/scripts/Commandeer/utils/arrow.ts +++ b/scripts/Commandeer/utils/arrow.ts @@ -1,8 +1,8 @@ -import { MolangVariableMap, Vector3, world } from "@minecraft/server"; +import { MolangVariableMap, Vector3 } from "@minecraft/server"; import { Vector3Add, vector3 } from "./vectorUtils"; import { PARTICLES, spawnParticle } from "./particleUtils"; -let arrowTemplate: Vector3[] = [ +const arrowTemplate: Vector3[] = [ vector3(0, 0, 0), vector3(1, 1, 0), @@ -21,18 +21,16 @@ let arrowTemplate: Vector3[] = [ vector3(0, 5, 0), ]; -let offset: Vector3 = vector3(0, 0, 0); - let angleOffset = 0; let heightBobbing = 0; let tickCounter = 0; function rotate(pos: Vector3, angle: number) { - let x = pos.x; - let z = pos.z; + const x = pos.x; + const z = pos.z; - let newX = x * Math.cos(angle) - z * Math.sin(angle); - let newZ = x * Math.sin(angle) + z * Math.cos(angle); + const newX = x * Math.cos(angle) - z * Math.sin(angle); + const newZ = x * Math.sin(angle) + z * Math.cos(angle); return vector3(newX, pos.y, newZ); } @@ -49,10 +47,9 @@ function drawArrow(offsetPos: Vector3) { if (tickCounter % 2 == 0) { angleOffset += 0.1; heightBobbing += 0.3; - offset = vector3(46.5, 75, 220.5); arrowTemplate.forEach((pos) => { - let rotatedPos = rotate(pos, angleOffset); - let finalPos = Vector3Add(offsetPos, rotatedPos); + const rotatedPos = rotate(pos, angleOffset); + const finalPos = Vector3Add(offsetPos, rotatedPos); finalPos.y += Math.sin(heightBobbing) / 2; spawnParticle(finalPos, PARTICLES.point, particleData); }); diff --git a/scripts/Commandeer/utils/levelUtils.ts b/scripts/Commandeer/utils/levelUtils.ts index c9069ef..dea5a99 100644 --- a/scripts/Commandeer/utils/levelUtils.ts +++ b/scripts/Commandeer/utils/levelUtils.ts @@ -1,4 +1,4 @@ -import { BlockType, BlockTypes, BlockVolume, Vector3, world } from "@minecraft/server"; +import { BlockVolume, Vector3, world } from "@minecraft/server"; import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; type Wall = { @@ -7,18 +7,17 @@ type Wall = { }; function clearWall(wall: Wall) { - let volume: BlockVolume = new BlockVolume(wall.startPos, wall.endPos); + const volume: BlockVolume = new BlockVolume(wall.startPos, wall.endPos); world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.Air); } function fillWall(wall: Wall, block: string) { - let volume: BlockVolume = new BlockVolume(wall.startPos, wall.endPos); + const volume: BlockVolume = new BlockVolume(wall.startPos, wall.endPos); world.getDimension("overworld").fillBlocks(volume, block); } function startLevel(commandBlockPos: Vector3) { - let volume: BlockVolume = new BlockVolume(commandBlockPos, commandBlockPos); + const volume: BlockVolume = new BlockVolume(commandBlockPos, commandBlockPos); world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock); } -BlockTypes; export { Wall, clearWall, fillWall, startLevel }; diff --git a/scripts/Commandeer/utils/particleUtils.ts b/scripts/Commandeer/utils/particleUtils.ts index 91ca4f9..0ee4564 100644 --- a/scripts/Commandeer/utils/particleUtils.ts +++ b/scripts/Commandeer/utils/particleUtils.ts @@ -172,13 +172,13 @@ class ParticleColumn { generatePoints() { for (let layer = 0; layer < this.layerCount; layer++) { - let layerRadius = this.radius - layer; + const layerRadius = this.radius - layer; for (let point = 0; point < this.pointsPerLayer; point++) { - let angle = (point / this.pointsPerLayer) * (Math.PI * 2); + const angle = (point / this.pointsPerLayer) * (Math.PI * 2); this.anglePerLayer.push(angle); - let x = Math.cos(angle) * layerRadius; - let z = Math.sin(angle) * layerRadius; - let y = layer; + const x = Math.cos(angle) * layerRadius; + const z = Math.sin(angle) * layerRadius; + const y = layer; this.points.push(Vector3Add(this.pos, vector3(x, y, z))); } } @@ -186,20 +186,17 @@ class ParticleColumn { update() { //update each point by increasing the angle by the speed - let layerCount = 0; - let pointCount = 0; this.tickCounter++; if (this.tickCounter % 2 == 0) { this.points.forEach((point, index) => { - let layer = Math.floor(index / this.pointsPerLayer); + const layer = Math.floor(index / this.pointsPerLayer); let angle = this.anglePerLayer[index]; angle += this.speed * (layer / 5); this.anglePerLayer[index] = angle; - let layerRadius = this.radius - Math.floor(index / this.pointsPerLayer); - let calcAngle = angle; - let x = Math.cos(calcAngle) * this.radius; - let z = Math.sin(calcAngle) * this.radius; - let y = Math.floor(index / this.pointsPerLayer) + (this.tickCounter % 2); + const calcAngle = angle; + const x = Math.cos(calcAngle) * this.radius; + const z = Math.sin(calcAngle) * this.radius; + const y = Math.floor(index / this.pointsPerLayer) + (this.tickCounter % 2); this.points[index] = Vector3Add(this.pos, vector3(x, y, z)); }); } diff --git a/scripts/Commandeer/utils/waitUtil.ts b/scripts/Commandeer/utils/waitUtil.ts index 8809e0d..5888309 100644 --- a/scripts/Commandeer/utils/waitUtil.ts +++ b/scripts/Commandeer/utils/waitUtil.ts @@ -1,13 +1,15 @@ import { system } from "@minecraft/server"; +// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type function delayedRun(callback: Function, delay: number) { - let timer = system.runTimeout(() => { + const timer = system.runTimeout(() => { callback(); system.clearRun(timer); }, delay); } function delay(t: number) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any return new Promise((r: any) => { system.runTimeout(r, t); }); diff --git a/scripts/levelConditions/levelIntro.ts b/scripts/levelConditions/levelIntro.ts index d13afcd..a5da14d 100644 --- a/scripts/levelConditions/levelIntro.ts +++ b/scripts/levelConditions/levelIntro.ts @@ -1,8 +1,8 @@ -import { LevelBlockCondition, LevelLeverCondition } from "../Commandeer/level/levelTypes"; +import { LevelBlockCondition } from "../Commandeer/level/levelTypes"; import { vector3 } from "../Commandeer/utils/vectorUtils"; import { MinecraftBlockTypes } from "../vanilla-data/mojang-block"; -let levelIntroConditions: LevelBlockCondition = { +const levelIntroConditions: LevelBlockCondition = { conditions: [ { block: MinecraftBlockTypes.EmeraldBlock, diff --git a/scripts/levelConditions/mission2part1Conditions.ts b/scripts/levelConditions/mission2part1Conditions.ts index 4f8a82f..73e5fd7 100644 --- a/scripts/levelConditions/mission2part1Conditions.ts +++ b/scripts/levelConditions/mission2part1Conditions.ts @@ -1,8 +1,8 @@ -import { LevelBlockCondition, LevelLeverCondition } from "../Commandeer/level/levelTypes"; +import { LevelBlockCondition } from "../Commandeer/level/levelTypes"; import { vector3 } from "../Commandeer/utils/vectorUtils"; import { MinecraftBlockTypes } from "../vanilla-data/mojang-block"; -let mission2part1Conditions: LevelBlockCondition = { +const mission2part1Conditions: LevelBlockCondition = { conditions: [ { position: vector3(2455, -2, 11), diff --git a/scripts/levelConditions/mission2part2Conditions.ts b/scripts/levelConditions/mission2part2Conditions.ts index c458bd8..78f6b19 100644 --- a/scripts/levelConditions/mission2part2Conditions.ts +++ b/scripts/levelConditions/mission2part2Conditions.ts @@ -1,8 +1,8 @@ -import { LevelBlockCondition, LevelLeverCondition } from "../Commandeer/level/levelTypes"; +import { LevelBlockCondition } from "../Commandeer/level/levelTypes"; import { vector3 } from "../Commandeer/utils/vectorUtils"; import { MinecraftBlockTypes } from "../vanilla-data/mojang-block"; -let mission2part2Conditions: LevelBlockCondition = { +const mission2part2Conditions: LevelBlockCondition = { conditions: [ { position: vector3(2467, -2, 11), diff --git a/scripts/levels/levelIntro.ts b/scripts/levels/levelIntro.ts index 98ec525..04bff8d 100644 --- a/scripts/levels/levelIntro.ts +++ b/scripts/levels/levelIntro.ts @@ -1,8 +1,5 @@ -import { BlockType, Vector3, world } from "@minecraft/server"; +import { Vector3, world } from "@minecraft/server"; import Level from "../Commandeer/level/level"; -import { leverOn } from "../Commandeer/level/levelTypes"; -import { teleportAgent, isAgentAt } from "../Commandeer/utils/agentUtils"; -import { startLevel } from "../Commandeer/utils/levelUtils"; import { vector3 } from "../Commandeer/utils/vectorUtils"; import { levelIntroConditions } from "../levelConditions/levelIntro"; import { CURRENT_LEVEL, mindKeeper } from "../main"; @@ -26,8 +23,7 @@ const blockPositions: Vector3[] = [ vector3(2464, 12, 108), ]; -let currentBlockSequence: string[] = []; -let currentBlockSeuqenceIndex: number[] = []; +const currentBlockSequence: string[] = []; const blockCycle: string[] = [ // MinecraftBlockTypes.RedstoneBlock, @@ -37,7 +33,7 @@ const blockCycle: string[] = [ MinecraftBlockTypes.LapisBlock, ]; -let buttonPressed: boolean[] = buttonPositions.map(() => false); +const buttonPressed: boolean[] = buttonPositions.map(() => false); const levelIntro: Level = new Level( () => { @@ -46,9 +42,9 @@ const levelIntro: Level = new Level( // startLevel(levelIntroCommandBlockPos); // teleportAgent(levelIntroStartPosition); blockPositions.forEach((pos) => { - let block = world.getDimension("overworld").getBlock(pos); - let index = blockPositions.indexOf(pos); - let blockType = block!.type; + const block = world.getDimension("overworld").getBlock(pos); + const index = blockPositions.indexOf(pos); + const blockType = block!.type; currentBlockSequence[index] = blockType.id; }); }, @@ -56,21 +52,21 @@ const levelIntro: Level = new Level( Pupeteer.setActionBar("%message.intro.make"); buttonPositions.forEach((pos) => { - let block = world.getDimension("overworld").getBlock(pos); + const block = world.getDimension("overworld").getBlock(pos); if (!block) return; - let index = buttonPositions.indexOf(pos); - let prevState = buttonPressed[index]; - let currentState = block!.getRedstonePower()! > 0; + const index = buttonPositions.indexOf(pos); + const prevState = buttonPressed[index]; + const currentState = block!.getRedstonePower()! > 0; if (currentState && !prevState) { buttonPressed[index] = true; //NextBlock - let nextBlock = currentBlockSequence[index]; + const nextBlock = currentBlockSequence[index]; let nextIndex = blockCycle.indexOf(nextBlock); nextIndex = (nextIndex + 1) % blockCycle.length; currentBlockSequence[index] = blockCycle[nextIndex]; //Update the block - let blockPos = blockPositions[index]; + const blockPos = blockPositions[index]; world.getDimension("overworld").getBlock(blockPos)!.setType(blockCycle[nextIndex]); } @@ -87,13 +83,11 @@ const levelIntro: Level = new Level( mindKeeper.increment(CURRENT_LEVEL); }, () => { - let counter = 0; let isComplete = true; levelIntroConditions.conditions.forEach((condition) => { - let blockInworld = world.getDimension("overworld").getBlock(condition.position); + const blockInworld = world.getDimension("overworld").getBlock(condition.position); if (blockInworld?.type.id !== condition.block) { isComplete = false; - counter++; } }); if (isComplete) { @@ -103,8 +97,8 @@ const levelIntro: Level = new Level( }, () => { blockPositions.forEach((pos) => { - let block = world.getDimension("overworld").getBlock(pos); - let randomBlock = blockCycle[Math.floor(Math.random() * blockCycle.length)]; + const block = world.getDimension("overworld").getBlock(pos); + const randomBlock = blockCycle[Math.floor(Math.random() * blockCycle.length)]; block!.setType(randomBlock); }); } diff --git a/scripts/levels/mission1/mission1part1.ts b/scripts/levels/mission1/mission1part1.ts index 6a63b03..fac7701 100644 --- a/scripts/levels/mission1/mission1part1.ts +++ b/scripts/levels/mission1/mission1part1.ts @@ -9,7 +9,7 @@ const level1StartPosition: Vector3 = vector3(2451, -2, 57); const level1AgentFacing: Vector3 = vector3(0, 0, -1); const Level1EndPosition: Vector3 = vector3(2451, -2, 41); -let mission1part1: AbstractAgentTrackMission = new AbstractAgentTrackMission( +const mission1part1: AbstractAgentTrackMission = new AbstractAgentTrackMission( "mission1part1", level1StartPosition, level1AgentFacing, diff --git a/scripts/levels/mission1/mission1part2.ts b/scripts/levels/mission1/mission1part2.ts index 020af7c..14996cc 100644 --- a/scripts/levels/mission1/mission1part2.ts +++ b/scripts/levels/mission1/mission1part2.ts @@ -8,9 +8,7 @@ const level2StartPosition: Vector3 = vector3(2446, -2, 40); const level2AgentFacing: Vector3 = vector3(1, 0, 0); const Level2EndPosition: Vector3 = vector3(2446, -2, 30); -const level2ResetCommandBlockPos: Vector3 = vector3(56, 68, 211); - -let mission1part2: AbstractAgentTrackMission = new AbstractAgentTrackMission( +const mission1part2: AbstractAgentTrackMission = new AbstractAgentTrackMission( "mission1part2", level2StartPosition, level2AgentFacing, diff --git a/scripts/levels/mission1/mission1part3.ts b/scripts/levels/mission1/mission1part3.ts index f8fc624..fc723e2 100644 --- a/scripts/levels/mission1/mission1part3.ts +++ b/scripts/levels/mission1/mission1part3.ts @@ -7,9 +7,7 @@ const level3AgentFacing: Vector3 = vector3(0, 0, -1); const level3StartPosition: Vector3 = vector3(2447, -2, 30); const level3EndPosition: Vector3 = vector3(2451, -2, 18); -const level3ResetCommandBlockPos: Vector3 = vector3(56, 68, 211); - -let mission1part3: AbstractAgentTrackMission = new AbstractAgentTrackMission( +const mission1part3: AbstractAgentTrackMission = new AbstractAgentTrackMission( "mission1part3", level3StartPosition, level3AgentFacing, diff --git a/scripts/levels/mission2/mission2part1.ts b/scripts/levels/mission2/mission2part1.ts index 7f06ce5..2092b3b 100644 --- a/scripts/levels/mission2/mission2part1.ts +++ b/scripts/levels/mission2/mission2part1.ts @@ -1,8 +1,8 @@ import { Vector3, world } from "@minecraft/server"; import Level from "../../Commandeer/level/level"; import pupeteer from "../../Commandeer/pupeteer"; -import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils"; -import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils"; +import { teleportAgent, isAgentAt } from "../../Commandeer/utils/agentUtils"; +import { vector3 } from "../../Commandeer/utils/vectorUtils"; import { mindKeeper, CURRENT_LEVEL } from "../../main"; import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; import { mission2part1Conditions } from "../../levelConditions/mission2part1Conditions"; @@ -38,9 +38,9 @@ const mission2part1: Level = new Level( //Check if the agent is at the end position //than check if the level is correct let isComplete = false; - let isAgentAtEndPosition = isAgentAt(mission2part1EndPosition); + const isAgentAtEndPosition = isAgentAt(mission2part1EndPosition); if (isAgentAtEndPosition) { - let isCorrect = checkBlockCondition(mission2part1Conditions); + const isCorrect = checkBlockCondition(mission2part1Conditions); if (isCorrect) { isComplete = true; diff --git a/scripts/levels/mission2/mission2part2.ts b/scripts/levels/mission2/mission2part2.ts index bb979f5..1807387 100644 --- a/scripts/levels/mission2/mission2part2.ts +++ b/scripts/levels/mission2/mission2part2.ts @@ -1,8 +1,8 @@ import { Vector3, world } from "@minecraft/server"; import Level from "../../Commandeer/level/level"; import pupeteer from "../../Commandeer/pupeteer"; -import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils"; -import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils"; +import { teleportAgent, isAgentAt } from "../../Commandeer/utils/agentUtils"; +import { vector3 } from "../../Commandeer/utils/vectorUtils"; import { mindKeeper, CURRENT_LEVEL } from "../../main"; import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; import { checkBlockCondition } from "../../Commandeer/level/levelTypes"; @@ -38,9 +38,9 @@ const mission2part2: Level = new Level( //Check if the agent is at the end position //than check if the level is correct let isComplete = false; - let isAgentAtEndPosition = isAgentAt(mission2part2EndPosition); + const isAgentAtEndPosition = isAgentAt(mission2part2EndPosition); if (isAgentAtEndPosition) { - let isCorrect = checkBlockCondition(mission2part2Conditions); + const isCorrect = checkBlockCondition(mission2part2Conditions); if (isCorrect) { isComplete = true; diff --git a/scripts/levels/mission3/mission3part3.ts b/scripts/levels/mission3/mission3part3.ts index ed2e0fe..0253ffd 100644 --- a/scripts/levels/mission3/mission3part3.ts +++ b/scripts/levels/mission3/mission3part3.ts @@ -8,7 +8,7 @@ const level1StartPosition: Vector3 = vector3(2487, -2, 36); const level1AgentFacing: Vector3 = vector3(1, 0, 0); const Level1EndPosition: Vector3 = vector3(2488, -2, 57); -let mission3part2: AbstractAgentTrackMission = new AbstractAgentTrackMission( +const mission3part2: AbstractAgentTrackMission = new AbstractAgentTrackMission( "mission3part2", level1StartPosition, level1AgentFacing, diff --git a/scripts/main.ts b/scripts/main.ts index e9cbe84..434cbe0 100644 --- a/scripts/main.ts +++ b/scripts/main.ts @@ -5,7 +5,6 @@ import { MolangVariableMap, ChatSendAfterEvent, Dimension, - TicksPerSecond, BlockVolume, ScriptEventCommandMessageAfterEvent, } from "@minecraft/server"; @@ -32,23 +31,16 @@ import mission1part1 from "./levels/mission1/mission1part1"; import mission1part2 from "./levels/mission1/mission1part2"; import mission1part3 from "./levels/mission1/mission1part3"; import mission2part1 from "./levels/mission2/mission2part1"; -import { mission2part1Conditions } from "./levelConditions/mission2part1Conditions"; import mission2part2 from "./levels/mission2/mission2part2"; -import { mission2part2Conditions } from "./levelConditions/mission2part2Conditions"; +// eslint-disable-next-line @typescript-eslint/no-unused-vars import Chalk from "./Commandeer/chalk"; import mission3part1 from "./levels/mission3/mission3part1"; import mission3part2 from "./levels/mission3/mission3part2"; import mission3part3 from "./levels/mission3/mission3part3"; import { runEntityEventOnTag, setNPCDialog } from "./Commandeer/utils/entityUtils"; -import { - animationPlaying, - ClonePos, - playAnimation, - setAmimationPlaying, - SetFrame, -} from "./Commandeer/animations/animation"; +import { animationPlaying, playAnimation, setAmimationPlaying, SetFrame } from "./Commandeer/animations/animation"; import { doNothingStupidTSIWantFilesNotAGiantAssMainFile } from "./triggers"; -import { clearWall, fillWall, startLevel, Wall } from "./Commandeer/utils/levelUtils"; +import { fillWall, startLevel, Wall } from "./Commandeer/utils/levelUtils"; import { drawArrow } from "./Commandeer/utils/arrow"; import { glassBreakingFrames, @@ -71,7 +63,7 @@ export { mindKeeper, CURRENT_LEVEL, triggerManager, PREFIX, DEVELOPER_MODE }; // loadTriggers(); // loadCommands(); -triggerManager.RegisterFunctionTrigger("resetPath", (event) => { +triggerManager.RegisterFunctionTrigger("resetPath", () => { resetLightPath(); }); @@ -79,19 +71,16 @@ async function resetLightPath() { world.getDimension("overworld").runCommand("/fill 2467 9 87 2468 9 105 air"); } -let introToGlassBreakTimer: number = 0; -const glassBreakTime = 1 * TicksPerSecond; - let isIntroToLevel1Sqeuence = false; -let introTrail: Trail = new Trail("introTrail", 2, 25 / 5); +const introTrail: Trail = new Trail("introTrail", 2, 25 / 5); introTrail.fromTrail(startTrail); -let introToLevelTrail = new Trail("introToLevelTrail", 2, 74 / 2); +const introToLevelTrail = new Trail("introToLevelTrail", 2, 74 / 2); introToLevelTrail.fromTrail(IntroToLevel1Trail); //fill 2466 0 48 2469 -1 48 -let bilalBlock: Wall = { +const bilalBlock: Wall = { startPos: vector3(2466, 0, 48), endPos: vector3(2469, -1, 48), }; @@ -101,10 +90,11 @@ let prevCurrentLevel: number = 0; let isBreaking: boolean = false; -let airlockParticles = new ParticleColumn(vector3(2475.5, 10, 92), 2, 2, 3, 0.5, PARTICLES.point); +const airlockParticles = new ParticleColumn(vector3(2475.5, 10, 92), 2, 2, 3, 0.5, PARTICLES.point); -let level1Particles = new ParticleColumn(vector3(2455, -1, 49), 1.1, 2, 4, 0.7, PARTICLES.balloon_gas_particle); +const level1Particles = new ParticleColumn(vector3(2455, -1, 49), 1.1, 2, 4, 0.7, PARTICLES.balloon_gas_particle); airlockParticles.generatePoints(); +level1Particles.generatePoints(); let tickCounter = 0; system.runInterval(() => { tickCounter++; @@ -242,27 +232,32 @@ system.runInterval(() => { } }); -triggerManager.RegisterFunctionTrigger("lightPath", (event) => { +triggerManager.RegisterFunctionTrigger("lightPath", () => { lightUpPath(); }); +Commands.register(PREFIX, "k3isgeweldig", () => { + world.sendMessage("K3 is geweldig! - Bram"); + DEVELOPER_MODE = true; +}); + //fill 2467 9 87 2468 9 105 redstone_block async function lightUpPath() { - let overworld: Dimension = world.getDimension("overworld"); - let pos1 = vector3(2467, 9, 87); - let pos2 = vector3(2468, 9, 105); + const overworld: Dimension = world.getDimension("overworld"); + const pos1 = vector3(2467, 9, 87); + const pos2 = vector3(2468, 9, 105); for (let z = pos2.z; z >= pos1.z; z--) { - let volume: BlockVolume = new BlockVolume(vector3(pos1.x, pos1.y, z), vector3(pos1.x + 1, pos1.y, z)); + const volume: BlockVolume = new BlockVolume(vector3(pos1.x, pos1.y, z), vector3(pos1.x + 1, pos1.y, z)); overworld.fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock); await delay(4); } // let pos2 = vector3(2468, 9, 105); } -let triggerAlarm = () => runEntityEventOnTag("alarmLights", "cc:add_rotating"); +const triggerAlarm = () => runEntityEventOnTag("alarmLights", "cc:add_rotating"); -let resetAlarm = () => runEntityEventOnTag("alarmLights", "cc:remove_rotating"); +const resetAlarm = () => runEntityEventOnTag("alarmLights", "cc:remove_rotating"); world.afterEvents.worldInitialize.subscribe(() => { mindKeeper.registerStore(CURRENT_LEVEL, StoreType.number); @@ -283,11 +278,11 @@ world.beforeEvents.itemUseOn.subscribe((event) => { }); async function randomExplosions() { - let pos1 = vector3(2465, 10, 82); - let pos2 = vector3(2471, 18, 90); + const pos1 = vector3(2465, 10, 82); + const pos2 = vector3(2471, 18, 90); for (let i = 0; i < 5; i++) { - let pos = vector3( + const pos = vector3( pos1.x + Math.random() * (pos2.x - pos1.x), pos1.y + Math.random() * (pos2.y - pos1.y), pos1.z + Math.random() * (pos2.z - pos1.z) @@ -299,14 +294,6 @@ async function randomExplosions() { } } -let originalDoorPos = vector3(2465, 10, 82); -let closedDoorPos = vector3(2465, 10, 82); -let openDoorPos = vector3(2465, 10, 82); - -let doorSize = vector3(7, 7, 7); -///clone 2463 -10 81 2470 -3 87 2463 10 81 -///clone 2463 -30 81 2470 -23 87 2463 10 81 - function blowUpDoor() { if (DEVELOPER_MODE) { world.sendMessage("Blowing up door"); @@ -369,7 +356,7 @@ world.afterEvents.chatSend.subscribe(async (event: ChatSendAfterEvent) => { system.afterEvents.scriptEventReceive.subscribe((event) => { if (event.id == "cc:getId") { - let id = event.message; + const id = event.message; if (DEVELOPER_MODE) { world.sendMessage("Script got the id " + id); } @@ -412,13 +399,13 @@ triggerManager.RegisterFunctionTrigger("tp", (event) => { // end center pos /setblock 2490 -12 118 // start center pos /setblock 2489 10 118 - let pos = vector3(2489, 10, 118); - let endPos = vector3(2490, -12, 118); + const pos = vector3(2489, 10, 118); + const endPos = vector3(2490, -12, 118); world.sendMessage(Vector3ToFancyString(Vector3Subtract(endPos, pos))); //Find offset and tp player to end pos + offset so its seamless - let playerPos = event.player.location; - let offset = Vector3Subtract(endPos, playerPos); - let finalPos = Vector3Add(pos, offset); + const playerPos = event.player.location; + const offset = Vector3Subtract(endPos, playerPos); + const finalPos = Vector3Add(pos, offset); event.player.teleport(finalPos); }); @@ -443,7 +430,7 @@ Commands.register(PREFIX, "info", (arg) => { world.sendMessage("-----------------"); }); -Commands.register(PREFIX, "kboom", (arg) => { +Commands.register(PREFIX, "kboom", () => { if (DEVELOPER_MODE) { (async () => { for (let i = 0; i < 10; i++) { @@ -455,20 +442,20 @@ Commands.register(PREFIX, "kboom", (arg) => { } }); -let openDoor = () => { +const openDoor = () => { runEntityEventOnTag("door", "cc:add_open"); if (DEVELOPER_MODE) { world.sendMessage("Opening door"); } }; -let closeDoor = () => { +const closeDoor = () => { runEntityEventOnTag("door", "cc:remove_open"); if (DEVELOPER_MODE) { world.sendMessage("Closing door"); } }; -Commands.register(PREFIX, "restore", (arg) => { +Commands.register(PREFIX, "restore", () => { restoreDoor(); }); @@ -490,26 +477,15 @@ enum AirLockChamberState { Empty, } -enum ExplosiveDoorState { - Closed, - Open, -} - let glassWindowState: GlassWindowState = GlassWindowState.Fixed; -let explosiveDoorState: ExplosiveDoorState = ExplosiveDoorState.Closed; const doorRoot: Vector3 = vector3(2465, 11, 94); -const glassWindowClonePos: ClonePos = { - point1: vector3(2465, 14, 94), - point2: vector3(2470, 11, 94), -}; - -Commands.register(PREFIX, "breakGlass", (arg) => { +Commands.register(PREFIX, "breakGlass", () => { breakGlassWindow(); glassWindowState = GlassWindowState.Broken; }); -Commands.register(PREFIX, "restoreGlass", (arg) => { +Commands.register(PREFIX, "restoreGlass", () => { restoreGlassWindow(); glassWindowState = GlassWindowState.Fixed; }); @@ -529,11 +505,11 @@ async function CycleAirLockWater(fill: boolean, delayTime: number) { return; } setAmimationPlaying(true); - let frameCount = AirLockWaterFrames.length; + const frameCount = AirLockWaterFrames.length; for (let i = 0; i < frameCount; i++) { - let frame = fill ? AirLockWaterFrames[i] : AirLockWaterFrames[frameCount - i - 1]; - let blockToFill = fill ? "minecraft:water" : "minecraft:air"; + const frame = fill ? AirLockWaterFrames[i] : AirLockWaterFrames[frameCount - i - 1]; + const blockToFill = fill ? "minecraft:water" : "minecraft:air"; await world .getDimension("overworld") .runCommandAsync( @@ -552,7 +528,7 @@ let chamberState: AirLockChamberState = AirLockChamberState.Full; //The airlock sequence is //Player enters FrontAirLockOutside //Front door opens -triggerManager.RegisterFunctionTrigger("FrontAirLockOutside", async (event) => { +triggerManager.RegisterFunctionTrigger("FrontAirLockOutside", async () => { if (chamberState == AirLockChamberState.Empty) { if (DEVELOPER_MODE) { world.sendMessage("Filling airlock"); @@ -567,7 +543,7 @@ triggerManager.RegisterFunctionTrigger("FrontAirLockOutside", async (event) => { } }); -triggerManager.RegisterFunctionTrigger("TempleFrontDoor", async (event) => { +triggerManager.RegisterFunctionTrigger("TempleFrontDoor", async () => { if (mindKeeper.get(CURRENT_LEVEL) == 8) { closeDoor(); } @@ -578,7 +554,7 @@ triggerManager.RegisterFunctionTrigger("TempleFrontDoor", async (event) => { } }); -triggerManager.RegisterFunctionTrigger("level1start", async (event) => { +triggerManager.RegisterFunctionTrigger("level1start", async () => { // This is after the player talks to suki if (mindKeeper.get(CURRENT_LEVEL) == 9) { mindKeeper.increment(CURRENT_LEVEL); @@ -589,7 +565,7 @@ triggerManager.RegisterFunctionTrigger("level1start", async (event) => { //Front door closes //Water drains //Back door opens -triggerManager.RegisterFunctionTrigger("FrontAirLockInside", async (event) => { +triggerManager.RegisterFunctionTrigger("FrontAirLockInside", async () => { if (frontAirlockState == AirLockState.Open) { await PlayFrontDoorCloseAnimation(); frontAirlockState = AirLockState.Closed; @@ -612,7 +588,7 @@ triggerManager.RegisterFunctionTrigger("FrontAirLockInside", async (event) => { //Player enters BackAirLockOutside //Back door closes -triggerManager.RegisterFunctionTrigger("BackAirLockOutside", async (event) => { +triggerManager.RegisterFunctionTrigger("BackAirLockOutside", async () => { if (backAirlockState == AirLockState.Open) { world.sendMessage("Closing back door"); await PlayBackDoorCloseAnimation(); @@ -622,8 +598,8 @@ triggerManager.RegisterFunctionTrigger("BackAirLockOutside", async (event) => { //#endregion Airlock -let activateAirlockLights = () => runEntityEventOnTag("airlockLights", "cc:add_rotating"); -let deactivateAirlockLights = () => runEntityEventOnTag("airlockLights", "cc:remove_rotating"); +const activateAirlockLights = () => runEntityEventOnTag("airlockLights", "cc:add_rotating"); +const deactivateAirlockLights = () => runEntityEventOnTag("airlockLights", "cc:remove_rotating"); function resetAirLock() { SetFrontDoorClosed(); @@ -636,42 +612,45 @@ function resetAirLock() { glassWindowState = GlassWindowState.Fixed; } -Commands.register(PREFIX, "resetAirlock", (arg) => resetAirLock); +Commands.register(PREFIX, "resetAirlock", () => resetAirLock); -let frontDoorRoot: Vector3 = vector3(2474, 11, 94); -let backDoorRoot: Vector3 = vector3(2472, 11, 100); +const frontDoorRoot: Vector3 = vector3(2474, 11, 94); +const backDoorRoot: Vector3 = vector3(2472, 11, 100); const frameDuration = 7; -let SetFrontDoorClosed = () => SetFrame(FrontAirLockOpenFrames[0], frontDoorRoot); -let SetFrontDoorOpen = () => SetFrame(FrontAirLockOpenFrames[FrontAirLockOpenFrames.length - 1], frontDoorRoot); -let PlayFrontDoorOpenAnimation = async () => { +const SetFrontDoorClosed = () => SetFrame(FrontAirLockOpenFrames[0], frontDoorRoot); +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const SetFrontDoorOpen = () => SetFrame(FrontAirLockOpenFrames[FrontAirLockOpenFrames.length - 1], frontDoorRoot); +const PlayFrontDoorOpenAnimation = async () => { playAnimation(FrontAirLockOpenFrames, frameDuration, false, frontDoorRoot); if (mindKeeper.get(CURRENT_LEVEL) == 0) { mindKeeper.increment(CURRENT_LEVEL); } }; -let PlayFrontDoorCloseAnimation = async () => playAnimation(FrontAirLockOpenFrames, frameDuration, true, frontDoorRoot); +const PlayFrontDoorCloseAnimation = async () => + playAnimation(FrontAirLockOpenFrames, frameDuration, true, frontDoorRoot); -let SetBackDoorClosed = () => SetFrame(BackAirLockOpenFrames[0], backDoorRoot); -let SetBackDoorOpen = () => SetFrame(BackAirLockOpenFrames[BackAirLockOpenFrames.length - 1], backDoorRoot); -let PlayBackDoorOpenAnimation = async () => playAnimation(BackAirLockOpenFrames, frameDuration, false, backDoorRoot); -let PlayBackDoorCloseAnimation = async () => +const SetBackDoorClosed = () => SetFrame(BackAirLockOpenFrames[0], backDoorRoot); +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const SetBackDoorOpen = () => SetFrame(BackAirLockOpenFrames[BackAirLockOpenFrames.length - 1], backDoorRoot); +const PlayBackDoorOpenAnimation = async () => playAnimation(BackAirLockOpenFrames, frameDuration, false, backDoorRoot); +const PlayBackDoorCloseAnimation = async () => playAnimation(BackAirLockOpenFrames, frameDuration, true, backDoorRoot, true); -let FillAirlockWater = async () => CycleAirLockWater(true, frameDuration / 1.5); -let EmptyAirlockWater = async () => { +const FillAirlockWater = async () => CycleAirLockWater(true, frameDuration / 1.5); +const EmptyAirlockWater = async () => { await CycleAirLockWater(false, frameDuration / 1.5); if (mindKeeper.get(CURRENT_LEVEL) == 1) { mindKeeper.increment(CURRENT_LEVEL); } }; -triggerManager.RegisterFunctionTrigger("openFrontDoor", (event) => PlayFrontDoorOpenAnimation()); -triggerManager.RegisterFunctionTrigger("closeFrontDoor", (event) => PlayFrontDoorCloseAnimation()); +triggerManager.RegisterFunctionTrigger("openFrontDoor", () => PlayFrontDoorOpenAnimation()); +triggerManager.RegisterFunctionTrigger("closeFrontDoor", () => PlayFrontDoorCloseAnimation()); -triggerManager.RegisterFunctionTrigger("openBackDoor", (event) => PlayBackDoorOpenAnimation()); -triggerManager.RegisterFunctionTrigger("closeBackDoor", (event) => PlayBackDoorCloseAnimation()); +triggerManager.RegisterFunctionTrigger("openBackDoor", () => PlayBackDoorOpenAnimation()); +triggerManager.RegisterFunctionTrigger("closeBackDoor", () => PlayBackDoorCloseAnimation()); -triggerManager.RegisterFunctionTrigger("fillAirlock", (event) => FillAirlockWater()); -triggerManager.RegisterFunctionTrigger("emptyAirlock", (event) => EmptyAirlockWater()); +triggerManager.RegisterFunctionTrigger("fillAirlock", () => FillAirlockWater()); +triggerManager.RegisterFunctionTrigger("emptyAirlock", () => EmptyAirlockWater()); diff --git a/scripts/trails/startTrail.ts b/scripts/trails/startTrail.ts index 1b4234c..b274175 100644 --- a/scripts/trails/startTrail.ts +++ b/scripts/trails/startTrail.ts @@ -1,8 +1,7 @@ -import { Vector3 } from "@minecraft/server"; import { TrailType } from "../Commandeer/trail/trailTypes"; import { vector3 } from "../Commandeer/utils/vectorUtils"; -let startTrail: TrailType = { +const startTrail: TrailType = { name: "startTrail", points: [ { index: 0, position: vector3(2493.5, 38.1, 88.5) }, diff --git a/scripts/triggers.ts b/scripts/triggers.ts index 7809141..f63b20c 100644 --- a/scripts/triggers.ts +++ b/scripts/triggers.ts @@ -1,9 +1,5 @@ -import { BlockVolume, Dimension, world } from "@minecraft/server"; -import { CCTrigger } from "./Commandeer/Trigger/CCTrigger"; -import { mindKeeper, triggerManager } from "./main"; -import { vector3 } from "./Commandeer/utils/vectorUtils"; -import { delay } from "./Commandeer/utils/waitUtil"; -import { MinecraftBlockTypes } from "./vanilla-data/mojang-block"; +import { world } from "@minecraft/server"; +import { triggerManager } from "./main"; function doNothingStupidTSIWantFilesNotAGiantAssMainFile() { triggerManager.RegisterFunctionTrigger("helpme", (event) => {