UNPKG

osrs-hiscores-parser

Version:

Package that parses and transforms Old School Runescape Hiscore API results into a JSON object.

37 lines (36 loc) 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parser = void 0; const data_1 = require("./data"); /** * @param usernames - rsn of the user or users * @returns An array containing an object for each user */ async function parser(usernames) { const combinedArr = data_1.skills.concat(data_1.misc); const getRawUserData = async (username) => { const response = await fetch(`https://cors-anywhere-apqk.onrender.com/https://secure.runescape.com/m=hiscore_oldschool/index_lite.ws?player=${username}`); const rawUserData = await response.text(); return rawUserData; }; const formatUserData = (rawData) => { const player = []; const arr = []; rawData.toString().split("\n").filter(emptyItem => emptyItem).forEach((item) => { arr.push(item.split(",")); }); arr.forEach((item, i) => { player.push({ "name": combinedArr[i], "rank": parseInt(item[0]), ...(player.length < 24 ? { "level": parseInt(item[1]) } : { "score": parseInt(item[1]) }), ...(item[2] !== undefined ? { "experience": parseInt(item[2]) } : {}) }); }); return player; }; return await Promise.all(usernames.map(async (username) => { return { name: username, data: formatUserData(await getRawUserData(username)) }; })); } exports.parser = parser;