@jsdevtools/rehype-url-inspector
Version:
A rehype plugin to inspect, validate, or rewrite URLs anywhere in an HTML document
42 lines • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.findUrls = void 0;
/**
* Returns a node's URL(s)
*/
function* findUrls(info, options) {
let { selectors, extractors } = options;
let { node } = info;
let i, j, selector, property, extractor, urls, url;
// Using an old-fashined for-loop for speed, since this function is called for every single node
for (i = 0; i < selectors.length; i++) {
selector = selectors[i];
if (node.tagName === selector.tagName && node.properties) {
property = node.properties[selector.propertyName];
if (typeof property === "string") {
if (!selector.pattern || selector.pattern.test(property)) {
yield { ...info, url: property, propertyName: selector.propertyName };
}
}
}
}
// Using an old-fashined for-loop for speed, since this function is called for every single node
for (i = 0; i < extractors.length; i++) {
extractor = extractors[i];
urls = extractor(info);
if (urls) {
urls = Array.isArray(urls) ? urls : [urls];
for (j = 0; j < urls.length; j++) {
url = urls[j];
if (typeof url === "string") {
yield { ...info, url };
}
else {
yield { ...info, ...url };
}
}
}
}
}
exports.findUrls = findUrls;
//# sourceMappingURL=find-urls.js.map