UNPKG

pokemon.js

Version:

A JavaScript library that makes interacting with PokeAPI easier

44 lines (43 loc) 2.36 kB
const { formatPokemon, format } = require('../../utils/utils'); const get = require('../../fetch/get/get'); const { typeLogos } = require('../../utils/Constants'); const { getLang } = require('../../utils/Variables'); /** Returns an Array of the pokemon's types or returns data for the type in JSON format. * @param {String | Number} name * @returns {Promise<Array> | Promise<JSON>} */ module.exports = async function getType(name) { if (isNaN(name)) var call = await formatPokemon(name); else var call = name; let pokeData = await get(`pokemon/${call}`); if (pokeData !== undefined) { let type = []; pokeData.types.forEach(tp => type.push({ name: tp.type.name, logo: typeLogos.get(tp.type.name) })); return type; } else if (isNaN(name)) { call = format(name); let typeData = await get(`type/${call}`); if (typeData !== undefined) { delete typeData['flavor_text_entries']; typeData['pokemon'] = typeData['pokemon'].map(pkm => pkm.pokemon.name); typeData['names'] = typeData['names'].map(n => { return { language: n.language.name, name: n.name } }); typeData['moves'] = typeData['moves'].map(mv => mv.name); typeData['damage_relations'] = { double_damage_from: typeData['damage_relations'].double_damage_from.map(tp => tp.name), double_damage_to: typeData['damage_relations'].double_damage_to.map(tp => tp.name), half_damage_from: typeData['damage_relations'].half_damage_from.map(tp => tp.name), half_damage_to: typeData['damage_relations'].half_damage_to.map(tp => tp.name), no_damage_from: typeData['damage_relations'].no_damage_from.map(tp => tp.name), no_damage_to: typeData['damage_relations'].no_damage_to.map(tp => tp.name) } typeData['logo'] = typeLogos.get(typeData['name']); if (getLang().length) { typeData['name'] = typeData['names'].filter(n => n.language === getLang())[0]; if (typeData.name !== undefined) typeData.name = typeData.name.name else typeData.name = ''; delete typeData['names']; } return typeData; } } return undefined; }