UNPKG

@jsdevtools/rehype-url-inspector

Version:

A rehype plugin to inspect, validate, or rewrite URLs anywhere in an HTML document

43 lines 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createUrlSelector = exports.defaultSelectors = void 0; const urlRegex = require("url-regex"); /** * Matches simple CSS attribute selectors (e.g. `a[href]` or `img[src]`) */ const cssSelectorPattern = /^([a-z0-9_-]+)\[([a-z0-9_-]+)\]$/i; /** * Matches a string that is a URL */ const urlPattern = urlRegex({ exact: true }); /** * The default URL selectors */ exports.defaultSelectors = [ createUrlSelector("a[href]"), createUrlSelector("link[href]"), createUrlSelector("img[src]"), createUrlSelector("script[src]"), /** * Many `<meta>` tags have a `content` attribute that is a URL * * @example * <meta rel="canonical" content="http://example.com"> * <meta name="twitter:image" content="http://example.com/logo.png"> */ { tagName: "meta", propertyName: "content", pattern: urlPattern }, ]; /** * Creates a `UrlSelector` from a CSS attribute selector */ function createUrlSelector(selector) { let match = cssSelectorPattern.exec(selector); if (!match) { throw new Error(`Invalid or unsupported CSS selector: ${selector}`); } let tagName = match[1].toLowerCase(); let propertyName = match[2].toLowerCase(); return { tagName, propertyName }; } exports.createUrlSelector = createUrlSelector; //# sourceMappingURL=selectors.js.map