From 5852054e3a452ca4c92f20aa5ceaa53e19d75f01 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Mar 2026 14:29:56 +0000 Subject: [PATCH] perf: cache compiled regexes in globToRegex to avoid repeated compilation Co-authored-by: gaomeng1900 <10131203+gaomeng1900@users.noreply.github.com> --- packages/page-controller/src/dom/index.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/page-controller/src/dom/index.ts b/packages/page-controller/src/dom/index.ts index b24c5c1..11ba851 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(