From 3f354366c008d7b4eba5d14207e2148706c9a932 Mon Sep 17 00:00:00 2001 From: nk Date: Sun, 3 Sep 2023 13:30:39 -0500 Subject: [PATCH 1/6] Adds "I" prefix & genericUpdate amng. other things --- package-lock.json | 661 ++++++--------- .../api/genericUpdateController.ts | 27 +- .../api/missionInventoryUpdateController.ts | 16 +- src/managers/sessionManager.ts | 20 +- src/models/inventoryModel.ts | 22 +- src/models/shipModel.ts | 4 +- src/services/inventoryService.ts | 54 +- src/types/commonTypes.ts | 2 +- src/types/genericUpdate.ts | 4 + src/types/inventoryTypes/SuitTypes.ts | 18 +- .../inventoryTypes/commonInventoryTypes.ts | 11 +- src/types/inventoryTypes/inventoryTypes.ts | 757 +++++++++--------- src/types/inventoryTypes/weaponTypes.ts | 16 +- src/types/loginTypes.ts | 2 +- src/types/missionInventoryUpdateType.ts | 47 +- src/types/purchaseTypes.ts | 5 +- src/types/session.ts | 4 +- src/types/shipTypes.ts | 7 +- 18 files changed, 793 insertions(+), 884 deletions(-) create mode 100644 src/types/genericUpdate.ts diff --git a/package-lock.json b/package-lock.json index ce96b3cb..525fa490 100644 --- a/package-lock.json +++ b/package-lock.json @@ -70,18 +70,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", + "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -101,42 +101,19 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", + "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -147,29 +124,6 @@ "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -214,6 +168,15 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", + "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -288,15 +251,15 @@ "dev": true }, "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, "node_modules/@tsconfig/node20": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-1.0.0.tgz", - "integrity": "sha512-AwbXtpWEaRUjbGVwdlusNqwet+jeSk3Nnqf/8+77WJ1/9d6xnqs2QpE9Pdwv8RCoXxtMedWEtlmWY+/irBPcUw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-1.0.2.tgz", + "integrity": "sha512-pw0MmECiSTbBfIlT0x3iQLuJ8s3i2mwYoGxJ3vzqTNMdc4nO2VeqfCOQ/doGFa8iyPlqmBd98/5pBctWz7uN2A==", "dev": true }, "node_modules/@types/body-parser": { @@ -331,9 +294,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.34", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", - "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", + "version": "4.17.36", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", "dev": true, "dependencies": { "@types/node": "*", @@ -342,6 +305,12 @@ "@types/send": "*" } }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -355,23 +324,23 @@ "dev": true }, "node_modules/@types/morgan": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz", - "integrity": "sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ==", + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.5.tgz", + "integrity": "sha512-5TgfIWm0lcTGnbCZExwc19dCOMOMmAiiBZQj8Ko3NRxsVDgRxf+AEGRQTqNVA5Yh2xfdWp4clbAEMbYP+jkOqg==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/node": { - "version": "18.16.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", - "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" + "version": "20.5.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", + "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", "dev": true }, "node_modules/@types/range-parser": { @@ -381,9 +350,9 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", "dev": true }, "node_modules/@types/send": { @@ -397,11 +366,12 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", "dev": true, "dependencies": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } @@ -433,21 +403,20 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.0.tgz", - "integrity": "sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.5.0.tgz", + "integrity": "sha512-2pktILyjvMaScU6iK3925uvGU87E+N9rh372uGZgiMYwafaw9SXq86U04XPq3UH6tzRvNgBsub6x2DacHc33lw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.2.0", - "@typescript-eslint/type-utils": "6.2.0", - "@typescript-eslint/utils": "6.2.0", - "@typescript-eslint/visitor-keys": "6.2.0", + "@typescript-eslint/scope-manager": "6.5.0", + "@typescript-eslint/type-utils": "6.5.0", + "@typescript-eslint/utils": "6.5.0", + "@typescript-eslint/visitor-keys": "6.5.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", "natural-compare": "^1.4.0", - "natural-compare-lite": "^1.4.0", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, @@ -468,39 +437,16 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/@typescript-eslint/parser": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.2.0.tgz", - "integrity": "sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.5.0.tgz", + "integrity": "sha512-LMAVtR5GN8nY0G0BadkG0XIe4AcNMeyEy3DyhKGAh9k4pLSMBO7rF29JvDBpZGCmp5Pgz5RLHP6eCpSYZJQDuQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.2.0", - "@typescript-eslint/types": "6.2.0", - "@typescript-eslint/typescript-estree": "6.2.0", - "@typescript-eslint/visitor-keys": "6.2.0", + "@typescript-eslint/scope-manager": "6.5.0", + "@typescript-eslint/types": "6.5.0", + "@typescript-eslint/typescript-estree": "6.5.0", + "@typescript-eslint/visitor-keys": "6.5.0", "debug": "^4.3.4" }, "engines": { @@ -519,37 +465,14 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.0.tgz", - "integrity": "sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.5.0.tgz", + "integrity": "sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.2.0", - "@typescript-eslint/visitor-keys": "6.2.0" + "@typescript-eslint/types": "6.5.0", + "@typescript-eslint/visitor-keys": "6.5.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -560,13 +483,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.2.0.tgz", - "integrity": "sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.5.0.tgz", + "integrity": "sha512-f7OcZOkRivtujIBQ4yrJNIuwyCQO1OjocVqntl9dgSIZAdKqicj3xFDqDOzHDlGCZX990LqhLQXWRnQvsapq8A==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.2.0", - "@typescript-eslint/utils": "6.2.0", + "@typescript-eslint/typescript-estree": "6.5.0", + "@typescript-eslint/utils": "6.5.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -586,33 +509,10 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/@typescript-eslint/types": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.0.tgz", - "integrity": "sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.5.0.tgz", + "integrity": "sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -623,13 +523,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.0.tgz", - "integrity": "sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.5.0.tgz", + "integrity": "sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.2.0", - "@typescript-eslint/visitor-keys": "6.2.0", + "@typescript-eslint/types": "6.5.0", + "@typescript-eslint/visitor-keys": "6.5.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -649,41 +549,18 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/@typescript-eslint/utils": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.0.tgz", - "integrity": "sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.5.0.tgz", + "integrity": "sha512-9nqtjkNykFzeVtt9Pj6lyR9WEdd8npPhhIPM992FWVkZuS6tmxHfGVnlUcjpUP2hv8r4w35nT33mlxd+Be1ACQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.2.0", - "@typescript-eslint/types": "6.2.0", - "@typescript-eslint/typescript-estree": "6.2.0", + "@typescript-eslint/scope-manager": "6.5.0", + "@typescript-eslint/types": "6.5.0", + "@typescript-eslint/typescript-estree": "6.5.0", "semver": "^7.5.4" }, "engines": { @@ -698,12 +575,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.0.tgz", - "integrity": "sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.5.0.tgz", + "integrity": "sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/types": "6.5.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -897,14 +774,19 @@ "node": ">= 0.10" } }, - "node_modules/body-parser/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/bplist-parser": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", @@ -1117,11 +999,19 @@ } }, "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "ms": "2.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/deep-is": { @@ -1177,12 +1067,11 @@ } }, "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, "node_modules/destroy": { @@ -1224,9 +1113,9 @@ } }, "node_modules/dotenv": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.3.tgz", - "integrity": "sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", "engines": { "node": ">=12" }, @@ -1274,27 +1163,27 @@ } }, "node_modules/eslint": { - "version": "8.45.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", - "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", + "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.48.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -1356,39 +1245,10 @@ } } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -1401,21 +1261,18 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "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, "engines": { - "node": ">=4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -1445,15 +1302,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -1466,7 +1314,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -1493,9 +1341,9 @@ } }, "node_modules/execa": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", - "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -1565,13 +1413,10 @@ "ms": "2.0.0" } }, - "node_modules/express/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -1580,9 +1425,9 @@ "dev": true }, "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, "node_modules/fast-glob": { @@ -1675,6 +1520,19 @@ "node": ">= 0.8" } }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -1692,16 +1550,17 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.7", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12.0.0" } }, "node_modules/flatted": { @@ -1732,6 +1591,20 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -1783,9 +1656,9 @@ } }, "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1859,14 +1732,6 @@ "node": ">= 0.6" } }, - "node_modules/http-errors/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/human-signals": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", @@ -1962,9 +1827,9 @@ } }, "node_modules/is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -2102,6 +1967,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2134,6 +2005,15 @@ "node": ">=12.0.0" } }, + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2306,9 +2186,9 @@ } }, "node_modules/mongodb": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.7.0.tgz", - "integrity": "sha512-zm82Bq33QbqtxDf58fLWBwTjARK3NSvKYjyz997KSy6hpat0prjeX/kxjbPVyZY60XYPDNETaHkHJI2UCzSLuw==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.8.1.tgz", + "integrity": "sha512-wKyh4kZvm6NrCPH8AxyzXm3JBoEf4Xulo0aUWh3hCgwgYJxyQ1KLST86ZZaSWdj6/kxYUA3+YZuyADCE61CMSg==", "dependencies": { "bson": "^5.4.0", "mongodb-connection-string-url": "^2.6.0", @@ -2318,12 +2198,12 @@ "node": ">=14.20.1" }, "optionalDependencies": { - "saslprep": "^1.0.3" + "@mongodb-js/saslprep": "^1.1.0" }, "peerDependencies": { - "@aws-sdk/credential-providers": "^3.201.0", - "@mongodb-js/zstd": "^1.1.0", - "kerberos": "^2.0.1", + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.0.0", + "kerberos": "^1.0.0 || ^2.0.0", "mongodb-client-encryption": ">=2.3.0 <3", "snappy": "^7.2.2" }, @@ -2355,13 +2235,13 @@ } }, "node_modules/mongoose": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.4.1.tgz", - "integrity": "sha512-o3E5KHHiHdaiwCJG3+9r70sncRKki71Ktf/TfXdW6myu+53rtZ56uLl5ylkQiCf60V3COJuOeekcxXVsjQ7cBA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.5.0.tgz", + "integrity": "sha512-FpOWOb0AJuaVcplmEyIJ2eCbVGe4gOoniPD+pmft5BrGrNrsFcnYXlERdXtBApGHMHPwD7WbxTyhCbUNr72F3Q==", "dependencies": { "bson": "^5.4.0", "kareem": "2.5.1", - "mongodb": "5.7.0", + "mongodb": "5.8.1", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", @@ -2396,6 +2276,30 @@ "node": ">= 0.8.0" } }, + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", @@ -2415,44 +2319,17 @@ "node": ">=14.0.0" } }, - "node_modules/mquery/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mquery/node_modules/ms": { + "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "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 }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -2700,9 +2577,9 @@ } }, "node_modules/prettier": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", - "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -2812,12 +2689,12 @@ } }, "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "dev": true, "dependencies": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -3029,18 +2906,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -3358,9 +3223,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", - "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.2.tgz", + "integrity": "sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==", "dev": true, "engines": { "node": ">=16.13.0" @@ -3494,9 +3359,9 @@ } }, "node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/type-check": { @@ -3536,9 +3401,9 @@ } }, "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, "bin": { "tsc": "bin/tsc", diff --git a/src/controllers/api/genericUpdateController.ts b/src/controllers/api/genericUpdateController.ts index ce541ada..63453c94 100644 --- a/src/controllers/api/genericUpdateController.ts +++ b/src/controllers/api/genericUpdateController.ts @@ -1,7 +1,30 @@ +import { updateGeneric } from "@/src/services/inventoryService"; +import { IGenericUpdate } from "@/src/types/genericUpdate"; import { RequestHandler } from "express"; -const genericUpdateController: RequestHandler = (_req, res) => { - res.json({}); +// TODO: Nightwave evidence submission support is the only thing missing. +// TODO: Also, you might want to test this, because I definitely didn't. +const genericUpdateController: RequestHandler = async (request, response) => { + const accountId = request.query.accountId as string; + + const [body] = String(request.body).split("\n"); + + let reply = {}; + try { + const update = JSON.parse(body) as IGenericUpdate; + if (typeof update !== "object") { + throw new Error("Invalid data format"); + } + + reply = await updateGeneric(update, accountId); + } catch (err) { + console.error("Error parsing JSON data:", err); + } + + // Response support added for when Nightwave is supported below. + // response.json(reply); + + response.json({}); }; export { genericUpdateController }; diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index bde878af..5eba667d 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -1,6 +1,6 @@ import { RequestHandler } from "express"; import { missionInventoryUpdate } from "@/src/services/inventoryService"; -import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; +import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; /* - [ ] crossPlaySetting - [ ] rewardsMultiplier @@ -25,13 +25,13 @@ import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; - [ ] hosts - [x] ChallengeProgress - [ ] SeasonChallengeHistory -- [ ] PS +- [ ] PS (Passive anti-cheat data which includes your username, module list, process list, and system name. @nk for more info.) - [ ] ActiveDojoColorResearch - [ ] RewardInfo - [ ] ReceivedCeremonyMsg - [ ] LastCeremonyResetDate -- [ ] MissionPTS -- [ ] RepHash +- [ ] MissionPTS (Used to validate the mission/alive time above. @nk for more info.) +- [ ] RepHash (A hash from the replication manager/RepMgr (IDA search it). Unknown what it does.) - [ ] EndOfMatchUpload - [ ] ObjectiveReached - [ ] FpsAvg @@ -42,14 +42,14 @@ import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const missionInventoryUpdateController: RequestHandler = async (req, res) => { - const [data] = String(req.body).split("\n"); const id = req.query.accountId as string; - // TODO - salt check + // Remove the hash, which is added directly below the JSON data. + const [data] = String(req.body).split("\n"); try { - const parsedData = JSON.parse(data) as MissionInventoryUpdate; - if (typeof parsedData !== "object" || parsedData === null) throw new Error("Invalid data format"); + const parsedData = JSON.parse(data) as IMissionInventoryUpdate; + if (typeof parsedData !== "object") throw new Error("Invalid data format"); await missionInventoryUpdate(parsedData, id); } catch (err) { console.error("Error parsing JSON data:", err); diff --git a/src/managers/sessionManager.ts b/src/managers/sessionManager.ts index de990f9e..e6558d57 100644 --- a/src/managers/sessionManager.ts +++ b/src/managers/sessionManager.ts @@ -1,10 +1,10 @@ -import { Session, FindSessionRequest } from "@/src/types/session"; +import { ISession, IFindSessionRequest } from "@/src/types/session"; -const sessions: Session[] = []; +const sessions: ISession[] = []; -function createNewSession(sessionData: Session, Creator: string): Session { +function createNewSession(sessionData: ISession, Creator: string): ISession { const sessionId = getNewSessionID(); - const newSession: Session = { + const newSession: ISession = { sessionId, creatorId: Creator, maxPlayers: sessionData.maxPlayers || 4, @@ -35,15 +35,15 @@ function createNewSession(sessionData: Session, Creator: string): Session { return newSession; } -function getAllSessions(): Session[] { +function getAllSessions(): ISession[] { return sessions; } -function getSessionByID(sessionId: string): Session | undefined { +function getSessionByID(sessionId: string): ISession | undefined { return sessions.find(session => session.sessionId === sessionId); } -function getSession(sessionIdOrRequest: string | FindSessionRequest): any[] { +function getSession(sessionIdOrRequest: string | IFindSessionRequest): any[] { if (typeof sessionIdOrRequest === "string") { const session = sessions.find(session => session.sessionId === sessionIdOrRequest); if (session) { @@ -58,10 +58,10 @@ function getSession(sessionIdOrRequest: string | FindSessionRequest): any[] { return []; } - const request = sessionIdOrRequest as FindSessionRequest; + const request = sessionIdOrRequest as IFindSessionRequest; const matchingSessions = sessions.filter(session => { for (const key in request) { - if (key !== "eloRating" && key !== "queryId" && request[key] !== session[key as keyof Session]) { + if (key !== "eloRating" && key !== "queryId" && request[key] !== session[key as keyof ISession]) { return false; } } @@ -74,7 +74,7 @@ function getSession(sessionIdOrRequest: string | FindSessionRequest): any[] { })); } -function getSessionByCreatorID(creatorId: string): Session | undefined { +function getSessionByCreatorID(creatorId: string): ISession | undefined { return sessions.find(session => session.creatorId === creatorId); } diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index f73dd1fb..9578d314 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -1,6 +1,12 @@ import { Model, Schema, Types, model } from "mongoose"; -import { FlavourItem, RawUpgrade, MiscItem, IInventoryDatabase, Booster } from "../types/inventoryTypes/inventoryTypes"; -import { Oid } from "../types/commonTypes"; +import { + IFlavourItem, + IRawUpgrade, + IMiscItem, + IInventoryDatabase, + IBooster +} from "../types/inventoryTypes/inventoryTypes"; +import { IOid } from "../types/commonTypes"; import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; @@ -74,7 +80,7 @@ const BoosterSchema = new Schema({ WeaponSchema.set("toJSON", { transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; + returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies IOid; delete returnedObject._id; delete returnedObject.__v; } @@ -130,7 +136,7 @@ const suitSchema = new Schema({ suitSchema.set("toJSON", { transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; + returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies IOid; delete returnedObject._id; delete returnedObject.__v; } @@ -338,10 +344,10 @@ type InventoryDocumentProps = { LongGuns: Types.DocumentArray; Pistols: Types.DocumentArray; Melee: Types.DocumentArray; - FlavourItems: Types.DocumentArray; - RawUpgrades: Types.DocumentArray; - MiscItems: Types.DocumentArray; - Boosters: Types.DocumentArray; + FlavourItems: Types.DocumentArray; + RawUpgrades: Types.DocumentArray; + MiscItems: Types.DocumentArray; + Boosters: Types.DocumentArray; }; type InventoryModelType = Model; diff --git a/src/models/shipModel.ts b/src/models/shipModel.ts index 463a95c2..bd56d933 100644 --- a/src/models/shipModel.ts +++ b/src/models/shipModel.ts @@ -1,6 +1,6 @@ import { Schema, model } from "mongoose"; import { IShip } from "../types/shipTypes"; -import { Oid } from "../types/commonTypes"; +import { IOid } from "../types/commonTypes"; const roomSchema = new Schema( { @@ -19,7 +19,7 @@ const shipSchema = new Schema({ shipSchema.set("toJSON", { transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ShipId = { $oid: returnedObject._id.toString() } satisfies Oid; + returnedObject.ShipId = { $oid: returnedObject._id.toString() } satisfies IOid; delete returnedObject._id; } }); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 19900497..2b79db76 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -5,13 +5,18 @@ import { Types } from "mongoose"; import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; import { SlotType } from "@/src/types/purchaseTypes"; import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; -import { ChallengeProgress, FlavourItem, IInventoryDatabaseDocument } from "@/src/types/inventoryTypes/inventoryTypes"; import { - MissionInventoryUpdate, - MissionInventoryUpdateCard, - MissionInventoryUpdateGear, - MissionInventoryUpdateItem + IChallengeProgress, + IFlavourItem, + IInventoryDatabaseDocument +} from "@/src/types/inventoryTypes/inventoryTypes"; +import { + IMissionInventoryUpdate, + IMissionInventoryUpdateCard, + IMissionInventoryUpdateGear, + IMissionInventoryUpdateItem } from "../types/missionInventoryUpdateType"; +import { IGenericUpdate } from "../types/genericUpdate"; const createInventory = async (accountOwnerId: Types.ObjectId) => { try { @@ -76,6 +81,13 @@ export const updateCurrency = async (price: number, usePremium: boolean, account return { [currencyName]: -price }; }; +export const updateGeneric = async (data: IGenericUpdate, accountId: string) => { + const inventory = await getInventory(accountId); + data.NodeIntrosCompleted = data.NodeIntrosCompleted.concat(inventory.NodeIntrosCompleted); + await inventory.save(); + return data; +}; + export type WeaponTypeInternal = "LongGuns" | "Pistols" | "Melee"; export const addWeapon = async ( @@ -104,7 +116,7 @@ export const addWeapon = async ( return changedInventory[weaponType][weaponIndex - 1].toJSON(); }; -export const addCustomization = async (customizatonName: string, accountId: string): Promise => { +export const addCustomization = async (customizatonName: string, accountId: string): Promise => { const inventory = await getInventory(accountId); const flavourItemIndex = inventory.FlavourItems.push({ ItemType: customizatonName }) - 1; @@ -114,7 +126,7 @@ export const addCustomization = async (customizatonName: string, accountId: stri const addGearExpByCategory = ( inventory: IInventoryDatabaseDocument, - gearArray: MissionInventoryUpdateGear[] | undefined, + gearArray: IMissionInventoryUpdateGear[] | undefined, categoryName: "Pistols" | "LongGuns" | "Melee" | "Suits" ) => { const category = inventory[categoryName]; @@ -132,7 +144,7 @@ const addGearExpByCategory = ( const addItemsByCategory = ( inventory: IInventoryDatabaseDocument, - itemsArray: (MissionInventoryUpdateItem | MissionInventoryUpdateCard)[] | undefined, + itemsArray: (IMissionInventoryUpdateItem | IMissionInventoryUpdateCard)[] | undefined, categoryName: "RawUpgrades" | "MiscItems" ) => { const category = inventory[categoryName]; @@ -149,7 +161,7 @@ const addItemsByCategory = ( }); }; -const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: ChallengeProgress[] | undefined) => { +const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: IChallengeProgress[] | undefined) => { const category = inventory.ChallengeProgress; itemsArray?.forEach(({ Name, Progress }) => { @@ -167,19 +179,27 @@ const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: Challe const gearKeys = ["Suits", "Pistols", "LongGuns", "Melee"] as const; type GearKeysType = (typeof gearKeys)[number]; -export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accountId: string): Promise => { +export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, accountId: string): Promise => { const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress } = data; const inventory = await getInventory(accountId); - // TODO - multipliers logic - // credits - inventory.RegularCredits += RegularCredits || 0; + // Currency + // !!! TODO: Make a helper specifically for adding currencies with negative/positive checks shared between them. + // TODO - Multipliers (from Boosters or otherwise). + const credits = RegularCredits as number; + inventory.RegularCredits += credits < 0 ? Math.abs(credits) : credits; // If credits are negative, flip them. - // gear exp + // If we added credits and the value flipped, flip it (again). Eg. -10000 turns into 10000. + if (inventory.RegularCredits < 0 && credits > 0) { + inventory.RegularCredits = Math.abs(inventory.RegularCredits); + } + + // Gear XP gearKeys.forEach((key: GearKeysType) => addGearExpByCategory(inventory, data[key], key)); - // other - addItemsByCategory(inventory, RawUpgrades, "RawUpgrades"); // TODO - check mods fusion level + // Other + // TODO: Ensure mods have a valid fusion level and items have a valid quantity, preferably inside of the functions themselves. + addItemsByCategory(inventory, RawUpgrades, "RawUpgrades"); addItemsByCategory(inventory, MiscItems, "MiscItems"); addChallenges(inventory, ChallengeProgress); @@ -187,7 +207,7 @@ export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accou }; export const addBooster = async (ItemType: string, time: number, accountId: string): Promise => { - const currentTime = Math.floor(Date.now() / 1000) - 129600; // booster time getting more without 129600, probably defence logic, idk + const currentTime = Math.floor(Date.now() / 1000) - 129600; // Value is wrong without 129600. Figure out why, please. :) const inventory = await getInventory(accountId); const { Boosters } = inventory; diff --git a/src/types/commonTypes.ts b/src/types/commonTypes.ts index 4c1a7bf7..8b7f30b9 100644 --- a/src/types/commonTypes.ts +++ b/src/types/commonTypes.ts @@ -1,3 +1,3 @@ -export interface Oid { +export interface IOid { $oid: string; } diff --git a/src/types/genericUpdate.ts b/src/types/genericUpdate.ts new file mode 100644 index 00000000..d565b1e4 --- /dev/null +++ b/src/types/genericUpdate.ts @@ -0,0 +1,4 @@ +export interface IGenericUpdate { + NodeIntrosCompleted: string[]; + // AffiliationMods: any[]; +} diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts index 7dc8ca5f..033b1967 100644 --- a/src/types/inventoryTypes/SuitTypes.ts +++ b/src/types/inventoryTypes/SuitTypes.ts @@ -1,5 +1,5 @@ -import { Oid } from "@/src/types/commonTypes"; -import { AbilityOverride, Color, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IOid } from "@/src/types/commonTypes"; +import { IAbilityOverride, IColor, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { Document, Types } from "mongoose"; // export interface ISuitDocument extends ISuitResponse, Document {} @@ -8,7 +8,7 @@ export interface ISuitDocument extends Document, ISuitResponse { } export interface ISuitResponse extends ISuitDatabase { - ItemId: Oid; + ItemId: IOid; } export interface ISuitDatabase { @@ -18,7 +18,7 @@ export interface ISuitDatabase { XP?: number; InfestationDate?: Date; Features?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; Polarized?: number; ModSlotPurchases?: number; FocusLens?: string; @@ -28,14 +28,14 @@ export interface ISuitDatabase { export interface SuitConfig { Skins?: string[]; - pricol?: Color; - attcol?: Color; - eyecol?: Color; - sigcol?: Color; + pricol?: IColor; + attcol?: IColor; + eyecol?: IColor; + sigcol?: IColor; Upgrades?: string[]; Songs?: Song[]; Name?: string; - AbilityOverride?: AbilityOverride; + AbilityOverride?: IAbilityOverride; PvpUpgrades?: string[]; ugly?: boolean; } diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts index fd59073c..0664407f 100644 --- a/src/types/inventoryTypes/commonInventoryTypes.ts +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -1,4 +1,4 @@ -export interface Polarity { +export interface IPolarity { Slot: number; Value: FocusSchool; } @@ -15,7 +15,7 @@ export enum FocusSchool { ApWard = "AP_WARD" } -export interface Color { +export interface IColor { t0?: number; t1?: number; t2?: number; @@ -26,16 +26,17 @@ export interface Color { m1?: number; } -export interface AbilityOverride { +export interface IAbilityOverride { Ability: string; Index: number; } -export interface SlotsBin { +export interface ISlotsBin { Slots: number; } -export interface sigcol { +// ISigCol? IsIgCoL? ISIGCOL! +export interface Isigcol { t0: number; t1: number; en: number; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index aacfdc15..9fef903d 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -1,10 +1,8 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ - import { Document, Types } from "mongoose"; -import { Oid } from "../commonTypes"; -import { AbilityOverride, Color, FocusSchool, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IOid } from "../commonTypes"; +import { IAbilityOverride, IColor, FocusSchool, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; -import { OperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; +import { IOperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; export interface IInventoryDatabase extends IInventoryResponse { accountOwnerId: Types.ObjectId; @@ -20,14 +18,14 @@ export interface IInventoryResponse { PremiumCredits: number; PremiumCreditsFree: number; FusionPoints: number; - SuitBin: CrewShipSalvageBinClass; - WeaponBin: CrewShipSalvageBinClass; - SentinelBin: CrewShipSalvageBinClass; - SpaceSuitBin: CrewShipSalvageBinClass; - SpaceWeaponBin: CrewShipSalvageBinClass; - PvpBonusLoadoutBin: CrewMemberBinClass; - PveBonusLoadoutBin: CrewShipSalvageBinClass; - RandomModBin: CrewShipSalvageBinClass; + SuitBin: ICrewShipSalvageBinClass; + WeaponBin: ICrewShipSalvageBinClass; + SentinelBin: ICrewShipSalvageBinClass; + SpaceSuitBin: ICrewShipSalvageBinClass; + SpaceWeaponBin: ICrewShipSalvageBinClass; + PvpBonusLoadoutBin: ICrewMemberBinClass; + PveBonusLoadoutBin: ICrewShipSalvageBinClass; + RandomModBin: ICrewShipSalvageBinClass; TradesRemaining: number; DailyAffiliation: number; DailyAffiliationPvp: number; @@ -35,137 +33,137 @@ export interface IInventoryResponse { DailyFocus: number; GiftsRemaining: number; HandlerPoints: number; - MiscItems: Consumable[]; + MiscItems: IConsumable[]; ChallengesFixVersion: number; - ChallengeProgress: ChallengeProgress[]; - RawUpgrades: RawUpgrade[]; + ChallengeProgress: IChallengeProgress[]; + RawUpgrades: IRawUpgrade[]; ReceivedStartingGear: boolean; Suits: ISuitDatabase[]; LongGuns: IWeaponDatabase[]; Pistols: IWeaponDatabase[]; Melee: IWeaponDatabase[]; - Ships: Ship[]; - QuestKeys: QuestKey[]; - FlavourItems: FlavourItem[]; - Scoops: Scoop[]; + Ships: IShip[]; + QuestKeys: IQuestKey[]; + FlavourItems: IFlavourItem[]; + Scoops: IScoop[]; TrainingRetriesLeft: number; - LoadOutPresets: LoadOutPresets; - CurrentLoadOutIds: Array; - Missions: Mission[]; + LoadOutPresets: ILoadOutPresets; + CurrentLoadOutIds: Array; + Missions: IMission[]; RandomUpgradesIdentified: number; LastRegionPlayed: string; - XPInfo: EmailItem[]; - Recipes: Consumable[]; - WeaponSkins: WeaponSkin[]; - PendingRecipes: PendingRecipe[]; + XPInfo: IEmailItem[]; + Recipes: IConsumable[]; + WeaponSkins: IWeaponSkin[]; + PendingRecipes: IPendingRecipe[]; TrainingDate: Date; PlayerLevel: number; - Upgrades: CrewShipSalvagedWeaponSkin[]; + Upgrades: ICrewShipSalvagedWeaponSkin[]; EquippedGear: string[]; DeathMarks: string[]; - FusionTreasures: FusionTreasure[]; - WebFlags: WebFlags; + FusionTreasures: IFusionTreasure[]; + WebFlags: IWebFlags; CompletedAlerts: string[]; - Consumables: Consumable[]; - LevelKeys: Consumable[]; - TauntHistory: TauntHistory[]; + Consumables: IConsumable[]; + LevelKeys: IConsumable[]; + TauntHistory: ITauntHistory[]; StoryModeChoice: string; - PeriodicMissionCompletions: PeriodicMissionCompletion[]; - KubrowPetEggs: KubrowPetEgg[]; - LoreFragmentScans: LoreFragmentScan[]; + PeriodicMissionCompletions: IPeriodicMissionCompletion[]; + KubrowPetEggs: IKubrowPetEgg[]; + LoreFragmentScans: ILoreFragmentScan[]; EquippedEmotes: string[]; - PendingTrades: PendingTrade[]; - Boosters: Booster[]; + PendingTrades: IPendingTrade[]; + Boosters: IBooster[]; ActiveDojoColorResearch: string; - SentientSpawnChanceBoosters: SentientSpawnChanceBoosters; - Affiliations: Affiliation[]; + SentientSpawnChanceBoosters: ISentientSpawnChanceBoosters; + Affiliations: IAffiliation[]; QualifyingInvasions: any[]; FactionScores: number[]; - SpaceSuits: Space[]; - SpaceMelee: Space[]; - SpaceGuns: SpaceGun[]; + SpaceSuits: ISpace[]; + SpaceMelee: ISpace[]; + SpaceGuns: ISpaceGun[]; ArchwingEnabled: boolean; PendingSpectreLoadouts: any[]; - SpectreLoadouts: SpectreLoadout[]; - SentinelWeapons: SentinelWeapon[]; - Sentinels: Sentinel[]; - EmailItems: EmailItem[]; + SpectreLoadouts: ISpectreLoadout[]; + SentinelWeapons: ISentinelWeapon[]; + Sentinels: ISentinel[]; + EmailItems: IEmailItem[]; CompletedSyndicates: string[]; - FocusXP: FocusXP; + FocusXP: IFocusXP; Wishlist: string[]; - Alignment: Alignment; + Alignment: IAlignment; CompletedSorties: string[]; - LastSortieReward: LastSortieReward[]; - Drones: Drone[]; - StepSequencers: StepSequencer[]; + LastSortieReward: ILastSortieReward[]; + Drones: IDrone[]; + StepSequencers: IStepSequencer[]; ActiveAvatarImageType: string; - KubrowPets: KubrowPet[]; - ShipDecorations: Consumable[]; - OperatorAmpBin: CrewShipSalvageBinClass; + KubrowPets: IKubrowPet[]; + ShipDecorations: IConsumable[]; + OperatorAmpBin: ICrewShipSalvageBinClass; DailyAffiliationCetus: number; DailyAffiliationQuills: number; - DiscoveredMarkers: DiscoveredMarker[]; - CompletedJobs: CompletedJob[]; + DiscoveredMarkers: IDiscoveredMarker[]; + CompletedJobs: ICompletedJob[]; FocusAbility: string; - FocusUpgrades: FocusUpgrade[]; - OperatorAmps: OperatorAmp[]; + FocusUpgrades: IFocusUpgrade[]; + OperatorAmps: IOperatorAmp[]; HasContributedToDojo: boolean; HWIDProtectEnabled: boolean; - KubrowPetPrints: KubrowPetPrint[]; - AlignmentReplay: Alignment; - PersonalGoalProgress: PersonalGoalProgress[]; + KubrowPetPrints: IKubrowPetPrint[]; + AlignmentReplay: IAlignment; + PersonalGoalProgress: IPersonalGoalProgress[]; DailyAffiliationSolaris: number; - SpecialItems: SpecialItem[]; + SpecialItems: ISpecialItem[]; ThemeStyle: string; ThemeBackground: string; ThemeSounds: string; BountyScore: number; - ChallengeInstanceStates: ChallengeInstanceState[]; + ChallengeInstanceStates: IChallengeInstanceState[]; LoginMilestoneRewards: string[]; - OperatorLoadOuts: OperatorLoadOut[]; + OperatorLoadOuts: IOperatorLoadOut[]; DailyAffiliationVentkids: number; DailyAffiliationVox: number; RecentVendorPurchases: Array; - Hoverboards: Hoverboard[]; + Hoverboards: IHoverboard[]; NodeIntrosCompleted: string[]; - CompletedJobChains: CompletedJobChain[]; - SeasonChallengeHistory: SeasonChallengeHistory[]; - MoaPets: MoaPet[]; + CompletedJobChains: ICompletedJobChain[]; + SeasonChallengeHistory: ISeasonChallengeHistory[]; + MoaPets: IMoaPet[]; EquippedInstrument: string; - InvasionChainProgress: InvasionChainProgress[]; - DataKnives: DataKnife[]; - NemesisHistory: NemesisHistory[]; + InvasionChainProgress: IInvasionChainProgress[]; + DataKnives: IDataKnife[]; + NemesisHistory: INemesisHistory[]; LastNemesisAllySpawnTime: Date; - Settings: Settings; - PersonalTechProjects: PersonalTechProject[]; - CrewShips: CrewShip[]; - CrewShipSalvageBin: CrewShipSalvageBinClass; - PlayerSkills: PlayerSkills; - CrewShipAmmo: Consumable[]; - CrewShipSalvagedWeaponSkins: CrewShipSalvagedWeaponSkin[]; - CrewShipWeapons: CrewShipWeapon[]; - CrewShipSalvagedWeapons: CrewShipWeapon[]; - CrewShipWeaponSkins: CrewShipSalvagedWeaponSkin[]; + Settings: ISettings; + PersonalTechProjects: IPersonalTechProject[]; + CrewShips: ICrewShip[]; + CrewShipSalvageBin: ICrewShipSalvageBinClass; + PlayerSkills: IPlayerSkills; + CrewShipAmmo: IConsumable[]; + CrewShipSalvagedWeaponSkins: ICrewShipSalvagedWeaponSkin[]; + CrewShipWeapons: ICrewShipWeapon[]; + CrewShipSalvagedWeapons: ICrewShipWeapon[]; + CrewShipWeaponSkins: ICrewShipSalvagedWeaponSkin[]; TradeBannedUntil: Date; PlayedParkourTutorial: boolean; SubscribedToEmailsPersonalized: number; - MechBin: CrewMemberBinClass; + MechBin: ICrewMemberBinClass; DailyAffiliationEntrati: number; DailyAffiliationNecraloid: number; - MechSuits: MechSuit[]; - InfestedFoundry: InfestedFoundry; + MechSuits: IMechSuit[]; + InfestedFoundry: IInfestedFoundry; BlessingCooldown: Date; - CrewMemberBin: CrewMemberBinClass; - CrewShipHarnesses: CrewShipHarness[]; - CrewShipRawSalvage: Consumable[]; - CrewMembers: CrewMember[]; - AdultOperatorLoadOuts: AdultOperatorLoadOut[]; - LotusCustomization: LotusCustomization; + CrewMemberBin: ICrewMemberBinClass; + CrewShipHarnesses: ICrewShipHarness[]; + CrewShipRawSalvage: IConsumable[]; + CrewMembers: ICrewMember[]; + AdultOperatorLoadOuts: IAdultOperatorLoadOut[]; + LotusCustomization: ILotusCustomization; UseAdultOperatorLoadout: boolean; DailyAffiliationZariman: number; NemesisAbandonedRewards: string[]; DailyAffiliationKahl: number; - LastInventorySync: Oid; + LastInventorySync: IOid; NextRefill: Date; ActiveLandscapeTraps: any[]; EvolutionProgress: any[]; @@ -174,26 +172,26 @@ export interface IInventoryResponse { Quests: any[]; Robotics: any[]; UsedDailyDeals: any[]; - LibraryPersonalProgress: LibraryPersonalProgress[]; - CollectibleSeries: CollectibleSery[]; - LibraryAvailableDailyTaskInfo: LibraryAvailableDailyTaskInfo; + LibraryPersonalProgress: ILibraryPersonalProgress[]; + CollectibleSeries: ICollectibleSery[]; + LibraryAvailableDailyTaskInfo: ILibraryAvailableDailyTaskInfo; HasResetAccount: boolean; - PendingCoupon: PendingCoupon; + PendingCoupon: IPendingCoupon; Harvestable: boolean; DeathSquadable: boolean; } -export interface AdultOperatorLoadOut { +export interface IAdultOperatorLoadOut { Skins: string[]; - attcol: Color; - eyecol: Color; - facial: Color; - pricol: Color; + attcol: IColor; + eyecol: IColor; + facial: IColor; + pricol: IColor; Upgrades?: string[]; - ItemId: Oid; + ItemId: IOid; } -export interface Affiliation { +export interface IAffiliation { Initiated?: boolean; Standing: number; Title?: number; @@ -202,253 +200,254 @@ export interface Affiliation { Tag: string; } -export interface Alignment { +export interface IAlignment { Wisdom: number; Alignment: number; } -export interface Date { +export interface IDate { $date: { $numberLong: string }; } -export interface Booster { +export interface IBooster { ExpiryDate: number; ItemType: string; } -export interface ChallengeInstanceState { - id: Oid; +export interface IChallengeInstanceState { + id: IOid; Progress: number; - params: Param[]; + params: IParam[]; IsRewardCollected: boolean; } -export interface Param { +export interface IParam { n: string; v: string; } -export interface ChallengeProgress { +export interface IChallengeProgress { Progress: number; Name: string; Completed?: string[]; } -export interface CollectibleSery { +export interface ICollectibleSery { CollectibleType: string; Count: number; Tracking: string; ReqScans: number; - IncentiveStates: IncentiveState[]; + IncentiveStates: IIncentiveState[]; } -export interface IncentiveState { +export interface IIncentiveState { threshold: number; complete: boolean; sent: boolean; } -export interface CompletedJobChain { +export interface ICompletedJobChain { LocationTag: string; Jobs: string[]; } -export interface CompletedJob { +export interface ICompletedJob { JobId: string; StageCompletions: number[]; } -export interface Consumable { +export interface IConsumable { ItemCount: number; ItemType: string; } -export interface CrewMemberBinClass { +export interface ICrewMemberBinClass { Slots: number; } -export interface CrewMember { +export interface ICrewMember { ItemType: string; NemesisFingerprint: number; Seed: number; HireDate: Date; AssignedRole: number; - SkillEfficiency: SkillEfficiency; + SkillEfficiency: ISkillEfficiency; WeaponConfigIdx: number; - WeaponId: Oid; + WeaponId: IOid; XP: number; PowersuitType: string; - Configs: CrewMemberConfig[]; + Configs: ICrewMemberConfig[]; SecondInCommand: boolean; - ItemId: Oid; + ItemId: IOid; } // eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface CrewMemberConfig {} +export interface ICrewMemberConfig {} -export interface SkillEfficiency { - PILOTING: Combat; - GUNNERY: Combat; - ENGINEERING: Combat; - COMBAT: Combat; - SURVIVABILITY: Combat; +export interface ISkillEfficiency { + PILOTING: ICombat; + GUNNERY: ICombat; + ENGINEERING: ICombat; + COMBAT: ICombat; + SURVIVABILITY: ICombat; } -export interface Combat { +export interface ICombat { Assigned: number; } -export interface CrewShipHarness { +export interface ICrewShipHarness { ItemType: string; - Configs: CrewShipHarnessConfig[]; + Configs: ICrewShipHarnessConfig[]; Features: number; UpgradeVer: number; XP: number; - Polarity: Polarity[]; + Polarity: IPolarity[]; Polarized: number; - ItemId: Oid; + ItemId: IOid; } -export interface CrewShipHarnessConfig { +export interface ICrewShipHarnessConfig { Upgrades?: string[]; } -export interface CrewShipSalvageBinClass { +export interface ICrewShipSalvageBinClass { Extra: number; Slots: number; } -export interface CrewShipSalvagedWeaponSkin { +export interface ICrewShipSalvagedWeaponSkin { ItemType: string; UpgradeFingerprint?: string; - ItemId: Oid; + ItemId: IOid; } -export interface CrewShipWeapon { +export interface ICrewShipWeapon { ItemType: string; UpgradeType?: string; UpgradeFingerprint?: string; - Configs?: CrewShipHarnessConfig[]; + Configs?: ICrewShipHarnessConfig[]; UpgradeVer?: number; - ItemId: Oid; + ItemId: IOid; } -export interface CrewShip { +export interface ICrewShip { ItemType: string; - Configs: CrewShipConfig[]; - Weapon: CrewshipWeapon; - Customization: Customization; + Configs: ICrewShipConfig[]; + Weapon: ICrewshipWeapon; + Customization: ICustomization; ItemName: string; - RailjackImage: FlavourItem; - CrewMembers: CrewMembers; - ItemId: Oid; + RailjackImage: IFlavourItem; + CrewMembers: ICrewMembers; + ItemId: IOid; } -export interface CrewShipConfig { +export interface ICrewShipConfig { Skins?: string[]; - pricol?: Color; + pricol?: IColor; } -export interface CrewMembers { - SLOT_A: Slot; - SLOT_B: Slot; - SLOT_C: Slot; +export interface ICrewMembers { + SLOT_A: ISlot; + SLOT_B: ISlot; + SLOT_C: ISlot; } -export interface Slot { - ItemId: Oid; +export interface ISlot { + ItemId: IOid; } -export interface Customization { - CrewshipInterior: Terior; +export interface ICustomization { + CrewshipInterior: ITerior; } -export interface Terior { +export interface ITerior { SkinFlavourItem: string; - Colors: Color; - ShipAttachments?: ShipAttachments; + Colors: IColor; + ShipAttachments?: IShipAttachments; } -export interface ShipAttachments { +export interface IShipAttachments { HOOD_ORNAMENT: string; } -export interface FlavourItem { +export interface IFlavourItem { ItemType: string; } -export interface RawUpgrade { +export interface IRawUpgrade { ItemCount: number; ItemType: string; } -export interface MiscItem { +export interface IMiscItem { ItemCount: number; ItemType: string; } -export interface CrewshipWeapon { - PILOT: Pilot; - PORT_GUNS: PortGuns; +export interface ICrewshipWeapon { + PILOT: IPilot; + PORT_GUNS: IPortGuns; } -export interface Pilot { - PRIMARY_A: L; - SECONDARY_A: L; +export interface IPilot { + PRIMARY_A: IL; + SECONDARY_A: IL; } -export interface L { - ItemId?: Oid; +// L? Bozo. +export interface IL { + ItemId?: IOid; mod?: number; cus?: number; ItemType?: string; hide?: boolean; } -export interface PortGuns { - PRIMARY_A: L; +export interface IPortGuns { + PRIMARY_A: IL; } -export interface DataKnife { +export interface IDataKnife { ItemType: string; XP: number; - Configs: DataKnifeConfig[]; + Configs: IDataKnifeConfig[]; UpgradeVer: number; - ItemId: Oid; + ItemId: IOid; } -export interface DataKnifeConfig { +export interface IDataKnifeConfig { Upgrades?: string[]; - pricol?: Color; + pricol?: IColor; Skins: string[]; - attcol?: Color; - sigcol?: Color; + attcol?: IColor; + sigcol?: IColor; } -export interface DiscoveredMarker { +export interface IDiscoveredMarker { tag: string; discoveryState: number[]; } -export interface Drone { +export interface IDrone { ItemType: string; CurrentHP: number; - ItemId: Oid; + ItemId: IOid; RepairStart?: Date; } -export interface EmailItem { +export interface IEmailItem { ItemType: string; XP: number; } -export interface FocusUpgrade { +export interface IFocusUpgrade { ItemType: string; Level?: number; IsUniversal?: boolean; } -export interface FocusXP { +export interface IFocusXP { AP_POWER: number; AP_TACTIC: number; AP_DEFENSE: number; @@ -456,33 +455,33 @@ export interface FocusXP { AP_WARD: number; } -export interface FusionTreasure { +export interface IFusionTreasure { ItemCount: number; ItemType: string; Sockets: number; } -export interface Hoverboard { +export interface IHoverboard { ItemType: string; - Configs: HoverboardConfig[]; + Configs: IHoverboardConfig[]; ModularParts: string[]; ItemName?: string; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; UpgradeVer: number; XP: number; Features: number; - ItemId: Oid; + ItemId: IOid; } -export interface HoverboardConfig { +export interface IHoverboardConfig { Upgrades?: string[]; - Skins?: PurpleSkin[]; - pricol?: Color; - sigcol?: Sigcol; - attcol?: Color; + Skins?: IPurpleSkin[]; + pricol?: IColor; + sigcol?: ISigcol; + attcol?: IColor; } -export enum PurpleSkin { +export enum IPurpleSkin { Empty = "", The5Be4Af71A38E4A9306040E15 = "5be4af71a38e4a9306040e15", The5C930Ac3A38E4A24Bc3Ad5De = "5c930ac3a38e4a24bc3ad5de", @@ -490,58 +489,58 @@ export enum PurpleSkin { The5Dd8A8E3A38E4A321A45E6A0 = "5dd8a8e3a38e4a321a45e6a0" } -export interface Sigcol { +export interface ISigcol { t3: number; } -export interface InfestedFoundry { +export interface IInfestedFoundry { Name: string; - Resources: Resource[]; + Resources: IResource[]; Slots: number; XP: number; - ConsumedSuits: ConsumedSuit[]; + ConsumedSuits: IConsumedSuit[]; InvigorationIndex: number; InvigorationSuitOfferings: string[]; InvigorationsApplied: number; } -export interface ConsumedSuit { +export interface IConsumedSuit { s: string; - c?: Color; + c?: IColor; } -export interface Resource { +export interface IResource { ItemType: string; Count: number; } -export interface InvasionChainProgress { - id: Oid; +export interface IInvasionChainProgress { + id: IOid; count: number; } -export interface KubrowPetEgg { +export interface IKubrowPetEgg { ItemType: KubrowPetEggItemType; ExpirationDate: Date; - ItemId: Oid; + ItemId: IOid; } export enum KubrowPetEggItemType { LotusTypesGameKubrowPetEggsKubrowEgg = "/Lotus/Types/Game/KubrowPet/Eggs/KubrowEgg" } -export interface KubrowPetPrint { +export interface IKubrowPetPrint { ItemType: KubrowPetPrintItemType; Name: string; IsMale: boolean; Size: number; - DominantTraits: Traits; - RecessiveTraits: Traits; - ItemId: Oid; + DominantTraits: ITraits; + RecessiveTraits: ITraits; + ItemId: IOid; InheritedModularParts?: any[]; } -export interface Traits { +export interface ITraits { BaseColor: string; SecondaryColor: string; TertiaryColor: string; @@ -566,38 +565,38 @@ export enum KubrowPetPrintItemType { LotusTypesGameKubrowPetImprintedTraitPrint = "/Lotus/Types/Game/KubrowPet/ImprintedTraitPrint" } -export interface KubrowPet { +export interface IKubrowPet { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; UpgradeVer: number; - Details: Details; + Details: IDetails; XP?: number; Polarized?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; Features?: number; InfestationDate?: Date; InfestationDays?: number; InfestationType?: string; - ItemId: Oid; + ItemId: IOid; ModularParts?: string[]; } -export interface KubrowPetConfig { +export interface IKubrowPetConfig { Skins?: string[]; - pricol?: Color; - attcol?: Color; + pricol?: IColor; + attcol?: IColor; Upgrades?: string[]; } -export interface Details { +export interface IDetails { Name: string; IsPuppy: boolean; HasCollar: boolean; PrintsRemaining: number; Status: Status; HatchDate: Date; - DominantTraits: Traits; - RecessiveTraits: Traits; + DominantTraits: ITraits; + RecessiveTraits: ITraits; IsMale: boolean; Size: number; } @@ -607,13 +606,13 @@ export enum Status { StatusStasis = "STATUS_STASIS" } -export interface LastSortieReward { - SortieId: Oid; +export interface ILastSortieReward { + SortieId: IOid; StoreItem: string; Manifest: string; } -export interface LibraryAvailableDailyTaskInfo { +export interface ILibraryAvailableDailyTaskInfo { EnemyTypes: string[]; EnemyLocTag: string; EnemyIcon: string; @@ -623,98 +622,98 @@ export interface LibraryAvailableDailyTaskInfo { RewardStanding: number; } -export interface LibraryPersonalProgress { +export interface ILibraryPersonalProgress { TargetType: string; Scans: number; Completed: boolean; } -export interface LoadOutPresets { - NORMAL: Normal[]; - NORMAL_PVP: Archwing[]; - LUNARO: Lunaro[]; - ARCHWING: Archwing[]; - SENTINEL: Archwing[]; - OPERATOR: Archwing[]; - GEAR: Gear[]; - KDRIVE: Kdrive[]; - DATAKNIFE: Archwing[]; - MECH: Mech[]; - OPERATOR_ADULT: Archwing[]; +export interface ILoadOutPresets { + NORMAL: INormal[]; + NORMAL_PVP: IArchwing[]; + LUNARO: ILunaro[]; + ARCHWING: IArchwing[]; + SENTINEL: IArchwing[]; + OPERATOR: IArchwing[]; + GEAR: IGear[]; + KDRIVE: IKdrive[]; + DATAKNIFE: IArchwing[]; + MECH: IMech[]; + OPERATOR_ADULT: IArchwing[]; } -export interface Archwing { +export interface IArchwing { PresetIcon: string; Favorite: boolean; n?: string; - s: L; - l?: L; - m?: L; - ItemId: Oid; - p?: L; + s: IL; + l?: IL; + m?: IL; + ItemId: IOid; + p?: IL; } -export interface Gear { +export interface IGear { n: string; - s: L; - p: L; - l: L; - m: L; - ItemId: Oid; + s: IL; + p: IL; + l: IL; + m: IL; + ItemId: IOid; } -export interface Kdrive { +export interface IKdrive { PresetIcon: string; Favorite: boolean; - s: L; - ItemId: Oid; + s: IL; + ItemId: IOid; } -export interface Lunaro { +export interface ILunaro { n: string; - s: L; - m: L; - ItemId: Oid; + s: IL; + m: IL; + ItemId: IOid; } -export interface Mech { +export interface IMech { PresetIcon: string; Favorite: boolean; - s: L; - h: L; - a: L; - ItemId: Oid; + s: IL; + h: IL; + a: IL; + ItemId: IOid; } -export interface Normal { +export interface INormal { FocusSchool: FocusSchool; PresetIcon: string; Favorite: boolean; n: string; - s: L; - p: L; - l: L; - m: L; - h: L; - a?: L; - ItemId: Oid; + s: IL; + p: IL; + l: IL; + m: IL; + h: IL; + a?: IL; + ItemId: IOid; } export enum UpgradeType { LotusWeaponsGrineerKuvaLichUpgradesInnateDamageRandomMod = "/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod" } -export interface LoreFragmentScan { +export interface ILoreFragmentScan { Progress: number; Region?: string; ItemType: string; } -export interface LotusCustomization { +export interface ILotusCustomization { Upgrades: any[]; PvpUpgrades: any[]; Skins: string[]; - pricol: Color; + pricol: IColor; attcol: any[]; sigcol: any[]; eyecol: any[]; @@ -723,37 +722,37 @@ export interface LotusCustomization { Persona: string; } -export interface MechSuit { +export interface IMechSuit { ItemType: string; - Configs: DataKnifeConfig[]; + Configs: IDataKnifeConfig[]; Features: number; UpgradeVer: number; XP: number; - Polarity: Polarity[]; + Polarity: IPolarity[]; Polarized: number; - ItemId: Oid; + ItemId: IOid; } -export interface Mission { +export interface IMission { Completes: number; Tier?: number; Tag: string; RewardsCooldownTime?: Date; } -export interface MoaPet { +export interface IMoaPet { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; UpgradeVer: number; ModularParts: string[]; XP?: number; Features?: number; ItemName: string; - Polarity?: Polarity[]; - ItemId: Oid; + Polarity?: IPolarity[]; + ItemId: IOid; } -export interface NemesisHistory { +export interface INemesisHistory { fp: number; manifest: Manifest; KillingSuit: string; @@ -787,74 +786,74 @@ export enum Manifest { LotusTypesGameNemesisKuvaLichKuvaLichManifestVersionTwo = "/Lotus/Types/Game/Nemesis/KuvaLich/KuvaLichManifestVersionTwo" } -export interface OperatorAmp { +export interface IOperatorAmp { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; ModularParts?: string[]; XP?: number; UpgradeVer?: number; ItemName?: string; Features?: number; - ItemId: Oid; + ItemId: IOid; } -export interface OperatorLoadOut { +export interface IOperatorLoadOut { Skins: string[]; - pricol?: Color; - attcol?: Color; - eyecol: Color; - facial?: Color; - sigcol?: OperatorLoadOutSigcol; - OperatorAmp?: Oid; + pricol?: IColor; + attcol?: IColor; + eyecol: IColor; + facial?: IColor; + sigcol?: IOperatorLoadOutSigcol; + OperatorAmp?: IOid; Upgrades?: string[]; - AbilityOverride: AbilityOverride; - ItemId: Oid; + AbilityOverride: IAbilityOverride; + ItemId: IOid; } -export interface PendingCoupon { +export interface IPendingCoupon { Expiry: Date; Discount: number; } -export interface PendingRecipe { +export interface IPendingRecipe { ItemType: string; CompletionDate: Date; - ItemId: Oid; + ItemId: IOid; } -export interface PendingTrade { +export interface IPendingTrade { State: number; SelfReady: boolean; BuddyReady: boolean; - Giving?: Giving; + Giving?: IGiving; Revision: number; - Getting: Getting; - ItemId: Oid; + Getting: IGetting; + ItemId: IOid; ClanTax?: number; } -export interface Getting { - RandomUpgrades?: RandomUpgrade[]; +export interface IGetting { + RandomUpgrades?: IRandomUpgrade[]; _SlotOrderInfo: GettingSlotOrderInfo[]; PremiumCredits?: number; } -export interface RandomUpgrade { - UpgradeFingerprint: UpgradeFingerprint; +export interface IRandomUpgrade { + UpgradeFingerprint: IUpgradeFingerprint; ItemType: string; - ItemId: Oid; + ItemId: IOid; } -export interface UpgradeFingerprint { +export interface IUpgradeFingerprint { compat: string; lim: number; lvlReq: number; pol: FocusSchool; - buffs: Buff[]; - curses: Buff[]; + buffs: IBuff[]; + curses: IBuff[]; } -export interface Buff { +export interface IBuff { Tag: string; Value: number; } @@ -865,8 +864,8 @@ export enum GettingSlotOrderInfo { P = "P" } -export interface Giving { - RawUpgrades: Consumable[]; +export interface IGiving { + RawUpgrades: IConsumable[]; _SlotOrderInfo: GivingSlotOrderInfo[]; } @@ -876,34 +875,34 @@ export enum GivingSlotOrderInfo { LotusUpgradesModsPistolDualStatElectEventPistolMod = "/Lotus/Upgrades/Mods/Pistol/DualStat/ElectEventPistolMod" } -export interface PeriodicMissionCompletion { +export interface IPeriodicMissionCompletion { date: Date; tag: string; count?: number; } -export interface PersonalGoalProgress { +export interface IPersonalGoalProgress { Count: number; Tag: string; Best?: number; - _id: Oid; + _id: IOid; ReceivedClanReward0?: boolean; ReceivedClanReward1?: boolean; } -export interface PersonalTechProject { +export interface IPersonalTechProject { State: number; ReqCredits: number; ItemType: string; - ReqItems: Consumable[]; + ReqItems: IConsumable[]; CompletionDate?: Date; - ItemId: Oid; + ItemId: IOid; ProductCategory?: string; - CategoryItemId?: Oid; + CategoryItemId?: IOid; HasContributions?: boolean; } -export interface PlayerSkills { +export interface IPlayerSkills { LPP_SPACE: number; LPP_DRIFTER: number; LPS_NONE: number; @@ -918,59 +917,59 @@ export interface PlayerSkills { LPS_DRIFT_ENDURANCE: number; } -export interface QuestKey { - Progress?: Progress[]; +export interface IQuestKey { + Progress?: IProgress[]; unlock?: boolean; Completed?: boolean; ItemType: string; CompletionDate?: Date; } -export interface Progress { +export interface IProgress { c: number; i: boolean; m: boolean; b?: any[]; } -export interface RawUpgrade { +export interface IRawUpgrade { ItemCount: number; - LastAdded?: Oid; + LastAdded?: IOid; ItemType: string; } -export interface Scoop { +export interface IScoop { ItemType: string; - Configs: ScoopConfig[]; + Configs: IScoopConfig[]; UpgradeVer: number; - ItemId: Oid; + ItemId: IOid; } -export interface ScoopConfig { - pricol?: Color; +export interface IScoopConfig { + pricol?: IColor; } -export interface SeasonChallengeHistory { +export interface ISeasonChallengeHistory { challenge: string; id: string; } -export interface SentientSpawnChanceBoosters { +export interface ISentientSpawnChanceBoosters { numOceanMissionsCompleted: number; } -export interface SentinelWeapon { +export interface ISentinelWeapon { ItemType: string; - Configs: SentinelWeaponConfig[]; + Configs: ISentinelWeaponConfig[]; UpgradeVer?: number; XP?: number; - ItemId: Oid; + ItemId: IOid; Features?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; Polarized?: number; } -export interface SentinelWeaponConfig { +export interface ISentinelWeaponConfig { Skins?: FluffySkin[]; Upgrades?: string[]; } @@ -982,18 +981,18 @@ export enum FluffySkin { LotusUpgradesSkinsHolsterCustomizationsRifleUpperBack = "/Lotus/Upgrades/Skins/HolsterCustomizations/RifleUpperBack" } -export interface Sentinel { +export interface ISentinel { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; UpgradeVer: number; XP: number; Features?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; Polarized?: number; - ItemId: Oid; + ItemId: IOid; } -export interface Settings { +export interface ISettings { FriendInvRestriction: string; GiftMode: string; GuildInvRestriction: string; @@ -1001,69 +1000,69 @@ export interface Settings { TradingRulesConfirmed: boolean; } -export interface Ship { +export interface IShip { ItemType: string; - ShipExterior: Terior; + ShipExterior: ITerior; AirSupportPower: string; - ItemId: Oid; + ItemId: IOid; } -export interface SpaceGun { +export interface ISpaceGun { ItemType: string; - Configs: SpaceGunConfig[]; + Configs: ISpaceGunConfig[]; XP?: number; UpgradeVer?: number; - ItemId: Oid; + ItemId: IOid; Features?: number; Polarized?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; UpgradeType?: UpgradeType; UpgradeFingerprint?: string; ItemName?: string; } -export interface SpaceGunConfig { +export interface ISpaceGunConfig { Skins?: string[]; - pricol?: Color; + pricol?: IColor; Upgrades?: string[]; } -export interface Space { +export interface ISpace { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; XP: number; UpgradeVer: number; - ItemId: Oid; + ItemId: IOid; Features?: number; } -export interface SpecialItem { +export interface ISpecialItem { ItemType: string; - Configs: SpecialItemConfig[]; + Configs: ISpecialItemConfig[]; XP?: number; UpgradeVer?: number; Features: number; - ItemId: Oid; + ItemId: IOid; Polarized?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; ModSlotPurchases?: number; } -export interface SpecialItemConfig { +export interface ISpecialItemConfig { Upgrades?: string[]; - pricol?: Color; + pricol?: IColor; Skins?: string[]; - attcol?: Color; - eyecol?: PurpleCol; - sigcol?: PurpleCol; + attcol?: IColor; + eyecol?: IPurpleCol; + sigcol?: IPurpleCol; Name?: string; } -export interface PurpleCol { +export interface IPurpleCol { en: number; } -export interface SpectreLoadout { +export interface ISpectreLoadout { LongGuns: string; Melee: string; Pistols: string; @@ -1073,30 +1072,30 @@ export interface SpectreLoadout { ItemType: string; } -export interface StepSequencer { - NotePacks: NotePacks; +export interface IStepSequencer { + NotePacks: INotePacks; FingerPrint: string; Name: string; - ItemId: Oid; + ItemId: IOid; } -export interface NotePacks { +export interface INotePacks { MELODY: string; BASS: string; PERCUSSION: string; } -export interface TauntHistory { +export interface ITauntHistory { node: string; state: string; } -export interface WeaponSkin { +export interface IWeaponSkin { ItemType: string; - ItemId: Oid; + ItemId: IOid; } -export interface WebFlags { +export interface IWebFlags { activeBuyPlat: number; noShow2FA: boolean; Tennocon2018Digital: boolean; diff --git a/src/types/inventoryTypes/weaponTypes.ts b/src/types/inventoryTypes/weaponTypes.ts index 7fe6bf40..032becba 100644 --- a/src/types/inventoryTypes/weaponTypes.ts +++ b/src/types/inventoryTypes/weaponTypes.ts @@ -1,9 +1,9 @@ -import { Oid } from "@/src/types/commonTypes"; -import { Color, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IOid } from "@/src/types/commonTypes"; +import { IColor, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { Types } from "mongoose"; export interface IWeaponResponse extends IWeaponDatabase { - ItemId: Oid; + ItemId: IOid; } export interface IWeaponDatabase { @@ -13,7 +13,7 @@ export interface IWeaponDatabase { XP?: number; Features?: number; Polarized?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; FocusLens?: string; ModSlotPurchases?: number; UpgradeType?: string; @@ -26,15 +26,15 @@ export interface IWeaponDatabase { export interface WeaponConfig { Skins?: string[]; - pricol?: Color; + pricol?: IColor; Upgrades?: string[]; - attcol?: Color; - eyecol?: OperatorLoadOutSigcol; + attcol?: IColor; + eyecol?: IOperatorLoadOutSigcol; Name?: string; PvpUpgrades?: string[]; } -export interface OperatorLoadOutSigcol { +export interface IOperatorLoadOutSigcol { t0?: number; t1?: number; en?: number; diff --git a/src/types/loginTypes.ts b/src/types/loginTypes.ts index 1d53de43..472a5d5f 100644 --- a/src/types/loginTypes.ts +++ b/src/types/loginTypes.ts @@ -10,7 +10,7 @@ export interface ILoginResponse extends Omit Date: Sun, 3 Sep 2023 14:30:02 -0500 Subject: [PATCH 2/6] Fix updateGeneric --- src/types/genericUpdate.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/types/genericUpdate.ts b/src/types/genericUpdate.ts index d565b1e4..3f61f671 100644 --- a/src/types/genericUpdate.ts +++ b/src/types/genericUpdate.ts @@ -1,4 +1,4 @@ export interface IGenericUpdate { - NodeIntrosCompleted: string[]; + NodeIntrosCompleted: string | string[]; // AffiliationMods: any[]; -} +} \ No newline at end of file -- 2.47.2 From fe451171abce8cdc6600c57b17321d3995faed26 Mon Sep 17 00:00:00 2001 From: nk Date: Sun, 3 Sep 2023 14:31:44 -0500 Subject: [PATCH 3/6] Fix it... again --- .../api/missionInventoryUpdateController.ts | 3 +-- src/services/inventoryService.ts | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index 5eba667d..c444bf9a 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -44,7 +44,6 @@ import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType" const missionInventoryUpdateController: RequestHandler = async (req, res) => { const id = req.query.accountId as string; - // Remove the hash, which is added directly below the JSON data. const [data] = String(req.body).split("\n"); try { @@ -55,7 +54,7 @@ const missionInventoryUpdateController: RequestHandler = async (req, res) => { console.error("Error parsing JSON data:", err); } - // TODO - get original response + // TODO - Return the updated inventory the way the game does it. res.json({}); }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 2b79db76..d12a0104 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -81,10 +81,24 @@ export const updateCurrency = async (price: number, usePremium: boolean, account return { [currencyName]: -price }; }; +// TODO: AffiliationMods support (Nightwave). export const updateGeneric = async (data: IGenericUpdate, accountId: string) => { const inventory = await getInventory(accountId); - data.NodeIntrosCompleted = data.NodeIntrosCompleted.concat(inventory.NodeIntrosCompleted); + + // Make it an array for easier parsing. + if (typeof data.NodeIntrosCompleted === "string") { + data.NodeIntrosCompleted = [ data.NodeIntrosCompleted ]; + } + + // Combine the two arrays into one. + data.NodeIntrosCompleted = inventory.NodeIntrosCompleted.concat(data.NodeIntrosCompleted); + + // Remove duplicate entries. + const nodes = [ ...new Set(data.NodeIntrosCompleted) ]; + + inventory.NodeIntrosCompleted = nodes; await inventory.save(); + return data; }; @@ -184,7 +198,7 @@ export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, acco const inventory = await getInventory(accountId); // Currency - // !!! TODO: Make a helper specifically for adding currencies with negative/positive checks shared between them. + // TODO: Make a helper specifically for adding currencies with negative/positive checks shared between them. // TODO - Multipliers (from Boosters or otherwise). const credits = RegularCredits as number; inventory.RegularCredits += credits < 0 ? Math.abs(credits) : credits; // If credits are negative, flip them. -- 2.47.2 From 41fd071a71e495422f4fae751b6c6af983217b27 Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Tue, 5 Sep 2023 14:05:49 +0200 Subject: [PATCH 4/6] revert package-lock changes --- package-lock.json | 673 ++++++++++++++++++++++++++++------------------ 1 file changed, 404 insertions(+), 269 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9fcf19c3..ce96b3cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", "mongoose": "^7.4.1", - "warframe-items": "1.1260.121" + "warframe-items": "1.1260.79" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", @@ -70,18 +70,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", - "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -101,19 +101,42 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/@eslint/js": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", - "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -124,6 +147,29 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -168,15 +214,6 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@mongodb-js/saslprep": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", - "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -251,15 +288,15 @@ "dev": true }, "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", "dev": true }, "node_modules/@tsconfig/node20": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-1.0.2.tgz", - "integrity": "sha512-pw0MmECiSTbBfIlT0x3iQLuJ8s3i2mwYoGxJ3vzqTNMdc4nO2VeqfCOQ/doGFa8iyPlqmBd98/5pBctWz7uN2A==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-1.0.0.tgz", + "integrity": "sha512-AwbXtpWEaRUjbGVwdlusNqwet+jeSk3Nnqf/8+77WJ1/9d6xnqs2QpE9Pdwv8RCoXxtMedWEtlmWY+/irBPcUw==", "dev": true }, "node_modules/@types/body-parser": { @@ -294,9 +331,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.36", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", - "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "version": "4.17.34", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", + "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", "dev": true, "dependencies": { "@types/node": "*", @@ -305,12 +342,6 @@ "@types/send": "*" } }, - "node_modules/@types/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", - "dev": true - }, "node_modules/@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -324,23 +355,23 @@ "dev": true }, "node_modules/@types/morgan": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.5.tgz", - "integrity": "sha512-5TgfIWm0lcTGnbCZExwc19dCOMOMmAiiBZQj8Ko3NRxsVDgRxf+AEGRQTqNVA5Yh2xfdWp4clbAEMbYP+jkOqg==", + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz", + "integrity": "sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/node": { - "version": "20.5.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", - "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" + "version": "18.16.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", + "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" }, "node_modules/@types/qs": { - "version": "6.9.8", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", - "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", "dev": true }, "node_modules/@types/range-parser": { @@ -350,9 +381,9 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", "dev": true }, "node_modules/@types/send": { @@ -366,12 +397,11 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", - "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", "dev": true, "dependencies": { - "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } @@ -403,20 +433,21 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.5.0.tgz", - "integrity": "sha512-2pktILyjvMaScU6iK3925uvGU87E+N9rh372uGZgiMYwafaw9SXq86U04XPq3UH6tzRvNgBsub6x2DacHc33lw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.0.tgz", + "integrity": "sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.5.0", - "@typescript-eslint/type-utils": "6.5.0", - "@typescript-eslint/utils": "6.5.0", - "@typescript-eslint/visitor-keys": "6.5.0", + "@typescript-eslint/scope-manager": "6.2.0", + "@typescript-eslint/type-utils": "6.2.0", + "@typescript-eslint/utils": "6.2.0", + "@typescript-eslint/visitor-keys": "6.2.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", "natural-compare": "^1.4.0", + "natural-compare-lite": "^1.4.0", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, @@ -437,16 +468,39 @@ } } }, - "node_modules/@typescript-eslint/parser": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.5.0.tgz", - "integrity": "sha512-LMAVtR5GN8nY0G0BadkG0XIe4AcNMeyEy3DyhKGAh9k4pLSMBO7rF29JvDBpZGCmp5Pgz5RLHP6eCpSYZJQDuQ==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.5.0", - "@typescript-eslint/types": "6.5.0", - "@typescript-eslint/typescript-estree": "6.5.0", - "@typescript-eslint/visitor-keys": "6.5.0", + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.2.0.tgz", + "integrity": "sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.2.0", + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/typescript-estree": "6.2.0", + "@typescript-eslint/visitor-keys": "6.2.0", "debug": "^4.3.4" }, "engines": { @@ -465,14 +519,37 @@ } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.5.0.tgz", - "integrity": "sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw==", + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.5.0", - "@typescript-eslint/visitor-keys": "6.5.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.0.tgz", + "integrity": "sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/visitor-keys": "6.2.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -483,13 +560,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.5.0.tgz", - "integrity": "sha512-f7OcZOkRivtujIBQ4yrJNIuwyCQO1OjocVqntl9dgSIZAdKqicj3xFDqDOzHDlGCZX990LqhLQXWRnQvsapq8A==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.2.0.tgz", + "integrity": "sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.5.0", - "@typescript-eslint/utils": "6.5.0", + "@typescript-eslint/typescript-estree": "6.2.0", + "@typescript-eslint/utils": "6.2.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -509,10 +586,33 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/@typescript-eslint/types": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.5.0.tgz", - "integrity": "sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.0.tgz", + "integrity": "sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -523,13 +623,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.5.0.tgz", - "integrity": "sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.0.tgz", + "integrity": "sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.5.0", - "@typescript-eslint/visitor-keys": "6.5.0", + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/visitor-keys": "6.2.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -549,18 +649,41 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/@typescript-eslint/utils": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.5.0.tgz", - "integrity": "sha512-9nqtjkNykFzeVtt9Pj6lyR9WEdd8npPhhIPM992FWVkZuS6tmxHfGVnlUcjpUP2hv8r4w35nT33mlxd+Be1ACQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.0.tgz", + "integrity": "sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.5.0", - "@typescript-eslint/types": "6.5.0", - "@typescript-eslint/typescript-estree": "6.5.0", + "@typescript-eslint/scope-manager": "6.2.0", + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/typescript-estree": "6.2.0", "semver": "^7.5.4" }, "engines": { @@ -575,12 +698,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.5.0.tgz", - "integrity": "sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.0.tgz", + "integrity": "sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.5.0", + "@typescript-eslint/types": "6.2.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -774,19 +897,14 @@ "node": ">= 0.10" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "node_modules/body-parser/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/bplist-parser": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", @@ -999,19 +1117,11 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "ms": "2.0.0" } }, "node_modules/deep-is": { @@ -1067,11 +1177,12 @@ } }, "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/destroy": { @@ -1113,9 +1224,9 @@ } }, "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.3.tgz", + "integrity": "sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==", "engines": { "node": ">=12" }, @@ -1163,27 +1274,27 @@ } }, "node_modules/eslint": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", - "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.48.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", + "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.6.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -1245,10 +1356,39 @@ } } }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -1261,18 +1401,21 @@ "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==", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=4.0" } }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -1302,6 +1445,15 @@ "node": ">=0.10" } }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -1314,7 +1466,7 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { + "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -1341,9 +1493,9 @@ } }, "node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -1413,10 +1565,13 @@ "ms": "2.0.0" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "node_modules/express/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -1425,9 +1580,9 @@ "dev": true }, "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, "node_modules/fast-glob": { @@ -1520,19 +1675,6 @@ "node": ">= 0.8" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -1550,17 +1692,16 @@ } }, "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { - "flatted": "^3.2.7", - "keyv": "^4.5.3", + "flatted": "^3.1.0", "rimraf": "^3.0.2" }, "engines": { - "node": ">=12.0.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { @@ -1591,20 +1732,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -1656,9 +1783,9 @@ } }, "node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1732,6 +1859,14 @@ "node": ">= 0.6" } }, + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/human-signals": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", @@ -1827,9 +1962,9 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -1967,12 +2102,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2005,15 +2134,6 @@ "node": ">=12.0.0" } }, - "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2186,9 +2306,9 @@ } }, "node_modules/mongodb": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.8.1.tgz", - "integrity": "sha512-wKyh4kZvm6NrCPH8AxyzXm3JBoEf4Xulo0aUWh3hCgwgYJxyQ1KLST86ZZaSWdj6/kxYUA3+YZuyADCE61CMSg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.7.0.tgz", + "integrity": "sha512-zm82Bq33QbqtxDf58fLWBwTjARK3NSvKYjyz997KSy6hpat0prjeX/kxjbPVyZY60XYPDNETaHkHJI2UCzSLuw==", "dependencies": { "bson": "^5.4.0", "mongodb-connection-string-url": "^2.6.0", @@ -2198,12 +2318,12 @@ "node": ">=14.20.1" }, "optionalDependencies": { - "@mongodb-js/saslprep": "^1.1.0" + "saslprep": "^1.0.3" }, "peerDependencies": { - "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.0.0", - "kerberos": "^1.0.0 || ^2.0.0", + "@aws-sdk/credential-providers": "^3.201.0", + "@mongodb-js/zstd": "^1.1.0", + "kerberos": "^2.0.1", "mongodb-client-encryption": ">=2.3.0 <3", "snappy": "^7.2.2" }, @@ -2235,13 +2355,13 @@ } }, "node_modules/mongoose": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.5.0.tgz", - "integrity": "sha512-FpOWOb0AJuaVcplmEyIJ2eCbVGe4gOoniPD+pmft5BrGrNrsFcnYXlERdXtBApGHMHPwD7WbxTyhCbUNr72F3Q==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.4.1.tgz", + "integrity": "sha512-o3E5KHHiHdaiwCJG3+9r70sncRKki71Ktf/TfXdW6myu+53rtZ56uLl5ylkQiCf60V3COJuOeekcxXVsjQ7cBA==", "dependencies": { "bson": "^5.4.0", "kareem": "2.5.1", - "mongodb": "5.8.1", + "mongodb": "5.7.0", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", @@ -2276,30 +2396,6 @@ "node": ">= 0.8.0" } }, - "node_modules/morgan/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/morgan/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/morgan/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", @@ -2319,17 +2415,44 @@ "node": ">=14.0.0" } }, - "node_modules/ms": { + "node_modules/mquery/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mquery/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "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 }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -2577,9 +2700,9 @@ } }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", + "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -2689,12 +2812,12 @@ } }, "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -2906,6 +3029,18 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -3223,9 +3358,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.2.tgz", - "integrity": "sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", + "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", "dev": true, "engines": { "node": ">=16.13.0" @@ -3359,9 +3494,9 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", "dev": true }, "node_modules/type-check": { @@ -3401,9 +3536,9 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -3462,9 +3597,9 @@ } }, "node_modules/warframe-items": { - "version": "1.1260.121", - "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.121.tgz", - "integrity": "sha512-C/te9WSsc3HzeSAgziAGKs6sKnYqCO41QDov8E6RUfl3D06C7ko8mHsJ2j65zF515IatJl/xelVtp0aAnQcWiQ==" + "version": "1.1260.79", + "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.79.tgz", + "integrity": "sha512-Xp/nt++v5V3ghEZNhE56Mge2jeBjjr+ua6PC/7ZHYTMsO8x1xheOMuVxl7v7IjscO1rHFdYEQnSU9Gw1uipYsQ==" }, "node_modules/webidl-conversions": { "version": "7.0.0", -- 2.47.2 From 2cf5c8a46f2665c0af9b7f7997c3c6ebf5f0d3bf Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Tue, 5 Sep 2023 14:09:59 +0200 Subject: [PATCH 5/6] package-lock sync with main --- package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index ce96b3cb..eb3bf701 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", "mongoose": "^7.4.1", - "warframe-items": "1.1260.79" + "warframe-items": "1.1260.121" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", @@ -3597,9 +3597,9 @@ } }, "node_modules/warframe-items": { - "version": "1.1260.79", - "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.79.tgz", - "integrity": "sha512-Xp/nt++v5V3ghEZNhE56Mge2jeBjjr+ua6PC/7ZHYTMsO8x1xheOMuVxl7v7IjscO1rHFdYEQnSU9Gw1uipYsQ==" + "version": "1.1260.121", + "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.121.tgz", + "integrity": "sha512-C/te9WSsc3HzeSAgziAGKs6sKnYqCO41QDov8E6RUfl3D06C7ko8mHsJ2j65zF515IatJl/xelVtp0aAnQcWiQ==" }, "node_modules/webidl-conversions": { "version": "7.0.0", -- 2.47.2 From 7be55990dbe659b7b1d5a20c90972d6ca4906a15 Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Tue, 5 Sep 2023 14:30:05 +0200 Subject: [PATCH 6/6] some changes. --- .../api/missionInventoryUpdateController.ts | 6 +++--- src/services/inventoryService.ts | 15 ++------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index c444bf9a..16eeb0e4 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -25,13 +25,13 @@ import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType" - [ ] hosts - [x] ChallengeProgress - [ ] SeasonChallengeHistory -- [ ] PS (Passive anti-cheat data which includes your username, module list, process list, and system name. @nk for more info.) +- [ ] PS (Passive anti-cheat data which includes your username, module list, process list, and system name.) - [ ] ActiveDojoColorResearch - [ ] RewardInfo - [ ] ReceivedCeremonyMsg - [ ] LastCeremonyResetDate -- [ ] MissionPTS (Used to validate the mission/alive time above. @nk for more info.) -- [ ] RepHash (A hash from the replication manager/RepMgr (IDA search it). Unknown what it does.) +- [ ] MissionPTS (Used to validate the mission/alive time above.) +- [ ] RepHash (A hash from the replication manager/RepMgr Unknown what it does.) - [ ] EndOfMatchUpload - [ ] ObjectiveReached - [ ] FpsAvg diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index d12a0104..565dd910 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -87,14 +87,14 @@ export const updateGeneric = async (data: IGenericUpdate, accountId: string) => // Make it an array for easier parsing. if (typeof data.NodeIntrosCompleted === "string") { - data.NodeIntrosCompleted = [ data.NodeIntrosCompleted ]; + data.NodeIntrosCompleted = [data.NodeIntrosCompleted]; } // Combine the two arrays into one. data.NodeIntrosCompleted = inventory.NodeIntrosCompleted.concat(data.NodeIntrosCompleted); // Remove duplicate entries. - const nodes = [ ...new Set(data.NodeIntrosCompleted) ]; + const nodes = [...new Set(data.NodeIntrosCompleted)]; inventory.NodeIntrosCompleted = nodes; await inventory.save(); @@ -197,17 +197,6 @@ export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, acco const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress } = data; const inventory = await getInventory(accountId); - // Currency - // TODO: Make a helper specifically for adding currencies with negative/positive checks shared between them. - // TODO - Multipliers (from Boosters or otherwise). - const credits = RegularCredits as number; - inventory.RegularCredits += credits < 0 ? Math.abs(credits) : credits; // If credits are negative, flip them. - - // If we added credits and the value flipped, flip it (again). Eg. -10000 turns into 10000. - if (inventory.RegularCredits < 0 && credits > 0) { - inventory.RegularCredits = Math.abs(inventory.RegularCredits); - } - // Gear XP gearKeys.forEach((key: GearKeysType) => addGearExpByCategory(inventory, data[key], key)); -- 2.47.2