@breezil/hypixel-parsers 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +235 -0
  3. package/dist/arcade.d.ts +560 -0
  4. package/dist/arcade.d.ts.map +1 -0
  5. package/dist/arcade.js +619 -0
  6. package/dist/arcade.js.map +1 -0
  7. package/dist/arenabrawl.d.ts +56 -0
  8. package/dist/arenabrawl.d.ts.map +1 -0
  9. package/dist/arenabrawl.js +107 -0
  10. package/dist/arenabrawl.js.map +1 -0
  11. package/dist/bedwars.d.ts +747 -0
  12. package/dist/bedwars.d.ts.map +1 -0
  13. package/dist/bedwars.js +844 -0
  14. package/dist/bedwars.js.map +1 -0
  15. package/dist/blitz.d.ts +105 -0
  16. package/dist/blitz.d.ts.map +1 -0
  17. package/dist/blitz.js +259 -0
  18. package/dist/blitz.js.map +1 -0
  19. package/dist/buildbattle.d.ts +54 -0
  20. package/dist/buildbattle.d.ts.map +1 -0
  21. package/dist/buildbattle.js +92 -0
  22. package/dist/buildbattle.js.map +1 -0
  23. package/dist/common.d.ts +11 -0
  24. package/dist/common.d.ts.map +1 -0
  25. package/dist/common.js +34 -0
  26. package/dist/common.js.map +1 -0
  27. package/dist/copsandcrims.d.ts +201 -0
  28. package/dist/copsandcrims.d.ts.map +1 -0
  29. package/dist/copsandcrims.js +269 -0
  30. package/dist/copsandcrims.js.map +1 -0
  31. package/dist/duels.d.ts +358 -0
  32. package/dist/duels.d.ts.map +1 -0
  33. package/dist/duels.js +570 -0
  34. package/dist/duels.js.map +1 -0
  35. package/dist/guild.d.ts +49 -0
  36. package/dist/guild.d.ts.map +1 -0
  37. package/dist/guild.js +95 -0
  38. package/dist/guild.js.map +1 -0
  39. package/dist/housing.d.ts +16 -0
  40. package/dist/housing.d.ts.map +1 -0
  41. package/dist/housing.js +34 -0
  42. package/dist/housing.js.map +1 -0
  43. package/dist/index.d.ts +50 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +66 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/megawalls.d.ts +363 -0
  48. package/dist/megawalls.d.ts.map +1 -0
  49. package/dist/megawalls.js +684 -0
  50. package/dist/megawalls.js.map +1 -0
  51. package/dist/murdermystery.d.ts +293 -0
  52. package/dist/murdermystery.d.ts.map +1 -0
  53. package/dist/murdermystery.js +349 -0
  54. package/dist/murdermystery.js.map +1 -0
  55. package/dist/nbt.d.ts +37 -0
  56. package/dist/nbt.d.ts.map +1 -0
  57. package/dist/nbt.js +133 -0
  58. package/dist/nbt.js.map +1 -0
  59. package/dist/paintball.d.ts +52 -0
  60. package/dist/paintball.d.ts.map +1 -0
  61. package/dist/paintball.js +79 -0
  62. package/dist/paintball.js.map +1 -0
  63. package/dist/pit.d.ts +181 -0
  64. package/dist/pit.d.ts.map +1 -0
  65. package/dist/pit.js +262 -0
  66. package/dist/pit.js.map +1 -0
  67. package/dist/player.d.ts +338 -0
  68. package/dist/player.d.ts.map +1 -0
  69. package/dist/player.js +521 -0
  70. package/dist/player.js.map +1 -0
  71. package/dist/quakecraft.d.ts +75 -0
  72. package/dist/quakecraft.d.ts.map +1 -0
  73. package/dist/quakecraft.js +99 -0
  74. package/dist/quakecraft.js.map +1 -0
  75. package/dist/recentgames.d.ts +10 -0
  76. package/dist/recentgames.d.ts.map +1 -0
  77. package/dist/recentgames.js +27 -0
  78. package/dist/recentgames.js.map +1 -0
  79. package/dist/resources-achievements.d.ts +29 -0
  80. package/dist/resources-achievements.d.ts.map +1 -0
  81. package/dist/resources-achievements.js +67 -0
  82. package/dist/resources-achievements.js.map +1 -0
  83. package/dist/resources-challenges.d.ts +12 -0
  84. package/dist/resources-challenges.d.ts.map +1 -0
  85. package/dist/resources-challenges.js +36 -0
  86. package/dist/resources-challenges.js.map +1 -0
  87. package/dist/resources-games.d.ts +10 -0
  88. package/dist/resources-games.d.ts.map +1 -0
  89. package/dist/resources-games.js +28 -0
  90. package/dist/resources-games.js.map +1 -0
  91. package/dist/resources-guild-achievements.d.ts +23 -0
  92. package/dist/resources-guild-achievements.d.ts.map +1 -0
  93. package/dist/resources-guild-achievements.js +56 -0
  94. package/dist/resources-guild-achievements.js.map +1 -0
  95. package/dist/resources-quests.d.ts +23 -0
  96. package/dist/resources-quests.d.ts.map +1 -0
  97. package/dist/resources-quests.js +53 -0
  98. package/dist/resources-quests.js.map +1 -0
  99. package/dist/resources-vanity.d.ts +19 -0
  100. package/dist/resources-vanity.d.ts.map +1 -0
  101. package/dist/resources-vanity.js +33 -0
  102. package/dist/resources-vanity.js.map +1 -0
  103. package/dist/skyblock-auctions.d.ts +50 -0
  104. package/dist/skyblock-auctions.d.ts.map +1 -0
  105. package/dist/skyblock-auctions.js +90 -0
  106. package/dist/skyblock-auctions.js.map +1 -0
  107. package/dist/skyblock-bazaar.d.ts +25 -0
  108. package/dist/skyblock-bazaar.d.ts.map +1 -0
  109. package/dist/skyblock-bazaar.js +54 -0
  110. package/dist/skyblock-bazaar.js.map +1 -0
  111. package/dist/skyblock-bingo.d.ts +8 -0
  112. package/dist/skyblock-bingo.d.ts.map +1 -0
  113. package/dist/skyblock-bingo.js +19 -0
  114. package/dist/skyblock-bingo.js.map +1 -0
  115. package/dist/skyblock-items.d.ts +150 -0
  116. package/dist/skyblock-items.d.ts.map +1 -0
  117. package/dist/skyblock-items.js +247 -0
  118. package/dist/skyblock-items.js.map +1 -0
  119. package/dist/skyblock-misc.d.ts +91 -0
  120. package/dist/skyblock-misc.d.ts.map +1 -0
  121. package/dist/skyblock-misc.js +159 -0
  122. package/dist/skyblock-misc.js.map +1 -0
  123. package/dist/skyblock-museum.d.ts +24 -0
  124. package/dist/skyblock-museum.d.ts.map +1 -0
  125. package/dist/skyblock-museum.js +51 -0
  126. package/dist/skyblock-museum.js.map +1 -0
  127. package/dist/skyblock-news.d.ts +12 -0
  128. package/dist/skyblock-news.d.ts.map +1 -0
  129. package/dist/skyblock-news.js +25 -0
  130. package/dist/skyblock-news.js.map +1 -0
  131. package/dist/skyblock-resources.d.ts +94 -0
  132. package/dist/skyblock-resources.d.ts.map +1 -0
  133. package/dist/skyblock-resources.js +175 -0
  134. package/dist/skyblock-resources.js.map +1 -0
  135. package/dist/skyblock.d.ts +972 -0
  136. package/dist/skyblock.d.ts.map +1 -0
  137. package/dist/skyblock.js +1371 -0
  138. package/dist/skyblock.js.map +1 -0
  139. package/dist/skywars.d.ts +319 -0
  140. package/dist/skywars.d.ts.map +1 -0
  141. package/dist/skywars.js +611 -0
  142. package/dist/skywars.js.map +1 -0
  143. package/dist/smashheroes.d.ts +126 -0
  144. package/dist/smashheroes.d.ts.map +1 -0
  145. package/dist/smashheroes.js +206 -0
  146. package/dist/smashheroes.js.map +1 -0
  147. package/dist/static.d.ts +42 -0
  148. package/dist/static.d.ts.map +1 -0
  149. package/dist/static.js +106 -0
  150. package/dist/static.js.map +1 -0
  151. package/dist/status.d.ts +9 -0
  152. package/dist/status.d.ts.map +1 -0
  153. package/dist/status.js +18 -0
  154. package/dist/status.js.map +1 -0
  155. package/dist/tntgames.d.ts +189 -0
  156. package/dist/tntgames.d.ts.map +1 -0
  157. package/dist/tntgames.js +283 -0
  158. package/dist/tntgames.js.map +1 -0
  159. package/dist/turbokartracers.d.ts +85 -0
  160. package/dist/turbokartracers.d.ts.map +1 -0
  161. package/dist/turbokartracers.js +165 -0
  162. package/dist/turbokartracers.js.map +1 -0
  163. package/dist/uhc.d.ts +55 -0
  164. package/dist/uhc.d.ts.map +1 -0
  165. package/dist/uhc.js +94 -0
  166. package/dist/uhc.js.map +1 -0
  167. package/dist/vampirez.d.ts +75 -0
  168. package/dist/vampirez.d.ts.map +1 -0
  169. package/dist/vampirez.js +104 -0
  170. package/dist/vampirez.js.map +1 -0
  171. package/dist/walls.d.ts +96 -0
  172. package/dist/walls.d.ts.map +1 -0
  173. package/dist/walls.js +122 -0
  174. package/dist/walls.js.map +1 -0
  175. package/dist/warlords.d.ts +229 -0
  176. package/dist/warlords.d.ts.map +1 -0
  177. package/dist/warlords.js +309 -0
  178. package/dist/warlords.js.map +1 -0
  179. package/package.json +55 -0
@@ -0,0 +1,126 @@
1
+ export interface SmashHeroesModeStats {
2
+ readonly games: number;
3
+ readonly wins: number;
4
+ readonly losses: number;
5
+ readonly kills: number;
6
+ readonly deaths: number;
7
+ readonly smashed: number;
8
+ readonly smasher: number;
9
+ readonly damageDealt: number;
10
+ }
11
+ export interface SmashHeroesPeriodStats {
12
+ readonly games: number;
13
+ readonly wins: number;
14
+ readonly losses: number;
15
+ readonly kills: number;
16
+ }
17
+ export interface SmashHeroesPeriodPair {
18
+ readonly a: SmashHeroesPeriodStats;
19
+ readonly b: SmashHeroesPeriodStats;
20
+ }
21
+ export interface SmashHeroesHeroLevelBooster {
22
+ readonly key: string;
23
+ readonly multiplier: number;
24
+ readonly value: number;
25
+ readonly plays: number;
26
+ }
27
+ export interface SmashHeroesAbilityModeStats {
28
+ readonly kills: number;
29
+ readonly smashed: number;
30
+ readonly smasher: number;
31
+ readonly damageDealt: number;
32
+ }
33
+ export interface SmashHeroesAbilityStats {
34
+ readonly overall: SmashHeroesAbilityModeStats;
35
+ readonly normal: SmashHeroesAbilityModeStats;
36
+ readonly twoVsTwo: SmashHeroesAbilityModeStats;
37
+ readonly threeVsThree: SmashHeroesAbilityModeStats;
38
+ readonly teams: SmashHeroesAbilityModeStats;
39
+ }
40
+ export interface SmashHeroesHeroModeStats {
41
+ readonly games: number;
42
+ readonly wins: number;
43
+ readonly losses: number;
44
+ readonly kills: number;
45
+ readonly deaths: number;
46
+ readonly smashed: number;
47
+ readonly smasher: number;
48
+ readonly damageDealt: number;
49
+ readonly winStreak: number;
50
+ }
51
+ export interface SmashHeroesHeroStats {
52
+ readonly hero: string;
53
+ readonly lastLevel: number;
54
+ readonly experience: number;
55
+ readonly prestige: number;
56
+ readonly overall: SmashHeroesHeroModeStats;
57
+ readonly normal: SmashHeroesHeroModeStats;
58
+ readonly twoVsTwo: SmashHeroesHeroModeStats;
59
+ readonly threeVsThree: SmashHeroesHeroModeStats;
60
+ readonly teams: SmashHeroesHeroModeStats;
61
+ readonly friendWins: number;
62
+ readonly friendWinsNormal: number;
63
+ readonly friendLosses: number;
64
+ readonly friendLossesNormal: number;
65
+ readonly oneVOneWins: number;
66
+ readonly oneVOneWinsNormal: number;
67
+ readonly oneVOneLosses: number;
68
+ readonly oneVOneLossesNormal: number;
69
+ readonly masterArmor: boolean;
70
+ readonly abilities: Readonly<Record<string, SmashHeroesAbilityStats>>;
71
+ }
72
+ export interface SmashHeroesLeaderboardSettings {
73
+ readonly resetType: string;
74
+ readonly mode: string;
75
+ }
76
+ export interface SmashHeroesStats {
77
+ readonly coins: number;
78
+ readonly smashLevel: number;
79
+ readonly smashLevelTotal: number;
80
+ readonly winStreak: number;
81
+ readonly activeClass: string;
82
+ readonly quits: number;
83
+ readonly smashPlayStreak: number;
84
+ readonly expiredBooster: boolean;
85
+ readonly expBoosterPurchases10Plays: number;
86
+ readonly expBoosterPurchases30Plays: number;
87
+ readonly expBoosterPurchases50Plays: number;
88
+ readonly expBoosterPurchases100Plays: number;
89
+ readonly friendsFirstGame: Date | null;
90
+ readonly friendsGamesDay: number;
91
+ readonly oneVJuanFirstGame: Date | null;
92
+ readonly oneVJuanGamesDay: number;
93
+ readonly games: number;
94
+ readonly wins: number;
95
+ readonly losses: number;
96
+ readonly kills: number;
97
+ readonly deaths: number;
98
+ readonly assists: number;
99
+ readonly assistsNormal: number;
100
+ readonly smashed: number;
101
+ readonly smasher: number;
102
+ readonly damageDealt: number;
103
+ readonly friendWins: number;
104
+ readonly friendWinsNormal: number;
105
+ readonly friendLosses: number;
106
+ readonly friendLossesNormal: number;
107
+ readonly oneVOneWins: number;
108
+ readonly oneVOneWinsNormal: number;
109
+ readonly oneVOneLosses: number;
110
+ readonly oneVOneLossesNormal: number;
111
+ readonly packages: readonly string[];
112
+ readonly classes: Readonly<Record<string, boolean>>;
113
+ readonly leaderboardSettings: SmashHeroesLeaderboardSettings;
114
+ readonly heroLevelBoosterActive: SmashHeroesHeroLevelBooster;
115
+ readonly votes: Readonly<Record<string, number>>;
116
+ readonly normal: SmashHeroesModeStats;
117
+ readonly twoVsTwo: SmashHeroesModeStats;
118
+ readonly threeVsThree: SmashHeroesModeStats;
119
+ readonly teams: SmashHeroesModeStats;
120
+ readonly monthly: SmashHeroesPeriodPair;
121
+ readonly weekly: SmashHeroesPeriodPair;
122
+ readonly heroes: Readonly<Record<string, SmashHeroesHeroStats>>;
123
+ }
124
+ /** Parses a player's Smash Heroes stats (`stats.SuperSmash`) into a typed object. */
125
+ export declare function parseSmashHeroes(stats: Record<string, unknown>): SmashHeroesStats | null;
126
+ //# sourceMappingURL=smashheroes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smashheroes.d.ts","sourceRoot":"","sources":["../src/smashheroes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSmashHeroes = parseSmashHeroes;
4
+ const common_1 = require("./common");
5
+ const MODE_SUFFIX = {
6
+ normal: "normal",
7
+ twoVsTwo: "2v2",
8
+ threeVsThree: "3v3",
9
+ teams: "teams",
10
+ };
11
+ const modeKey = (base, suffix) => suffix === "" ? base : `${base}_${suffix}`;
12
+ function parseMode(smashHeroes, suffix) {
13
+ return {
14
+ games: (0, common_1.num)(smashHeroes, modeKey("games", suffix)),
15
+ wins: (0, common_1.num)(smashHeroes, modeKey("wins", suffix)),
16
+ losses: (0, common_1.num)(smashHeroes, modeKey("losses", suffix)),
17
+ kills: (0, common_1.num)(smashHeroes, modeKey("kills", suffix)),
18
+ deaths: (0, common_1.num)(smashHeroes, modeKey("deaths", suffix)),
19
+ smashed: (0, common_1.num)(smashHeroes, modeKey("smashed", suffix)),
20
+ smasher: (0, common_1.num)(smashHeroes, modeKey("smasher", suffix)),
21
+ damageDealt: (0, common_1.num)(smashHeroes, modeKey("damage_dealt", suffix)),
22
+ };
23
+ }
24
+ function parsePeriod(smashHeroes, suffix) {
25
+ return {
26
+ games: (0, common_1.num)(smashHeroes, `games_${suffix}`),
27
+ wins: (0, common_1.num)(smashHeroes, `wins_${suffix}`),
28
+ losses: (0, common_1.num)(smashHeroes, `losses_${suffix}`),
29
+ kills: (0, common_1.num)(smashHeroes, `kills_${suffix}`),
30
+ };
31
+ }
32
+ function parseAbilityMode(ability, suffix) {
33
+ return {
34
+ kills: (0, common_1.num)(ability, modeKey("kills", suffix)),
35
+ smashed: (0, common_1.num)(ability, modeKey("smashed", suffix)),
36
+ smasher: (0, common_1.num)(ability, modeKey("smasher", suffix)),
37
+ damageDealt: (0, common_1.num)(ability, modeKey("damage_dealt", suffix)),
38
+ };
39
+ }
40
+ function parseAbility(ability) {
41
+ return {
42
+ overall: parseAbilityMode(ability, ""),
43
+ normal: parseAbilityMode(ability, "normal"),
44
+ twoVsTwo: parseAbilityMode(ability, "2v2"),
45
+ threeVsThree: parseAbilityMode(ability, "3v3"),
46
+ teams: parseAbilityMode(ability, "teams"),
47
+ };
48
+ }
49
+ function parseHeroMode(classStats, suffix) {
50
+ return {
51
+ games: (0, common_1.num)(classStats, modeKey("games", suffix)),
52
+ wins: (0, common_1.num)(classStats, modeKey("wins", suffix)),
53
+ losses: (0, common_1.num)(classStats, modeKey("losses", suffix)),
54
+ kills: (0, common_1.num)(classStats, modeKey("kills", suffix)),
55
+ deaths: (0, common_1.num)(classStats, modeKey("deaths", suffix)),
56
+ smashed: (0, common_1.num)(classStats, modeKey("smashed", suffix)),
57
+ smasher: (0, common_1.num)(classStats, modeKey("smasher", suffix)),
58
+ damageDealt: (0, common_1.num)(classStats, modeKey("damage_dealt", suffix)),
59
+ winStreak: (0, common_1.num)(classStats, modeKey("win_streak", suffix)),
60
+ };
61
+ }
62
+ function parseHero(smashHeroes, hero) {
63
+ const classStats = (0, common_1.obj)((0, common_1.obj)(smashHeroes, "class_stats"), hero);
64
+ const abilities = {};
65
+ for (const [name, value] of Object.entries(classStats)) {
66
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
67
+ abilities[name] = parseAbility(value);
68
+ }
69
+ }
70
+ return {
71
+ hero,
72
+ lastLevel: (0, common_1.num)(smashHeroes, `lastLevel_${hero}`),
73
+ experience: (0, common_1.num)(smashHeroes, `xp_${hero}`),
74
+ prestige: (0, common_1.num)(smashHeroes, `pg_${hero}`),
75
+ overall: parseHeroMode(classStats, ""),
76
+ normal: parseHeroMode(classStats, "normal"),
77
+ twoVsTwo: parseHeroMode(classStats, "2v2"),
78
+ threeVsThree: parseHeroMode(classStats, "3v3"),
79
+ teams: parseHeroMode(classStats, "teams"),
80
+ friendWins: (0, common_1.num)(classStats, "friend_wins"),
81
+ friendWinsNormal: (0, common_1.num)(classStats, "friend_wins_normal"),
82
+ friendLosses: (0, common_1.num)(classStats, "friend_losses"),
83
+ friendLossesNormal: (0, common_1.num)(classStats, "friend_losses_normal"),
84
+ oneVOneWins: (0, common_1.num)(classStats, "one_v_one_wins"),
85
+ oneVOneWinsNormal: (0, common_1.num)(classStats, "one_v_one_wins_normal"),
86
+ oneVOneLosses: (0, common_1.num)(classStats, "one_v_one_losses"),
87
+ oneVOneLossesNormal: (0, common_1.num)(classStats, "one_v_one_losses_normal"),
88
+ masterArmor: (0, common_1.bool)(smashHeroes, `masterArmor_${hero}`),
89
+ abilities,
90
+ };
91
+ }
92
+ function parsePackages(smashHeroes) {
93
+ const value = smashHeroes.packages;
94
+ return Array.isArray(value)
95
+ ? value.filter((entry) => typeof entry === "string")
96
+ : [];
97
+ }
98
+ function parseHeroLevelBooster(smashHeroes) {
99
+ const booster = (0, common_1.obj)(smashHeroes, "hero_level_booster_active");
100
+ return {
101
+ key: (0, common_1.str)(booster, "key"),
102
+ multiplier: (0, common_1.num)(booster, "multiplier"),
103
+ value: (0, common_1.num)(booster, "value"),
104
+ plays: (0, common_1.num)(booster, "plays"),
105
+ };
106
+ }
107
+ function parseClasses(smashHeroes) {
108
+ const classes = {};
109
+ for (const [name, value] of Object.entries((0, common_1.obj)(smashHeroes, "classes"))) {
110
+ classes[name] = value === true;
111
+ }
112
+ return classes;
113
+ }
114
+ function parseLeaderboardSettings(smashHeroes) {
115
+ const settings = (0, common_1.obj)(smashHeroes, "leaderboardSettings");
116
+ return {
117
+ resetType: (0, common_1.str)(settings, "resetType"),
118
+ mode: (0, common_1.str)(settings, "mode"),
119
+ };
120
+ }
121
+ function parseVotes(smashHeroes) {
122
+ const votes = {};
123
+ for (const [name, value] of Object.entries(smashHeroes)) {
124
+ if (name.startsWith("votes_") && typeof value === "number") {
125
+ votes[name.slice("votes_".length)] = value;
126
+ }
127
+ }
128
+ return votes;
129
+ }
130
+ const HERO_NAME_KEY = /^(?:lastLevel|xp|pg|masterArmor)_(.+)$/;
131
+ function collectHeroNames(smashHeroes) {
132
+ const names = new Set(Object.keys((0, common_1.obj)(smashHeroes, "class_stats")));
133
+ for (const key of Object.keys(smashHeroes)) {
134
+ const match = HERO_NAME_KEY.exec(key);
135
+ if (match) {
136
+ names.add(match[1]);
137
+ }
138
+ }
139
+ return [...names].sort((a, b) => a.localeCompare(b));
140
+ }
141
+ /** Parses a player's Smash Heroes stats (`stats.SuperSmash`) into a typed object. */
142
+ function parseSmashHeroes(stats) {
143
+ if (typeof stats !== "object" || stats === null) {
144
+ return null;
145
+ }
146
+ const modes = {};
147
+ for (const [name, suffix] of Object.entries(MODE_SUFFIX)) {
148
+ modes[name] = parseMode(stats, suffix);
149
+ }
150
+ const heroes = {};
151
+ for (const hero of collectHeroNames(stats)) {
152
+ heroes[hero] = parseHero(stats, hero);
153
+ }
154
+ return {
155
+ coins: (0, common_1.num)(stats, "coins"),
156
+ smashLevel: (0, common_1.num)(stats, "smashLevel"),
157
+ smashLevelTotal: (0, common_1.num)(stats, "smash_level_total"),
158
+ winStreak: (0, common_1.num)(stats, "win_streak"),
159
+ activeClass: (0, common_1.str)(stats, "active_class"),
160
+ quits: (0, common_1.num)(stats, "quits"),
161
+ smashPlayStreak: (0, common_1.num)(stats, "smash_play_streak"),
162
+ expiredBooster: stats.expired_booster === true,
163
+ expBoosterPurchases10Plays: (0, common_1.num)(stats, "expBooster_purchases_10_plays"),
164
+ expBoosterPurchases30Plays: (0, common_1.num)(stats, "expBooster_purchases_30_plays"),
165
+ expBoosterPurchases50Plays: (0, common_1.num)(stats, "expBooster_purchases_50_plays"),
166
+ expBoosterPurchases100Plays: (0, common_1.num)(stats, "expBooster_purchases_100_plays"),
167
+ friendsFirstGame: (0, common_1.date)(stats, "FRIENDS_firstGame"),
168
+ friendsGamesDay: (0, common_1.num)(stats, "FRIENDS_gamesDay"),
169
+ oneVJuanFirstGame: (0, common_1.date)(stats, "ONE_V_JUAN_firstGame"),
170
+ oneVJuanGamesDay: (0, common_1.num)(stats, "ONE_V_JUAN_gamesDay"),
171
+ games: (0, common_1.num)(stats, "games"),
172
+ wins: (0, common_1.num)(stats, "wins"),
173
+ losses: (0, common_1.num)(stats, "losses"),
174
+ kills: (0, common_1.num)(stats, "kills"),
175
+ deaths: (0, common_1.num)(stats, "deaths"),
176
+ assists: (0, common_1.num)(stats, "assists"),
177
+ assistsNormal: (0, common_1.num)(stats, "assists_normal"),
178
+ smashed: (0, common_1.num)(stats, "smashed"),
179
+ smasher: (0, common_1.num)(stats, "smasher"),
180
+ damageDealt: (0, common_1.num)(stats, "damage_dealt"),
181
+ friendWins: (0, common_1.num)(stats, "friend_wins"),
182
+ friendWinsNormal: (0, common_1.num)(stats, "friend_wins_normal"),
183
+ friendLosses: (0, common_1.num)(stats, "friend_losses"),
184
+ friendLossesNormal: (0, common_1.num)(stats, "friend_losses_normal"),
185
+ oneVOneWins: (0, common_1.num)(stats, "one_v_one_wins"),
186
+ oneVOneWinsNormal: (0, common_1.num)(stats, "one_v_one_wins_normal"),
187
+ oneVOneLosses: (0, common_1.num)(stats, "one_v_one_losses"),
188
+ oneVOneLossesNormal: (0, common_1.num)(stats, "one_v_one_losses_normal"),
189
+ packages: parsePackages(stats),
190
+ classes: parseClasses(stats),
191
+ leaderboardSettings: parseLeaderboardSettings(stats),
192
+ heroLevelBoosterActive: parseHeroLevelBooster(stats),
193
+ votes: parseVotes(stats),
194
+ ...modes,
195
+ monthly: {
196
+ a: parsePeriod(stats, "monthly_a"),
197
+ b: parsePeriod(stats, "monthly_b"),
198
+ },
199
+ weekly: {
200
+ a: parsePeriod(stats, "weekly_a"),
201
+ b: parsePeriod(stats, "weekly_b"),
202
+ },
203
+ heroes,
204
+ };
205
+ }
206
+ //# sourceMappingURL=smashheroes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smashheroes.js","sourceRoot":"","sources":["../src/smashheroes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export interface StaticBooster {
2
+ readonly id: string;
3
+ readonly purchaserUuid: string;
4
+ readonly amount: number;
5
+ readonly originalLength: number;
6
+ readonly length: number;
7
+ readonly gameType: number;
8
+ readonly dateActivated: Date | null;
9
+ readonly stacked: boolean | readonly string[];
10
+ }
11
+ /** Parses the network boosters (`/boosters`) into a typed object. */
12
+ export declare function parseBoosters(boosters: unknown[]): StaticBooster[];
13
+ export interface StaticLeaderboard {
14
+ readonly path: string;
15
+ readonly prefix: string;
16
+ readonly title: string;
17
+ readonly location: string;
18
+ readonly count: number;
19
+ readonly leaders: readonly string[];
20
+ }
21
+ /** Parses the leaderboards (`/leaderboards`) into a typed object. */
22
+ export declare function parseLeaderboards(raw: Record<string, unknown>): Record<string, StaticLeaderboard[]>;
23
+ export interface StaticGameCount {
24
+ readonly players: number;
25
+ readonly modes: Record<string, number>;
26
+ }
27
+ export interface StaticGameCounts {
28
+ readonly playerCount: number;
29
+ readonly games: Record<string, StaticGameCount>;
30
+ }
31
+ /** Parses the player counts (`/counts`) into a typed object. */
32
+ export declare function parseGameCounts(raw: Record<string, unknown>): StaticGameCounts;
33
+ export interface StaticWatchdogStats {
34
+ readonly watchdogLastMinute: number;
35
+ readonly watchdogDaily: number;
36
+ readonly watchdogTotal: number;
37
+ readonly staffDaily: number;
38
+ readonly staffTotal: number;
39
+ }
40
+ /** Parses the punishment stats (`/punishmentstats`) into a typed object. */
41
+ export declare function parseWatchdogStats(raw: Record<string, unknown>): StaticWatchdogStats;
42
+ //# sourceMappingURL=static.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAAC;CAC/C;AAYD,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAmBlE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAUD,qEAAqE;AACrE,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAwBrC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACjD;AAYD,gEAAgE;AAChE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,gBAAgB,CAgBlB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,mBAAmB,CAQrB"}
package/dist/static.js ADDED
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseBoosters = parseBoosters;
4
+ exports.parseLeaderboards = parseLeaderboards;
5
+ exports.parseGameCounts = parseGameCounts;
6
+ exports.parseWatchdogStats = parseWatchdogStats;
7
+ const common_1 = require("./common");
8
+ function parseStacked(raw) {
9
+ const value = raw.stacked;
10
+ if (Array.isArray(value)) {
11
+ return value.filter((entry) => typeof entry === "string");
12
+ }
13
+ return value === true;
14
+ }
15
+ /** Parses the network boosters (`/boosters`) into a typed object. */
16
+ function parseBoosters(boosters) {
17
+ const result = [];
18
+ for (const entry of boosters) {
19
+ if (typeof entry !== "object" || entry === null || Array.isArray(entry)) {
20
+ continue;
21
+ }
22
+ const raw = entry;
23
+ result.push({
24
+ id: (0, common_1.str)(raw, "_id"),
25
+ purchaserUuid: (0, common_1.str)(raw, "purchaserUuid"),
26
+ amount: (0, common_1.num)(raw, "amount"),
27
+ originalLength: (0, common_1.num)(raw, "originalLength"),
28
+ length: (0, common_1.num)(raw, "length"),
29
+ gameType: (0, common_1.num)(raw, "gameType"),
30
+ dateActivated: (0, common_1.date)(raw, "dateActivated"),
31
+ stacked: parseStacked(raw),
32
+ });
33
+ }
34
+ return result;
35
+ }
36
+ function parseLeaders(raw) {
37
+ const value = raw.leaders;
38
+ if (!Array.isArray(value)) {
39
+ return [];
40
+ }
41
+ return value.filter((leader) => typeof leader === "string");
42
+ }
43
+ /** Parses the leaderboards (`/leaderboards`) into a typed object. */
44
+ function parseLeaderboards(raw) {
45
+ const result = {};
46
+ for (const [game, list] of Object.entries((0, common_1.obj)(raw, "leaderboards"))) {
47
+ if (!Array.isArray(list)) {
48
+ continue;
49
+ }
50
+ const entries = [];
51
+ for (const entry of list) {
52
+ if (typeof entry !== "object" || entry === null || Array.isArray(entry)) {
53
+ continue;
54
+ }
55
+ const board = entry;
56
+ entries.push({
57
+ path: (0, common_1.str)(board, "path"),
58
+ prefix: (0, common_1.str)(board, "prefix"),
59
+ title: (0, common_1.str)(board, "title"),
60
+ location: (0, common_1.str)(board, "location"),
61
+ count: (0, common_1.num)(board, "count"),
62
+ leaders: parseLeaders(board),
63
+ });
64
+ }
65
+ result[game] = entries;
66
+ }
67
+ return result;
68
+ }
69
+ function parseModes(raw) {
70
+ const modes = {};
71
+ for (const [mode, count] of Object.entries((0, common_1.obj)(raw, "modes"))) {
72
+ if (typeof count === "number") {
73
+ modes[mode] = count;
74
+ }
75
+ }
76
+ return modes;
77
+ }
78
+ /** Parses the player counts (`/counts`) into a typed object. */
79
+ function parseGameCounts(raw) {
80
+ const games = {};
81
+ for (const [game, value] of Object.entries((0, common_1.obj)(raw, "games"))) {
82
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
83
+ continue;
84
+ }
85
+ const entry = value;
86
+ games[game] = {
87
+ players: (0, common_1.num)(entry, "players"),
88
+ modes: parseModes(entry),
89
+ };
90
+ }
91
+ return {
92
+ playerCount: (0, common_1.num)(raw, "playerCount"),
93
+ games,
94
+ };
95
+ }
96
+ /** Parses the punishment stats (`/punishmentstats`) into a typed object. */
97
+ function parseWatchdogStats(raw) {
98
+ return {
99
+ watchdogLastMinute: (0, common_1.num)(raw, "watchdog_lastMinute"),
100
+ watchdogDaily: (0, common_1.num)(raw, "watchdog_rollingDaily"),
101
+ watchdogTotal: (0, common_1.num)(raw, "watchdog_total"),
102
+ staffDaily: (0, common_1.num)(raw, "staff_rollingDaily"),
103
+ staffTotal: (0, common_1.num)(raw, "staff_total"),
104
+ };
105
+ }
106
+ //# sourceMappingURL=static.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static.js","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface PlayerStatus {
2
+ readonly online: boolean;
3
+ readonly gameType: string | null;
4
+ readonly mode: string | null;
5
+ readonly map: string | null;
6
+ }
7
+ /** Parses a player's status (`/status`) into a typed object. */
8
+ export declare function parseStatus(session: Record<string, unknown>): PlayerStatus;
9
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAUD,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAO1E"}
package/dist/status.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseStatus = parseStatus;
4
+ const common_1 = require("./common");
5
+ function nullableString(session, key) {
6
+ const value = (0, common_1.str)(session, key);
7
+ return value === "" ? null : value;
8
+ }
9
+ /** Parses a player's status (`/status`) into a typed object. */
10
+ function parseStatus(session) {
11
+ return {
12
+ online: (0, common_1.bool)(session, "online"),
13
+ gameType: nullableString(session, "gameType"),
14
+ mode: nullableString(session, "mode"),
15
+ map: nullableString(session, "map"),
16
+ };
17
+ }
18
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":";;AAkBA,kCAOC;AAzBD,qCAAqC;AASrC,SAAS,cAAc,CACrB,OAAgC,EAChC,GAAW;IAEX,MAAM,KAAK,GAAG,IAAA,YAAG,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAChC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,CAAC;AAED,gEAAgE;AAChE,SAAgB,WAAW,CAAC,OAAgC;IAC1D,OAAO;QACL,MAAM,EAAE,IAAA,aAAI,EAAC,OAAO,EAAE,QAAQ,CAAC;QAC/B,QAAQ,EAAE,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC;QAC7C,IAAI,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC;QACrC,GAAG,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;KACpC,CAAC;AACJ,CAAC"}