index.js.flow 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. import _ from 'lodash';
  2. import recommended from './configs/recommended.json';
  3. import arrayStyleComplexType from './rules/arrayStyleComplexType';
  4. import arrayStyleSimpleType from './rules/arrayStyleSimpleType';
  5. import arrowParens from './rules/arrowParens';
  6. import booleanStyle from './rules/booleanStyle';
  7. import defineFlowType from './rules/defineFlowType';
  8. import delimiterDangle from './rules/delimiterDangle';
  9. import enforceLineBreak from './rules/enforceLineBreak';
  10. import enforceSuppressionCode from './rules/enforceSuppressionCode';
  11. import genericSpacing from './rules/genericSpacing';
  12. import interfaceIdMatch from './rules/interfaceIdMatch';
  13. import newlineAfterFlowAnnotation from './rules/newlineAfterFlowAnnotation';
  14. import noDupeKeys from './rules/noDupeKeys';
  15. import noDuplicateTypeUnionIntersectionMembers from './rules/noDuplicateTypeUnionIntersectionMembers';
  16. import noExistentialType from './rules/noExistentialType';
  17. import noFlowFixMeComments from './rules/noFlowFixMeComments';
  18. import noFlowSuppressionsInStrictFiles from './rules/noFlowSuppressionsInStrictFiles';
  19. import noInternalFlowType from './rules/noInternalFlowType';
  20. import noMixed from './rules/noMixed';
  21. import noMutableArray from './rules/noMutableArray';
  22. import noPrimitiveConstructorTypes from './rules/noPrimitiveConstructorTypes';
  23. import noTypesMissingFileAnnotation from './rules/noTypesMissingFileAnnotation';
  24. import noUnusedExpressions from './rules/noUnusedExpressions';
  25. import noWeakTypes from './rules/noWeakTypes';
  26. import objectTypeCurlySpacing from './rules/objectTypeCurlySpacing';
  27. import objectTypeDelimiter from './rules/objectTypeDelimiter';
  28. import quotes from './rules/quotes';
  29. import requireCompoundTypeAlias from './rules/requireCompoundTypeAlias';
  30. import requireExactType from './rules/requireExactType';
  31. import requireIndexerName from './rules/requireIndexerName';
  32. import requireInexactType from './rules/requireInexactType';
  33. import requireParameterType from './rules/requireParameterType';
  34. import requireReadonlyReactProps from './rules/requireReadonlyReactProps';
  35. import requireReturnType from './rules/requireReturnType';
  36. import requireTypesAtTop from './rules/requireTypesAtTop';
  37. import requireValidFileAnnotation from './rules/requireValidFileAnnotation';
  38. import requireVariableType from './rules/requireVariableType';
  39. import semi from './rules/semi';
  40. import sortKeys from './rules/sortKeys';
  41. import sortTypeUnionIntersectionMembers from './rules/sortTypeUnionIntersectionMembers';
  42. import spaceAfterTypeColon from './rules/spaceAfterTypeColon';
  43. import spaceBeforeGenericBracket from './rules/spaceBeforeGenericBracket';
  44. import spaceBeforeTypeColon from './rules/spaceBeforeTypeColon';
  45. import spreadExactType from './rules/spreadExactType';
  46. import typeIdMatch from './rules/typeIdMatch';
  47. import typeImportStyle from './rules/typeImportStyle';
  48. import unionIntersectionSpacing from './rules/unionIntersectionSpacing';
  49. import useFlowType from './rules/useFlowType';
  50. import useReadOnlySpread from './rules/useReadOnlySpread';
  51. import validSyntax from './rules/validSyntax';
  52. import {
  53. checkFlowFileAnnotation,
  54. } from './utilities';
  55. const rules = {
  56. 'array-style-complex-type': arrayStyleComplexType,
  57. 'array-style-simple-type': arrayStyleSimpleType,
  58. 'arrow-parens': arrowParens,
  59. 'boolean-style': booleanStyle,
  60. 'define-flow-type': defineFlowType,
  61. 'delimiter-dangle': delimiterDangle,
  62. 'enforce-line-break': enforceLineBreak,
  63. 'enforce-suppression-code': enforceSuppressionCode,
  64. 'generic-spacing': genericSpacing,
  65. 'interface-id-match': interfaceIdMatch,
  66. 'newline-after-flow-annotation': newlineAfterFlowAnnotation,
  67. 'no-dupe-keys': noDupeKeys,
  68. 'no-duplicate-type-union-intersection-members': noDuplicateTypeUnionIntersectionMembers,
  69. 'no-existential-type': noExistentialType,
  70. 'no-flow-fix-me-comments': noFlowFixMeComments,
  71. 'no-flow-suppressions-in-strict-files': noFlowSuppressionsInStrictFiles,
  72. 'no-internal-flow-type': noInternalFlowType,
  73. 'no-mixed': noMixed,
  74. 'no-mutable-array': noMutableArray,
  75. 'no-primitive-constructor-types': noPrimitiveConstructorTypes,
  76. 'no-types-missing-file-annotation': noTypesMissingFileAnnotation,
  77. 'no-unused-expressions': noUnusedExpressions,
  78. 'no-weak-types': noWeakTypes,
  79. 'object-type-curly-spacing': objectTypeCurlySpacing,
  80. 'object-type-delimiter': objectTypeDelimiter,
  81. quotes,
  82. 'require-compound-type-alias': requireCompoundTypeAlias,
  83. 'require-exact-type': requireExactType,
  84. 'require-indexer-name': requireIndexerName,
  85. 'require-inexact-type': requireInexactType,
  86. 'require-parameter-type': requireParameterType,
  87. 'require-readonly-react-props': requireReadonlyReactProps,
  88. 'require-return-type': requireReturnType,
  89. 'require-types-at-top': requireTypesAtTop,
  90. 'require-valid-file-annotation': requireValidFileAnnotation,
  91. 'require-variable-type': requireVariableType,
  92. semi,
  93. 'sort-keys': sortKeys,
  94. 'sort-type-union-intersection-members': sortTypeUnionIntersectionMembers,
  95. 'space-after-type-colon': spaceAfterTypeColon,
  96. 'space-before-generic-bracket': spaceBeforeGenericBracket,
  97. 'space-before-type-colon': spaceBeforeTypeColon,
  98. 'spread-exact-type': spreadExactType,
  99. 'type-id-match': typeIdMatch,
  100. 'type-import-style': typeImportStyle,
  101. 'union-intersection-spacing': unionIntersectionSpacing,
  102. 'use-flow-type': useFlowType,
  103. 'use-read-only-spread': useReadOnlySpread,
  104. 'valid-syntax': validSyntax,
  105. };
  106. export default {
  107. configs: {
  108. recommended,
  109. },
  110. rules: _.mapValues(rules, (rule, key) => {
  111. if (['no-types-missing-file-annotation', 'require-valid-file-annotation'].includes(key)) {
  112. return rule;
  113. }
  114. return {
  115. ...rule,
  116. create: _.partial(checkFlowFileAnnotation, rule.create),
  117. };
  118. }),
  119. rulesConfig: {
  120. 'boolean-style': 0,
  121. 'define-flow-type': 0,
  122. 'delimiter-dangle': 0,
  123. 'generic-spacing': 0,
  124. 'interface-id-match': 0,
  125. 'newline-after-flow-annotation': 0,
  126. 'no-dupe-keys': 0,
  127. 'no-duplicate-type-union-intersection-members': 0,
  128. 'no-flow-fix-me-comments': 0,
  129. 'no-mixed': 0,
  130. 'no-mutable-array': 0,
  131. 'no-weak-types': 0,
  132. 'object-type-curly-spacing': 0,
  133. 'object-type-delimiter': 0,
  134. quotes: 0,
  135. 'require-compound-type-alias': 0,
  136. 'require-exact-type': 0,
  137. 'require-parameter-type': 0,
  138. 'require-readonly-react-props': 0,
  139. 'require-return-type': 0,
  140. 'require-variable-type': 0,
  141. semi: 0,
  142. 'sort-keys': 0,
  143. 'sort-type-union-intersection-members': 0,
  144. 'space-after-type-colon': 0,
  145. 'space-before-generic-bracket': 0,
  146. 'space-before-type-colon': 0,
  147. 'spread-exact-type': 0,
  148. 'type-id-match': 0,
  149. 'type-import-style': 0,
  150. 'union-intersection-spacing': 0,
  151. 'use-flow-type': 0,
  152. 'valid-syntax': 0,
  153. },
  154. };