fix: don't error on circular eslint plugins #276
Closed
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.
This PR contains a:
Motivation / Use-Case
Previously, attempting to use an overridden config containing a plugin with a circular structure (as is suggested for flat configs) would error, as the caching implementation would attempt to
stringify
said plugins in order to use them as cache keys.This PR fixes the issue by replacing the cache object with a
Map
, and using the plugin objects directly as keys, for whom equality can be checked even in the presence of circular references.A test case (verified to error without the fix) is also included.
Fixes: #270.
Breaking Changes
None (unless
jsonStringifyReplacerSortKeys
was somehow externally visible in a way I didn't notice).Additional Info
Test case plugin code is taken almost exactly from https://eslint.org/docs/latest/extend/plugin-migration-flat-config#migrating-configs-for-flat-config; it is probably possible to make it a bit shorter, but I didn't bother to look into it.
npm run test
was run immediately prior to the final (and only) commit, so any stylistic lints should have been applied, but apologies if I've missed anything.