Skip to content

Commit 9bef475

Browse files
committed
refactor: drop languageServiceHost, languageService from RuleContext
1 parent 3a3d875 commit 9bef475

File tree

4 files changed

+12
-21
lines changed

4 files changed

+12
-21
lines changed

packages/core/index.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,16 +78,15 @@ export function createLinter(
7878
const program = ctx.languageService.getProgram()!;
7979
const file = ctx.languageService.getProgram()!.getSourceFile(fileName)!;
8080
rulesContext = {
81-
...ctx,
81+
typescript: ctx.typescript,
8282
file,
8383
program,
8484
report,
8585
};
8686
} else {
8787
const file = getNonBoundSourceFile(fileName);
8888
rulesContext = {
89-
...ctx,
90-
languageService: syntaxOnlyLanguageService,
89+
typescript: ctx.typescript,
9190
get program(): ts.Program {
9291
throw new Error('Not supported');
9392
},

packages/eslint/index.ts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,8 @@ export function convertRule(
181181
Traverser = require(require.resolve('./node_modules/eslint/lib/shared/traverser.js'));
182182
}
183183

184-
const tsslintRule: TSSLint.Rule = ({ file, languageService, languageServiceHost, report }) => {
185-
const { sourceCode, eventQueue } = getEstree(
186-
file,
187-
languageService,
188-
languageServiceHost.getCompilationSettings()
189-
);
184+
const tsslintRule: TSSLint.Rule = ({ file, report, ...ctx }) => {
185+
const { sourceCode, eventQueue } = getEstree(file, () => ctx.program);
190186
const emitter = createEmitter();
191187

192188
if (eslintRule.meta?.defaultOptions) {
@@ -197,11 +193,12 @@ export function convertRule(
197193

198194
let currentNode: any;
199195

200-
const cwd = languageServiceHost.getCurrentDirectory();
201196
const ruleListeners = eslintRule.create({
202-
cwd,
197+
get cwd() {
198+
return ctx.program.getCurrentDirectory();
199+
},
203200
getCwd() {
204-
return cwd;
201+
return ctx.program.getCurrentDirectory();
205202
},
206203
filename: file.fileName,
207204
getFilename() {
@@ -506,8 +503,7 @@ export function convertRule(
506503

507504
function getEstree(
508505
file: ts.SourceFile,
509-
languageService: ts.LanguageService,
510-
compilationSettings: ts.CompilerOptions
506+
getProgram: () => ts.Program,
511507
) {
512508
if (!estrees.has(file)) {
513509
let program: ts.Program | undefined;
@@ -522,7 +518,7 @@ function getEstree(
522518

523519
const programProxy = new Proxy({} as ts.Program, {
524520
get(_target, p, receiver) {
525-
program ??= languageService.getProgram()!;
521+
program ??= getProgram();
526522
return Reflect.get(program, p, receiver);
527523
},
528524
});
@@ -533,8 +529,6 @@ function getEstree(
533529
range: true,
534530
preserveNodeMaps: true,
535531
filePath: file.fileName,
536-
emitDecoratorMetadata: compilationSettings.emitDecoratorMetadata ?? false,
537-
experimentalDecorators: compilationSettings.experimentalDecorators ?? false,
538532
});
539533
const sourceCode = new SourceCode({
540534
text: file.text,

packages/tslint/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ export function convertRule(
1616
ruleSeverity: 'warning',
1717
disabledIntervals: [],
1818
}) as IRule | ITypedRule;
19-
return ({ file, languageService, report }) => {
19+
return ({ file, report, ...ctx }) => {
2020
const failures = 'applyWithProgram' in rule
21-
? rule.applyWithProgram(file, languageService.getProgram()!)
21+
? rule.applyWithProgram(file, ctx.program)
2222
: rule.apply(file);
2323
for (const failure of failures) {
2424
const reporter = report(

packages/types/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ export interface Rule {
4343

4444
export interface RuleContext {
4545
typescript: typeof import('typescript');
46-
languageServiceHost: LanguageServiceHost;
47-
languageService: LanguageService;
4846
program: Program;
4947
file: SourceFile;
5048
report(message: string, start: number, end: number, category?: DiagnosticCategory, reportAt?: [Error, number]): Reporter;

0 commit comments

Comments
 (0)