canonical
Version:
Canonical code style linter and formatter for JavaScript, SCSS and CSS.
63 lines (40 loc) • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _some = require('lodash/collection/some');
var _some2 = _interopRequireDefault(_some);
var _forEach = require('lodash/collection/forEach');
var _forEach2 = _interopRequireDefault(_forEach);
var _includes = require('lodash/collection/includes');
var _includes2 = _interopRequireDefault(_includes);
var _filter = require('lodash/collection/filter');
var _filter2 = _interopRequireDefault(_filter);
var _iterateJsdoc = require('./../iterateJsdoc');
var _iterateJsdoc2 = _interopRequireDefault(_iterateJsdoc);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var strictNativeTypes = undefined,
targetTagAliases = undefined,
targetTags = undefined;
targetTags = ['class', 'constant', 'enum', 'member', 'module', 'namespace', 'param', 'property', 'returns', 'throws', 'type', 'typedef'];
targetTagAliases = ['constructor', 'const', 'var', 'arg', 'argument', 'prop', 'return', 'exception'];
targetTags = targetTags.concat(targetTagAliases);
strictNativeTypes = ['boolean', 'number', 'string', 'Array', 'Object', 'RegExp', 'Date', 'Function'];
exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var jsdoc = _ref.jsdoc;
var report = _ref.report;
var jsdocTags = undefined;
jsdocTags = (0, _filter2.default)(jsdoc.tags, function (tag) {
return (0, _includes2.default)(targetTags, tag.tag);
});
(0, _forEach2.default)(jsdocTags, function (jsdocTag) {
(0, _some2.default)(strictNativeTypes, function (strictNativeType) {
if (strictNativeType.toLowerCase() === jsdocTag.type.toLowerCase() && strictNativeType !== jsdocTag.type) {
report('Invalid JSDoc @' + jsdocTag.tag + ' "' + jsdocTag.name + '" type "' + jsdocTag.type + '".');
return true;
}
});
});
});
module.exports = exports['default'];
//# sourceMappingURL=checkTypes.js.map