webextension-store-meta
Version:
Get browser extension(webextension) item meta from Chrome Web Store and Firefox add-ons.
85 lines • 2.83 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SourceDOM = void 0;
const dom_1 = require("../utils/dom");
const parse_1 = require("../utils/parse");
class SourceDOM {
dom;
constructor(
/** @internal */
dom) {
this.dom = dom;
}
name() {
const title = (0, dom_1.queryOne)(this.dom, "AddonTitle");
if (title) {
return (0, dom_1.getText)(title.children[0]) || null;
}
return null;
}
description() {
let des = (0, dom_1.getText)((0, dom_1.queryOne)(this.dom, "Addon-summary"));
if (des)
return des;
const desElem = (0, dom_1.queryOne)(this.dom, "Description");
if (desElem) {
des = (0, dom_1.getText)(desElem);
if (des)
return des;
}
return null;
}
ratingValue() {
if (this.badges) {
const elm = (0, dom_1.findOne)((elem) => elem.attribs["data-testid"]?.startsWith("badge-star-"), this.badges);
if (elm) {
return (0, parse_1.parseNum)((0, dom_1.getText)(elm)?.replace(/\([^)]+\)/, ""));
}
}
return null;
}
ratingCount() {
if (this.badges) {
const elm = (0, dom_1.findOne)((elem) => elem.attribs["data-testid"]?.startsWith("badge-star-"), this.badges);
if (elm) {
return (0, parse_1.parseNum)((0, dom_1.getText)(elm)?.match(/\(([^)]+)\)/)?.[1]);
}
}
return null;
}
users() {
if (this.badges) {
const elm = (0, dom_1.findOne)((elem) => elem.attribs["data-testid"]?.startsWith("badge-user-"), this.badges);
if (elm) {
return (0, parse_1.parseNum)((0, dom_1.getText)(elm));
}
}
return null;
}
version() {
return (0, parse_1.parseVersion)((0, dom_1.getText)((0, dom_1.queryOne)(this.dom, "AddonMoreInfo-version")));
}
url() {
return ((0, dom_1.findOne)((elem) => elem.name === "link" && elem.attribs.rel === "canonical", this.dom)?.attribs.href || null);
}
image() {
return (0, dom_1.queryOne)(this.dom, "ScreenShots-image", "img")?.attribs.src || null;
}
size() {
return (0, dom_1.getText)((0, dom_1.queryOne)(this.dom, "AddonMoreInfo-filesize")) || null;
}
lastUpdated() {
return (0, dom_1.getText)((0, dom_1.queryOne)(this.dom, "AddonMoreInfo-last-updated")) || null;
}
/** @internal */
_badges;
/** @internal */
get badges() {
if (this._badges === undefined) {
this._badges = (0, dom_1.queryOne)(this.dom, "AddonBadges");
}
return this._badges;
}
}
exports.SourceDOM = SourceDOM;
//# sourceMappingURL=SourceDOM.js.map