hive-bedrock-api 0.0.7 → 0.0.8-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/config.d.ts +3 -2
- package/lib/getStats.d.ts +1 -1
- package/lib/getStats.js +24 -4
- package/lib/index.d.ts +2 -1
- package/lib/index.js +23 -1
- package/lib/misc/Response.d.ts +22 -0
- package/lib/misc/Response.js +27 -0
- package/lib/misc/ResponseData.d.ts +50 -0
- package/lib/misc/ResponseData.js +136 -0
- package/lib/misc/XP.d.ts +20 -0
- package/lib/misc/XP.js +86 -0
- package/lib/misc/fetchData.d.ts +4 -11
- package/lib/misc/fetchData.js +27 -17
- package/lib/misc/getGame.d.ts +11 -0
- package/lib/misc/getGame.js +123 -0
- package/package.json +1 -1
package/lib/config.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export declare type Game = "sky" | "wars" | "hide" | "sg" | "dr" | "murder"
|
|
1
|
+
export declare type Game = string | "sky" | "wars" | "hide" | "sg" | "dr" | "murder";
|
|
2
|
+
export declare type GameWithArray = "sky" | "wars" | "hide" | "sg" | "dr" | "murder" | Game[];
|
|
2
3
|
export declare type Mode = "all" | "monthly";
|
|
3
4
|
export declare type PlayerIdentifier = string;
|
|
4
5
|
export declare const API_ENDPOINT: string;
|
|
5
|
-
export declare const API_GAMES:
|
|
6
|
+
export declare const API_GAMES: Game[];
|
|
6
7
|
export declare const API_MODES: Array<Mode>;
|
package/lib/getStats.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { Game, Mode } from "./config";
|
|
2
|
-
export default function getStats(playerIdentifier: string, game: Game, mode: Mode): Promise<
|
|
2
|
+
export default function getStats(playerIdentifier: string, game: Game, mode: Mode): Promise<unknown>;
|
package/lib/getStats.js
CHANGED
|
@@ -35,14 +35,34 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
35
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
38
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
var config_1 = require("./config");
|
|
43
|
+
var fetchData_1 = __importDefault(require("./misc/fetchData"));
|
|
39
44
|
function getStats(playerIdentifier, game, mode) {
|
|
40
45
|
return __awaiter(this, void 0, void 0, function () {
|
|
41
46
|
return __generator(this, function (_a) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
48
|
+
var gameOption = Array.from(typeof game == "string" ? [game] : game);
|
|
49
|
+
for (var i in gameOption) {
|
|
50
|
+
if (!config_1.API_GAMES.includes(gameOption[i]))
|
|
51
|
+
reject("Unkown game '".concat(gameOption[i], "'."));
|
|
52
|
+
}
|
|
53
|
+
if (!config_1.API_MODES.includes(mode))
|
|
54
|
+
reject("Unkown mode '".concat(mode, "'."));
|
|
55
|
+
if (mode == "all") {
|
|
56
|
+
var userStats = (0, fetchData_1.default)(gameOption.map(function (gameValue) { return "/game/all/".concat(gameValue, "/").concat(playerIdentifier); }));
|
|
57
|
+
resolve(userStats);
|
|
58
|
+
}
|
|
59
|
+
if (mode == "monthly") {
|
|
60
|
+
var userStats = (0, fetchData_1.default)(gameOption.map(function (gameValue) {
|
|
61
|
+
return "/game/monthly/player/".concat(gameValue, "/").concat(playerIdentifier);
|
|
62
|
+
}));
|
|
63
|
+
resolve(userStats);
|
|
64
|
+
}
|
|
65
|
+
})];
|
|
46
66
|
});
|
|
47
67
|
});
|
|
48
68
|
}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -1,10 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
23
|
};
|
|
5
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.fetchData = exports.getStats = void 0;
|
|
25
|
+
exports.getAllGames = exports.getGame = exports.fetchData = exports.getStats = void 0;
|
|
7
26
|
var getStats_1 = __importDefault(require("./getStats"));
|
|
8
27
|
exports.getStats = getStats_1.default;
|
|
9
28
|
var fetchData_1 = __importDefault(require("./misc/fetchData"));
|
|
10
29
|
exports.fetchData = fetchData_1.default;
|
|
30
|
+
var getGame_1 = __importStar(require("./misc/getGame"));
|
|
31
|
+
exports.getGame = getGame_1.default;
|
|
32
|
+
Object.defineProperty(exports, "getAllGames", { enumerable: true, get: function () { return getGame_1.getAllGames; } });
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AxiosResponse } from "axios";
|
|
2
|
+
import { APIPath } from "./fetchData";
|
|
3
|
+
import ResponseData from "./ResponseData";
|
|
4
|
+
interface ResponseType {
|
|
5
|
+
hasFailed: boolean;
|
|
6
|
+
status: number;
|
|
7
|
+
message: string;
|
|
8
|
+
response: AxiosResponse;
|
|
9
|
+
}
|
|
10
|
+
interface RatelimitsType {
|
|
11
|
+
limit: number;
|
|
12
|
+
remaining: number;
|
|
13
|
+
}
|
|
14
|
+
export default class Response {
|
|
15
|
+
apiPath: APIPath;
|
|
16
|
+
response: ResponseType;
|
|
17
|
+
ratelimits: RatelimitsType;
|
|
18
|
+
data: ResponseData;
|
|
19
|
+
constructor(apiPath: APIPath, apiResponse: AxiosResponse);
|
|
20
|
+
getStats(): ResponseData;
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var ResponseData_1 = __importDefault(require("./ResponseData"));
|
|
7
|
+
var Response = /** @class */ (function () {
|
|
8
|
+
function Response(apiPath, apiResponse) {
|
|
9
|
+
this.apiPath = apiPath;
|
|
10
|
+
this.response = {
|
|
11
|
+
hasFailed: apiResponse.status == 200 ? false : true,
|
|
12
|
+
status: apiResponse.status,
|
|
13
|
+
message: apiResponse.statusText,
|
|
14
|
+
response: apiResponse,
|
|
15
|
+
};
|
|
16
|
+
this.ratelimits = {
|
|
17
|
+
limit: parseInt(apiResponse.headers["x-ratelimit-limit"]) | 0,
|
|
18
|
+
remaining: parseInt(apiResponse.headers["x-ratelimit-remaining"]) | 0,
|
|
19
|
+
};
|
|
20
|
+
this.data = new ResponseData_1.default(this.apiPath, apiResponse.data);
|
|
21
|
+
}
|
|
22
|
+
Response.prototype.getStats = function () {
|
|
23
|
+
return this.data;
|
|
24
|
+
};
|
|
25
|
+
return Response;
|
|
26
|
+
}());
|
|
27
|
+
exports.default = Response;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { APIPath } from "./fetchData";
|
|
2
|
+
import { GameOutput } from "./getGame";
|
|
3
|
+
interface PlayerResponseData {
|
|
4
|
+
index?: number;
|
|
5
|
+
human_index?: number;
|
|
6
|
+
username?: string;
|
|
7
|
+
UUID?: string;
|
|
8
|
+
uncapped_xp?: number;
|
|
9
|
+
xp?: number;
|
|
10
|
+
played?: number;
|
|
11
|
+
victories?: number;
|
|
12
|
+
first_played?: number;
|
|
13
|
+
deaths?: number;
|
|
14
|
+
kills?: number;
|
|
15
|
+
final_kills?: number;
|
|
16
|
+
treasure_destroyed?: number;
|
|
17
|
+
prestige?: number;
|
|
18
|
+
mystery_chests_destroyed?: number;
|
|
19
|
+
ores_mined?: number;
|
|
20
|
+
spells_used?: number;
|
|
21
|
+
checkpoints?: number;
|
|
22
|
+
activated?: number;
|
|
23
|
+
hider_kills?: number;
|
|
24
|
+
seeker_kills?: number;
|
|
25
|
+
crates?: number;
|
|
26
|
+
deathmatches?: number;
|
|
27
|
+
cows?: number;
|
|
28
|
+
coins?: number;
|
|
29
|
+
murders?: number;
|
|
30
|
+
murderer_eliminations?: number;
|
|
31
|
+
}
|
|
32
|
+
interface XPObject {
|
|
33
|
+
level: number;
|
|
34
|
+
xpToNextLevel: number;
|
|
35
|
+
xpToMaxLevel: number;
|
|
36
|
+
percentageToNextLevel: number;
|
|
37
|
+
percentageToMaxLevel: number;
|
|
38
|
+
}
|
|
39
|
+
export default class ResponseData {
|
|
40
|
+
apiPath: APIPath;
|
|
41
|
+
data: PlayerResponseData;
|
|
42
|
+
game: GameOutput;
|
|
43
|
+
xp: XPObject;
|
|
44
|
+
constructor(apiPath: APIPath, responseData: PlayerResponseData);
|
|
45
|
+
private _saveRaw;
|
|
46
|
+
private _currentGame;
|
|
47
|
+
get rawData(): PlayerResponseData;
|
|
48
|
+
private _addCustomValues;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var config_1 = require("../config");
|
|
18
|
+
var getGame_1 = __importDefault(require("./getGame"));
|
|
19
|
+
var XP_1 = require("./XP");
|
|
20
|
+
var _rawData = {};
|
|
21
|
+
var ResponseData = /** @class */ (function () {
|
|
22
|
+
function ResponseData(apiPath, responseData) {
|
|
23
|
+
this.apiPath = apiPath;
|
|
24
|
+
this.data = responseData;
|
|
25
|
+
this.game = (0, getGame_1.default)(this._currentGame());
|
|
26
|
+
this._saveRaw(responseData);
|
|
27
|
+
this._addCustomValues();
|
|
28
|
+
if (this.data.xp) {
|
|
29
|
+
var xpClass = new XP_1.XP(this.game.key, this.data.xp);
|
|
30
|
+
this.xp = {
|
|
31
|
+
level: xpClass.getLevel(),
|
|
32
|
+
xpToNextLevel: xpClass.getXPToNextLevel(),
|
|
33
|
+
xpToMaxLevel: xpClass.getXPToMaxLevel(),
|
|
34
|
+
percentageToNextLevel: xpClass.getPercentageToNextLevel(),
|
|
35
|
+
percentageToMaxLevel: xpClass.getPercentageToMaxLevel(),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.xp = {
|
|
40
|
+
level: 0,
|
|
41
|
+
xpToNextLevel: 0,
|
|
42
|
+
xpToMaxLevel: 0,
|
|
43
|
+
percentageToNextLevel: 0,
|
|
44
|
+
percentageToMaxLevel: 0,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
ResponseData.prototype._saveRaw = function (responseData) {
|
|
49
|
+
_rawData = responseData;
|
|
50
|
+
};
|
|
51
|
+
ResponseData.prototype._currentGame = function () {
|
|
52
|
+
for (var game in config_1.API_GAMES) {
|
|
53
|
+
if (this.apiPath.includes("/".concat(config_1.API_GAMES[game], "/"))) {
|
|
54
|
+
return config_1.API_GAMES[game];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return "";
|
|
58
|
+
};
|
|
59
|
+
Object.defineProperty(ResponseData.prototype, "rawData", {
|
|
60
|
+
get: function () {
|
|
61
|
+
return _rawData;
|
|
62
|
+
},
|
|
63
|
+
enumerable: false,
|
|
64
|
+
configurable: true
|
|
65
|
+
});
|
|
66
|
+
ResponseData.prototype._addCustomValues = function () {
|
|
67
|
+
var _a, _b;
|
|
68
|
+
var values = {};
|
|
69
|
+
var rawData = this.rawData;
|
|
70
|
+
// xpr (xp per round)
|
|
71
|
+
if (rawData.xp && rawData.played) {
|
|
72
|
+
values.xpr = rawData.xp / rawData.played;
|
|
73
|
+
}
|
|
74
|
+
// win_percentage, games_lost
|
|
75
|
+
if (rawData.played && rawData.victories) {
|
|
76
|
+
values.win_percentage = parseFloat((rawData.victories / rawData.played).toFixed(4));
|
|
77
|
+
values.games_lost = rawData.played - rawData.victories;
|
|
78
|
+
}
|
|
79
|
+
// kpr (kills per round)
|
|
80
|
+
var kills = (_b = (_a = rawData.kills) !== null && _a !== void 0 ? _a : rawData.hider_kills) !== null && _b !== void 0 ? _b : rawData.murders;
|
|
81
|
+
if (kills && rawData.played) {
|
|
82
|
+
values.kpr = parseFloat((kills / rawData.played).toFixed(2));
|
|
83
|
+
}
|
|
84
|
+
// dpr (deaths per round)
|
|
85
|
+
if (rawData.deaths && rawData.played) {
|
|
86
|
+
values.dpr = parseFloat((rawData.deaths / rawData.played).toFixed(2));
|
|
87
|
+
}
|
|
88
|
+
// chpr (checkpoints per round)
|
|
89
|
+
if (rawData.checkpoints && rawData.played) {
|
|
90
|
+
values.chpr = parseFloat((rawData.checkpoints / rawData.played).toFixed(2));
|
|
91
|
+
}
|
|
92
|
+
// kdr (kill death raito)
|
|
93
|
+
if (rawData.kills && rawData.deaths) {
|
|
94
|
+
values.kdr = parseFloat((rawData.kills / rawData.deaths).toFixed(2));
|
|
95
|
+
}
|
|
96
|
+
// sdr (seeker kills / death raito)
|
|
97
|
+
if (rawData.seeker_kills && rawData.deaths) {
|
|
98
|
+
values.sdr = parseFloat((rawData.seeker_kills / rawData.deaths).toFixed(2));
|
|
99
|
+
}
|
|
100
|
+
// fdr (final kills / death raito)
|
|
101
|
+
if (rawData.final_kills && rawData.deaths) {
|
|
102
|
+
values.fdr = parseFloat((rawData.final_kills / rawData.deaths).toFixed(2));
|
|
103
|
+
}
|
|
104
|
+
// fpr (final kills per round)
|
|
105
|
+
if (rawData.final_kills && rawData.played) {
|
|
106
|
+
values.fpr = parseFloat((rawData.final_kills / rawData.played).toFixed(2));
|
|
107
|
+
}
|
|
108
|
+
// tpr (treasures per round)
|
|
109
|
+
if (rawData.treasure_destroyed && rawData.played) {
|
|
110
|
+
values.tpr = parseFloat((rawData.treasure_destroyed / rawData.played).toFixed(2));
|
|
111
|
+
}
|
|
112
|
+
// mpr (mystery chests per round)
|
|
113
|
+
if (rawData.mystery_chests_destroyed && rawData.played) {
|
|
114
|
+
values.mpr = parseFloat((rawData.mystery_chests_destroyed / rawData.played).toFixed(2));
|
|
115
|
+
}
|
|
116
|
+
// cpr (coins per round)
|
|
117
|
+
if (rawData.coins && rawData.played) {
|
|
118
|
+
values.cpr = parseFloat((rawData.coins / rawData.played).toFixed(2));
|
|
119
|
+
}
|
|
120
|
+
// dmpr (deathmatches per round)
|
|
121
|
+
if (rawData.deathmatches && rawData.played) {
|
|
122
|
+
values.dmpr = parseFloat((rawData.deathmatches / rawData.played).toFixed(2));
|
|
123
|
+
}
|
|
124
|
+
// crpr (crates per round)
|
|
125
|
+
if (rawData.crates && rawData.played) {
|
|
126
|
+
values.crpr = parseFloat((rawData.crates / rawData.played).toFixed(2));
|
|
127
|
+
}
|
|
128
|
+
// copr (cows per round)
|
|
129
|
+
if (rawData.cows && rawData.played) {
|
|
130
|
+
values.copr = parseFloat((rawData.cows / rawData.played).toFixed(2));
|
|
131
|
+
}
|
|
132
|
+
this.data = __assign(__assign({}, this.data), values);
|
|
133
|
+
};
|
|
134
|
+
return ResponseData;
|
|
135
|
+
}());
|
|
136
|
+
exports.default = ResponseData;
|
package/lib/misc/XP.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Game } from "../config";
|
|
2
|
+
interface Level {
|
|
3
|
+
level: number;
|
|
4
|
+
xp: number;
|
|
5
|
+
}
|
|
6
|
+
export declare class XP {
|
|
7
|
+
xp: number;
|
|
8
|
+
game: Game;
|
|
9
|
+
max: number;
|
|
10
|
+
cap: number;
|
|
11
|
+
increment: number;
|
|
12
|
+
constructor(game: Game, xp: number);
|
|
13
|
+
_getTable(): Level[];
|
|
14
|
+
getLevel(round?: boolean): number;
|
|
15
|
+
getPercentageToNextLevel(): number;
|
|
16
|
+
getXPToNextLevel(): number;
|
|
17
|
+
getPercentageToMaxLevel(): number;
|
|
18
|
+
getXPToMaxLevel(): number;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
package/lib/misc/XP.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.XP = void 0;
|
|
7
|
+
var getGame_1 = __importDefault(require("./getGame"));
|
|
8
|
+
var XP = /** @class */ (function () {
|
|
9
|
+
function XP(game, xp) {
|
|
10
|
+
this.xp = xp;
|
|
11
|
+
this.game = (0, getGame_1.default)(game).key;
|
|
12
|
+
this.max = (0, getGame_1.default)(game).maxLevel;
|
|
13
|
+
this.cap = (0, getGame_1.default)(game).xpCap;
|
|
14
|
+
this.increment = (0, getGame_1.default)(game).xpIncrement;
|
|
15
|
+
}
|
|
16
|
+
XP.prototype._getTable = function () {
|
|
17
|
+
var _a;
|
|
18
|
+
var table = [];
|
|
19
|
+
var currentXP = 0;
|
|
20
|
+
for (var i = 0; i < this.max; i++) {
|
|
21
|
+
var lastValue = ((_a = table[table.length - 1]) === null || _a === void 0 ? void 0 : _a.xp) || 0;
|
|
22
|
+
table[i] = { level: i + 1, xp: lastValue + currentXP };
|
|
23
|
+
if (this.cap == 0 && i != this.max) {
|
|
24
|
+
currentXP = currentXP + this.increment;
|
|
25
|
+
}
|
|
26
|
+
else if (i != this.max - 1 && i < this.cap - 1)
|
|
27
|
+
currentXP = currentXP + this.increment;
|
|
28
|
+
}
|
|
29
|
+
return table;
|
|
30
|
+
};
|
|
31
|
+
XP.prototype.getLevel = function (round) {
|
|
32
|
+
if (round === void 0) { round = true; }
|
|
33
|
+
var increment = this.increment / 2;
|
|
34
|
+
var level = (-increment +
|
|
35
|
+
Math.sqrt(Math.pow(increment, 2) - 4 * increment * -this.xp)) /
|
|
36
|
+
(2 * increment) +
|
|
37
|
+
1;
|
|
38
|
+
if (this.cap && level > this.cap)
|
|
39
|
+
level =
|
|
40
|
+
this.cap +
|
|
41
|
+
(this.xp -
|
|
42
|
+
(increment * Math.pow(this.cap - 1, 2) +
|
|
43
|
+
(this.cap - 1) * increment)) /
|
|
44
|
+
((this.cap - 1) * increment * 2);
|
|
45
|
+
var rounded = parseInt(level.toString());
|
|
46
|
+
if (round)
|
|
47
|
+
return rounded;
|
|
48
|
+
return level;
|
|
49
|
+
};
|
|
50
|
+
XP.prototype.getPercentageToNextLevel = function () {
|
|
51
|
+
var table = this._getTable();
|
|
52
|
+
var level = this.getLevel();
|
|
53
|
+
var currentLevel = table[level - 1];
|
|
54
|
+
var nextLevel = table[level];
|
|
55
|
+
if (!nextLevel)
|
|
56
|
+
return 1;
|
|
57
|
+
var levelDone = this.xp - currentLevel.xp;
|
|
58
|
+
var levelXP = nextLevel.xp - currentLevel.xp;
|
|
59
|
+
return levelDone / levelXP;
|
|
60
|
+
};
|
|
61
|
+
XP.prototype.getXPToNextLevel = function () {
|
|
62
|
+
var table = this._getTable();
|
|
63
|
+
var level = this.getLevel();
|
|
64
|
+
var currentLevel = table[level - 1];
|
|
65
|
+
var nextLevel = table[level];
|
|
66
|
+
if (!nextLevel)
|
|
67
|
+
return 0;
|
|
68
|
+
var levelDone = this.xp - currentLevel.xp;
|
|
69
|
+
var levelXP = nextLevel.xp - currentLevel.xp;
|
|
70
|
+
return levelXP - levelDone;
|
|
71
|
+
};
|
|
72
|
+
XP.prototype.getPercentageToMaxLevel = function () {
|
|
73
|
+
var table = this._getTable();
|
|
74
|
+
if (this.xp > table[table.length - 1].xp)
|
|
75
|
+
return 1;
|
|
76
|
+
return this.xp / table[table.length - 1].xp;
|
|
77
|
+
};
|
|
78
|
+
XP.prototype.getXPToMaxLevel = function () {
|
|
79
|
+
var table = this._getTable();
|
|
80
|
+
if (this.xp > table[table.length - 1].xp)
|
|
81
|
+
return 0;
|
|
82
|
+
return table[table.length - 1].xp - this.xp;
|
|
83
|
+
};
|
|
84
|
+
return XP;
|
|
85
|
+
}());
|
|
86
|
+
exports.XP = XP;
|
package/lib/misc/fetchData.d.ts
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
status: any;
|
|
6
|
-
message: any;
|
|
7
|
-
};
|
|
8
|
-
ratelimits: {};
|
|
9
|
-
data: {};
|
|
10
|
-
} | undefined>;
|
|
11
|
-
export {};
|
|
1
|
+
import { Game } from "../config";
|
|
2
|
+
import Response from "./Response";
|
|
3
|
+
export declare type APIPath = `/game/all/${Game}/${string}` | `/game/all/${Game}` | `/game/monthly/${Game}` | `/game/monthly/${Game}/${number}/${number}/${number}/${number}` | `/game/monthly/player/${Game}/${string}` | `/game/monthly/player/${Game}/${string}/${number}/${number}`;
|
|
4
|
+
export default function fetchData(apiPaths: APIPath[]): Promise<Response[]>;
|
package/lib/misc/fetchData.js
CHANGED
|
@@ -41,31 +41,41 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
42
|
var axios_1 = __importDefault(require("axios"));
|
|
43
43
|
var config_1 = require("../config");
|
|
44
|
-
|
|
44
|
+
var Response_1 = __importDefault(require("./Response"));
|
|
45
|
+
function fetch(apiPath) {
|
|
45
46
|
return __awaiter(this, void 0, void 0, function () {
|
|
46
|
-
var request, err_1
|
|
47
|
-
return __generator(this, function (
|
|
48
|
-
switch (
|
|
47
|
+
var request, err_1;
|
|
48
|
+
return __generator(this, function (_a) {
|
|
49
|
+
switch (_a.label) {
|
|
49
50
|
case 0:
|
|
50
|
-
|
|
51
|
+
_a.trys.push([0, 2, , 3]);
|
|
51
52
|
return [4 /*yield*/, axios_1.default.get(config_1.API_ENDPOINT + apiPath)];
|
|
52
53
|
case 1:
|
|
53
|
-
request =
|
|
54
|
-
return [
|
|
54
|
+
request = _a.sent();
|
|
55
|
+
return [2 /*return*/, [apiPath, request]];
|
|
55
56
|
case 2:
|
|
56
|
-
err_1 =
|
|
57
|
-
|
|
58
|
-
return [2 /*return*/, {
|
|
59
|
-
response: {
|
|
60
|
-
status: status_1,
|
|
61
|
-
message: statusText,
|
|
62
|
-
},
|
|
63
|
-
ratelimits: {},
|
|
64
|
-
data: {},
|
|
65
|
-
}];
|
|
57
|
+
err_1 = _a.sent();
|
|
58
|
+
return [2 /*return*/, [apiPath, err_1 === null || err_1 === void 0 ? void 0 : err_1.response]];
|
|
66
59
|
case 3: return [2 /*return*/];
|
|
67
60
|
}
|
|
68
61
|
});
|
|
69
62
|
});
|
|
70
63
|
}
|
|
64
|
+
function fetchData(apiPaths) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
66
|
+
var responses, responseValues;
|
|
67
|
+
return __generator(this, function (_a) {
|
|
68
|
+
switch (_a.label) {
|
|
69
|
+
case 0: return [4 /*yield*/, Promise.all(apiPaths.map(function (path) { return fetch(path); }))];
|
|
70
|
+
case 1:
|
|
71
|
+
responses = _a.sent();
|
|
72
|
+
responseValues = responses.map(function (_a) {
|
|
73
|
+
var apiPath = _a[0], response = _a[1];
|
|
74
|
+
return new Response_1.default(apiPath, response);
|
|
75
|
+
});
|
|
76
|
+
return [2 /*return*/, responseValues];
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
71
81
|
exports.default = fetchData;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Game } from "../config";
|
|
2
|
+
export interface GameOutput {
|
|
3
|
+
key: Game;
|
|
4
|
+
name: string;
|
|
5
|
+
maxLevel: number;
|
|
6
|
+
maxPrestige: number;
|
|
7
|
+
xpCap: number;
|
|
8
|
+
xpIncrement: number;
|
|
9
|
+
}
|
|
10
|
+
export default function getGame(game: Game): GameOutput;
|
|
11
|
+
export declare function getAllGames(): GameOutput[];
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAllGames = void 0;
|
|
4
|
+
var games = new Map([
|
|
5
|
+
[
|
|
6
|
+
"wars",
|
|
7
|
+
{
|
|
8
|
+
key: "wars",
|
|
9
|
+
name: "Treasure Wars",
|
|
10
|
+
maxLevel: 100,
|
|
11
|
+
maxPrestige: 5,
|
|
12
|
+
xpCap: 52,
|
|
13
|
+
xpIncrement: 150,
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
[
|
|
17
|
+
"sg",
|
|
18
|
+
{
|
|
19
|
+
key: "sg",
|
|
20
|
+
name: "Survival Games",
|
|
21
|
+
maxLevel: 30,
|
|
22
|
+
maxPrestige: 0,
|
|
23
|
+
xpCap: 0,
|
|
24
|
+
xpIncrement: 150,
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
[
|
|
28
|
+
"sky",
|
|
29
|
+
{
|
|
30
|
+
key: "sky",
|
|
31
|
+
name: "Skywars",
|
|
32
|
+
maxLevel: 75,
|
|
33
|
+
maxPrestige: 0,
|
|
34
|
+
xpCap: 52,
|
|
35
|
+
xpIncrement: 150,
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
[
|
|
39
|
+
"murder",
|
|
40
|
+
{
|
|
41
|
+
key: "murder",
|
|
42
|
+
name: "Murder Mystery",
|
|
43
|
+
maxLevel: 100,
|
|
44
|
+
maxPrestige: 0,
|
|
45
|
+
xpCap: 82,
|
|
46
|
+
xpIncrement: 100,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
[
|
|
50
|
+
"build",
|
|
51
|
+
{
|
|
52
|
+
key: "build",
|
|
53
|
+
name: "Just Build",
|
|
54
|
+
maxLevel: 20,
|
|
55
|
+
maxPrestige: 0,
|
|
56
|
+
xpCap: 0,
|
|
57
|
+
xpIncrement: 100,
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
[
|
|
61
|
+
"hide",
|
|
62
|
+
{
|
|
63
|
+
key: "hide",
|
|
64
|
+
name: "Hide and Seek",
|
|
65
|
+
maxLevel: 50,
|
|
66
|
+
maxPrestige: 0,
|
|
67
|
+
xpCap: 0,
|
|
68
|
+
xpIncrement: 100,
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
[
|
|
72
|
+
"dr",
|
|
73
|
+
{
|
|
74
|
+
key: "dr",
|
|
75
|
+
name: "DeathRun",
|
|
76
|
+
maxLevel: 40,
|
|
77
|
+
maxPrestige: 0,
|
|
78
|
+
xpCap: 0,
|
|
79
|
+
xpIncrement: 200,
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
]);
|
|
83
|
+
function getGame(game) {
|
|
84
|
+
var blank = {
|
|
85
|
+
key: "",
|
|
86
|
+
name: "",
|
|
87
|
+
maxLevel: 0,
|
|
88
|
+
maxPrestige: 0,
|
|
89
|
+
xpCap: 0,
|
|
90
|
+
xpIncrement: 0,
|
|
91
|
+
};
|
|
92
|
+
switch (game) {
|
|
93
|
+
case "wars":
|
|
94
|
+
var value = games.get("wars");
|
|
95
|
+
return value ? value : blank;
|
|
96
|
+
case "sg":
|
|
97
|
+
var value = games.get("sg");
|
|
98
|
+
return value ? value : blank;
|
|
99
|
+
case "sky":
|
|
100
|
+
var value = games.get("sky");
|
|
101
|
+
return value ? value : blank;
|
|
102
|
+
case "murder":
|
|
103
|
+
var value = games.get("murder");
|
|
104
|
+
return value ? value : blank;
|
|
105
|
+
case "build":
|
|
106
|
+
var value = games.get("build");
|
|
107
|
+
return value ? value : blank;
|
|
108
|
+
case "hide":
|
|
109
|
+
var value = games.get("hide");
|
|
110
|
+
return value ? value : blank;
|
|
111
|
+
case "dr":
|
|
112
|
+
var value = games.get("dr");
|
|
113
|
+
return value ? value : blank;
|
|
114
|
+
default:
|
|
115
|
+
return blank;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.default = getGame;
|
|
119
|
+
function getAllGames() {
|
|
120
|
+
var arrayValue = Array.from(games.values());
|
|
121
|
+
return arrayValue;
|
|
122
|
+
}
|
|
123
|
+
exports.getAllGames = getAllGames;
|