UNPKG

webextension-store-meta

Version:

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

51 lines 1.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.queryOne = exports.getText = exports.findOne = void 0; const domhandler_1 = require("domhandler"); const findOne = (test, maybeNode, recurse = true) => { const nodes = Array.isArray(maybeNode) ? maybeNode : [maybeNode]; let elem = null; for (let i = 0; i < nodes.length && !elem; i++) { const node = nodes[i]; if (!(0, domhandler_1.isTag)(node)) { continue; } if (test(node)) { elem = node; } else if (recurse && node.children.length > 0) { elem = (0, exports.findOne)(test, node.children, true); } } return elem; }; exports.findOne = findOne; /** * Get a node's trimmed inner text. * domutils's stringify module is too heavy. * * @param node Node to get the inner text of. * @returns `node`'s trimmed inner text. */ const getText = (node) => { if (!node) return ""; if (Array.isArray(node)) return node.map(exports.getText).join(""); if ((0, domhandler_1.isTag)(node)) return node.name === "br" ? "\n" : (0, exports.getText)(node.children); if ((0, domhandler_1.isCDATA)(node)) return (0, exports.getText)(node.children); if ((0, domhandler_1.isText)(node)) return node.data.trim(); return ""; }; exports.getText = getText; const queryOne = (node, className, tagName) => { const tester = new RegExp(`(?:^|\\s)${className}(?:\\s|$)`); return (0, exports.findOne)((elem) => !!elem.attribs.class && (!tagName || tagName === elem.name) && tester.test(elem.attribs.class), node); }; exports.queryOne = queryOne; //# sourceMappingURL=dom.js.map