Skip to main content
ESLint Interlace
Plugin: modularity

Changelog

Release history and version updates for eslint-plugin-modularity

Live from GitHub

This changelog is fetched directly from CHANGELOG.md on GitHub and cached for 2 hours.

Live changelogfrom eslint-plugin-modularity/CHANGELOG.md, cached for 2 hours.Edit on GitHub

[2.0.4] - 2026-02-08

2.1.0

Minor Changes

  • #148 82718c2 Thanks @ofri-peretz! - feat+fix: ILB-Wild FP reduction + two new quality rules

    no-unsafe-deserialization FP reduction (~112 FPs)

    • Track fs.readFileSync('literal') calls in literalPathFileVars — a file read with a hardcoded path (bundled config) is not user-controlled input for safe deserializers (JSON.parse, schema-validating parsers). eval() still fires even on literal-path reads.

    no-buffer-overread FP reduction (~129 FPs)

    • Remove b (single-char, too broad) and chunk (too common for array chunks) from the Buffer alias heuristic — isBufferType now only matches buf and bytes by name, reducing false matches on non-Buffer variables.

    New rule: modernization/prefer-template-literal

    • Flags "string " + variable concatenation and suggests the equivalent template literal.
    • Auto-fix produces the correct `string ${variable}` replacement.
    • Pure string literal chains ("a" + "b") and numeric addition are not flagged.
    • Closes P2 quality FN prob_string_concat in the ILB-Arena-Quality bench.

    New rule: modularity/no-mutable-exports

    • Flags export let and export var — module exports should be immutable const bindings so all importers share a stable reference.
    • Auto-fix replaces let/var with const.
    • Closes P2 quality FN prob_mutable_export in the ILB-Arena-Quality bench.

Patch Changes

  • Updated dependencies [736a5fe]:
    • @interlace/eslint-devkit@1.4.1

Bug Fixes

  • align codecov component IDs with full package names (2831b968)

Documentation

  • fix changelog header format across all packages (c3a15082)

❤️ Thank You

  • Ofri Peretz

[2.0.3] - 2026-02-06

Bug Fixes

  • align codecov component names and update docs components (0a59a86c)

❤️ Thank You

  • Ofri Peretz

[2.0.2] - 2026-02-02

This was a version bump only for eslint-plugin-modularity to align it with other projects, there were no code changes.

Changelog

All notable changes to eslint-plugin-modularity will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Documentation

  • 📘 Launched new documentation site: eslint.interlace.tools
  • 📝 Achieved 100% documentation parity (both .md and .mdx files)

[2.0.1] - 2026-02-02

This was a version bump only for eslint-plugin-modularity to align it with other projects, there were no code changes.

[2.0.0] - 2026-02-02

This was a version bump only for eslint-plugin-modularity to align it with other projects, there were no code changes.

[1.0.0] - 2026-01-26

Added

  • Initial stable release with 5 DDD architecture rules
  • LLM-optimized error messages for AI-assisted development
  • 100% test coverage across all rules
  • ESLint 9 flat config support
  • TypeScript type definitions for all rule options

Rules

RuleDescription💼⚠️
ddd-anemic-domain-modelDetect anemic domain models lacking behavior💼⚠️
ddd-value-object-immutabilityEnforce immutability in value objects💼
enforce-namingEnforce consistent naming conventions by layer💼⚠️
enforce-rest-conventionsEnforce RESTful naming in API controllers💼
no-external-api-calls-in-utilsPrevent external API calls in utility modules💼

Presets

  • recommended - Balanced DDD and architecture enforcement
  • strict - All rules as errors for strict enforcement

Fixed (Jan 2026 Remediation)

  • enforce-naming: Implemented preserveCase pattern to preserve original casing in suggestions
    • Example: UserServiceCustomerService (not customerservice)
  • ddd-value-object-immutability: Added mutableNestedType detection
    • Now detects readonly items: Item[] where Item has mutable properties
  • ddd-anemic-domain-model: Implemented isPureDelegation detection
    • Methods that only delegate to external services no longer count as business logic
    • Excludes built-in array methods (reduce, map, filter) appearing as delegation
    • Excludes JS prototypes (toString, valueOf) on own properties

Known Limitations

Documented in docs/KNOWN-LIMITATIONS.md:

  • ddd-anemic-domain-model: Logic hidden in base classes outside the current file not detected
  • ddd-value-object-immutability: Complex object hierarchies from external factories may bypass checks
  • no-external-api-calls-in-utils: API calls via DI clients or generic wrappers not detected
  • Circular dependencies via DI or dynamic require() not mapped

On this page

No Headings