Releases: javierbrea/eslint-plugin-boundaries
Releases · javierbrea/eslint-plugin-boundaries
Enhance External/Local Dependency Classification for Monorepos
eslint-plugin-boundaries v5.4.0
- feat(#349): Add
boundaries/flag-as-externalsetting to allow better control over external module identification - feat(#420): Remove rules validation during linting runtime to improve performance. Validation is performed at configuration load time using eslint schema validation.
- chore: bump @boundaries/elements to 1.2.0
@boundaries/elements v1.2.0
- feat: Add
rootPathandflagAsExternaloptions to allow better control over external module identification.
website
- feat: Add
boundaries/flag-as-externalsetting to allow better control over external module identification - feat: Add "Monorepo Setup" guide to the documentation, explaining how to configure the plugin in monorepo projects using
boundaries/flag-as-externalsetting.
Fix elements selector validation
@boundaries/eslint-plugin v5.3.1
Fixed
- fix(#415): Fix elements selector validation error when selector is an empty array
@boundaries/elements v1.1.2
Fixed
- fix: Update HANDLEBARS_TEMPLATE_REGEX to fix vulnerability with regex denial of service (ReDoS) attacks.
chore
Changed
- chore: Bump pnpm to 10. Set pnpm security options. Detect shai-hulud dependencies in workflow
- chore: bump baseline-browser-mapping to supress warnings
Documentation Website
Website
- docs: Add documentation website
@boundaries/eslint-plugin v5.3.0
Changed
- docs: Update rule documentation URLs to point to the new JS Boundaries website instead of the GitHub repository. This change improves accessibility and user experience by directing users to a more user-friendly platform for documentation.
Fixed
- fix: Add missing
typeofdependency kind (bump @boundaries/elements to 1.1.1)
@boundaries/elements v1.1.1
Fixed
- fix: Add missing
typeofdependency kind
Improve performance
eslint-plugin v5.2.0
Added
- feat: Start supporting new template data and syntax, as described in #370. Not added to the documentation yet, as it is still in beta testing phase.
- feat: Add setting
legacy-templatesto enable/disable the old template data and syntax. By default, it is enabled for backward compatibility. Not added to the documentation yet, as the new template data and syntax is still in beta testing phase. - feat(#371): Publish eslint-plugin both to @boundaries/eslint-plugin and eslint-plugin-boundaries package names.
- feat: Add
cachesetting to enable/disable the new cache mechanism used to boost performance. By default, it is enabled. We recommend to keep it enabled unless you experience issues. In such case, please, open an issue describing the problem.
Changed
- feat: Improve performance in approximately 30% in large codebases by optimizing cache usage and reducing redundant computations when resolving elements and matching rules.
- refactor(#371): Extract element descriptors and matching logic to a separate module to improve code organization, readability and reusability.
- refactor: Overall performance improvements and code optimizations.
- feat: Add empty schema to rules without options to validate them correctly.
Fixed
- fix: Assign internalPaths correctly when in elements setting the mode is 'file' but the pattern matches folders, not files. Now it returns the correct internalPaths instead of the matched folder name.
- fix: Assign relationships correctly in dependencies. Now ancestor and nephew relationships are assigned correctly. Previously, all ancestors with a common parent were considered uncles.
elements v1.1.0
Added
- feat: Implement cache for micromatch results, regex and captures to improve performance.
- feat: Add
cacheoption to allow disabling the cache.
Changed
- refactor: Overall performance improvements and code optimizations.
Fixed
- fix: Fix cache performance issues by implementing custom string generation for well-known objects, and removing caching for keys based on complex objects to avoid performance degradation.
- fix: Legacy selectors being an array with only one element now correctly treated as a single string selector.
Modularization - Beta 2
eslint-plugin
Added
- feat: Add
cachesetting to enable/disable the new cache mechanism used to boost performance. By default, it is enabled. We recommend to keep it enabled unless you experience issues. In such case, please, open an issue describing the problem.
Changed
- feat: Boost performance to approximately 2x in large codebases by optimizing cache usage and reducing redundant computations when resolving elements and matching rules.
- refactor: Overall performance improvements and code optimizations.
elements
Added
- feat: Implement cache for micromatch results, regex and captures to improve performance.
- feat: Add
cacheoption to allow disabling the cache.
Changed
- refactor: Overall performance improvements and code optimizations.
Fixed
- fix: Fix cache performance issues by implementing custom string generation for well-known objects, and removing caching for keys based on complex objects to avoid performance degradation.
- fix: Legacy selectors being an array with only one element now correctly treated as a single string selector.
Modularization - Beta 1
Added
- feat: Start supporting new template data and syntax, as described in #370. Not added to the documentation yet, as it is still in beta.
- feat: Add setting
legacy-templatesto enable/disable the old template data and syntax. By default, it is enabled for backward compatibility. Not added to the documentation yet, as the new template data and syntax is still in beta. - feat: Avoid validating and processing settings in every file or node analysis. Implemented cache to improve performance.
- feat(#371): Publish eslint-plugin both to @boundaries/eslint-plugin and eslint-plugin-boundaries package names.
Changed
- feat: Add empty schema to rules without options to validate them correctly.
- refactor(#371): Extract element descriptors and matching logic to a separate module to improve code organization, readability and reusability.
Fixed
- fix: Assign internalPaths correctly when in elements setting the mode is 'file' but the pattern matches folders, not files. Now it returns the correct internalPaths instead of the matched folder name.
- fix: Assign relationships correctly in dependencies. Now ancestor and nephew relationships are assigned correctly. Previously, all ancestors with a common parent were considered uncles.
Typings
Added
- feat(#346): Add complete TypeScript typings for all plugin settings and rules. Export the main
Configtype along with individual rule and option types. Support for custom plugin name prefixes. - feat: Export constants and type guards for settings keys, rule names, and other configuration-related values.
- feat: Introduce
createConfighelper — ensures valid types, automatically includes the plugin, adds default JS/TS file patterns, and supports custom plugin name prefixes. - feat: Add
/configexport path, exposing thecreateConfighelper along with related constants and types. - feat: Validate dependency nodes — display a warning when a node specified through the
additional-dependency-nodessetting is not a validLiteral. - feat: Add internal consistency checks — show a diagnostic message with a link to the repository issues page when an unexpected situation occurs.
- test: Add
eslint-plugin-boundaries-e2eprivate package — runs ESLint programmatically with multiple configurations to ensure plugin reliability across real-world scenarios. Focuses on validating configuration paths, types, and utilities, guaranteeing that the public API behaves correctly post-publication. (Functional behavior remains fully covered by the plugin’s unit tests.)
Typings Beta
- feat(#346): Add complete TypeScript typings for all plugin settings and rules. Export the main
Configtype along with individual rule and option types. Support for custom plugin name prefixes. - feat: Export constants and type guards for settings keys, rule names, and other configuration-related values.
- feat: Introduce
createConfighelper — ensures valid types, automatically includes the plugin, adds default JS/TS file patterns, and supports custom plugin name prefixes. - feat: Add
/configexport path, exposing thecreateConfighelper along with related constants and types. - feat: Validate dependency nodes — display a warning when a node specified through the
additional-dependency-nodessetting is not a validLiteral. - feat: Add internal consistency checks — show a diagnostic message with a link to the repository issues page when an unexpected situation occurs.
- test: Add
eslint-plugin-boundaries-e2eprivate package — runs ESLint programmatically with multiple configurations to ensure plugin reliability across real-world scenarios. Focuses on validating configuration paths, types, and utilities, guaranteeing that the public API behaves correctly post-publication. (Functional behavior remains fully covered by the plugin’s unit tests.)
Update dependencies
Changed
- chore: Update dependencies
- refactor: Fix Sonar smells
Fixed
- docs(#350): Fix boundaries/elements setting name in README