Compare commits

...

24 Commits

Author SHA1 Message Date
maxswa
6d000df717 v2.22.0 2025-05-22 12:22:57 -04:00
Max Swartwout
5575a83039 Merge pull request #108 from davidvorona/add-yama
Add Yama, the Master of Pacts
2025-05-21 14:51:10 -04:00
David Vorona
86d9bcb2e7 Add Yama, the Master of Pacts 2025-05-21 10:21:23 -07:00
maxswa
79c067152c v2.21.1 2025-02-24 19:46:38 -05:00
Max Swartwout
e51e7bc32e Merge pull request #107 from maxswa/max/rsn-format-errors
Fix RSN format errors, add mode argument.
2025-02-24 19:45:26 -05:00
maxswa
7d7c7f9b08 Fix RSN format errors, add mode. 2025-02-24 19:41:27 -05:00
maxswa
fd24890f67 v2.21.0 2025-02-24 19:09:05 -05:00
Max Swartwout
3ba434978a Merge pull request #103 from maxswa/dependabot/npm_and_yarn/cross-spawn-7.0.6
Bump cross-spawn from 7.0.3 to 7.0.6
2025-02-24 19:07:17 -05:00
Max Swartwout
44ecdf5434 Merge pull request #106 from evanw555/add-collections-titans
Add Collections Logged, Royal Titans
2025-02-24 19:06:56 -05:00
maxswa
99fc97f05e Fix csv parsing, tests. 2025-02-24 19:03:56 -05:00
Evan Williams
b3fc5846f3 Add Collections Logged, Royal Titans 2025-02-07 00:50:49 -08:00
dependabot[bot]
1deed9f450 Bump cross-spawn from 7.0.3 to 7.0.6
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 22:43:06 +00:00
maxswa
0be3f0b636 v2.20.0 2024-09-25 12:11:27 -04:00
Max Swartwout
ec1ed53669 Merge pull request #102 from maxswa/varlamore-part-2
Add Amoxliatl, The Hueycoatl
2024-09-25 11:59:54 -04:00
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
10 changed files with 1447 additions and 375 deletions

View File

@@ -92,17 +92,18 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses
### Minigames ### Minigames
| Minigame | Param | | Minigame | Param |
| ------------------------------- | :---------------: | | ------------------------------- | :-----------------: |
| Bounty Hunter (Legacy - Rogue) | `rogueBH` | | Bounty Hunter (Legacy - Rogue) | `rogueBH` |
| Bounty Hunter (Legacy - Hunter) | `hunterBH` | | Bounty Hunter (Legacy - Hunter) | `hunterBH` |
| Bounty Hunter (Rogue) | `rogueBHV2` | | Bounty Hunter (Rogue) | `rogueBHV2` |
| Bounty Hunter (Hunter) | `hunterBHV2` | | Bounty Hunter (Hunter) | `hunterBHV2` |
| LMS - Rank | `lastManStanding` | | LMS - Rank | `lastManStanding` |
| 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` | | Colosseum Glory | `colosseumGlory` |
| Collections Logged | `collectionsLogged` |
### Points ### Points
@@ -117,6 +118,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` |
@@ -160,7 +163,9 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses
| 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 Royal Titans | `royalTitans` |
| The Whisperer | `whisperer` | | The Whisperer | `whisperer` |
| Theatre Of Blood | `theatreOfBlood` | | Theatre Of Blood | `theatreOfBlood` |
| Theatre Of Blood: Hard Mode | `theatreOfBloodHardMode` | | Theatre Of Blood: Hard Mode | `theatreOfBloodHardMode` |
@@ -174,6 +179,7 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses
| Vetion | `vetion` | | Vetion | `vetion` |
| Vorkath | `vorkath` | | Vorkath | `vorkath` |
| Wintertodt | `wintertodt` | | Wintertodt | `wintertodt` |
| Yama | `yama` |
| Zalcano | `zalcano` | | Zalcano | `zalcano` |
| Zulrah | `zulrah` | | Zulrah | `zulrah` |
@@ -202,6 +208,8 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses
pvpArena: {}, pvpArena: {},
soulWarsZeal: {}, soulWarsZeal: {},
riftsClosed: {}, riftsClosed: {},
colosseumGlory: {},
collectionsLogged: {},
bosses: {} bosses: {}
} }
} }

View File

@@ -1,103 +1,109 @@
2910,2277,943515557 2210,2277,1150073045
24996,99,30606377 23988,99,33320012
4759,99,40283500 3114,99,51215128
1523,99,171953134 1203,99,200000000
2244,99,147696928 1372,99,196290925
5929,99,118171038 3458,99,159426771
4560,99,15170201 2746,99,17744970
2503,99,71406360 2031,99,91566360
141823,99,13354119 161852,99,13386665
22348,99,18680181 25801,99,19461878
56125,99,13456850 64826,99,13473417
23026,99,16655688 26528,99,16672481
18672,99,19123987 20829,99,19483653
48108,99,14072560 58378,99,14103220
10956,99,16552060 13188,99,16573909
27980,99,14967150 36283,99,15061037
40661,99,13252766 17137,99,14670565
7114,99,15760818 8751,99,16169665
53839,99,14058762 60803,99,14390315
5352,99,34669574 1718,99,57850681
2456,99,84892847 2117,99,110369178
4849,99,22734071 5540,99,22739567
16368,99,17968711 22326,99,18052465
1147,99,18027875 1467,99,18050183
-1,-1 -1,-1
-1,-1 -1,-1
28384,10 38135,10
14076,3 19368,3
148183,8 146220,8
102684,7 100923,7
338,9641 433,9802
1002,825 1542,825
114,6000 158,6000
2246,1606 2572,1606
44261,298 47979,311
603,460 1081,460
1238,452 880,600
15827,2521 4258,6785
-1,-1 -1,-1
7898,14780 7596,14780
5421,1060 8124,1060
7,24522 10438,43487
2902,2192 1114,1155
94883,594 3497,2192
34000,143 3204,4796
3834,1830 1087,984
218428,5 2230,2328
36717,293 51533,143
74959,58 4243,1830
19421,1905 256985,5
186551,34 54424,293
2571,515 114691,58
85921,50 11700,2657
154580,26 211708,34
54677,287 1779,736
2586,2000 24958,215
153371,41 46504,116
33154,707 66096,287
43433,698 3133,2000
33088,714 26682,198
81968,25 19337,1078
12249,731 25021,1062
20424,1228 19290,1088
70188,474 89474,25
2248,2140 7535,1320
11128,226 23251,1228
2117,2046 82016,477
50095,580 876,3642
120438,1908 7073,310
10997,920 2476,2046
2326,1444 55411,580
-1,-1 68801,2899
700,40 4608,1740
31471,626 3079,1444
4119,749 8344,324
4349,500 540,53
1078,217 38395,626
20126,301 4176,749
70523,119 5519,500
114632,26 1394,217
2945,1245 26127,379
385801,9 49730,249
-1,-1 57206,91
2412,1569 6106,1245
43814,273 185920,29
207949,7 3232,49
86335,201 4276,1569
7905,601 57314,273
732,1783 256794,7
21039,310 113862,201
4949,192 1969,538
7584,3066 12346,671
109360,36 5606,149
160,1500 550,2450
6733,7 25557,310
131888,8 1391,538
3128,2113 9325,3066
209,7096 131996,37
75591,51 214,1720
15167,2780 8902,7
911570,62 148385,8
173436,25 6120,2113
233645,275 287,7096
97368,51
15591,2780
1000405,67
19722,173
213696,25
240082,340
Can't render this file because it has a wrong number of fields in line 25.

View File

@@ -3,203 +3,682 @@
{ {
"id": 0, "id": 0,
"name": "Overall", "name": "Overall",
"rank": 2910, "rank": 2210,
"level": 2277, "level": 2277,
"xp": 943515557 "xp": 1150073045
},
{
"id": 1,
"name": "Attack",
"rank": 23988,
"level": 99,
"xp": 33320012
},
{
"id": 2,
"name": "Defence",
"rank": 3114,
"level": 99,
"xp": 51215128
},
{
"id": 3,
"name": "Strength",
"rank": 1203,
"level": 99,
"xp": 200000000
}, },
{ "id": 1, "name": "Attack", "rank": 24996, "level": 99, "xp": 30606377 },
{ "id": 2, "name": "Defence", "rank": 4759, "level": 99, "xp": 40283500 },
{ "id": 3, "name": "Strength", "rank": 1523, "level": 99, "xp": 171953134 },
{ {
"id": 4, "id": 4,
"name": "Hitpoints", "name": "Hitpoints",
"rank": 2244, "rank": 1372,
"level": 99, "level": 99,
"xp": 147696928 "xp": 196290925
},
{
"id": 5,
"name": "Ranged",
"rank": 3458,
"level": 99,
"xp": 159426771
},
{
"id": 6,
"name": "Prayer",
"rank": 2746,
"level": 99,
"xp": 17744970
},
{
"id": 7,
"name": "Magic",
"rank": 2031,
"level": 99,
"xp": 91566360
},
{
"id": 8,
"name": "Cooking",
"rank": 161852,
"level": 99,
"xp": 13386665
}, },
{ "id": 5, "name": "Ranged", "rank": 5929, "level": 99, "xp": 118171038 },
{ "id": 6, "name": "Prayer", "rank": 4560, "level": 99, "xp": 15170201 },
{ "id": 7, "name": "Magic", "rank": 2503, "level": 99, "xp": 71406360 },
{ "id": 8, "name": "Cooking", "rank": 141823, "level": 99, "xp": 13354119 },
{ {
"id": 9, "id": 9,
"name": "Woodcutting", "name": "Woodcutting",
"rank": 22348, "rank": 25801,
"level": 99, "level": 99,
"xp": 18680181 "xp": 19461878
}, },
{ {
"id": 10, "id": 10,
"name": "Fletching", "name": "Fletching",
"rank": 56125, "rank": 64826,
"level": 99, "level": 99,
"xp": 13456850 "xp": 13473417
},
{
"id": 11,
"name": "Fishing",
"rank": 26528,
"level": 99,
"xp": 16672481
}, },
{ "id": 11, "name": "Fishing", "rank": 23026, "level": 99, "xp": 16655688 },
{ {
"id": 12, "id": 12,
"name": "Firemaking", "name": "Firemaking",
"rank": 18672, "rank": 20829,
"level": 99, "level": 99,
"xp": 19123987 "xp": 19483653
}, },
{ {
"id": 13, "id": 13,
"name": "Crafting", "name": "Crafting",
"rank": 48108, "rank": 58378,
"level": 99, "level": 99,
"xp": 14072560 "xp": 14103220
}, },
{ {
"id": 14, "id": 14,
"name": "Smithing", "name": "Smithing",
"rank": 10956, "rank": 13188,
"level": 99, "level": 99,
"xp": 16552060 "xp": 16573909
},
{
"id": 15,
"name": "Mining",
"rank": 36283,
"level": 99,
"xp": 15061037
}, },
{ "id": 15, "name": "Mining", "rank": 27980, "level": 99, "xp": 14967150 },
{ {
"id": 16, "id": 16,
"name": "Herblore", "name": "Herblore",
"rank": 40661, "rank": 17137,
"level": 99, "level": 99,
"xp": 13252766 "xp": 14670565
},
{
"id": 17,
"name": "Agility",
"rank": 8751,
"level": 99,
"xp": 16169665
}, },
{ "id": 17, "name": "Agility", "rank": 7114, "level": 99, "xp": 15760818 },
{ {
"id": 18, "id": 18,
"name": "Thieving", "name": "Thieving",
"rank": 53839, "rank": 60803,
"level": 99, "level": 99,
"xp": 14058762 "xp": 14390315
},
{
"id": 19,
"name": "Slayer",
"rank": 1718,
"level": 99,
"xp": 57850681
},
{
"id": 20,
"name": "Farming",
"rank": 2117,
"level": 99,
"xp": 110369178
}, },
{ "id": 19, "name": "Slayer", "rank": 5352, "level": 99, "xp": 34669574 },
{ "id": 20, "name": "Farming", "rank": 2456, "level": 99, "xp": 84892847 },
{ {
"id": 21, "id": 21,
"name": "Runecraft", "name": "Runecraft",
"rank": 4849, "rank": 5540,
"level": 99, "level": 99,
"xp": 22734071 "xp": 22739567
},
{
"id": 22,
"name": "Hunter",
"rank": 22326,
"level": 99,
"xp": 18052465
}, },
{ "id": 22, "name": "Hunter", "rank": 16368, "level": 99, "xp": 17968711 },
{ {
"id": 23, "id": 23,
"name": "Construction", "name": "Construction",
"rank": 1147, "rank": 1467,
"level": 99, "level": 99,
"xp": 18027875 "xp": 18050183
} }
], ],
"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": 28384, "score": 10 }, "name": "League Points",
{ "id": 3, "name": "Bounty Hunter - Rogue", "rank": 14076, "score": 3 }, "rank": -1,
"score": -1
},
{
"id": 1,
"name": "Deadman Points",
"rank": -1,
"score": -1
},
{
"id": 2,
"name": "Bounty Hunter - Hunter",
"rank": 38135,
"score": 10
},
{
"id": 3,
"name": "Bounty Hunter - Rogue",
"rank": 19368,
"score": 3
},
{ {
"id": 4, "id": 4,
"name": "Bounty Hunter (Legacy) - Hunter", "name": "Bounty Hunter (Legacy) - Hunter",
"rank": 148183, "rank": 146220,
"score": 8 "score": 8
}, },
{ {
"id": 5, "id": 5,
"name": "Bounty Hunter (Legacy) - Rogue", "name": "Bounty Hunter (Legacy) - Rogue",
"rank": 102684, "rank": 100923,
"score": 7 "score": 7
}, },
{ "id": 6, "name": "Clue Scrolls (all)", "rank": 338, "score": 9641 }, {
{ "id": 7, "name": "Clue Scrolls (beginner)", "rank": 1002, "score": 825 }, "id": 6,
{ "id": 8, "name": "Clue Scrolls (easy)", "rank": 114, "score": 6000 }, "name": "Clue Scrolls (all)",
{ "id": 9, "name": "Clue Scrolls (medium)", "rank": 2246, "score": 1606 }, "rank": 433,
{ "id": 10, "name": "Clue Scrolls (hard)", "rank": 44261, "score": 298 }, "score": 9802
{ "id": 11, "name": "Clue Scrolls (elite)", "rank": 603, "score": 460 }, },
{ "id": 12, "name": "Clue Scrolls (master)", "rank": 1238, "score": 452 }, {
{ "id": 13, "name": "LMS - Rank", "rank": 15827, "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": 7898, "score": 14780 }, "rank": 1542,
{ "id": 16, "name": "Rifts closed", "rank": 5421, "score": 1060 }, "score": 825
{ "id": 17, "name": "Colosseum Glory", "rank": 7, "score": 24522 }, },
{ "id": 18, "name": "Abyssal Sire", "rank": 2902, "score": 2192 }, {
{ "id": 19, "name": "Alchemical Hydra", "rank": 94883, "score": 594 }, "id": 8,
{ "id": 20, "name": "Artio", "rank": 34000, "score": 143 }, "name": "Clue Scrolls (easy)",
{ "id": 21, "name": "Barrows Chests", "rank": 3834, "score": 1830 }, "rank": 158,
{ "id": 22, "name": "Bryophyta", "rank": 218428, "score": 5 }, "score": 6000
{ "id": 23, "name": "Callisto", "rank": 36717, "score": 293 }, },
{ "id": 24, "name": "Calvar'ion", "rank": 74959, "score": 58 }, {
{ "id": 25, "name": "Cerberus", "rank": 19421, "score": 1905 }, "id": 9,
{ "id": 26, "name": "Chambers of Xeric", "rank": 186551, "score": 34 }, "name": "Clue Scrolls (medium)",
"rank": 2572,
"score": 1606
},
{
"id": 10,
"name": "Clue Scrolls (hard)",
"rank": 47979,
"score": 311
},
{
"id": 11,
"name": "Clue Scrolls (elite)",
"rank": 1081,
"score": 460
},
{
"id": 12,
"name": "Clue Scrolls (master)",
"rank": 880,
"score": 600
},
{
"id": 13,
"name": "LMS - Rank",
"rank": 4258,
"score": 6785
},
{
"id": 14,
"name": "PvP Arena - Rank",
"rank": -1,
"score": -1
},
{
"id": 15,
"name": "Soul Wars Zeal",
"rank": 7596,
"score": 14780
},
{
"id": 16,
"name": "Rifts closed",
"rank": 8124,
"score": 1060
},
{
"id": 17,
"name": "Colosseum Glory",
"rank": 10438,
"score": 43487
},
{
"id": 18,
"name": "Collections Logged",
"rank": 1114,
"score": 1155
},
{
"id": 19,
"name": "Abyssal Sire",
"rank": 3497,
"score": 2192
},
{
"id": 20,
"name": "Alchemical Hydra",
"rank": 3204,
"score": 4796
},
{
"id": 21,
"name": "Amoxliatl",
"rank": 1087,
"score": 984
},
{
"id": 22,
"name": "Araxxor",
"rank": 2230,
"score": 2328
},
{
"id": 23,
"name": "Artio",
"rank": 51533,
"score": 143
},
{
"id": 24,
"name": "Barrows Chests",
"rank": 4243,
"score": 1830
},
{
"id": 25,
"name": "Bryophyta",
"rank": 256985,
"score": 5
},
{
"id": 26,
"name": "Callisto",
"rank": 54424,
"score": 293
},
{ {
"id": 27, "id": 27,
"name": "Chambers of Xeric: Challenge Mode", "name": "Calvar'ion",
"rank": 2571, "rank": 114691,
"score": 515 "score": 58
},
{
"id": 28,
"name": "Cerberus",
"rank": 11700,
"score": 2657
},
{
"id": 29,
"name": "Chambers of Xeric",
"rank": 211708,
"score": 34
},
{
"id": 30,
"name": "Chambers of Xeric: Challenge Mode",
"rank": 1779,
"score": 736
},
{
"id": 31,
"name": "Chaos Elemental",
"rank": 24958,
"score": 215
},
{
"id": 32,
"name": "Chaos Fanatic",
"rank": 46504,
"score": 116
},
{
"id": 33,
"name": "Commander Zilyana",
"rank": 66096,
"score": 287
},
{
"id": 34,
"name": "Corporeal Beast",
"rank": 3133,
"score": 2000
},
{
"id": 35,
"name": "Crazy Archaeologist",
"rank": 26682,
"score": 198
},
{
"id": 36,
"name": "Dagannoth Prime",
"rank": 19337,
"score": 1078
},
{
"id": 37,
"name": "Dagannoth Rex",
"rank": 25021,
"score": 1062
},
{
"id": 38,
"name": "Dagannoth Supreme",
"rank": 19290,
"score": 1088
},
{
"id": 39,
"name": "Deranged Archaeologist",
"rank": 89474,
"score": 25
},
{
"id": 40,
"name": "Duke Sucellus",
"rank": 7535,
"score": 1320
},
{
"id": 41,
"name": "General Graardor",
"rank": 23251,
"score": 1228
},
{
"id": 42,
"name": "Giant Mole",
"rank": 82016,
"score": 477
},
{
"id": 43,
"name": "Grotesque Guardians",
"rank": 876,
"score": 3642
},
{
"id": 44,
"name": "Hespori",
"rank": 7073,
"score": 310
},
{
"id": 45,
"name": "Kalphite Queen",
"rank": 2476,
"score": 2046
},
{
"id": 46,
"name": "King Black Dragon",
"rank": 55411,
"score": 580
},
{
"id": 47,
"name": "Kraken",
"rank": 68801,
"score": 2899
},
{
"id": 48,
"name": "Kree'Arra",
"rank": 4608,
"score": 1740
},
{
"id": 49,
"name": "K'ril Tsutsaroth",
"rank": 3079,
"score": 1444
},
{
"id": 50,
"name": "Lunar Chests",
"rank": 8344,
"score": 324
},
{
"id": 51,
"name": "Mimic",
"rank": 540,
"score": 53
},
{
"id": 52,
"name": "Nex",
"rank": 38395,
"score": 626
},
{
"id": 53,
"name": "Nightmare",
"rank": 4176,
"score": 749
},
{
"id": 54,
"name": "Phosani's Nightmare",
"rank": 5519,
"score": 500
},
{
"id": 55,
"name": "Obor",
"rank": 1394,
"score": 217
},
{
"id": 56,
"name": "Phantom Muspah",
"rank": 26127,
"score": 379
},
{
"id": 57,
"name": "Sarachnis",
"rank": 49730,
"score": 249
},
{
"id": 58,
"name": "Scorpia",
"rank": 57206,
"score": 91
},
{
"id": 59,
"name": "Scurrius",
"rank": 6106,
"score": 1245
},
{
"id": 60,
"name": "Skotizo",
"rank": 185920,
"score": 29
},
{
"id": 61,
"name": "Sol Heredit",
"rank": 3232,
"score": 49
},
{
"id": 62,
"name": "Spindel",
"rank": 4276,
"score": 1569
},
{
"id": 63,
"name": "Tempoross",
"rank": 57314,
"score": 273
},
{
"id": 64,
"name": "The Gauntlet",
"rank": 256794,
"score": 7
},
{
"id": 65,
"name": "The Corrupted Gauntlet",
"rank": 113862,
"score": 201
}, },
{ "id": 28, "name": "Chaos Elemental", "rank": 85921, "score": 50 },
{ "id": 29, "name": "Chaos Fanatic", "rank": 154580, "score": 26 },
{ "id": 30, "name": "Commander Zilyana", "rank": 54677, "score": 287 },
{ "id": 31, "name": "Corporeal Beast", "rank": 2586, "score": 2000 },
{ "id": 32, "name": "Crazy Archaeologist", "rank": 153371, "score": 41 },
{ "id": 33, "name": "Dagannoth Prime", "rank": 33154, "score": 707 },
{ "id": 34, "name": "Dagannoth Rex", "rank": 43433, "score": 698 },
{ "id": 35, "name": "Dagannoth Supreme", "rank": 33088, "score": 714 },
{ "id": 36, "name": "Deranged Archaeologist", "rank": 81968, "score": 25 },
{ "id": 37, "name": "Duke Sucellus", "rank": 12249, "score": 731 },
{ "id": 38, "name": "General Graardor", "rank": 20424, "score": 1228 },
{ "id": 39, "name": "Giant Mole", "rank": 70188, "score": 474 },
{ "id": 40, "name": "Grotesque Guardians", "rank": 2248, "score": 2140 },
{ "id": 41, "name": "Hespori", "rank": 11128, "score": 226 },
{ "id": 42, "name": "Kalphite Queen", "rank": 2117, "score": 2046 },
{ "id": 43, "name": "King Black Dragon", "rank": 50095, "score": 580 },
{ "id": 44, "name": "Kraken", "rank": 120438, "score": 1908 },
{ "id": 45, "name": "Kree'Arra", "rank": 10997, "score": 920 },
{ "id": 46, "name": "K'ril Tsutsaroth", "rank": 2326, "score": 1444 },
{ "id": 47, "name": "Lunar Chests", "rank": -1, "score": -1 },
{ "id": 48, "name": "Mimic", "rank": 700, "score": 40 },
{ "id": 49, "name": "Nex", "rank": 31471, "score": 626 },
{ "id": 50, "name": "Nightmare", "rank": 4119, "score": 749 },
{ "id": 51, "name": "Phosani's Nightmare", "rank": 4349, "score": 500 },
{ "id": 52, "name": "Obor", "rank": 1078, "score": 217 },
{ "id": 53, "name": "Phantom Muspah", "rank": 20126, "score": 301 },
{ "id": 54, "name": "Sarachnis", "rank": 70523, "score": 119 },
{ "id": 55, "name": "Scorpia", "rank": 114632, "score": 26 },
{ "id": 56, "name": "Scurrius", "rank": 2945, "score": 1245 },
{ "id": 57, "name": "Skotizo", "rank": 385801, "score": 9 },
{ "id": 58, "name": "Sol Heredit", "rank": -1, "score": -1 },
{ "id": 59, "name": "Spindel", "rank": 2412, "score": 1569 },
{ "id": 60, "name": "Tempoross", "rank": 43814, "score": 273 },
{ "id": 61, "name": "The Gauntlet", "rank": 207949, "score": 7 },
{ "id": 62, "name": "The Corrupted Gauntlet", "rank": 86335, "score": 201 },
{ "id": 63, "name": "The Leviathan", "rank": 7905, "score": 601 },
{ "id": 64, "name": "The Whisperer", "rank": 732, "score": 1783 },
{ "id": 65, "name": "Theatre of Blood", "rank": 21039, "score": 310 },
{ {
"id": 66, "id": 66,
"name": "Theatre of Blood: Hard Mode", "name": "The Hueycoatl",
"rank": 4949, "rank": 1969,
"score": 192 "score": 538
}, },
{ {
"id": 67, "id": 67,
"name": "Thermonuclear Smoke Devil", "name": "The Leviathan",
"rank": 7584, "rank": 12346,
"score": 3066 "score": 671
},
{
"id": 68,
"name": "The Royal Titans",
"rank": 5606,
"score": 149
}, },
{ "id": 68, "name": "Tombs of Amascut", "rank": 109360, "score": 36 },
{ {
"id": 69, "id": 69,
"name": "Tombs of Amascut: Expert Mode", "name": "The Whisperer",
"rank": 160, "rank": 550,
"score": 1500 "score": 2450
}, },
{ "id": 70, "name": "TzKal-Zuk", "rank": 6733, "score": 7 }, {
{ "id": 71, "name": "TzTok-Jad", "rank": 131888, "score": 8 }, "id": 70,
{ "id": 72, "name": "Vardorvis", "rank": 3128, "score": 2113 }, "name": "Theatre of Blood",
{ "id": 73, "name": "Venenatis", "rank": 209, "score": 7096 }, "rank": 25557,
{ "id": 74, "name": "Vet'ion", "rank": 75591, "score": 51 }, "score": 310
{ "id": 75, "name": "Vorkath", "rank": 15167, "score": 2780 }, },
{ "id": 76, "name": "Wintertodt", "rank": 911570, "score": 62 }, {
{ "id": 77, "name": "Zalcano", "rank": 173436, "score": 25 }, "id": 71,
{ "id": 78, "name": "Zulrah", "rank": 233645, "score": 275 } "name": "Theatre of Blood: Hard Mode",
"rank": 1391,
"score": 538
},
{
"id": 72,
"name": "Thermonuclear Smoke Devil",
"rank": 9325,
"score": 3066
},
{
"id": 73,
"name": "Tombs of Amascut",
"rank": 131996,
"score": 37
},
{
"id": 74,
"name": "Tombs of Amascut: Expert Mode",
"rank": 214,
"score": 1720
},
{
"id": 75,
"name": "TzKal-Zuk",
"rank": 8902,
"score": 7
},
{
"id": 76,
"name": "TzTok-Jad",
"rank": 148385,
"score": 8
},
{
"id": 77,
"name": "Vardorvis",
"rank": 6120,
"score": 2113
},
{
"id": 78,
"name": "Venenatis",
"rank": 287,
"score": 7096
},
{
"id": 79,
"name": "Vet'ion",
"rank": 97368,
"score": 51
},
{
"id": 80,
"name": "Vorkath",
"rank": 15591,
"score": 2780
},
{
"id": 81,
"name": "Wintertodt",
"rank": 1000405,
"score": 67
},
{
"id": 82,
"name": "Yama",
"rank": 19722,
"score": 173
},
{
"id": 83,
"name": "Zalcano",
"rank": 213696,
"score": 25
},
{
"id": 84,
"name": "Zulrah",
"rank": 240082,
"score": 340
}
] ]
} }

View File

@@ -15,7 +15,10 @@ import {
InvalidFormatError, InvalidFormatError,
BH_MODES, BH_MODES,
parseJsonStats, parseJsonStats,
HiscoresResponse HiscoresResponse,
InvalidRSNError,
PlayerNotFoundError,
HiScoresError
} from '../src/index'; } from '../src/index';
const B0ATY_NAME = 'B0ATY'; const B0ATY_NAME = 'B0ATY';
@@ -24,6 +27,8 @@ const LYNX_TITAN_SPACE_NAME = 'lYnX tiTaN';
const LYNX_TITAN_UNDERSCORE_NAME = 'lYnX_tiTaN'; const LYNX_TITAN_UNDERSCORE_NAME = 'lYnX_tiTaN';
const LYNX_TITAN_HYPHEN_NAME = 'lYnX-tiTaN'; const LYNX_TITAN_HYPHEN_NAME = 'lYnX-tiTaN';
const LYNX_TITAN_FORMATTED_NAME = 'Lynx Titan'; const LYNX_TITAN_FORMATTED_NAME = 'Lynx Titan';
const NON_EXISTENT_NAME = 'nonExistent';
const ERROR_NAME = 'errorName';
const attackTopPage = readFileSync(`${__dirname}/attackTopPage.html`, 'utf8'); const attackTopPage = readFileSync(`${__dirname}/attackTopPage.html`, 'utf8');
const b0atyNamePage = readFileSync(`${__dirname}/b0atyNamePage.html`, 'utf8'); const b0atyNamePage = readFileSync(`${__dirname}/b0atyNamePage.html`, 'utf8');
@@ -57,6 +62,12 @@ jest.spyOn(axios, 'get').mockImplementation((url) => {
if (getStatsURL('main', LYNX_TITAN_FORMATTED_NAME, true) === url) { if (getStatsURL('main', LYNX_TITAN_FORMATTED_NAME, true) === url) {
return Promise.resolve({ status: 200, data: lynxTitanStats }); return Promise.resolve({ status: 200, data: lynxTitanStats });
} }
if (getPlayerTableURL('main', NON_EXISTENT_NAME) === url) {
return Promise.resolve({ data: '<html></html>' });
}
if (getPlayerTableURL('main', ERROR_NAME)) {
return Promise.reject();
}
throw new Error(`No mock response for URL: ${url}`); throw new Error(`No mock response for URL: ${url}`);
}); });
@@ -103,8 +114,11 @@ test('Parse CSV to json', () => {
37,225 37,225
25,1110 25,1110
7827,43249 7827,43249
1114,1155
382,2780 382,2780
944,3000 944,3000
561,398429
37,111
704,892 704,892
1981,1452 1981,1452
4981,23 4981,23
@@ -148,7 +162,9 @@ test('Parse CSV to json', () => {
18823,23 18823,23
63,375 63,375
2870,6 2870,6
891,9102
2871,7 2871,7
5606,149
2872,8 2872,8
6984,138 6984,138
23,923141 23,923141
@@ -162,6 +178,7 @@ test('Parse CSV to json', () => {
1940,272 1940,272
8623,1340 8623,1340
605,1694 605,1694
15233,245
-1,-1 -1,-1
3867,4583`; 3867,4583`;
@@ -205,6 +222,7 @@ test('Parse CSV to json', () => {
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 }, colosseumGlory: { rank: 7827, score: 43249 },
collectionsLogged: { rank: 1114, score: 1155 },
clues: { clues: {
all: { rank: 32, score: 12148 }, all: { rank: 32, score: 12148 },
beginner: { rank: 3105, score: 76 }, beginner: { rank: 3105, score: 76 },
@@ -217,6 +235,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 },
@@ -260,7 +280,9 @@ test('Parse CSV to json', () => {
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 },
royalTitans: { rank: 5606, score: 149 },
whisperer: { rank: 2872, score: 8 }, whisperer: { rank: 2872, score: 8 },
theatreOfBlood: { rank: 6984, score: 138 }, theatreOfBlood: { rank: 6984, score: 138 },
theatreOfBloodHardMode: { rank: 23, score: 923141 }, theatreOfBloodHardMode: { rank: 23, score: 923141 },
@@ -274,6 +296,7 @@ test('Parse CSV to json', () => {
vetion: { rank: 1940, score: 272 }, vetion: { rank: 1940, score: 272 },
vorkath: { rank: 8623, score: 1340 }, vorkath: { rank: 8623, score: 1340 },
wintertodt: { rank: 605, score: 1694 }, wintertodt: { rank: 605, score: 1694 },
yama: { rank: 15233, score: 245 },
zalcano: { rank: -1, score: -1 }, zalcano: { rank: -1, score: -1 },
zulrah: { rank: 3867, score: 4583 } zulrah: { rank: 3867, score: 4583 }
} }
@@ -312,7 +335,15 @@ describe('Get name format', () => {
expect(data).toBe(B0ATY_FORMATTED_NAME); expect(data).toBe(B0ATY_FORMATTED_NAME);
}); });
it('throws an error for a name with invalid characters', async () => { it('throws an error for a name with invalid characters', async () => {
await expect(getRSNFormat('b&aty')).rejects.toBeTruthy(); await expect(getRSNFormat('b&aty')).rejects.toThrow(InvalidRSNError);
});
it('throws an error for a non-existent player', async () => {
await expect(getRSNFormat(NON_EXISTENT_NAME)).rejects.toThrow(
PlayerNotFoundError
);
});
it('throws an error for a hiscores issue', async () => {
await expect(getRSNFormat(ERROR_NAME)).rejects.toThrow(HiScoresError);
}); });
}); });
@@ -499,7 +530,7 @@ test('Get attack top page', async () => {
test('Get non-existent player', async () => { test('Get non-existent player', async () => {
getStats('fishy').catch((err) => { getStats('fishy').catch((err) => {
if (err.response) { if (err?.response) {
expect(err.response.status).toBe(404); expect(err.response.status).toBe(404);
} }
}); });

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": 30, "level": 99, "xp": 200000000 }, {
{ "id": 8, "name": "Cooking", "rank": 154, "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": 149,
"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": 23,
"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": 3,
"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,93 +206,473 @@
"rank": -1, "rank": -1,
"score": -1 "score": -1
}, },
{ "id": 6, "name": "Clue Scrolls (all)", "rank": 832420, "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": 937868,
{ "id": 10, "name": "Clue Scrolls (hard)", "rank": 517091, "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": "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": 8,
{ "id": 20, "name": "Artio", "rank": -1, "score": -1 }, "name": "Clue Scrolls (easy)",
{ "id": 21, "name": "Barrows Chests", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 22, "name": "Bryophyta", "rank": -1, "score": -1 }, "score": -1
{ "id": 23, "name": "Callisto", "rank": -1, "score": -1 }, },
{ "id": 24, "name": "Calvar'ion", "rank": -1, "score": -1 }, {
{ "id": 25, "name": "Cerberus", "rank": -1, "score": -1 }, "id": 9,
{ "id": 26, "name": "Chambers of Xeric", "rank": -1, "score": -1 }, "name": "Clue Scrolls (medium)",
"rank": -1,
"score": -1
},
{
"id": 10,
"name": "Clue Scrolls (hard)",
"rank": 578038,
"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": "Collections Logged",
"rank": -1,
"score": -1
},
{
"id": 19,
"name": "Abyssal Sire",
"rank": -1,
"score": -1
},
{
"id": 20,
"name": "Alchemical Hydra",
"rank": -1,
"score": -1
},
{
"id": 21,
"name": "Amoxliatl",
"rank": -1,
"score": -1
},
{
"id": 22,
"name": "Araxxor",
"rank": -1,
"score": -1
},
{
"id": 23,
"name": "Artio",
"rank": -1,
"score": -1
},
{
"id": 24,
"name": "Barrows Chests",
"rank": -1,
"score": -1
},
{
"id": 25,
"name": "Bryophyta",
"rank": -1,
"score": -1
},
{
"id": 26,
"name": "Callisto",
"rank": -1,
"score": -1
},
{ {
"id": 27, "id": 27,
"name": "Calvar'ion",
"rank": -1,
"score": -1
},
{
"id": 28,
"name": "Cerberus",
"rank": -1,
"score": -1
},
{
"id": 29,
"name": "Chambers of Xeric",
"rank": -1,
"score": -1
},
{
"id": 30,
"name": "Chambers of Xeric: Challenge Mode", "name": "Chambers of Xeric: Challenge Mode",
"rank": -1, "rank": -1,
"score": -1 "score": -1
}, },
{ "id": 28, "name": "Chaos Elemental", "rank": -1, "score": -1 }, {
{ "id": 29, "name": "Chaos Fanatic", "rank": -1, "score": -1 }, "id": 31,
{ "id": 30, "name": "Commander Zilyana", "rank": -1, "score": -1 }, "name": "Chaos Elemental",
{ "id": 31, "name": "Corporeal Beast", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 32, "name": "Crazy Archaeologist", "rank": -1, "score": -1 }, "score": -1
{ "id": 33, "name": "Dagannoth Prime", "rank": -1, "score": -1 }, },
{ "id": 34, "name": "Dagannoth Rex", "rank": -1, "score": -1 }, {
{ "id": 35, "name": "Dagannoth Supreme", "rank": -1, "score": -1 }, "id": 32,
{ "id": 36, "name": "Deranged Archaeologist", "rank": -1, "score": -1 }, "name": "Chaos Fanatic",
{ "id": 37, "name": "Duke Sucellus", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 38, "name": "General Graardor", "rank": -1, "score": -1 }, "score": -1
{ "id": 39, "name": "Giant Mole", "rank": -1, "score": -1 }, },
{ "id": 40, "name": "Grotesque Guardians", "rank": -1, "score": -1 }, {
{ "id": 41, "name": "Hespori", "rank": -1, "score": -1 }, "id": 33,
{ "id": 42, "name": "Kalphite Queen", "rank": -1, "score": -1 }, "name": "Commander Zilyana",
{ "id": 43, "name": "King Black Dragon", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 44, "name": "Kraken", "rank": -1, "score": -1 }, "score": -1
{ "id": 45, "name": "Kree'Arra", "rank": -1, "score": -1 }, },
{ "id": 46, "name": "K'ril Tsutsaroth", "rank": -1, "score": -1 }, {
{ "id": 47, "name": "Lunar Chests", "rank": -1, "score": -1 }, "id": 34,
{ "id": 48, "name": "Mimic", "rank": -1, "score": -1 }, "name": "Corporeal Beast",
{ "id": 49, "name": "Nex", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 50, "name": "Nightmare", "rank": -1, "score": -1 }, "score": -1
{ "id": 51, "name": "Phosani's Nightmare", "rank": -1, "score": -1 }, },
{ "id": 52, "name": "Obor", "rank": -1, "score": -1 }, {
{ "id": 53, "name": "Phantom Muspah", "rank": -1, "score": -1 }, "id": 35,
{ "id": 54, "name": "Sarachnis", "rank": -1, "score": -1 }, "name": "Crazy Archaeologist",
{ "id": 55, "name": "Scorpia", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 56, "name": "Scurrius", "rank": -1, "score": -1 }, "score": -1
{ "id": 57, "name": "Skotizo", "rank": -1, "score": -1 }, },
{ "id": 58, "name": "Sol Heredit", "rank": -1, "score": -1 }, {
{ "id": 59, "name": "Spindel", "rank": -1, "score": -1 }, "id": 36,
{ "id": 60, "name": "Tempoross", "rank": -1, "score": -1 }, "name": "Dagannoth Prime",
{ "id": 61, "name": "The Gauntlet", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 62, "name": "The Corrupted Gauntlet", "rank": -1, "score": -1 }, "score": -1
{ "id": 63, "name": "The Leviathan", "rank": -1, "score": -1 }, },
{ "id": 64, "name": "The Whisperer", "rank": -1, "score": -1 }, {
{ "id": 65, "name": "Theatre of Blood", "rank": -1, "score": -1 }, "id": 37,
"name": "Dagannoth Rex",
"rank": -1,
"score": -1
},
{
"id": 38,
"name": "Dagannoth Supreme",
"rank": -1,
"score": -1
},
{
"id": 39,
"name": "Deranged Archaeologist",
"rank": -1,
"score": -1
},
{
"id": 40,
"name": "Duke Sucellus",
"rank": -1,
"score": -1
},
{
"id": 41,
"name": "General Graardor",
"rank": -1,
"score": -1
},
{
"id": 42,
"name": "Giant Mole",
"rank": -1,
"score": -1
},
{
"id": 43,
"name": "Grotesque Guardians",
"rank": -1,
"score": -1
},
{
"id": 44,
"name": "Hespori",
"rank": -1,
"score": -1
},
{
"id": 45,
"name": "Kalphite Queen",
"rank": -1,
"score": -1
},
{
"id": 46,
"name": "King Black Dragon",
"rank": -1,
"score": -1
},
{
"id": 47,
"name": "Kraken",
"rank": -1,
"score": -1
},
{
"id": 48,
"name": "Kree'Arra",
"rank": -1,
"score": -1
},
{
"id": 49,
"name": "K'ril Tsutsaroth",
"rank": -1,
"score": -1
},
{
"id": 50,
"name": "Lunar Chests",
"rank": -1,
"score": -1
},
{
"id": 51,
"name": "Mimic",
"rank": -1,
"score": -1
},
{
"id": 52,
"name": "Nex",
"rank": -1,
"score": -1
},
{
"id": 53,
"name": "Nightmare",
"rank": -1,
"score": -1
},
{
"id": 54,
"name": "Phosani's Nightmare",
"rank": -1,
"score": -1
},
{
"id": 55,
"name": "Obor",
"rank": -1,
"score": -1
},
{
"id": 56,
"name": "Phantom Muspah",
"rank": -1,
"score": -1
},
{
"id": 57,
"name": "Sarachnis",
"rank": -1,
"score": -1
},
{
"id": 58,
"name": "Scorpia",
"rank": -1,
"score": -1
},
{
"id": 59,
"name": "Scurrius",
"rank": -1,
"score": -1
},
{
"id": 60,
"name": "Skotizo",
"rank": -1,
"score": -1
},
{
"id": 61,
"name": "Sol Heredit",
"rank": -1,
"score": -1
},
{
"id": 62,
"name": "Spindel",
"rank": -1,
"score": -1
},
{
"id": 63,
"name": "Tempoross",
"rank": -1,
"score": -1
},
{
"id": 64,
"name": "The Gauntlet",
"rank": -1,
"score": -1
},
{
"id": 65,
"name": "The Corrupted Gauntlet",
"rank": -1,
"score": -1
},
{ {
"id": 66, "id": 66,
"name": "The Hueycoatl",
"rank": -1,
"score": -1
},
{
"id": 67,
"name": "The Leviathan",
"rank": -1,
"score": -1
},
{
"id": 68,
"name": "The Royal Titans",
"rank": -1,
"score": -1
},
{
"id": 69,
"name": "The Whisperer",
"rank": -1,
"score": -1
},
{
"id": 70,
"name": "Theatre of Blood",
"rank": -1,
"score": -1
},
{
"id": 71,
"name": "Theatre of Blood: Hard Mode", "name": "Theatre of Blood: Hard Mode",
"rank": -1, "rank": -1,
"score": -1 "score": -1
}, },
{ "id": 67, "name": "Thermonuclear Smoke Devil", "rank": -1, "score": -1 },
{ "id": 68, "name": "Tombs of Amascut", "rank": -1, "score": -1 },
{ {
"id": 69, "id": 72,
"name": "Thermonuclear Smoke Devil",
"rank": -1,
"score": -1
},
{
"id": 73,
"name": "Tombs of Amascut",
"rank": -1,
"score": -1
},
{
"id": 74,
"name": "Tombs of Amascut: Expert Mode", "name": "Tombs of Amascut: Expert Mode",
"rank": -1, "rank": -1,
"score": -1 "score": -1
}, },
{ "id": 70, "name": "TzKal-Zuk", "rank": -1, "score": -1 }, {
{ "id": 71, "name": "TzTok-Jad", "rank": 251, "score": 186 }, "id": 75,
{ "id": 72, "name": "Vardorvis", "rank": -1, "score": -1 }, "name": "TzKal-Zuk",
{ "id": 73, "name": "Venenatis", "rank": -1, "score": -1 }, "rank": -1,
{ "id": 74, "name": "Vet'ion", "rank": -1, "score": -1 }, "score": -1
{ "id": 75, "name": "Vorkath", "rank": -1, "score": -1 }, },
{ "id": 76, "name": "Wintertodt", "rank": -1, "score": -1 }, {
{ "id": 77, "name": "Zalcano", "rank": -1, "score": -1 }, "id": 76,
{ "id": 78, "name": "Zulrah", "rank": -1, "score": -1 } "name": "TzTok-Jad",
"rank": 317,
"score": 186
},
{
"id": 77,
"name": "Vardorvis",
"rank": -1,
"score": -1
},
{
"id": 78,
"name": "Venenatis",
"rank": -1,
"score": -1
},
{
"id": 79,
"name": "Vet'ion",
"rank": -1,
"score": -1
},
{
"id": 80,
"name": "Vorkath",
"rank": -1,
"score": -1
},
{
"id": 81,
"name": "Wintertodt",
"rank": -1,
"score": -1
},
{
"id": 82,
"name": "Zalcano",
"rank": -1,
"score": -1
},
{
"id": 83,
"name": "Zulrah",
"rank": -1,
"score": -1
}
] ]
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "osrs-json-hiscores", "name": "osrs-json-hiscores",
"version": "2.18.0", "version": "2.22.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

@@ -45,7 +45,8 @@ import {
FORMATTED_SOUL_WARS, FORMATTED_SOUL_WARS,
FORMATTED_RIFTS_CLOSED, FORMATTED_RIFTS_CLOSED,
FORMATTED_DEADMAN_POINTS, FORMATTED_DEADMAN_POINTS,
FORMATTED_COLOSSEUM_GLORY FORMATTED_COLOSSEUM_GLORY,
FORMATTED_COLLECTIONS_LOGGED
} from './utils'; } from './utils';
/** /**
@@ -85,11 +86,12 @@ export async function getOfficialStats(
*/ */
export async function getRSNFormat( export async function getRSNFormat(
rsn: string, rsn: string,
config?: AxiosRequestConfig config?: AxiosRequestConfig,
mode: Gamemode = 'main'
): Promise<string> { ): Promise<string> {
validateRSN(rsn); validateRSN(rsn);
const url = getPlayerTableURL('main', rsn); const url = getPlayerTableURL(mode, rsn);
try { try {
const response = await httpGet<string | Buffer | BinaryData | undefined>( const response = await httpGet<string | Buffer | BinaryData | undefined>(
url, url,
@@ -102,10 +104,10 @@ export async function getRSNFormat(
if (anchor) { if (anchor) {
return rsnFromElement(anchor); return rsnFromElement(anchor);
} }
throw new PlayerNotFoundError();
} catch { } catch {
throw new HiScoresError(); throw new HiScoresError();
} }
throw new PlayerNotFoundError();
} }
/** /**
@@ -164,6 +166,7 @@ export function parseJsonStats(json: HiscoresResponse): Stats {
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 colosseumGlory = getActivity(FORMATTED_COLOSSEUM_GLORY);
const collectionsLogged = getActivity(FORMATTED_COLLECTIONS_LOGGED);
const stats: Stats = { const stats: Stats = {
skills, skills,
@@ -175,6 +178,7 @@ export function parseJsonStats(json: HiscoresResponse): Stats {
soulWarsZeal, soulWarsZeal,
riftsClosed, riftsClosed,
colosseumGlory, colosseumGlory,
collectionsLogged,
clues, clues,
bosses bosses
}; };
@@ -224,8 +228,14 @@ 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, colosseumGlory] = const [
activityObjects.splice(0, 5); lastManStanding,
pvpArena,
soulWarsZeal,
riftsClosed,
colosseumGlory,
collectionsLogged
] = activityObjects.splice(0, 6);
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) => {
@@ -262,6 +272,7 @@ export function parseStats(csv: string): Stats {
soulWarsZeal, soulWarsZeal,
riftsClosed, riftsClosed,
colosseumGlory, colosseumGlory,
collectionsLogged,
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'
@@ -112,7 +114,9 @@ export type Boss =
| 'tempoross' | 'tempoross'
| 'gauntlet' | 'gauntlet'
| 'corruptedGauntlet' | 'corruptedGauntlet'
| 'hueycoatl'
| 'leviathan' | 'leviathan'
| 'royalTitans'
| 'whisperer' | 'whisperer'
| 'theatreOfBlood' | 'theatreOfBlood'
| 'theatreOfBloodHardMode' | 'theatreOfBloodHardMode'
@@ -126,6 +130,7 @@ export type Boss =
| 'vetion' | 'vetion'
| 'vorkath' | 'vorkath'
| 'wintertodt' | 'wintertodt'
| 'yama'
| 'zalcano' | 'zalcano'
| 'zulrah'; | 'zulrah';
@@ -150,6 +155,7 @@ export type ActivityName =
| 'eliteClues' | 'eliteClues'
| 'masterClues' | 'masterClues'
| 'colosseumGlory' | 'colosseumGlory'
| 'collectionsLogged'
| Boss; | Boss;
export interface Stats { export interface Stats {
@@ -169,6 +175,7 @@ export interface Stats {
soulWarsZeal: Activity; soulWarsZeal: Activity;
riftsClosed: Activity; riftsClosed: Activity;
colosseumGlory: Activity; colosseumGlory: Activity;
collectionsLogged: 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',
@@ -119,7 +121,9 @@ export const BOSSES: Boss[] = [
'tempoross', 'tempoross',
'gauntlet', 'gauntlet',
'corruptedGauntlet', 'corruptedGauntlet',
'hueycoatl',
'leviathan', 'leviathan',
'royalTitans',
'whisperer', 'whisperer',
'theatreOfBlood', 'theatreOfBlood',
'theatreOfBloodHardMode', 'theatreOfBloodHardMode',
@@ -133,6 +137,7 @@ export const BOSSES: Boss[] = [
'vetion', 'vetion',
'vorkath', 'vorkath',
'wintertodt', 'wintertodt',
'yama',
'zalcano', 'zalcano',
'zulrah' 'zulrah'
]; ];
@@ -155,6 +160,7 @@ export const ACTIVITIES: ActivityName[] = [
'soulWarsZeal', 'soulWarsZeal',
'riftsClosed', 'riftsClosed',
'colosseumGlory', 'colosseumGlory',
'collectionsLogged',
...BOSSES ...BOSSES
]; ];
@@ -165,6 +171,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',
@@ -208,7 +216,9 @@ export const FORMATTED_BOSS_NAMES: FormattedBossNames = {
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',
royalTitans: 'The Royal Titans',
whisperer: 'The Whisperer', whisperer: 'The Whisperer',
theatreOfBlood: 'Theatre of Blood', theatreOfBlood: 'Theatre of Blood',
theatreOfBloodHardMode: 'Theatre of Blood: Hard Mode', theatreOfBloodHardMode: 'Theatre of Blood: Hard Mode',
@@ -222,6 +232,7 @@ export const FORMATTED_BOSS_NAMES: FormattedBossNames = {
vetion: "Vet'ion", vetion: "Vet'ion",
vorkath: 'Vorkath', vorkath: 'Vorkath',
wintertodt: 'Wintertodt', wintertodt: 'Wintertodt',
yama: 'Yama',
zalcano: 'Zalcano', zalcano: 'Zalcano',
zulrah: 'Zulrah' zulrah: 'Zulrah'
}; };
@@ -289,6 +300,7 @@ 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 FORMATTED_COLOSSEUM_GLORY = 'Colosseum Glory';
export const FORMATTED_COLLECTIONS_LOGGED = 'Collections Logged';
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

@@ -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"
@@ -1729,9 +1729,9 @@ cosmiconfig@^7.0.0:
yaml "^1.10.0" yaml "^1.10.0"
cross-spawn@^7.0.2, cross-spawn@^7.0.3: cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3" version "7.0.6"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
dependencies: dependencies:
path-key "^3.1.0" path-key "^3.1.0"
shebang-command "^2.0.0" shebang-command "^2.0.0"
@@ -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,7 +2428,7 @@ 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.6" version "1.15.6"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
@@ -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"