Sync generated provider output

This commit is contained in:
github-actions[bot]
2026-08-14 23:15:40 +00:00
parent 886cd669ef
commit 7b646bafd6
32 changed files with 304 additions and 48 deletions
@@ -835,10 +835,11 @@ class StaticElement {
}
}
closest(selector) {
const matcher = this._doc.matcherFor(selector);
let cur = this.node;
while (cur && cur.type === 'tag') {
try {
if (this._doc.is(cur, selector)) return this._doc.wrap(cur);
if (matcher(cur)) return this._doc.wrap(cur);
} catch {
return null;
}
@@ -862,9 +863,10 @@ class StaticDocument {
this.root = root;
this.selectAll = modules.selectAll;
this.selectOne = modules.selectOne;
this.is = modules.is;
this.compile = modules.compile;
this.domutils = modules.domutils;
this._wrappers = new WeakMap();
this._compiledSelectors = new Map();
this._styleMap = new WeakMap();
this._hoverStyleMap = new WeakMap();
this._accentDashPseudo = new WeakSet();
@@ -882,6 +884,20 @@ class StaticDocument {
}
return wrapped;
}
matcherFor(selector) {
let matcher = this._compiledSelectors.get(selector);
if (!matcher) {
try {
matcher = this.compile(selector);
} catch (err) {
// Cache the failure as a rethrower so a bad selector still reaches
// closest()'s catch on every call, first and repeat alike.
matcher = () => { throw err; };
}
this._compiledSelectors.set(selector, matcher);
}
return matcher;
}
querySelectorAll(selector) {
try {
return this.selectAll(selector, this.root.children || []).map(node => this.wrap(node));
@@ -134,7 +134,7 @@ async function detectHtml(filePath, options = {}) {
parseDocument: htmlparser2.parseDocument,
selectAll: cssSelect.selectAll,
selectOne: cssSelect.selectOne,
is: cssSelect.is,
compile: cssSelect.compile,
csstree,
domutils,
};