UNPKG

modrinth

Version:

JavaScript library for accessing the Modrinth API

84 lines (83 loc) 3.24 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()); }); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModrinthObject = void 0; class ModrinthObject { constructor(modrinth, source) { this._dirty = false; this._modrinth = modrinth; this._source = source; this.mutate(source); this.object_url = this.getObjectURL(); this.resource_url = this.getResourceURL(); if (!modrinth.useCache) return; modrinth.cache.set(this.constructor.getCacheKey(this.id), this); } mutate(source) { for (let key in source) { if (Object.getPrototypeOf(this)[key]) continue; Object.defineProperty(this, key, { value: source[key], configurable: true, enumerable: true, writable: true }); } // NOTE: Dangerous type casting?? return this; } fetch() { return __awaiter(this, void 0, void 0, function* () { const Model = this.constructor; return Model.fetch(this._modrinth, this.id); }); } get() { return __awaiter(this, void 0, void 0, function* () { return this.mutate(yield this.fetch()); }); } getResourceLocation() { return this.constructor.getResourceLocation(this.slug || this.id); } getResourceURL() { return this._modrinth.siteURL + this.getResourceLocation(); } getObjectLocation() { return this.constructor.getObjectLocation(this.id); } getObjectURL() { return this._modrinth.apiURL + this.getObjectLocation(); } toJSON() { // remove circular structures. const _a = this, { _modrinth, _source } = _a, object = __rest(_a, ["_modrinth", "_source"]); return object; } toString() { const identifier = this.name || this.title || this.slug || this.id; return `${identifier} <${this.constructor.name}; ${this.resource_url}>`; } } exports.ModrinthObject = ModrinthObject;