Files
blitzkit/src/core/blitz/resolveTankId.ts
T

30 lines
838 B
TypeScript
Raw Normal View History

2023-05-30 17:24:24 +00:00
import { go } from 'fuzzysort';
2023-11-30 12:21:20 -06:00
import { tankopedia, tanks } from '../blitzkrieg/tankopedia';
2023-10-17 20:58:36 -05:00
import { UserError } from '../blitzkrieg/userError';
2023-05-30 17:24:24 +00:00
2023-10-14 11:15:42 -05:00
export default async function resolveTankId(tank: string | number) {
const number = typeof tank === 'string' ? parseInt(tank) : tank;
2023-05-30 17:24:24 +00:00
if (Number.isNaN(number)) {
2023-11-30 12:21:20 -06:00
const searchResult = go(`${tank}`, await tanks, {
2023-10-14 11:15:42 -05:00
keys: ['name'],
limit: 1,
});
2023-05-30 17:24:24 +00:00
if (searchResult.length === 0) {
2023-10-17 20:58:36 -05:00
throw new UserError('Tank not found', {
cause: `Could not find tank by the name "${tank}".`,
});
2023-05-30 17:24:24 +00:00
} else {
2023-11-29 12:17:21 -06:00
return searchResult[0].obj.id;
2023-05-30 17:24:24 +00:00
}
} else {
if ((await tankopedia)[number]) {
2023-05-30 17:24:24 +00:00
return number;
} else {
2023-10-17 20:58:36 -05:00
throw new UserError('Tank not found', {
cause: `Could not find tank by the ID "${number}".`,
});
2023-05-30 17:24:24 +00:00
}
}
}