Skip to content

refactor(preset-basic): move helper functions to @effect-migrate/core #32

@aridyckovsky

Description

@aridyckovsky

Summary

Move getLineColumn and findMatchingBrace helper functions from @effect-migrate/preset-basic to @effect-migrate/core utilities for reuse across custom presets.

Motivation

Currently, these helpers are defined in packages/preset-basic/src/helpers.ts:

  • getLineColumn(content, index) - Converts character index to line/column numbers
  • findMatchingBrace(content, startIndex) - Finds matching closing brace

Custom presets and rule authors would benefit from having these utilities available from core, avoiding code duplication.

Proposed Solution

  1. Create packages/core/src/utils/helpers.ts
  2. Move getLineColumn and findMatchingBrace to core
  3. Export from packages/core/src/index.ts
  4. Update @effect-migrate/preset-basic to import from core
  5. Add unit tests in packages/core/test/utils/helpers.test.ts

Benefits

  • Promotes DRY (Don't Repeat Yourself)
  • Makes custom preset development easier
  • Ensures consistent helper implementations across presets
  • Reduces bundle size for packages that depend on multiple presets

Files to Change

  • packages/core/src/utils/helpers.ts (new)
  • packages/core/src/index.ts (export helpers)
  • packages/core/test/utils/helpers.test.ts (new)
  • packages/preset-basic/src/helpers.ts (remove or re-export from core)
  • packages/preset-basic/src/patterns.ts (update imports)

Acceptance Criteria

  • Helpers exported from @effect-migrate/core
  • preset-basic imports helpers from core
  • All existing tests pass
  • New tests added for helpers in core
  • Documentation updated

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    low-hanging-fruitEasy wins and quick improvementspkg:coreIssues related to @effect-migrate/core packagepkg:presetIssues related to preset packagespriority:lowLow prioritytype:refactorCode refactoring

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions