eslint-plugin-flowtype
Advanced tools
Comparing version 2.21.0 to 2.22.0
@@ -5,2 +5,12 @@ # Change Log | ||
<a name="2.22.0"></a> | ||
# [2.22.0](https://github.com/gajus/eslint-plugin-flowtype/compare/v2.21.0...v2.22.0) (2016-10-24) | ||
### Features | ||
* ObjectTypeIndexer in spaceBeforeTypeColon & spaceAfterTypeColon ([82c87c4](https://github.com/gajus/eslint-plugin-flowtype/commit/82c87c4)), closes [#134](https://github.com/gajus/eslint-plugin-flowtype/issues/134) | ||
<a name="2.21.0"></a> | ||
@@ -7,0 +17,0 @@ # [2.21.0](https://github.com/gajus/eslint-plugin-flowtype/compare/v2.20.0...v2.21.0) (2016-10-22) |
@@ -226,8 +226,86 @@ 'use strict'; | ||
var objectTypeIndexerEvaluator = function objectTypeIndexerEvaluator(context) { | ||
var _parseOptions4 = parseOptions(context); | ||
var always = _parseOptions4.always; | ||
var sourceCode = context.getSourceCode(); | ||
// type X = { [a: b]: c } | ||
// ^ | ||
var checkIndexerKey = function checkIndexerKey(objectTypeIndexer) { | ||
// babel-eslint deletes ObjectTypeIndexer's id, have to check the raw tokens instead | ||
var colonToken = (0, _utilities.getTokenBeforeParens)(sourceCode, objectTypeIndexer.key); | ||
var tokenAfterColon = sourceCode.getTokenAfter(colonToken); | ||
var spaces = tokenAfterColon.start - colonToken.end; | ||
if (always && spaces > 1) { | ||
context.report({ | ||
fix: _utilities.spacingFixers.stripSpacesAfter(colonToken, spaces - 1), | ||
message: 'There must be 1 space after type annotation colon.', | ||
node: objectTypeIndexer | ||
}); | ||
} else if (always && spaces === 0) { | ||
context.report({ | ||
fix: _utilities.spacingFixers.addSpaceAfter(colonToken), | ||
message: 'There must be a space after type annotation colon.', | ||
node: objectTypeIndexer | ||
}); | ||
} else if (!always && spaces > 0) { | ||
context.report({ | ||
fix: _utilities.spacingFixers.stripSpacesAfter(colonToken, spaces), | ||
message: 'There must be no space after type annotation colon.', | ||
node: objectTypeIndexer | ||
}); | ||
} | ||
}; | ||
// type X = { [a: b]: c } | ||
// ^ | ||
var checkIndexerValue = function checkIndexerValue(objectTypeIndexer) { | ||
var _sourceCode$getTokens = sourceCode.getTokensAfter((0, _utilities.getTokenAfterParens)(sourceCode, objectTypeIndexer.key), 2); | ||
var _sourceCode$getTokens2 = _slicedToArray(_sourceCode$getTokens, 2); | ||
var colonToken = _sourceCode$getTokens2[0]; | ||
var tokenAfterColon = _sourceCode$getTokens2[1]; | ||
var spaces = tokenAfterColon.start - colonToken.end; | ||
if (always && spaces > 1) { | ||
context.report({ | ||
fix: _utilities.spacingFixers.stripSpacesAfter(colonToken, spaces - 1), | ||
message: 'There must be 1 space after type annotation colon.', | ||
node: objectTypeIndexer | ||
}); | ||
} else if (always && spaces === 0) { | ||
context.report({ | ||
fix: _utilities.spacingFixers.addSpaceAfter(colonToken), | ||
message: 'There must be a space after type annotation colon.', | ||
node: objectTypeIndexer | ||
}); | ||
} else if (!always && spaces > 0) { | ||
context.report({ | ||
fix: _utilities.spacingFixers.stripSpacesAfter(colonToken, spaces), | ||
message: 'There must be no space after type annotation colon.', | ||
node: objectTypeIndexer | ||
}); | ||
} | ||
}; | ||
return function (objectTypeIndexer) { | ||
checkIndexerKey(objectTypeIndexer); | ||
checkIndexerValue(objectTypeIndexer); | ||
}; | ||
}; | ||
var typeCastEvaluator = function typeCastEvaluator(context) { | ||
var sourceCode = context.getSourceCode(); | ||
var _parseOptions4 = parseOptions(context); | ||
var _parseOptions5 = parseOptions(context); | ||
var always = _parseOptions4.always; | ||
var always = _parseOptions5.always; | ||
@@ -269,2 +347,3 @@ | ||
ClassProperty: propertyEvaluator(context, 'class property'), | ||
ObjectTypeIndexer: objectTypeIndexerEvaluator(context), | ||
ObjectTypeProperty: objectTypePropertyEvaluator(context), | ||
@@ -271,0 +350,0 @@ TypeCastExpression: typeCastEvaluator(context) |
@@ -172,8 +172,80 @@ 'use strict'; | ||
var objectTypeIndexerEvaluator = function objectTypeIndexerEvaluator(context) { | ||
var _parseOptions3 = parseOptions(context); | ||
var always = _parseOptions3.always; | ||
var sourceCode = context.getSourceCode(); | ||
// type X = { [a: b]: c } | ||
// ^ | ||
var checkIndexerKey = function checkIndexerKey(objectTypeIndexer) { | ||
// babel-eslint deletes ObjectTypeIndexer's id, have to check the raw tokens instead | ||
var colonToken = (0, _utilities.getTokenBeforeParens)(sourceCode, objectTypeIndexer.key); | ||
var idToken = sourceCode.getTokenBefore(colonToken); | ||
var spaces = colonToken.start - idToken.end; | ||
if (always && spaces > 1) { | ||
context.report({ | ||
fix: _utilities.spacingFixers.stripSpacesAfter(idToken, spaces - 1), | ||
message: 'There must be 1 space before type annotation colon.', | ||
node: objectTypeIndexer | ||
}); | ||
} else if (always && spaces === 0) { | ||
context.report({ | ||
fix: _utilities.spacingFixers.addSpaceAfter(idToken), | ||
message: 'There must be a space before type annotation colon.', | ||
node: objectTypeIndexer | ||
}); | ||
} else if (!always && spaces > 0) { | ||
context.report({ | ||
fix: _utilities.spacingFixers.stripSpacesAfter(idToken, spaces), | ||
message: 'There must be no space before type annotation colon.', | ||
node: objectTypeIndexer | ||
}); | ||
} | ||
}; | ||
// type X = { [a: b]: c } | ||
// ^ | ||
var checkIndexerValue = function checkIndexerValue(objectTypeIndexer) { | ||
var tokenBeforeColon = (0, _utilities.getTokenAfterParens)(sourceCode, objectTypeIndexer.key); | ||
var colonToken = sourceCode.getTokenAfter(tokenBeforeColon); | ||
var spaces = colonToken.start - tokenBeforeColon.end; | ||
if (always && spaces > 1) { | ||
context.report({ | ||
fix: _utilities.spacingFixers.stripSpacesAfter(tokenBeforeColon, spaces - 1), | ||
message: 'There must be 1 space before type annotation colon.', | ||
node: objectTypeIndexer | ||
}); | ||
} else if (always && spaces === 0) { | ||
context.report({ | ||
fix: _utilities.spacingFixers.addSpaceAfter(tokenBeforeColon), | ||
message: 'There must be a space before type annotation colon.', | ||
node: objectTypeIndexer | ||
}); | ||
} else if (!always && spaces > 0) { | ||
context.report({ | ||
fix: _utilities.spacingFixers.stripSpacesAfter(tokenBeforeColon, spaces), | ||
message: 'There must be no space before type annotation colon.', | ||
node: objectTypeIndexer | ||
}); | ||
} | ||
}; | ||
return function (objectTypeIndexer) { | ||
checkIndexerKey(objectTypeIndexer); | ||
checkIndexerValue(objectTypeIndexer); | ||
}; | ||
}; | ||
var typeCastEvaluator = function typeCastEvaluator(context) { | ||
var sourceCode = context.getSourceCode(); | ||
var _parseOptions3 = parseOptions(context); | ||
var _parseOptions4 = parseOptions(context); | ||
var always = _parseOptions3.always; | ||
var always = _parseOptions4.always; | ||
@@ -210,2 +282,3 @@ | ||
ClassProperty: propertyEvaluator(context, 'class property'), | ||
ObjectTypeIndexer: objectTypeIndexerEvaluator(context), | ||
ObjectTypeProperty: objectTypePropertyEvaluator(context), | ||
@@ -212,0 +285,0 @@ TypeCastExpression: typeCastEvaluator(context) |
@@ -14,14 +14,2 @@ 'use strict'; | ||
var getTokenAfterParens = function getTokenAfterParens(node) { | ||
var sep = void 0; | ||
sep = sourceCode.getTokenAfter(node); | ||
while (sep.type === 'Punctuator' && sep.value === ')') { | ||
sep = sourceCode.getTokenAfter(sep); | ||
} | ||
return sep; | ||
}; | ||
var check = function check(node) { | ||
@@ -33,3 +21,3 @@ node.types.forEach(function (type, index) { | ||
var separator = getTokenAfterParens(type); | ||
var separator = (0, _utilities.getTokenAfterParens)(sourceCode, type); | ||
var endOfType = sourceCode.getTokenBefore(separator); | ||
@@ -36,0 +24,0 @@ var nextType = sourceCode.getTokenAfter(separator); |
@@ -7,3 +7,3 @@ 'use strict'; | ||
}); | ||
exports.quoteName = exports.spacingFixers = exports.iterateFunctionNodes = exports.isFlowFileAnnotation = exports.isFlowFile = exports.getParameterName = undefined; | ||
exports.getTokenAfterParens = exports.getTokenBeforeParens = exports.quoteName = exports.spacingFixers = exports.iterateFunctionNodes = exports.isFlowFileAnnotation = exports.isFlowFile = exports.getParameterName = undefined; | ||
@@ -34,2 +34,10 @@ var _getParameterName2 = require('./getParameterName.js'); | ||
var _getTokenBeforeParens2 = require('./getTokenBeforeParens'); | ||
var _getTokenBeforeParens3 = _interopRequireDefault(_getTokenBeforeParens2); | ||
var _getTokenAfterParens2 = require('./getTokenAfterParens'); | ||
var _getTokenAfterParens3 = _interopRequireDefault(_getTokenAfterParens2); | ||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } | ||
@@ -44,2 +52,4 @@ | ||
exports.spacingFixers = _spacingFixers; | ||
exports.quoteName = _quoteName3.default; | ||
exports.quoteName = _quoteName3.default; | ||
exports.getTokenBeforeParens = _getTokenBeforeParens3.default; | ||
exports.getTokenAfterParens = _getTokenAfterParens3.default; |
{ | ||
"name": "eslint-plugin-flowtype", | ||
"description": "Flowtype linting rules for ESLint.", | ||
"version": "2.21.0", | ||
"version": "2.22.0", | ||
"main": "./dist/index.js", | ||
@@ -6,0 +6,0 @@ "repository": { |
Sorry, the diff of this file is too big to display
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
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
158139
35
1695
3025