mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-11-01 10:49:03 +08:00
DISABLE_THIRD_PARTY_CHECK=node_modules update Bug: none Change-Id: I0314c61235e97459facf879aec4bc8b9e1029099 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2753149 Commit-Queue: Jack Franklin <jacktfranklin@chromium.org> Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org> Reviewed-by: Tim van der Lippe <tvanderlippe@chromium.org> Auto-Submit: Jack Franklin <jacktfranklin@chromium.org>
47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
/**
|
|
* @fileoverview Allows a local ESLint rules directory to be used without a command-line flag
|
|
* @author Teddy Katz
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Requirements
|
|
//------------------------------------------------------------------------------
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Plugin Definition
|
|
//------------------------------------------------------------------------------
|
|
|
|
const cache = {};
|
|
module.exports = {
|
|
get rules() {
|
|
const RULES_DIR = module.exports.RULES_DIR;
|
|
if (typeof module.exports.RULES_DIR !== 'string' && !Array.isArray(RULES_DIR)) {
|
|
throw new Error('To use eslint-plugin-rulesdir, you must load it beforehand and set the `RULES_DIR` property on the module to a string or an array of strings.');
|
|
}
|
|
const cacheKey = JSON.stringify(RULES_DIR);
|
|
if (!cache[cacheKey]) {
|
|
const rules = Array.isArray(RULES_DIR) ? RULES_DIR : [RULES_DIR];
|
|
const rulesObject = {};
|
|
rules.forEach((rulesDir) => {
|
|
fs.readdirSync(rulesDir)
|
|
.filter(filename => filename.endsWith('.js'))
|
|
.map(filename => path.resolve(rulesDir, filename))
|
|
.forEach((absolutePath) => {
|
|
const ruleName = path.basename(absolutePath, '.js');
|
|
if (rulesObject[ruleName]) {
|
|
throw new Error(`eslint-plugin-rulesdir found two rules with the same name: ${ruleName}`);
|
|
}
|
|
rulesObject[ruleName] = require(absolutePath);
|
|
});
|
|
});
|
|
cache[cacheKey] = rulesObject;
|
|
}
|
|
return cache[cacheKey];
|
|
},
|
|
};
|