spaceBeforeGenericBracket.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports["default"] = void 0;
  6. var _utilities = require("../utilities");
  7. var schema = [{
  8. "enum": ['always', 'never'],
  9. type: 'string'
  10. }];
  11. var create = function create(context) {
  12. var never = (context.options[0] || 'never') === 'never';
  13. return {
  14. GenericTypeAnnotation: function GenericTypeAnnotation(node) {
  15. var types = node.typeParameters; // Promise<foo>
  16. // ^^^^^^^^^^^^ GenericTypeAnnotation (with typeParameters)
  17. // ^^^ GenericTypeAnnotation (without typeParameters)
  18. if (!types) {
  19. return;
  20. }
  21. var spaceBefore = types.range[0] - node.id.range[1];
  22. if (never && spaceBefore) {
  23. context.report({
  24. data: {
  25. name: node.id.name
  26. },
  27. fix: _utilities.spacingFixers.stripSpacesAfter(node.id, spaceBefore),
  28. message: 'There must be no space before "{{name}}" generic type annotation bracket',
  29. node: node
  30. });
  31. }
  32. if (!never && !spaceBefore) {
  33. context.report({
  34. data: {
  35. name: node.id.name
  36. },
  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. if (!never && spaceBefore > 1) {
  43. context.report({
  44. data: {
  45. name: node.id.name
  46. },
  47. fix: _utilities.spacingFixers.stripSpacesAfter(node.id, spaceBefore - 1),
  48. message: 'There must be one space before "{{name}}" generic type annotation bracket',
  49. node: node
  50. });
  51. }
  52. }
  53. };
  54. };
  55. var _default = {
  56. create: create,
  57. meta: {
  58. fixable: 'code'
  59. },
  60. schema: schema
  61. };
  62. exports["default"] = _default;
  63. module.exports = exports.default;