Compare commits

...

21 Commits

Author SHA1 Message Date
maxswa
d0f5285470 Add Amoxliatl, The Hueycoatl 2024-09-25 11:56:09 -04:00
maxswa
9c56e44344 v2.19.0 2024-08-30 01:30:49 -04:00
Max Swartwout
e5b3075ebd Merge pull request #101 from maxswa/dependabot/npm_and_yarn/axios-1.7.4
Bump axios from 1.6.2 to 1.7.4
2024-08-30 01:07:29 -04:00
dependabot[bot]
8bb50b73b2 Bump axios from 1.6.2 to 1.7.4
Bumps [axios](https://github.com/axios/axios) from 1.6.2 to 1.7.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.6.2...v1.7.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-30 05:05:04 +00:00
Max Swartwout
cb482ad720 Merge pull request #98 from maxswa/dependabot/npm_and_yarn/ws-8.17.1
Bump ws from 8.13.0 to 8.17.1
2024-08-30 01:04:53 -04:00
Max Swartwout
0fbd85aa07 Merge pull request #100 from maxswa/dependabot/npm_and_yarn/micromatch-4.0.8
Bump micromatch from 4.0.2 to 4.0.8
2024-08-30 01:04:39 -04:00
Max Swartwout
e634b107b1 Merge pull request #99 from Not-Jayden/araxxor
Add Araxxor
2024-08-30 01:04:26 -04:00
dependabot[bot]
29db21493c Bump micromatch from 4.0.2 to 4.0.8
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.2 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.2...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-30 04:14:53 +00:00
Jayden Carey
b117cfcf41 add araxxor 2024-08-29 00:17:36 +08:00
dependabot[bot]
d895326d9f Bump ws from 8.13.0 to 8.17.1
Bumps [ws](https://github.com/websockets/ws) from 8.13.0 to 8.17.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.13.0...8.17.1)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 06:40:44 +00:00
maxswa
1f7a25d421 v2.18.0 2024-03-20 19:23:50 -04:00
Max Swartwout
057812681b Merge pull request #95 from maxswa/varlamore-part-one
Add Colosseum Glory, Lunar Chests, Sol Heredit
2024-03-20 19:21:55 -04:00
Max Swartwout
ee510ec69a Merge pull request #94 from maxswa/dependabot/npm_and_yarn/follow-redirects-1.15.6
Bump follow-redirects from 1.15.4 to 1.15.6
2024-03-20 19:19:55 -04:00
maxswa
6adcb02545 Add Colosseum Glory, Lunar Chests, Sol Heredit 2024-03-20 19:18:35 -04:00
dependabot[bot]
dacbd90189 Bump follow-redirects from 1.15.4 to 1.15.6
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.4 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-16 23:16:39 +00:00
maxswa
3b502cb7cf v2.17.0 2024-01-24 11:25:48 -05:00
Max Swartwout
b3f81e66eb Merge pull request #88 from maxswa/scurrius
Add Scurrius
2024-01-24 11:24:34 -05:00
Max Swartwout
01150b6234 Merge pull request #93 from maxswa/update-readme-json-api
Add reference to official JSON API in README
2024-01-19 18:43:47 -05:00
maxswa
ca4d75f2c7 Add reference to official JSON API in README. 2024-01-19 18:37:14 -05:00
Max Swartwout
03b2ef42d2 Merge pull request #91 from maxswa/dependabot/npm_and_yarn/follow-redirects-1.15.4
Bump follow-redirects from 1.15.3 to 1.15.4
2024-01-19 18:18:24 -05:00
dependabot[bot]
7e2603b235 Bump follow-redirects from 1.15.3 to 1.15.4
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.3 to 1.15.4.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.3...v1.15.4)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-11 04:36:21 +00:00
11 changed files with 1384 additions and 378 deletions

View File

@@ -5,22 +5,24 @@
[![types](https://img.shields.io/npm/types/osrs-json-hiscores.svg?style=flat-square)](https://github.com/maxswa/osrs-json-hiscores/blob/master/src/types.ts) [![types](https://img.shields.io/npm/types/osrs-json-hiscores.svg?style=flat-square)](https://github.com/maxswa/osrs-json-hiscores/blob/master/src/types.ts)
[![build](https://img.shields.io/github/actions/workflow/status/maxswa/osrs-json-hiscores/main.yml?style=flat-square&branch=main)](https://github.com/maxswa/osrs-json-hiscores/actions/workflows/main.yml?query=branch%3Amain) [![build](https://img.shields.io/github/actions/workflow/status/maxswa/osrs-json-hiscores/main.yml?style=flat-square&branch=main)](https://github.com/maxswa/osrs-json-hiscores/actions/workflows/main.yml?query=branch%3Amain)
**The Old School Runescape API wrapper that does more!** **The Old School RuneScape API wrapper that does more!**
## What it does ## What it does
The official hiscores API for Old School Runescape (OSRS) returns CSV. The official hiscores API for Old School RuneScape (OSRS) can return CSV or a simple JSON array.
This wrapper converts it to json and provides extra information about the given player. By comparing player info it infers the player's game mode, as well as any previous modes (de-ultimated, de-ironed and/or died as a hardcore ironman). This wrapper converts the hiscores data into a more usable JSON object and provides extra information about the given player. By comparing player info it infers the player's game mode, as well as any previous modes (de-ultimated, de-ironed and/or died as a hardcore ironman).
Additional functions are provided that screen-scrape the OSRS leaderboards and return a list of players as json. Additional functions are provided that screen-scrape the OSRS leaderboards and return a list of players as json. Also simple utility functions are provided to fetch the raw responses from Jagex's APIs, if desired.
`osrs-json-hiscores` has TypeScript support, with full definitions for all functions and custom data types. `osrs-json-hiscores` has TypeScript support, with full definitions for all functions and custom data types.
--- ---
### Disclaimer ### Disclaimer
Jagex does not provide `Access-Control-Allow-Origin` headers in their responses. This means that [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) will block all browser requests to their hiscores API. In order to get around this, osrs-json-hiscores should be installed on the server side and exposed to the front end via a simple API. Here is an example of this in use: [codesandbox.io/s/osrs-json-hiscores-demo](https://codesandbox.io/s/osrs-json-hiscores-demo-qz656) Jagex does not provide `Access-Control-Allow-Origin` headers in their responses. This means that [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) will block all browser requests to their hiscores API. In order to get around this, osrs-json-hiscores needs to be installed on the server side and exposed to the front end via a simple API. Here is an example of this in use: [codesandbox.io/s/osrs-json-hiscores-demo](https://codesandbox.io/s/osrs-json-hiscores-demo-qz656)
TLDR: You cannot use this library directly in your client side app e.g. React or Vue, you must set up a server which uses this lib internally and have your client fetch data from your server.
--- ---
@@ -42,27 +44,14 @@ $ yarn add osrs-json-hiscores
Install the package and then import it into your project: Install the package and then import it into your project:
```javascript ```typescript
const hiscores = require('osrs-json-hiscores'); import { getStatsByGamemode, getSkillPage } from 'osrs-json-hiscores';
``` ```
Once you import it you can call the functions asynchronously: Once you import it you can call the functions asynchronously:
```javascript ```typescript
hiscores const stats = await getStatsByGamemode('Lynx Titan');
.getStats('Lynx Titan')
.then((res) => console.log(res))
.catch((err) => console.error(err));
```
If you are using TypeScript or transpiling your JS you can use ES6 syntax:
```javascript
import hiscores, { getSkillPage } from 'osrs-json-hiscores';
// ...
const stats = await hiscores.getStats('Lynx Titan');
const topPage = await getSkillPage('overall'); const topPage = await getSkillPage('overall');
``` ```
@@ -81,9 +70,8 @@ const topPage = await getSkillPage('overall');
`getSkillPage` and `getActivityPage` require a skill / activity and optionally a gamemode and page: `getSkillPage` and `getActivityPage` require a skill / activity and optionally a gamemode and page:
```javascript ```typescript
hiscores getSkillPage('attack', 'main', 1)
.getSkillPage('attack', 'main', 1)
.then((res) => console.log(res)) .then((res) => console.log(res))
.catch((err) => console.error(err)); .catch((err) => console.error(err));
``` ```
@@ -114,6 +102,7 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses
| PvP Arena - Rank | `pvpArena` | | PvP Arena - Rank | `pvpArena` |
| Soul Wars Zeal | `soulWarsZeal` | | Soul Wars Zeal | `soulWarsZeal` |
| Rifts closed | `riftsClosed` | | Rifts closed | `riftsClosed` |
| Colosseum Glory | `colosseumGlory` |
### Points ### Points
@@ -128,6 +117,8 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses
| --------------------------------- | :----------------------------: | | --------------------------------- | :----------------------------: |
| Abyssal Sire | `abyssalSire` | | Abyssal Sire | `abyssalSire` |
| Alchemical Hydra | `alchemicalHydra` | | Alchemical Hydra | `alchemicalHydra` |
| Amoxliatl | `amoxliatl` |
| Araxxor | `araxxor` |
| Artio | `artio` | | Artio | `artio` |
| Barrows Chests | `barrows` | | Barrows Chests | `barrows` |
| Bryophyta | `bryophyta` | | Bryophyta | `bryophyta` |
@@ -155,6 +146,7 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses
| Kraken | `kraken` | | Kraken | `kraken` |
| Kreearra | `kreeArra` | | Kreearra | `kreeArra` |
| K'ril Tsutsaroth | `krilTsutsaroth` | | K'ril Tsutsaroth | `krilTsutsaroth` |
| Lunar Chests | `lunarChests` |
| Mimic | `mimic` | | Mimic | `mimic` |
| Nex | `nex` | | Nex | `nex` |
| Nightmare | `nightmare` | | Nightmare | `nightmare` |
@@ -165,10 +157,12 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses
| Scorpia | `scorpia` | | Scorpia | `scorpia` |
| Scurrius | `scurrius` | | Scurrius | `scurrius` |
| Skotizo | `skotizo` | | Skotizo | `skotizo` |
| Sol Heredit | `solHeredit` |
| Spindel | `spindel` | | Spindel | `spindel` |
| Tempoross | `tempoross` | | Tempoross | `tempoross` |
| The Gauntlet | `gauntlet` | | The Gauntlet | `gauntlet` |
| The Corrupted Gauntlet | `corruptedGauntlet` | | The Corrupted Gauntlet | `corruptedGauntlet` |
| The Hueycoatl | `hueycoatl` |
| The Leviathan | `leviathan` | | The Leviathan | `leviathan` |
| The Whisperer | `whisperer` | | The Whisperer | `whisperer` |
| Theatre Of Blood | `theatreOfBlood` | | Theatre Of Blood | `theatreOfBlood` |
@@ -190,7 +184,7 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses
`getStats` returns a player object that looks like this: `getStats` returns a player object that looks like this:
```javascript ```typescript
{ {
name: 'Lynx Titan', name: 'Lynx Titan',
mode: 'main', mode: 'main',
@@ -218,7 +212,7 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses
`getSkillPage` returns and array of 25 players (This represents a page on the hiscores): `getSkillPage` returns and array of 25 players (This represents a page on the hiscores):
```javascript ```typescript
[ [
{ rank: 1, name: 'Lynx Titan', level: 2277, xp: 4600000000, dead: false }, { rank: 1, name: 'Lynx Titan', level: 2277, xp: 4600000000, dead: false },
{}, {},
@@ -231,7 +225,7 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses
Get the properly formatted name of any skill, boss, clue or other activity: Get the properly formatted name of any skill, boss, clue or other activity:
```javascript ```typescript
// kril === "K'ril Tsutsaroth" // kril === "K'ril Tsutsaroth"
const kril = FORMATTED_BOSS_NAMES['krilTsutsaroth']; const kril = FORMATTED_BOSS_NAMES['krilTsutsaroth'];
``` ```

View File

@@ -1,100 +1,106 @@
3745,2277,840426611 2130,2277,1102428578
24080,99,30276246 22624,99,32956104
9559,99,31228199 3574,99,47147957
2212,99,143599407 1226,99,200000000
3550,99,123248914 1454,99,180249986
6564,99,109953707 3112,99,155438899
4244,99,15144846 2533,99,17520811
4107,99,57072224 2078,99,84629930
135556,99,13353511 150276,99,13378420
25855,99,16903268 23833,99,19182079
53472,99,13456850 61715,99,13456926
22453,99,16654917 24604,99,16672148
17690,99,19118307 19900,99,19161337
45816,99,14059776 53450,99,14082613
10409,99,16530015 12063,99,16553015
27702,99,14765145 32871,99,14985851
39430,99,13235063 39747,99,13346314
6722,99,15754877 8390,99,15771711
51813,99,14023027 55848,99,14322777
5324,99,33835543 1723,99,52832158
3154,99,69527777 2107,99,101923913
4719,99,22733384 5301,99,22739376
15135,99,17952893 20087,99,18044758
1089,99,17998715 1301,99,18031495
-1,-1 -1,-1
-1,-1 -1,-1
26164,10 32847,10
12886,3 16567,3
148658,8 147262,8
103161,7 101823,7
377,9556 382,9739
862,825 1265,825
148,6000 131,6000
2153,1606 2401,1606
42107,298 43386,311
504,459 799,460
1816,368 945,537
14701,2521 5531,5516
-1,-1 -1,-1
6776,14780 7538,14780
4773,1060 6781,1060
2741,2192 6880,43487
90203,594 3193,2192
29573,143 2932,4796
3668,1830 123,6789
206778,5 37,111
32897,293 44605,143
64112,58 4023,1830
18492,1905 238149,5
178941,34 47139,293
2379,501 98811,58
82902,50 10766,2657
147358,26 200557,34
51973,287 1735,692
2377,2000 23548,215
147406,41 43337,116
32225,707 61439,287
42229,698 2859,2000
32212,714 53841,106
79605,25 18420,1078
9517,688 23824,1062
19125,1228 18418,1088
65849,474 85908,25
2080,2140 6077,1320
16433,182 21980,1228
2006,2046 76561,477
48575,580 774,3642
115056,1908 7917,281
10406,920 2313,2046
2196,1444 52832,580
1005,33 64296,2899
28413,620 4205,1740
4157,744 2681,1444
4261,500 3424,324
993,217 523,48
21848,251 35420,626
66260,119 4162,749
108898,26 5046,500
23958,90 1218,217
373975,9 21243,379
2005,1569 40733,249
40001,273 53931,91
192608,7 4870,1245
78367,201 174877,29
5679,583 2122,49
478,1760 3471,1569
22932,250 50947,273
15059,7 236110,7
7161,3066 102423,201
101555,35 2344,21039
610,933 10174,666
15733,2 665,2072
-1,-1 23177,310
2051,2078 1967,419
194,7096 8495,3066
69260,51 122123,37
14039,2780 240,1537
876367,62 7756,7
165341,25 140561,8
226318,275 4736,2113
249,7096
89194,51
15067,2780
975929,62
196393,25
227062,340
Can't render this file because it has a wrong number of fields in line 25.

View File

@@ -3,200 +3,664 @@
{ {
"id": 0, "id": 0,
"name": "Overall", "name": "Overall",
"rank": 3745, "rank": 2130,
"level": 2277, "level": 2277,
"xp": 840426611 "xp": 1102428578
},
{
"id": 1,
"name": "Attack",
"rank": 22624,
"level": 99,
"xp": 32956104
},
{
"id": 2,
"name": "Defence",
"rank": 3574,
"level": 99,
"xp": 47147957
},
{
"id": 3,
"name": "Strength",
"rank": 1226,
"level": 99,
"xp": 200000000
}, },
{ "id": 1, "name": "Attack", "rank": 24080, "level": 99, "xp": 30276246 },
{ "id": 2, "name": "Defence", "rank": 9559, "level": 99, "xp": 31228199 },
{ "id": 3, "name": "Strength", "rank": 2212, "level": 99, "xp": 143599407 },
{ {
"id": 4, "id": 4,
"name": "Hitpoints", "name": "Hitpoints",
"rank": 3550, "rank": 1454,
"level": 99, "level": 99,
"xp": 123248914 "xp": 180249986
},
{
"id": 5,
"name": "Ranged",
"rank": 3112,
"level": 99,
"xp": 155438899
},
{
"id": 6,
"name": "Prayer",
"rank": 2533,
"level": 99,
"xp": 17520811
},
{
"id": 7,
"name": "Magic",
"rank": 2078,
"level": 99,
"xp": 84629930
},
{
"id": 8,
"name": "Cooking",
"rank": 150276,
"level": 99,
"xp": 13378420
}, },
{ "id": 5, "name": "Ranged", "rank": 6564, "level": 99, "xp": 109953707 },
{ "id": 6, "name": "Prayer", "rank": 4244, "level": 99, "xp": 15144846 },
{ "id": 7, "name": "Magic", "rank": 4107, "level": 99, "xp": 57072224 },
{ "id": 8, "name": "Cooking", "rank": 135556, "level": 99, "xp": 13353511 },
{ {
"id": 9, "id": 9,
"name": "Woodcutting", "name": "Woodcutting",
"rank": 25855, "rank": 23833,
"level": 99, "level": 99,
"xp": 16903268 "xp": 19182079
}, },
{ {
"id": 10, "id": 10,
"name": "Fletching", "name": "Fletching",
"rank": 53472, "rank": 61715,
"level": 99, "level": 99,
"xp": 13456850 "xp": 13456926
},
{
"id": 11,
"name": "Fishing",
"rank": 24604,
"level": 99,
"xp": 16672148
}, },
{ "id": 11, "name": "Fishing", "rank": 22453, "level": 99, "xp": 16654917 },
{ {
"id": 12, "id": 12,
"name": "Firemaking", "name": "Firemaking",
"rank": 17690, "rank": 19900,
"level": 99, "level": 99,
"xp": 19118307 "xp": 19161337
}, },
{ {
"id": 13, "id": 13,
"name": "Crafting", "name": "Crafting",
"rank": 45816, "rank": 53450,
"level": 99, "level": 99,
"xp": 14059776 "xp": 14082613
}, },
{ {
"id": 14, "id": 14,
"name": "Smithing", "name": "Smithing",
"rank": 10409, "rank": 12063,
"level": 99, "level": 99,
"xp": 16530015 "xp": 16553015
},
{
"id": 15,
"name": "Mining",
"rank": 32871,
"level": 99,
"xp": 14985851
}, },
{ "id": 15, "name": "Mining", "rank": 27702, "level": 99, "xp": 14765145 },
{ {
"id": 16, "id": 16,
"name": "Herblore", "name": "Herblore",
"rank": 39430, "rank": 39747,
"level": 99, "level": 99,
"xp": 13235063 "xp": 13346314
},
{
"id": 17,
"name": "Agility",
"rank": 8390,
"level": 99,
"xp": 15771711
}, },
{ "id": 17, "name": "Agility", "rank": 6722, "level": 99, "xp": 15754877 },
{ {
"id": 18, "id": 18,
"name": "Thieving", "name": "Thieving",
"rank": 51813, "rank": 55848,
"level": 99, "level": 99,
"xp": 14023027 "xp": 14322777
},
{
"id": 19,
"name": "Slayer",
"rank": 1723,
"level": 99,
"xp": 52832158
},
{
"id": 20,
"name": "Farming",
"rank": 2107,
"level": 99,
"xp": 101923913
}, },
{ "id": 19, "name": "Slayer", "rank": 5324, "level": 99, "xp": 33835543 },
{ "id": 20, "name": "Farming", "rank": 3154, "level": 99, "xp": 69527777 },
{ {
"id": 21, "id": 21,
"name": "Runecraft", "name": "Runecraft",
"rank": 4719, "rank": 5301,
"level": 99, "level": 99,
"xp": 22733384 "xp": 22739376
},
{
"id": 22,
"name": "Hunter",
"rank": 20087,
"level": 99,
"xp": 18044758
}, },
{ "id": 22, "name": "Hunter", "rank": 15135, "level": 99, "xp": 17952893 },
{ {
"id": 23, "id": 23,
"name": "Construction", "name": "Construction",
"rank": 1089, "rank": 1301,
"level": 99, "level": 99,
"xp": 17998715 "xp": 18031495
} }
], ],
"activities": [ "activities": [
{ "id": 0, "name": "League Points", "rank": -1, "score": -1 }, {
{ "id": 1, "name": "Deadman Points", "rank": -1, "score": -1 }, "id": 0,
{ "id": 2, "name": "Bounty Hunter - Hunter", "rank": 26164, "score": 10 }, "name": "League Points",
{ "id": 3, "name": "Bounty Hunter - Rogue", "rank": 12886, "score": 3 }, "rank": -1,
"score": -1
},
{
"id": 1,
"name": "Deadman Points",
"rank": -1,
"score": -1
},
{
"id": 2,
"name": "Bounty Hunter - Hunter",
"rank": 32847,
"score": 10
},
{
"id": 3,
"name": "Bounty Hunter - Rogue",
"rank": 16567,
"score": 3
},
{ {
"id": 4, "id": 4,
"name": "Bounty Hunter (Legacy) - Hunter", "name": "Bounty Hunter (Legacy) - Hunter",
"rank": 148658, "rank": 147262,
"score": 8 "score": 8
}, },
{ {
"id": 5, "id": 5,
"name": "Bounty Hunter (Legacy) - Rogue", "name": "Bounty Hunter (Legacy) - Rogue",
"rank": 103161, "rank": 101823,
"score": 7 "score": 7
}, },
{ "id": 6, "name": "Clue Scrolls (all)", "rank": 377, "score": 9556 }, {
{ "id": 7, "name": "Clue Scrolls (beginner)", "rank": 862, "score": 825 }, "id": 6,
{ "id": 8, "name": "Clue Scrolls (easy)", "rank": 148, "score": 6000 }, "name": "Clue Scrolls (all)",
{ "id": 9, "name": "Clue Scrolls (medium)", "rank": 2153, "score": 1606 }, "rank": 382,
{ "id": 10, "name": "Clue Scrolls (hard)", "rank": 42107, "score": 298 }, "score": 9739
{ "id": 11, "name": "Clue Scrolls (elite)", "rank": 504, "score": 459 }, },
{ "id": 12, "name": "Clue Scrolls (master)", "rank": 1816, "score": 368 }, {
{ "id": 13, "name": "LMS - Rank", "rank": 14701, "score": 2521 }, "id": 7,
{ "id": 14, "name": "PvP Arena - Rank", "rank": -1, "score": -1 }, "name": "Clue Scrolls (beginner)",
{ "id": 15, "name": "Soul Wars Zeal", "rank": 6776, "score": 14780 }, "rank": 1265,
{ "id": 16, "name": "Rifts closed", "rank": 4773, "score": 1060 }, "score": 825
{ "id": 17, "name": "Abyssal Sire", "rank": 2741, "score": 2192 }, },
{ "id": 18, "name": "Alchemical Hydra", "rank": 90203, "score": 594 }, {
{ "id": 19, "name": "Artio", "rank": 29573, "score": 143 }, "id": 8,
{ "id": 20, "name": "Barrows Chests", "rank": 3668, "score": 1830 }, "name": "Clue Scrolls (easy)",
{ "id": 21, "name": "Bryophyta", "rank": 206778, "score": 5 }, "rank": 131,
{ "id": 22, "name": "Callisto", "rank": 32897, "score": 293 }, "score": 6000
{ "id": 23, "name": "Calvar'ion", "rank": 64112, "score": 58 }, },
{ "id": 24, "name": "Cerberus", "rank": 18492, "score": 1905 }, {
{ "id": 25, "name": "Chambers of Xeric", "rank": 178941, "score": 34 }, "id": 9,
"name": "Clue Scrolls (medium)",
"rank": 2401,
"score": 1606
},
{
"id": 10,
"name": "Clue Scrolls (hard)",
"rank": 43386,
"score": 311
},
{
"id": 11,
"name": "Clue Scrolls (elite)",
"rank": 799,
"score": 460
},
{
"id": 12,
"name": "Clue Scrolls (master)",
"rank": 945,
"score": 537
},
{
"id": 13,
"name": "LMS - Rank",
"rank": 5531,
"score": 5516
},
{
"id": 14,
"name": "PvP Arena - Rank",
"rank": -1,
"score": -1
},
{
"id": 15,
"name": "Soul Wars Zeal",
"rank": 7538,
"score": 14780
},
{
"id": 16,
"name": "Rifts closed",
"rank": 6781,
"score": 1060
},
{
"id": 17,
"name": "Colosseum Glory",
"rank": 6880,
"score": 43487
},
{
"id": 18,
"name": "Abyssal Sire",
"rank": 3193,
"score": 2192
},
{
"id": 19,
"name": "Alchemical Hydra",
"rank": 2932,
"score": 4796
},
{
"id": 20,
"name": "Amoxliatl",
"rank": 123,
"score": 6789
},
{
"id": 21,
"name": "Araxxor",
"rank": 37,
"score": 111
},
{
"id": 22,
"name": "Artio",
"rank": 44605,
"score": 143
},
{
"id": 23,
"name": "Barrows Chests",
"rank": 4023,
"score": 1830
},
{
"id": 24,
"name": "Bryophyta",
"rank": 238149,
"score": 5
},
{
"id": 25,
"name": "Callisto",
"rank": 47139,
"score": 293
},
{ {
"id": 26, "id": 26,
"name": "Chambers of Xeric: Challenge Mode", "name": "Calvar'ion",
"rank": 2379, "rank": 98811,
"score": 501 "score": 58
},
{
"id": 27,
"name": "Cerberus",
"rank": 10766,
"score": 2657
},
{
"id": 28,
"name": "Chambers of Xeric",
"rank": 200557,
"score": 34
},
{
"id": 29,
"name": "Chambers of Xeric: Challenge Mode",
"rank": 1735,
"score": 692
},
{
"id": 30,
"name": "Chaos Elemental",
"rank": 23548,
"score": 215
},
{
"id": 31,
"name": "Chaos Fanatic",
"rank": 43337,
"score": 116
},
{
"id": 32,
"name": "Commander Zilyana",
"rank": 61439,
"score": 287
},
{
"id": 33,
"name": "Corporeal Beast",
"rank": 2859,
"score": 2000
},
{
"id": 34,
"name": "Crazy Archaeologist",
"rank": 53841,
"score": 106
},
{
"id": 35,
"name": "Dagannoth Prime",
"rank": 18420,
"score": 1078
},
{
"id": 36,
"name": "Dagannoth Rex",
"rank": 23824,
"score": 1062
},
{
"id": 37,
"name": "Dagannoth Supreme",
"rank": 18418,
"score": 1088
},
{
"id": 38,
"name": "Deranged Archaeologist",
"rank": 85908,
"score": 25
},
{
"id": 39,
"name": "Duke Sucellus",
"rank": 6077,
"score": 1320
},
{
"id": 40,
"name": "General Graardor",
"rank": 21980,
"score": 1228
},
{
"id": 41,
"name": "Giant Mole",
"rank": 76561,
"score": 477
},
{
"id": 42,
"name": "Grotesque Guardians",
"rank": 774,
"score": 3642
},
{
"id": 43,
"name": "Hespori",
"rank": 7917,
"score": 281
},
{
"id": 44,
"name": "Kalphite Queen",
"rank": 2313,
"score": 2046
},
{
"id": 45,
"name": "King Black Dragon",
"rank": 52832,
"score": 580
},
{
"id": 46,
"name": "Kraken",
"rank": 64296,
"score": 2899
},
{
"id": 47,
"name": "Kree'Arra",
"rank": 4205,
"score": 1740
},
{
"id": 48,
"name": "K'ril Tsutsaroth",
"rank": 2681,
"score": 1444
},
{
"id": 49,
"name": "Lunar Chests",
"rank": 3424,
"score": 324
},
{
"id": 50,
"name": "Mimic",
"rank": 523,
"score": 48
},
{
"id": 51,
"name": "Nex",
"rank": 35420,
"score": 626
},
{
"id": 52,
"name": "Nightmare",
"rank": 4162,
"score": 749
},
{
"id": 53,
"name": "Phosani's Nightmare",
"rank": 5046,
"score": 500
},
{
"id": 54,
"name": "Obor",
"rank": 1218,
"score": 217
},
{
"id": 55,
"name": "Phantom Muspah",
"rank": 21243,
"score": 379
},
{
"id": 56,
"name": "Sarachnis",
"rank": 40733,
"score": 249
},
{
"id": 57,
"name": "Scorpia",
"rank": 53931,
"score": 91
},
{
"id": 58,
"name": "Scurrius",
"rank": 4870,
"score": 1245
},
{
"id": 59,
"name": "Skotizo",
"rank": 174877,
"score": 29
},
{
"id": 60,
"name": "Sol Heredit",
"rank": 2122,
"score": 49
},
{
"id": 61,
"name": "Spindel",
"rank": 3471,
"score": 1569
},
{
"id": 62,
"name": "Tempoross",
"rank": 50947,
"score": 273
}, },
{ "id": 27, "name": "Chaos Elemental", "rank": 82902, "score": 50 },
{ "id": 28, "name": "Chaos Fanatic", "rank": 147358, "score": 26 },
{ "id": 29, "name": "Commander Zilyana", "rank": 51973, "score": 287 },
{ "id": 30, "name": "Corporeal Beast", "rank": 2377, "score": 2000 },
{ "id": 31, "name": "Crazy Archaeologist", "rank": 147406, "score": 41 },
{ "id": 32, "name": "Dagannoth Prime", "rank": 32225, "score": 707 },
{ "id": 33, "name": "Dagannoth Rex", "rank": 42229, "score": 698 },
{ "id": 34, "name": "Dagannoth Supreme", "rank": 32212, "score": 714 },
{ "id": 35, "name": "Deranged Archaeologist", "rank": 79605, "score": 25 },
{ "id": 36, "name": "Duke Sucellus", "rank": 9517, "score": 688 },
{ "id": 37, "name": "General Graardor", "rank": 19125, "score": 1228 },
{ "id": 38, "name": "Giant Mole", "rank": 65849, "score": 474 },
{ "id": 39, "name": "Grotesque Guardians", "rank": 2080, "score": 2140 },
{ "id": 40, "name": "Hespori", "rank": 16433, "score": 182 },
{ "id": 41, "name": "Kalphite Queen", "rank": 2006, "score": 2046 },
{ "id": 42, "name": "King Black Dragon", "rank": 48575, "score": 580 },
{ "id": 43, "name": "Kraken", "rank": 115056, "score": 1908 },
{ "id": 44, "name": "Kree'Arra", "rank": 10406, "score": 920 },
{ "id": 45, "name": "K'ril Tsutsaroth", "rank": 2196, "score": 1444 },
{ "id": 46, "name": "Mimic", "rank": 1005, "score": 33 },
{ "id": 47, "name": "Nex", "rank": 28413, "score": 620 },
{ "id": 48, "name": "Nightmare", "rank": 4157, "score": 744 },
{ "id": 49, "name": "Phosani's Nightmare", "rank": 4261, "score": 500 },
{ "id": 50, "name": "Obor", "rank": 993, "score": 217 },
{ "id": 51, "name": "Phantom Muspah", "rank": 21848, "score": 251 },
{ "id": 52, "name": "Sarachnis", "rank": 66260, "score": 119 },
{ "id": 53, "name": "Scorpia", "rank": 108898, "score": 26 },
{ "id": 54, "name": "Scurrius", "rank": 23958, "score": 90 },
{ "id": 55, "name": "Skotizo", "rank": 373975, "score": 9 },
{ "id": 56, "name": "Spindel", "rank": 2005, "score": 1569 },
{ "id": 57, "name": "Tempoross", "rank": 40001, "score": 273 },
{ "id": 58, "name": "The Gauntlet", "rank": 192608, "score": 7 },
{ "id": 59, "name": "The Corrupted Gauntlet", "rank": 78367, "score": 201 },
{ "id": 60, "name": "The Leviathan", "rank": 5679, "score": 583 },
{ "id": 61, "name": "The Whisperer", "rank": 478, "score": 1760 },
{ "id": 62, "name": "Theatre of Blood", "rank": 22932, "score": 250 },
{ {
"id": 63, "id": 63,
"name": "Theatre of Blood: Hard Mode", "name": "The Gauntlet",
"rank": 15059, "rank": 236110,
"score": 7 "score": 7
}, },
{ {
"id": 64, "id": 64,
"name": "Thermonuclear Smoke Devil", "name": "The Corrupted Gauntlet",
"rank": 7161, "rank": 102423,
"score": 3066 "score": 201
},
{
"id": 65,
"name": "The Hueycoatl",
"rank": 2344,
"score": 21039
}, },
{ "id": 65, "name": "Tombs of Amascut", "rank": 101555, "score": 35 },
{ {
"id": 66, "id": 66,
"name": "Tombs of Amascut: Expert Mode", "name": "The Leviathan",
"rank": 610, "rank": 10174,
"score": 933 "score": 666
}, },
{ "id": 67, "name": "TzKal-Zuk", "rank": 15733, "score": 2 }, {
{ "id": 68, "name": "TzTok-Jad", "rank": -1, "score": -1 }, "id": 67,
{ "id": 69, "name": "Vardorvis", "rank": 2051, "score": 2078 }, "name": "The Whisperer",
{ "id": 70, "name": "Venenatis", "rank": 194, "score": 7096 }, "rank": 665,
{ "id": 71, "name": "Vet'ion", "rank": 69260, "score": 51 }, "score": 2072
{ "id": 72, "name": "Vorkath", "rank": 14039, "score": 2780 }, },
{ "id": 73, "name": "Wintertodt", "rank": 876367, "score": 62 }, {
{ "id": 74, "name": "Zalcano", "rank": 165341, "score": 25 }, "id": 68,
{ "id": 75, "name": "Zulrah", "rank": 226318, "score": 275 } "name": "Theatre of Blood",
"rank": 23177,
"score": 310
},
{
"id": 69,
"name": "Theatre of Blood: Hard Mode",
"rank": 1967,
"score": 419
},
{
"id": 70,
"name": "Thermonuclear Smoke Devil",
"rank": 8495,
"score": 3066
},
{
"id": 71,
"name": "Tombs of Amascut",
"rank": 122123,
"score": 37
},
{
"id": 72,
"name": "Tombs of Amascut: Expert Mode",
"rank": 240,
"score": 1537
},
{
"id": 73,
"name": "TzKal-Zuk",
"rank": 7756,
"score": 7
},
{
"id": 74,
"name": "TzTok-Jad",
"rank": 140561,
"score": 8
},
{
"id": 75,
"name": "Vardorvis",
"rank": 4736,
"score": 2113
},
{
"id": 76,
"name": "Venenatis",
"rank": 249,
"score": 7096
},
{
"id": 77,
"name": "Vet'ion",
"rank": 89194,
"score": 51
},
{
"id": 78,
"name": "Vorkath",
"rank": 15067,
"score": 2780
},
{
"id": 79,
"name": "Wintertodt",
"rank": 975929,
"score": 62
},
{
"id": 80,
"name": "Zalcano",
"rank": 196393,
"score": 25
},
{
"id": 81,
"name": "Zulrah",
"rank": 227062,
"score": 340
}
] ]
} }

View File

@@ -102,8 +102,11 @@ test('Parse CSV to json', () => {
13,4057 13,4057
37,225 37,225
25,1110 25,1110
7827,43249
382,2780 382,2780
944,3000 944,3000
561,398429
37,111
704,892 704,892
1981,1452 1981,1452
4981,23 4981,23
@@ -131,6 +134,7 @@ test('Parse CSV to json', () => {
41643,1477 41643,1477
625,2391 625,2391
120,2981 120,2981
54,2958
1,109 1,109
99,39002 99,39002
3,22666 3,22666
@@ -141,10 +145,12 @@ test('Parse CSV to json', () => {
82,3404 82,3404
555,7079 555,7079
5085,61 5085,61
8731,1423
678,903 678,903
18823,23 18823,23
63,375 63,375
2870,6 2870,6
891,9102
2871,7 2871,7
2872,8 2872,8
6984,138 6984,138
@@ -201,6 +207,7 @@ test('Parse CSV to json', () => {
pvpArena: { rank: 13, score: 4057 }, pvpArena: { rank: 13, score: 4057 },
soulWarsZeal: { rank: 37, score: 225 }, soulWarsZeal: { rank: 37, score: 225 },
riftsClosed: { rank: 25, score: 1110 }, riftsClosed: { rank: 25, score: 1110 },
colosseumGlory: { rank: 7827, score: 43249 },
clues: { clues: {
all: { rank: 32, score: 12148 }, all: { rank: 32, score: 12148 },
beginner: { rank: 3105, score: 76 }, beginner: { rank: 3105, score: 76 },
@@ -213,6 +220,8 @@ test('Parse CSV to json', () => {
bosses: { bosses: {
abyssalSire: { rank: 382, score: 2780 }, abyssalSire: { rank: 382, score: 2780 },
alchemicalHydra: { rank: 944, score: 3000 }, alchemicalHydra: { rank: 944, score: 3000 },
amoxliatl: { rank: 561, score: 398429 },
araxxor: { rank: 37, score: 111 },
artio: { rank: 704, score: 892 }, artio: { rank: 704, score: 892 },
barrows: { rank: 1981, score: 1452 }, barrows: { rank: 1981, score: 1452 },
bryophyta: { rank: 4981, score: 23 }, bryophyta: { rank: 4981, score: 23 },
@@ -240,6 +249,7 @@ test('Parse CSV to json', () => {
kraken: { rank: 41643, score: 1477 }, kraken: { rank: 41643, score: 1477 },
kreeArra: { rank: 625, score: 2391 }, kreeArra: { rank: 625, score: 2391 },
krilTsutsaroth: { rank: 120, score: 2981 }, krilTsutsaroth: { rank: 120, score: 2981 },
lunarChests: { rank: 54, score: 2958 },
mimic: { rank: 1, score: 109 }, mimic: { rank: 1, score: 109 },
nex: { rank: 99, score: 39002 }, nex: { rank: 99, score: 39002 },
nightmare: { rank: 3, score: 22666 }, nightmare: { rank: 3, score: 22666 },
@@ -250,10 +260,12 @@ test('Parse CSV to json', () => {
scorpia: { rank: 82, score: 3404 }, scorpia: { rank: 82, score: 3404 },
scurrius: { rank: 555, score: 7079 }, scurrius: { rank: 555, score: 7079 },
skotizo: { rank: 5085, score: 61 }, skotizo: { rank: 5085, score: 61 },
solHeredit: { rank: 8731, score: 1423 },
spindel: { rank: 678, score: 903 }, spindel: { rank: 678, score: 903 },
tempoross: { rank: 18823, score: 23 }, tempoross: { rank: 18823, score: 23 },
gauntlet: { rank: 63, score: 375 }, gauntlet: { rank: 63, score: 375 },
corruptedGauntlet: { rank: 2870, score: 6 }, corruptedGauntlet: { rank: 2870, score: 6 },
hueycoatl: { rank: 891, score: 9102 },
leviathan: { rank: 2871, score: 7 }, leviathan: { rank: 2871, score: 7 },
whisperer: { rank: 2872, score: 8 }, whisperer: { rank: 2872, score: 8 },
theatreOfBlood: { rank: 6984, score: 138 }, theatreOfBlood: { rank: 6984, score: 138 },

View File

@@ -1,14 +1,68 @@
{ {
"skills": [ "skills": [
{ "id": 0, "name": "Overall", "rank": 1, "level": 2277, "xp": 4600000000 }, {
{ "id": 1, "name": "Attack", "rank": 15, "level": 99, "xp": 200000000 }, "id": 0,
{ "id": 2, "name": "Defence", "rank": 28, "level": 99, "xp": 200000000 }, "name": "Overall",
{ "id": 3, "name": "Strength", "rank": 18, "level": 99, "xp": 200000000 }, "rank": 1,
{ "id": 4, "name": "Hitpoints", "rank": 7, "level": 99, "xp": 200000000 }, "level": 2277,
{ "id": 5, "name": "Ranged", "rank": 8, "level": 99, "xp": 200000000 }, "xp": 4600000000
{ "id": 6, "name": "Prayer", "rank": 11, "level": 99, "xp": 200000000 }, },
{ "id": 7, "name": "Magic", "rank": 31, "level": 99, "xp": 200000000 }, {
{ "id": 8, "name": "Cooking", "rank": 155, "level": 99, "xp": 200000000 }, "id": 1,
"name": "Attack",
"rank": 15,
"level": 99,
"xp": 200000000
},
{
"id": 2,
"name": "Defence",
"rank": 28,
"level": 99,
"xp": 200000000
},
{
"id": 3,
"name": "Strength",
"rank": 18,
"level": 99,
"xp": 200000000
},
{
"id": 4,
"name": "Hitpoints",
"rank": 7,
"level": 99,
"xp": 200000000
},
{
"id": 5,
"name": "Ranged",
"rank": 8,
"level": 99,
"xp": 200000000
},
{
"id": 6,
"name": "Prayer",
"rank": 11,
"level": 99,
"xp": 200000000
},
{
"id": 7,
"name": "Magic",
"rank": 30,
"level": 99,
"xp": 200000000
},
{
"id": 8,
"name": "Cooking",
"rank": 154,
"level": 99,
"xp": 200000000
},
{ {
"id": 9, "id": 9,
"name": "Woodcutting", "name": "Woodcutting",
@@ -16,8 +70,20 @@
"level": 99, "level": 99,
"xp": 200000000 "xp": 200000000
}, },
{ "id": 10, "name": "Fletching", "rank": 12, "level": 99, "xp": 200000000 }, {
{ "id": 11, "name": "Fishing", "rank": 9, "level": 99, "xp": 200000000 }, "id": 10,
"name": "Fletching",
"rank": 12,
"level": 99,
"xp": 200000000
},
{
"id": 11,
"name": "Fishing",
"rank": 9,
"level": 99,
"xp": 200000000
},
{ {
"id": 12, "id": 12,
"name": "Firemaking", "name": "Firemaking",
@@ -25,16 +91,76 @@
"level": 99, "level": 99,
"xp": 200000000 "xp": 200000000
}, },
{ "id": 13, "name": "Crafting", "rank": 4, "level": 99, "xp": 200000000 }, {
{ "id": 14, "name": "Smithing", "rank": 3, "level": 99, "xp": 200000000 }, "id": 13,
{ "id": 15, "name": "Mining", "rank": 24, "level": 99, "xp": 200000000 }, "name": "Crafting",
{ "id": 16, "name": "Herblore", "rank": 5, "level": 99, "xp": 200000000 }, "rank": 4,
{ "id": 17, "name": "Agility", "rank": 24, "level": 99, "xp": 200000000 }, "level": 99,
{ "id": 18, "name": "Thieving", "rank": 12, "level": 99, "xp": 200000000 }, "xp": 200000000
{ "id": 19, "name": "Slayer", "rank": 2, "level": 99, "xp": 200000000 }, },
{ "id": 20, "name": "Farming", "rank": 19, "level": 99, "xp": 200000000 }, {
{ "id": 21, "name": "Runecraft", "rank": 6, "level": 99, "xp": 200000000 }, "id": 14,
{ "id": 22, "name": "Hunter", "rank": 4, "level": 99, "xp": 200000000 }, "name": "Smithing",
"rank": 3,
"level": 99,
"xp": 200000000
},
{
"id": 15,
"name": "Mining",
"rank": 24,
"level": 99,
"xp": 200000000
},
{
"id": 16,
"name": "Herblore",
"rank": 5,
"level": 99,
"xp": 200000000
},
{
"id": 17,
"name": "Agility",
"rank": 24,
"level": 99,
"xp": 200000000
},
{
"id": 18,
"name": "Thieving",
"rank": 12,
"level": 99,
"xp": 200000000
},
{
"id": 19,
"name": "Slayer",
"rank": 2,
"level": 99,
"xp": 200000000
},
{
"id": 20,
"name": "Farming",
"rank": 19,
"level": 99,
"xp": 200000000
},
{
"id": 21,
"name": "Runecraft",
"rank": 6,
"level": 99,
"xp": 200000000
},
{
"id": 22,
"name": "Hunter",
"rank": 4,
"level": 99,
"xp": 200000000
},
{ {
"id": 23, "id": 23,
"name": "Construction", "name": "Construction",
@@ -44,10 +170,30 @@
} }
], ],
"activities": [ "activities": [
{ "id": 0, "name": "League Points", "rank": -1, "score": -1 }, {
{ "id": 1, "name": "Deadman Points", "rank": -1, "score": -1 }, "id": 0,
{ "id": 2, "name": "Bounty Hunter - Hunter", "rank": -1, "score": -1 }, "name": "League Points",
{ "id": 3, "name": "Bounty Hunter - Rogue", "rank": -1, "score": -1 }, "rank": -1,
"score": -1
},
{
"id": 1,
"name": "Deadman Points",
"rank": -1,
"score": -1
},
{
"id": 2,
"name": "Bounty Hunter - Hunter",
"rank": -1,
"score": -1
},
{
"id": 3,
"name": "Bounty Hunter - Rogue",
"rank": -1,
"score": -1
},
{ {
"id": 4, "id": 4,
"name": "Bounty Hunter (Legacy) - Hunter", "name": "Bounty Hunter (Legacy) - Hunter",
@@ -60,89 +206,461 @@
"rank": -1, "rank": -1,
"score": -1 "score": -1
}, },
{ "id": 6, "name": "Clue Scrolls (all)", "rank": 805212, "score": 22 }, {
{ "id": 7, "name": "Clue Scrolls (beginner)", "rank": -1, "score": -1 }, "id": 6,
{ "id": 8, "name": "Clue Scrolls (easy)", "rank": -1, "score": -1 }, "name": "Clue Scrolls (all)",
{ "id": 9, "name": "Clue Scrolls (medium)", "rank": -1, "score": -1 }, "rank": 832420,
{ "id": 10, "name": "Clue Scrolls (hard)", "rank": 502504, "score": 22 }, "score": 22
{ "id": 11, "name": "Clue Scrolls (elite)", "rank": -1, "score": -1 }, },
{ "id": 12, "name": "Clue Scrolls (master)", "rank": -1, "score": -1 }, {
{ "id": 13, "name": "LMS - Rank", "rank": -1, "score": -1 }, "id": 7,
{ "id": 14, "name": "PvP Arena - Rank", "rank": -1, "score": -1 }, "name": "Clue Scrolls (beginner)",
{ "id": 15, "name": "Soul Wars Zeal", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 16, "name": "Rifts closed", "rank": -1, "score": -1 }, "score": -1
{ "id": 17, "name": "Abyssal Sire", "rank": -1, "score": -1 }, },
{ "id": 18, "name": "Alchemical Hydra", "rank": -1, "score": -1 }, {
{ "id": 19, "name": "Artio", "rank": -1, "score": -1 }, "id": 8,
{ "id": 20, "name": "Barrows Chests", "rank": -1, "score": -1 }, "name": "Clue Scrolls (easy)",
{ "id": 21, "name": "Bryophyta", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 22, "name": "Callisto", "rank": -1, "score": -1 }, "score": -1
{ "id": 23, "name": "Calvar'ion", "rank": -1, "score": -1 }, },
{ "id": 24, "name": "Cerberus", "rank": -1, "score": -1 }, {
{ "id": 25, "name": "Chambers of Xeric", "rank": -1, "score": -1 }, "id": 9,
"name": "Clue Scrolls (medium)",
"rank": -1,
"score": -1
},
{
"id": 10,
"name": "Clue Scrolls (hard)",
"rank": 517091,
"score": 22
},
{
"id": 11,
"name": "Clue Scrolls (elite)",
"rank": -1,
"score": -1
},
{
"id": 12,
"name": "Clue Scrolls (master)",
"rank": -1,
"score": -1
},
{
"id": 13,
"name": "LMS - Rank",
"rank": -1,
"score": -1
},
{
"id": 14,
"name": "PvP Arena - Rank",
"rank": -1,
"score": -1
},
{
"id": 15,
"name": "Soul Wars Zeal",
"rank": -1,
"score": -1
},
{
"id": 16,
"name": "Rifts closed",
"rank": -1,
"score": -1
},
{
"id": 17,
"name": "Colosseum Glory",
"rank": -1,
"score": -1
},
{
"id": 18,
"name": "Abyssal Sire",
"rank": -1,
"score": -1
},
{
"id": 19,
"name": "Alchemical Hydra",
"rank": -1,
"score": -1
},
{
"id": 20,
"name": "Amoxliatl",
"rank": -1,
"score": -1
},
{
"id": 21,
"name": "Araxxor",
"rank": -1,
"score": -1
},
{
"id": 22,
"name": "Artio",
"rank": -1,
"score": -1
},
{
"id": 23,
"name": "Barrows Chests",
"rank": -1,
"score": -1
},
{
"id": 24,
"name": "Bryophyta",
"rank": -1,
"score": -1
},
{
"id": 25,
"name": "Callisto",
"rank": -1,
"score": -1
},
{ {
"id": 26, "id": 26,
"name": "Calvar'ion",
"rank": -1,
"score": -1
},
{
"id": 27,
"name": "Cerberus",
"rank": -1,
"score": -1
},
{
"id": 28,
"name": "Chambers of Xeric",
"rank": -1,
"score": -1
},
{
"id": 29,
"name": "Chambers of Xeric: Challenge Mode", "name": "Chambers of Xeric: Challenge Mode",
"rank": -1, "rank": -1,
"score": -1 "score": -1
}, },
{ "id": 27, "name": "Chaos Elemental", "rank": -1, "score": -1 }, {
{ "id": 28, "name": "Chaos Fanatic", "rank": -1, "score": -1 }, "id": 30,
{ "id": 29, "name": "Commander Zilyana", "rank": -1, "score": -1 }, "name": "Chaos Elemental",
{ "id": 30, "name": "Corporeal Beast", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 31, "name": "Crazy Archaeologist", "rank": -1, "score": -1 }, "score": -1
{ "id": 32, "name": "Dagannoth Prime", "rank": -1, "score": -1 }, },
{ "id": 33, "name": "Dagannoth Rex", "rank": -1, "score": -1 }, {
{ "id": 34, "name": "Dagannoth Supreme", "rank": -1, "score": -1 }, "id": 31,
{ "id": 35, "name": "Deranged Archaeologist", "rank": -1, "score": -1 }, "name": "Chaos Fanatic",
{ "id": 36, "name": "Duke Sucellus", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 37, "name": "General Graardor", "rank": -1, "score": -1 }, "score": -1
{ "id": 38, "name": "Giant Mole", "rank": -1, "score": -1 }, },
{ "id": 39, "name": "Grotesque Guardians", "rank": -1, "score": -1 }, {
{ "id": 40, "name": "Hespori", "rank": -1, "score": -1 }, "id": 32,
{ "id": 41, "name": "Kalphite Queen", "rank": -1, "score": -1 }, "name": "Commander Zilyana",
{ "id": 42, "name": "King Black Dragon", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 43, "name": "Kraken", "rank": -1, "score": -1 }, "score": -1
{ "id": 44, "name": "Kree'Arra", "rank": -1, "score": -1 }, },
{ "id": 45, "name": "K'ril Tsutsaroth", "rank": -1, "score": -1 }, {
{ "id": 46, "name": "Mimic", "rank": -1, "score": -1 }, "id": 33,
{ "id": 47, "name": "Nex", "rank": -1, "score": -1 }, "name": "Corporeal Beast",
{ "id": 48, "name": "Nightmare", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 49, "name": "Phosani's Nightmare", "rank": -1, "score": -1 }, "score": -1
{ "id": 50, "name": "Obor", "rank": -1, "score": -1 }, },
{ "id": 51, "name": "Phantom Muspah", "rank": -1, "score": -1 }, {
{ "id": 52, "name": "Sarachnis", "rank": -1, "score": -1 }, "id": 34,
{ "id": 53, "name": "Scorpia", "rank": -1, "score": -1 }, "name": "Crazy Archaeologist",
{ "id": 54, "name": "Skotizo", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 55, "name": "Spindel", "rank": -1, "score": -1 }, "score": -1
{ "id": 56, "name": "Tempoross", "rank": -1, "score": -1 }, },
{ "id": 57, "name": "The Gauntlet", "rank": -1, "score": -1 }, {
{ "id": 58, "name": "The Corrupted Gauntlet", "rank": -1, "score": -1 }, "id": 35,
{ "id": 59, "name": "The Leviathan", "rank": -1, "score": -1 }, "name": "Dagannoth Prime",
{ "id": 60, "name": "The Whisperer", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 61, "name": "Theatre of Blood", "rank": -1, "score": -1 }, "score": -1
},
{
"id": 36,
"name": "Dagannoth Rex",
"rank": -1,
"score": -1
},
{
"id": 37,
"name": "Dagannoth Supreme",
"rank": -1,
"score": -1
},
{
"id": 38,
"name": "Deranged Archaeologist",
"rank": -1,
"score": -1
},
{
"id": 39,
"name": "Duke Sucellus",
"rank": -1,
"score": -1
},
{
"id": 40,
"name": "General Graardor",
"rank": -1,
"score": -1
},
{
"id": 41,
"name": "Giant Mole",
"rank": -1,
"score": -1
},
{
"id": 42,
"name": "Grotesque Guardians",
"rank": -1,
"score": -1
},
{
"id": 43,
"name": "Hespori",
"rank": -1,
"score": -1
},
{
"id": 44,
"name": "Kalphite Queen",
"rank": -1,
"score": -1
},
{
"id": 45,
"name": "King Black Dragon",
"rank": -1,
"score": -1
},
{
"id": 46,
"name": "Kraken",
"rank": -1,
"score": -1
},
{
"id": 47,
"name": "Kree'Arra",
"rank": -1,
"score": -1
},
{
"id": 48,
"name": "K'ril Tsutsaroth",
"rank": -1,
"score": -1
},
{
"id": 49,
"name": "Lunar Chests",
"rank": -1,
"score": -1
},
{
"id": 50,
"name": "Mimic",
"rank": -1,
"score": -1
},
{
"id": 51,
"name": "Nex",
"rank": -1,
"score": -1
},
{
"id": 52,
"name": "Nightmare",
"rank": -1,
"score": -1
},
{
"id": 53,
"name": "Phosani's Nightmare",
"rank": -1,
"score": -1
},
{
"id": 54,
"name": "Obor",
"rank": -1,
"score": -1
},
{
"id": 55,
"name": "Phantom Muspah",
"rank": -1,
"score": -1
},
{
"id": 56,
"name": "Sarachnis",
"rank": -1,
"score": -1
},
{
"id": 57,
"name": "Scorpia",
"rank": -1,
"score": -1
},
{
"id": 58,
"name": "Scurrius",
"rank": -1,
"score": -1
},
{
"id": 59,
"name": "Skotizo",
"rank": -1,
"score": -1
},
{
"id": 60,
"name": "Sol Heredit",
"rank": -1,
"score": -1
},
{
"id": 61,
"name": "Spindel",
"rank": -1,
"score": -1
},
{ {
"id": 62, "id": 62,
"name": "Tempoross",
"rank": -1,
"score": -1
},
{
"id": 63,
"name": "The Gauntlet",
"rank": -1,
"score": -1
},
{
"id": 64,
"name": "The Corrupted Gauntlet",
"rank": -1,
"score": -1
},
{
"id": 65,
"name": "The Hueycoatl",
"rank": -1,
"score": -1
},
{
"id": 66,
"name": "The Leviathan",
"rank": -1,
"score": -1
},
{
"id": 67,
"name": "The Whisperer",
"rank": -1,
"score": -1
},
{
"id": 68,
"name": "Theatre of Blood",
"rank": -1,
"score": -1
},
{
"id": 69,
"name": "Theatre of Blood: Hard Mode", "name": "Theatre of Blood: Hard Mode",
"rank": -1, "rank": -1,
"score": -1 "score": -1
}, },
{ "id": 63, "name": "Thermonuclear Smoke Devil", "rank": -1, "score": -1 },
{ "id": 64, "name": "Tombs of Amascut", "rank": -1, "score": -1 },
{ {
"id": 65, "id": 70,
"name": "Thermonuclear Smoke Devil",
"rank": -1,
"score": -1
},
{
"id": 71,
"name": "Tombs of Amascut",
"rank": -1,
"score": -1
},
{
"id": 72,
"name": "Tombs of Amascut: Expert Mode", "name": "Tombs of Amascut: Expert Mode",
"rank": -1, "rank": -1,
"score": -1 "score": -1
}, },
{ "id": 66, "name": "TzKal-Zuk", "rank": -1, "score": -1 }, {
{ "id": 67, "name": "TzTok-Jad", "rank": 225, "score": 186 }, "id": 73,
{ "id": 68, "name": "Vardorvis", "rank": -1, "score": -1 }, "name": "TzKal-Zuk",
{ "id": 69, "name": "Venenatis", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 70, "name": "Vet'ion", "rank": -1, "score": -1 }, "score": -1
{ "id": 71, "name": "Vorkath", "rank": -1, "score": -1 }, },
{ "id": 72, "name": "Wintertodt", "rank": -1, "score": -1 }, {
{ "id": 73, "name": "Zalcano", "rank": -1, "score": -1 }, "id": 74,
{ "id": 74, "name": "Zulrah", "rank": -1, "score": -1 } "name": "TzTok-Jad",
"rank": 251,
"score": 186
},
{
"id": 75,
"name": "Vardorvis",
"rank": -1,
"score": -1
},
{
"id": 76,
"name": "Venenatis",
"rank": -1,
"score": -1
},
{
"id": 77,
"name": "Vet'ion",
"rank": -1,
"score": -1
},
{
"id": 78,
"name": "Vorkath",
"rank": -1,
"score": -1
},
{
"id": 79,
"name": "Wintertodt",
"rank": -1,
"score": -1
},
{
"id": 80,
"name": "Zalcano",
"rank": -1,
"score": -1
},
{
"id": 81,
"name": "Zulrah",
"rank": -1,
"score": -1
}
] ]
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "osrs-json-hiscores", "name": "osrs-json-hiscores",
"version": "2.16.3", "version": "2.19.0",
"description": "The Old School Runescape API wrapper that does more!", "description": "The Old School Runescape API wrapper that does more!",
"main": "lib/index.js", "main": "lib/index.js",
"types": "lib/index.d.ts", "types": "lib/index.d.ts",

View File

@@ -44,7 +44,8 @@ import {
FORMATTED_PVP_ARENA, FORMATTED_PVP_ARENA,
FORMATTED_SOUL_WARS, FORMATTED_SOUL_WARS,
FORMATTED_RIFTS_CLOSED, FORMATTED_RIFTS_CLOSED,
FORMATTED_DEADMAN_POINTS FORMATTED_DEADMAN_POINTS,
FORMATTED_COLOSSEUM_GLORY
} from './utils'; } from './utils';
/** /**
@@ -162,6 +163,7 @@ export function parseJsonStats(json: HiscoresResponse): Stats {
const pvpArena = getActivity(FORMATTED_PVP_ARENA); const pvpArena = getActivity(FORMATTED_PVP_ARENA);
const soulWarsZeal = getActivity(FORMATTED_SOUL_WARS); const soulWarsZeal = getActivity(FORMATTED_SOUL_WARS);
const riftsClosed = getActivity(FORMATTED_RIFTS_CLOSED); const riftsClosed = getActivity(FORMATTED_RIFTS_CLOSED);
const colosseumGlory = getActivity(FORMATTED_COLOSSEUM_GLORY);
const stats: Stats = { const stats: Stats = {
skills, skills,
@@ -172,6 +174,7 @@ export function parseJsonStats(json: HiscoresResponse): Stats {
pvpArena, pvpArena,
soulWarsZeal, soulWarsZeal,
riftsClosed, riftsClosed,
colosseumGlory,
clues, clues,
bosses bosses
}; };
@@ -221,8 +224,8 @@ export function parseStats(csv: string): Stats {
const [leaguePoints, deadmanPoints] = activityObjects.splice(0, 2); const [leaguePoints, deadmanPoints] = activityObjects.splice(0, 2);
const bhObjects = activityObjects.splice(0, BH_MODES.length); const bhObjects = activityObjects.splice(0, BH_MODES.length);
const clueObjects = activityObjects.splice(0, CLUES.length); const clueObjects = activityObjects.splice(0, CLUES.length);
const [lastManStanding, pvpArena, soulWarsZeal, riftsClosed] = const [lastManStanding, pvpArena, soulWarsZeal, riftsClosed, colosseumGlory] =
activityObjects.splice(0, 4); activityObjects.splice(0, 5);
const bossObjects = activityObjects.splice(0, BOSSES.length); const bossObjects = activityObjects.splice(0, BOSSES.length);
const skills: Skills = skillObjects.reduce<Skills>((prev, curr, index) => { const skills: Skills = skillObjects.reduce<Skills>((prev, curr, index) => {
@@ -258,6 +261,7 @@ export function parseStats(csv: string): Stats {
pvpArena, pvpArena,
soulWarsZeal, soulWarsZeal,
riftsClosed, riftsClosed,
colosseumGlory,
clues, clues,
bosses bosses
}; };

View File

@@ -69,6 +69,8 @@ export type BH = { [Type in BHType]: Activity };
export type Boss = export type Boss =
| 'abyssalSire' | 'abyssalSire'
| 'alchemicalHydra' | 'alchemicalHydra'
| 'amoxliatl'
| 'araxxor'
| 'artio' | 'artio'
| 'barrows' | 'barrows'
| 'bryophyta' | 'bryophyta'
@@ -96,6 +98,7 @@ export type Boss =
| 'kraken' | 'kraken'
| 'kreeArra' | 'kreeArra'
| 'krilTsutsaroth' | 'krilTsutsaroth'
| 'lunarChests'
| 'mimic' | 'mimic'
| 'nex' | 'nex'
| 'nightmare' | 'nightmare'
@@ -106,10 +109,12 @@ export type Boss =
| 'scorpia' | 'scorpia'
| 'scurrius' | 'scurrius'
| 'skotizo' | 'skotizo'
| 'solHeredit'
| 'spindel' | 'spindel'
| 'tempoross' | 'tempoross'
| 'gauntlet' | 'gauntlet'
| 'corruptedGauntlet' | 'corruptedGauntlet'
| 'hueycoatl'
| 'leviathan' | 'leviathan'
| 'whisperer' | 'whisperer'
| 'theatreOfBlood' | 'theatreOfBlood'
@@ -147,6 +152,7 @@ export type ActivityName =
| 'hardClues' | 'hardClues'
| 'eliteClues' | 'eliteClues'
| 'masterClues' | 'masterClues'
| 'colosseumGlory'
| Boss; | Boss;
export interface Stats { export interface Stats {
@@ -165,6 +171,7 @@ export interface Stats {
pvpArena: Activity; pvpArena: Activity;
soulWarsZeal: Activity; soulWarsZeal: Activity;
riftsClosed: Activity; riftsClosed: Activity;
colosseumGlory: Activity;
bosses: Bosses; bosses: Bosses;
} }
export type Modes = { [M in Gamemode]?: Stats }; export type Modes = { [M in Gamemode]?: Stats };

View File

@@ -76,6 +76,8 @@ export const GAMEMODES: Gamemode[] = [
export const BOSSES: Boss[] = [ export const BOSSES: Boss[] = [
'abyssalSire', 'abyssalSire',
'alchemicalHydra', 'alchemicalHydra',
'amoxliatl',
'araxxor',
'artio', 'artio',
'barrows', 'barrows',
'bryophyta', 'bryophyta',
@@ -103,6 +105,7 @@ export const BOSSES: Boss[] = [
'kraken', 'kraken',
'kreeArra', 'kreeArra',
'krilTsutsaroth', 'krilTsutsaroth',
'lunarChests',
'mimic', 'mimic',
'nex', 'nex',
'nightmare', 'nightmare',
@@ -113,10 +116,12 @@ export const BOSSES: Boss[] = [
'scorpia', 'scorpia',
'scurrius', 'scurrius',
'skotizo', 'skotizo',
'solHeredit',
'spindel', 'spindel',
'tempoross', 'tempoross',
'gauntlet', 'gauntlet',
'corruptedGauntlet', 'corruptedGauntlet',
'hueycoatl',
'leviathan', 'leviathan',
'whisperer', 'whisperer',
'theatreOfBlood', 'theatreOfBlood',
@@ -152,6 +157,7 @@ export const ACTIVITIES: ActivityName[] = [
'pvpArena', 'pvpArena',
'soulWarsZeal', 'soulWarsZeal',
'riftsClosed', 'riftsClosed',
'colosseumGlory',
...BOSSES ...BOSSES
]; ];
@@ -162,6 +168,8 @@ export type FormattedBossNames = {
export const FORMATTED_BOSS_NAMES: FormattedBossNames = { export const FORMATTED_BOSS_NAMES: FormattedBossNames = {
abyssalSire: 'Abyssal Sire', abyssalSire: 'Abyssal Sire',
alchemicalHydra: 'Alchemical Hydra', alchemicalHydra: 'Alchemical Hydra',
amoxliatl: 'Amoxliatl',
araxxor: 'Araxxor',
artio: 'Artio', artio: 'Artio',
barrows: 'Barrows Chests', barrows: 'Barrows Chests',
bryophyta: 'Bryophyta', bryophyta: 'Bryophyta',
@@ -189,6 +197,7 @@ export const FORMATTED_BOSS_NAMES: FormattedBossNames = {
kraken: 'Kraken', kraken: 'Kraken',
kreeArra: "Kree'Arra", kreeArra: "Kree'Arra",
krilTsutsaroth: "K'ril Tsutsaroth", krilTsutsaroth: "K'ril Tsutsaroth",
lunarChests: 'Lunar Chests',
mimic: 'Mimic', mimic: 'Mimic',
nex: 'Nex', nex: 'Nex',
nightmare: 'Nightmare', nightmare: 'Nightmare',
@@ -199,10 +208,12 @@ export const FORMATTED_BOSS_NAMES: FormattedBossNames = {
scorpia: 'Scorpia', scorpia: 'Scorpia',
scurrius: 'Scurrius', scurrius: 'Scurrius',
skotizo: 'Skotizo', skotizo: 'Skotizo',
solHeredit: 'Sol Heredit',
spindel: 'Spindel', spindel: 'Spindel',
tempoross: 'Tempoross', tempoross: 'Tempoross',
gauntlet: 'The Gauntlet', gauntlet: 'The Gauntlet',
corruptedGauntlet: 'The Corrupted Gauntlet', corruptedGauntlet: 'The Corrupted Gauntlet',
hueycoatl: 'The Hueycoatl',
leviathan: 'The Leviathan', leviathan: 'The Leviathan',
whisperer: 'The Whisperer', whisperer: 'The Whisperer',
theatreOfBlood: 'Theatre of Blood', theatreOfBlood: 'Theatre of Blood',
@@ -283,6 +294,7 @@ export const FORMATTED_SOUL_WARS = 'Soul Wars Zeal';
export const FORMATTED_LEAGUE_POINTS = 'League Points'; export const FORMATTED_LEAGUE_POINTS = 'League Points';
export const FORMATTED_DEADMAN_POINTS = 'Deadman Points'; export const FORMATTED_DEADMAN_POINTS = 'Deadman Points';
export const FORMATTED_RIFTS_CLOSED = 'Rifts closed'; export const FORMATTED_RIFTS_CLOSED = 'Rifts closed';
export const FORMATTED_COLOSSEUM_GLORY = 'Colosseum Glory';
export const INVALID_FORMAT_ERROR = 'Invalid hiscores format'; export const INVALID_FORMAT_ERROR = 'Invalid hiscores format';
export const PLAYER_NOT_FOUND_ERROR = 'Player not found'; export const PLAYER_NOT_FOUND_ERROR = 'Player not found';

View File

@@ -6,10 +6,7 @@
"outDir": "./lib", "outDir": "./lib",
"strict": true, "strict": true,
"lib": ["ES2015", "DOM", "DOM.Iterable"], "lib": ["ES2015", "DOM", "DOM.Iterable"],
"typeRoots": [ "typeRoots": ["./node_modules/@types", "./src/@types"]
"./node_modules/@types",
"./src/@types"
]
}, },
"include": ["src"], "include": ["src"],
"exclude": ["node_modules", "**/__tests__/*"] "exclude": ["node_modules", "**/__tests__/*"]

View File

@@ -1288,11 +1288,11 @@ available-typed-arrays@^1.0.5:
integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
axios@^1.6.2: axios@^1.6.2:
version "1.6.2" version "1.7.4"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2" resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.4.tgz#4c8ded1b43683c8dd362973c393f3ede24052aa2"
integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== integrity sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==
dependencies: dependencies:
follow-redirects "^1.15.0" follow-redirects "^1.15.6"
form-data "^4.0.0" form-data "^4.0.0"
proxy-from-env "^1.1.0" proxy-from-env "^1.1.0"
@@ -1383,12 +1383,12 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0" balanced-match "^1.0.0"
concat-map "0.0.1" concat-map "0.0.1"
braces@^3.0.1, braces@^3.0.2: braces@^3.0.3:
version "3.0.2" version "3.0.3"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
dependencies: dependencies:
fill-range "^7.0.1" fill-range "^7.1.1"
browserslist@^4.21.9: browserslist@^4.21.9:
version "4.21.9" version "4.21.9"
@@ -2392,10 +2392,10 @@ file-entry-cache@^6.0.1:
dependencies: dependencies:
flat-cache "^3.0.4" flat-cache "^3.0.4"
fill-range@^7.0.1: fill-range@^7.1.1:
version "7.0.1" version "7.1.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
dependencies: dependencies:
to-regex-range "^5.0.1" to-regex-range "^5.0.1"
@@ -2428,10 +2428,10 @@ flatted@^3.1.0:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==
follow-redirects@^1.15.0: follow-redirects@^1.15.6:
version "1.15.3" version "1.15.6"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
for-each@^0.3.3: for-each@^0.3.3:
version "0.3.3" version "0.3.3"
@@ -4092,20 +4092,12 @@ merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
micromatch@^4.0.2: micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
version "4.0.2" version "4.0.8"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
dependencies: dependencies:
braces "^3.0.1" braces "^3.0.3"
picomatch "^2.0.5"
micromatch@^4.0.4, micromatch@^4.0.5:
version "4.0.5"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
dependencies:
braces "^3.0.2"
picomatch "^2.3.1" picomatch "^2.3.1"
mime-db@1.45.0: mime-db@1.45.0:
@@ -4667,7 +4659,7 @@ picocolors@^1.0.0:
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: picomatch@^2.0.4, picomatch@^2.2.1:
version "2.2.2" version "2.2.2"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
@@ -5847,9 +5839,9 @@ write-file-atomic@^4.0.2:
signal-exit "^3.0.7" signal-exit "^3.0.7"
ws@^8.13.0: ws@^8.13.0:
version "8.13.0" version "8.17.1"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b"
integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==
xdg-basedir@^4.0.0: xdg-basedir@^4.0.0:
version "4.0.0" version "4.0.0"