UNPKG

starrail-manager

Version:

The StarRail Manager is a Node.js wrapper for the MiHoMo API and StarRail Data used in Honkai: StarRail.\ **This is not an official Honkai: StarRail project.**

84 lines 3.26 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Client = void 0; const scorer_1 = require("../utils/scorer"); const JsonParser_1 = require("../utils/JsonParser"); const renderImg_1 = require("../utils/renderImg"); const ApiError_1 = require("../errors/ApiError"); const languages = ["cht", "cn", "de", "en", "es", "fr", "id", "jp", "kr", "pt", "ru", "th", "vi"]; /** * get data or create Build Card from MiHoMo API */ class Client { constructor(options = {}) { var _a; this.lang = (_a = options.lang) !== null && _a !== void 0 ? _a : "en"; if (!languages.includes(this.lang)) { throw new Error(`The Language is not supported: ${options.lang}`); } } /** * get user and character data from MiHoMo API * @param uid - user id * @returns user and character data in json */ getUserData(uid) { return __awaiter(this, void 0, void 0, function* () { const url = `https://api.mihomo.me/sr_info_parsed/${uid}?lang=${this.lang}`; try { const res = yield fetch(url); if (!res.ok) { throw new ApiError_1.ApiError(`Fetch failed: ${res.statusText}`, res.status); } return yield res.json(); } catch (err) { throw new ApiError_1.ApiError("Fetch error", err); } }); } /** * get character data with scores * @param uid - user id * @param index - character index(0 ~ 7) * @returns character data with score in json */ getCharData(uid, index) { return __awaiter(this, void 0, void 0, function* () { const data = yield this.getUserData(uid); const parsed = (0, JsonParser_1.parseChar)(data, index); if (!parsed) return null; const scoreData = (0, scorer_1.calculateScore)(parsed); return scoreData; }); } /** * create character build card * @param uid - user id * @param index character index(0 ~ 7) * @returns build card in canvas * * @remarks only japanese */ createBuildCard(uid, index) { return __awaiter(this, void 0, void 0, function* () { this.lang = "jp"; const data = yield this.getCharData(uid, index); if (!data) return null; return yield (0, renderImg_1.renderImg)(data); }); } } exports.Client = Client; //# sourceMappingURL=client.js.map