Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
f01ab65
Update Repo
Kathund Dec 11, 2024
7e6dd08
chore(config): migrate config .github/renovate.json (#656)
renovate[bot] Dec 11, 2024
ac73bd4
Update tsconfig
Kathund Dec 19, 2024
bc61520
chore(deps): Update all non-major dependencies (#655)
renovate[bot] Jan 23, 2025
d4d2cdc
chore(deps): update dependency eslint-config-prettier to v10 (#657)
renovate[bot] Jan 23, 2025
098e6c2
chore(deps): Update all non-major dependencies (#659)
renovate[bot] Mar 10, 2025
4122d40
feat(skybock): Add Skyblock item class and getSkyblockItems (#661)
BonnetAdam Mar 10, 2025
c4a6bea
SkyBlock Rewrite (#663)
Kathund Apr 14, 2025
ff02c70
Change Docs URL
Kathund Apr 14, 2025
8c35098
Change docs branch
Kathund Apr 14, 2025
0747e72
fix Spelling (#664)
Kathund Apr 14, 2025
1d5be6d
Prepare for vitest v3 (#665)
Kathund Apr 14, 2025
f3157d1
chore(deps): update vitest monorepo to v3 (#658)
renovate[bot] Apr 14, 2025
1517b8e
chore(deps): Update all non-major dependencies (#666)
renovate[bot] Apr 14, 2025
9aacbf7
chore(deps): update dependency globals to v16 (#667)
renovate[bot] Apr 14, 2025
e4edcd3
fix possible null when decoding
Kathund Apr 14, 2025
9f4528a
remove testing code
Kathund Apr 14, 2025
805204b
Repo Updates
Kathund Apr 16, 2025
184b63d
Fix build
Kathund Apr 18, 2025
e3914cf
downgrade typedoc to fix docs compile
Kathund Apr 18, 2025
c28e6ec
feat(player): rewrite
Kathund Sep 13, 2025
80141f6
fix(request handler): base url
Kathund Sep 13, 2025
2e2dcb6
change tsconfig
Kathund Sep 14, 2025
06214c2
Release 12.0.0-7
Kathund Sep 14, 2025
abe6d56
fix(skyblockUtils)
Kathund Sep 14, 2025
a132747
refactor(gen-index-script)
Kathund Sep 14, 2025
c09fc45
Release 12.0.0-8
Kathund Sep 14, 2025
1d7cffa
chore(deps): Update all non-major dependencies (#668)
renovate[bot] Sep 15, 2025
fb2244c
feat(RequestData): isRaw type guard
Kathund Sep 15, 2025
9ff706d
fix(tsbuild)
Kathund Sep 15, 2025
73f3674
chore(typedoc): 0.28.13 -> 0.27.9
Kathund Sep 15, 2025
f2e6b96
rename kill tiers (#671)
Yoshy2002 Sep 15, 2025
a46b529
fix(SkyBlockMemberBestiary): not including fishing
Kathund Sep 16, 2025
0aef5c2
chore(SkyBlockMemberBestiary): Update data
Kathund Sep 16, 2025
0107f44
fix(RequestHandler): BASE_URL
Kathund Sep 16, 2025
bd58175
chore(renovate): ignore typedoc
Kathund Sep 16, 2025
05d90ca
fix(BedWarsBeds): Incorrect values being pased in for BLRatio
Kathund Sep 16, 2025
7cf4c2e
feat(BedWars): One Block mode
Kathund Sep 16, 2025
397a3b5
feat(Player): tests
Kathund Sep 16, 2025
72cb5a5
refactor(Errors); Move errors to be static
Kathund Sep 17, 2025
2481f9d
fix(API-Endpoints): Remove redeclaring client
Kathund Sep 17, 2025
8412f14
Release 12.0.0-9
Kathund Sep 17, 2025
a186abd
refactor(prettier)
Kathund Sep 18, 2025
efe693e
refactor(eslint)
Kathund Sep 18, 2025
5de2e87
style(format)
Kathund Sep 18, 2025
026432c
Release 12.0.0-10
Kathund Sep 18, 2025
5bdb1d0
feat(SkyBlockMemberCrimsonIsleTrophyFish): Ranks total caught
Kathund Sep 23, 2025
e6dba38
Release 12.0.0-11
Kathund Sep 23, 2025
5da3a41
feat(SkyBlockMemberCrimsonIsleTrophyFishCaught)
Kathund Sep 24, 2025
cc745d0
Release 12.0.0-12
Kathund Sep 24, 2025
139132c
chore: update SkyBlockMemberMiningHotmForgeItem to be safe & update F…
Yoshy2002 Oct 5, 2025
6842f4e
fix: SkyBlockGardenCropMilstone calculation going from 0-45 instead o…
Yoshy2002 Oct 5, 2025
b4ca249
fix: prettier vs eslint
Kathund Oct 5, 2025
42fde46
fix(SkyblockMemberInventoriesBackpacks): Incorrectly parsing backpacks
Kathund Oct 13, 2025
3feb2e2
feat(SkyblockMemberInventories): Sack Counts
Kathund Oct 13, 2025
ca63696
feat(SkyBlockMemberInventories): Shared Inventory
Kathund Oct 13, 2025
88aae24
Release 12.0.0-13
Kathund Oct 13, 2025
4e0adda
feat: SkyHelperNetworthProfile
Kathund Oct 14, 2025
ab14750
feat: docs
Kathund Oct 19, 2025
9d0018c
fix: docs files
Kathund Oct 19, 2025
fed0f39
feat: missing doc
Kathund Oct 19, 2025
da96c68
Release 12.0.0-14
Kathund Oct 19, 2025
607031b
chore(docs): bump hypixel-api-reborn
Kathund Oct 19, 2025
c1741ed
feat(PrepareSkyBlockProfileForSkyHelperNetworth): Sack Counts
Kathund Oct 21, 2025
fc4d58c
chore(deps): Update all non-major dependencies (#673)
renovate[bot] Oct 22, 2025
c4b9c23
chore(renovate): update ignored deps
Kathund Oct 22, 2025
0575cd3
chore(dotenv): Prepare for v17
Kathund Oct 22, 2025
e13a0ed
chore(deps): update dependency dotenv to v17 (#670)
renovate[bot] Oct 22, 2025
009bcfc
chore(dotenv): Update to v17 dotenv config import
Kathund Oct 22, 2025
1286416
Release 12.0.0-15
Kathund Oct 24, 2025
4ca9f1b
chore(docs): bump hypixel-api-reborn
Kathund Oct 24, 2025
3ca23c3
feat(RequestHandler): Set Base URL
Kathund Oct 26, 2025
1462d3a
refactor(WithSelectedProfile)
Kathund Oct 26, 2025
4258142
feat(RequestHandler): noCacheCheck
Kathund Oct 26, 2025
dfb5e22
Release 12.0.0-16
Kathund Oct 26, 2025
948765b
refactor(BuildBattle)
Kathund Oct 29, 2025
8085b80
refactor(MurderMystery)
Kathund Oct 29, 2025
9b05ae1
refactor(Arcade)
Kathund Nov 19, 2025
c360cae
fix(RequestHandler): Set Base URL
Kathund Nov 19, 2025
9a57a54
chore(deps): Update all non-major dependencies (#682)
renovate[bot] Nov 19, 2025
a613b6e
chore(deps): move node types to correct version
Kathund Nov 19, 2025
2fea995
chore(github actions): Update coverage checking
Kathund Nov 19, 2025
7d2a480
fix(casing): Unknown -> UNKNOWN
Kathund Nov 19, 2025
4717323
refactor/fix/feat(types tests)
Kathund Nov 19, 2025
5c93ca0
fix(getSkyBlockProfiles): fetching garden & museum while either are d…
saadndm Nov 20, 2025
a864cd5
fix(RequestHandler): cache by default (#686)
saadndm Nov 20, 2025
516f89a
fix(checkCoverage)
Kathund Nov 20, 2025
89b6433
refactor(BedWars)
Kathund Nov 23, 2025
84254d3
fix(imports)
Kathund Nov 23, 2025
f85891d
Release 12.0.0-17
Kathund Nov 24, 2025
7345a90
fix(BedWars): Unable to get modes
Kathund Dec 14, 2025
8206a9f
fix(imports)
Kathund Dec 14, 2025
e1556fd
Release 12.0.0-18
Kathund Dec 14, 2025
b21ee53
feat(SkyBlockGardenCropMilestones): New crops from 0.24
Kathund Dec 16, 2025
202b781
refactor(SkyWars)
Kathund Dec 19, 2025
59a3277
Release 12.0.0-19
Kathund Dec 19, 2025
4d3ecc8
feat(SkyWarsLevel)
Kathund Dec 21, 2025
7688aa2
feat(SkyWarsActiveKit)
Kathund Dec 21, 2025
82e39bc
Release 12.0.0-20
Kathund Dec 21, 2025
bc7ad1e
fix(Player): Not Parsing YouTube Rank
Kathund Jan 7, 2026
77ec2bb
fix(BedWarsTwoFour): Using `four_four` and not `two_four`
Kathund Jan 7, 2026
80bae98
feat(SkyWars): Ranked Gamemode (#693)
mic0ishere Jan 8, 2026
eaec7a7
feat(BedWars): Castle mode (#692)
mic0ishere Jan 8, 2026
0114a61
fix(SkyWarsKillsDeathsType): Ratio not being created
Kathund Jan 12, 2026
585e705
fix(BedWarsKillsDeathsType): Ratio not being created
Kathund Jan 12, 2026
bfd15b3
fix(ParseMode)
Kathund Jan 12, 2026
e0e9006
fix: eslint
Kathund Jan 13, 2026
dc9d3bf
Release 12.0.0-21
Kathund Jan 13, 2026
5076bcf
fix(SkyWarsKillsDeathsType): deaths grabbing kills data
Kathund Jan 15, 2026
77db3c0
chore(deps): Update all non-major dependencies (#685)
renovate[bot] Jan 15, 2026
1261ba3
feat(Zombies): Handle maps and modes (#694)
saadndm Jan 16, 2026
efa7bc4
feat(Tests)
Kathund Jan 21, 2026
f5bc18f
refactor(scripts): rename lint to eslint
Kathund Jan 21, 2026
27499d6
fix(BedWars): Missind Slumber Data
Kathund Jan 22, 2026
5cae25d
fix: eslint
Kathund Jan 24, 2026
0fd5e46
refactor(BlitzSurvivalGames)
Kathund Jan 24, 2026
e03423b
feat(generateBasicTests): parsing in a path
Kathund Jan 24, 2026
c33578e
feat(ci/cd): Checking index is updated
Kathund Jan 24, 2026
fa11f08
fix(index)
Kathund Jan 24, 2026
b4fd52d
feat(package): prepare script (#696)
Kathund Jan 26, 2026
6132b49
Release 12.0.0-22
Kathund Jan 26, 2026
1b387ae
fix(BlitzSurvivalGames): tests
Kathund Feb 11, 2026
1cbc318
refactor(getGameCounts)
Kathund Feb 11, 2026
49fcb3e
Release 12.0.0-23
Kathund Feb 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 13 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 120

[*.{md,markdown}]
trim_trailing_whitespace = false
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
DOTENV_CONFIG_QUIET=true
HYPIXEL_KEY=HYPIXEL_API_KEY
HYPIXEL_URL=https://api.hypixel.net/v2
79 changes: 74 additions & 5 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,78 @@

If you want to contribute to hypixel-api-reborn, feel free to fork the repository and submit pull request.

## Setup
## Table of contents

1. Fork the repository.
2. Run `npm ci`.
3. Code your idea.
4. Run `npm run eslint` to run ESlint.
- [Requirements](#requirements)
- [Project Setup](#project-setup)
- [Testing your changes](#testing-your-changes)
- [Submitting a pull request](#submitting-a-pull-request)
- [Common issues](#common-issues)

### Requirements

- [Node v20.16.0 or higher](https://nodejs.org/en/learn/getting-started/how-to-install-nodejs)
- [pnpm v9.7.1 or higher](https://pnpm.io/installation)

### Project Setup

Once you have the requirements installed, you can clone the repository and install the dependencies.

```bash
pnpm install
```

Once you have all the packages installed, you will need to create a `.env` file. This file will contain the Hypixel API
key. You can get one by going to the [Hypixel Developer Portal.](https://developer.hypixel.net/) This key will be used
in the tests. Your `.env` file should look like this:

```env
HYPIXEL_KEY=HYPIXEL_API_KEY
```

**If your using vscode** With vscode we have a few recommended extensions that you can install to help with development.
You will be promoted to install these when you open the project in vscode. If you don't see the prompt, you can install
the extensions manually. Here are the recommended extensions:

- [Editor Config](https://marketplace.visualstudio.com/items?itemName=editorconfig.editorconfig)
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)
- [Gitlens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens)
- [Better Comments](https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments)
- [Vitest](https://marketplace.visualstudio.com/items?itemName=vitest.explorer)
- [GitHub Pull Requests](https://marketplace.visualstudio.com/items?itemName=github.vscode-pull-request-github)

### Testing your changes

Before submitting a pull request, make sure to test your changes. You can run the tests with the following command:

```bash
pnpm test
```

### Submitting a pull request

When submitting a pull request, make sure to provide a detailed description of the changes you made. If you are adding a
new feature, make sure to include tests for it. If you are fixing a bug, make sure to include the bug report
information. When making a pull request we have a few requirements:

- Tests must pass (`pnpm test`)
- Code must be linted (`pnpm eslint`)
- Code must be formatted (`pnpm prettier`)
- A clear and detailed description of the changes that you have done
- Checkboxes for the changes you made
- Screenshots of the code running (if applicable)

### Common issues

There are a few common issues that can come up when contributing to the project. Here are a few of them:

- **Tests failing**: Tests will fail when making a pull request. This is because it's missing an API key set in github
actions. If this is the case, you can ignore the tests and someone will run them for you when reviewing the pull
request.

- **Code formatting**: Code must be formatted and the github actions will check for this. If the code is not formatted,
the github action will fail and you will need to correct this before the pull request can be merged.

- **Code using npm**: Any code that includes an npm lock file will not be accepted. This is because we use pnpm for
package management. If you have an npm lock file, you will need to remove it and use pnpm to install the packages.
13 changes: 11 additions & 2 deletions .github/ISSUE_TEMPLATE/Bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,14 @@ about: Report a bug

### Bug report

- Part of code where error occurred
- What error occurred
- Part of code where error occurred:
- What error occurred:

### Expected behavior

- What you expected to happen:

### Additional context

- Node version:
- Package version:
9 changes: 4 additions & 5 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,11 @@
<details>
<summary>Checkboxes</summary>

- [x] I've added new features. (methods or parameters)
- [ ] I've added jsdoc and typings.
- [ ] I've added new features. (methods or parameters)
- [ ] I've fixed bug. (_optional_ you can mention a issue if there is one)
- [ ] I've corrected the spelling in README, documentation, etc.
- [ ] I've tested my code. (`npm run tests`)
- [ ] I've check for issues. (`npm run eslint`)
- [ ] I've fixed my formatting. (`npm run prettier`)
- [ ] I've tested my code. (`pnpm test`)
- [ ] I've check for issues. (`pnpm eslint`)
- [ ] I've fixed my formatting. (`pnpm prettier`)

</details>
2 changes: 1 addition & 1 deletion .github/SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@ be no issue and the team will be greatful for your actions.
To report a vulnerability you can do so in the [Discord Server](https://discord.gg/NSEBNMM) by openeing a support ticket
or you can contact the primary contributor of this repository using the following contact methods:

- @kathund. on Discord
- @.kathund on Discord
- @kathundd on Telegram
19 changes: 0 additions & 19 deletions .github/dependabot.yml

This file was deleted.

24 changes: 24 additions & 0 deletions .github/labels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
XS:
name: size/XS
lines: 0
color: 3CBF00
S:
name: size/S
lines: 50
color: 5D9801
M:
name: size/M
lines: 200
color: 7F7203
L:
name: size/L
lines: 1000
color: A14C05
XL:
name: size/XL
lines: 3000
color: C32607
XXL:
name: size/XXL
lines: 7500
color: E50009
18 changes: 18 additions & 0 deletions .github/renovate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended", "group:allNonMajor"],
"rebaseWhen": "behind-base-branch",
"ignoreDeps": ["pnpm", "node", "@types/node", "typedoc", "hypixel-api-reborn", "skyhelper-networth"],
"semanticCommits": "enabled",
"labels": ["dependencies"],
"schedule": ["* 0 * * *"],
"enabledManagers": ["npm"],
"rangeStrategy": "bump",
"prConcurrentLimit": 5,
"forkProcessing": "enabled",
"prHourlyLimit": 0,
"timezone": "UTC",
"packageRules": [
{ "matchUpdateTypes": ["minor", "patch"], "matchCurrentVersion": "!/^0/", "commitMessagePrefix": "chore(deps):" }
]
}
29 changes: 29 additions & 0 deletions .github/scripts/Utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { readdir } from 'fs/promises';

export interface ScanDirectoryOptions {
goDeep?: boolean;
replaceSrc?: boolean;
}

export async function scanDirectory(directoryPath: string, options?: ScanDirectoryOptions): Promise<string[]> {
const parsedOptions: ScanDirectoryOptions = {
goDeep: options?.goDeep ?? true,
replaceSrc: options?.replaceSrc ?? false
};
const filePaths: string[] = [];
const files = await readdir(directoryPath, { withFileTypes: true });

for (const file of files) {
const fullPath = directoryPath + file.name;
if (file.isDirectory() && parsedOptions.goDeep) {
const paths = await scanDirectory(`${fullPath}/`, parsedOptions);
paths.forEach((path) => filePaths.push(path));
} else {
if (fullPath.endsWith('.test.ts')) continue;
if (fullPath.endsWith('index.ts')) continue;
filePaths.push(fullPath.replaceAll('./src/', parsedOptions.replaceSrc ? './' : './src/'));
}
}

return filePaths;
}
41 changes: 41 additions & 0 deletions .github/scripts/checkCoverage.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { parseStringPromise } from 'xml2js';
import { readFileSync } from 'fs';

const coverageDataFile = readFileSync('./coverage/clover.xml', 'utf-8');
const parsed = await parseStringPromise(coverageDataFile);

const codeStats = parsed.coverage.project[0].metrics[0].$;
const info = {
statements: Number(codeStats.statements),
coveredStatements: Number(codeStats.coveredstatements),
conditionals: Number(codeStats.conditionals),
coveredConditionals: Number(codeStats.coveredconditionals),
methods: Number(codeStats.methods),
coveredMethods: Number(codeStats.coveredmethods)
};

const baseline = 95;

const statementsCoverage = (info.coveredStatements / info.statements) * 100;
if (statementsCoverage <= baseline) {
throw new Error(`Statements is required to be ${baseline}% or higher. Currently ${statementsCoverage.toFixed(2)}`);
}

const conditionalsCoverage = (info.coveredConditionals / info.conditionals) * 100;
if (conditionalsCoverage <= baseline) {
throw new Error(
`Conditionals is required to be ${baseline}% or higher. Currently ${conditionalsCoverage.toFixed(2)}`
);
}

const methodsCoverage = (info.coveredMethods / info.methods) * 100;
if (methodsCoverage <= baseline) {
throw new Error(`Methods is required to be ${baseline}% or higher. Currently ${methodsCoverage.toFixed(2)}`);
}

const combinedCoverage = statementsCoverage + conditionalsCoverage + methodsCoverage;
if (combinedCoverage <= baseline) {
throw new Error(
`Everything Combined is required to be ${baseline}% or higher. Currently ${combinedCoverage.toFixed(2)}`
);
}
32 changes: 32 additions & 0 deletions .github/scripts/generateAPIIndexFile.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { format } from 'prettier';
import { readFileSync, writeFileSync } from 'fs';
import { scanDirectory } from './Utils';

const prettierConfig = JSON.parse(readFileSync('.prettierrc').toString('utf-8'));

(async () => {
const lines: string[] = ['/* v8 ignore next 10000 */', ''];

const importNames: string[] = [];

const apiPaths = await scanDirectory('./src/API/', { goDeep: false, replaceSrc: true });
const fixedAPIPaths: string[] = [];

apiPaths.forEach((path) => {
const importName = path.split('.ts')[0].split('/')[path.split('.ts')[0].split('/').length - 1];
importNames.push(importName);
const fixedPath = path.replaceAll('.ts', '.js').replaceAll('./API/', './');
fixedAPIPaths.push(`import ${importName} from '${fixedPath}';`);
});

fixedAPIPaths.sort().forEach((path) => lines.push(path));

lines.push('');
lines.push('export default {');
importNames.sort().forEach((importName) => lines.push(`${importName},`));
lines.push('};');
lines.push('');

const formatted = await format(lines.join('\n'), { ...prettierConfig, filepath: './src/API/index.ts' });
writeFileSync('./src/API/index.ts', formatted);
})();
Loading