From 8843ccf72f076c26970cad5ce3c878f893ec9d54 Mon Sep 17 00:00:00 2001
From: mat <github@matdoes.dev>
Date: Sat, 19 Mar 2022 17:08:17 -0500
Subject: Include slayer level in response

---
 package-lock.json                | 40 ----------------------------------------
 package.json                     |  4 +---
 src/cleaners/skyblock/slayers.ts |  9 +++++++++
 3 files changed, 10 insertions(+), 43 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 2a22d1e..301a9ef 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,10 +22,8 @@
       },
       "devDependencies": {
         "@types/express": "^4.17.13",
-        "@types/express-rate-limit": "^6.0.0",
         "@types/lru-cache": "^5.1.1",
         "@types/mocha": "^9.1.0",
-        "@types/mongodb": "^4.0.7",
         "@types/node": "^17.0.21",
         "dotenv": "^16.0.0",
         "mocha": "^9.2.1",
@@ -112,16 +110,6 @@
         "@types/serve-static": "*"
       }
     },
-    "node_modules/@types/express-rate-limit": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/@types/express-rate-limit/-/express-rate-limit-6.0.0.tgz",
-      "integrity": "sha512-nZxo3nwU20EkTl/f2eGdndQkDIJYwkXIX4S3Vrp2jMdSdFJ6AWtIda8gOz0wiMuOFoeH/UUlCAiacz3x3eWNFA==",
-      "deprecated": "This is a stub types definition. express-rate-limit provides its own type definitions, so you do not need this installed.",
-      "dev": true,
-      "dependencies": {
-        "express-rate-limit": "*"
-      }
-    },
     "node_modules/@types/express-serve-static-core": {
       "version": "4.17.23",
       "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.23.tgz",
@@ -151,16 +139,6 @@
       "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==",
       "dev": true
     },
-    "node_modules/@types/mongodb": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-4.0.7.tgz",
-      "integrity": "sha512-lPUYPpzA43baXqnd36cZ9xxorprybxXDzteVKCPAdp14ppHtFJHnXYvNpmBvtMUTb5fKXVv6sVbzo1LHkWhJlw==",
-      "deprecated": "mongodb provides its own types. @types/mongodb is no longer needed.",
-      "dev": true,
-      "dependencies": {
-        "mongodb": "*"
-      }
-    },
     "node_modules/@types/node": {
       "version": "17.0.21",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz",
@@ -2306,15 +2284,6 @@
         "@types/serve-static": "*"
       }
     },
-    "@types/express-rate-limit": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/@types/express-rate-limit/-/express-rate-limit-6.0.0.tgz",
-      "integrity": "sha512-nZxo3nwU20EkTl/f2eGdndQkDIJYwkXIX4S3Vrp2jMdSdFJ6AWtIda8gOz0wiMuOFoeH/UUlCAiacz3x3eWNFA==",
-      "dev": true,
-      "requires": {
-        "express-rate-limit": "*"
-      }
-    },
     "@types/express-serve-static-core": {
       "version": "4.17.23",
       "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.23.tgz",
@@ -2344,15 +2313,6 @@
       "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==",
       "dev": true
     },
-    "@types/mongodb": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-4.0.7.tgz",
-      "integrity": "sha512-lPUYPpzA43baXqnd36cZ9xxorprybxXDzteVKCPAdp14ppHtFJHnXYvNpmBvtMUTb5fKXVv6sVbzo1LHkWhJlw==",
-      "dev": true,
-      "requires": {
-        "mongodb": "*"
-      }
-    },
     "@types/node": {
       "version": "17.0.21",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz",
diff --git a/package.json b/package.json
index 36553af..102759b 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,7 @@
     "test": "mocha",
     "compile": "tsc",
     "watch": "tsc -w",
-    "start": "npm i --only=prod; node --trace-warnings build/index.js"
+    "start": "npm i --only=prod && node --trace-warnings build/index.js"
   },
   "engines": {
     "node": ">=16.0.0"
@@ -42,10 +42,8 @@
   },
   "devDependencies": {
     "@types/express": "^4.17.13",
-    "@types/express-rate-limit": "^6.0.0",
     "@types/lru-cache": "^5.1.1",
     "@types/mocha": "^9.1.0",
-    "@types/mongodb": "^4.0.7",
     "@types/node": "^17.0.21",
     "dotenv": "^16.0.0",
     "mocha": "^9.2.1",
diff --git a/src/cleaners/skyblock/slayers.ts b/src/cleaners/skyblock/slayers.ts
index f051852..a47829a 100644
--- a/src/cleaners/skyblock/slayers.ts
+++ b/src/cleaners/skyblock/slayers.ts
@@ -18,6 +18,7 @@ export interface Slayer {
 	name?: SlayerName
 	raw_name: string
 	xp: number
+	level: number
 	kills: number
 	tiers: SlayerTier[]
 }
@@ -46,6 +47,13 @@ export function cleanSlayers(data: any): SlayerData {
 		let slayerKills: number = 0
 		const slayerTiers: SlayerTier[] = []
 
+		// we get the level by finding the biggest number in "level_<number>"
+		let slayerLevel = Object.keys(slayerDataRaw.claimed_levels)
+			.filter(k => slayerDataRaw.claimed_levels[k])
+			.map(n => parseInt(n.replace(/^level_/, '')))
+			.sort((a, b) => b - a)[0] ?? 0
+
+
 		for (const slayerDataKey in slayerDataRaw) {
 			// if a key starts with boss_kills_tier_ (boss_kills_tier_1), get the last number
 			if (slayerDataKey.startsWith('boss_kills_tier_')) {
@@ -76,6 +84,7 @@ export function cleanSlayers(data: any): SlayerData {
 			raw_name: slayerNameRaw,
 			tiers: slayerTiers,
 			xp: slayerXp ?? 0,
+			level: slayerLevel,
 			kills: slayerKills
 		}
 
-- 
cgit