# typed-hypixel-api

> A library to make requests to the Hypixel API, but with TypeScript to help you avoid mistakes. This library does not modify or process any data returned, that's up to you.

Latest version **1.8.0** (published 2022-10-12) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install typed-hypixel-api
pnpm add typed-hypixel-api
yarn add typed-hypixel-api
bun add typed-hypixel-api
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 1.8.0 |
| Published | 2022-10-12 |
| First published | 2022-03-25 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 179.7 KB |
| Known vulnerabilities | 0 (+12 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 3 |
| Author | mat |
| Maintainers | matdoesdev |

## Links

- npm: https://www.npmjs.com/package/typed-hypixel-api
- Repository: https://github.com/skyblockstats/typed-hypixel-api
- Homepage: https://github.com/skyblockstats/typed-hypixel-api#readme
- Issues: https://github.com/skyblockstats/typed-hypixel-api/issues
- npm.io page: https://npm.io/package/typed-hypixel-api

## Dependencies (2)

- [undici](https://npm.io/package/undici.md) ^5.3.0
- [typescript](https://npm.io/package/typescript.md) ^4.6.3

## Recent versions

- 1.8.0 (latest) — 2022-10-12
- 1.7.0 — 2022-10-04
- 1.6.0 — 2022-06-30
- 1.5.0 — 2022-06-20
- 1.4.2 — 2022-05-30
- 1.4.1 — 2022-05-30
- 1.4.0 — 2022-05-15
- 1.3.1 — 2022-04-24
- 1.3.0 — 2022-04-24
- 1.2.0 — 2022-04-23
- 1.1.0 — 2022-04-20
- 1.0.0 — 2022-04-15
- 0.7.0 — 2022-04-14
- 0.6.0 — 2022-04-11
- 0.5.1 — 2022-04-09
- … 25 more at https://npm.io/package/typed-hypixel-api/versions

## README

# Typed Hypixel API

A library to make requests to the Hypixel API, but with TypeScript to help you avoid mistakes. This library does not modify or process any data returned, that's up to you.

This library covers the *entire* Hypixel API, and we have [automatic daily tests](https://github.com/skyblockstats/typed-hypixel-api/actions) to make sure they're up-to-date.

## Usage

Make a request:
```ts
import hypixel from 'typed-hypixel-api'

const res = await hypixel.request(
	'player',
	{
		key: 'your-api-key',
		uuid: '6536bfed869548fd83a1ecd24cf2a0fd'
	}
)

if (res.data.success)
	console.log(res.data.player.playername)
```

Typed wrapper function (for example to retry on errors or handle ratelimits):
```ts
export let sendApiRequest = async<P extends keyof hypixel.Requests>(path: P, options: hypixel.Requests[P]['options']): Promise<hypixel.Requests[P]['response']['data']> => {
	let response: hypixel.Requests[P]['response']
	try {
		response = await hypixel.request(
			path,
			options
		)
	} catch (e) {
		await sleep(1000)
		return await sendApiRequest(path, options)
	}

	return response.data
}
```

## Contributing

Do `yarn test` to run the tests. They'll take a few minutes.
If you want to watch `test/_test_data.ts`, use `npx tsc test/_test_data.ts --noEmit --esModuleInterop --downlevelIteration --skipLibCheck --lib DOM.Iterable,ESNext,DOM -w`.

### Adding an endpoint

Each endpoint is in a separate file in the `src/responses/` directory. You can look at other endpoints as a reference on how yours should look. If you add one, first export it from `src/responses/index.ts` and then in `src/index.ts` add it to the `Requests` interface. Also, this isn't necessary but it's recommended that you add JSDoc comments to explain what each field is for. Finally, add a test in `test/index.js` and do `yarn test`.

### Updating an endpoint

If you change an endpoint, simply find the relevant file in the `src/responses/` directory and add a new type. Then, run `yarn test` to make sure it's correct.

### JSDocs

If you update or add a JSDoc (i.e. the /** */ comments), please use proper grammar and add a period at the end of your sentences. The comments should also be easy to understand for someone who does not have deep knowledge of the API. If you don't understand a field or you don't feel like it, you don't have to write anything for it.

---
_Source: https://npm.io/package/typed-hypixel-api · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
