-
Notifications
You must be signed in to change notification settings - Fork 732
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
96 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
module.exports = require('eslint/package.json'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
// Explicitly require just the stuff we care about to avoid loading | ||
// RuleTester and CLIEngine, which are unnecessary and bloat out the | ||
// package size. | ||
const Linter = require('eslint/lib/linter'); | ||
|
||
module.exports = { | ||
eslint: new Linter(), | ||
sourceCode: require('eslint/lib/util/source-code') | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
{ | ||
"name": "eslint4", | ||
"version": "1.0.0", | ||
"description": "Wrapper for ESLint 4", | ||
"main": "index.js", | ||
"dependencies": { | ||
"eslint": "^4.0.0" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
export default function(context) { | ||
return { | ||
TemplateLiteral(node) { | ||
context.report(node, 'Do not use template literals'); | ||
} | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
import pkg from 'eslint4/eslint4-package'; | ||
|
||
const ID = 'eslint-v4'; | ||
const name = 'ESLint v4'; | ||
|
||
export default { | ||
id: ID, | ||
displayName: name, | ||
version: pkg.version, | ||
homepage: pkg.homepage, | ||
|
||
defaultParserID: 'babel-eslint', | ||
|
||
loadTransformer(callback) { | ||
require( | ||
['eslint4', '../../utils/eslint4Utils'], | ||
(eslint, utils) => callback({...eslint, utils}) | ||
); | ||
}, | ||
|
||
transform({ eslint, sourceCode, utils }, transformCode, code) { | ||
utils.defineRule(eslint, transformCode); | ||
return utils.runRule(code, eslint, sourceCode); | ||
}, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
import compileModule from '../../utils/compileModule'; | ||
import {parseNoPatch} from 'babel-eslint'; | ||
|
||
export function formatResults(results) { | ||
return results.length === 0 | ||
? 'Lint rule not fired.' | ||
: results.map(formatResult).join('').trim(); | ||
} | ||
|
||
export function formatResult(result) { | ||
var pointer = '-'.repeat(result.column - 1) + '^'; | ||
return ` | ||
// ${result.message} (at ${result.line}:${result.column}) | ||
${result.source} | ||
// ${pointer} | ||
`; | ||
} | ||
|
||
export function defineRule(eslint, code) { | ||
// Compile the transform code and install it as an ESLint rule. The rule | ||
// name doesn't really matter here, so we'll just use a hard-coded name. | ||
const rule = compileModule(code); | ||
eslint.defineRule('astExplorerRule', rule.default || rule); | ||
} | ||
|
||
export function runRule(code, eslint, sourceCode) { | ||
// Run the ESLint rule on the AST of the provided code. | ||
// Reference: http://eslint.org/docs/developer-guide/nodejs-api | ||
const ast = parseNoPatch(code, { | ||
sourceType: 'module', | ||
}); | ||
const results = eslint.verify(new sourceCode(code, ast), { | ||
env: {es6: true}, | ||
parserOptions: { | ||
ecmaVersion: 8, | ||
sourceType: 'module', | ||
ecmaFeatures: {experimentalObjectRestSpread: true}, | ||
}, | ||
rules: { | ||
astExplorerRule: 2, | ||
}, | ||
}); | ||
return formatResults(results); | ||
} |