-
-
Notifications
You must be signed in to change notification settings - Fork 682
fix(linter/plugins): defineRule
call createOnce
lazily
#14062
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
graphite-app
merged 1 commit into
main
from
09-23-fix_linter_plugins_definerule_call_createonce_lazily
Sep 24, 2025
Merged
fix(linter/plugins): defineRule
call createOnce
lazily
#14062
graphite-app
merged 1 commit into
main
from
09-23-fix_linter_plugins_definerule_call_createonce_lazily
Sep 24, 2025
+117
−71
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
Merge activity
|
f3cd2f8
to
6717384
Compare
da57153
to
92e264d
Compare
This was referenced Sep 23, 2025
6717384
to
547b20e
Compare
92e264d
to
b605733
Compare
Previously `defineRule`, when passed a rule with a `createOnce` method, would call `createOnce` immediately. When the rule is used in Oxlint, this resulted in `createOnce` being called twice. `createOnce` might do some fairly expensive set-up work, so we only want to call it once (as the name suggests!). Instead, `defineRule` don't call `createOnce` immediately. Call it the first time the `create` method which `defineRule` creates is called. This means that, when using Oxlint: 1. `createOnce` is only called once. 2. `defineRule` call is cheaper. i.e. the cost of making the rule ESLint-compatible is only paid when the user is running the rule in ESLint, not in Oxlint.
b605733
to
f2b3934
Compare
547b20e
to
7bd01ed
Compare
Base automatically changed from
09-23-test_linter_plugins_test_returning_false_from_before_hook_skips_visitation_in_eslint
to
main
September 24, 2025 00:08
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously
defineRule
, when passed a rule with acreateOnce
method, would callcreateOnce
immediately.When the rule is used in Oxlint, this resulted in
createOnce
being called twice.createOnce
might do some fairly expensive set-up work, so we only want to call it once (as the name suggests!).Instead,
defineRule
don't callcreateOnce
immediately. Call it the first time thecreate
method whichdefineRule
creates is called.This means that, when using Oxlint:
createOnce
is only called once.defineRule
call is cheaper.i.e. the cost of making the rule ESLint-compatible is only paid when the user is running the rule in ESLint, not in Oxlint.