aboutsummaryrefslogtreecommitdiff
path: root/node_modules/tslint/lib/ruleLoader.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-10-14 18:40:54 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-10-14 18:40:54 +0200
commit9df98e65f842cf3acae09cbdd969966f42d64469 (patch)
treef071d3e09a342c208fb8e1cd3f5241d64fbfbaf3 /node_modules/tslint/lib/ruleLoader.js
parent008926b18470e7f394cd640302957b29728a9803 (diff)
update dependencies
Diffstat (limited to 'node_modules/tslint/lib/ruleLoader.js')
-rw-r--r--node_modules/tslint/lib/ruleLoader.js20
1 files changed, 17 insertions, 3 deletions
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);