Skip to content

Implement Language Plugins #16999

@nzakas

Description

@nzakas

This issue describes the implementation plan for eslint/rfcs#99, which will take place in several phases:

Phase 1: Implement external changes

Phase 2: Implement backward-compatible changes

Phase 4: Deprecation of old APIs (v8.0.0)

  • Update RuleTester to warn about context.getAncestors()
  • Update RuleTester to warn about context.getDeclaredVariables()
  • Update RuleTester to warn about context.getScope()
  • Update RuleTester to warn about context.parserServices
  • Update RuleTester to warn about context.getCwd()
  • Update RuleTester to warn about context.getSourceCode()
  • Update RuleTester to warn about context.getFilename()
  • Update RuleTester to warn about context.getPhysicalFilename()

Phase 5: Removal of old APIs (v9.0.0)

  • Remove context.getAncestors()
  • Remove context.getDeclaredVariables()
  • Remove context.getScope()
  • Remove context.markVariableAsUsed()
  • Remove context.parserServices

Phase 6: Create JS language object

  • Create JS language object with parse() and createSourceCode()
  • Update flat config to have language option (also update default config to use JS language object)
  • Update Linter to call language object for parsing (fallback to JS language for eslintrc)
  • Update Linter to use SourceCode#getInlineConfig()
  • Update Linter to use SourceCode#getDisableDirectives()
  • Update Linter to use SourceCode#traverse()

Phase 7: Create @eslint/json package

  • Publish @eslint/json

Phase 8: Create @eslint/markdown package

Phase 9: Ecosystem Updates

  • Document how to create languages
  • Update @types/eslint with language type definitions
  • Publish Code Explorer
  • Publish blog post announcing Markdown/JSON and Code Explorer

Phase 10: Removal of old APIs (v10.0.0)

  • Remove context.getCwd()
  • Remove context.getSourceCode()
  • Remove context.getFilename()
  • Remove context.getPhysicalFilename()

Metadata

Metadata

Assignees

Labels

acceptedThere is consensus among the team that this change meets the criteria for inclusionbreakingThis change is backwards-incompatiblecoreRelates to ESLint's core APIs and features

Type

No type

Projects

Status

Implementing

Status

Done

Status

Planned

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions