diff --git a/packages/page-controller/src/dom/index.ts b/packages/page-controller/src/dom/index.ts index 07cf724..f8e2608 100644 --- a/packages/page-controller/src/dom/index.ts +++ b/packages/page-controller/src/dom/index.ts @@ -74,9 +74,16 @@ export function getFlatTree(config: DomConfig): FlatDomTree { return elements } +const globRegexCache = new Map() + function globToRegex(pattern: string): RegExp { - const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&') - return new RegExp(`^${escaped.replace(/\*/g, '.*')}$`) + let regex = globRegexCache.get(pattern) + if (!regex) { + const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&') + regex = new RegExp(`^${escaped.replace(/\*/g, '.*')}$`) + globRegexCache.set(pattern, regex) + } + return regex } function matchAttributes(