Skip to content

Commit ef8364a

Browse files
feat(config): add createDiagnosticsPlugin API (#61)
1 parent 29767f1 commit ef8364a

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

packages/config/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export * from '@tsslint/types';
2+
export { create as createDiagnosticsPlugin } from './lib/plugins/diagnostics.js';
23
export { create as createIgnorePlugin } from './lib/plugins/ignore.js';
34

45
import type { Config, Plugin, Rule } from '@tsslint/types';
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import type { Plugin } from '@tsslint/types';
2+
3+
type CheckMode = 'syntactic' | 'semantic' | 'declaration';
4+
5+
export function create(mode: CheckMode | CheckMode[] = 'semantic'): Plugin {
6+
const modes = Array.isArray(mode) ? mode : [mode];
7+
return ({ languageService }) => ({
8+
resolveDiagnostics(sourceFile, diagnostics) {
9+
const program = languageService.getProgram()!;
10+
for (const mode of modes) {
11+
const diags = mode === 'syntactic'
12+
? program.getSyntacticDiagnostics(sourceFile)
13+
: mode === 'semantic'
14+
? program.getSemanticDiagnostics(sourceFile)
15+
: mode === 'declaration'
16+
? program.getDeclarationDiagnostics(sourceFile)
17+
: [];
18+
for (const diag of diags) {
19+
diag.start ??= 0;
20+
diag.length ??= 0;
21+
diagnostics.push(diag as any);
22+
}
23+
}
24+
return diagnostics;
25+
},
26+
});
27+
}

0 commit comments

Comments
 (0)