@alexlit/lint-kit 126.6.0 → 126.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (597) hide show
  1. package/package.json +1 -1
  2. package/packages/config-eslint/node_modules/ajv/.tonic_example.js +20 -0
  3. package/packages/config-eslint/node_modules/ajv/LICENSE +22 -0
  4. package/packages/config-eslint/node_modules/ajv/README.md +1497 -0
  5. package/packages/config-eslint/node_modules/ajv/dist/ajv.bundle.js +7189 -0
  6. package/packages/config-eslint/node_modules/ajv/dist/ajv.min.js +3 -0
  7. package/packages/config-eslint/node_modules/ajv/dist/ajv.min.js.map +1 -0
  8. package/packages/config-eslint/node_modules/ajv/lib/ajv.d.ts +397 -0
  9. package/packages/config-eslint/node_modules/ajv/lib/ajv.js +506 -0
  10. package/packages/config-eslint/node_modules/ajv/lib/cache.js +26 -0
  11. package/packages/config-eslint/node_modules/ajv/lib/compile/async.js +90 -0
  12. package/packages/config-eslint/node_modules/ajv/lib/compile/equal.js +5 -0
  13. package/packages/config-eslint/node_modules/ajv/lib/compile/error_classes.js +34 -0
  14. package/packages/config-eslint/node_modules/ajv/lib/compile/formats.js +142 -0
  15. package/packages/config-eslint/node_modules/ajv/lib/compile/index.js +387 -0
  16. package/packages/config-eslint/node_modules/ajv/lib/compile/resolve.js +270 -0
  17. package/packages/config-eslint/node_modules/ajv/lib/compile/rules.js +66 -0
  18. package/packages/config-eslint/node_modules/ajv/lib/compile/schema_obj.js +9 -0
  19. package/packages/config-eslint/node_modules/ajv/lib/compile/ucs2length.js +20 -0
  20. package/packages/config-eslint/node_modules/ajv/lib/compile/util.js +239 -0
  21. package/packages/config-eslint/node_modules/ajv/lib/data.js +49 -0
  22. package/packages/config-eslint/node_modules/ajv/lib/definition_schema.js +37 -0
  23. package/packages/config-eslint/node_modules/ajv/lib/dot/_limit.jst +113 -0
  24. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitItems.jst +12 -0
  25. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitLength.jst +12 -0
  26. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitProperties.jst +12 -0
  27. package/packages/config-eslint/node_modules/ajv/lib/dot/allOf.jst +32 -0
  28. package/packages/config-eslint/node_modules/ajv/lib/dot/anyOf.jst +46 -0
  29. package/packages/config-eslint/node_modules/ajv/lib/dot/coerce.def +51 -0
  30. package/packages/config-eslint/node_modules/ajv/lib/dot/comment.jst +9 -0
  31. package/packages/config-eslint/node_modules/ajv/lib/dot/const.jst +11 -0
  32. package/packages/config-eslint/node_modules/ajv/lib/dot/contains.jst +55 -0
  33. package/packages/config-eslint/node_modules/ajv/lib/dot/custom.jst +191 -0
  34. package/packages/config-eslint/node_modules/ajv/lib/dot/defaults.def +47 -0
  35. package/packages/config-eslint/node_modules/ajv/lib/dot/definitions.def +203 -0
  36. package/packages/config-eslint/node_modules/ajv/lib/dot/dependencies.jst +79 -0
  37. package/packages/config-eslint/node_modules/ajv/lib/dot/enum.jst +30 -0
  38. package/packages/config-eslint/node_modules/ajv/lib/dot/errors.def +194 -0
  39. package/packages/config-eslint/node_modules/ajv/lib/dot/format.jst +106 -0
  40. package/packages/config-eslint/node_modules/ajv/lib/dot/if.jst +73 -0
  41. package/packages/config-eslint/node_modules/ajv/lib/dot/items.jst +98 -0
  42. package/packages/config-eslint/node_modules/ajv/lib/dot/missing.def +39 -0
  43. package/packages/config-eslint/node_modules/ajv/lib/dot/multipleOf.jst +22 -0
  44. package/packages/config-eslint/node_modules/ajv/lib/dot/not.jst +43 -0
  45. package/packages/config-eslint/node_modules/ajv/lib/dot/oneOf.jst +54 -0
  46. package/packages/config-eslint/node_modules/ajv/lib/dot/pattern.jst +14 -0
  47. package/packages/config-eslint/node_modules/ajv/lib/dot/properties.jst +245 -0
  48. package/packages/config-eslint/node_modules/ajv/lib/dot/propertyNames.jst +52 -0
  49. package/packages/config-eslint/node_modules/ajv/lib/dot/ref.jst +85 -0
  50. package/packages/config-eslint/node_modules/ajv/lib/dot/required.jst +108 -0
  51. package/packages/config-eslint/node_modules/ajv/lib/dot/uniqueItems.jst +62 -0
  52. package/packages/config-eslint/node_modules/ajv/lib/dot/validate.jst +276 -0
  53. package/packages/config-eslint/node_modules/ajv/lib/dotjs/README.md +3 -0
  54. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limit.js +163 -0
  55. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitItems.js +80 -0
  56. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitLength.js +85 -0
  57. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitProperties.js +80 -0
  58. package/packages/config-eslint/node_modules/ajv/lib/dotjs/allOf.js +42 -0
  59. package/packages/config-eslint/node_modules/ajv/lib/dotjs/anyOf.js +73 -0
  60. package/packages/config-eslint/node_modules/ajv/lib/dotjs/comment.js +14 -0
  61. package/packages/config-eslint/node_modules/ajv/lib/dotjs/const.js +56 -0
  62. package/packages/config-eslint/node_modules/ajv/lib/dotjs/contains.js +81 -0
  63. package/packages/config-eslint/node_modules/ajv/lib/dotjs/custom.js +228 -0
  64. package/packages/config-eslint/node_modules/ajv/lib/dotjs/dependencies.js +168 -0
  65. package/packages/config-eslint/node_modules/ajv/lib/dotjs/enum.js +66 -0
  66. package/packages/config-eslint/node_modules/ajv/lib/dotjs/format.js +150 -0
  67. package/packages/config-eslint/node_modules/ajv/lib/dotjs/if.js +103 -0
  68. package/packages/config-eslint/node_modules/ajv/lib/dotjs/index.js +33 -0
  69. package/packages/config-eslint/node_modules/ajv/lib/dotjs/items.js +140 -0
  70. package/packages/config-eslint/node_modules/ajv/lib/dotjs/multipleOf.js +80 -0
  71. package/packages/config-eslint/node_modules/ajv/lib/dotjs/not.js +84 -0
  72. package/packages/config-eslint/node_modules/ajv/lib/dotjs/oneOf.js +73 -0
  73. package/packages/config-eslint/node_modules/ajv/lib/dotjs/pattern.js +75 -0
  74. package/packages/config-eslint/node_modules/ajv/lib/dotjs/properties.js +335 -0
  75. package/packages/config-eslint/node_modules/ajv/lib/dotjs/propertyNames.js +81 -0
  76. package/packages/config-eslint/node_modules/ajv/lib/dotjs/ref.js +124 -0
  77. package/packages/config-eslint/node_modules/ajv/lib/dotjs/required.js +270 -0
  78. package/packages/config-eslint/node_modules/ajv/lib/dotjs/uniqueItems.js +86 -0
  79. package/packages/config-eslint/node_modules/ajv/lib/dotjs/validate.js +482 -0
  80. package/packages/config-eslint/node_modules/ajv/lib/keyword.js +146 -0
  81. package/packages/config-eslint/node_modules/ajv/lib/refs/data.json +17 -0
  82. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-04.json +149 -0
  83. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-06.json +154 -0
  84. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-07.json +168 -0
  85. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-secure.json +94 -0
  86. package/packages/config-eslint/node_modules/ajv/package.json +106 -0
  87. package/packages/config-eslint/node_modules/ajv/scripts/.eslintrc.yml +3 -0
  88. package/packages/config-eslint/node_modules/ajv/scripts/bundle.js +61 -0
  89. package/packages/config-eslint/node_modules/ajv/scripts/compile-dots.js +73 -0
  90. package/packages/config-eslint/node_modules/ajv/scripts/info +10 -0
  91. package/packages/config-eslint/node_modules/ajv/scripts/prepare-tests +12 -0
  92. package/packages/config-eslint/node_modules/ajv/scripts/publish-built-version +32 -0
  93. package/packages/config-eslint/node_modules/ajv/scripts/travis-gh-pages +23 -0
  94. package/packages/config-eslint/node_modules/ansi-styles/index.d.ts +345 -0
  95. package/packages/config-eslint/node_modules/ansi-styles/index.js +163 -0
  96. package/packages/config-eslint/node_modules/ansi-styles/license +9 -0
  97. package/packages/config-eslint/node_modules/ansi-styles/package.json +56 -0
  98. package/packages/config-eslint/node_modules/ansi-styles/readme.md +152 -0
  99. package/packages/config-eslint/node_modules/chalk/index.d.ts +415 -0
  100. package/packages/config-eslint/node_modules/chalk/license +9 -0
  101. package/packages/config-eslint/node_modules/chalk/package.json +68 -0
  102. package/packages/config-eslint/node_modules/chalk/readme.md +341 -0
  103. package/packages/config-eslint/node_modules/chalk/source/index.js +229 -0
  104. package/packages/config-eslint/node_modules/chalk/source/templates.js +134 -0
  105. package/packages/config-eslint/node_modules/chalk/source/util.js +39 -0
  106. package/packages/config-eslint/node_modules/color-convert/CHANGELOG.md +54 -0
  107. package/packages/config-eslint/node_modules/color-convert/LICENSE +21 -0
  108. package/packages/config-eslint/node_modules/color-convert/README.md +68 -0
  109. package/packages/config-eslint/node_modules/color-convert/conversions.js +839 -0
  110. package/packages/config-eslint/node_modules/color-convert/index.js +81 -0
  111. package/packages/config-eslint/node_modules/color-convert/package.json +48 -0
  112. package/packages/config-eslint/node_modules/color-convert/route.js +97 -0
  113. package/packages/config-eslint/node_modules/color-name/LICENSE +8 -0
  114. package/packages/config-eslint/node_modules/color-name/README.md +11 -0
  115. package/packages/config-eslint/node_modules/color-name/index.js +152 -0
  116. package/packages/config-eslint/node_modules/color-name/package.json +28 -0
  117. package/packages/config-eslint/node_modules/eslint/LICENSE +19 -0
  118. package/packages/config-eslint/node_modules/eslint/README.md +306 -0
  119. package/packages/config-eslint/node_modules/eslint/bin/eslint.js +174 -0
  120. package/packages/config-eslint/node_modules/eslint/conf/default-cli-options.js +32 -0
  121. package/packages/config-eslint/node_modules/eslint/conf/ecma-version.js +16 -0
  122. package/packages/config-eslint/node_modules/eslint/conf/globals.js +160 -0
  123. package/packages/config-eslint/node_modules/eslint/conf/replacements.json +22 -0
  124. package/packages/config-eslint/node_modules/eslint/conf/rule-type-list.json +30 -0
  125. package/packages/config-eslint/node_modules/eslint/lib/api.js +50 -0
  126. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/cli-engine.js +1089 -0
  127. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/file-enumerator.js +547 -0
  128. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/formatters-meta.json +18 -0
  129. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/html.js +351 -0
  130. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/json-with-metadata.js +16 -0
  131. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/json.js +13 -0
  132. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/stylish.js +101 -0
  133. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/hash.js +35 -0
  134. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/index.js +7 -0
  135. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/lint-result-cache.js +203 -0
  136. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/load-rules.js +46 -0
  137. package/packages/config-eslint/node_modules/eslint/lib/cli.js +552 -0
  138. package/packages/config-eslint/node_modules/eslint/lib/config/default-config.js +75 -0
  139. package/packages/config-eslint/node_modules/eslint/lib/config/flat-config-array.js +423 -0
  140. package/packages/config-eslint/node_modules/eslint/lib/config/flat-config-helpers.js +132 -0
  141. package/packages/config-eslint/node_modules/eslint/lib/config/flat-config-schema.js +576 -0
  142. package/packages/config-eslint/node_modules/eslint/lib/config/rule-validator.js +194 -0
  143. package/packages/config-eslint/node_modules/eslint/lib/eslint/eslint-helpers.js +975 -0
  144. package/packages/config-eslint/node_modules/eslint/lib/eslint/eslint.js +1307 -0
  145. package/packages/config-eslint/node_modules/eslint/lib/eslint/index.js +9 -0
  146. package/packages/config-eslint/node_modules/eslint/lib/eslint/legacy-eslint.js +742 -0
  147. package/packages/config-eslint/node_modules/eslint/lib/languages/js/index.js +252 -0
  148. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/index.js +7 -0
  149. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/source-code.js +1318 -0
  150. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/backward-token-comment-cursor.js +57 -0
  151. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/backward-token-cursor.js +58 -0
  152. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/cursor.js +76 -0
  153. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/cursors.js +92 -0
  154. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/decorative-cursor.js +39 -0
  155. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/filter-cursor.js +43 -0
  156. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/forward-token-comment-cursor.js +57 -0
  157. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/forward-token-cursor.js +63 -0
  158. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/index.js +627 -0
  159. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/limit-cursor.js +40 -0
  160. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/padded-token-cursor.js +38 -0
  161. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/skip-cursor.js +42 -0
  162. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/utils.js +107 -0
  163. package/packages/config-eslint/node_modules/eslint/lib/languages/js/validate-language-options.js +181 -0
  164. package/packages/config-eslint/node_modules/eslint/lib/linter/apply-disable-directives.js +513 -0
  165. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js +851 -0
  166. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/code-path-segment.js +263 -0
  167. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/code-path-state.js +2348 -0
  168. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/code-path.js +344 -0
  169. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/debug-helpers.js +203 -0
  170. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/fork-context.js +349 -0
  171. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/id-generator.js +45 -0
  172. package/packages/config-eslint/node_modules/eslint/lib/linter/config-comment-parser.js +169 -0
  173. package/packages/config-eslint/node_modules/eslint/lib/linter/index.js +11 -0
  174. package/packages/config-eslint/node_modules/eslint/lib/linter/interpolate.js +50 -0
  175. package/packages/config-eslint/node_modules/eslint/lib/linter/linter.js +2410 -0
  176. package/packages/config-eslint/node_modules/eslint/lib/linter/node-event-generator.js +352 -0
  177. package/packages/config-eslint/node_modules/eslint/lib/linter/report-translator.js +376 -0
  178. package/packages/config-eslint/node_modules/eslint/lib/linter/rule-fixer.js +163 -0
  179. package/packages/config-eslint/node_modules/eslint/lib/linter/rules.js +71 -0
  180. package/packages/config-eslint/node_modules/eslint/lib/linter/safe-emitter.js +52 -0
  181. package/packages/config-eslint/node_modules/eslint/lib/linter/source-code-fixer.js +152 -0
  182. package/packages/config-eslint/node_modules/eslint/lib/linter/timing.js +169 -0
  183. package/packages/config-eslint/node_modules/eslint/lib/linter/vfile.js +111 -0
  184. package/packages/config-eslint/node_modules/eslint/lib/options.js +442 -0
  185. package/packages/config-eslint/node_modules/eslint/lib/rule-tester/index.js +7 -0
  186. package/packages/config-eslint/node_modules/eslint/lib/rule-tester/rule-tester.js +1286 -0
  187. package/packages/config-eslint/node_modules/eslint/lib/rules/accessor-pairs.js +346 -0
  188. package/packages/config-eslint/node_modules/eslint/lib/rules/array-bracket-newline.js +261 -0
  189. package/packages/config-eslint/node_modules/eslint/lib/rules/array-bracket-spacing.js +244 -0
  190. package/packages/config-eslint/node_modules/eslint/lib/rules/array-callback-return.js +446 -0
  191. package/packages/config-eslint/node_modules/eslint/lib/rules/array-element-newline.js +311 -0
  192. package/packages/config-eslint/node_modules/eslint/lib/rules/arrow-body-style.js +296 -0
  193. package/packages/config-eslint/node_modules/eslint/lib/rules/arrow-parens.js +186 -0
  194. package/packages/config-eslint/node_modules/eslint/lib/rules/arrow-spacing.js +164 -0
  195. package/packages/config-eslint/node_modules/eslint/lib/rules/block-scoped-var.js +135 -0
  196. package/packages/config-eslint/node_modules/eslint/lib/rules/block-spacing.js +174 -0
  197. package/packages/config-eslint/node_modules/eslint/lib/rules/brace-style.js +197 -0
  198. package/packages/config-eslint/node_modules/eslint/lib/rules/callback-return.js +187 -0
  199. package/packages/config-eslint/node_modules/eslint/lib/rules/camelcase.js +397 -0
  200. package/packages/config-eslint/node_modules/eslint/lib/rules/capitalized-comments.js +303 -0
  201. package/packages/config-eslint/node_modules/eslint/lib/rules/class-methods-use-this.js +187 -0
  202. package/packages/config-eslint/node_modules/eslint/lib/rules/comma-dangle.js +373 -0
  203. package/packages/config-eslint/node_modules/eslint/lib/rules/comma-spacing.js +192 -0
  204. package/packages/config-eslint/node_modules/eslint/lib/rules/comma-style.js +314 -0
  205. package/packages/config-eslint/node_modules/eslint/lib/rules/complexity.js +178 -0
  206. package/packages/config-eslint/node_modules/eslint/lib/rules/computed-property-spacing.js +208 -0
  207. package/packages/config-eslint/node_modules/eslint/lib/rules/consistent-return.js +210 -0
  208. package/packages/config-eslint/node_modules/eslint/lib/rules/consistent-this.js +153 -0
  209. package/packages/config-eslint/node_modules/eslint/lib/rules/constructor-super.js +445 -0
  210. package/packages/config-eslint/node_modules/eslint/lib/rules/curly.js +486 -0
  211. package/packages/config-eslint/node_modules/eslint/lib/rules/default-case-last.js +44 -0
  212. package/packages/config-eslint/node_modules/eslint/lib/rules/default-case.js +97 -0
  213. package/packages/config-eslint/node_modules/eslint/lib/rules/default-param-last.js +62 -0
  214. package/packages/config-eslint/node_modules/eslint/lib/rules/dot-location.js +108 -0
  215. package/packages/config-eslint/node_modules/eslint/lib/rules/dot-notation.js +176 -0
  216. package/packages/config-eslint/node_modules/eslint/lib/rules/eol-last.js +115 -0
  217. package/packages/config-eslint/node_modules/eslint/lib/rules/eqeqeq.js +174 -0
  218. package/packages/config-eslint/node_modules/eslint/lib/rules/for-direction.js +140 -0
  219. package/packages/config-eslint/node_modules/eslint/lib/rules/func-call-spacing.js +233 -0
  220. package/packages/config-eslint/node_modules/eslint/lib/rules/func-name-matching.js +253 -0
  221. package/packages/config-eslint/node_modules/eslint/lib/rules/func-names.js +191 -0
  222. package/packages/config-eslint/node_modules/eslint/lib/rules/func-style.js +136 -0
  223. package/packages/config-eslint/node_modules/eslint/lib/rules/function-call-argument-newline.js +125 -0
  224. package/packages/config-eslint/node_modules/eslint/lib/rules/function-paren-newline.js +292 -0
  225. package/packages/config-eslint/node_modules/eslint/lib/rules/generator-star-spacing.js +209 -0
  226. package/packages/config-eslint/node_modules/eslint/lib/rules/getter-return.js +204 -0
  227. package/packages/config-eslint/node_modules/eslint/lib/rules/global-require.js +90 -0
  228. package/packages/config-eslint/node_modules/eslint/lib/rules/grouped-accessor-pairs.js +215 -0
  229. package/packages/config-eslint/node_modules/eslint/lib/rules/guard-for-in.js +76 -0
  230. package/packages/config-eslint/node_modules/eslint/lib/rules/handle-callback-err.js +101 -0
  231. package/packages/config-eslint/node_modules/eslint/lib/rules/id-blacklist.js +246 -0
  232. package/packages/config-eslint/node_modules/eslint/lib/rules/id-denylist.js +228 -0
  233. package/packages/config-eslint/node_modules/eslint/lib/rules/id-length.js +177 -0
  234. package/packages/config-eslint/node_modules/eslint/lib/rules/id-match.js +299 -0
  235. package/packages/config-eslint/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js +84 -0
  236. package/packages/config-eslint/node_modules/eslint/lib/rules/indent-legacy.js +1126 -0
  237. package/packages/config-eslint/node_modules/eslint/lib/rules/indent.js +1803 -0
  238. package/packages/config-eslint/node_modules/eslint/lib/rules/index.js +305 -0
  239. package/packages/config-eslint/node_modules/eslint/lib/rules/init-declarations.js +139 -0
  240. package/packages/config-eslint/node_modules/eslint/lib/rules/jsx-quotes.js +98 -0
  241. package/packages/config-eslint/node_modules/eslint/lib/rules/key-spacing.js +687 -0
  242. package/packages/config-eslint/node_modules/eslint/lib/rules/keyword-spacing.js +640 -0
  243. package/packages/config-eslint/node_modules/eslint/lib/rules/line-comment-position.js +125 -0
  244. package/packages/config-eslint/node_modules/eslint/lib/rules/linebreak-style.js +108 -0
  245. package/packages/config-eslint/node_modules/eslint/lib/rules/lines-around-comment.js +471 -0
  246. package/packages/config-eslint/node_modules/eslint/lib/rules/lines-around-directive.js +201 -0
  247. package/packages/config-eslint/node_modules/eslint/lib/rules/lines-between-class-members.js +269 -0
  248. package/packages/config-eslint/node_modules/eslint/lib/rules/logical-assignment-operators.js +504 -0
  249. package/packages/config-eslint/node_modules/eslint/lib/rules/max-classes-per-file.js +89 -0
  250. package/packages/config-eslint/node_modules/eslint/lib/rules/max-depth.js +156 -0
  251. package/packages/config-eslint/node_modules/eslint/lib/rules/max-len.js +440 -0
  252. package/packages/config-eslint/node_modules/eslint/lib/rules/max-lines-per-function.js +213 -0
  253. package/packages/config-eslint/node_modules/eslint/lib/rules/max-lines.js +193 -0
  254. package/packages/config-eslint/node_modules/eslint/lib/rules/max-nested-callbacks.js +117 -0
  255. package/packages/config-eslint/node_modules/eslint/lib/rules/max-params.js +102 -0
  256. package/packages/config-eslint/node_modules/eslint/lib/rules/max-statements-per-line.js +199 -0
  257. package/packages/config-eslint/node_modules/eslint/lib/rules/max-statements.js +184 -0
  258. package/packages/config-eslint/node_modules/eslint/lib/rules/multiline-comment-style.js +476 -0
  259. package/packages/config-eslint/node_modules/eslint/lib/rules/multiline-ternary.js +174 -0
  260. package/packages/config-eslint/node_modules/eslint/lib/rules/new-cap.js +276 -0
  261. package/packages/config-eslint/node_modules/eslint/lib/rules/new-parens.js +93 -0
  262. package/packages/config-eslint/node_modules/eslint/lib/rules/newline-after-var.js +253 -0
  263. package/packages/config-eslint/node_modules/eslint/lib/rules/newline-before-return.js +217 -0
  264. package/packages/config-eslint/node_modules/eslint/lib/rules/newline-per-chained-call.js +126 -0
  265. package/packages/config-eslint/node_modules/eslint/lib/rules/no-alert.js +138 -0
  266. package/packages/config-eslint/node_modules/eslint/lib/rules/no-array-constructor.js +133 -0
  267. package/packages/config-eslint/node_modules/eslint/lib/rules/no-async-promise-executor.js +39 -0
  268. package/packages/config-eslint/node_modules/eslint/lib/rules/no-await-in-loop.js +106 -0
  269. package/packages/config-eslint/node_modules/eslint/lib/rules/no-bitwise.js +119 -0
  270. package/packages/config-eslint/node_modules/eslint/lib/rules/no-buffer-constructor.js +50 -0
  271. package/packages/config-eslint/node_modules/eslint/lib/rules/no-caller.js +46 -0
  272. package/packages/config-eslint/node_modules/eslint/lib/rules/no-case-declarations.js +76 -0
  273. package/packages/config-eslint/node_modules/eslint/lib/rules/no-catch-shadow.js +82 -0
  274. package/packages/config-eslint/node_modules/eslint/lib/rules/no-class-assign.js +63 -0
  275. package/packages/config-eslint/node_modules/eslint/lib/rules/no-compare-neg-zero.js +60 -0
  276. package/packages/config-eslint/node_modules/eslint/lib/rules/no-cond-assign.js +159 -0
  277. package/packages/config-eslint/node_modules/eslint/lib/rules/no-confusing-arrow.js +92 -0
  278. package/packages/config-eslint/node_modules/eslint/lib/rules/no-console.js +207 -0
  279. package/packages/config-eslint/node_modules/eslint/lib/rules/no-const-assign.js +56 -0
  280. package/packages/config-eslint/node_modules/eslint/lib/rules/no-constant-binary-expression.js +508 -0
  281. package/packages/config-eslint/node_modules/eslint/lib/rules/no-constant-condition.js +161 -0
  282. package/packages/config-eslint/node_modules/eslint/lib/rules/no-constructor-return.js +62 -0
  283. package/packages/config-eslint/node_modules/eslint/lib/rules/no-continue.js +39 -0
  284. package/packages/config-eslint/node_modules/eslint/lib/rules/no-control-regex.js +138 -0
  285. package/packages/config-eslint/node_modules/eslint/lib/rules/no-debugger.js +43 -0
  286. package/packages/config-eslint/node_modules/eslint/lib/rules/no-delete-var.js +42 -0
  287. package/packages/config-eslint/node_modules/eslint/lib/rules/no-div-regex.js +53 -0
  288. package/packages/config-eslint/node_modules/eslint/lib/rules/no-dupe-args.js +82 -0
  289. package/packages/config-eslint/node_modules/eslint/lib/rules/no-dupe-class-members.js +104 -0
  290. package/packages/config-eslint/node_modules/eslint/lib/rules/no-dupe-else-if.js +122 -0
  291. package/packages/config-eslint/node_modules/eslint/lib/rules/no-dupe-keys.js +142 -0
  292. package/packages/config-eslint/node_modules/eslint/lib/rules/no-duplicate-case.js +71 -0
  293. package/packages/config-eslint/node_modules/eslint/lib/rules/no-duplicate-imports.js +290 -0
  294. package/packages/config-eslint/node_modules/eslint/lib/rules/no-else-return.js +405 -0
  295. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty-character-class.js +76 -0
  296. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty-function.js +167 -0
  297. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty-pattern.js +78 -0
  298. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty-static-block.js +47 -0
  299. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty.js +103 -0
  300. package/packages/config-eslint/node_modules/eslint/lib/rules/no-eq-null.js +46 -0
  301. package/packages/config-eslint/node_modules/eslint/lib/rules/no-eval.js +286 -0
  302. package/packages/config-eslint/node_modules/eslint/lib/rules/no-ex-assign.js +54 -0
  303. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extend-native.js +178 -0
  304. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-bind.js +213 -0
  305. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-boolean-cast.js +369 -0
  306. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-label.js +149 -0
  307. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-parens.js +1322 -0
  308. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-semi.js +147 -0
  309. package/packages/config-eslint/node_modules/eslint/lib/rules/no-fallthrough.js +221 -0
  310. package/packages/config-eslint/node_modules/eslint/lib/rules/no-floating-decimal.js +73 -0
  311. package/packages/config-eslint/node_modules/eslint/lib/rules/no-func-assign.js +78 -0
  312. package/packages/config-eslint/node_modules/eslint/lib/rules/no-global-assign.js +95 -0
  313. package/packages/config-eslint/node_modules/eslint/lib/rules/no-implicit-coercion.js +422 -0
  314. package/packages/config-eslint/node_modules/eslint/lib/rules/no-implicit-globals.js +146 -0
  315. package/packages/config-eslint/node_modules/eslint/lib/rules/no-implied-eval.js +132 -0
  316. package/packages/config-eslint/node_modules/eslint/lib/rules/no-import-assign.js +241 -0
  317. package/packages/config-eslint/node_modules/eslint/lib/rules/no-inline-comments.js +110 -0
  318. package/packages/config-eslint/node_modules/eslint/lib/rules/no-inner-declarations.js +131 -0
  319. package/packages/config-eslint/node_modules/eslint/lib/rules/no-invalid-regexp.js +194 -0
  320. package/packages/config-eslint/node_modules/eslint/lib/rules/no-invalid-this.js +150 -0
  321. package/packages/config-eslint/node_modules/eslint/lib/rules/no-irregular-whitespace.js +276 -0
  322. package/packages/config-eslint/node_modules/eslint/lib/rules/no-iterator.js +52 -0
  323. package/packages/config-eslint/node_modules/eslint/lib/rules/no-label-var.js +80 -0
  324. package/packages/config-eslint/node_modules/eslint/lib/rules/no-labels.js +149 -0
  325. package/packages/config-eslint/node_modules/eslint/lib/rules/no-lone-blocks.js +136 -0
  326. package/packages/config-eslint/node_modules/eslint/lib/rules/no-lonely-if.js +88 -0
  327. package/packages/config-eslint/node_modules/eslint/lib/rules/no-loop-func.js +238 -0
  328. package/packages/config-eslint/node_modules/eslint/lib/rules/no-loss-of-precision.js +214 -0
  329. package/packages/config-eslint/node_modules/eslint/lib/rules/no-magic-numbers.js +243 -0
  330. package/packages/config-eslint/node_modules/eslint/lib/rules/no-misleading-character-class.js +537 -0
  331. package/packages/config-eslint/node_modules/eslint/lib/rules/no-mixed-operators.js +229 -0
  332. package/packages/config-eslint/node_modules/eslint/lib/rules/no-mixed-requires.js +238 -0
  333. package/packages/config-eslint/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js +116 -0
  334. package/packages/config-eslint/node_modules/eslint/lib/rules/no-multi-assign.js +67 -0
  335. package/packages/config-eslint/node_modules/eslint/lib/rules/no-multi-spaces.js +141 -0
  336. package/packages/config-eslint/node_modules/eslint/lib/rules/no-multi-str.js +65 -0
  337. package/packages/config-eslint/node_modules/eslint/lib/rules/no-multiple-empty-lines.js +154 -0
  338. package/packages/config-eslint/node_modules/eslint/lib/rules/no-native-reassign.js +98 -0
  339. package/packages/config-eslint/node_modules/eslint/lib/rules/no-negated-condition.js +95 -0
  340. package/packages/config-eslint/node_modules/eslint/lib/rules/no-negated-in-lhs.js +46 -0
  341. package/packages/config-eslint/node_modules/eslint/lib/rules/no-nested-ternary.js +44 -0
  342. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-func.js +87 -0
  343. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-native-nonconstructor.js +66 -0
  344. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-object.js +67 -0
  345. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-require.js +50 -0
  346. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-symbol.js +63 -0
  347. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-wrappers.js +60 -0
  348. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new.js +43 -0
  349. package/packages/config-eslint/node_modules/eslint/lib/rules/no-nonoctal-decimal-escape.js +148 -0
  350. package/packages/config-eslint/node_modules/eslint/lib/rules/no-obj-calls.js +86 -0
  351. package/packages/config-eslint/node_modules/eslint/lib/rules/no-object-constructor.js +117 -0
  352. package/packages/config-eslint/node_modules/eslint/lib/rules/no-octal-escape.js +56 -0
  353. package/packages/config-eslint/node_modules/eslint/lib/rules/no-octal.js +45 -0
  354. package/packages/config-eslint/node_modules/eslint/lib/rules/no-param-reassign.js +230 -0
  355. package/packages/config-eslint/node_modules/eslint/lib/rules/no-path-concat.js +64 -0
  356. package/packages/config-eslint/node_modules/eslint/lib/rules/no-plusplus.js +105 -0
  357. package/packages/config-eslint/node_modules/eslint/lib/rules/no-process-env.js +51 -0
  358. package/packages/config-eslint/node_modules/eslint/lib/rules/no-process-exit.js +47 -0
  359. package/packages/config-eslint/node_modules/eslint/lib/rules/no-promise-executor-return.js +263 -0
  360. package/packages/config-eslint/node_modules/eslint/lib/rules/no-proto.js +48 -0
  361. package/packages/config-eslint/node_modules/eslint/lib/rules/no-prototype-builtins.js +159 -0
  362. package/packages/config-eslint/node_modules/eslint/lib/rules/no-redeclare.js +174 -0
  363. package/packages/config-eslint/node_modules/eslint/lib/rules/no-regex-spaces.js +197 -0
  364. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-exports.js +204 -0
  365. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-globals.js +124 -0
  366. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-imports.js +563 -0
  367. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-modules.js +213 -0
  368. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-properties.js +168 -0
  369. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-syntax.js +70 -0
  370. package/packages/config-eslint/node_modules/eslint/lib/rules/no-return-assign.js +80 -0
  371. package/packages/config-eslint/node_modules/eslint/lib/rules/no-return-await.js +135 -0
  372. package/packages/config-eslint/node_modules/eslint/lib/rules/no-script-url.js +61 -0
  373. package/packages/config-eslint/node_modules/eslint/lib/rules/no-self-assign.js +183 -0
  374. package/packages/config-eslint/node_modules/eslint/lib/rules/no-self-compare.js +60 -0
  375. package/packages/config-eslint/node_modules/eslint/lib/rules/no-sequences.js +139 -0
  376. package/packages/config-eslint/node_modules/eslint/lib/rules/no-setter-return.js +226 -0
  377. package/packages/config-eslint/node_modules/eslint/lib/rules/no-shadow-restricted-names.js +65 -0
  378. package/packages/config-eslint/node_modules/eslint/lib/rules/no-shadow.js +336 -0
  379. package/packages/config-eslint/node_modules/eslint/lib/rules/no-spaced-func.js +83 -0
  380. package/packages/config-eslint/node_modules/eslint/lib/rules/no-sparse-arrays.js +73 -0
  381. package/packages/config-eslint/node_modules/eslint/lib/rules/no-sync.js +64 -0
  382. package/packages/config-eslint/node_modules/eslint/lib/rules/no-tabs.js +81 -0
  383. package/packages/config-eslint/node_modules/eslint/lib/rules/no-template-curly-in-string.js +44 -0
  384. package/packages/config-eslint/node_modules/eslint/lib/rules/no-ternary.js +41 -0
  385. package/packages/config-eslint/node_modules/eslint/lib/rules/no-this-before-super.js +363 -0
  386. package/packages/config-eslint/node_modules/eslint/lib/rules/no-throw-literal.js +51 -0
  387. package/packages/config-eslint/node_modules/eslint/lib/rules/no-trailing-spaces.js +192 -0
  388. package/packages/config-eslint/node_modules/eslint/lib/rules/no-undef-init.js +75 -0
  389. package/packages/config-eslint/node_modules/eslint/lib/rules/no-undef.js +79 -0
  390. package/packages/config-eslint/node_modules/eslint/lib/rules/no-undefined.js +86 -0
  391. package/packages/config-eslint/node_modules/eslint/lib/rules/no-underscore-dangle.js +335 -0
  392. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unexpected-multiline.js +120 -0
  393. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js +360 -0
  394. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unneeded-ternary.js +166 -0
  395. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unreachable-loop.js +185 -0
  396. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unreachable.js +293 -0
  397. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unsafe-finally.js +111 -0
  398. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unsafe-negation.js +128 -0
  399. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unsafe-optional-chaining.js +205 -0
  400. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unused-expressions.js +186 -0
  401. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unused-labels.js +143 -0
  402. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unused-private-class-members.js +195 -0
  403. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unused-vars.js +881 -0
  404. package/packages/config-eslint/node_modules/eslint/lib/rules/no-use-before-define.js +348 -0
  405. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-assignment.js +566 -0
  406. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-backreference.js +244 -0
  407. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-call.js +90 -0
  408. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-catch.js +57 -0
  409. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-computed-key.js +168 -0
  410. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-concat.js +115 -0
  411. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-constructor.js +189 -0
  412. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-escape.js +333 -0
  413. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-rename.js +172 -0
  414. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-return.js +369 -0
  415. package/packages/config-eslint/node_modules/eslint/lib/rules/no-var.js +334 -0
  416. package/packages/config-eslint/node_modules/eslint/lib/rules/no-void.js +64 -0
  417. package/packages/config-eslint/node_modules/eslint/lib/rules/no-warning-comments.js +201 -0
  418. package/packages/config-eslint/node_modules/eslint/lib/rules/no-whitespace-before-property.js +116 -0
  419. package/packages/config-eslint/node_modules/eslint/lib/rules/no-with.js +39 -0
  420. package/packages/config-eslint/node_modules/eslint/lib/rules/nonblock-statement-body-position.js +127 -0
  421. package/packages/config-eslint/node_modules/eslint/lib/rules/object-curly-newline.js +324 -0
  422. package/packages/config-eslint/node_modules/eslint/lib/rules/object-curly-spacing.js +311 -0
  423. package/packages/config-eslint/node_modules/eslint/lib/rules/object-property-newline.js +102 -0
  424. package/packages/config-eslint/node_modules/eslint/lib/rules/object-shorthand.js +521 -0
  425. package/packages/config-eslint/node_modules/eslint/lib/rules/one-var-declaration-per-line.js +95 -0
  426. package/packages/config-eslint/node_modules/eslint/lib/rules/one-var.js +567 -0
  427. package/packages/config-eslint/node_modules/eslint/lib/rules/operator-assignment.js +209 -0
  428. package/packages/config-eslint/node_modules/eslint/lib/rules/operator-linebreak.js +253 -0
  429. package/packages/config-eslint/node_modules/eslint/lib/rules/padded-blocks.js +310 -0
  430. package/packages/config-eslint/node_modules/eslint/lib/rules/padding-line-between-statements.js +590 -0
  431. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-arrow-callback.js +381 -0
  432. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-const.js +501 -0
  433. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-destructuring.js +301 -0
  434. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js +191 -0
  435. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-named-capture-group.js +178 -0
  436. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-numeric-literals.js +148 -0
  437. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-object-has-own.js +114 -0
  438. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-object-spread.js +298 -0
  439. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js +132 -0
  440. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-reflect.js +127 -0
  441. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-regex-literals.js +507 -0
  442. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-rest-params.js +118 -0
  443. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-spread.js +87 -0
  444. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-template.js +275 -0
  445. package/packages/config-eslint/node_modules/eslint/lib/rules/quote-props.js +310 -0
  446. package/packages/config-eslint/node_modules/eslint/lib/rules/quotes.js +350 -0
  447. package/packages/config-eslint/node_modules/eslint/lib/rules/radix.js +198 -0
  448. package/packages/config-eslint/node_modules/eslint/lib/rules/require-atomic-updates.js +331 -0
  449. package/packages/config-eslint/node_modules/eslint/lib/rules/require-await.js +147 -0
  450. package/packages/config-eslint/node_modules/eslint/lib/rules/require-unicode-regexp.js +129 -0
  451. package/packages/config-eslint/node_modules/eslint/lib/rules/require-yield.js +77 -0
  452. package/packages/config-eslint/node_modules/eslint/lib/rules/rest-spread-spacing.js +123 -0
  453. package/packages/config-eslint/node_modules/eslint/lib/rules/semi-spacing.js +248 -0
  454. package/packages/config-eslint/node_modules/eslint/lib/rules/semi-style.js +158 -0
  455. package/packages/config-eslint/node_modules/eslint/lib/rules/semi.js +438 -0
  456. package/packages/config-eslint/node_modules/eslint/lib/rules/sort-imports.js +241 -0
  457. package/packages/config-eslint/node_modules/eslint/lib/rules/sort-keys.js +230 -0
  458. package/packages/config-eslint/node_modules/eslint/lib/rules/sort-vars.js +104 -0
  459. package/packages/config-eslint/node_modules/eslint/lib/rules/space-before-blocks.js +204 -0
  460. package/packages/config-eslint/node_modules/eslint/lib/rules/space-before-function-paren.js +167 -0
  461. package/packages/config-eslint/node_modules/eslint/lib/rules/space-in-parens.js +285 -0
  462. package/packages/config-eslint/node_modules/eslint/lib/rules/space-infix-ops.js +198 -0
  463. package/packages/config-eslint/node_modules/eslint/lib/rules/space-unary-ops.js +324 -0
  464. package/packages/config-eslint/node_modules/eslint/lib/rules/spaced-comment.js +385 -0
  465. package/packages/config-eslint/node_modules/eslint/lib/rules/strict.js +277 -0
  466. package/packages/config-eslint/node_modules/eslint/lib/rules/switch-colon-spacing.js +132 -0
  467. package/packages/config-eslint/node_modules/eslint/lib/rules/symbol-description.js +73 -0
  468. package/packages/config-eslint/node_modules/eslint/lib/rules/template-curly-spacing.js +144 -0
  469. package/packages/config-eslint/node_modules/eslint/lib/rules/template-tag-spacing.js +93 -0
  470. package/packages/config-eslint/node_modules/eslint/lib/rules/unicode-bom.js +73 -0
  471. package/packages/config-eslint/node_modules/eslint/lib/rules/use-isnan.js +235 -0
  472. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/ast-utils.js +2292 -0
  473. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/char-source.js +240 -0
  474. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/fix-tracker.js +114 -0
  475. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/keywords.js +67 -0
  476. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js +115 -0
  477. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/regular-expressions.js +42 -0
  478. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/index.js +16 -0
  479. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/is-combining-character.js +13 -0
  480. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/is-emoji-modifier.js +13 -0
  481. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/is-regional-indicator-symbol.js +13 -0
  482. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/is-surrogate-pair.js +14 -0
  483. package/packages/config-eslint/node_modules/eslint/lib/rules/valid-typeof.js +127 -0
  484. package/packages/config-eslint/node_modules/eslint/lib/rules/vars-on-top.js +157 -0
  485. package/packages/config-eslint/node_modules/eslint/lib/rules/wrap-iife.js +207 -0
  486. package/packages/config-eslint/node_modules/eslint/lib/rules/wrap-regex.js +61 -0
  487. package/packages/config-eslint/node_modules/eslint/lib/rules/yield-star-spacing.js +130 -0
  488. package/packages/config-eslint/node_modules/eslint/lib/rules/yoda.js +353 -0
  489. package/packages/config-eslint/node_modules/eslint/lib/shared/ajv.js +34 -0
  490. package/packages/config-eslint/node_modules/eslint/lib/shared/ast-utils.js +29 -0
  491. package/packages/config-eslint/node_modules/eslint/lib/shared/directives.js +15 -0
  492. package/packages/config-eslint/node_modules/eslint/lib/shared/flags.js +27 -0
  493. package/packages/config-eslint/node_modules/eslint/lib/shared/logging.js +39 -0
  494. package/packages/config-eslint/node_modules/eslint/lib/shared/runtime-info.js +168 -0
  495. package/packages/config-eslint/node_modules/eslint/lib/shared/serialization.js +55 -0
  496. package/packages/config-eslint/node_modules/eslint/lib/shared/severity.js +49 -0
  497. package/packages/config-eslint/node_modules/eslint/lib/shared/stats.js +30 -0
  498. package/packages/config-eslint/node_modules/eslint/lib/shared/string-utils.js +58 -0
  499. package/packages/config-eslint/node_modules/eslint/lib/shared/traverser.js +195 -0
  500. package/packages/config-eslint/node_modules/eslint/lib/shared/types.js +250 -0
  501. package/packages/config-eslint/node_modules/eslint/lib/unsupported-api.js +28 -0
  502. package/packages/config-eslint/node_modules/eslint/messages/all-files-ignored.js +16 -0
  503. package/packages/config-eslint/node_modules/eslint/messages/all-matched-files-ignored.js +21 -0
  504. package/packages/config-eslint/node_modules/eslint/messages/config-file-missing.js +16 -0
  505. package/packages/config-eslint/node_modules/eslint/messages/eslintrc-incompat.js +119 -0
  506. package/packages/config-eslint/node_modules/eslint/messages/eslintrc-plugins.js +24 -0
  507. package/packages/config-eslint/node_modules/eslint/messages/extend-config-missing.js +13 -0
  508. package/packages/config-eslint/node_modules/eslint/messages/failed-to-read-json.js +11 -0
  509. package/packages/config-eslint/node_modules/eslint/messages/file-not-found.js +10 -0
  510. package/packages/config-eslint/node_modules/eslint/messages/invalid-rule-options.js +17 -0
  511. package/packages/config-eslint/node_modules/eslint/messages/invalid-rule-severity.js +13 -0
  512. package/packages/config-eslint/node_modules/eslint/messages/no-config-found.js +15 -0
  513. package/packages/config-eslint/node_modules/eslint/messages/plugin-conflict.js +22 -0
  514. package/packages/config-eslint/node_modules/eslint/messages/plugin-invalid.js +16 -0
  515. package/packages/config-eslint/node_modules/eslint/messages/plugin-missing.js +19 -0
  516. package/packages/config-eslint/node_modules/eslint/messages/print-config-with-directory-path.js +8 -0
  517. package/packages/config-eslint/node_modules/eslint/messages/shared.js +18 -0
  518. package/packages/config-eslint/node_modules/eslint/messages/whitespace-found.js +11 -0
  519. package/packages/config-eslint/node_modules/eslint/package.json +188 -0
  520. package/packages/config-eslint/node_modules/eslint-scope/LICENSE +22 -0
  521. package/packages/config-eslint/node_modules/eslint-scope/README.md +91 -0
  522. package/packages/config-eslint/node_modules/eslint-scope/dist/eslint-scope.cjs +2266 -0
  523. package/packages/config-eslint/node_modules/eslint-scope/lib/definition.js +85 -0
  524. package/packages/config-eslint/node_modules/eslint-scope/lib/index.js +169 -0
  525. package/packages/config-eslint/node_modules/eslint-scope/lib/pattern-visitor.js +154 -0
  526. package/packages/config-eslint/node_modules/eslint-scope/lib/reference.js +166 -0
  527. package/packages/config-eslint/node_modules/eslint-scope/lib/referencer.js +656 -0
  528. package/packages/config-eslint/node_modules/eslint-scope/lib/scope-manager.js +249 -0
  529. package/packages/config-eslint/node_modules/eslint-scope/lib/scope.js +793 -0
  530. package/packages/config-eslint/node_modules/eslint-scope/lib/variable.js +87 -0
  531. package/packages/config-eslint/node_modules/eslint-scope/lib/version.js +3 -0
  532. package/packages/config-eslint/node_modules/eslint-scope/package.json +65 -0
  533. package/packages/config-eslint/node_modules/eslint-visitor-keys/LICENSE +201 -0
  534. package/packages/config-eslint/node_modules/eslint-visitor-keys/README.md +105 -0
  535. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs +384 -0
  536. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.d.cts +27 -0
  537. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/index.d.ts +16 -0
  538. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/visitor-keys.d.ts +12 -0
  539. package/packages/config-eslint/node_modules/eslint-visitor-keys/lib/index.js +65 -0
  540. package/packages/config-eslint/node_modules/eslint-visitor-keys/lib/visitor-keys.js +315 -0
  541. package/packages/config-eslint/node_modules/eslint-visitor-keys/package.json +74 -0
  542. package/packages/config-eslint/node_modules/file-entry-cache/LICENSE +22 -0
  543. package/packages/config-eslint/node_modules/file-entry-cache/README.md +115 -0
  544. package/packages/config-eslint/node_modules/file-entry-cache/cache.js +291 -0
  545. package/packages/config-eslint/node_modules/file-entry-cache/package.json +56 -0
  546. package/packages/config-eslint/node_modules/find-up/index.d.ts +138 -0
  547. package/packages/config-eslint/node_modules/find-up/index.js +89 -0
  548. package/packages/config-eslint/node_modules/find-up/license +9 -0
  549. package/packages/config-eslint/node_modules/find-up/package.json +54 -0
  550. package/packages/config-eslint/node_modules/find-up/readme.md +151 -0
  551. package/packages/config-eslint/node_modules/flat-cache/LICENSE +22 -0
  552. package/packages/config-eslint/node_modules/flat-cache/README.md +77 -0
  553. package/packages/config-eslint/node_modules/flat-cache/changelog.md +278 -0
  554. package/packages/config-eslint/node_modules/flat-cache/package.json +63 -0
  555. package/packages/config-eslint/node_modules/flat-cache/src/cache.js +214 -0
  556. package/packages/config-eslint/node_modules/flat-cache/src/del.js +30 -0
  557. package/packages/config-eslint/node_modules/flat-cache/src/utils.js +42 -0
  558. package/packages/config-eslint/node_modules/glob-parent/LICENSE +15 -0
  559. package/packages/config-eslint/node_modules/glob-parent/README.md +134 -0
  560. package/packages/config-eslint/node_modules/glob-parent/index.js +75 -0
  561. package/packages/config-eslint/node_modules/glob-parent/package.json +54 -0
  562. package/packages/config-eslint/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
  563. package/packages/config-eslint/node_modules/json-schema-traverse/.travis.yml +8 -0
  564. package/packages/config-eslint/node_modules/json-schema-traverse/LICENSE +21 -0
  565. package/packages/config-eslint/node_modules/json-schema-traverse/README.md +83 -0
  566. package/packages/config-eslint/node_modules/json-schema-traverse/index.js +89 -0
  567. package/packages/config-eslint/node_modules/json-schema-traverse/package.json +43 -0
  568. package/packages/config-eslint/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
  569. package/packages/config-eslint/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
  570. package/packages/config-eslint/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
  571. package/packages/config-eslint/node_modules/locate-path/index.d.ts +83 -0
  572. package/packages/config-eslint/node_modules/locate-path/index.js +68 -0
  573. package/packages/config-eslint/node_modules/locate-path/license +9 -0
  574. package/packages/config-eslint/node_modules/locate-path/package.json +46 -0
  575. package/packages/config-eslint/node_modules/locate-path/readme.md +125 -0
  576. package/packages/config-eslint/node_modules/p-limit/index.d.ts +42 -0
  577. package/packages/config-eslint/node_modules/p-limit/index.js +71 -0
  578. package/packages/config-eslint/node_modules/p-limit/license +9 -0
  579. package/packages/config-eslint/node_modules/p-limit/package.json +52 -0
  580. package/packages/config-eslint/node_modules/p-limit/readme.md +101 -0
  581. package/packages/config-eslint/node_modules/p-locate/index.d.ts +53 -0
  582. package/packages/config-eslint/node_modules/p-locate/index.js +50 -0
  583. package/packages/config-eslint/node_modules/p-locate/license +9 -0
  584. package/packages/config-eslint/node_modules/p-locate/package.json +54 -0
  585. package/packages/config-eslint/node_modules/p-locate/readme.md +93 -0
  586. package/packages/config-eslint/node_modules/path-exists/index.d.ts +28 -0
  587. package/packages/config-eslint/node_modules/path-exists/index.js +23 -0
  588. package/packages/config-eslint/node_modules/path-exists/license +9 -0
  589. package/packages/config-eslint/node_modules/path-exists/package.json +39 -0
  590. package/packages/config-eslint/node_modules/path-exists/readme.md +52 -0
  591. package/packages/config-eslint/node_modules/yocto-queue/index.d.ts +56 -0
  592. package/packages/config-eslint/node_modules/yocto-queue/index.js +68 -0
  593. package/packages/config-eslint/node_modules/yocto-queue/license +9 -0
  594. package/packages/config-eslint/node_modules/yocto-queue/package.json +43 -0
  595. package/packages/config-eslint/node_modules/yocto-queue/readme.md +64 -0
  596. package/packages/config-eslint/package.json +2 -2
  597. package/packages/config-hooks/package.json +2 -2
@@ -0,0 +1,1126 @@
1
+ /**
2
+ * @fileoverview This option sets a specific tab width for your code
3
+ *
4
+ * This rule has been ported and modified from nodeca.
5
+ * @author Vitaly Puzrin
6
+ * @author Gyandeep Singh
7
+ * @deprecated in ESLint v4.0.0
8
+ */
9
+
10
+ "use strict";
11
+
12
+ //------------------------------------------------------------------------------
13
+ // Requirements
14
+ //------------------------------------------------------------------------------
15
+
16
+ const astUtils = require("./utils/ast-utils");
17
+
18
+ //------------------------------------------------------------------------------
19
+ // Rule Definition
20
+ //------------------------------------------------------------------------------
21
+ // this rule has known coverage issues, but it's deprecated and shouldn't be updated in the future anyway.
22
+ /* c8 ignore next */
23
+ /** @type {import('../shared/types').Rule} */
24
+ module.exports = {
25
+ meta: {
26
+ type: "layout",
27
+
28
+ docs: {
29
+ description: "Enforce consistent indentation",
30
+ recommended: false,
31
+ url: "https://eslint.org/docs/latest/rules/indent-legacy"
32
+ },
33
+
34
+ deprecated: true,
35
+
36
+ replacedBy: ["indent"],
37
+
38
+ fixable: "whitespace",
39
+
40
+ schema: [
41
+ {
42
+ oneOf: [
43
+ {
44
+ enum: ["tab"]
45
+ },
46
+ {
47
+ type: "integer",
48
+ minimum: 0
49
+ }
50
+ ]
51
+ },
52
+ {
53
+ type: "object",
54
+ properties: {
55
+ SwitchCase: {
56
+ type: "integer",
57
+ minimum: 0
58
+ },
59
+ VariableDeclarator: {
60
+ oneOf: [
61
+ {
62
+ type: "integer",
63
+ minimum: 0
64
+ },
65
+ {
66
+ type: "object",
67
+ properties: {
68
+ var: {
69
+ type: "integer",
70
+ minimum: 0
71
+ },
72
+ let: {
73
+ type: "integer",
74
+ minimum: 0
75
+ },
76
+ const: {
77
+ type: "integer",
78
+ minimum: 0
79
+ }
80
+ }
81
+ }
82
+ ]
83
+ },
84
+ outerIIFEBody: {
85
+ type: "integer",
86
+ minimum: 0
87
+ },
88
+ MemberExpression: {
89
+ type: "integer",
90
+ minimum: 0
91
+ },
92
+ FunctionDeclaration: {
93
+ type: "object",
94
+ properties: {
95
+ parameters: {
96
+ oneOf: [
97
+ {
98
+ type: "integer",
99
+ minimum: 0
100
+ },
101
+ {
102
+ enum: ["first"]
103
+ }
104
+ ]
105
+ },
106
+ body: {
107
+ type: "integer",
108
+ minimum: 0
109
+ }
110
+ }
111
+ },
112
+ FunctionExpression: {
113
+ type: "object",
114
+ properties: {
115
+ parameters: {
116
+ oneOf: [
117
+ {
118
+ type: "integer",
119
+ minimum: 0
120
+ },
121
+ {
122
+ enum: ["first"]
123
+ }
124
+ ]
125
+ },
126
+ body: {
127
+ type: "integer",
128
+ minimum: 0
129
+ }
130
+ }
131
+ },
132
+ CallExpression: {
133
+ type: "object",
134
+ properties: {
135
+ parameters: {
136
+ oneOf: [
137
+ {
138
+ type: "integer",
139
+ minimum: 0
140
+ },
141
+ {
142
+ enum: ["first"]
143
+ }
144
+ ]
145
+ }
146
+ }
147
+ },
148
+ ArrayExpression: {
149
+ oneOf: [
150
+ {
151
+ type: "integer",
152
+ minimum: 0
153
+ },
154
+ {
155
+ enum: ["first"]
156
+ }
157
+ ]
158
+ },
159
+ ObjectExpression: {
160
+ oneOf: [
161
+ {
162
+ type: "integer",
163
+ minimum: 0
164
+ },
165
+ {
166
+ enum: ["first"]
167
+ }
168
+ ]
169
+ }
170
+ },
171
+ additionalProperties: false
172
+ }
173
+ ],
174
+ messages: {
175
+ expected: "Expected indentation of {{expected}} but found {{actual}}."
176
+ }
177
+ },
178
+
179
+ create(context) {
180
+ const DEFAULT_VARIABLE_INDENT = 1;
181
+ const DEFAULT_PARAMETER_INDENT = null; // For backwards compatibility, don't check parameter indentation unless specified in the config
182
+ const DEFAULT_FUNCTION_BODY_INDENT = 1;
183
+
184
+ let indentType = "space";
185
+ let indentSize = 4;
186
+ const options = {
187
+ SwitchCase: 0,
188
+ VariableDeclarator: {
189
+ var: DEFAULT_VARIABLE_INDENT,
190
+ let: DEFAULT_VARIABLE_INDENT,
191
+ const: DEFAULT_VARIABLE_INDENT
192
+ },
193
+ outerIIFEBody: null,
194
+ FunctionDeclaration: {
195
+ parameters: DEFAULT_PARAMETER_INDENT,
196
+ body: DEFAULT_FUNCTION_BODY_INDENT
197
+ },
198
+ FunctionExpression: {
199
+ parameters: DEFAULT_PARAMETER_INDENT,
200
+ body: DEFAULT_FUNCTION_BODY_INDENT
201
+ },
202
+ CallExpression: {
203
+ arguments: DEFAULT_PARAMETER_INDENT
204
+ },
205
+ ArrayExpression: 1,
206
+ ObjectExpression: 1
207
+ };
208
+
209
+ const sourceCode = context.sourceCode;
210
+
211
+ if (context.options.length) {
212
+ if (context.options[0] === "tab") {
213
+ indentSize = 1;
214
+ indentType = "tab";
215
+ } else /* c8 ignore start */ if (typeof context.options[0] === "number") {
216
+ indentSize = context.options[0];
217
+ indentType = "space";
218
+ }/* c8 ignore stop */
219
+
220
+ if (context.options[1]) {
221
+ const opts = context.options[1];
222
+
223
+ options.SwitchCase = opts.SwitchCase || 0;
224
+ const variableDeclaratorRules = opts.VariableDeclarator;
225
+
226
+ if (typeof variableDeclaratorRules === "number") {
227
+ options.VariableDeclarator = {
228
+ var: variableDeclaratorRules,
229
+ let: variableDeclaratorRules,
230
+ const: variableDeclaratorRules
231
+ };
232
+ } else if (typeof variableDeclaratorRules === "object") {
233
+ Object.assign(options.VariableDeclarator, variableDeclaratorRules);
234
+ }
235
+
236
+ if (typeof opts.outerIIFEBody === "number") {
237
+ options.outerIIFEBody = opts.outerIIFEBody;
238
+ }
239
+
240
+ if (typeof opts.MemberExpression === "number") {
241
+ options.MemberExpression = opts.MemberExpression;
242
+ }
243
+
244
+ if (typeof opts.FunctionDeclaration === "object") {
245
+ Object.assign(options.FunctionDeclaration, opts.FunctionDeclaration);
246
+ }
247
+
248
+ if (typeof opts.FunctionExpression === "object") {
249
+ Object.assign(options.FunctionExpression, opts.FunctionExpression);
250
+ }
251
+
252
+ if (typeof opts.CallExpression === "object") {
253
+ Object.assign(options.CallExpression, opts.CallExpression);
254
+ }
255
+
256
+ if (typeof opts.ArrayExpression === "number" || typeof opts.ArrayExpression === "string") {
257
+ options.ArrayExpression = opts.ArrayExpression;
258
+ }
259
+
260
+ if (typeof opts.ObjectExpression === "number" || typeof opts.ObjectExpression === "string") {
261
+ options.ObjectExpression = opts.ObjectExpression;
262
+ }
263
+ }
264
+ }
265
+
266
+ const caseIndentStore = {};
267
+
268
+ /**
269
+ * Creates an error message for a line, given the expected/actual indentation.
270
+ * @param {int} expectedAmount The expected amount of indentation characters for this line
271
+ * @param {int} actualSpaces The actual number of indentation spaces that were found on this line
272
+ * @param {int} actualTabs The actual number of indentation tabs that were found on this line
273
+ * @returns {string} An error message for this line
274
+ */
275
+ function createErrorMessageData(expectedAmount, actualSpaces, actualTabs) {
276
+ const expectedStatement = `${expectedAmount} ${indentType}${expectedAmount === 1 ? "" : "s"}`; // e.g. "2 tabs"
277
+ const foundSpacesWord = `space${actualSpaces === 1 ? "" : "s"}`; // e.g. "space"
278
+ const foundTabsWord = `tab${actualTabs === 1 ? "" : "s"}`; // e.g. "tabs"
279
+ let foundStatement;
280
+
281
+ if (actualSpaces > 0 && actualTabs > 0) {
282
+ foundStatement = `${actualSpaces} ${foundSpacesWord} and ${actualTabs} ${foundTabsWord}`; // e.g. "1 space and 2 tabs"
283
+ } else if (actualSpaces > 0) {
284
+
285
+ /*
286
+ * Abbreviate the message if the expected indentation is also spaces.
287
+ * e.g. 'Expected 4 spaces but found 2' rather than 'Expected 4 spaces but found 2 spaces'
288
+ */
289
+ foundStatement = indentType === "space" ? actualSpaces : `${actualSpaces} ${foundSpacesWord}`;
290
+ } else if (actualTabs > 0) {
291
+ foundStatement = indentType === "tab" ? actualTabs : `${actualTabs} ${foundTabsWord}`;
292
+ } else {
293
+ foundStatement = "0";
294
+ }
295
+ return {
296
+ expected: expectedStatement,
297
+ actual: foundStatement
298
+ };
299
+ }
300
+
301
+ /**
302
+ * Reports a given indent violation
303
+ * @param {ASTNode} node Node violating the indent rule
304
+ * @param {int} needed Expected indentation character count
305
+ * @param {int} gottenSpaces Indentation space count in the actual node/code
306
+ * @param {int} gottenTabs Indentation tab count in the actual node/code
307
+ * @param {Object} [loc] Error line and column location
308
+ * @param {boolean} isLastNodeCheck Is the error for last node check
309
+ * @returns {void}
310
+ */
311
+ function report(node, needed, gottenSpaces, gottenTabs, loc, isLastNodeCheck) {
312
+ if (gottenSpaces && gottenTabs) {
313
+
314
+ // To avoid conflicts with `no-mixed-spaces-and-tabs`, don't report lines that have both spaces and tabs.
315
+ return;
316
+ }
317
+
318
+ const desiredIndent = (indentType === "space" ? " " : "\t").repeat(needed);
319
+
320
+ const textRange = isLastNodeCheck
321
+ ? [node.range[1] - node.loc.end.column, node.range[1] - node.loc.end.column + gottenSpaces + gottenTabs]
322
+ : [node.range[0] - node.loc.start.column, node.range[0] - node.loc.start.column + gottenSpaces + gottenTabs];
323
+
324
+ context.report({
325
+ node,
326
+ loc,
327
+ messageId: "expected",
328
+ data: createErrorMessageData(needed, gottenSpaces, gottenTabs),
329
+ fix: fixer => fixer.replaceTextRange(textRange, desiredIndent)
330
+ });
331
+ }
332
+
333
+ /**
334
+ * Get the actual indent of node
335
+ * @param {ASTNode|Token} node Node to examine
336
+ * @param {boolean} [byLastLine=false] get indent of node's last line
337
+ * @returns {Object} The node's indent. Contains keys `space` and `tab`, representing the indent of each character. Also
338
+ * contains keys `goodChar` and `badChar`, where `goodChar` is the amount of the user's desired indentation character, and
339
+ * `badChar` is the amount of the other indentation character.
340
+ */
341
+ function getNodeIndent(node, byLastLine) {
342
+ const token = byLastLine ? sourceCode.getLastToken(node) : sourceCode.getFirstToken(node);
343
+ const srcCharsBeforeNode = sourceCode.getText(token, token.loc.start.column).split("");
344
+ const indentChars = srcCharsBeforeNode.slice(0, srcCharsBeforeNode.findIndex(char => char !== " " && char !== "\t"));
345
+ const spaces = indentChars.filter(char => char === " ").length;
346
+ const tabs = indentChars.filter(char => char === "\t").length;
347
+
348
+ return {
349
+ space: spaces,
350
+ tab: tabs,
351
+ goodChar: indentType === "space" ? spaces : tabs,
352
+ badChar: indentType === "space" ? tabs : spaces
353
+ };
354
+ }
355
+
356
+ /**
357
+ * Checks node is the first in its own start line. By default it looks by start line.
358
+ * @param {ASTNode} node The node to check
359
+ * @param {boolean} [byEndLocation=false] Lookup based on start position or end
360
+ * @returns {boolean} true if its the first in the its start line
361
+ */
362
+ function isNodeFirstInLine(node, byEndLocation) {
363
+ const firstToken = byEndLocation === true ? sourceCode.getLastToken(node, 1) : sourceCode.getTokenBefore(node),
364
+ startLine = byEndLocation === true ? node.loc.end.line : node.loc.start.line,
365
+ endLine = firstToken ? firstToken.loc.end.line : -1;
366
+
367
+ return startLine !== endLine;
368
+ }
369
+
370
+ /**
371
+ * Check indent for node
372
+ * @param {ASTNode} node Node to check
373
+ * @param {int} neededIndent needed indent
374
+ * @returns {void}
375
+ */
376
+ function checkNodeIndent(node, neededIndent) {
377
+ const actualIndent = getNodeIndent(node, false);
378
+
379
+ if (
380
+ node.type !== "ArrayExpression" &&
381
+ node.type !== "ObjectExpression" &&
382
+ (actualIndent.goodChar !== neededIndent || actualIndent.badChar !== 0) &&
383
+ isNodeFirstInLine(node)
384
+ ) {
385
+ report(node, neededIndent, actualIndent.space, actualIndent.tab);
386
+ }
387
+
388
+ if (node.type === "IfStatement" && node.alternate) {
389
+ const elseToken = sourceCode.getTokenBefore(node.alternate);
390
+
391
+ checkNodeIndent(elseToken, neededIndent);
392
+
393
+ if (!isNodeFirstInLine(node.alternate)) {
394
+ checkNodeIndent(node.alternate, neededIndent);
395
+ }
396
+ }
397
+
398
+ if (node.type === "TryStatement" && node.handler) {
399
+ const catchToken = sourceCode.getFirstToken(node.handler);
400
+
401
+ checkNodeIndent(catchToken, neededIndent);
402
+ }
403
+
404
+ if (node.type === "TryStatement" && node.finalizer) {
405
+ const finallyToken = sourceCode.getTokenBefore(node.finalizer);
406
+
407
+ checkNodeIndent(finallyToken, neededIndent);
408
+ }
409
+
410
+ if (node.type === "DoWhileStatement") {
411
+ const whileToken = sourceCode.getTokenAfter(node.body);
412
+
413
+ checkNodeIndent(whileToken, neededIndent);
414
+ }
415
+ }
416
+
417
+ /**
418
+ * Check indent for nodes list
419
+ * @param {ASTNode[]} nodes list of node objects
420
+ * @param {int} indent needed indent
421
+ * @returns {void}
422
+ */
423
+ function checkNodesIndent(nodes, indent) {
424
+ nodes.forEach(node => checkNodeIndent(node, indent));
425
+ }
426
+
427
+ /**
428
+ * Check last node line indent this detects, that block closed correctly
429
+ * @param {ASTNode} node Node to examine
430
+ * @param {int} lastLineIndent needed indent
431
+ * @returns {void}
432
+ */
433
+ function checkLastNodeLineIndent(node, lastLineIndent) {
434
+ const lastToken = sourceCode.getLastToken(node);
435
+ const endIndent = getNodeIndent(lastToken, true);
436
+
437
+ if ((endIndent.goodChar !== lastLineIndent || endIndent.badChar !== 0) && isNodeFirstInLine(node, true)) {
438
+ report(
439
+ node,
440
+ lastLineIndent,
441
+ endIndent.space,
442
+ endIndent.tab,
443
+ { line: lastToken.loc.start.line, column: lastToken.loc.start.column },
444
+ true
445
+ );
446
+ }
447
+ }
448
+
449
+ /**
450
+ * Check last node line indent this detects, that block closed correctly
451
+ * This function for more complicated return statement case, where closing parenthesis may be followed by ';'
452
+ * @param {ASTNode} node Node to examine
453
+ * @param {int} firstLineIndent first line needed indent
454
+ * @returns {void}
455
+ */
456
+ function checkLastReturnStatementLineIndent(node, firstLineIndent) {
457
+
458
+ /*
459
+ * in case if return statement ends with ');' we have traverse back to ')'
460
+ * otherwise we'll measure indent for ';' and replace ')'
461
+ */
462
+ const lastToken = sourceCode.getLastToken(node, astUtils.isClosingParenToken);
463
+ const textBeforeClosingParenthesis = sourceCode.getText(lastToken, lastToken.loc.start.column).slice(0, -1);
464
+
465
+ if (textBeforeClosingParenthesis.trim()) {
466
+
467
+ // There are tokens before the closing paren, don't report this case
468
+ return;
469
+ }
470
+
471
+ const endIndent = getNodeIndent(lastToken, true);
472
+
473
+ if (endIndent.goodChar !== firstLineIndent) {
474
+ report(
475
+ node,
476
+ firstLineIndent,
477
+ endIndent.space,
478
+ endIndent.tab,
479
+ { line: lastToken.loc.start.line, column: lastToken.loc.start.column },
480
+ true
481
+ );
482
+ }
483
+ }
484
+
485
+ /**
486
+ * Check first node line indent is correct
487
+ * @param {ASTNode} node Node to examine
488
+ * @param {int} firstLineIndent needed indent
489
+ * @returns {void}
490
+ */
491
+ function checkFirstNodeLineIndent(node, firstLineIndent) {
492
+ const startIndent = getNodeIndent(node, false);
493
+
494
+ if ((startIndent.goodChar !== firstLineIndent || startIndent.badChar !== 0) && isNodeFirstInLine(node)) {
495
+ report(
496
+ node,
497
+ firstLineIndent,
498
+ startIndent.space,
499
+ startIndent.tab,
500
+ { line: node.loc.start.line, column: node.loc.start.column }
501
+ );
502
+ }
503
+ }
504
+
505
+ /**
506
+ * Returns a parent node of given node based on a specified type
507
+ * if not present then return null
508
+ * @param {ASTNode} node node to examine
509
+ * @param {string} type type that is being looked for
510
+ * @param {string} stopAtList end points for the evaluating code
511
+ * @returns {ASTNode|void} if found then node otherwise null
512
+ */
513
+ function getParentNodeByType(node, type, stopAtList) {
514
+ let parent = node.parent;
515
+ const stopAtSet = new Set(stopAtList || ["Program"]);
516
+
517
+ while (parent.type !== type && !stopAtSet.has(parent.type) && parent.type !== "Program") {
518
+ parent = parent.parent;
519
+ }
520
+
521
+ return parent.type === type ? parent : null;
522
+ }
523
+
524
+ /**
525
+ * Returns the VariableDeclarator based on the current node
526
+ * if not present then return null
527
+ * @param {ASTNode} node node to examine
528
+ * @returns {ASTNode|void} if found then node otherwise null
529
+ */
530
+ function getVariableDeclaratorNode(node) {
531
+ return getParentNodeByType(node, "VariableDeclarator");
532
+ }
533
+
534
+ /**
535
+ * Check to see if the node is part of the multi-line variable declaration.
536
+ * Also if its on the same line as the varNode
537
+ * @param {ASTNode} node node to check
538
+ * @param {ASTNode} varNode variable declaration node to check against
539
+ * @returns {boolean} True if all the above condition satisfy
540
+ */
541
+ function isNodeInVarOnTop(node, varNode) {
542
+ return varNode &&
543
+ varNode.parent.loc.start.line === node.loc.start.line &&
544
+ varNode.parent.declarations.length > 1;
545
+ }
546
+
547
+ /**
548
+ * Check to see if the argument before the callee node is multi-line and
549
+ * there should only be 1 argument before the callee node
550
+ * @param {ASTNode} node node to check
551
+ * @returns {boolean} True if arguments are multi-line
552
+ */
553
+ function isArgBeforeCalleeNodeMultiline(node) {
554
+ const parent = node.parent;
555
+
556
+ if (parent.arguments.length >= 2 && parent.arguments[1] === node) {
557
+ return parent.arguments[0].loc.end.line > parent.arguments[0].loc.start.line;
558
+ }
559
+
560
+ return false;
561
+ }
562
+
563
+ /**
564
+ * Check to see if the node is a file level IIFE
565
+ * @param {ASTNode} node The function node to check.
566
+ * @returns {boolean} True if the node is the outer IIFE
567
+ */
568
+ function isOuterIIFE(node) {
569
+ const parent = node.parent;
570
+ let stmt = parent.parent;
571
+
572
+ /*
573
+ * Verify that the node is an IIEF
574
+ */
575
+ if (
576
+ parent.type !== "CallExpression" ||
577
+ parent.callee !== node) {
578
+
579
+ return false;
580
+ }
581
+
582
+ /*
583
+ * Navigate legal ancestors to determine whether this IIEF is outer
584
+ */
585
+ while (
586
+ stmt.type === "UnaryExpression" && (
587
+ stmt.operator === "!" ||
588
+ stmt.operator === "~" ||
589
+ stmt.operator === "+" ||
590
+ stmt.operator === "-") ||
591
+ stmt.type === "AssignmentExpression" ||
592
+ stmt.type === "LogicalExpression" ||
593
+ stmt.type === "SequenceExpression" ||
594
+ stmt.type === "VariableDeclarator") {
595
+
596
+ stmt = stmt.parent;
597
+ }
598
+
599
+ return ((
600
+ stmt.type === "ExpressionStatement" ||
601
+ stmt.type === "VariableDeclaration") &&
602
+ stmt.parent && stmt.parent.type === "Program"
603
+ );
604
+ }
605
+
606
+ /**
607
+ * Check indent for function block content
608
+ * @param {ASTNode} node A BlockStatement node that is inside of a function.
609
+ * @returns {void}
610
+ */
611
+ function checkIndentInFunctionBlock(node) {
612
+
613
+ /*
614
+ * Search first caller in chain.
615
+ * Ex.:
616
+ *
617
+ * Models <- Identifier
618
+ * .User
619
+ * .find()
620
+ * .exec(function() {
621
+ * // function body
622
+ * });
623
+ *
624
+ * Looks for 'Models'
625
+ */
626
+ const calleeNode = node.parent; // FunctionExpression
627
+ let indent;
628
+
629
+ if (calleeNode.parent &&
630
+ (calleeNode.parent.type === "Property" ||
631
+ calleeNode.parent.type === "ArrayExpression")) {
632
+
633
+ // If function is part of array or object, comma can be put at left
634
+ indent = getNodeIndent(calleeNode, false).goodChar;
635
+ } else {
636
+
637
+ // If function is standalone, simple calculate indent
638
+ indent = getNodeIndent(calleeNode).goodChar;
639
+ }
640
+
641
+ if (calleeNode.parent.type === "CallExpression") {
642
+ const calleeParent = calleeNode.parent;
643
+
644
+ if (calleeNode.type !== "FunctionExpression" && calleeNode.type !== "ArrowFunctionExpression") {
645
+ if (calleeParent && calleeParent.loc.start.line < node.loc.start.line) {
646
+ indent = getNodeIndent(calleeParent).goodChar;
647
+ }
648
+ } else {
649
+ if (isArgBeforeCalleeNodeMultiline(calleeNode) &&
650
+ calleeParent.callee.loc.start.line === calleeParent.callee.loc.end.line &&
651
+ !isNodeFirstInLine(calleeNode)) {
652
+ indent = getNodeIndent(calleeParent).goodChar;
653
+ }
654
+ }
655
+ }
656
+
657
+ /*
658
+ * function body indent should be indent + indent size, unless this
659
+ * is a FunctionDeclaration, FunctionExpression, or outer IIFE and the corresponding options are enabled.
660
+ */
661
+ let functionOffset = indentSize;
662
+
663
+ if (options.outerIIFEBody !== null && isOuterIIFE(calleeNode)) {
664
+ functionOffset = options.outerIIFEBody * indentSize;
665
+ } else if (calleeNode.type === "FunctionExpression") {
666
+ functionOffset = options.FunctionExpression.body * indentSize;
667
+ } else if (calleeNode.type === "FunctionDeclaration") {
668
+ functionOffset = options.FunctionDeclaration.body * indentSize;
669
+ }
670
+ indent += functionOffset;
671
+
672
+ // check if the node is inside a variable
673
+ const parentVarNode = getVariableDeclaratorNode(node);
674
+
675
+ if (parentVarNode && isNodeInVarOnTop(node, parentVarNode)) {
676
+ indent += indentSize * options.VariableDeclarator[parentVarNode.parent.kind];
677
+ }
678
+
679
+ if (node.body.length > 0) {
680
+ checkNodesIndent(node.body, indent);
681
+ }
682
+
683
+ checkLastNodeLineIndent(node, indent - functionOffset);
684
+ }
685
+
686
+
687
+ /**
688
+ * Checks if the given node starts and ends on the same line
689
+ * @param {ASTNode} node The node to check
690
+ * @returns {boolean} Whether or not the block starts and ends on the same line.
691
+ */
692
+ function isSingleLineNode(node) {
693
+ const lastToken = sourceCode.getLastToken(node),
694
+ startLine = node.loc.start.line,
695
+ endLine = lastToken.loc.end.line;
696
+
697
+ return startLine === endLine;
698
+ }
699
+
700
+ /**
701
+ * Check indent for array block content or object block content
702
+ * @param {ASTNode} node node to examine
703
+ * @returns {void}
704
+ */
705
+ function checkIndentInArrayOrObjectBlock(node) {
706
+
707
+ // Skip inline
708
+ if (isSingleLineNode(node)) {
709
+ return;
710
+ }
711
+
712
+ let elements = (node.type === "ArrayExpression") ? node.elements : node.properties;
713
+
714
+ // filter out empty elements example would be [ , 2] so remove first element as espree considers it as null
715
+ elements = elements.filter(elem => elem !== null);
716
+
717
+ let nodeIndent;
718
+ let elementsIndent;
719
+ const parentVarNode = getVariableDeclaratorNode(node);
720
+
721
+ // TODO - come up with a better strategy in future
722
+ if (isNodeFirstInLine(node)) {
723
+ const parent = node.parent;
724
+
725
+ nodeIndent = getNodeIndent(parent).goodChar;
726
+ if (!parentVarNode || parentVarNode.loc.start.line !== node.loc.start.line) {
727
+ if (parent.type !== "VariableDeclarator" || parentVarNode === parentVarNode.parent.declarations[0]) {
728
+ if (parent.type === "VariableDeclarator" && parentVarNode.loc.start.line === parent.loc.start.line) {
729
+ nodeIndent += (indentSize * options.VariableDeclarator[parentVarNode.parent.kind]);
730
+ } else if (parent.type === "ObjectExpression" || parent.type === "ArrayExpression") {
731
+ const parentElements = node.parent.type === "ObjectExpression" ? node.parent.properties : node.parent.elements;
732
+
733
+ if (parentElements[0] &&
734
+ parentElements[0].loc.start.line === parent.loc.start.line &&
735
+ parentElements[0].loc.end.line !== parent.loc.start.line) {
736
+
737
+ /*
738
+ * If the first element of the array spans multiple lines, don't increase the expected indentation of the rest.
739
+ * e.g. [{
740
+ * foo: 1
741
+ * },
742
+ * {
743
+ * bar: 1
744
+ * }]
745
+ * the second object is not indented.
746
+ */
747
+ } else if (typeof options[parent.type] === "number") {
748
+ nodeIndent += options[parent.type] * indentSize;
749
+ } else {
750
+ nodeIndent = parentElements[0].loc.start.column;
751
+ }
752
+ } else if (parent.type === "CallExpression" || parent.type === "NewExpression") {
753
+ if (typeof options.CallExpression.arguments === "number") {
754
+ nodeIndent += options.CallExpression.arguments * indentSize;
755
+ } else if (options.CallExpression.arguments === "first") {
756
+ if (parent.arguments.includes(node)) {
757
+ nodeIndent = parent.arguments[0].loc.start.column;
758
+ }
759
+ } else {
760
+ nodeIndent += indentSize;
761
+ }
762
+ } else if (parent.type === "LogicalExpression" || parent.type === "ArrowFunctionExpression") {
763
+ nodeIndent += indentSize;
764
+ }
765
+ }
766
+ }
767
+
768
+ checkFirstNodeLineIndent(node, nodeIndent);
769
+ } else {
770
+ nodeIndent = getNodeIndent(node).goodChar;
771
+ }
772
+
773
+ if (options[node.type] === "first") {
774
+ elementsIndent = elements.length ? elements[0].loc.start.column : 0; // If there are no elements, elementsIndent doesn't matter.
775
+ } else {
776
+ elementsIndent = nodeIndent + indentSize * options[node.type];
777
+ }
778
+
779
+ /*
780
+ * Check if the node is a multiple variable declaration; if so, then
781
+ * make sure indentation takes that into account.
782
+ */
783
+ if (isNodeInVarOnTop(node, parentVarNode)) {
784
+ elementsIndent += indentSize * options.VariableDeclarator[parentVarNode.parent.kind];
785
+ }
786
+
787
+ checkNodesIndent(elements, elementsIndent);
788
+
789
+ if (elements.length > 0) {
790
+
791
+ // Skip last block line check if last item in same line
792
+ if (elements.at(-1).loc.end.line === node.loc.end.line) {
793
+ return;
794
+ }
795
+ }
796
+
797
+ checkLastNodeLineIndent(node, nodeIndent +
798
+ (isNodeInVarOnTop(node, parentVarNode) ? options.VariableDeclarator[parentVarNode.parent.kind] * indentSize : 0));
799
+ }
800
+
801
+ /**
802
+ * Check if the node or node body is a BlockStatement or not
803
+ * @param {ASTNode} node node to test
804
+ * @returns {boolean} True if it or its body is a block statement
805
+ */
806
+ function isNodeBodyBlock(node) {
807
+ return node.type === "BlockStatement" || node.type === "ClassBody" || (node.body && node.body.type === "BlockStatement") ||
808
+ (node.consequent && node.consequent.type === "BlockStatement");
809
+ }
810
+
811
+ /**
812
+ * Check indentation for blocks
813
+ * @param {ASTNode} node node to check
814
+ * @returns {void}
815
+ */
816
+ function blockIndentationCheck(node) {
817
+
818
+ // Skip inline blocks
819
+ if (isSingleLineNode(node)) {
820
+ return;
821
+ }
822
+
823
+ if (node.parent && (
824
+ node.parent.type === "FunctionExpression" ||
825
+ node.parent.type === "FunctionDeclaration" ||
826
+ node.parent.type === "ArrowFunctionExpression")
827
+ ) {
828
+ checkIndentInFunctionBlock(node);
829
+ return;
830
+ }
831
+
832
+ let indent;
833
+ let nodesToCheck;
834
+
835
+ /*
836
+ * For this statements we should check indent from statement beginning,
837
+ * not from the beginning of the block.
838
+ */
839
+ const statementsWithProperties = [
840
+ "IfStatement", "WhileStatement", "ForStatement", "ForInStatement", "ForOfStatement", "DoWhileStatement", "ClassDeclaration", "TryStatement"
841
+ ];
842
+
843
+ if (node.parent && statementsWithProperties.includes(node.parent.type) && isNodeBodyBlock(node)) {
844
+ indent = getNodeIndent(node.parent).goodChar;
845
+ } else if (node.parent && node.parent.type === "CatchClause") {
846
+ indent = getNodeIndent(node.parent.parent).goodChar;
847
+ } else {
848
+ indent = getNodeIndent(node).goodChar;
849
+ }
850
+
851
+ if (node.type === "IfStatement" && node.consequent.type !== "BlockStatement") {
852
+ nodesToCheck = [node.consequent];
853
+ } else if (Array.isArray(node.body)) {
854
+ nodesToCheck = node.body;
855
+ } else {
856
+ nodesToCheck = [node.body];
857
+ }
858
+
859
+ if (nodesToCheck.length > 0) {
860
+ checkNodesIndent(nodesToCheck, indent + indentSize);
861
+ }
862
+
863
+ if (node.type === "BlockStatement") {
864
+ checkLastNodeLineIndent(node, indent);
865
+ }
866
+ }
867
+
868
+ /**
869
+ * Filter out the elements which are on the same line of each other or the node.
870
+ * basically have only 1 elements from each line except the variable declaration line.
871
+ * @param {ASTNode} node Variable declaration node
872
+ * @returns {ASTNode[]} Filtered elements
873
+ */
874
+ function filterOutSameLineVars(node) {
875
+ return node.declarations.reduce((finalCollection, elem) => {
876
+ const lastElem = finalCollection.at(-1);
877
+
878
+ if ((elem.loc.start.line !== node.loc.start.line && !lastElem) ||
879
+ (lastElem && lastElem.loc.start.line !== elem.loc.start.line)) {
880
+ finalCollection.push(elem);
881
+ }
882
+
883
+ return finalCollection;
884
+ }, []);
885
+ }
886
+
887
+ /**
888
+ * Check indentation for variable declarations
889
+ * @param {ASTNode} node node to examine
890
+ * @returns {void}
891
+ */
892
+ function checkIndentInVariableDeclarations(node) {
893
+ const elements = filterOutSameLineVars(node);
894
+ const nodeIndent = getNodeIndent(node).goodChar;
895
+ const lastElement = elements.at(-1);
896
+
897
+ const elementsIndent = nodeIndent + indentSize * options.VariableDeclarator[node.kind];
898
+
899
+ checkNodesIndent(elements, elementsIndent);
900
+
901
+ // Only check the last line if there is any token after the last item
902
+ if (sourceCode.getLastToken(node).loc.end.line <= lastElement.loc.end.line) {
903
+ return;
904
+ }
905
+
906
+ const tokenBeforeLastElement = sourceCode.getTokenBefore(lastElement);
907
+
908
+ if (tokenBeforeLastElement.value === ",") {
909
+
910
+ // Special case for comma-first syntax where the semicolon is indented
911
+ checkLastNodeLineIndent(node, getNodeIndent(tokenBeforeLastElement).goodChar);
912
+ } else {
913
+ checkLastNodeLineIndent(node, elementsIndent - indentSize);
914
+ }
915
+ }
916
+
917
+ /**
918
+ * Check and decide whether to check for indentation for blockless nodes
919
+ * Scenarios are for or while statements without braces around them
920
+ * @param {ASTNode} node node to examine
921
+ * @returns {void}
922
+ */
923
+ function blockLessNodes(node) {
924
+ if (node.body.type !== "BlockStatement") {
925
+ blockIndentationCheck(node);
926
+ }
927
+ }
928
+
929
+ /**
930
+ * Returns the expected indentation for the case statement
931
+ * @param {ASTNode} node node to examine
932
+ * @param {int} [providedSwitchIndent] indent for switch statement
933
+ * @returns {int} indent size
934
+ */
935
+ function expectedCaseIndent(node, providedSwitchIndent) {
936
+ const switchNode = (node.type === "SwitchStatement") ? node : node.parent;
937
+ const switchIndent = typeof providedSwitchIndent === "undefined"
938
+ ? getNodeIndent(switchNode).goodChar
939
+ : providedSwitchIndent;
940
+ let caseIndent;
941
+
942
+ if (caseIndentStore[switchNode.loc.start.line]) {
943
+ return caseIndentStore[switchNode.loc.start.line];
944
+ }
945
+
946
+ if (switchNode.cases.length > 0 && options.SwitchCase === 0) {
947
+ caseIndent = switchIndent;
948
+ } else {
949
+ caseIndent = switchIndent + (indentSize * options.SwitchCase);
950
+ }
951
+
952
+ caseIndentStore[switchNode.loc.start.line] = caseIndent;
953
+ return caseIndent;
954
+
955
+ }
956
+
957
+ /**
958
+ * Checks whether a return statement is wrapped in ()
959
+ * @param {ASTNode} node node to examine
960
+ * @returns {boolean} the result
961
+ */
962
+ function isWrappedInParenthesis(node) {
963
+ const regex = /^return\s*?\(\s*?\);*?/u;
964
+
965
+ const statementWithoutArgument = sourceCode.getText(node).replace(
966
+ sourceCode.getText(node.argument), ""
967
+ );
968
+
969
+ return regex.test(statementWithoutArgument);
970
+ }
971
+
972
+ return {
973
+ Program(node) {
974
+ if (node.body.length > 0) {
975
+
976
+ // Root nodes should have no indent
977
+ checkNodesIndent(node.body, getNodeIndent(node).goodChar);
978
+ }
979
+ },
980
+
981
+ ClassBody: blockIndentationCheck,
982
+
983
+ BlockStatement: blockIndentationCheck,
984
+
985
+ WhileStatement: blockLessNodes,
986
+
987
+ ForStatement: blockLessNodes,
988
+
989
+ ForInStatement: blockLessNodes,
990
+
991
+ ForOfStatement: blockLessNodes,
992
+
993
+ DoWhileStatement: blockLessNodes,
994
+
995
+ IfStatement(node) {
996
+ if (node.consequent.type !== "BlockStatement" && node.consequent.loc.start.line > node.loc.start.line) {
997
+ blockIndentationCheck(node);
998
+ }
999
+ },
1000
+
1001
+ VariableDeclaration(node) {
1002
+ if (node.declarations.at(-1).loc.start.line > node.declarations[0].loc.start.line) {
1003
+ checkIndentInVariableDeclarations(node);
1004
+ }
1005
+ },
1006
+
1007
+ ObjectExpression(node) {
1008
+ checkIndentInArrayOrObjectBlock(node);
1009
+ },
1010
+
1011
+ ArrayExpression(node) {
1012
+ checkIndentInArrayOrObjectBlock(node);
1013
+ },
1014
+
1015
+ MemberExpression(node) {
1016
+
1017
+ if (typeof options.MemberExpression === "undefined") {
1018
+ return;
1019
+ }
1020
+
1021
+ if (isSingleLineNode(node)) {
1022
+ return;
1023
+ }
1024
+
1025
+ /*
1026
+ * The typical layout of variable declarations and assignments
1027
+ * alter the expectation of correct indentation. Skip them.
1028
+ * TODO: Add appropriate configuration options for variable
1029
+ * declarations and assignments.
1030
+ */
1031
+ if (getParentNodeByType(node, "VariableDeclarator", ["FunctionExpression", "ArrowFunctionExpression"])) {
1032
+ return;
1033
+ }
1034
+
1035
+ if (getParentNodeByType(node, "AssignmentExpression", ["FunctionExpression"])) {
1036
+ return;
1037
+ }
1038
+
1039
+ const propertyIndent = getNodeIndent(node).goodChar + indentSize * options.MemberExpression;
1040
+
1041
+ const checkNodes = [node.property];
1042
+
1043
+ const dot = sourceCode.getTokenBefore(node.property);
1044
+
1045
+ if (dot.type === "Punctuator" && dot.value === ".") {
1046
+ checkNodes.push(dot);
1047
+ }
1048
+
1049
+ checkNodesIndent(checkNodes, propertyIndent);
1050
+ },
1051
+
1052
+ SwitchStatement(node) {
1053
+
1054
+ // Switch is not a 'BlockStatement'
1055
+ const switchIndent = getNodeIndent(node).goodChar;
1056
+ const caseIndent = expectedCaseIndent(node, switchIndent);
1057
+
1058
+ checkNodesIndent(node.cases, caseIndent);
1059
+
1060
+
1061
+ checkLastNodeLineIndent(node, switchIndent);
1062
+ },
1063
+
1064
+ SwitchCase(node) {
1065
+
1066
+ // Skip inline cases
1067
+ if (isSingleLineNode(node)) {
1068
+ return;
1069
+ }
1070
+ const caseIndent = expectedCaseIndent(node);
1071
+
1072
+ checkNodesIndent(node.consequent, caseIndent + indentSize);
1073
+ },
1074
+
1075
+ FunctionDeclaration(node) {
1076
+ if (isSingleLineNode(node)) {
1077
+ return;
1078
+ }
1079
+ if (options.FunctionDeclaration.parameters === "first" && node.params.length) {
1080
+ checkNodesIndent(node.params.slice(1), node.params[0].loc.start.column);
1081
+ } else if (options.FunctionDeclaration.parameters !== null) {
1082
+ checkNodesIndent(node.params, getNodeIndent(node).goodChar + indentSize * options.FunctionDeclaration.parameters);
1083
+ }
1084
+ },
1085
+
1086
+ FunctionExpression(node) {
1087
+ if (isSingleLineNode(node)) {
1088
+ return;
1089
+ }
1090
+ if (options.FunctionExpression.parameters === "first" && node.params.length) {
1091
+ checkNodesIndent(node.params.slice(1), node.params[0].loc.start.column);
1092
+ } else if (options.FunctionExpression.parameters !== null) {
1093
+ checkNodesIndent(node.params, getNodeIndent(node).goodChar + indentSize * options.FunctionExpression.parameters);
1094
+ }
1095
+ },
1096
+
1097
+ ReturnStatement(node) {
1098
+ if (isSingleLineNode(node)) {
1099
+ return;
1100
+ }
1101
+
1102
+ const firstLineIndent = getNodeIndent(node).goodChar;
1103
+
1104
+ // in case if return statement is wrapped in parenthesis
1105
+ if (isWrappedInParenthesis(node)) {
1106
+ checkLastReturnStatementLineIndent(node, firstLineIndent);
1107
+ } else {
1108
+ checkNodeIndent(node, firstLineIndent);
1109
+ }
1110
+ },
1111
+
1112
+ CallExpression(node) {
1113
+ if (isSingleLineNode(node)) {
1114
+ return;
1115
+ }
1116
+ if (options.CallExpression.arguments === "first" && node.arguments.length) {
1117
+ checkNodesIndent(node.arguments.slice(1), node.arguments[0].loc.start.column);
1118
+ } else if (options.CallExpression.arguments !== null) {
1119
+ checkNodesIndent(node.arguments, getNodeIndent(node).goodChar + indentSize * options.CallExpression.arguments);
1120
+ }
1121
+ }
1122
+
1123
+ };
1124
+
1125
+ }
1126
+ };