Skip to content

Implement Language Plugins #16999

Open
Open
@nzakas

Description

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()

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions