babel-eslint
Advanced tools
Comparing version 8.2.3 to 8.2.4
@@ -184,2 +184,7 @@ "use strict"; | ||
// visit OptionalMemberExpression as a MemberExpression. | ||
OptionalMemberExpression(node) { | ||
super.MemberExpression(node); | ||
} | ||
_visitClassProperty(node) { | ||
@@ -186,0 +191,0 @@ this._visitTypeAnnotation(node.typeAnnotation); |
"use strict"; | ||
module.exports = function(tokens, tt) { | ||
var startingToken = 0; | ||
var currentToken = 0; | ||
var numBraces = 0; // track use of {} | ||
var numBackQuotes = 0; // track number of nested templates | ||
let curlyBrace = null; | ||
let templateTokens = []; | ||
const result = []; | ||
function isBackQuote(token) { | ||
return tokens[token].type === tt.backQuote; | ||
} | ||
function addTemplateType() { | ||
const start = templateTokens[0]; | ||
const end = templateTokens[templateTokens.length - 1]; | ||
function isTemplateStarter(token) { | ||
return ( | ||
isBackQuote(token) || | ||
// only can be a template starter when in a template already | ||
(tokens[token].type === tt.braceR && numBackQuotes > 0) | ||
); | ||
} | ||
const value = templateTokens.reduce((result, token) => { | ||
if (token.value) { | ||
result += token.value; | ||
} else if (token.type !== tt.template) { | ||
result += token.type.label; | ||
} | ||
function isTemplateEnder(token) { | ||
return isBackQuote(token) || tokens[token].type === tt.dollarBraceL; | ||
} | ||
return result; | ||
}, ""); | ||
// append the values between start and end | ||
function createTemplateValue(start, end) { | ||
var value = ""; | ||
while (start <= end) { | ||
if (tokens[start].value) { | ||
value += tokens[start].value; | ||
} else if (tokens[start].type !== tt.template) { | ||
value += tokens[start].type.label; | ||
} | ||
start++; | ||
} | ||
return value; | ||
} | ||
// create Template token | ||
function replaceWithTemplateType(start, end) { | ||
var templateToken = { | ||
result.push({ | ||
type: "Template", | ||
value: createTemplateValue(start, end), | ||
start: tokens[start].start, | ||
end: tokens[end].end, | ||
value: value, | ||
start: start.start, | ||
end: end.end, | ||
loc: { | ||
start: tokens[start].loc.start, | ||
end: tokens[end].loc.end, | ||
start: start.loc.start, | ||
end: end.loc.end, | ||
}, | ||
}; | ||
}); | ||
// put new token in place of old tokens | ||
tokens.splice(start, end - start + 1, templateToken); | ||
templateTokens = []; | ||
} | ||
function trackNumBraces(token) { | ||
if (tokens[token].type === tt.braceL) { | ||
numBraces++; | ||
} else if (tokens[token].type === tt.braceR) { | ||
numBraces--; | ||
} | ||
} | ||
tokens.forEach(token => { | ||
switch (token.type) { | ||
case tt.backQuote: | ||
if (curlyBrace) { | ||
result.push(curlyBrace); | ||
curlyBrace = null; | ||
} | ||
while (startingToken < tokens.length) { | ||
// template start: check if ` or } | ||
if (isTemplateStarter(startingToken) && numBraces === 0) { | ||
if (isBackQuote(startingToken)) { | ||
numBackQuotes++; | ||
} | ||
templateTokens.push(token); | ||
currentToken = startingToken + 1; | ||
if (templateTokens.length > 1) { | ||
addTemplateType(); | ||
} | ||
// check if token after template start is "template" | ||
if ( | ||
currentToken >= tokens.length - 1 || | ||
tokens[currentToken].type !== tt.template | ||
) { | ||
break; | ||
} | ||
// template end: find ` or ${ | ||
while (!isTemplateEnder(currentToken)) { | ||
if (currentToken >= tokens.length - 1) { | ||
break; | ||
case tt.dollarBraceL: | ||
templateTokens.push(token); | ||
addTemplateType(); | ||
break; | ||
case tt.braceR: | ||
if (curlyBrace) { | ||
result.push(curlyBrace); | ||
} | ||
currentToken++; | ||
} | ||
if (isBackQuote(currentToken)) { | ||
numBackQuotes--; | ||
} | ||
// template start and end found: create new token | ||
replaceWithTemplateType(startingToken, currentToken); | ||
} else if (numBackQuotes > 0) { | ||
trackNumBraces(startingToken); | ||
curlyBrace = token; | ||
break; | ||
case tt.template: | ||
if (curlyBrace) { | ||
templateTokens.push(curlyBrace); | ||
curlyBrace = null; | ||
} | ||
templateTokens.push(token); | ||
break; | ||
case tt.eof: | ||
if (curlyBrace) { | ||
result.push(curlyBrace); | ||
} | ||
break; | ||
default: | ||
if (curlyBrace) { | ||
result.push(curlyBrace); | ||
curlyBrace = null; | ||
} | ||
result.push(token); | ||
} | ||
startingToken++; | ||
} | ||
}); | ||
return result; | ||
}; |
@@ -9,7 +9,2 @@ "use strict"; | ||
module.exports = function(ast, traverse, tt, code) { | ||
// remove EOF token, eslint doesn't use this for anything and it interferes | ||
// with some rules see https://github.com/babel/babel-eslint/issues/2 | ||
// todo: find a more elegant way to do this | ||
ast.tokens.pop(); | ||
// convert tokens | ||
@@ -16,0 +11,0 @@ ast.tokens = toTokens(ast.tokens, tt, code); |
@@ -22,2 +22,3 @@ "use strict"; | ||
type === tt.arrow || | ||
type === tt.pipeline || | ||
type === tt.star || | ||
@@ -27,2 +28,3 @@ type === tt.incDec || | ||
type === tt.question || | ||
type === tt.questionDot || | ||
type === tt.template || | ||
@@ -34,2 +36,3 @@ type === tt.backQuote || | ||
type === tt.logicalAND || | ||
type === tt.nullishCoalescing || | ||
type === tt.bitwiseOR || | ||
@@ -36,0 +39,0 @@ type === tt.bitwiseXOR || |
@@ -7,14 +7,5 @@ "use strict"; | ||
module.exports = function(tokens, tt, code) { | ||
// transform tokens to type "Template" | ||
convertTemplateType(tokens, tt); | ||
var transformedTokens = []; | ||
for (var i = 0; i < tokens.length; i++) { | ||
var token = tokens[i]; | ||
if (token.type !== "CommentLine" && token.type !== "CommentBlock") { | ||
transformedTokens.push(toToken(token, tt, code)); | ||
} | ||
} | ||
return transformedTokens; | ||
return convertTemplateType(tokens, tt) | ||
.filter(t => t.type !== "CommentLine" && t.type !== "CommentBlock") | ||
.map(t => toToken(t, tt, code)); | ||
}; |
"use strict"; | ||
var babylonToEspree = require("./babylon-to-espree"); | ||
var parse = require("babylon").parse; | ||
var tt = require("babylon").tokTypes; | ||
var parse = require("@babel/parser").parse; | ||
var tt = require("@babel/parser").tokTypes; | ||
var traverse = require("@babel/traverse").default; | ||
@@ -26,3 +26,3 @@ var codeFrameColumns = require("@babel/code-frame").codeFrameColumns; | ||
"classProperties", | ||
"decorators", | ||
"decorators-legacy", | ||
"doExpressions", | ||
@@ -29,0 +29,0 @@ "exponentiationOperator", |
@@ -236,2 +236,6 @@ "use strict"; | ||
// visit OptionalMemberExpression as a MemberExpression. | ||
referencer.prototype.OptionalMemberExpression = | ||
referencer.prototype.MemberExpression; | ||
// visit flow type in FunctionDeclaration, FunctionExpression, ArrowFunctionExpression | ||
@@ -238,0 +242,0 @@ var visitFunction = referencer.prototype.visitFunction; |
{ | ||
"name": "babel-eslint", | ||
"version": "8.2.3", | ||
"version": "8.2.4", | ||
"description": "Custom parser for ESLint", | ||
@@ -14,6 +14,6 @@ "main": "lib/index.js", | ||
"dependencies": { | ||
"@babel/code-frame": "7.0.0-beta.44", | ||
"@babel/traverse": "7.0.0-beta.44", | ||
"@babel/types": "7.0.0-beta.44", | ||
"babylon": "7.0.0-beta.44", | ||
"@babel/code-frame": "7.0.0-beta.51", | ||
"@babel/parser": "7.0.0-beta.51", | ||
"@babel/traverse": "7.0.0-beta.51", | ||
"@babel/types": "7.0.0-beta.51", | ||
"eslint-scope": "~3.7.1", | ||
@@ -43,3 +43,3 @@ "eslint-visitor-keys": "^1.0.0" | ||
"dedent": "^0.7.0", | ||
"eslint": "npm:eslint@4.13.1", | ||
"eslint": "npm:eslint@4.19.1", | ||
"eslint-config-babel": "^7.0.1", | ||
@@ -46,0 +46,0 @@ "eslint-old": "npm:eslint@4.13.1", |
@@ -50,2 +50,3 @@ # babel-eslint [![npm](https://img.shields.io/npm/v/babel-eslint.svg)](https://www.npmjs.com/package/babel-eslint) [![travis](https://img.shields.io/travis/babel/babel-eslint/master.svg)](https://travis-ci.org/babel/babel-eslint) [![npm-downloads](https://img.shields.io/npm/dm/babel-eslint.svg)](https://www.npmjs.com/package/babel-eslint) | ||
------------ | ------------- | ||
4.x | >= 6.x | ||
3.x | >= 6.x | ||
@@ -60,5 +61,5 @@ 2.x | >= 6.x | ||
```sh | ||
$ npm install eslint@3.x babel-eslint@7 --save-dev | ||
$ npm install eslint@4.x babel-eslint@8 --save-dev | ||
# or | ||
$ yarn add eslint@3.x babel-eslint@7 -D | ||
$ yarn add eslint@4.x babel-eslint@8 -D | ||
``` | ||
@@ -65,0 +66,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
104
42148
1110
1
+ Added@babel/parser@7.0.0-beta.51
+ Added@babel/code-frame@7.0.0-beta.51(transitive)
+ Added@babel/generator@7.0.0-beta.51(transitive)
+ Added@babel/helper-function-name@7.0.0-beta.51(transitive)
+ Added@babel/helper-get-function-arity@7.0.0-beta.51(transitive)
+ Added@babel/helper-split-export-declaration@7.0.0-beta.51(transitive)
+ Added@babel/highlight@7.0.0-beta.51(transitive)
+ Added@babel/parser@7.0.0-beta.51(transitive)
+ Added@babel/template@7.0.0-beta.51(transitive)
+ Added@babel/traverse@7.0.0-beta.51(transitive)
+ Added@babel/types@7.0.0-beta.51(transitive)
- Removedbabylon@7.0.0-beta.44
- Removed@babel/code-frame@7.0.0-beta.44(transitive)
- Removed@babel/generator@7.0.0-beta.44(transitive)
- Removed@babel/helper-function-name@7.0.0-beta.44(transitive)
- Removed@babel/helper-get-function-arity@7.0.0-beta.44(transitive)
- Removed@babel/helper-split-export-declaration@7.0.0-beta.44(transitive)
- Removed@babel/highlight@7.0.0-beta.44(transitive)
- Removed@babel/template@7.0.0-beta.44(transitive)
- Removed@babel/traverse@7.0.0-beta.44(transitive)
- Removed@babel/types@7.0.0-beta.44(transitive)
- Removedbabylon@7.0.0-beta.44(transitive)
Updated@babel/types@7.0.0-beta.51