UNPKG

@fimbul/ymir

Version:

Core library for the Fimbullinter project

205 lines 7.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 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; require("reflect-metadata"); const ts = require("typescript"); const tsutils_1 = require("tsutils"); const path = require("path"); class ConfigurationError extends Error { } exports.ConfigurationError = ConfigurationError; class GlobalOptions { } exports.GlobalOptions = GlobalOptions; exports.Replacement = { replace(start, end, text) { return { start, end, text }; }, append(pos, text) { return { start: pos, end: pos, text }; // tslint:disable-line:object-shorthand-properties-first }, delete(start, end) { return { start, end, text: '' }; }, }; exports.Finding = { /** Compare two Findings. Intended to be used in `Array.prototype.sort`. */ compare(a, b) { return a.start.position - b.start.position || a.end.position - b.end.position || compareStrings(a.ruleName, b.ruleName) || compareStrings(a.message, b.message); }, }; function compareStrings(a, b) { return a < b ? -1 : a > b ? 1 : 0; } function predicate(check) { return (target) => { target.supports = combinePredicates(target.supports, check); }; } exports.predicate = predicate; function combinePredicates(existing, additonal) { if (existing === undefined) return additonal; return (sourceFile, context) => { const result = additonal(sourceFile, context); return result !== true ? result : existing(sourceFile, context); }; } function typescriptOnly(target) { target.supports = combinePredicates(target.supports, (sourceFile) => /\.tsx?$/.test(sourceFile.fileName) || 'TypeScript only'); } exports.typescriptOnly = typescriptOnly; function excludeDeclarationFiles(target) { target.supports = combinePredicates(target.supports, (sourceFile) => !sourceFile.isDeclarationFile || 'excludes declaration files'); } exports.excludeDeclarationFiles = excludeDeclarationFiles; function requireLibraryFile(fileName) { return (target) => { target.supports = combinePredicates(target.supports, (_, context) => programContainsLibraryFile(context.program, fileName) || `requires library file '${fileName}'`); }; } exports.requireLibraryFile = requireLibraryFile; function programContainsLibraryFile(program, fileName) { const libFileDir = path.dirname(ts.getDefaultLibFilePath(program.getCompilerOptions())); return program.getSourceFile(path.join(libFileDir, fileName)) !== undefined; } function requiresCompilerOption(option) { return (target) => { target.supports = combinePredicates(target.supports, (_, context) => tsutils_1.isCompilerOptionEnabled(context.compilerOptions, option) || `requires compilerOption '${option}'`); }; } exports.requiresCompilerOption = requiresCompilerOption; class AbstractRule { constructor(context) { this.context = context; this.sourceFile = context.sourceFile; } get program() { return this.context.program; } addFinding(start, end, message, fix) { return this.context.addFinding(start, end, message, fix); } addFindingAtNode(node, message, fix) { return this.addFinding(node.getStart(this.sourceFile), node.end, message, fix); } } exports.AbstractRule = AbstractRule; AbstractRule.requiresTypeInformation = false; AbstractRule.deprecated = false; AbstractRule.supports = undefined; class ConfigurableRule extends AbstractRule { constructor(context) { super(context); this.options = this.parseOptions(context.options); } } exports.ConfigurableRule = ConfigurableRule; class TypedRule extends AbstractRule { constructor(context) { super(context); } get program() { return this.context.program; } /** Lazily evaluated getter for TypeChecker. Use this instead of `this.program.getTypeChecker()` to avoid wasting CPU cycles. */ get checker() { const checker = this.program.getTypeChecker(); Object.defineProperty(this, 'checker', { value: checker, writable: false }); return checker; } } exports.TypedRule = TypedRule; TypedRule.requiresTypeInformation = true; class ConfigurableTypedRule extends TypedRule { constructor(context) { super(context); this.options = this.parseOptions(context.options); } } exports.ConfigurableTypedRule = ConfigurableTypedRule; class AbstractFormatter { } exports.AbstractFormatter = AbstractFormatter; class ConfigurationProvider { } exports.ConfigurationProvider = ConfigurationProvider; var Format; (function (Format) { Format["Yaml"] = "yaml"; Format["Json"] = "json"; Format["Json5"] = "json5"; })(Format = exports.Format || (exports.Format = {})); class AbstractProcessor { constructor(context) { this.source = context.source; this.sourceFileName = context.sourceFileName; this.targetFileName = context.targetFileName; this.settings = context.settings; } /** * Returns a new primary extension that is appended to the file name, e.g. '.ts'. * If the file should not get a new extension, just return an empty string. */ static getSuffixForFile(_context) { return ''; } } exports.AbstractProcessor = AbstractProcessor; class MessageHandler { } exports.MessageHandler = MessageHandler; class DeprecationHandler { } exports.DeprecationHandler = DeprecationHandler; var DeprecationTarget; (function (DeprecationTarget) { DeprecationTarget["Rule"] = "rule"; DeprecationTarget["Processor"] = "processor"; DeprecationTarget["Formatter"] = "formatter"; })(DeprecationTarget = exports.DeprecationTarget || (exports.DeprecationTarget = {})); class FileSystem { } exports.FileSystem = FileSystem; class RuleLoaderHost { } exports.RuleLoaderHost = RuleLoaderHost; class FormatterLoaderHost { } exports.FormatterLoaderHost = FormatterLoaderHost; // wotan-enable no-misused-generics class CacheFactory { } exports.CacheFactory = CacheFactory; class Resolver { } exports.Resolver = Resolver; class BuiltinResolver { } exports.BuiltinResolver = BuiltinResolver; class DirectoryService { } exports.DirectoryService = DirectoryService; class FindingFilterFactory { } exports.FindingFilterFactory = FindingFilterFactory; class LineSwitchParser { } exports.LineSwitchParser = LineSwitchParser; class FileFilterFactory { } exports.FileFilterFactory = FileFilterFactory; class ContentId { } exports.ContentId = ContentId; class StatePersistence { } exports.StatePersistence = StatePersistence; //# sourceMappingURL=index.js.map