{"id":18648989,"url":"https://github.com/pokeapi/pokedex-promise-v2","last_synced_at":"2025-10-07T06:14:52.881Z","repository":{"id":3902926,"uuid":"51271453","full_name":"PokeAPI/pokedex-promise-v2","owner":"PokeAPI","description":"An easy way to use pokeapi v2 with promises in node.js","archived":false,"fork":false,"pushed_at":"2025-09-14T23:31:50.000Z","size":1067,"stargazers_count":533,"open_issues_count":0,"forks_count":97,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-09-15T01:16:53.455Z","etag":null,"topics":["hacktoberfest","javascript","nodejs","pokeapi","pokemon","wrapper"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PokeAPI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-02-07T23:26:58.000Z","updated_at":"2025-09-14T23:30:48.000Z","dependencies_parsed_at":"2024-06-18T13:54:08.678Z","dependency_job_id":"1ed92016-4e5b-4615-96d4-6dac41844a53","html_url":"https://github.com/PokeAPI/pokedex-promise-v2","commit_stats":{"total_commits":267,"total_committers":10,"mean_commits":26.7,"dds":0.6367041198501873,"last_synced_commit":"cd2d2e04a862ea256d318199ad9c1752a92de8ab"},"previous_names":["thetommytwitch/pokedex-promise-v2"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/PokeAPI/pokedex-promise-v2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PokeAPI%2Fpokedex-promise-v2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PokeAPI%2Fpokedex-promise-v2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PokeAPI%2Fpokedex-promise-v2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PokeAPI%2Fpokedex-promise-v2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PokeAPI","download_url":"https://codeload.github.com/PokeAPI/pokedex-promise-v2/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PokeAPI%2Fpokedex-promise-v2/sbom","scorecard":{"id":110934,"data":{"date":"2025-08-11","repo":{"name":"github.com/PokeAPI/pokedex-promise-v2","commit":"b6084b7bf9244ff6ce053a447db78c489cf9c74b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":2,"reason":"3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":2,"reason":"Found 3/14 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":5,"reason":"dependency not pinned by hash detected -- score normalized to 5","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/PokeAPI/pokedex-promise-v2/test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/PokeAPI/pokedex-promise-v2/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/PokeAPI/pokedex-promise-v2/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/PokeAPI/pokedex-promise-v2/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/PokeAPI/pokedex-promise-v2/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/PokeAPI/pokedex-promise-v2/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/PokeAPI/pokedex-promise-v2/test.yml/master?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   2 out of   2 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 20 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":5,"reason":"5 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-15T12:12:02.501Z","repository_id":3902926,"created_at":"2025-08-15T12:12:02.501Z","updated_at":"2025-08-15T12:12:02.501Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278729325,"owners_count":26035632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","javascript","nodejs","pokeapi","pokemon","wrapper"],"created_at":"2024-11-07T06:34:41.237Z","updated_at":"2025-10-07T06:14:52.874Z","avatar_url":"https://github.com/PokeAPI.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pokedex-promise-v2 \u003ca href=\"https://pokeapi.co/api/v2/pokemon/bulbasaur\"\u003e\u003cimg src='https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/dream-world/1.svg' height=50px/\u003e\u003c/a\u003e\n\n[![npm version](https://badge.fury.io/js/pokedex-promise-v2.svg)](https://badge.fury.io/js/pokedex-promise-v2)\n[![Tests](https://github.com/PokeAPI/pokedex-promise-v2/actions/workflows/test.yml/badge.svg)](https://github.com/PokeAPI/pokedex-promise-v2/actions/workflows/test.yml)\n[![Package Quality](http://npm.packagequality.com/shield/pokedex-promise-v2.svg)](http://packagequality.com/#?package=pokedex-promise-v2)\n[![npm](https://img.shields.io/npm/l/express.svg?maxAge=2592000)](https://github.com/PokeAPI/pokedex-promise-v2/blob/master/LICENSE)\n\nMaintainers: [Naramsim](https://github.com/Naramsim), [TheTommyTwitch](https://github.com/TheTommyTwitch) and [HRKings](https://github.com/HRKings)\n\nAn easy way to use [Pokéapi](https://pokeapi.co/) v2 with promises *(or callbacks as of v3)* in node.js\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n**Table of Contents**\n\n- [pokedex-promise-v2](#pokedex-promise-v2-)\n  - [Install](#install-)\n  - [Usage](#usage)\n    - [Example requests](#example-requests)\n  - [Configuration](#configuration)\n  - [Endpoints](#endpoints)\n    - [Berries](#berries)\n    - [Contests](#contests)\n    - [Encounters](#encounters)\n    - [Evolution](#evolution)\n    - [Games](#games)\n    - [Items](#items)\n    - [Machines](#machines)\n    - [Moves](#moves)\n    - [Locations](#locations)\n    - [Pokemon](#pokemon)\n    - [Utility](#utility)\n    - [Custom URLs and paths](#custom-urls-and-paths)\n  - [Root Endpoints](#root-endpoints)\n    - [List of supported root endpoints](#list-of-supported-root-endpoints)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## Install [![nodeVersion](https://img.shields.io/badge/node-\u003e=12-brightgreen.svg)](https://www.npmjs.com/package/pokedex-promise-v2)\n\n\u003e As of 4.0.0 this package is now pure ESM. Please [read this](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c).\n\n```sh\nnpm install pokedex-promise-v2 --save\n```\n\n```sh\nyarn add pokedex-promise-v2\n```\n\n```sh\npnpm i pokedex-promise-v2\n```\n\n## Usage\n\n```js\nimport Pokedex from 'pokedex-promise-v2';\nconst P = new Pokedex();\n```\n\n**NOTE**: Any function with the designation \"ByName\" can also be passed an integer ID. However, the functions with the designation \"ById\" can only be passed an integer ID. Refer to the [pokeapi v2 docs](http://pokeapi.co/docsv2/) to find out more about how the data is structured.\n\n**UPDATE**: You can pass an array to each endpoint, it will retrive data for each array element. If you scroll down, you will find an example.\n\n### Example requests\n\n```js\n(async () =\u003e { // with Async/Await\n    try {\n        const golduckSpecies = await P.getPokemonSpeciesByName(\"golduck\")\n        const frenchName = golduckSpecies.names.filter(pokeAPIName =\u003e pokeAPIName.language.name === 'fr')[0].name\n        console.log(frenchName)\n    } catch (error) {\n        throw error\n    }\n})()\n\nP.getPokemonByName(['eevee', 'ditto']) // with Promise\n  .then((response) =\u003e {\n    console.log(response);\n  })\n  .catch((error) =\u003e {\n    console.log('There was an ERROR: ', error);\n  });\n\nP.getPokemonByName(34, (response, error) =\u003e { // with callback\n    if(!error) {\n      console.log(response);\n    } else {\n      console.log(error)\n    }\n  });\n\nP.getResource(['/api/v2/pokemon/36', 'api/v2/berry/8', 'https://pokeapi.co/api/v2/ability/9/'])\n  .then((response) =\u003e {\n    console.log(response); // the getResource function accepts singles or arrays of URLs/paths\n  });\n```\n\n## Configuration\n\nPass an Object to Pokedex in order to configure it. Available options: `protocol`, `hostName`, `versionPath`, `cacheLimit` in ms, `timeout` in ms.\nAny option is optional :smile:. If no Object is passed, the Pokedex will be initialized to grab data from pokeapi.co using http with 20 seconds timeout and caching resources for 11 days. HTTPS is the default protocol.\n\n```js\nimport Pokedex from 'pokedex-promise-v2';\nconst options = {\n  protocol: 'https',\n  hostName: 'localhost:443',\n  versionPath: '/api/v2/',\n  cacheLimit: 100 * 1000, // 100s\n  timeout: 5 * 1000 // 5s\n}\nconst P = new Pokedex(options);\n```\n\n## Endpoints\n\n### Berries\n\nUse **getBerryByName** to return data about a specific berry.\n```js\n  P.getBerryByName('cheri')\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getBerryFirmnessByName** to return data about the firmness of a specific berry.\n```js\n  P.getBerryFirmnessByName('very-soft')\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getBerryFlavorByName** to return data about the flavor of a specific berry.\n```js\n  P.getBerryFlavorByName('spicy')\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\n**Array** as a parameter example. It can be a mixed array.\nThis method fetches data asynchronously. So it is quite fast :smile:\n```js\n  P.getBerryByName(['cheri', 'chesto', 5])\n    .then((response) =\u003e {\n      console.log(response);\n    })\n  // response will be an Array containing 3 Objects\n  // response.forEach((item) =\u003e {console.log(item.size)}) // 80,50,20\n```\n\n### Contests\n\nUse **getContestTypeByName** to return data about the effects of moves when used in contests.\n```js\n  P.getContestTypeByName('cool')\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getContestEffectById** to return data about the effects of moves when used in contests.\n```js\n  P.getContestEffectById(1)\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getSuperContestEffectById** to return data about the effects of moves when used in super contests.\n```js\n  P.getSuperContestEffectById(1)\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n### Encounters\n\nUse **getEncounterMethodByName** to return data about the conditions in which a trainer may encounter a pokemon in the wild.\n```js\n  P.getEncounterMethodByName(\"walk\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getEncounterConditionByName** to return data that affects which pokemon might appear in the wild.\n```js\n  P.getEncounterConditionByName(\"swarm\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getEncounterConditionValueByName** to return data the various states that an encounter condition can have.\n```js\n  P.getEncounterConditionValueByName(\"swarm-yes\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\n### Evolution\n\nUse **getEvolutionChainById** to return data evolution chains.\n```js\n  P.getEvolutionChainById(1)\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getEvolutionTriggerByName** to return data about triggers which cause pokemon to evolve.\n```js\n  P.getEvolutionTriggerByName(\"level-up\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\n### Games\n\nUse **getGenerationByName** to return data about the different generations of pokemon games.\n```js\n  P.getGenerationByName(\"generation-i\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getPokedexByName** to return data about specific types of pokedexes.\n```js\n  P.getPokedexByName(\"kanto\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getVersionByName** to return data about specific versions of pokemon games.\n```js\n  P.getVersionByName(\"red\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getVersionGroupByName** to return data about specific version groups of pokemon games.\n```js\n  P.getVersionGroupByName(\"red-blue\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\n### Items\n\nUse **getItemByName** to return data about specific items.\n```js\n  P.getItemByName(\"master-ball\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getItemAttributeByName** to return data about specific item attribute.\n```js\n  P.getItemAttributeByName(\"countable\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getItemCategoryByName** to return data about specific item category.\n```js\n  P.getItemCategoryByName(\"stat-boosts\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getItemFlingEffectByName** to return data about specific item fling effect.\n```js\n  P.getItemFlingEffectByName(\"badly-poison\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getItemPocketByName** to return data about specific pockets in a players bag.\n```js\n  P.getItemPocketByName(\"misc\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\n### Machines\n\nUse **getMachineById** to return data about specific machine.\n```js\n  P.getMachineById(2)\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\n### Moves\n\nUse **getMoveByName** to return data about specific pokemon move.\n```js\n  P.getMoveByName(\"pound\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getMoveAilmentByName** to return data about specific pokemon move ailment.\n```js\n  P.getMoveAilmentByName(\"paralysis\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getMoveBattleStyleByName** to return data about specific pokemon move battle style.\n```js\n  P.getMoveBattleStyleByName(\"attack\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getMoveCategoryByName** to return data about specific pokemon move category.\n```js\n  P.getMoveCategoryByName(\"ailment\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getMoveDamageClassByName** to return data about specific pokemon damage class.\n```js\n  P.getMoveDamageClassByName(\"status\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getMoveLearnMethodByName** to return data about specific pokemon learn method.\n```js\n  P.getMoveLearnMethodByName(\"level-up\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getMoveTargetByName** to return data about specific pokemon move target.\n```js\n  P.getMoveTargetByName(\"specific-move\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\n### Locations\n\nUse **getLocationByName** to return data about specific pokemon location.\n```js\n  P.getLocationByName(\"sinnoh\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getLocationAreaByName** to return data about specific pokemon location area.\n```js\n  P.getLocationAreaByName(\"canalave-city-area\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getPalParkAreaByName** to return data about specific pokemon pal park area.\n```js\n  P.getPalParkAreaByName(\"forest\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getRegionByName** to return data about specific pokemon region.\n```js\n  P.getRegionByName(\"kanto\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\n### Pokemon\n\nUse **getAbilityByName** to return data about specific pokemon ability.\n```js\n  P.getAbilityByName(\"stench\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getCharacteristicById** to return data about specific pokemon characteristic.\n```js\n  P.getCharacteristicById(1)\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getEggGroupByName** to return data about specific pokemon egg group.\n```js\n  P.getEggGroupByName(\"monster\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getGenderByName** to return data about specific pokemon gender.\n```js\n  P.getGenderByName(\"female\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getGrowthRateByName** to return data about specific pokemon growth rate.\n```js\n  P.getGrowthRateByName(\"slow\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getNatureByName** to return data about specific pokemon nature.\n```js\n  P.getNatureByName(\"bold\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getPokeathlonStatByName** to return data about specific pokeathon stat.\n```js\n  P.getPokeathlonStatByName(\"speed\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getPokemonByName** to return data about specific pokemon.\n```js\n  P.getPokemonByName(\"butterfree\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getPokemonColorByName** to return data about specific pokemon color.\n```js\n  P.getPokemonColorByName(\"black\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getPokemonFormByName** to return data about specific pokemon form.\n```js\n  P.getPokemonFormByName(\"wormadam-plant\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getPokemonHabitatByName** to return data about specific pokemon habitat.\n```js\n  P.getPokemonHabitatByName(\"grottes\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getPokemonShapeByName** to return data about specific pokemon shape.\n```js\n  P.getPokemonShapeByName(\"ball\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getPokemonSpeciesByName** to return data about specific pokemon species.\n```js\n  P.getPokemonSpeciesByName(\"wormadam\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getStatByName** to return data about specific pokemon stat.\n```js\n  P.getStatByName(\"attack\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\nUse **getTypeByName** to return data about specific pokemon type.\n```js\n  P.getTypeByName(\"ground\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\n### Utility\n\nUse **getLanguageByName** to return data about specific pokemon language.\n```js\n  P.getLanguageByName(\"ja\")\n    .then((response) =\u003e {\n      console.log(response);\n    })\n    .catch((error) =\u003e {\n      console.log('There was an ERROR: ', error);\n    });\n```\n\n### Custom URLs and paths\n\nUse **resource** to return data about any URL or path.\n\n```js\n  P.getResource(['/api/v2/pokemon/36', 'api/v2/berry/8', 'https://pokeapi.co/api/v2/ability/9/'])\n    .then((response) =\u003e {\n      console.log(response); // resource function accepts singles or arrays of URLs/paths\n    });\n\n  P.getResource('api/v2/berry/5')\n    .then((response) =\u003e {\n      console.log(response);\n    });\n```\n\n## Root Endpoints\n\nFor each root endpoint we provide a method to get all the items contained by that endpoint. By default the method will return every item in the endpoint. If you want you can configure its offset and limit.\n\n* `offset` is where to start. The first item that you will get. Default `0`\n* `limit` is how many items you want to list. Default `100000`\n\n**TIP**: Do not pass any config Object to your call, since you will get every item and everything will be cached to your RAM.\n\nThis call will get the list of pokemon between ID 34 and ID 44\n\n```js\n  const interval = {\n    limit: 10,\n    offset: 34\n  }\n  P.getPokemonsList(interval)\n    .then((response) =\u003e {\n      console.log(response);\n    })\n```\n\nThis is what you will get:\n\n```json\n{\n  \"count\": 811,\n  \"next\":  \"https://pokeapi.co:443/api/v2/pokemon/?limit=11\u0026offset=44\",\n  \"previous\": \"https://pokeapi.co:443/api/v2/pokemon/?limit=11\u0026offset=22\",\n  \"results\": [\n    {\n      \"url\": \"https://pokeapi.co:443/api/v2/pokemon/34/\",\n      \"name\": \"nidoking\"\n    },\n    {\n      \"url\": \"https://pokeapi.co:443/api/v2/pokemon/35/\",\n      \"name\": \"clefairy\"\n    },\n    {\n      \"url\": \"...\",\n      \"name\": \"...\"\n    },\n    {\n      \"url\": \"https://pokeapi.co:443/api/v2/pokemon/44/\",\n      \"name\": \"gloom\"\n    }\n  ]\n}\n```\n\n### List of supported root endpoints\n\n* .getEndpointsList()\n* .getBerriesList()\n* .getBerriesFirmnessList()\n* .getBerriesFlavorsList()\n* .getContestTypesList()\n* .getContestEffectsList()\n* .getSuperContestEffectsList()\n* .getEncounterMethodsList()\n* .getEncounterConditionsList()\n* .getEncounterConditionValuesList()\n* .getEvolutionChainsList()\n* .getEvolutionTriggersList()\n* .getGenerationsList()\n* .getPokedexList()\n* .getVersionsList()\n* .getVersionGroupsList()\n* .getItemsList()\n* .getItemAttributesList()\n* .getItemCategoriesList()\n* .getItemFlingEffectsList()\n* .getItemPocketsList()\n* .getMachinesList()\n* .getMovesList()\n* .getMoveAilmentsList()\n* .getMoveBattleStylesList()\n* .getMoveCategoriesList()\n* .getMoveDamageClassesList()\n* .getMoveLearnMethodsList()\n* .getMoveTargetByName()\n* .getLocationsList()\n* .getLocationAreasList()\n* .getPalParkAreasList()\n* .getRegionsList()\n* .getAbilitiesList()\n* .getCharacteristicsList()\n* .getEggGroupsList()\n* .getGendersList()\n* .getGrowthRatesList()\n* .getNaturesList()\n* .getPokeathlonStatsList()\n* .getPokemonsList()\n* .getPokemonColorsList()\n* .getPokemonFormsList()\n* .getPokemonHabitatsList()\n* .getPokemonShapesList()\n* .getPokemonSpeciesList()\n* .getStatsList()\n* .getTypesList()\n* .getLanguagesList()\n\n## Development\n\nA linux environment is preferred. `bash`, `sed`, `find` are required.\n\n```sh\nnpm i\nnpm run apidata:clone # Only if you are building for the first time\nnpm run apidata:sync # Only if you have already built once\nnpm run apidata:replace\nnpm run generate:types\nnpm run generate:main\nnpm run generate:jsdocs\nnpm t\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpokeapi%2Fpokedex-promise-v2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpokeapi%2Fpokedex-promise-v2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpokeapi%2Fpokedex-promise-v2/lists"}