/** * True when `text` is worth handing to the heavy remark/rehype graph at all: * Layers 2 and 3 can only find something in text that carries an HTML tag or a * markdown link. THE pre-gate for both entry points that run those layers * (`sanitize()` in ./index.mjs, `sanitizeText()` in ./output.mjs) — it lives * here, next to the two regexes it composes, so the two cannot gate on * different conditions and pay (or skip) the ~200ms import for different inputs. * @param {string} text * @returns {boolean} */ export function needsMarkdownPipeline(text: string): boolean; /** * True when Layer 3 (exfil + confusable-host detection) can find something. * A superset of {@link needsMarkdownPipeline}: a markup-bearing document can * carry a relative exfil target (`[x](/collect?d=…)`), and a plain-prose one * can carry an absolute URL with no markup at all. Layer 2 keeps the narrower * gate — it can only splice what a tag delimits. * @param {string} text * @returns {boolean} */ export function needsUrlScan(text: string): boolean; /** * True when either pre-gate alternation shape-matches `text`. Split into two * literals (see SECRET_HINT) and OR'd so neither grows into a * polynomial-backtracking shape. * @param {string} text * @returns {boolean} */ export function matchesSecretHint(text: string): boolean; /** * Cheap, dependency-free pre-gates shared by the HTML layer (Layers 2 & 3) and * re-exported from both the package root and the `./html` subpath. * * These are pulled out of `html.mjs` so the package root can re-export them * without dragging in the heavy remark/rehype/unified graph: a static * `export … from "./html.mjs"` would eagerly evaluate that ~200ms module on * every root import, defeating the lazy-load design. This module imports * nothing, so re-exporting it is free. */ /** * Matches any HTML tag-like construct: opening tags, closing tags (``, which the HTML tokenizer hides exactly like a comment). * The `