@wise-old-man/utils 1.0.9 → 1.0.10
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.
- package/dist/{src → lib}/competitions.d.ts +0 -0
- package/dist/{src → lib}/competitions.js +0 -0
- package/dist/{src → lib}/competitions.js.map +1 -1
- package/dist/{src → lib}/countries.d.ts +0 -0
- package/dist/{src → lib}/countries.js +0 -0
- package/dist/{src → lib}/countries.js.map +1 -1
- package/dist/{src → lib}/experience.d.ts +0 -0
- package/dist/{src → lib}/experience.js +0 -0
- package/dist/{src → lib}/experience.js.map +1 -1
- package/dist/{src → lib}/groups.d.ts +0 -0
- package/dist/{src → lib}/groups.js +0 -0
- package/dist/{src → lib}/groups.js.map +1 -1
- package/dist/{src → lib}/index.d.ts +0 -0
- package/dist/{src → lib}/index.js +0 -0
- package/dist/{src → lib}/index.js.map +1 -1
- package/dist/{src → lib}/metrics.d.ts +0 -0
- package/dist/{src → lib}/metrics.js +0 -0
- package/dist/{src → lib}/metrics.js.map +1 -1
- package/dist/{src → lib}/numbers.d.ts +0 -0
- package/dist/{src → lib}/numbers.js +0 -0
- package/dist/{src → lib}/numbers.js.map +1 -1
- package/dist/{src → lib}/periods.d.ts +0 -0
- package/dist/{src → lib}/periods.js +0 -0
- package/dist/{src → lib}/periods.js.map +1 -1
- package/dist/{src → lib}/players.d.ts +0 -0
- package/dist/{src → lib}/players.js +0 -0
- package/dist/{src → lib}/players.js.map +1 -1
- package/dist/{src → lib}/strings.d.ts +0 -0
- package/dist/{src → lib}/strings.js +0 -0
- package/dist/{src → lib}/strings.js.map +1 -1
- package/package.json +6 -3
- package/.prettierrc +0 -7
- package/dist/jest.config.d.ts +0 -3
- package/dist/jest.config.js +0 -10
- package/dist/jest.config.js.map +0 -1
- package/jest.config.ts +0 -10
- package/src/competitions.ts +0 -54
- package/src/countries.ts +0 -275
- package/src/experience.ts +0 -86
- package/src/groups.ts +0 -556
- package/src/index.ts +0 -9
- package/src/metrics.ts +0 -628
- package/src/numbers.ts +0 -5
- package/src/periods.ts +0 -67
- package/src/players.ts +0 -77
- package/src/strings.ts +0 -31
- package/tests/competitions.test.ts +0 -32
- package/tests/countries.test.ts +0 -22
- package/tests/experience.test.ts +0 -23
- package/tests/groups.test.ts +0 -14
- package/tests/metrics.test.ts +0 -113
- package/tests/numbers.test.ts +0 -9
- package/tests/periods.test.ts +0 -49
- package/tests/players.test.ts +0 -44
- package/tests/strings.test.ts +0 -27
- package/tsconfig.json +0 -16
package/src/metrics.ts
DELETED
|
@@ -1,628 +0,0 @@
|
|
|
1
|
-
import { mapValues, capitalize } from 'lodash';
|
|
2
|
-
|
|
3
|
-
enum Skill {
|
|
4
|
-
OVERALL = 'overall',
|
|
5
|
-
ATTACK = 'attack',
|
|
6
|
-
DEFENCE = 'defence',
|
|
7
|
-
STRENGTH = 'strength',
|
|
8
|
-
HITPOINTS = 'hitpoints',
|
|
9
|
-
RANGED = 'ranged',
|
|
10
|
-
PRAYER = 'prayer',
|
|
11
|
-
MAGIC = 'magic',
|
|
12
|
-
COOKING = 'cooking',
|
|
13
|
-
WOODCUTTING = 'woodcutting',
|
|
14
|
-
FLETCHING = 'fletching',
|
|
15
|
-
FISHING = 'fishing',
|
|
16
|
-
FIREMAKING = 'firemaking',
|
|
17
|
-
CRAFTING = 'crafting',
|
|
18
|
-
SMITHING = 'smithing',
|
|
19
|
-
MINING = 'mining',
|
|
20
|
-
HERBLORE = 'herblore',
|
|
21
|
-
AGILITY = 'agility',
|
|
22
|
-
THIEVING = 'thieving',
|
|
23
|
-
SLAYER = 'slayer',
|
|
24
|
-
FARMING = 'farming',
|
|
25
|
-
RUNECRAFTING = 'runecrafting',
|
|
26
|
-
HUNTER = 'hunter',
|
|
27
|
-
CONSTRUCTION = 'construction'
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
enum Boss {
|
|
31
|
-
ABYSSAL_SIRE = 'abyssal_sire',
|
|
32
|
-
ALCHEMICAL_HYDRA = 'alchemical_hydra',
|
|
33
|
-
BARROWS_CHESTS = 'barrows_chests',
|
|
34
|
-
BRYOPHYTA = 'bryophyta',
|
|
35
|
-
CALLISTO = 'callisto',
|
|
36
|
-
CERBERUS = 'cerberus',
|
|
37
|
-
CHAMBERS_OF_XERIC = 'chambers_of_xeric',
|
|
38
|
-
CHAMBERS_OF_XERIC_CM = 'chambers_of_xeric_challenge_mode',
|
|
39
|
-
CHAOS_ELEMENTAL = 'chaos_elemental',
|
|
40
|
-
CHAOS_FANATIC = 'chaos_fanatic',
|
|
41
|
-
COMMANDER_ZILYANA = 'commander_zilyana',
|
|
42
|
-
CORPOREAL_BEAST = 'corporeal_beast',
|
|
43
|
-
CRAZY_ARCHAEOLOGIST = 'crazy_archaeologist',
|
|
44
|
-
DAGANNOTH_PRIME = 'dagannoth_prime',
|
|
45
|
-
DAGANNOTH_REX = 'dagannoth_rex',
|
|
46
|
-
DAGANNOTH_SUPREME = 'dagannoth_supreme',
|
|
47
|
-
DERANGED_ARCHAEOLOGIST = 'deranged_archaeologist',
|
|
48
|
-
GENERAL_GRAARDOR = 'general_graardor',
|
|
49
|
-
GIANT_MOLE = 'giant_mole',
|
|
50
|
-
GROTESQUE_GUARDIANS = 'grotesque_guardians',
|
|
51
|
-
HESPORI = 'hespori',
|
|
52
|
-
KALPHITE_QUEEN = 'kalphite_queen',
|
|
53
|
-
KING_BLACK_DRAGON = 'king_black_dragon',
|
|
54
|
-
KRAKEN = 'kraken',
|
|
55
|
-
KREEARRA = 'kreearra',
|
|
56
|
-
KRIL_TSUTSAROTH = 'kril_tsutsaroth',
|
|
57
|
-
MIMIC = 'mimic',
|
|
58
|
-
NIGHTMARE = 'nightmare',
|
|
59
|
-
PHOSANIS_NIGHTMARE = 'phosanis_nightmare',
|
|
60
|
-
OBOR = 'obor',
|
|
61
|
-
SARACHNIS = 'sarachnis',
|
|
62
|
-
SCORPIA = 'scorpia',
|
|
63
|
-
SKOTIZO = 'skotizo',
|
|
64
|
-
TEMPOROSS = 'tempoross',
|
|
65
|
-
THE_GAUNTLET = 'the_gauntlet',
|
|
66
|
-
THE_CORRUPTED_GAUNTLET = 'the_corrupted_gauntlet',
|
|
67
|
-
THEATRE_OF_BLOOD = 'theatre_of_blood',
|
|
68
|
-
THEATRE_OF_BLOOD_HARD_MODE = 'theatre_of_blood_hard_mode',
|
|
69
|
-
THERMONUCLEAR_SMOKE_DEVIL = 'thermonuclear_smoke_devil',
|
|
70
|
-
TZKAL_ZUK = 'tzkal_zuk',
|
|
71
|
-
TZTOK_JAD = 'tztok_jad',
|
|
72
|
-
VENENATIS = 'venenatis',
|
|
73
|
-
VETION = 'vetion',
|
|
74
|
-
VORKATH = 'vorkath',
|
|
75
|
-
WINTERTODT = 'wintertodt',
|
|
76
|
-
ZALCANO = 'zalcano',
|
|
77
|
-
ZULRAH = 'zulrah'
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
enum Activity {
|
|
81
|
-
LEAGUE_POINTS = 'league_points',
|
|
82
|
-
BOUNTY_HUNTER_HUNTER = 'bounty_hunter_hunter',
|
|
83
|
-
BOUNTY_HUNTER_ROGUE = 'bounty_hunter_rogue',
|
|
84
|
-
CLUE_SCROLLS_ALL = 'clue_scrolls_all',
|
|
85
|
-
CLUE_SCROLLS_BEGINNER = 'clue_scrolls_beginner',
|
|
86
|
-
CLUE_SCROLLS_EASY = 'clue_scrolls_easy',
|
|
87
|
-
CLUE_SCROLLS_MEDIUM = 'clue_scrolls_medium',
|
|
88
|
-
CLUE_SCROLLS_HARD = 'clue_scrolls_hard',
|
|
89
|
-
CLUE_SCROLLS_ELITE = 'clue_scrolls_elite',
|
|
90
|
-
CLUE_SCROLLS_MASTER = 'clue_scrolls_master',
|
|
91
|
-
LAST_MAN_STANDING = 'last_man_standing',
|
|
92
|
-
SOUL_WARS_ZEAL = 'soul_wars_zeal'
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
enum VirtualMetric {
|
|
96
|
-
EHP = 'ehp',
|
|
97
|
-
EHB = 'ehb'
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
enum MetricType {
|
|
101
|
-
SKILL = 'skill',
|
|
102
|
-
BOSS = 'boss',
|
|
103
|
-
ACTIVITY = 'activity',
|
|
104
|
-
VIRTUAL = 'virtual'
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
enum MetricMeasure {
|
|
108
|
-
EXPERIENCE = 'experience',
|
|
109
|
-
KILLS = 'kills',
|
|
110
|
-
SCORE = 'score',
|
|
111
|
-
VALUE = 'value'
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
const SkillProps = mapValues(
|
|
115
|
-
{
|
|
116
|
-
[Skill.OVERALL]: { name: 'Overall', isCombat: false, isMembers: false },
|
|
117
|
-
[Skill.ATTACK]: { name: 'Attack', isCombat: true, isMembers: false },
|
|
118
|
-
[Skill.DEFENCE]: { name: 'Defence', isCombat: true, isMembers: false },
|
|
119
|
-
[Skill.STRENGTH]: { name: 'Strength', isCombat: true, isMembers: false },
|
|
120
|
-
[Skill.HITPOINTS]: { name: 'Hitpoints', isCombat: true, isMembers: false },
|
|
121
|
-
[Skill.RANGED]: { name: 'Ranged', isCombat: true, isMembers: false },
|
|
122
|
-
[Skill.PRAYER]: { name: 'Prayer', isCombat: true, isMembers: false },
|
|
123
|
-
[Skill.MAGIC]: { name: 'Magic', isCombat: true, isMembers: false },
|
|
124
|
-
[Skill.COOKING]: { name: 'Cooking', isCombat: false, isMembers: false },
|
|
125
|
-
[Skill.WOODCUTTING]: { name: 'Woodcutting', isCombat: false, isMembers: false },
|
|
126
|
-
[Skill.FLETCHING]: { name: 'Fletching', isCombat: false, isMembers: true },
|
|
127
|
-
[Skill.FISHING]: { name: 'Fishing', isCombat: false, isMembers: false },
|
|
128
|
-
[Skill.FIREMAKING]: { name: 'Firemaking', isCombat: false, isMembers: false },
|
|
129
|
-
[Skill.CRAFTING]: { name: 'Crafting', isCombat: false, isMembers: false },
|
|
130
|
-
[Skill.SMITHING]: { name: 'Smithing', isCombat: false, isMembers: false },
|
|
131
|
-
[Skill.MINING]: { name: 'Mining', isCombat: false, isMembers: false },
|
|
132
|
-
[Skill.HERBLORE]: { name: 'Herblore', isCombat: false, isMembers: true },
|
|
133
|
-
[Skill.AGILITY]: { name: 'Agility', isCombat: false, isMembers: true },
|
|
134
|
-
[Skill.THIEVING]: { name: 'Thieving', isCombat: false, isMembers: true },
|
|
135
|
-
[Skill.SLAYER]: { name: 'Slayer', isCombat: false, isMembers: true },
|
|
136
|
-
[Skill.FARMING]: { name: 'Farming', isCombat: false, isMembers: true },
|
|
137
|
-
[Skill.RUNECRAFTING]: { name: 'Runecrafting', isCombat: false, isMembers: false },
|
|
138
|
-
[Skill.HUNTER]: { name: 'Hunter', isCombat: false, isMembers: true },
|
|
139
|
-
[Skill.CONSTRUCTION]: { name: 'Construction', isCombat: false, isMembers: false }
|
|
140
|
-
},
|
|
141
|
-
(props, key) => ({ ...props, key, type: MetricType.SKILL, measure: MetricMeasure.EXPERIENCE })
|
|
142
|
-
);
|
|
143
|
-
|
|
144
|
-
const BossProps = mapValues(
|
|
145
|
-
{
|
|
146
|
-
[Boss.ABYSSAL_SIRE]: { name: 'Abyssal Sire', minimumKc: 50, isMembers: true },
|
|
147
|
-
[Boss.ALCHEMICAL_HYDRA]: { name: 'Alchemical Hydra', minimumKc: 50, isMembers: true },
|
|
148
|
-
[Boss.BARROWS_CHESTS]: { name: 'Barrows Chests', minimumKc: 50, isMembers: true },
|
|
149
|
-
[Boss.BRYOPHYTA]: { name: 'Bryophyta', minimumKc: 10, isMembers: false },
|
|
150
|
-
[Boss.CALLISTO]: { name: 'Callisto', minimumKc: 50, isMembers: true },
|
|
151
|
-
[Boss.CERBERUS]: { name: 'Cerberus', minimumKc: 50, isMembers: true },
|
|
152
|
-
[Boss.CHAMBERS_OF_XERIC]: { name: 'Chambers Of Xeric', minimumKc: 50, isMembers: true },
|
|
153
|
-
[Boss.CHAMBERS_OF_XERIC_CM]: { name: 'Chambers Of Xeric (CM)', minimumKc: 10, isMembers: true },
|
|
154
|
-
[Boss.CHAOS_ELEMENTAL]: { name: 'Chaos Elemental', minimumKc: 50, isMembers: true },
|
|
155
|
-
[Boss.CHAOS_FANATIC]: { name: 'Chaos Fanatic', minimumKc: 50, isMembers: true },
|
|
156
|
-
[Boss.COMMANDER_ZILYANA]: { name: 'Commander Zilyana', minimumKc: 50, isMembers: true },
|
|
157
|
-
[Boss.CORPOREAL_BEAST]: { name: 'Corporeal Beast', minimumKc: 50, isMembers: true },
|
|
158
|
-
[Boss.CRAZY_ARCHAEOLOGIST]: { name: 'Crazy Archaeologist', minimumKc: 50, isMembers: true },
|
|
159
|
-
[Boss.DAGANNOTH_PRIME]: { name: 'Dagannoth Prime', minimumKc: 50, isMembers: true },
|
|
160
|
-
[Boss.DAGANNOTH_REX]: { name: 'Dagannoth Rex', minimumKc: 50, isMembers: true },
|
|
161
|
-
[Boss.DAGANNOTH_SUPREME]: { name: 'Dagannoth Supreme', minimumKc: 50, isMembers: true },
|
|
162
|
-
[Boss.DERANGED_ARCHAEOLOGIST]: { name: 'Deranged Archaeologist', minimumKc: 50, isMembers: true },
|
|
163
|
-
[Boss.GENERAL_GRAARDOR]: { name: 'General Graardor', minimumKc: 50, isMembers: true },
|
|
164
|
-
[Boss.GIANT_MOLE]: { name: 'Giant Mole', minimumKc: 50, isMembers: true },
|
|
165
|
-
[Boss.GROTESQUE_GUARDIANS]: { name: 'Grotesque Guardians', minimumKc: 50, isMembers: true },
|
|
166
|
-
[Boss.HESPORI]: { name: 'Hespori', minimumKc: 10, isMembers: true },
|
|
167
|
-
[Boss.KALPHITE_QUEEN]: { name: 'Kalphite Queen', minimumKc: 50, isMembers: true },
|
|
168
|
-
[Boss.KING_BLACK_DRAGON]: { name: 'King Black Dragon', minimumKc: 50, isMembers: true },
|
|
169
|
-
[Boss.KRAKEN]: { name: 'Kraken', minimumKc: 50, isMembers: true },
|
|
170
|
-
[Boss.KREEARRA]: { name: "Kree'Arra", minimumKc: 50, isMembers: true },
|
|
171
|
-
[Boss.KRIL_TSUTSAROTH]: { name: "K'ril Tsutsaroth", minimumKc: 50, isMembers: true },
|
|
172
|
-
[Boss.MIMIC]: { name: 'Mimic', minimumKc: 2, isMembers: true },
|
|
173
|
-
[Boss.NIGHTMARE]: { name: 'Nightmare', minimumKc: 50, isMembers: true },
|
|
174
|
-
[Boss.PHOSANIS_NIGHTMARE]: { name: "Phosani's Nightmare", minimumKc: 50, isMembers: true },
|
|
175
|
-
[Boss.OBOR]: { name: 'Obor', minimumKc: 10, isMembers: false },
|
|
176
|
-
[Boss.SARACHNIS]: { name: 'Sarachnis', minimumKc: 50, isMembers: true },
|
|
177
|
-
[Boss.SCORPIA]: { name: 'Scorpia', minimumKc: 50, isMembers: true },
|
|
178
|
-
[Boss.SKOTIZO]: { name: 'Skotizo', minimumKc: 10, isMembers: true },
|
|
179
|
-
[Boss.TEMPOROSS]: { name: 'Tempoross', minimumKc: 50, isMembers: true },
|
|
180
|
-
[Boss.THE_GAUNTLET]: { name: 'The Gauntlet', minimumKc: 50, isMembers: true },
|
|
181
|
-
[Boss.THE_CORRUPTED_GAUNTLET]: { name: 'The Corrupted Gauntlet', minimumKc: 10, isMembers: true },
|
|
182
|
-
[Boss.THEATRE_OF_BLOOD]: { name: 'Theatre Of Blood', minimumKc: 50, isMembers: true },
|
|
183
|
-
[Boss.THEATRE_OF_BLOOD_HARD_MODE]: { name: 'Theatre Of Blood (HM)', minimumKc: 50, isMembers: true },
|
|
184
|
-
[Boss.THERMONUCLEAR_SMOKE_DEVIL]: { name: 'Thermonuclear Smoke Devil', minimumKc: 50, isMembers: true },
|
|
185
|
-
[Boss.TZKAL_ZUK]: { name: 'TzKal-Zuk', minimumKc: 2, isMembers: true },
|
|
186
|
-
[Boss.TZTOK_JAD]: { name: 'TzTok-Jad', minimumKc: 10, isMembers: true },
|
|
187
|
-
[Boss.VENENATIS]: { name: 'Venenatis', minimumKc: 50, isMembers: true },
|
|
188
|
-
[Boss.VETION]: { name: "Vet'ion", minimumKc: 50, isMembers: true },
|
|
189
|
-
[Boss.VORKATH]: { name: 'Vorkath', minimumKc: 50, isMembers: true },
|
|
190
|
-
[Boss.WINTERTODT]: { name: 'Wintertodt', minimumKc: 50, isMembers: true },
|
|
191
|
-
[Boss.ZALCANO]: { name: 'Zalcano', minimumKc: 50, isMembers: true },
|
|
192
|
-
[Boss.ZULRAH]: { name: 'Zulrah', minimumKc: 50, isMembers: true }
|
|
193
|
-
},
|
|
194
|
-
(props, key) => ({ ...props, key, type: MetricType.BOSS, measure: MetricMeasure.KILLS })
|
|
195
|
-
);
|
|
196
|
-
|
|
197
|
-
const ActivityProps = mapValues(
|
|
198
|
-
{
|
|
199
|
-
[Activity.LEAGUE_POINTS]: { name: 'League Points' },
|
|
200
|
-
[Activity.BOUNTY_HUNTER_HUNTER]: { name: 'Bounty Hunter (Hunter)' },
|
|
201
|
-
[Activity.BOUNTY_HUNTER_ROGUE]: { name: 'Bounty Hunter (Rogue)' },
|
|
202
|
-
[Activity.CLUE_SCROLLS_ALL]: { name: 'Clue Scrolls (All)' },
|
|
203
|
-
[Activity.CLUE_SCROLLS_BEGINNER]: { name: 'Clue Scrolls (Beginner)' },
|
|
204
|
-
[Activity.CLUE_SCROLLS_EASY]: { name: 'Clue Scrolls (Easy)' },
|
|
205
|
-
[Activity.CLUE_SCROLLS_MEDIUM]: { name: 'Clue Scrolls (Medium)' },
|
|
206
|
-
[Activity.CLUE_SCROLLS_HARD]: { name: 'Clue Scrolls (Hard)' },
|
|
207
|
-
[Activity.CLUE_SCROLLS_ELITE]: { name: 'Clue Scrolls (Elite)' },
|
|
208
|
-
[Activity.CLUE_SCROLLS_MASTER]: { name: 'Clue Scrolls (Master)' },
|
|
209
|
-
[Activity.LAST_MAN_STANDING]: { name: 'Last Man Standing' },
|
|
210
|
-
[Activity.SOUL_WARS_ZEAL]: { name: 'Soul Wars Zeal' }
|
|
211
|
-
},
|
|
212
|
-
(props, key) => ({ ...props, key, type: MetricType.ACTIVITY, measure: MetricMeasure.SCORE })
|
|
213
|
-
);
|
|
214
|
-
|
|
215
|
-
const VirtualMetricProps = mapValues(
|
|
216
|
-
{
|
|
217
|
-
[VirtualMetric.EHP]: { name: 'EHP' },
|
|
218
|
-
[VirtualMetric.EHB]: { name: 'EHB' }
|
|
219
|
-
},
|
|
220
|
-
(props, key) => ({ ...props, key, type: MetricType.VIRTUAL, measure: MetricMeasure.VALUE })
|
|
221
|
-
);
|
|
222
|
-
|
|
223
|
-
const Metrics = {
|
|
224
|
-
...Skill,
|
|
225
|
-
...Boss,
|
|
226
|
-
...Activity,
|
|
227
|
-
...VirtualMetric
|
|
228
|
-
};
|
|
229
|
-
|
|
230
|
-
const MetricProps = {
|
|
231
|
-
...SkillProps,
|
|
232
|
-
...BossProps,
|
|
233
|
-
...ActivityProps,
|
|
234
|
-
...VirtualMetricProps
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
type Metric = Skill | Boss | Activity | VirtualMetric;
|
|
238
|
-
|
|
239
|
-
const SKILLS = Object.values(Skill);
|
|
240
|
-
const BOSSES = Object.values(Boss);
|
|
241
|
-
const ACTIVITIES = Object.values(Activity);
|
|
242
|
-
const VIRTUAL_METRICS = Object.values(VirtualMetric);
|
|
243
|
-
|
|
244
|
-
const METRICS = [...SKILLS, ...BOSSES, ...ACTIVITIES, ...VIRTUAL_METRICS];
|
|
245
|
-
|
|
246
|
-
const F2P_BOSSES = BOSSES.filter(b => !MetricProps[b].isMembers);
|
|
247
|
-
const MEMBER_SKILLS = SKILLS.filter(s => MetricProps[s].isMembers);
|
|
248
|
-
const COMBAT_SKILLS = SKILLS.filter(s => MetricProps[s].isCombat);
|
|
249
|
-
|
|
250
|
-
function findMetric(metricName: string): Metric | null {
|
|
251
|
-
for (var [key, value] of Object.entries(MetricProps)) {
|
|
252
|
-
if (value.name.toUpperCase() === metricName.toUpperCase()) return key as Metric;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
return null;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
function isSkill(metric: Metric) {
|
|
259
|
-
return metric in SkillProps;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
function isBoss(metric: Metric) {
|
|
263
|
-
return metric in BossProps;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
function isActivity(metric: Metric) {
|
|
267
|
-
return metric in ActivityProps;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
function isVirtualMetric(metric: Metric) {
|
|
271
|
-
return metric in VirtualMetricProps;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
function getMetricRankKey(metric: Metric) {
|
|
275
|
-
return `${metric}Rank`;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
function getMetricValueKey(metric: Metric) {
|
|
279
|
-
return `${metric}${capitalize(MetricProps[metric].measure)}`;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
function getMetricMeasure(metric: Metric) {
|
|
283
|
-
return MetricProps[metric].measure;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
function getMetricName(metric: Metric) {
|
|
287
|
-
return MetricProps[metric].name;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
function getMinimumBossKc(metric: Metric) {
|
|
291
|
-
return isBoss(metric) ? MetricProps[metric as Boss].minimumKc : 0;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
function getParentVirtualMetric(metric: Metric) {
|
|
295
|
-
if (isBoss(metric)) return Metrics.EHB;
|
|
296
|
-
if (isSkill(metric)) return Metrics.EHP;
|
|
297
|
-
return null;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
function parseMetricAbbreviation(abbreviation: string): string | null {
|
|
301
|
-
if (!abbreviation || abbreviation.length === 0) {
|
|
302
|
-
return null;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
switch (abbreviation.toLowerCase()) {
|
|
306
|
-
// Bosses
|
|
307
|
-
case 'sire':
|
|
308
|
-
return Metrics.ABYSSAL_SIRE;
|
|
309
|
-
|
|
310
|
-
case 'hydra':
|
|
311
|
-
return Metrics.ALCHEMICAL_HYDRA;
|
|
312
|
-
|
|
313
|
-
case 'barrows':
|
|
314
|
-
return Metrics.BARROWS_CHESTS;
|
|
315
|
-
|
|
316
|
-
case 'bryo':
|
|
317
|
-
return Metrics.BRYOPHYTA;
|
|
318
|
-
|
|
319
|
-
case 'cerb':
|
|
320
|
-
return Metrics.CERBERUS;
|
|
321
|
-
|
|
322
|
-
case 'cox':
|
|
323
|
-
case 'xeric':
|
|
324
|
-
case 'chambers':
|
|
325
|
-
case 'olm':
|
|
326
|
-
case 'raids':
|
|
327
|
-
return Metrics.CHAMBERS_OF_XERIC;
|
|
328
|
-
|
|
329
|
-
case 'cox-cm':
|
|
330
|
-
case 'xeric-cm':
|
|
331
|
-
case 'chambers-cm':
|
|
332
|
-
case 'olm-cm':
|
|
333
|
-
case 'raids-cm':
|
|
334
|
-
return Metrics.CHAMBERS_OF_XERIC_CM;
|
|
335
|
-
|
|
336
|
-
case 'chaos-ele':
|
|
337
|
-
return Metrics.CHAOS_ELEMENTAL;
|
|
338
|
-
|
|
339
|
-
case 'fanatic':
|
|
340
|
-
return Metrics.CHAOS_FANATIC;
|
|
341
|
-
|
|
342
|
-
case 'sara':
|
|
343
|
-
case 'saradomin':
|
|
344
|
-
case 'zilyana':
|
|
345
|
-
case 'zily':
|
|
346
|
-
return Metrics.COMMANDER_ZILYANA;
|
|
347
|
-
|
|
348
|
-
case 'corp':
|
|
349
|
-
return Metrics.CORPOREAL_BEAST;
|
|
350
|
-
|
|
351
|
-
case 'crazy-arch':
|
|
352
|
-
return Metrics.CRAZY_ARCHAEOLOGIST;
|
|
353
|
-
|
|
354
|
-
case 'prime':
|
|
355
|
-
return Metrics.DAGANNOTH_PRIME;
|
|
356
|
-
case 'rex':
|
|
357
|
-
return Metrics.DAGANNOTH_REX;
|
|
358
|
-
case 'supreme':
|
|
359
|
-
return Metrics.DAGANNOTH_SUPREME;
|
|
360
|
-
|
|
361
|
-
case 'deranged-arch':
|
|
362
|
-
return Metrics.DERANGED_ARCHAEOLOGIST;
|
|
363
|
-
|
|
364
|
-
case 'bandos':
|
|
365
|
-
case 'graardor':
|
|
366
|
-
return Metrics.GENERAL_GRAARDOR;
|
|
367
|
-
|
|
368
|
-
case 'mole':
|
|
369
|
-
return Metrics.GIANT_MOLE;
|
|
370
|
-
|
|
371
|
-
case 'dusk':
|
|
372
|
-
case 'dawn':
|
|
373
|
-
case 'gargs':
|
|
374
|
-
case 'guardians':
|
|
375
|
-
case 'ggs':
|
|
376
|
-
return Metrics.GROTESQUE_GUARDIANS;
|
|
377
|
-
|
|
378
|
-
case 'kq':
|
|
379
|
-
return Metrics.KALPHITE_QUEEN;
|
|
380
|
-
|
|
381
|
-
case 'kbd':
|
|
382
|
-
return Metrics.KING_BLACK_DRAGON;
|
|
383
|
-
|
|
384
|
-
case 'kree':
|
|
385
|
-
case 'kreearra':
|
|
386
|
-
case 'armadyl':
|
|
387
|
-
case 'arma':
|
|
388
|
-
return Metrics.KREEARRA;
|
|
389
|
-
|
|
390
|
-
case 'zammy':
|
|
391
|
-
case 'zamorak':
|
|
392
|
-
case 'kril':
|
|
393
|
-
case 'kril-tsutsaroth':
|
|
394
|
-
return Metrics.KRIL_TSUTSAROTH;
|
|
395
|
-
|
|
396
|
-
case 'gaunt':
|
|
397
|
-
case 'gauntlet':
|
|
398
|
-
case 'the-gauntlet':
|
|
399
|
-
return Metrics.THE_GAUNTLET;
|
|
400
|
-
|
|
401
|
-
case 'cgaunt':
|
|
402
|
-
case 'cgauntlet':
|
|
403
|
-
case 'corrupted':
|
|
404
|
-
case 'corrupted-gauntlet':
|
|
405
|
-
case 'the-corrupted-gauntlet':
|
|
406
|
-
return Metrics.THE_CORRUPTED_GAUNTLET;
|
|
407
|
-
|
|
408
|
-
case 'tob':
|
|
409
|
-
case 'theatre':
|
|
410
|
-
case 'verzik':
|
|
411
|
-
case 'tob-normal':
|
|
412
|
-
return Metrics.THEATRE_OF_BLOOD;
|
|
413
|
-
|
|
414
|
-
case 'tob-hm':
|
|
415
|
-
case 'tob-cm':
|
|
416
|
-
case 'tob-hard-mode':
|
|
417
|
-
case 'tob-hard':
|
|
418
|
-
return Metrics.THEATRE_OF_BLOOD_HARD_MODE;
|
|
419
|
-
|
|
420
|
-
case 'nm':
|
|
421
|
-
case 'tnm':
|
|
422
|
-
case 'nmare':
|
|
423
|
-
case 'the-nightmare':
|
|
424
|
-
return Metrics.NIGHTMARE;
|
|
425
|
-
|
|
426
|
-
case 'pnm':
|
|
427
|
-
case 'phosani':
|
|
428
|
-
case 'phosanis':
|
|
429
|
-
case 'phosani-nm':
|
|
430
|
-
case 'phosani-nightmare':
|
|
431
|
-
case 'phosanis nightmare':
|
|
432
|
-
return Metrics.PHOSANIS_NIGHTMARE;
|
|
433
|
-
|
|
434
|
-
case 'thermy':
|
|
435
|
-
case 'smoke-devil':
|
|
436
|
-
return Metrics.THERMONUCLEAR_SMOKE_DEVIL;
|
|
437
|
-
|
|
438
|
-
case 'zuk':
|
|
439
|
-
case 'inferno':
|
|
440
|
-
return Metrics.TZKAL_ZUK;
|
|
441
|
-
|
|
442
|
-
case 'jad':
|
|
443
|
-
case 'fight-caves':
|
|
444
|
-
case 'fc':
|
|
445
|
-
return Metrics.TZTOK_JAD;
|
|
446
|
-
|
|
447
|
-
case 'vork':
|
|
448
|
-
case 'vorky':
|
|
449
|
-
return Metrics.VORKATH;
|
|
450
|
-
|
|
451
|
-
case 'wt':
|
|
452
|
-
return Metrics.WINTERTODT;
|
|
453
|
-
|
|
454
|
-
case 'snek':
|
|
455
|
-
case 'zul':
|
|
456
|
-
return Metrics.ZULRAH;
|
|
457
|
-
|
|
458
|
-
// Minigames and others
|
|
459
|
-
|
|
460
|
-
case 'all-clues':
|
|
461
|
-
case 'clues':
|
|
462
|
-
return Metrics.CLUE_SCROLLS_ALL;
|
|
463
|
-
|
|
464
|
-
case 'beginner':
|
|
465
|
-
case 'beginner-clues':
|
|
466
|
-
case 'beg-clues':
|
|
467
|
-
case 'beginners':
|
|
468
|
-
return Metrics.CLUE_SCROLLS_BEGINNER;
|
|
469
|
-
|
|
470
|
-
case 'easy':
|
|
471
|
-
case 'easy-clues':
|
|
472
|
-
case 'easies':
|
|
473
|
-
return Metrics.CLUE_SCROLLS_EASY;
|
|
474
|
-
|
|
475
|
-
case 'medium':
|
|
476
|
-
case 'med':
|
|
477
|
-
case 'meds':
|
|
478
|
-
case 'medium-clues':
|
|
479
|
-
case 'med-clues':
|
|
480
|
-
case 'mediums':
|
|
481
|
-
return Metrics.CLUE_SCROLLS_MEDIUM;
|
|
482
|
-
|
|
483
|
-
case 'hard':
|
|
484
|
-
case 'hard-clues':
|
|
485
|
-
case 'hards':
|
|
486
|
-
return Metrics.CLUE_SCROLLS_HARD;
|
|
487
|
-
|
|
488
|
-
case 'elite':
|
|
489
|
-
case 'elite-clues':
|
|
490
|
-
case 'elites':
|
|
491
|
-
return Metrics.CLUE_SCROLLS_ELITE;
|
|
492
|
-
|
|
493
|
-
case 'master':
|
|
494
|
-
case 'master-clues':
|
|
495
|
-
case 'masters':
|
|
496
|
-
return Metrics.CLUE_SCROLLS_MASTER;
|
|
497
|
-
|
|
498
|
-
case 'lms':
|
|
499
|
-
return Metrics.LAST_MAN_STANDING;
|
|
500
|
-
|
|
501
|
-
case 'league':
|
|
502
|
-
case 'lp':
|
|
503
|
-
case 'lps':
|
|
504
|
-
return Metrics.LEAGUE_POINTS;
|
|
505
|
-
|
|
506
|
-
case 'sw':
|
|
507
|
-
case 'zeal':
|
|
508
|
-
case 'soul-wars':
|
|
509
|
-
return Metrics.SOUL_WARS_ZEAL;
|
|
510
|
-
|
|
511
|
-
// Skills
|
|
512
|
-
|
|
513
|
-
case 'runecraft':
|
|
514
|
-
case 'rc':
|
|
515
|
-
return Metrics.RUNECRAFTING;
|
|
516
|
-
|
|
517
|
-
case 'att':
|
|
518
|
-
case 'atk':
|
|
519
|
-
case 'attk':
|
|
520
|
-
return Metrics.ATTACK;
|
|
521
|
-
|
|
522
|
-
case 'def':
|
|
523
|
-
case 'defense':
|
|
524
|
-
return Metrics.DEFENCE;
|
|
525
|
-
|
|
526
|
-
case 'str':
|
|
527
|
-
return Metrics.STRENGTH;
|
|
528
|
-
|
|
529
|
-
case 'hp':
|
|
530
|
-
return Metrics.HITPOINTS;
|
|
531
|
-
|
|
532
|
-
case 'range':
|
|
533
|
-
return Metrics.RANGED;
|
|
534
|
-
|
|
535
|
-
case 'pray':
|
|
536
|
-
return Metrics.PRAYER;
|
|
537
|
-
|
|
538
|
-
case 'mage':
|
|
539
|
-
return Metrics.MAGIC;
|
|
540
|
-
|
|
541
|
-
case 'cook':
|
|
542
|
-
return Metrics.COOKING;
|
|
543
|
-
|
|
544
|
-
case 'wc':
|
|
545
|
-
return Metrics.WOODCUTTING;
|
|
546
|
-
|
|
547
|
-
case 'fletch':
|
|
548
|
-
return Metrics.FLETCHING;
|
|
549
|
-
|
|
550
|
-
case 'fish':
|
|
551
|
-
return Metrics.FISHING;
|
|
552
|
-
|
|
553
|
-
case 'fm':
|
|
554
|
-
case 'burning':
|
|
555
|
-
return Metrics.FIREMAKING;
|
|
556
|
-
|
|
557
|
-
case 'craft':
|
|
558
|
-
return Metrics.CRAFTING;
|
|
559
|
-
|
|
560
|
-
case 'sm':
|
|
561
|
-
case 'smith':
|
|
562
|
-
return Metrics.SMITHING;
|
|
563
|
-
|
|
564
|
-
case 'mine':
|
|
565
|
-
case 'smash':
|
|
566
|
-
return Metrics.MINING;
|
|
567
|
-
|
|
568
|
-
case 'herb':
|
|
569
|
-
return Metrics.HERBLORE;
|
|
570
|
-
|
|
571
|
-
case 'agi':
|
|
572
|
-
case 'agil':
|
|
573
|
-
return Metrics.AGILITY;
|
|
574
|
-
|
|
575
|
-
case 'thief':
|
|
576
|
-
return Metrics.THIEVING;
|
|
577
|
-
|
|
578
|
-
case 'slay':
|
|
579
|
-
return Metrics.SLAYER;
|
|
580
|
-
|
|
581
|
-
case 'farm':
|
|
582
|
-
return Metrics.FARMING;
|
|
583
|
-
|
|
584
|
-
case 'hunt':
|
|
585
|
-
case 'hunting':
|
|
586
|
-
return Metrics.HUNTER;
|
|
587
|
-
|
|
588
|
-
case 'con':
|
|
589
|
-
case 'cons':
|
|
590
|
-
case 'const':
|
|
591
|
-
return Metrics.CONSTRUCTION;
|
|
592
|
-
|
|
593
|
-
default:
|
|
594
|
-
return abbreviation;
|
|
595
|
-
}
|
|
596
|
-
}
|
|
597
|
-
|
|
598
|
-
export {
|
|
599
|
-
// Types
|
|
600
|
-
Metric,
|
|
601
|
-
// Enums
|
|
602
|
-
Metrics,
|
|
603
|
-
MetricProps,
|
|
604
|
-
MetricType,
|
|
605
|
-
MetricMeasure,
|
|
606
|
-
// Lists
|
|
607
|
-
SKILLS,
|
|
608
|
-
BOSSES,
|
|
609
|
-
ACTIVITIES,
|
|
610
|
-
VIRTUAL_METRICS,
|
|
611
|
-
METRICS,
|
|
612
|
-
F2P_BOSSES,
|
|
613
|
-
MEMBER_SKILLS,
|
|
614
|
-
COMBAT_SKILLS,
|
|
615
|
-
// Functions
|
|
616
|
-
findMetric,
|
|
617
|
-
parseMetricAbbreviation,
|
|
618
|
-
getMetricRankKey,
|
|
619
|
-
getMetricValueKey,
|
|
620
|
-
getMetricMeasure,
|
|
621
|
-
getMetricName,
|
|
622
|
-
getMinimumBossKc,
|
|
623
|
-
getParentVirtualMetric,
|
|
624
|
-
isSkill,
|
|
625
|
-
isBoss,
|
|
626
|
-
isActivity,
|
|
627
|
-
isVirtualMetric
|
|
628
|
-
};
|
package/src/numbers.ts
DELETED
package/src/periods.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
const CUSTOM_PERIOD_REGEX = /(\d+y)?(\d+m)?(\d+w)?(\d+d)?(\d+h)?/;
|
|
2
|
-
|
|
3
|
-
enum Period {
|
|
4
|
-
FIVE_MIN = '5min',
|
|
5
|
-
DAY = 'day',
|
|
6
|
-
WEEK = 'week',
|
|
7
|
-
MONTH = 'month',
|
|
8
|
-
YEAR = 'year'
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const PeriodProps = {
|
|
12
|
-
[Period.FIVE_MIN]: { name: '5 Min', milliseconds: 300_000 },
|
|
13
|
-
[Period.DAY]: { name: 'Day', milliseconds: 86_400_000 },
|
|
14
|
-
[Period.WEEK]: { name: 'Week', milliseconds: 604_800_000 },
|
|
15
|
-
[Period.MONTH]: { name: 'Month', milliseconds: 2_678_400_000 },
|
|
16
|
-
[Period.YEAR]: { name: 'Year', milliseconds: 31_556_926_000 }
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
const PERIODS = Object.values(Period);
|
|
20
|
-
|
|
21
|
-
function findPeriod(periodName: string): Period | null {
|
|
22
|
-
for (var [key, value] of Object.entries(PeriodProps)) {
|
|
23
|
-
if (value.name.toUpperCase() === periodName.toUpperCase()) return key as Period;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function isValidPeriod(period: string): boolean {
|
|
30
|
-
return PERIODS.includes(period as Period);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function parsePeriodExpression(periodExpression: string) {
|
|
34
|
-
const fixed = periodExpression.toLowerCase();
|
|
35
|
-
|
|
36
|
-
if (isValidPeriod(fixed)) {
|
|
37
|
-
return {
|
|
38
|
-
expression: fixed,
|
|
39
|
-
durationMs: PeriodProps[fixed as Period].milliseconds
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const result = fixed.match(CUSTOM_PERIOD_REGEX);
|
|
44
|
-
|
|
45
|
-
if (!result || result.length === 0 || result[0] !== fixed) return null;
|
|
46
|
-
|
|
47
|
-
const years = result[1] ? parseInt(result[1].replace(/\D/g, '')) : 0;
|
|
48
|
-
const months = result[2] ? parseInt(result[2].replace(/\D/g, '')) : 0;
|
|
49
|
-
const weeks = result[3] ? parseInt(result[3].replace(/\D/g, '')) : 0;
|
|
50
|
-
const days = result[4] ? parseInt(result[4].replace(/\D/g, '')) : 0;
|
|
51
|
-
const hours = result[5] ? parseInt(result[5].replace(/\D/g, '')) : 0;
|
|
52
|
-
|
|
53
|
-
const yearsMs = years * PeriodProps[Period.YEAR].milliseconds;
|
|
54
|
-
const monthsMs = months * PeriodProps[Period.MONTH].milliseconds;
|
|
55
|
-
const weeksMs = weeks * PeriodProps[Period.WEEK].milliseconds;
|
|
56
|
-
const daysMs = days * PeriodProps[Period.DAY].milliseconds;
|
|
57
|
-
const hoursMs = hours * (PeriodProps[Period.DAY].milliseconds / 24);
|
|
58
|
-
|
|
59
|
-
const totalMs = yearsMs + monthsMs + weeksMs + daysMs + hoursMs;
|
|
60
|
-
|
|
61
|
-
return {
|
|
62
|
-
expression: result[0],
|
|
63
|
-
durationMs: totalMs
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export { Period, PeriodProps, PERIODS, findPeriod, isValidPeriod, parsePeriodExpression };
|