New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

tslint-react

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tslint-react - npm Package Compare versions

Comparing version 2.1.1 to 2.2.0

2

package.json
{
"name": "tslint-react",
"version": "2.1.1",
"version": "2.2.0",
"description": "Lint rules related to React & JSX for TSLint",

@@ -5,0 +5,0 @@ "main": "tslint-react.json",

@@ -49,2 +49,3 @@ [![NPM version](https://badge.fury.io/js/tslint-react.svg)](https://www.npmjs.com/package/tslint-react)

- Rule options: `["always", "never"]`
- _Includes automatic code fix_
- `jsx-no-lambda`

@@ -51,0 +52,0 @@ - Creating new anonymous functions (with either the `function` syntax or ES2015 arrow syntax) inside the `render` call stack works against _pure component rendering_. When doing an equality check between two lambdas, React will always consider them unequal values and force the component to re-render more often than necessary.

@@ -47,5 +47,6 @@ /**

}
function isSpaceBetweenTokens(first, second) {
var text = first.parent.getText().slice(first.end - first.parent.getStart(), second.getStart() - second.parent.getStart());
return /\s/.test(text.replace(/\/\*.*?\*\//g, ""));
function getTotalCharCount(comments) {
return comments
.map(function (comment) { return comment.end - comment.pos; })
.reduce(function (l, r) { return l + r; }, 0);
}

@@ -118,9 +119,17 @@ var Rule = (function (_super) {

if (this.hasOption(OPTION_ALWAYS)) {
if (!isSpaceBetweenTokens(firstToken, secondToken)) {
var deleteFix = this.getDeleteFixForSpaceBetweenTokens(firstToken, secondToken);
if (deleteFix === undefined) {
var fix = new Lint.Fix(Rule.metadata.ruleName, [
this.appendText(secondToken.getFullStart(), " "),
]);
var failureString = Rule.FAILURE_NO_BEGINNING_SPACE(firstToken.getText());
this.addFailure(this.createFailure(nodeStart, 1, failureString));
this.addFailure(this.createFailure(nodeStart, 1, failureString, fix));
}
if (!isSpaceBetweenTokens(secondToLastToken, lastToken)) {
deleteFix = this.getDeleteFixForSpaceBetweenTokens(secondToLastToken, lastToken);
if (deleteFix === undefined) {
var fix = new Lint.Fix(Rule.metadata.ruleName, [
this.appendText(lastToken.getStart(), " "),
]);
var failureString = Rule.FAILURE_NO_ENDING_SPACE(lastToken.getText());
this.addFailure(this.createFailure(nodeStart + nodeWidth - 1, 1, failureString));
this.addFailure(this.createFailure(nodeStart + nodeWidth - 1, 1, failureString, fix));
}

@@ -132,11 +141,18 @@ }

if (!isExpressionMultiline(firstAndSecondTokensCombinedText)) {
if (isSpaceBetweenTokens(firstToken, secondToken)) {
var fix = this.getDeleteFixForSpaceBetweenTokens(firstToken, secondToken);
if (fix !== undefined) {
var failureString = Rule.FAILURE_FORBIDDEN_SPACES_BEGINNING(firstToken.getText());
this.addFailure(this.createFailure(nodeStart, 1, failureString));
this.addFailure(this.createFailure(nodeStart, 1, failureString, fix));
}
}
if (!isExpressionMultiline(lastAndSecondToLastCombinedText)) {
if (isSpaceBetweenTokens(secondToLastToken, lastToken)) {
var fix = this.getDeleteFixForSpaceBetweenTokens(secondToLastToken, lastToken);
if (fix !== undefined) {
var failureString = Rule.FAILURE_FORBIDDEN_SPACES_END(lastToken.getText());
this.addFailure(this.createFailure(nodeStart + nodeWidth - 1, 1, failureString));
// degenerate case when firstToken is the same as the secondToLastToken as we would
// have already queued up a fix in the previous branch, do not apply fix
var failure = firstToken === secondToLastToken ?
this.createFailure(nodeStart + nodeWidth - 1, 1, failureString) :
this.createFailure(nodeStart + nodeWidth - 1, 1, failureString, fix);
this.addFailure(failure);
}

@@ -146,4 +162,28 @@ }

};
JsxCurlySpacingWalker.prototype.getDeleteFixForSpaceBetweenTokens = function (firstNode, secondNode) {
if (firstNode.parent !== secondNode.parent) {
throw Error("Expected identical parents for both nodes");
}
var parent = firstNode.parent;
var parentStart = parent.getStart();
var secondNodeStart = secondNode.getFullStart();
var firstNodeEnd = firstNode.getStart() + firstNode.getWidth();
var secondNodeRelativeStart = secondNodeStart - parentStart;
var firstNodeRelativeEnd = firstNodeEnd - parentStart;
var parentText = parent.getText();
var trailingComments = ts.getTrailingCommentRanges(parentText, firstNodeRelativeEnd) || [];
var leadingComments = ts.getLeadingCommentRanges(parentText, secondNodeRelativeStart) || [];
var comments = trailingComments.concat(leadingComments);
if (secondNode.getStart() - firstNode.getStart() - firstNode.getWidth() > getTotalCharCount(comments)) {
var replacements = comments.map(function (comment) { return parentText.slice(comment.pos, comment.end); }).join("");
return new Lint.Fix(Rule.metadata.ruleName, [
this.createReplacement(secondNodeStart, secondNode.getStart() - secondNodeStart, replacements),
]);
}
else {
return undefined;
}
};
return JsxCurlySpacingWalker;
}(Lint.RuleWalker));
var _a;
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