Socket
Socket
Sign inDemoInstall

babel-eslint

Package Overview
Dependencies
Maintainers
11
Versions
135
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

babel-eslint - npm Package Compare versions

Comparing version 8.2.3 to 8.2.4

5

lib/analyze-scope.js

@@ -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);

147

lib/babylon-to-espree/convertTemplateType.js
"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 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc