UNPKG

1.59 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _utilities = require('../utilities');
8
9exports.default = function (context) {
10 var never = (context.options[0] || 'never') === 'never';
11
12 return {
13 GenericTypeAnnotation: function GenericTypeAnnotation(node) {
14 var types = node.typeParameters;
15
16 // Promise<foo>
17 // ^^^^^^^^^^^^ GenericTypeAnnotation (with typeParameters)
18 // ^^^ GenericTypeAnnotation (without typeParameters)
19 if (!types) {
20 return;
21 }
22
23 var spaceBefore = types.start - node.id.end;
24
25 if (never && spaceBefore) {
26 context.report({
27 data: { name: node.id.name },
28 fix: _utilities.spacingFixers.stripSpacesAfter(node.id, spaceBefore),
29 message: 'There must be no space before "{{name}}" generic type annotation bracket',
30 node: node
31 });
32 }
33
34 if (!never && !spaceBefore) {
35 context.report({
36 data: { name: node.id.name },
37 fix: _utilities.spacingFixers.addSpaceAfter(node.id),
38 message: 'There must be a space before "{{name}}" generic type annotation bracket',
39 node: node
40 });
41 }
42
43 if (!never && spaceBefore > 1) {
44 context.report({
45 data: { name: node.id.name },
46 fix: _utilities.spacingFixers.stripSpacesAfter(node.id, spaceBefore - 1),
47 message: 'There must be one space before "{{name}}" generic type annotation bracket',
48 node: node
49 });
50 }
51 }
52 };
53};
54
55module.exports = exports['default'];
\No newline at end of file