UNPKG

webextension-store-meta

Version:

Get browser extension(webextension) item meta from Chrome Web Store, Firefox add-ons, and Microsoft Edge Add-ons.

85 lines 2.83 kB
"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