modrinth
Version:
JavaScript library for accessing the Modrinth API
84 lines (83 loc) • 3.24 kB
JavaScript
"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;