From e2a0997911aadc88bb5a24d53bd66a9538f9264f Mon Sep 17 00:00:00 2001 From: overlookmotel <557937+overlookmotel@users.noreply.github.com> Date: Fri, 14 Nov 2025 12:55:21 +0000 Subject: [PATCH] perf(linter/plugins): recycle empty visitor object in ESLint compat mode (#15693) Small perf optimization. In ESLint compat mode, `create` returns an empty visitor object when `before` hook returns `false`. Reuse the same object, instead of creating a new one each time. --- apps/oxlint/src-js/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/oxlint/src-js/index.ts b/apps/oxlint/src-js/index.ts index b1feb57c5493d..ec03f26d83d04 100644 --- a/apps/oxlint/src-js/index.ts +++ b/apps/oxlint/src-js/index.ts @@ -51,6 +51,9 @@ const { assign: ObjectAssign, } = Object; +// Empty visitor object, returned by `create` when `before` hook returns `false`. +const EMPTY_VISITOR: Visitor = {}; + /** * Define a plugin. * @@ -124,7 +127,7 @@ export function defineRule(rule: Rule): Rule { // If `before` hook returns `false`, skip traversal by returning an empty object as visitor if (beforeHook !== null) { const shouldRun = beforeHook(); - if (shouldRun === false) return {}; + if (shouldRun === false) return EMPTY_VISITOR; } // Return same visitor each time