feat: Implement caching for FlatESLint #16190
Merged
+168
−32
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.
Refs #13481
Prerequisites checklist
What is the purpose of this pull request? (put an "X" next to an item)
[ ] Documentation update
[ ] Bug fix (template)
[ ] New rule (template)
[ ] Changes an existing rule (template)
[ ] Add autofix to a rule
[ ] Add a CLI option
[x] Add something to the core
[ ] Other, please explain:
What changes did you make? (Give an overview)
This PR implements caching for
FlatESLint
by making the following changes:cache: true
as an option forFlatESLint
toJSON()
method on each config object that will normalize it into a form that is more appropriate for storing in the cacheIs there anything you'd like reviewers to focus on?
For now, I throw an error when trying to serialize a config object where either the
parser
or theprocessor
are objects instead of strings because it's not clear how best to serialize these. I see the following possible paths forward from here:name
property that we can use for caching purposes and otherwise throw an error. This seems like the simplest approach.processor
(same as eslintrc) andparser
(different from eslintrc -- problematic for back compat reasons)parser
we could hash totoString()
of theparse()
method, and maybe for processor we could hash thetoString()
of bothpreprocess()
andpostprocess()
?