diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..203a6f4 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,42 @@ +import eslint from '@eslint/js'; +import tseslint from '@typescript-eslint/eslint-plugin'; +import tsparser from '@typescript-eslint/parser'; +import importPlugin from 'eslint-plugin-import'; + +export default [ + eslint.configs.recommended, + { + files: ['**/*.ts'], + languageOptions: { + parser: tsparser, + parserOptions: { + project: './tsconfig.json', + ecmaVersion: 2023, + }, + }, + plugins: { + '@typescript-eslint': tseslint, + 'import': importPlugin, + }, + rules: { + ...tseslint.configs['recommended'].rules, + ...tseslint.configs['recommended-requiring-type-checking'].rules, + 'import/order': ['error', { + 'groups': [ + 'builtin', + 'external', + 'internal', + ['parent', 'sibling'], + 'index', + 'object', + 'type' + ], + 'newlines-between': 'always', + 'alphabetize': { + 'order': 'asc', + 'caseInsensitive': true + } + }] + } + } +]; \ No newline at end of file diff --git a/mikro-orm.config.ts b/mikro-orm.config.ts index bd14c16..9f5ded4 100644 --- a/mikro-orm.config.ts +++ b/mikro-orm.config.ts @@ -1,7 +1,8 @@ // import { defineConfig, MariaDbDriver } from '@mikro-orm/mariadb' -import { defineConfig, MySqlDriver } from '@mikro-orm/mysql' import { Migrator } from '@mikro-orm/migrations' +import { defineConfig, MySqlDriver } from '@mikro-orm/mysql' import { TsMorphMetadataProvider } from '@mikro-orm/reflection' + import serverConfig from './src/application/config' export default defineConfig({ diff --git a/package-lock.json b/package-lock.json index ba1231e..a1b6987 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,6 +34,11 @@ "@types/jsonwebtoken": "^9.0.6", "@types/node": "^20.14.11", "@types/nodemailer": "^6.4.16", + "@typescript-eslint/eslint-plugin": "^8.18.2", + "@typescript-eslint/parser": "^8.18.2", + "eslint": "^9.17.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.31.0", "nodemon": "^3.1.4", "prettier": "^3.3.3", "prisma": "^6.1.0", @@ -470,6 +475,260 @@ "node": ">=18" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.5", + "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.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/config-array/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/core": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", + "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "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/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/@eslint/eslintrc/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/js": { + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", + "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", + "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.33.5", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", @@ -1194,6 +1453,13 @@ "@prisma/debug": "6.1.0" } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@rushstack/node-core-library": { "version": "5.10.1", "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.10.1.tgz", @@ -1436,6 +1702,13 @@ "@types/node": "*" } }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", @@ -1484,6 +1757,20 @@ "@types/node": "*" } }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/jsonwebtoken": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz", @@ -1557,6 +1844,300 @@ "@types/send": "*" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.2.tgz", + "integrity": "sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/type-utils": "8.18.2", + "@typescript-eslint/utils": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", + "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", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.2.tgz", + "integrity": "sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/typescript-estree": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", + "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", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.2.tgz", + "integrity": "sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2" + }, + "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.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.2.tgz", + "integrity": "sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.18.2", + "@typescript-eslint/utils": "8.18.2", + "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" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/types": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.2.tgz", + "integrity": "sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==", + "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.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.2.tgz", + "integrity": "sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", + "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" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "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.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "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.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.2.tgz", + "integrity": "sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/typescript-estree": "8.18.2" + }, + "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", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.2.tgz", + "integrity": "sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.18.2", + "eslint-visitor-keys": "^4.2.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/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "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/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -1582,6 +2163,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/acorn-walk": { "version": "8.3.4", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", @@ -1696,12 +2287,50 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "license": "MIT" }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -1711,6 +2340,87 @@ "node": ">=8" } }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", @@ -1720,6 +2430,22 @@ "node": ">=8.0.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/aws-ssl-profiles": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", @@ -1840,6 +2566,25 @@ "node": ">= 0.8" } }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/call-bind-apply-helpers": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", @@ -1869,6 +2614,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/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2071,6 +2826,75 @@ "node": ">=12.0.0" } }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dataloader": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.3.tgz", @@ -2086,6 +2910,49 @@ "ms": "2.0.0" } }, + "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/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/denque": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", @@ -2144,6 +3011,19 @@ "node": ">=8" } }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/dotenv": { "version": "16.4.7", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", @@ -2275,6 +3155,68 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/es-abstract": { + "version": "1.23.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.7.tgz", + "integrity": "sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.6", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-regex-test": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -2305,6 +3247,49 @@ "node": ">= 0.4" } }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/esbuild": { "version": "0.23.1", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", @@ -2360,6 +3345,348 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, + "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.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", + "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.17.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.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", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "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-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "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": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/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/eslint/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "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/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/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/eslint/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", @@ -2369,6 +3696,37 @@ "node": ">=6" } }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "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/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -2382,6 +3740,52 @@ "node": ">=4" } }, + "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/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -2459,6 +3863,20 @@ "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": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-redact": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", @@ -2490,6 +3908,19 @@ "node": ">= 0.4.0" } }, + "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/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -2520,6 +3951,54 @@ "node": ">= 0.8" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "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.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2576,6 +4055,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -2628,6 +4138,24 @@ "node": ">=8.0.0" } }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-tsconfig": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", @@ -2659,6 +4187,36 @@ "node": ">= 6" } }, + "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/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -2697,6 +4255,26 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2706,6 +4284,35 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -2718,6 +4325,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -2774,6 +4397,33 @@ "dev": true, "license": "ISC" }, + "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/import-fresh/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/import-lazy": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", @@ -2783,12 +4433,37 @@ "node": ">=8" } }, + "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/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -2854,12 +4529,62 @@ "node": ">= 0.10" } }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", "license": "MIT" }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2873,6 +4598,36 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -2888,6 +4643,41 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2897,6 +4687,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -2907,6 +4713,22 @@ "node": ">=8" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2919,6 +4741,19 @@ "node": ">=0.10.0" } }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -2928,24 +4763,234 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", "license": "MIT" }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, "node_modules/jju": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "license": "MIT" }, + "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/js-yaml/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/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": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -3020,6 +5065,16 @@ "safe-buffer": "^5.0.1" } }, + "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/knex": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/knex/-/knex-3.1.0.tgz", @@ -3094,6 +5149,36 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "license": "MIT" }, + "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/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": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -3148,6 +5233,13 @@ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "license": "MIT" }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -3452,6 +5544,13 @@ "node": ">=12" } }, + "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/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -3599,6 +5698,90 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/on-exit-leak-free": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", @@ -3620,6 +5803,69 @@ "node": ">= 0.8" } }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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/parent-require": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz", @@ -3644,6 +5890,26 @@ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "license": "MIT" }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-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", @@ -3729,6 +5995,26 @@ "node": ">=12.0.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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/prettier": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", @@ -3926,6 +6212,48 @@ "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", "license": "Apache-2.0" }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz", + "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "dunder-proto": "^1.0.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4017,6 +6345,26 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4037,6 +6385,24 @@ ], "license": "MIT" }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-stable-stringify": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", @@ -4123,6 +6489,40 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -4168,6 +6568,29 @@ "@img/sharp-win32-x64": "0.33.5" } }, + "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/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", @@ -4453,6 +6876,65 @@ "node": ">=8" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4476,6 +6958,19 @@ "node": ">=4" } }, + "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", @@ -4598,6 +7093,19 @@ "nodetouch": "bin/nodetouch.js" } }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-morph": { "version": "24.0.0", "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-24.0.0.tgz", @@ -4692,6 +7200,19 @@ "fsevents": "~2.3.3" } }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/type-fest": { "version": "4.31.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.31.0.tgz", @@ -4717,6 +7238,84 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", @@ -4746,6 +7345,25 @@ "node": ">=12" } }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", @@ -4823,6 +7441,120 @@ "node": ">= 0.8" } }, + "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/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", @@ -4916,6 +7648,19 @@ "node": ">=6" } }, + "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" + } + }, "node_modules/zod": { "version": "3.24.1", "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", diff --git a/package.json b/package.json index d52543f..5e39860 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,9 @@ "start": "npx prisma migrate deploy && node dist/server.js", "dev": "nodemon --ignore 'data/*' --exec tsx src/server.ts", "build": "tsc", - "format": "prettier --write src/" + "format": "prettier --write src/", + "lint": "eslint .", + "lint:fix": "eslint . --fix" }, "dependencies": { "@mikro-orm/core": "^6.4.2", @@ -37,6 +39,11 @@ "@types/jsonwebtoken": "^9.0.6", "@types/node": "^20.14.11", "@types/nodemailer": "^6.4.16", + "@typescript-eslint/eslint-plugin": "^8.18.2", + "@typescript-eslint/parser": "^8.18.2", + "eslint": "^9.17.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.31.0", "nodemon": "^3.1.4", "prettier": "^3.3.3", "prisma": "^6.1.0", diff --git a/src/application/base/baseRepository.ts b/src/application/base/baseRepository.ts index ff487a3..9ab2b22 100644 --- a/src/application/base/baseRepository.ts +++ b/src/application/base/baseRepository.ts @@ -1,7 +1,8 @@ -import { appLogger } from '../logger' -import { Database } from '../database' import { EntityManager, MikroORM } from '@mikro-orm/core' +import { Database } from '../database' +import { appLogger } from '../logger' + export abstract class BaseRepository { protected orm!: MikroORM protected em!: EntityManager diff --git a/src/application/database.ts b/src/application/database.ts index 0208203..5771ef2 100644 --- a/src/application/database.ts +++ b/src/application/database.ts @@ -1,7 +1,8 @@ -import config from '../../mikro-orm.config' // import { MikroORM } from '@mikro-orm/mariadb' import { MikroORM } from '@mikro-orm/mysql' + import { appLogger } from './logger' +import config from '../../mikro-orm.config' /** * Singleton class for initializing and managing the database connection diff --git a/src/application/logger.ts b/src/application/logger.ts index 86b33a4..bb9888d 100644 --- a/src/application/logger.ts +++ b/src/application/logger.ts @@ -1,5 +1,7 @@ -import pino from 'pino' import fs from 'fs' + +import pino from 'pino' + import { getRootPath } from './storage' // Array of log types diff --git a/src/application/storage.ts b/src/application/storage.ts index 0dcf364..2b5cadb 100644 --- a/src/application/storage.ts +++ b/src/application/storage.ts @@ -1,6 +1,7 @@ -import config from './config' -import path from 'path' import fs from 'fs' +import path from 'path' + +import config from './config' export function getRootPath(folder: string, ...additionalSegments: string[]) { return path.join(process.cwd(), folder, ...additionalSegments) diff --git a/src/application/types.ts b/src/application/types.ts index 4f8544a..1ebc35f 100644 --- a/src/application/types.ts +++ b/src/application/types.ts @@ -1,4 +1,5 @@ import { Socket } from 'socket.io' + import { Character } from '#entities/character' import { ZoneEventTile } from '#entities/zoneEventTile' import { ZoneEventTileTeleport } from '#entities/zoneEventTileTeleport' diff --git a/src/commands/init.ts b/src/commands/init.ts index 673e6d2..42ac846 100644 --- a/src/commands/init.ts +++ b/src/commands/init.ts @@ -1,22 +1,24 @@ -import { Server } from 'socket.io' import fs from 'fs' -import { getPublicPath } from '#application/storage' + import sharp from 'sharp' -import { Tile } from '#entities/tile' +import { Server } from 'socket.io' + +import { CharacterGender, CharacterRace } from '#application/enums' +import { getPublicPath } from '#application/storage' +import { UUID } from '#application/types' +import { Character } from '#entities/character' +import { CharacterHair } from '#entities/characterHair' +import { CharacterType } from '#entities/characterType' import { MapObject } from '#entities/mapObject' -import { SpriteAction } from '#entities/spriteAction' import { Sprite } from '#entities/sprite' +import { SpriteAction } from '#entities/spriteAction' +import { Tile } from '#entities/tile' +import { User } from '#entities/user' import { Zone } from '#entities/zone' import { ZoneEffect } from '#entities/zoneEffect' -import { User } from '#entities/user' -import { Character } from '#entities/character' -import CharacterTypeRepository from '#repositories/characterTypeRepository' import CharacterHairRepository from '#repositories/characterHairRepository' +import CharacterTypeRepository from '#repositories/characterTypeRepository' import ZoneRepository from '#repositories/zoneRepository' -import { CharacterType } from '#entities/characterType' -import { CharacterGender, CharacterRace } from '#application/enums' -import { CharacterHair } from '#entities/characterHair' -import { UUID } from '#application/types' // @TODO : Replace this with seeding // https://mikro-orm.io/docs/seeding diff --git a/src/commands/listZones.ts b/src/commands/listZones.ts index 5f4c17b..a535c9d 100644 --- a/src/commands/listZones.ts +++ b/src/commands/listZones.ts @@ -1,4 +1,5 @@ import { Server } from 'socket.io' + import ZoneManager from '#managers/zoneManager' type CommandInput = string[] diff --git a/src/commands/tiles.ts b/src/commands/tiles.ts index 5d4834f..ab2af40 100644 --- a/src/commands/tiles.ts +++ b/src/commands/tiles.ts @@ -1,10 +1,12 @@ import fs from 'fs' -import sharp from 'sharp' -import { commandLogger } from '#application/logger' -import { Server } from 'socket.io' -import { getPublicPath } from '#application/storage' import path from 'path' +import sharp from 'sharp' +import { Server } from 'socket.io' + +import { commandLogger } from '#application/logger' +import { getPublicPath } from '#application/storage' + export default class TilesCommand { constructor(private readonly io: Server) {} diff --git a/src/entities/character.ts b/src/entities/character.ts index 6930131..71ab275 100644 --- a/src/entities/character.ts +++ b/src/entities/character.ts @@ -1,12 +1,14 @@ import { Collection, Entity, ManyToOne, OneToMany, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' -import { User } from './user' -import { Zone } from './zone' -import { CharacterType } from './characterType' + +import { CharacterEquipment } from './characterEquipment' import { CharacterHair } from './characterHair' import { CharacterItem } from './characterItem' -import { CharacterEquipment } from './characterEquipment' +import { CharacterType } from './characterType' import { Chat } from './chat' +import { User } from './user' +import { Zone } from './zone' + +import { BaseEntity } from '#application/base/baseEntity' @Entity() export class Character extends BaseEntity { diff --git a/src/entities/characterEquipment.ts b/src/entities/characterEquipment.ts index dfc78b6..772a2e4 100644 --- a/src/entities/characterEquipment.ts +++ b/src/entities/characterEquipment.ts @@ -1,7 +1,9 @@ import { Entity, Enum, ManyToOne, PrimaryKey } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' + import { Character } from './character' import { CharacterItem } from './characterItem' + +import { BaseEntity } from '#application/base/baseEntity' import { CharacterEquipmentSlotType } from '#application/enums' @Entity() diff --git a/src/entities/characterHair.ts b/src/entities/characterHair.ts index a5efe4a..21c7615 100644 --- a/src/entities/characterHair.ts +++ b/src/entities/characterHair.ts @@ -1,7 +1,9 @@ import { Collection, Entity, ManyToOne, OneToMany, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' + import { Character } from './character' import { Sprite } from './sprite' + +import { BaseEntity } from '#application/base/baseEntity' import { CharacterGender } from '#application/enums' @Entity() diff --git a/src/entities/characterItem.ts b/src/entities/characterItem.ts index 803c89f..281b4bf 100644 --- a/src/entities/characterItem.ts +++ b/src/entities/characterItem.ts @@ -1,8 +1,10 @@ import { Collection, Entity, ManyToOne, OneToMany, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' + import { Character } from './character' -import { Item } from './item' import { CharacterEquipment } from './characterEquipment' +import { Item } from './item' + +import { BaseEntity } from '#application/base/baseEntity' @Entity() export class CharacterItem extends BaseEntity { diff --git a/src/entities/characterType.ts b/src/entities/characterType.ts index 79e5308..f1bfec3 100644 --- a/src/entities/characterType.ts +++ b/src/entities/characterType.ts @@ -1,7 +1,9 @@ import { Collection, Entity, Enum, ManyToOne, OneToMany, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' + import { Character } from './character' import { Sprite } from './sprite' + +import { BaseEntity } from '#application/base/baseEntity' import { CharacterGender, CharacterRace } from '#application/enums' @Entity() diff --git a/src/entities/chat.ts b/src/entities/chat.ts index 38ac9ab..a33120e 100644 --- a/src/entities/chat.ts +++ b/src/entities/chat.ts @@ -1,8 +1,10 @@ import { Entity, ManyToOne, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' + import { Character } from './character' import { Zone } from './zone' +import { BaseEntity } from '#application/base/baseEntity' + @Entity() export class Chat extends BaseEntity { @PrimaryKey() diff --git a/src/entities/item.ts b/src/entities/item.ts index 7ec7e9b..20c2214 100644 --- a/src/entities/item.ts +++ b/src/entities/item.ts @@ -1,9 +1,12 @@ -import { Collection, Entity, Enum, ManyToOne, OneToMany, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' -import { Sprite } from './sprite' -import { CharacterItem } from './characterItem' -import { ItemType, ItemRarity } from '#application/enums' import { randomUUID } from 'node:crypto' + +import { Collection, Entity, Enum, ManyToOne, OneToMany, PrimaryKey, Property } from '@mikro-orm/core' + +import { CharacterItem } from './characterItem' +import { Sprite } from './sprite' + +import { BaseEntity } from '#application/base/baseEntity' +import { ItemType, ItemRarity } from '#application/enums' import { UUID } from '#application/types' @Entity() diff --git a/src/entities/mapObject.ts b/src/entities/mapObject.ts index aaf47cf..fe0bf24 100644 --- a/src/entities/mapObject.ts +++ b/src/entities/mapObject.ts @@ -1,7 +1,10 @@ import { randomUUID } from 'node:crypto' + import { Collection, Entity, OneToMany, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' + import { ZoneObject } from './zoneObject' + +import { BaseEntity } from '#application/base/baseEntity' import { UUID } from '#application/types' @Entity() diff --git a/src/entities/passwordResetToken.ts b/src/entities/passwordResetToken.ts index e13ffec..b7424af 100644 --- a/src/entities/passwordResetToken.ts +++ b/src/entities/passwordResetToken.ts @@ -1,7 +1,9 @@ import { Entity, ManyToOne, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' + import { User } from './user' +import { BaseEntity } from '#application/base/baseEntity' + @Entity() export class PasswordResetToken extends BaseEntity { @PrimaryKey() diff --git a/src/entities/sprite.ts b/src/entities/sprite.ts index 7e7f658..5e2ca67 100644 --- a/src/entities/sprite.ts +++ b/src/entities/sprite.ts @@ -1,7 +1,10 @@ import { randomUUID } from 'node:crypto' + import { Collection, Entity, OneToMany, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' + import { SpriteAction } from './spriteAction' + +import { BaseEntity } from '#application/base/baseEntity' import { UUID } from '#application/types' @Entity() diff --git a/src/entities/spriteAction.ts b/src/entities/spriteAction.ts index eda36cd..ac3cb33 100644 --- a/src/entities/spriteAction.ts +++ b/src/entities/spriteAction.ts @@ -1,7 +1,10 @@ import { randomUUID } from 'node:crypto' + import { Entity, ManyToOne, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' + import { Sprite } from './sprite' + +import { BaseEntity } from '#application/base/baseEntity' import { UUID } from '#application/types' @Entity() diff --git a/src/entities/tile.ts b/src/entities/tile.ts index 987fba4..e48853a 100644 --- a/src/entities/tile.ts +++ b/src/entities/tile.ts @@ -1,5 +1,7 @@ import { randomUUID } from 'node:crypto' + import { Entity, PrimaryKey, Property } from '@mikro-orm/core' + import { BaseEntity } from '#application/base/baseEntity' import { UUID } from '#application/types' diff --git a/src/entities/user.ts b/src/entities/user.ts index d365c05..c2f3501 100644 --- a/src/entities/user.ts +++ b/src/entities/user.ts @@ -1,8 +1,11 @@ import { Collection, Entity, OneToMany, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' +import bcrypt from 'bcryptjs' + import { Character } from './character' import { PasswordResetToken } from './passwordResetToken' -import bcrypt from 'bcryptjs' + +import { BaseEntity } from '#application/base/baseEntity' + @Entity() export class User extends BaseEntity { diff --git a/src/entities/world.ts b/src/entities/world.ts index b9ec512..33f38ee 100644 --- a/src/entities/world.ts +++ b/src/entities/world.ts @@ -1,4 +1,5 @@ import { Entity, PrimaryKey, Property } from '@mikro-orm/core' + import { BaseEntity } from '#application/base/baseEntity' @Entity() diff --git a/src/entities/zone.ts b/src/entities/zone.ts index ea0e69e..160494c 100644 --- a/src/entities/zone.ts +++ b/src/entities/zone.ts @@ -1,11 +1,13 @@ import { Collection, Entity, OneToMany, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' + +import { Character } from './character' +import { Chat } from './chat' import { ZoneEffect } from './zoneEffect' import { ZoneEventTile } from './zoneEventTile' import { ZoneEventTileTeleport } from './zoneEventTileTeleport' import { ZoneObject } from './zoneObject' -import { Character } from './character' -import { Chat } from './chat' + +import { BaseEntity } from '#application/base/baseEntity' @Entity() export class Zone extends BaseEntity { diff --git a/src/entities/zoneEffect.ts b/src/entities/zoneEffect.ts index c548aa0..737a0e9 100644 --- a/src/entities/zoneEffect.ts +++ b/src/entities/zoneEffect.ts @@ -1,7 +1,10 @@ import { randomUUID } from 'node:crypto' + import { Entity, ManyToOne, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' + import { Zone } from './zone' + +import { BaseEntity } from '#application/base/baseEntity' import { UUID } from '#application/types' @Entity() diff --git a/src/entities/zoneEventTile.ts b/src/entities/zoneEventTile.ts index 34d594a..61f1419 100644 --- a/src/entities/zoneEventTile.ts +++ b/src/entities/zoneEventTile.ts @@ -1,11 +1,14 @@ -import { Entity, Enum, ManyToOne, OneToOne, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' -import { Zone } from './zone' -import { ZoneEventTileType } from '#application/enums' -import { ZoneEventTileTeleport } from './zoneEventTileTeleport' -import { UUID } from '#application/types' import { randomUUID } from 'node:crypto' +import { Entity, Enum, ManyToOne, OneToOne, PrimaryKey, Property } from '@mikro-orm/core' + +import { Zone } from './zone' +import { ZoneEventTileTeleport } from './zoneEventTileTeleport' + +import { BaseEntity } from '#application/base/baseEntity' +import { ZoneEventTileType } from '#application/enums' +import { UUID } from '#application/types' + @Entity() export class ZoneEventTile extends BaseEntity { @PrimaryKey() diff --git a/src/entities/zoneEventTileTeleport.ts b/src/entities/zoneEventTileTeleport.ts index 5a8dbb2..8dceb71 100644 --- a/src/entities/zoneEventTileTeleport.ts +++ b/src/entities/zoneEventTileTeleport.ts @@ -1,8 +1,11 @@ import { randomUUID } from 'node:crypto' + import { Entity, ManyToOne, OneToOne, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' + import { Zone } from './zone' import { ZoneEventTile } from './zoneEventTile' + +import { BaseEntity } from '#application/base/baseEntity' import { UUID } from '#application/types' @Entity() diff --git a/src/entities/zoneObject.ts b/src/entities/zoneObject.ts index 8249447..a623956 100644 --- a/src/entities/zoneObject.ts +++ b/src/entities/zoneObject.ts @@ -1,10 +1,13 @@ -import { Entity, ManyToOne, PrimaryKey, Property } from '@mikro-orm/core' -import { BaseEntity } from '#application/base/baseEntity' -import { Zone } from './zone' -import { MapObject } from '#entities/mapObject' -import { UUID } from '#application/types' import { randomUUID } from 'node:crypto' +import { Entity, ManyToOne, PrimaryKey, Property } from '@mikro-orm/core' + +import { Zone } from './zone' + +import { BaseEntity } from '#application/base/baseEntity' +import { UUID } from '#application/types' +import { MapObject } from '#entities/mapObject' + //@TODO : Rename mapObject @Entity() export class ZoneObject extends BaseEntity { diff --git a/src/http/controllers/assets.ts b/src/http/controllers/assets.ts index 0cfa2ef..a7ba4bf 100644 --- a/src/http/controllers/assets.ts +++ b/src/http/controllers/assets.ts @@ -1,12 +1,14 @@ -import { Request, Response } from 'express' import fs from 'fs' + +import { Request, Response } from 'express' + import { BaseController } from '#application/base/baseController' import { httpLogger } from '#application/logger' import { getPublicPath } from '#application/storage' +import { AssetData, UUID } from '#application/types' +import SpriteRepository from '#repositories/spriteRepository' import TileRepository from '#repositories/tileRepository' import ZoneRepository from '#repositories/zoneRepository' -import SpriteRepository from '#repositories/spriteRepository' -import { AssetData, UUID } from '#application/types' export class AssetsController extends BaseController { /** diff --git a/src/http/controllers/auth.ts b/src/http/controllers/auth.ts index ab82084..7ce99db 100644 --- a/src/http/controllers/auth.ts +++ b/src/http/controllers/auth.ts @@ -1,9 +1,10 @@ -import jwt from 'jsonwebtoken' import { Request, Response } from 'express' +import jwt from 'jsonwebtoken' + import { BaseController } from '#application/base/baseController' -import UserService from '#services/userService' import config from '#application/config' import { loginAccountSchema, registerAccountSchema, resetPasswordSchema, newPasswordSchema } from '#application/zodTypes' +import UserService from '#services/userService' export class AuthController extends BaseController { private userService: UserService diff --git a/src/http/controllers/avatar.ts b/src/http/controllers/avatar.ts index 7b21e66..2fc4b0d 100644 --- a/src/http/controllers/avatar.ts +++ b/src/http/controllers/avatar.ts @@ -1,11 +1,13 @@ +import fs from 'fs' + import { Request, Response } from 'express' import sharp from 'sharp' -import fs from 'fs' + import { BaseController } from '#application/base/baseController' -import CharacterRepository from '#repositories/characterRepository' -import CharacterHairRepository from '#repositories/characterHairRepository' -import CharacterTypeRepository from '#repositories/characterTypeRepository' import { getPublicPath } from '#application/storage' +import CharacterHairRepository from '#repositories/characterHairRepository' +import CharacterRepository from '#repositories/characterRepository' +import CharacterTypeRepository from '#repositories/characterTypeRepository' interface AvatarOptions { characterTypeId: number diff --git a/src/http/router.ts b/src/http/router.ts index 76d5571..d7eef60 100644 --- a/src/http/router.ts +++ b/src/http/router.ts @@ -1,7 +1,8 @@ import { Application } from 'express' + +import { AssetsController } from './controllers/assets' import { AuthController } from './controllers/auth' import { AvatarController } from './controllers/avatar' -import { AssetsController } from './controllers/assets' export class HttpRouter { private readonly app: Application diff --git a/src/jobs/SomeJob.ts b/src/jobs/SomeJob.ts index 359f4a3..4a760f9 100644 --- a/src/jobs/SomeJob.ts +++ b/src/jobs/SomeJob.ts @@ -1,6 +1,7 @@ -import { TSocket } from '#application/types' import { Server as SocketServer } from 'socket.io' +import { TSocket } from '#application/types' + export default class SomeJob { constructor(private params: any) {} diff --git a/src/managers/commandManager.ts b/src/managers/commandManager.ts index 7917660..c89f7c0 100644 --- a/src/managers/commandManager.ts +++ b/src/managers/commandManager.ts @@ -1,7 +1,9 @@ -import * as readline from 'readline' import * as fs from 'fs' import * as path from 'path' +import * as readline from 'readline' + import { Server } from 'socket.io' + import { commandLogger } from '#application/logger' import { getAppPath } from '#application/storage' diff --git a/src/managers/dateManager.ts b/src/managers/dateManager.ts index 2e15650..4a1248c 100644 --- a/src/managers/dateManager.ts +++ b/src/managers/dateManager.ts @@ -1,7 +1,8 @@ import { Server } from 'socket.io' + import { appLogger } from '#application/logger' -import worldService from '#services/worldService' import worldRepository from '#repositories/worldRepository' +import worldService from '#services/worldService' class DateManager { private static readonly GAME_SPEED = 8 // 24 game hours / 3 real hours diff --git a/src/managers/queueManager.ts b/src/managers/queueManager.ts index 73ca4cb..09e3562 100644 --- a/src/managers/queueManager.ts +++ b/src/managers/queueManager.ts @@ -1,11 +1,14 @@ -import IORedis from 'ioredis' -import { Job, Queue, Worker } from 'bullmq' -import config from '#application/config' -import { Server as SocketServer } from 'socket.io' -import { TSocket } from '#application/types' -import { queueLogger } from '#application/logger' import fs from 'fs' + +import { Job, Queue, Worker } from 'bullmq' +import IORedis from 'ioredis' +import { Server as SocketServer } from 'socket.io' + +import config from '#application/config' +import { queueLogger } from '#application/logger' import { getAppPath } from '#application/storage' +import { TSocket } from '#application/types' + class QueueManager { private connection!: IORedis diff --git a/src/managers/userManager.ts b/src/managers/userManager.ts index ec8a5ad..992819f 100644 --- a/src/managers/userManager.ts +++ b/src/managers/userManager.ts @@ -1,4 +1,5 @@ import { User } from '@prisma/client' + import { appLogger } from '#application/logger' type TLoggedInUsers = { diff --git a/src/managers/weatherManager.ts b/src/managers/weatherManager.ts index 195bca4..e9fcacc 100644 --- a/src/managers/weatherManager.ts +++ b/src/managers/weatherManager.ts @@ -1,7 +1,8 @@ import { Server } from 'socket.io' + import { appLogger } from '#application/logger' -import worldService from '#services/worldService' import worldRepository from '#repositories/worldRepository' +import worldService from '#services/worldService' interface WeatherState { isRainEnabled: boolean diff --git a/src/managers/zoneManager.ts b/src/managers/zoneManager.ts index 71905a8..e3995bd 100644 --- a/src/managers/zoneManager.ts +++ b/src/managers/zoneManager.ts @@ -1,8 +1,8 @@ -import ZoneRepository from '#repositories/zoneRepository' import { gameLogger } from '#application/logger' -import ZoneCharacter from '#models/zoneCharacter' -import LoadedZone from '#models/loadedZone' import { Zone } from '#entities/zone' +import LoadedZone from '#models/loadedZone' +import ZoneCharacter from '#models/zoneCharacter' +import ZoneRepository from '#repositories/zoneRepository' class ZoneManager { private readonly zones = new Map() diff --git a/src/middleware/authentication.ts b/src/middleware/authentication.ts index 4660bf7..bcc5159 100644 --- a/src/middleware/authentication.ts +++ b/src/middleware/authentication.ts @@ -1,7 +1,8 @@ import { verify } from 'jsonwebtoken' -import { TSocket } from '#application/types' + import config from '#application/config' import { gameLogger } from '#application/logger' +import { TSocket } from '#application/types' class SocketAuthenticator { private socket: TSocket diff --git a/src/models/loadedZone.ts b/src/models/loadedZone.ts index 3913c86..b579b85 100644 --- a/src/models/loadedZone.ts +++ b/src/models/loadedZone.ts @@ -1,7 +1,8 @@ -import zoneEventTileRepository from '#repositories/zoneEventTileRepository' import ZoneCharacter from './zoneCharacter' + import { Character } from '#entities/character' import { Zone } from '#entities/zone' +import zoneEventTileRepository from '#repositories/zoneEventTileRepository' class LoadedZone { private readonly zone: Zone diff --git a/src/models/zoneCharacter.ts b/src/models/zoneCharacter.ts index ecd8978..24b8051 100644 --- a/src/models/zoneCharacter.ts +++ b/src/models/zoneCharacter.ts @@ -1,5 +1,5 @@ -import { CharacterService } from '#services/characterService' import { Character } from '#entities/character' +import { CharacterService } from '#services/characterService' class ZoneCharacter { public readonly character: Character diff --git a/src/repositories/characterHairRepository.ts b/src/repositories/characterHairRepository.ts index dd50b35..a5dd30e 100644 --- a/src/repositories/characterHairRepository.ts +++ b/src/repositories/characterHairRepository.ts @@ -1,5 +1,5 @@ -import { appLogger } from '#application/logger' import { BaseRepository } from '#application/base/baseRepository' +import { appLogger } from '#application/logger' import { CharacterHair } from '#entities/characterHair' class CharacterHairRepository extends BaseRepository { diff --git a/src/repositories/characterRepository.ts b/src/repositories/characterRepository.ts index 8b1fb6e..10ffc19 100644 --- a/src/repositories/characterRepository.ts +++ b/src/repositories/characterRepository.ts @@ -1,5 +1,5 @@ -import { appLogger } from '#application/logger' import { BaseRepository } from '#application/base/baseRepository' +import { appLogger } from '#application/logger' import { Character } from '#entities/character' class CharacterRepository extends BaseRepository { diff --git a/src/repositories/characterTypeRepository.ts b/src/repositories/characterTypeRepository.ts index 6de2e66..bf13eb1 100644 --- a/src/repositories/characterTypeRepository.ts +++ b/src/repositories/characterTypeRepository.ts @@ -1,5 +1,5 @@ -import { appLogger } from '#application/logger' import { BaseRepository } from '#application/base/baseRepository' +import { appLogger } from '#application/logger' import { CharacterType } from '#entities/characterType' class CharacterTypeRepository extends BaseRepository { diff --git a/src/repositories/chatRepository.ts b/src/repositories/chatRepository.ts index 1c3b8fe..80c3051 100644 --- a/src/repositories/chatRepository.ts +++ b/src/repositories/chatRepository.ts @@ -1,5 +1,5 @@ -import { appLogger } from '#application/logger' import { BaseRepository } from '#application/base/baseRepository' +import { appLogger } from '#application/logger' import { Chat } from '#entities/chat' class ChatRepository extends BaseRepository { diff --git a/src/repositories/itemRepository.ts b/src/repositories/itemRepository.ts index 874c988..81c8dc3 100644 --- a/src/repositories/itemRepository.ts +++ b/src/repositories/itemRepository.ts @@ -1,5 +1,5 @@ -import { appLogger } from '#application/logger' import { BaseRepository } from '#application/base/baseRepository' +import { appLogger } from '#application/logger' import { Item } from '#entities/item' class ItemRepository extends BaseRepository { diff --git a/src/repositories/passwordResetTokenRepository.ts b/src/repositories/passwordResetTokenRepository.ts index 0081240..004bd91 100644 --- a/src/repositories/passwordResetTokenRepository.ts +++ b/src/repositories/passwordResetTokenRepository.ts @@ -1,5 +1,5 @@ -import { appLogger } from '#application/logger' import { BaseRepository } from '#application/base/baseRepository' // Import the global Prisma instance +import { appLogger } from '#application/logger' import { PasswordResetToken } from '#entities/passwordResetToken' class PasswordResetTokenRepository extends BaseRepository { diff --git a/src/repositories/spriteRepository.ts b/src/repositories/spriteRepository.ts index f2d1820..2d6c333 100644 --- a/src/repositories/spriteRepository.ts +++ b/src/repositories/spriteRepository.ts @@ -1,4 +1,5 @@ import { FilterValue } from '@mikro-orm/core' + import { BaseRepository } from '#application/base/baseRepository' import { Sprite } from '#entities/sprite' diff --git a/src/repositories/tileRepository.ts b/src/repositories/tileRepository.ts index 234c1d7..a874395 100644 --- a/src/repositories/tileRepository.ts +++ b/src/repositories/tileRepository.ts @@ -1,9 +1,10 @@ import { FilterValue } from '@mikro-orm/core' + import { BaseRepository } from '#application/base/baseRepository' -import { Tile } from '#entities/tile' -import { Zone } from '#entities/zone' import { unduplicateArray } from '#application/utilities' import { FlattenZoneArray } from '#application/zone' +import { Tile } from '#entities/tile' +import { Zone } from '#entities/zone' class TileRepository extends BaseRepository { async getById(id: FilterValue<`${string}-${string}-${string}-${string}-${string}`>): Promise { diff --git a/src/repositories/userRepository.ts b/src/repositories/userRepository.ts index e7b9f8e..8725822 100644 --- a/src/repositories/userRepository.ts +++ b/src/repositories/userRepository.ts @@ -1,5 +1,5 @@ -import { appLogger } from '#application/logger' import { BaseRepository } from '#application/base/baseRepository' +import { appLogger } from '#application/logger' import { User } from '#entities/user' class UserRepository extends BaseRepository { diff --git a/src/repositories/worldRepository.ts b/src/repositories/worldRepository.ts index ff3b110..d117726 100644 --- a/src/repositories/worldRepository.ts +++ b/src/repositories/worldRepository.ts @@ -1,5 +1,5 @@ -import { gameLogger } from '#application/logger' import { BaseRepository } from '#application/base/baseRepository' +import { gameLogger } from '#application/logger' import { World } from '#entities/world' class WorldRepository extends BaseRepository { diff --git a/src/repositories/zoneEventTileRepository.ts b/src/repositories/zoneEventTileRepository.ts index ca23c56..1bbb477 100644 --- a/src/repositories/zoneEventTileRepository.ts +++ b/src/repositories/zoneEventTileRepository.ts @@ -1,5 +1,5 @@ -import { appLogger } from '#application/logger' import { BaseRepository } from '#application/base/baseRepository' +import { appLogger } from '#application/logger' import { ZoneEventTile } from '#entities/zoneEventTile' class ZoneEventTileRepository extends BaseRepository { diff --git a/src/repositories/zoneRepository.ts b/src/repositories/zoneRepository.ts index 016c80f..3f0b270 100644 --- a/src/repositories/zoneRepository.ts +++ b/src/repositories/zoneRepository.ts @@ -1,8 +1,8 @@ -import { appLogger } from '#application/logger' import { BaseRepository } from '#application/base/baseRepository' +import { appLogger } from '#application/logger' +import { Zone } from '#entities/zone' import { ZoneEventTile } from '#entities/zoneEventTile' import { ZoneObject } from '#entities/zoneObject' -import { Zone } from '#entities/zone' class ZoneRepository extends BaseRepository { async getFirst(): Promise { diff --git a/src/server.ts b/src/server.ts index 6229ba8..ff3111f 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1,21 +1,23 @@ import fs from 'fs' -import express, { Application } from 'express' -import config from '#application/config' -import { getAppPath } from '#application/storage' import { createServer as httpServer, Server as HTTPServer } from 'http' + import cors from 'cors' +import express, { Application } from 'express' import { Server as SocketServer } from 'socket.io' -import { Authentication } from '#middleware/authentication' -import { TSocket } from '#application/types' + +import config from '#application/config' import { Database } from '#application/database' import { appLogger, watchLogs } from '#application/logger' -import ZoneManager from '#managers/zoneManager' -import UserManager from '#managers/userManager' -import CommandManager from '#managers/commandManager' -import QueueManager from '#managers/queueManager' -import DateManager from '#managers/dateManager' -import WeatherManager from '#managers/weatherManager' +import { getAppPath } from '#application/storage' +import { TSocket } from '#application/types' import { HttpRouter } from '#http/router' +import CommandManager from '#managers/commandManager' +import DateManager from '#managers/dateManager' +import QueueManager from '#managers/queueManager' +import UserManager from '#managers/userManager' +import WeatherManager from '#managers/weatherManager' +import ZoneManager from '#managers/zoneManager' +import { Authentication } from '#middleware/authentication' export class Server { private readonly app: Application diff --git a/src/services/characterService.ts b/src/services/characterService.ts index 4a1ed4f..f0df99a 100644 --- a/src/services/characterService.ts +++ b/src/services/characterService.ts @@ -1,14 +1,14 @@ import { AStar } from '#application/character/aStar' -import ZoneManager from '#managers/zoneManager' import Rotation from '#application/character/rotation' -import { appLogger, gameLogger } from '#application/logger' import { Database } from '#application/database' +import { appLogger, gameLogger } from '#application/logger' import { Character } from '#entities/character' -import UserRepository from '#repositories/userRepository' -import CharacterRepository from '#repositories/characterRepository' -import CharacterHairRepository from '#repositories/characterHairRepository' -import ZoneRepository from '#repositories/zoneRepository' import { Zone } from '#entities/zone' +import ZoneManager from '#managers/zoneManager' +import CharacterHairRepository from '#repositories/characterHairRepository' +import CharacterRepository from '#repositories/characterRepository' +import UserRepository from '#repositories/userRepository' +import ZoneRepository from '#repositories/zoneRepository' interface Position { x: number diff --git a/src/services/chatService.ts b/src/services/chatService.ts index 49f422b..862b59a 100644 --- a/src/services/chatService.ts +++ b/src/services/chatService.ts @@ -1,10 +1,11 @@ -import { gameLogger } from '#application/logger' import { Server } from 'socket.io' + +import { gameLogger } from '#application/logger' import { TSocket } from '#application/types' -import ChatRepository from '#repositories/chatRepository' import { Chat } from '#entities/chat' -import ZoneRepository from '#repositories/zoneRepository' import CharacterRepository from '#repositories/characterRepository' +import ChatRepository from '#repositories/chatRepository' +import ZoneRepository from '#repositories/zoneRepository' class ChatService { async sendZoneMessage(io: Server, socket: TSocket, message: string, characterId: number, zoneId: number): Promise { diff --git a/src/services/passwordResetTokenService.ts b/src/services/passwordResetTokenService.ts index f6af85b..5b37ddf 100644 --- a/src/services/passwordResetTokenService.ts +++ b/src/services/passwordResetTokenService.ts @@ -1,5 +1,5 @@ -import passwordResetTokenRepository from '#repositories/passwordResetTokenRepository' import { appLogger } from '#application/logger' +import passwordResetTokenRepository from '#repositories/passwordResetTokenRepository' class PasswordResetTokenService { /** diff --git a/src/services/userService.ts b/src/services/userService.ts index a98d4b0..32a58f6 100644 --- a/src/services/userService.ts +++ b/src/services/userService.ts @@ -1,13 +1,15 @@ import bcrypt from 'bcryptjs' -import UserRepository from '#repositories/userRepository' -import PasswordResetTokenRepository from '#repositories/passwordResetTokenRepository' -import config from '#application/config' import NodeMailer from 'nodemailer' -import { httpLogger } from '#application/logger' + import PasswordResetTokenService from './passwordResetTokenService' // @TODO: Correctly implement this -import { User } from '#entities/user' + +import config from '#application/config' import { Database } from '#application/database' +import { httpLogger } from '#application/logger' import { PasswordResetToken } from '#entities/passwordResetToken' +import { User } from '#entities/user' +import PasswordResetTokenRepository from '#repositories/passwordResetTokenRepository' +import UserRepository from '#repositories/userRepository' /** * User service diff --git a/src/services/worldService.ts b/src/services/worldService.ts index 22946d5..7aecd80 100644 --- a/src/services/worldService.ts +++ b/src/services/worldService.ts @@ -1,6 +1,6 @@ import { gameLogger } from '#application/logger' -import WorldRepository from '#repositories/worldRepository' import { World } from '#entities/world' +import WorldRepository from '#repositories/worldRepository' class WorldService { async update(worldData: Partial): Promise { diff --git a/src/services/zoneEventTileService.ts b/src/services/zoneEventTileService.ts index a0c9fb2..4a007f2 100644 --- a/src/services/zoneEventTileService.ts +++ b/src/services/zoneEventTileService.ts @@ -1,8 +1,9 @@ -import { ExtendedCharacter, TSocket } from '#application/types' import { Server } from 'socket.io' -import ZoneManager from '#managers/zoneManager' + import { gameLogger } from '#application/logger' +import { ExtendedCharacter, TSocket } from '#application/types' import { ZoneEventTileTeleport } from '#entities/zoneEventTileTeleport' +import ZoneManager from '#managers/zoneManager' export class ZoneEventTileService { public async handleTeleport(io: Server, socket: TSocket, character: ExtendedCharacter, teleport: ZoneEventTileTeleport): Promise { diff --git a/src/socketEvents/character/charactersScreen/character_hair_list.ts b/src/socketEvents/character/charactersScreen/character_hair_list.ts index eb882a8..10bfe66 100644 --- a/src/socketEvents/character/charactersScreen/character_hair_list.ts +++ b/src/socketEvents/character/charactersScreen/character_hair_list.ts @@ -1,7 +1,8 @@ import { Server } from 'socket.io' + import { TSocket } from '#application/types' -import characterHairRepository from '#repositories/characterHairRepository' import { CharacterHair } from '#entities/characterHair' +import characterHairRepository from '#repositories/characterHairRepository' interface IPayload {} diff --git a/src/socketEvents/character/connect.ts b/src/socketEvents/character/connect.ts index 7aef2b4..11368bd 100644 --- a/src/socketEvents/character/connect.ts +++ b/src/socketEvents/character/connect.ts @@ -1,10 +1,11 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import CharacterRepository from '#repositories/characterRepository' + import { gameLogger } from '#application/logger' +import { TSocket } from '#application/types' import ZoneManager from '#managers/zoneManager' -import { CharacterService } from '#services/characterService' import CharacterHairRepository from '#repositories/characterHairRepository' +import CharacterRepository from '#repositories/characterRepository' +import { CharacterService } from '#services/characterService' interface CharacterConnectPayload { characterId: number @@ -33,7 +34,7 @@ export default class CharacterConnectEvent { return } - const character = await CharacterRepository.getByUserAndId(this.socket.userId!, characterId) + const character = await CharacterRepository.getByUserAndId(this.socket.userId, characterId) if (!character) { this.emitError('Character not found or does not belong to this user') diff --git a/src/socketEvents/character/create.ts b/src/socketEvents/character/create.ts index 7c50206..9fffa6e 100644 --- a/src/socketEvents/character/create.ts +++ b/src/socketEvents/character/create.ts @@ -1,10 +1,11 @@ import { Server } from 'socket.io' +import { ZodError } from 'zod' + +import { gameLogger } from '#application/logger' import { TSocket } from '#application/types' +import { ZCharacterCreate } from '#application/zodTypes' import { Character } from '#entities/character' import CharacterRepository from '#repositories/characterRepository' -import { ZCharacterCreate } from '#application/zodTypes' -import { gameLogger } from '#application/logger' -import { ZodError } from 'zod' import UserRepository from '#repositories/userRepository' export default class CharacterCreateEvent { diff --git a/src/socketEvents/character/delete.ts b/src/socketEvents/character/delete.ts index af171f4..73a89ed 100644 --- a/src/socketEvents/character/delete.ts +++ b/src/socketEvents/character/delete.ts @@ -1,9 +1,10 @@ import { Server } from 'socket.io' + import { TSocket } from '#application/types' -import CharacterRepository from '#repositories/characterRepository' -import { CharacterService } from '#services/characterService' import { Character } from '#entities/character' import { Zone } from '#entities/zone' +import CharacterRepository from '#repositories/characterRepository' +import { CharacterService } from '#services/characterService' type TypePayload = { characterId: number @@ -26,12 +27,12 @@ export default class CharacterDeleteEvent { private async handleCharacterDelete(data: TypePayload, callback: (response: TypeResponse) => void): Promise { try { - const character = await CharacterRepository.getByUserAndId(this.socket.userId!, data.characterId!) + const character = await CharacterRepository.getByUserAndId(this.socket.userId!, data.characterId) if (character) { await character.delete() } - const characters: Character[] = (await CharacterRepository.getByUserId(this.socket.userId!)) as Character[] + const characters: Character[] = (await CharacterRepository.getByUserId(this.socket.userId!)) this.socket.emit('character:list', characters) } catch (error: any) { diff --git a/src/socketEvents/character/list.ts b/src/socketEvents/character/list.ts index 9179c54..d307866 100644 --- a/src/socketEvents/character/list.ts +++ b/src/socketEvents/character/list.ts @@ -1,8 +1,9 @@ import { Socket, Server } from 'socket.io' -import { TSocket } from '#application/types' -import CharacterRepository from '#repositories/characterRepository' + import { gameLogger } from '#application/logger' +import { TSocket } from '#application/types' import { Character } from '#entities/character' +import CharacterRepository from '#repositories/characterRepository' export default class CharacterListEvent { constructor( diff --git a/src/socketEvents/chat/gameMaster/alertCommand.ts b/src/socketEvents/chat/gameMaster/alertCommand.ts index 82de9a7..624be19 100644 --- a/src/socketEvents/chat/gameMaster/alertCommand.ts +++ b/src/socketEvents/chat/gameMaster/alertCommand.ts @@ -1,8 +1,9 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import { getArgs, isCommand } from '#application/chat' -import CharacterRepository from '#repositories/characterRepository' import { gameLogger } from '#application/logger' +import { TSocket } from '#application/types' +import CharacterRepository from '#repositories/characterRepository' type TypePayload = { message: string diff --git a/src/socketEvents/chat/gameMaster/setTimeCommand.ts b/src/socketEvents/chat/gameMaster/setTimeCommand.ts index 4e5e711..3bb2b81 100644 --- a/src/socketEvents/chat/gameMaster/setTimeCommand.ts +++ b/src/socketEvents/chat/gameMaster/setTimeCommand.ts @@ -1,9 +1,10 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import { getArgs, isCommand } from '#application/chat' -import CharacterRepository from '#repositories/characterRepository' import { gameLogger } from '#application/logger' +import { TSocket } from '#application/types' import DateManager from '#managers/dateManager' +import CharacterRepository from '#repositories/characterRepository' type TypePayload = { message: string diff --git a/src/socketEvents/chat/gameMaster/teleportCommand.ts b/src/socketEvents/chat/gameMaster/teleportCommand.ts index eb64233..6930f9e 100644 --- a/src/socketEvents/chat/gameMaster/teleportCommand.ts +++ b/src/socketEvents/chat/gameMaster/teleportCommand.ts @@ -1,11 +1,12 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import { getArgs, isCommand } from '#application/chat' -import ZoneRepository from '#repositories/zoneRepository' import { gameLogger, gameMasterLogger } from '#application/logger' +import { TSocket } from '#application/types' import ZoneManager from '#managers/zoneManager' -import ZoneCharacter from '#models/zoneCharacter' import zoneManager from '#managers/zoneManager' +import ZoneCharacter from '#models/zoneCharacter' +import ZoneRepository from '#repositories/zoneRepository' type TypePayload = { message: string diff --git a/src/socketEvents/chat/gameMaster/toggleFogCommand.ts b/src/socketEvents/chat/gameMaster/toggleFogCommand.ts index 927085a..f0862d6 100644 --- a/src/socketEvents/chat/gameMaster/toggleFogCommand.ts +++ b/src/socketEvents/chat/gameMaster/toggleFogCommand.ts @@ -1,9 +1,10 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import { isCommand } from '#application/chat' -import CharacterRepository from '#repositories/characterRepository' import { gameLogger } from '#application/logger' +import { TSocket } from '#application/types' import WeatherManager from '#managers/weatherManager' +import CharacterRepository from '#repositories/characterRepository' type TypePayload = { message: string diff --git a/src/socketEvents/chat/gameMaster/toggleRainCommand.ts b/src/socketEvents/chat/gameMaster/toggleRainCommand.ts index 936f98d..f0f6930 100644 --- a/src/socketEvents/chat/gameMaster/toggleRainCommand.ts +++ b/src/socketEvents/chat/gameMaster/toggleRainCommand.ts @@ -1,9 +1,10 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import { isCommand } from '#application/chat' -import CharacterRepository from '#repositories/characterRepository' import { gameLogger } from '#application/logger' +import { TSocket } from '#application/types' import WeatherManager from '#managers/weatherManager' +import CharacterRepository from '#repositories/characterRepository' type TypePayload = { message: string diff --git a/src/socketEvents/chat/message.ts b/src/socketEvents/chat/message.ts index 48e6a7e..f139b04 100644 --- a/src/socketEvents/chat/message.ts +++ b/src/socketEvents/chat/message.ts @@ -1,9 +1,10 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import ZoneRepository from '#repositories/zoneRepository' + import { isCommand } from '#application/chat' import { gameLogger } from '#application/logger' +import { TSocket } from '#application/types' import ZoneManager from '#managers/zoneManager' +import ZoneRepository from '#repositories/zoneRepository' import ChatService from '#services/chatService' type TypePayload = { diff --git a/src/socketEvents/disconnect.ts b/src/socketEvents/disconnect.ts index e3ac326..410ed84 100644 --- a/src/socketEvents/disconnect.ts +++ b/src/socketEvents/disconnect.ts @@ -1,6 +1,7 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import { gameLogger } from '#application/logger' +import { TSocket } from '#application/types' import ZoneManager from '#managers/zoneManager' export default class DisconnectEvent { diff --git a/src/socketEvents/gameMaster/assetManager/characterHair/create.ts b/src/socketEvents/gameMaster/assetManager/characterHair/create.ts index b5159dc..3bfe169 100644 --- a/src/socketEvents/gameMaster/assetManager/characterHair/create.ts +++ b/src/socketEvents/gameMaster/assetManager/characterHair/create.ts @@ -1,6 +1,7 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import prisma from '#application/prisma' +import { TSocket } from '#application/types' import characterRepository from '#repositories/characterRepository' export default class CharacterHairCreateEvent { diff --git a/src/socketEvents/gameMaster/assetManager/characterHair/delete.ts b/src/socketEvents/gameMaster/assetManager/characterHair/delete.ts index 5c59ca2..708f183 100644 --- a/src/socketEvents/gameMaster/assetManager/characterHair/delete.ts +++ b/src/socketEvents/gameMaster/assetManager/characterHair/delete.ts @@ -1,8 +1,9 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import prisma from '#application/prisma' -import characterRepository from '#repositories/characterRepository' + import { gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' interface IPayload { id: number diff --git a/src/socketEvents/gameMaster/assetManager/characterHair/list.ts b/src/socketEvents/gameMaster/assetManager/characterHair/list.ts index d0871bb..3a3e236 100644 --- a/src/socketEvents/gameMaster/assetManager/characterHair/list.ts +++ b/src/socketEvents/gameMaster/assetManager/characterHair/list.ts @@ -1,9 +1,10 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' import { CharacterHair } from '@prisma/client' +import { Server } from 'socket.io' + import { gameMasterLogger } from '#application/logger' -import characterRepository from '#repositories/characterRepository' +import { TSocket } from '#application/types' import characterHairRepository from '#repositories/characterHairRepository' +import characterRepository from '#repositories/characterRepository' interface IPayload {} diff --git a/src/socketEvents/gameMaster/assetManager/characterHair/update.ts b/src/socketEvents/gameMaster/assetManager/characterHair/update.ts index d44f38a..526d389 100644 --- a/src/socketEvents/gameMaster/assetManager/characterHair/update.ts +++ b/src/socketEvents/gameMaster/assetManager/characterHair/update.ts @@ -1,9 +1,10 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import prisma from '#application/prisma' -import characterRepository from '#repositories/characterRepository' import { CharacterGender, CharacterRace } from '@prisma/client' +import { Server } from 'socket.io' + import { gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' type Payload = { id: number diff --git a/src/socketEvents/gameMaster/assetManager/characterType/create.ts b/src/socketEvents/gameMaster/assetManager/characterType/create.ts index f32479d..4bbe104 100644 --- a/src/socketEvents/gameMaster/assetManager/characterType/create.ts +++ b/src/socketEvents/gameMaster/assetManager/characterType/create.ts @@ -1,8 +1,9 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import prisma from '#application/prisma' -import characterRepository from '#repositories/characterRepository' import { CharacterGender, CharacterRace } from '@prisma/client' +import { Server } from 'socket.io' + +import prisma from '#application/prisma' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' export default class CharacterTypeCreateEvent { constructor( diff --git a/src/socketEvents/gameMaster/assetManager/characterType/delete.ts b/src/socketEvents/gameMaster/assetManager/characterType/delete.ts index 4916832..278626c 100644 --- a/src/socketEvents/gameMaster/assetManager/characterType/delete.ts +++ b/src/socketEvents/gameMaster/assetManager/characterType/delete.ts @@ -1,6 +1,7 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import { gameMasterLogger } from '#application/logger' +import { TSocket } from '#application/types' import characterRepository from '#repositories/characterRepository' import CharacterTypeRepository from '#repositories/characterTypeRepository' diff --git a/src/socketEvents/gameMaster/assetManager/characterType/list.ts b/src/socketEvents/gameMaster/assetManager/characterType/list.ts index 7fa57c1..15ff718 100644 --- a/src/socketEvents/gameMaster/assetManager/characterType/list.ts +++ b/src/socketEvents/gameMaster/assetManager/characterType/list.ts @@ -1,8 +1,9 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' import { CharacterType } from '@prisma/client' -import characterRepository from '#repositories/characterRepository' +import { Server } from 'socket.io' + import { gameMasterLogger } from '#application/logger' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' import CharacterTypeRepository from '#repositories/characterTypeRepository' interface IPayload {} diff --git a/src/socketEvents/gameMaster/assetManager/characterType/update.ts b/src/socketEvents/gameMaster/assetManager/characterType/update.ts index 01b82a4..a7e6acc 100644 --- a/src/socketEvents/gameMaster/assetManager/characterType/update.ts +++ b/src/socketEvents/gameMaster/assetManager/characterType/update.ts @@ -1,8 +1,9 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import prisma from '#application/prisma' -import characterRepository from '#repositories/characterRepository' import { CharacterGender, CharacterRace } from '@prisma/client' +import { Server } from 'socket.io' + +import prisma from '#application/prisma' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' type Payload = { id: number diff --git a/src/socketEvents/gameMaster/assetManager/item/create.ts b/src/socketEvents/gameMaster/assetManager/item/create.ts index bacfba7..325ed7a 100644 --- a/src/socketEvents/gameMaster/assetManager/item/create.ts +++ b/src/socketEvents/gameMaster/assetManager/item/create.ts @@ -1,6 +1,7 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import prisma from '#application/prisma' +import { TSocket } from '#application/types' import characterRepository from '#repositories/characterRepository' export default class ItemCreateEvent { diff --git a/src/socketEvents/gameMaster/assetManager/item/delete.ts b/src/socketEvents/gameMaster/assetManager/item/delete.ts index dda1488..62f1e39 100644 --- a/src/socketEvents/gameMaster/assetManager/item/delete.ts +++ b/src/socketEvents/gameMaster/assetManager/item/delete.ts @@ -1,8 +1,9 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import prisma from '#application/prisma' -import characterRepository from '#repositories/characterRepository' + import { gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' interface IPayload { id: string diff --git a/src/socketEvents/gameMaster/assetManager/item/list.ts b/src/socketEvents/gameMaster/assetManager/item/list.ts index 405a045..e36b242 100644 --- a/src/socketEvents/gameMaster/assetManager/item/list.ts +++ b/src/socketEvents/gameMaster/assetManager/item/list.ts @@ -1,8 +1,9 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' import { Item } from '@prisma/client' -import characterRepository from '#repositories/characterRepository' +import { Server } from 'socket.io' + import { gameMasterLogger } from '#application/logger' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' import itemRepository from '#repositories/itemRepository' interface IPayload {} diff --git a/src/socketEvents/gameMaster/assetManager/item/update.ts b/src/socketEvents/gameMaster/assetManager/item/update.ts index 01b95d3..92e8721 100644 --- a/src/socketEvents/gameMaster/assetManager/item/update.ts +++ b/src/socketEvents/gameMaster/assetManager/item/update.ts @@ -1,9 +1,10 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import prisma from '#application/prisma' -import characterRepository from '#repositories/characterRepository' import { ItemType, ItemRarity } from '@prisma/client' +import { Server } from 'socket.io' + import { gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' type Payload = { id: string diff --git a/src/socketEvents/gameMaster/assetManager/object/list.ts b/src/socketEvents/gameMaster/assetManager/object/list.ts index 6b505af..f833aad 100644 --- a/src/socketEvents/gameMaster/assetManager/object/list.ts +++ b/src/socketEvents/gameMaster/assetManager/object/list.ts @@ -1,8 +1,9 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' import { Object } from '@prisma/client' -import ObjectRepository from '#repositories/objectRepository' +import { Server } from 'socket.io' + +import { TSocket } from '#application/types' import characterRepository from '#repositories/characterRepository' +import ObjectRepository from '#repositories/objectRepository' interface IPayload {} diff --git a/src/socketEvents/gameMaster/assetManager/object/remove.ts b/src/socketEvents/gameMaster/assetManager/object/remove.ts index 5b67659..dae41ca 100644 --- a/src/socketEvents/gameMaster/assetManager/object/remove.ts +++ b/src/socketEvents/gameMaster/assetManager/object/remove.ts @@ -1,10 +1,12 @@ import fs from 'fs' + import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import prisma from '#application/prisma' -import characterRepository from '#repositories/characterRepository' -import { getPublicPath } from '#application/storage' + import { gameLogger, gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' +import { getPublicPath } from '#application/storage' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' interface IPayload { object: string diff --git a/src/socketEvents/gameMaster/assetManager/object/update.ts b/src/socketEvents/gameMaster/assetManager/object/update.ts index ee74776..bb1982d 100644 --- a/src/socketEvents/gameMaster/assetManager/object/update.ts +++ b/src/socketEvents/gameMaster/assetManager/object/update.ts @@ -1,6 +1,7 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import prisma from '#application/prisma' +import { TSocket } from '#application/types' import characterRepository from '#repositories/characterRepository' type Payload = { diff --git a/src/socketEvents/gameMaster/assetManager/object/upload.ts b/src/socketEvents/gameMaster/assetManager/object/upload.ts index 268e818..1fd1861 100644 --- a/src/socketEvents/gameMaster/assetManager/object/upload.ts +++ b/src/socketEvents/gameMaster/assetManager/object/upload.ts @@ -1,12 +1,15 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import { writeFile } from 'node:fs/promises' import fs from 'fs/promises' -import prisma from '#application/prisma' +import { writeFile } from 'node:fs/promises' + + import sharp from 'sharp' -import characterRepository from '#repositories/characterRepository' +import { Server } from 'socket.io' + import { gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' import { getPublicPath } from '#application/storage' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' interface IObjectData { [key: string]: Buffer diff --git a/src/socketEvents/gameMaster/assetManager/sprite/copy.ts b/src/socketEvents/gameMaster/assetManager/sprite/copy.ts index 643ce79..d756c3a 100644 --- a/src/socketEvents/gameMaster/assetManager/sprite/copy.ts +++ b/src/socketEvents/gameMaster/assetManager/sprite/copy.ts @@ -1,10 +1,13 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import prisma from '#application/prisma' -import CharacterRepository from '#repositories/characterRepository' -import { gameMasterLogger } from '#application/logger' + import type { Prisma } from '@prisma/client' +import { gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' +import { TSocket } from '#application/types' +import CharacterRepository from '#repositories/characterRepository' + + interface CopyPayload { id: string } diff --git a/src/socketEvents/gameMaster/assetManager/sprite/create.ts b/src/socketEvents/gameMaster/assetManager/sprite/create.ts index ecd7a15..b0c87f6 100644 --- a/src/socketEvents/gameMaster/assetManager/sprite/create.ts +++ b/src/socketEvents/gameMaster/assetManager/sprite/create.ts @@ -1,9 +1,11 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' import fs from 'fs/promises' + +import { Server } from 'socket.io' + import prisma from '#application/prisma' -import characterRepository from '#repositories/characterRepository' import { getPublicPath } from '#application/storage' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' export default class SpriteCreateEvent { constructor( diff --git a/src/socketEvents/gameMaster/assetManager/sprite/delete.ts b/src/socketEvents/gameMaster/assetManager/sprite/delete.ts index 246bd7b..96ee456 100644 --- a/src/socketEvents/gameMaster/assetManager/sprite/delete.ts +++ b/src/socketEvents/gameMaster/assetManager/sprite/delete.ts @@ -1,9 +1,11 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' import fs from 'fs' -import prisma from '#application/prisma' + +import { Server } from 'socket.io' + import { gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' import { getPublicPath } from '#application/storage' +import { TSocket } from '#application/types' import CharacterRepository from '#repositories/characterRepository' type Payload = { diff --git a/src/socketEvents/gameMaster/assetManager/sprite/list.ts b/src/socketEvents/gameMaster/assetManager/sprite/list.ts index c4985b9..dcd0fdf 100644 --- a/src/socketEvents/gameMaster/assetManager/sprite/list.ts +++ b/src/socketEvents/gameMaster/assetManager/sprite/list.ts @@ -1,8 +1,9 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' import { Sprite } from '@prisma/client' -import SpriteRepository from '#repositories/spriteRepository' +import { Server } from 'socket.io' + +import { TSocket } from '#application/types' import characterRepository from '#repositories/characterRepository' +import SpriteRepository from '#repositories/spriteRepository' interface IPayload {} diff --git a/src/socketEvents/gameMaster/assetManager/sprite/update.ts b/src/socketEvents/gameMaster/assetManager/sprite/update.ts index 363c5ef..a056275 100644 --- a/src/socketEvents/gameMaster/assetManager/sprite/update.ts +++ b/src/socketEvents/gameMaster/assetManager/sprite/update.ts @@ -1,12 +1,15 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import prisma from '#application/prisma' -import type { Prisma, SpriteAction } from '@prisma/client' import { writeFile, mkdir } from 'node:fs/promises' + import sharp from 'sharp' -import { getPublicPath } from '#application/storage' -import CharacterRepository from '#repositories/characterRepository' +import { Server } from 'socket.io' + +import type { Prisma, SpriteAction } from '@prisma/client' + import { gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' +import { getPublicPath } from '#application/storage' +import { TSocket } from '#application/types' +import CharacterRepository from '#repositories/characterRepository' // Constants const ISOMETRIC_CONFIG = { diff --git a/src/socketEvents/gameMaster/assetManager/tile/delete.ts b/src/socketEvents/gameMaster/assetManager/tile/delete.ts index 415e20d..7bdfec9 100644 --- a/src/socketEvents/gameMaster/assetManager/tile/delete.ts +++ b/src/socketEvents/gameMaster/assetManager/tile/delete.ts @@ -1,10 +1,12 @@ import fs from 'fs/promises' + import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import prisma from '#application/prisma' -import characterRepository from '#repositories/characterRepository' + import { gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' import { getPublicPath } from '#application/storage' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' type Payload = { id: string diff --git a/src/socketEvents/gameMaster/assetManager/tile/list.ts b/src/socketEvents/gameMaster/assetManager/tile/list.ts index e3f4e24..80e959a 100644 --- a/src/socketEvents/gameMaster/assetManager/tile/list.ts +++ b/src/socketEvents/gameMaster/assetManager/tile/list.ts @@ -1,8 +1,9 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' import { Tile } from '@prisma/client' -import TileRepository from '#repositories/tileRepository' +import { Server } from 'socket.io' + +import { TSocket } from '#application/types' import characterRepository from '#repositories/characterRepository' +import TileRepository from '#repositories/tileRepository' interface IPayload {} diff --git a/src/socketEvents/gameMaster/assetManager/tile/update.ts b/src/socketEvents/gameMaster/assetManager/tile/update.ts index f2757f9..d37a61e 100644 --- a/src/socketEvents/gameMaster/assetManager/tile/update.ts +++ b/src/socketEvents/gameMaster/assetManager/tile/update.ts @@ -1,6 +1,7 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import prisma from '#application/prisma' +import { TSocket } from '#application/types' import characterRepository from '#repositories/characterRepository' type Payload = { diff --git a/src/socketEvents/gameMaster/assetManager/tile/upload.ts b/src/socketEvents/gameMaster/assetManager/tile/upload.ts index af51515..36c670f 100644 --- a/src/socketEvents/gameMaster/assetManager/tile/upload.ts +++ b/src/socketEvents/gameMaster/assetManager/tile/upload.ts @@ -1,11 +1,13 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import { writeFile } from 'node:fs/promises' import fs from 'fs/promises' -import prisma from '#application/prisma' -import characterRepository from '#repositories/characterRepository' +import { writeFile } from 'node:fs/promises' + +import { Server } from 'socket.io' + import { gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' import { getPublicPath } from '#application/storage' +import { TSocket } from '#application/types' +import characterRepository from '#repositories/characterRepository' interface ITileData { [key: string]: Buffer diff --git a/src/socketEvents/gameMaster/zoneEditor/create.ts b/src/socketEvents/gameMaster/zoneEditor/create.ts index 3ec734e..44d700c 100644 --- a/src/socketEvents/gameMaster/zoneEditor/create.ts +++ b/src/socketEvents/gameMaster/zoneEditor/create.ts @@ -1,10 +1,11 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import ZoneRepository from '#repositories/zoneRepository' import { Zone } from '@prisma/client' -import prisma from '#application/prisma' -import CharacterRepository from '#repositories/characterRepository' +import { Server } from 'socket.io' + import { gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' +import { TSocket } from '#application/types' +import CharacterRepository from '#repositories/characterRepository' +import ZoneRepository from '#repositories/zoneRepository' type Payload = { name: string diff --git a/src/socketEvents/gameMaster/zoneEditor/delete.ts b/src/socketEvents/gameMaster/zoneEditor/delete.ts index 2d1edf4..fde1e1f 100644 --- a/src/socketEvents/gameMaster/zoneEditor/delete.ts +++ b/src/socketEvents/gameMaster/zoneEditor/delete.ts @@ -1,9 +1,10 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import ZoneRepository from '#repositories/zoneRepository' -import prisma from '#application/prisma' -import CharacterRepository from '#repositories/characterRepository' + import { gameMasterLogger } from '#application/logger' +import prisma from '#application/prisma' +import { TSocket } from '#application/types' +import CharacterRepository from '#repositories/characterRepository' +import ZoneRepository from '#repositories/zoneRepository' type Payload = { zoneId: number diff --git a/src/socketEvents/gameMaster/zoneEditor/list.ts b/src/socketEvents/gameMaster/zoneEditor/list.ts index 0f23dc8..015fc6c 100644 --- a/src/socketEvents/gameMaster/zoneEditor/list.ts +++ b/src/socketEvents/gameMaster/zoneEditor/list.ts @@ -1,9 +1,10 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' import { Zone } from '@prisma/client' -import ZoneRepository from '#repositories/zoneRepository' -import CharacterRepository from '#repositories/characterRepository' +import { Server } from 'socket.io' + import { gameMasterLogger } from '#application/logger' +import { TSocket } from '#application/types' +import CharacterRepository from '#repositories/characterRepository' +import ZoneRepository from '#repositories/zoneRepository' interface IPayload {} diff --git a/src/socketEvents/gameMaster/zoneEditor/request.ts b/src/socketEvents/gameMaster/zoneEditor/request.ts index 8f48170..ad7fc42 100644 --- a/src/socketEvents/gameMaster/zoneEditor/request.ts +++ b/src/socketEvents/gameMaster/zoneEditor/request.ts @@ -1,9 +1,10 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import ZoneRepository from '#repositories/zoneRepository' import { Zone } from '@prisma/client' -import CharacterRepository from '#repositories/characterRepository' +import { Server } from 'socket.io' + import { gameMasterLogger } from '#application/logger' +import { TSocket } from '#application/types' +import CharacterRepository from '#repositories/characterRepository' +import ZoneRepository from '#repositories/zoneRepository' interface IPayload { zoneId: number diff --git a/src/socketEvents/gameMaster/zoneEditor/update.ts b/src/socketEvents/gameMaster/zoneEditor/update.ts index 9e212da..3629213 100644 --- a/src/socketEvents/gameMaster/zoneEditor/update.ts +++ b/src/socketEvents/gameMaster/zoneEditor/update.ts @@ -1,11 +1,12 @@ -import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import ZoneRepository from '#repositories/zoneRepository' import { Zone, ZoneEffect, ZoneEventTileType, ZoneObject } from '@prisma/client' +import { Server } from 'socket.io' + +import { gameMasterLogger } from '#application/logger' import prisma from '#application/prisma' +import { TSocket } from '#application/types' import zoneManager from '#managers/zoneManager' import CharacterRepository from '#repositories/characterRepository' -import { gameMasterLogger } from '#application/logger' +import ZoneRepository from '#repositories/zoneRepository' interface IPayload { zoneId: number diff --git a/src/socketEvents/login.ts b/src/socketEvents/login.ts index 6e94702..f256832 100644 --- a/src/socketEvents/login.ts +++ b/src/socketEvents/login.ts @@ -1,6 +1,7 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import { gameLogger } from '#application/logger' +import { TSocket } from '#application/types' import UserRepository from '#repositories/userRepository' export default class LoginEvent { diff --git a/src/socketEvents/zone/characterJoin.ts b/src/socketEvents/zone/characterJoin.ts index 27b3872..96267ad 100644 --- a/src/socketEvents/zone/characterJoin.ts +++ b/src/socketEvents/zone/characterJoin.ts @@ -1,12 +1,13 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import ZoneRepository from '#repositories/zoneRepository' + import { gameLogger } from '#application/logger' -import CharacterRepository from '#repositories/characterRepository' -import ZoneManager from '#managers/zoneManager' -import zoneCharacter from '#models/zoneCharacter' -import zoneManager from '#managers/zoneManager' +import { TSocket } from '#application/types' import { Zone } from '#entities/zone' +import ZoneManager from '#managers/zoneManager' +import zoneManager from '#managers/zoneManager' +import zoneCharacter from '#models/zoneCharacter' +import CharacterRepository from '#repositories/characterRepository' +import ZoneRepository from '#repositories/zoneRepository' interface IResponse { zone: Zone diff --git a/src/socketEvents/zone/characterLeave.ts b/src/socketEvents/zone/characterLeave.ts index d01b9a5..6160d8b 100644 --- a/src/socketEvents/zone/characterLeave.ts +++ b/src/socketEvents/zone/characterLeave.ts @@ -1,9 +1,10 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' -import ZoneRepository from '#repositories/zoneRepository' + import { gameLogger } from '#application/logger' +import { TSocket } from '#application/types' import ZoneManager from '#managers/zoneManager' import CharacterRepository from '#repositories/characterRepository' +import ZoneRepository from '#repositories/zoneRepository' export default class ZoneLeaveEvent { constructor( diff --git a/src/socketEvents/zone/characterMove.ts b/src/socketEvents/zone/characterMove.ts index fca9995..55faf62 100644 --- a/src/socketEvents/zone/characterMove.ts +++ b/src/socketEvents/zone/characterMove.ts @@ -1,12 +1,13 @@ import { Server } from 'socket.io' -import { TSocket, ZoneEventTileWithTeleport } from '#application/types' -import { CharacterService } from '#services/characterService' -import { ZoneEventTileService } from '#services/zoneEventTileService' + import Rotation from '#application/character/rotation' import { gameLogger } from '#application/logger' +import { TSocket, ZoneEventTileWithTeleport } from '#application/types' import ZoneManager from '#managers/zoneManager' import ZoneCharacter from '#models/zoneCharacter' import zoneEventTileRepository from '#repositories/zoneEventTileRepository' +import { CharacterService } from '#services/characterService' +import { ZoneEventTileService } from '#services/zoneEventTileService' export default class CharacterMove { private readonly characterService = new CharacterService() diff --git a/src/socketEvents/zone/weather.ts b/src/socketEvents/zone/weather.ts index dea7f79..a11532d 100644 --- a/src/socketEvents/zone/weather.ts +++ b/src/socketEvents/zone/weather.ts @@ -1,6 +1,7 @@ import { Server } from 'socket.io' -import { TSocket } from '#application/types' + import { gameLogger } from '#application/logger' +import { TSocket } from '#application/types' import WeatherManager from '#managers/weatherManager' export default class Weather {