UNPKG

genshin-db

Version:

Genshin Impact v5.8 JSON data. Search and get results in all in-game languages! Sources from the fandom wiki and GenshinData repo.

78 lines (65 loc) 2.2 kB
const fuzzysort = require('fuzzysort'); // enum for folders. // make sure update index.d.ts too // not really used internally. mainly for altnames api const FoldersEnum = { characters : 'characters', talents : 'talents', constellations : 'constellations', weapons : 'weapons', foods : 'foods', materials : 'materials', crafts : 'crafts', artifacts : 'artifacts', domains : 'domains', enemies : 'enemies', rarity : 'rarity', elements : 'elements', achievements : 'achievements', achievementgroups: 'achievementgroups', windgliders : 'windgliders', outfits : 'outfits', animals : 'animals', namecards : 'namecards', geographies : 'geographies', adventureranks : 'adventureranks', emojis : 'emojis', voiceovers : 'voiceovers', tcgactioncards: 'tcgactioncards', tcgcardbacks: 'tcgcardbacks', tcgcardboxes: 'tcgcardboxes', tcgcharactercards: 'tcgcharactercards', tcgdetailedrules: 'tcgdetailedrules', tcgenemycards: 'tcgenemycards', tcgkeywords: 'tcgkeywords', tcglevelrewards: 'tcglevelrewards', tcgstatuseffects: 'tcgstatuseffects', tcgsummons: 'tcgsummons' }; const folders = Object.values(FoldersEnum); function autocompleteFolder(input) { let result = fuzzysort.go(input, folders, { limit: 1 })[0]; return result === undefined ? undefined : result.target; } /** * @param folders - a string or array of strings * @returns - autocompleted full name of the folder. see FoldersEnum. * undefined if none of the strings are valid folders. */ function format(folders) { if(typeof folders === 'string') { return autocompleteFolder(folders); } else if(Array.isArray(folders)) { let tmp = []; for(let f of folders) { f = format(f); if(f && !tmp.includes(f)) tmp.push(f); } if(tmp.length) return tmp; } return undefined; } module.exports = { FoldersEnum: FoldersEnum, folders: folders, // Object.values(FoldersEnum) format: format };