1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.StatePersistence = exports.ContentId = exports.FileFilterFactory = exports.LineSwitchParser = exports.FindingFilterFactory = exports.DirectoryService = exports.BuiltinResolver = exports.Resolver = exports.CacheFactory = exports.FormatterLoaderHost = exports.RuleLoaderHost = exports.FileSystem = exports.DeprecationTarget = exports.DeprecationHandler = exports.MessageHandler = exports.AbstractProcessor = exports.Format = exports.ConfigurationProvider = exports.AbstractFormatter = exports.ConfigurableTypedRule = exports.TypedRule = exports.ConfigurableRule = exports.AbstractRule = exports.requiresCompilerOption = exports.requireLibraryFile = exports.excludeDeclarationFiles = exports.typescriptOnly = exports.predicate = exports.Finding = exports.Replacement = exports.GlobalOptions = exports.ConfigurationError = void 0;
|
4 | require("reflect-metadata");
|
5 | const ts = require("typescript");
|
6 | const tsutils_1 = require("tsutils");
|
7 | const path = require("path");
|
8 | class ConfigurationError extends Error {
|
9 | }
|
10 | exports.ConfigurationError = ConfigurationError;
|
11 | class GlobalOptions {
|
12 | }
|
13 | exports.GlobalOptions = GlobalOptions;
|
14 | exports.Replacement = {
|
15 | replace(start, end, text) {
|
16 | return { start, end, text };
|
17 | },
|
18 | append(pos, text) {
|
19 | return { start: pos, end: pos, text };
|
20 | },
|
21 | delete(start, end) {
|
22 | return { start, end, text: '' };
|
23 | },
|
24 | };
|
25 | exports.Finding = {
|
26 |
|
27 | compare(a, b) {
|
28 | return a.start.position - b.start.position
|
29 | || a.end.position - b.end.position
|
30 | || compareStrings(a.ruleName, b.ruleName)
|
31 | || compareStrings(a.message, b.message);
|
32 | },
|
33 | };
|
34 | function compareStrings(a, b) {
|
35 | return a < b
|
36 | ? -1
|
37 | : a > b
|
38 | ? 1
|
39 | : 0;
|
40 | }
|
41 | function predicate(check) {
|
42 | return (target) => {
|
43 | target.supports = combinePredicates(target.supports, check);
|
44 | };
|
45 | }
|
46 | exports.predicate = predicate;
|
47 | function combinePredicates(existing, additonal) {
|
48 | if (existing === undefined)
|
49 | return additonal;
|
50 | return (sourceFile, context) => {
|
51 | const result = additonal(sourceFile, context);
|
52 | return result !== true ? result : existing(sourceFile, context);
|
53 | };
|
54 | }
|
55 | function typescriptOnly(target) {
|
56 | target.supports = combinePredicates(target.supports, (sourceFile) => /\.tsx?$/.test(sourceFile.fileName) || 'TypeScript only');
|
57 | }
|
58 | exports.typescriptOnly = typescriptOnly;
|
59 | function excludeDeclarationFiles(target) {
|
60 | target.supports = combinePredicates(target.supports, (sourceFile) => !sourceFile.isDeclarationFile || 'excludes declaration files');
|
61 | }
|
62 | exports.excludeDeclarationFiles = excludeDeclarationFiles;
|
63 | function requireLibraryFile(fileName) {
|
64 | return (target) => {
|
65 | target.supports = combinePredicates(target.supports, (_, context) => programContainsLibraryFile(context.program, fileName) || `requires library file '${fileName}'`);
|
66 | };
|
67 | }
|
68 | exports.requireLibraryFile = requireLibraryFile;
|
69 | function programContainsLibraryFile(program, fileName) {
|
70 | const libFileDir = path.dirname(ts.getDefaultLibFilePath(program.getCompilerOptions()));
|
71 | return program.getSourceFile(path.join(libFileDir, fileName)) !== undefined;
|
72 | }
|
73 | function requiresCompilerOption(option) {
|
74 | return (target) => {
|
75 | target.supports = combinePredicates(target.supports, (_, context) => tsutils_1.isCompilerOptionEnabled(context.compilerOptions, option) || `requires compilerOption '${option}'`);
|
76 | };
|
77 | }
|
78 | exports.requiresCompilerOption = requiresCompilerOption;
|
79 | class AbstractRule {
|
80 | constructor(context) {
|
81 | this.context = context;
|
82 | this.sourceFile = context.sourceFile;
|
83 | }
|
84 | get program() {
|
85 | return this.context.program;
|
86 | }
|
87 | addFinding(start, end, message, fix) {
|
88 | return this.context.addFinding(start, end, message, fix);
|
89 | }
|
90 | addFindingAtNode(node, message, fix) {
|
91 | return this.addFinding(node.getStart(this.sourceFile), node.end, message, fix);
|
92 | }
|
93 | }
|
94 | exports.AbstractRule = AbstractRule;
|
95 | AbstractRule.requiresTypeInformation = false;
|
96 | AbstractRule.deprecated = false;
|
97 | AbstractRule.supports = undefined;
|
98 | class ConfigurableRule extends AbstractRule {
|
99 | constructor(context) {
|
100 | super(context);
|
101 | this.options = this.parseOptions(context.options);
|
102 | }
|
103 | }
|
104 | exports.ConfigurableRule = ConfigurableRule;
|
105 | class TypedRule extends AbstractRule {
|
106 | constructor(context) {
|
107 | super(context);
|
108 | }
|
109 | get program() {
|
110 | return this.context.program;
|
111 | }
|
112 |
|
113 | get checker() {
|
114 | const checker = this.program.getTypeChecker();
|
115 | Object.defineProperty(this, 'checker', { value: checker, writable: false });
|
116 | return checker;
|
117 | }
|
118 | }
|
119 | exports.TypedRule = TypedRule;
|
120 | TypedRule.requiresTypeInformation = true;
|
121 | class ConfigurableTypedRule extends TypedRule {
|
122 | constructor(context) {
|
123 | super(context);
|
124 | this.options = this.parseOptions(context.options);
|
125 | }
|
126 | }
|
127 | exports.ConfigurableTypedRule = ConfigurableTypedRule;
|
128 | class AbstractFormatter {
|
129 | }
|
130 | exports.AbstractFormatter = AbstractFormatter;
|
131 | class ConfigurationProvider {
|
132 | }
|
133 | exports.ConfigurationProvider = ConfigurationProvider;
|
134 | var Format;
|
135 | (function (Format) {
|
136 | Format["Yaml"] = "yaml";
|
137 | Format["Json"] = "json";
|
138 | Format["Json5"] = "json5";
|
139 | })(Format = exports.Format || (exports.Format = {}));
|
140 | class AbstractProcessor {
|
141 | constructor(context) {
|
142 | this.source = context.source;
|
143 | this.sourceFileName = context.sourceFileName;
|
144 | this.targetFileName = context.targetFileName;
|
145 | this.settings = context.settings;
|
146 | }
|
147 | |
148 |
|
149 |
|
150 |
|
151 | static getSuffixForFile(_context) {
|
152 | return '';
|
153 | }
|
154 | }
|
155 | exports.AbstractProcessor = AbstractProcessor;
|
156 | class MessageHandler {
|
157 | }
|
158 | exports.MessageHandler = MessageHandler;
|
159 | class DeprecationHandler {
|
160 | }
|
161 | exports.DeprecationHandler = DeprecationHandler;
|
162 | var DeprecationTarget;
|
163 | (function (DeprecationTarget) {
|
164 | DeprecationTarget["Rule"] = "rule";
|
165 | DeprecationTarget["Processor"] = "processor";
|
166 | DeprecationTarget["Formatter"] = "formatter";
|
167 | })(DeprecationTarget = exports.DeprecationTarget || (exports.DeprecationTarget = {}));
|
168 | class FileSystem {
|
169 | }
|
170 | exports.FileSystem = FileSystem;
|
171 | class RuleLoaderHost {
|
172 | }
|
173 | exports.RuleLoaderHost = RuleLoaderHost;
|
174 | class FormatterLoaderHost {
|
175 | }
|
176 | exports.FormatterLoaderHost = FormatterLoaderHost;
|
177 |
|
178 | class CacheFactory {
|
179 | }
|
180 | exports.CacheFactory = CacheFactory;
|
181 | class Resolver {
|
182 | }
|
183 | exports.Resolver = Resolver;
|
184 | class BuiltinResolver {
|
185 | }
|
186 | exports.BuiltinResolver = BuiltinResolver;
|
187 | class DirectoryService {
|
188 | }
|
189 | exports.DirectoryService = DirectoryService;
|
190 | class FindingFilterFactory {
|
191 | }
|
192 | exports.FindingFilterFactory = FindingFilterFactory;
|
193 | class LineSwitchParser {
|
194 | }
|
195 | exports.LineSwitchParser = LineSwitchParser;
|
196 | class FileFilterFactory {
|
197 | }
|
198 | exports.FileFilterFactory = FileFilterFactory;
|
199 | class ContentId {
|
200 | }
|
201 | exports.ContentId = ContentId;
|
202 | class StatePersistence {
|
203 | }
|
204 | exports.StatePersistence = StatePersistence;
|
205 |
|
\ | No newline at end of file |