From 9df98e65f842cf3acae09cbdd969966f42d64469 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Sat, 14 Oct 2017 18:40:54 +0200 Subject: update dependencies --- node_modules/tslint/lib/ruleLoader.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'node_modules/tslint/lib/ruleLoader.js') diff --git a/node_modules/tslint/lib/ruleLoader.js b/node_modules/tslint/lib/ruleLoader.js index acc7a3881..152f7b641 100644 --- a/node_modules/tslint/lib/ruleLoader.js +++ b/node_modules/tslint/lib/ruleLoader.js @@ -91,15 +91,29 @@ function transformName(name) { * @param ruleName - A name of a rule in filename format. ex) "someLintRule" */ function loadRule(directory, ruleName) { - var fullPath = path.join(directory, ruleName); - if (fs.existsSync(fullPath + ".js")) { - var ruleModule = require(fullPath); + var ruleFullPath = getRuleFullPath(directory, ruleName); + if (ruleFullPath !== undefined) { + var ruleModule = require(ruleFullPath); if (ruleModule !== undefined) { return ruleModule.Rule; } } return "not-found"; } +/** + * Returns the full path to a rule file. Path to rules are resolved using nodes path resolution. + * This allows developers to write custom rules in TypeScript, which then can be loaded by TS-Node. + * @param directory - An absolute path to a directory of rules + * @param ruleName - A name of a rule in filename format. ex) "someLintRule" + */ +function getRuleFullPath(directory, ruleName) { + try { + return require.resolve(path.join(directory, ruleName)); + } + catch (e) { + return undefined; + } +} function loadCachedRule(directory, ruleName, isCustomPath) { // use cached value if available var fullPath = path.join(directory, ruleName); -- cgit v1.2.3