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
feat: Implement caching for FlatESLint #16190
Conversation
✅ Deploy Preview for docs-eslint canceled.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
For future serialization, I'm not a big fan of 2, and it sounds like you aren't either. As a variant of option 1, we could call it cacheKey
and encourage packages to include version as package-name@1.2.3
, making it even more thorough. As a fallback, option 3 seems like a reasonable best effort.
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | devDependencies | minor | [`8.21.0` -> `8.22.0`](https://renovatebot.com/diffs/npm/eslint/8.21.0/8.22.0) | --- ### Release Notes <details> <summary>eslint/eslint</summary> ### [`v8.22.0`](https://github.com/eslint/eslint/releases/tag/v8.22.0) [Compare Source](eslint/eslint@v8.21.0...v8.22.0) #### Features - [`2b97607`](eslint/eslint@2b97607) feat: Implement caching for FlatESLint ([#​16190](eslint/eslint#16190)) (Nicholas C. Zakas) - [`fd5d3d3`](eslint/eslint@fd5d3d3) feat: add `methodsIgnorePattern` option to object-shorthand rule ([#​16185](eslint/eslint#16185)) (Milos Djermanovic) #### Documentation - [`9f5a752`](eslint/eslint@9f5a752) docs: optimize image assets ([#​16170](eslint/eslint#16170)) (Sam Chen) - [`61b2948`](eslint/eslint@61b2948) docs: add svgo command to pre commit hook ([#​16178](eslint/eslint#16178)) (Amaresh S M) - [`784096d`](eslint/eslint@784096d) docs: improve search result UI ([#​16187](eslint/eslint#16187)) (Sam Chen) - [`d0f4cb4`](eslint/eslint@d0f4cb4) docs: use shorthand property name in example ([#​16180](eslint/eslint#16180)) (Kevin Elliott) #### Chores - [`10a6e0e`](eslint/eslint@10a6e0e) chore: remove deploy workflow for playground ([#​16186](eslint/eslint#16186)) (Milos Djermanovic) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4xNTYuMSIsInVwZGF0ZWRJblZlciI6IjMyLjE1Ni4xIn0=--> Co-authored-by: cabr2-bot <cabr2.help@gmail.com> Reviewed-on: https://codeberg.org/Calciumdibromid/CaBr2/pulls/1506 Reviewed-by: Epsilon_02 <epsilon_02@noreply.codeberg.org> Co-authored-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org> Co-committed-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
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()
?