From 31678527538d9c41b6ef2a52e10e38b9c5d8a590 Mon Sep 17 00:00:00 2001 From: Affaan Mustafa Date: Fri, 3 Jul 2026 20:51:49 -0700 Subject: [PATCH] fix(gateguard): drop \x00 placeholder in glob-to-regex (eslint no-control-regex) (#2439) Replace the NUL-byte '**' placeholder trick with split('**')/join('.*'), which is semantically identical and lint-clean under eslint 10. --- scripts/hooks/gateguard-fact-force.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/scripts/hooks/gateguard-fact-force.js b/scripts/hooks/gateguard-fact-force.js index 627f7fdf..3f7f9ed8 100644 --- a/scripts/hooks/gateguard-fact-force.js +++ b/scripts/hooks/gateguard-fact-force.js @@ -116,10 +116,9 @@ function getExemptMatchers() { .map(glob => { const source = glob .replace(/[.+^${}()|[\]\\]/g, '\\$&') // escape regex metachars, keep * and ? - .replace(/\*\*/g, '\x00') // ** placeholder (cross-segment) - .replace(/\*/g, '[^/]*') // * -> within a segment - .replace(/\x00/g, '.*') // ** -> across segments - .replace(/\?/g, '.'); + .split('**') // ** boundaries (cross-segment) + .map(part => part.replace(/\*/g, '[^/]*').replace(/\?/g, '.')) + .join('.*'); // ** -> across segments try { return new RegExp(source); } catch (_) {