UNPKG

eslint-plugin-lodash-template

Version:

ESLint plugin for John Resig-style micro template, Lodash's template, Underscore's template and EJS.

64 lines (59 loc) 1.87 kB
"use strict"; const getLinters = require("../../utils/get-linters"); let curConfig = null; let alternativeCLIEngine = null; for (const Linter of getLinters()) { const verifyBase = Linter.prototype.verify; const verifyAndFixBase = Linter.prototype.verifyAndFix; Object.defineProperty(Linter.prototype, "verify", { // eslint-disable-next-line no-loop-func -- ignore value: function verify(textOrSourceCode, config, ...args) { curConfig = config; const result = verifyBase.call( this, textOrSourceCode, config, ...args, ); curConfig = null; return result; }, configurable: true, writable: true, }); Object.defineProperty(Linter.prototype, "verifyAndFix", { // eslint-disable-next-line no-loop-func -- ignore value: function verifyAndFix(textOrSourceCode, config, ...args) { curConfig = config; const result = verifyAndFixBase.call( this, textOrSourceCode, config, ...args, ); curConfig = null; return result; }, configurable: true, writable: true, }); } module.exports = (filename) => { if (curConfig) { if (typeof curConfig.extractConfig === "function") { return curConfig.extractConfig(filename); } return curConfig; } const eslint = require("eslint"); try { if (!alternativeCLIEngine) { alternativeCLIEngine = new eslint.CLIEngine({}); } const config = alternativeCLIEngine.getConfigForFile(filename); return Object.assign({ filePath: filename }, config); } catch (_) { // ignore } return {}; };