less 3.10.1 → 3.11.1

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 (1038) hide show
  1. package/.github/FUNDING.yml +12 -0
  2. package/CONTRIBUTING.md +2 -2
  3. package/Gruntfile.js +42 -212
  4. package/README.md +31 -1
  5. package/bin/lessc +10787 -12604
  6. package/dist/less.cjs.js +10411 -12115
  7. package/dist/less.js +10680 -13459
  8. package/dist/less.min.js +3 -3
  9. package/dist/less.min.js.map +1 -1
  10. package/lib/less/environment/abstract-file-manager.js +1 -1
  11. package/lib/less/functions/list.js +2 -1
  12. package/lib/less/functions/string.js +1 -2
  13. package/lib/less/index.js +1 -1
  14. package/lib/less/less-error.js +22 -2
  15. package/lib/less/parser/parser.js +9 -12
  16. package/lib/less/tree/namespace-value.js +1 -2
  17. package/lib/less/tree/quoted.js +3 -0
  18. package/lib/less/visitors/visitor.js +10 -2
  19. package/lib/less-node/file-manager.js +19 -49
  20. package/lib/lessc.js +2 -21
  21. package/package.json +17 -14
  22. package/packages/css-parser/node_modules/chevrotain/CHANGELOG.md +2 -0
  23. package/packages/css-parser/node_modules/chevrotain/LICENSE.txt +202 -0
  24. package/packages/css-parser/node_modules/chevrotain/README.md +20 -0
  25. package/packages/css-parser/node_modules/chevrotain/diagrams/README.md +1 -0
  26. package/packages/css-parser/node_modules/chevrotain/diagrams/diagrams.css +85 -0
  27. package/packages/css-parser/node_modules/chevrotain/diagrams/src/diagrams_behavior.js +225 -0
  28. package/packages/css-parser/node_modules/chevrotain/diagrams/src/diagrams_builder.js +211 -0
  29. package/packages/css-parser/node_modules/chevrotain/diagrams/src/diagrams_serializer.js +20 -0
  30. package/packages/css-parser/node_modules/chevrotain/diagrams/src/main.js +38 -0
  31. package/packages/css-parser/node_modules/chevrotain/diagrams/vendor/railroad-diagrams.js +1042 -0
  32. package/packages/css-parser/node_modules/chevrotain/lib/chevrotain.d.ts +2961 -0
  33. package/packages/css-parser/node_modules/chevrotain/lib/chevrotain.js +9785 -0
  34. package/packages/css-parser/node_modules/chevrotain/lib/chevrotain.min.js +2 -0
  35. package/packages/css-parser/node_modules/chevrotain/lib/src/api.js +70 -0
  36. package/packages/css-parser/node_modules/chevrotain/lib/src/diagrams/render_public.js +15 -0
  37. package/packages/css-parser/node_modules/chevrotain/lib/src/generate/generate.js +142 -0
  38. package/packages/css-parser/node_modules/chevrotain/lib/src/generate/generate_public.js +21 -0
  39. package/packages/css-parser/node_modules/chevrotain/lib/src/lang/lang_extensions.js +42 -0
  40. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/constants.js +5 -0
  41. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/cst/cst.js +194 -0
  42. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/cst/cst_visitor.js +129 -0
  43. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/errors_public.js +205 -0
  44. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/exceptions_public.js +58 -0
  45. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/grammar/checks.js +590 -0
  46. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/grammar/first.js +63 -0
  47. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/grammar/follow.js +67 -0
  48. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/grammar/gast/gast.js +170 -0
  49. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_public.js +262 -0
  50. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_resolver_public.js +39 -0
  51. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_visitor_public.js +48 -0
  52. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/grammar/interpreter.js +548 -0
  53. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/grammar/keys.js +42 -0
  54. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/grammar/lookahead.js +502 -0
  55. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/grammar/resolver.js +59 -0
  56. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/grammar/rest.js +112 -0
  57. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/parser/parser.js +235 -0
  58. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/parser/traits/context_assist.js +28 -0
  59. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/parser/traits/error_handler.js +83 -0
  60. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/parser/traits/gast_recorder.js +318 -0
  61. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/parser/traits/lexer_adapter.js +76 -0
  62. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/parser/traits/looksahead.js +108 -0
  63. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/parser/traits/parser_traits.js +7 -0
  64. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/parser/traits/perf_tracer.js +53 -0
  65. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_api.js +343 -0
  66. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js +645 -0
  67. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/parser/traits/recoverable.js +309 -0
  68. package/packages/css-parser/node_modules/chevrotain/lib/src/parse/parser/traits/tree_builder.js +290 -0
  69. package/packages/css-parser/node_modules/chevrotain/lib/src/scan/lexer.js +910 -0
  70. package/packages/css-parser/node_modules/chevrotain/lib/src/scan/lexer_errors_public.js +11 -0
  71. package/packages/css-parser/node_modules/chevrotain/lib/src/scan/lexer_public.js +674 -0
  72. package/packages/css-parser/node_modules/chevrotain/lib/src/scan/reg_exp.js +265 -0
  73. package/packages/css-parser/node_modules/chevrotain/lib/src/scan/reg_exp_parser.js +22 -0
  74. package/packages/css-parser/node_modules/chevrotain/lib/src/scan/tokens.js +129 -0
  75. package/packages/css-parser/node_modules/chevrotain/lib/src/scan/tokens_constants.js +4 -0
  76. package/packages/css-parser/node_modules/chevrotain/lib/src/scan/tokens_public.js +95 -0
  77. package/packages/css-parser/node_modules/chevrotain/lib/src/text/range.js +33 -0
  78. package/packages/css-parser/node_modules/chevrotain/lib/src/utils/utils.js +473 -0
  79. package/packages/css-parser/node_modules/chevrotain/lib/src/version.js +7 -0
  80. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/api.js +25 -0
  81. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/diagrams/render_public.js +12 -0
  82. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/generate/generate.js +131 -0
  83. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/generate/generate_public.js +17 -0
  84. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/lang/lang_extensions.js +37 -0
  85. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/constants.js +3 -0
  86. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/cst/cst.js +187 -0
  87. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/cst/cst_visitor.js +121 -0
  88. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/errors_public.js +203 -0
  89. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/exceptions_public.js +51 -0
  90. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/grammar/checks.js +574 -0
  91. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/grammar/first.js +57 -0
  92. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/grammar/follow.js +62 -0
  93. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast.js +163 -0
  94. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast_public.js +258 -0
  95. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast_resolver_public.js +34 -0
  96. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast_visitor_public.js +46 -0
  97. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/grammar/interpreter.js +544 -0
  98. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/grammar/keys.js +38 -0
  99. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/grammar/lookahead.js +489 -0
  100. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/grammar/resolver.js +56 -0
  101. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/grammar/rest.js +110 -0
  102. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/parser/parser.js +232 -0
  103. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/parser/traits/context_assist.js +26 -0
  104. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/parser/traits/error_handler.js +81 -0
  105. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/parser/traits/gast_recorder.js +316 -0
  106. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/parser/traits/lexer_adapter.js +74 -0
  107. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/parser/traits/looksahead.js +106 -0
  108. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/parser/traits/parser_traits.js +5 -0
  109. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/parser/traits/perf_tracer.js +51 -0
  110. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/parser/traits/recognizer_api.js +341 -0
  111. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/parser/traits/recognizer_engine.js +643 -0
  112. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/parser/traits/recoverable.js +305 -0
  113. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/parse/parser/traits/tree_builder.js +288 -0
  114. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/scan/lexer.js +885 -0
  115. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/scan/lexer_errors_public.js +9 -0
  116. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/scan/lexer_public.js +672 -0
  117. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/scan/reg_exp.js +260 -0
  118. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/scan/reg_exp_parser.js +18 -0
  119. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/scan/tokens.js +114 -0
  120. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/scan/tokens_constants.js +2 -0
  121. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/scan/tokens_public.js +87 -0
  122. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/text/range.js +30 -0
  123. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/utils/utils.js +420 -0
  124. package/packages/css-parser/node_modules/chevrotain/lib_esm/src/version.js +5 -0
  125. package/packages/css-parser/node_modules/chevrotain/package.json +142 -0
  126. package/{test/browser/vendor → packages/less/.grunt/grunt-contrib-jasmine}/boot.js +8 -4
  127. package/packages/less/.grunt/grunt-contrib-jasmine/jasmine-html.js +473 -0
  128. package/packages/less/.grunt/grunt-contrib-jasmine/jasmine.css +58 -0
  129. package/packages/less/.grunt/grunt-contrib-jasmine/jasmine.js +3454 -0
  130. package/packages/less/.grunt/grunt-contrib-jasmine/jasmine_favicon.png +0 -0
  131. package/packages/less/.grunt/grunt-contrib-jasmine/json2.js +489 -0
  132. package/packages/less/.grunt/grunt-contrib-jasmine/reporter.js +132 -0
  133. package/packages/less/node_modules/@types/jasmine/LICENSE +21 -0
  134. package/packages/less/node_modules/@types/jasmine/README.md +16 -0
  135. package/packages/less/node_modules/@types/jasmine/index.d.ts +954 -0
  136. package/packages/less/node_modules/@types/jasmine/package.json +96 -0
  137. package/packages/less/node_modules/@types/jasmine/ts3.1/index.d.ts +980 -0
  138. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/CHANGELOG.md +263 -0
  139. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/LICENSE +21 -0
  140. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/README.md +187 -0
  141. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/configs/all.json +75 -0
  142. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.json +7 -0
  143. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js +54 -0
  144. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js.map +1 -0
  145. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/configs/recommended.json +37 -0
  146. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +19 -0
  147. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/index.js.map +1 -0
  148. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/adjacent-overload-signatures.js +124 -0
  149. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/adjacent-overload-signatures.js.map +1 -0
  150. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/array-type.js +223 -0
  151. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/array-type.js.map +1 -0
  152. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/await-thenable.js +50 -0
  153. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/await-thenable.js.map +1 -0
  154. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/ban-ts-ignore.js +47 -0
  155. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/ban-ts-ignore.js.map +1 -0
  156. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/ban-types.js +113 -0
  157. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/ban-types.js.map +1 -0
  158. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/camelcase.js +109 -0
  159. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/camelcase.js.map +1 -0
  160. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/class-name-casing.js +91 -0
  161. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/class-name-casing.js.map +1 -0
  162. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/consistent-type-definitions.js +86 -0
  163. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/consistent-type-definitions.js.map +1 -0
  164. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/explicit-function-return-type.js +203 -0
  165. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/explicit-function-return-type.js.map +1 -0
  166. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/explicit-member-accessibility.js +150 -0
  167. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/explicit-member-accessibility.js.map +1 -0
  168. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/func-call-spacing.js +135 -0
  169. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/func-call-spacing.js.map +1 -0
  170. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/generic-type-naming.js +52 -0
  171. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/generic-type-naming.js.map +1 -0
  172. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/indent-new-do-not-use/BinarySearchTree.js +54 -0
  173. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/indent-new-do-not-use/BinarySearchTree.js.map +1 -0
  174. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/indent-new-do-not-use/OffsetStorage.js +220 -0
  175. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/indent-new-do-not-use/OffsetStorage.js.map +1 -0
  176. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/indent-new-do-not-use/TokenInfo.js +48 -0
  177. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/indent-new-do-not-use/TokenInfo.js.map +1 -0
  178. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/indent-new-do-not-use/index.js +1138 -0
  179. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/indent-new-do-not-use/index.js.map +1 -0
  180. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/indent.js +386 -0
  181. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/indent.js.map +1 -0
  182. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/index.js +132 -0
  183. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/index.js.map +1 -0
  184. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/interface-name-prefix.js +65 -0
  185. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/interface-name-prefix.js.map +1 -0
  186. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/member-delimiter-style.js +195 -0
  187. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/member-delimiter-style.js.map +1 -0
  188. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/member-naming.js +85 -0
  189. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/member-naming.js.map +1 -0
  190. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/member-ordering.js +320 -0
  191. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/member-ordering.js.map +1 -0
  192. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-angle-bracket-type-assertion.js +41 -0
  193. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-angle-bracket-type-assertion.js.map +1 -0
  194. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-array-constructor.js +58 -0
  195. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-array-constructor.js.map +1 -0
  196. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-empty-function.js +89 -0
  197. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-empty-function.js.map +1 -0
  198. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-empty-interface.js +70 -0
  199. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-empty-interface.js.map +1 -0
  200. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-explicit-any.js +157 -0
  201. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-explicit-any.js.map +1 -0
  202. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-extra-parens.js +152 -0
  203. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-extra-parens.js.map +1 -0
  204. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-extraneous-class.js +107 -0
  205. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-extraneous-class.js.map +1 -0
  206. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-floating-promises.js +135 -0
  207. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-floating-promises.js.map +1 -0
  208. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-for-in-array.js +49 -0
  209. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-for-in-array.js.map +1 -0
  210. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-inferrable-types.js +180 -0
  211. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-inferrable-types.js.map +1 -0
  212. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-magic-numbers.js +147 -0
  213. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-magic-numbers.js.map +1 -0
  214. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-misused-new.js +91 -0
  215. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-misused-new.js.map +1 -0
  216. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-misused-promises.js +209 -0
  217. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-misused-promises.js.map +1 -0
  218. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-namespace.js +63 -0
  219. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-namespace.js.map +1 -0
  220. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-non-null-assertion.js +37 -0
  221. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-non-null-assertion.js.map +1 -0
  222. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-object-literal-type-assertion.js +78 -0
  223. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-object-literal-type-assertion.js.map +1 -0
  224. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-parameter-properties.js +93 -0
  225. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-parameter-properties.js.map +1 -0
  226. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-require-imports.js +43 -0
  227. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-require-imports.js.map +1 -0
  228. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-this-alias.js +71 -0
  229. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-this-alias.js.map +1 -0
  230. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-triple-slash-reference.js +49 -0
  231. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-triple-slash-reference.js.map +1 -0
  232. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-type-alias.js +208 -0
  233. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-type-alias.js.map +1 -0
  234. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-qualifier.js +137 -0
  235. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-qualifier.js.map +1 -0
  236. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-type-assertion.js +225 -0
  237. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-type-assertion.js.map +1 -0
  238. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unused-vars.js +83 -0
  239. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unused-vars.js.map +1 -0
  240. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-use-before-define.js +217 -0
  241. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-use-before-define.js.map +1 -0
  242. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-useless-constructor.js +70 -0
  243. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-useless-constructor.js.map +1 -0
  244. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-var-requires.js +43 -0
  245. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-var-requires.js.map +1 -0
  246. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-for-of.js +166 -0
  247. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-for-of.js.map +1 -0
  248. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-function-type.js +125 -0
  249. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-function-type.js.map +1 -0
  250. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-includes.js +170 -0
  251. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-includes.js.map +1 -0
  252. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-interface.js +58 -0
  253. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-interface.js.map +1 -0
  254. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-namespace-keyword.js +53 -0
  255. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-namespace-keyword.js.map +1 -0
  256. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-readonly.js +236 -0
  257. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-readonly.js.map +1 -0
  258. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-regexp-exec.js +54 -0
  259. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-regexp-exec.js.map +1 -0
  260. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-string-starts-ends-with.js +440 -0
  261. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-string-starts-ends-with.js.map +1 -0
  262. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/promise-function-async.js +113 -0
  263. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/promise-function-async.js.map +1 -0
  264. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/require-array-sort-compare.js +55 -0
  265. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/require-array-sort-compare.js.map +1 -0
  266. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/require-await.js +107 -0
  267. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/require-await.js.map +1 -0
  268. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/restrict-plus-operands.js +107 -0
  269. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/restrict-plus-operands.js.map +1 -0
  270. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/semi.js +66 -0
  271. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/semi.js.map +1 -0
  272. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/strict-boolean-expressions.js +87 -0
  273. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/strict-boolean-expressions.js.map +1 -0
  274. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/triple-slash-reference.js +113 -0
  275. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/triple-slash-reference.js.map +1 -0
  276. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/type-annotation-spacing.js +161 -0
  277. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/type-annotation-spacing.js.map +1 -0
  278. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/unbound-method.js +105 -0
  279. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/unbound-method.js.map +1 -0
  280. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/unified-signatures.js +374 -0
  281. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/rules/unified-signatures.js.map +1 -0
  282. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/util/astUtils.js +4 -0
  283. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/util/astUtils.js.map +1 -0
  284. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/util/createRule.js +7 -0
  285. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/util/createRule.js.map +1 -0
  286. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/util/getParserServices.js +19 -0
  287. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/util/getParserServices.js.map +1 -0
  288. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/util/index.js +17 -0
  289. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/util/index.js.map +1 -0
  290. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/util/misc.js +65 -0
  291. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/util/misc.js.map +1 -0
  292. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/util/types.js +159 -0
  293. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/dist/util/types.js.map +1 -0
  294. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/adjacent-overload-signatures.md +89 -0
  295. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/array-type.md +84 -0
  296. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/await-thenable.md +33 -0
  297. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/ban-ts-ignore.md +37 -0
  298. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/ban-types.md +75 -0
  299. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/camelcase.md +202 -0
  300. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/class-name-casing.md +40 -0
  301. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-definitions.md +74 -0
  302. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/explicit-function-return-type.md +179 -0
  303. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/explicit-member-accessibility.md +261 -0
  304. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/func-call-spacing.md +26 -0
  305. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/generic-type-naming.md +42 -0
  306. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/indent.md +713 -0
  307. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/interface-name-prefix.md +65 -0
  308. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/member-delimiter-style.md +194 -0
  309. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/member-naming.md +41 -0
  310. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/member-ordering.md +649 -0
  311. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-angle-bracket-type-assertion.md +32 -0
  312. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-array-constructor.md +34 -0
  313. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-empty-function.md +47 -0
  314. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-empty-interface.md +64 -0
  315. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-explicit-any.md +165 -0
  316. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extra-parens.md +22 -0
  317. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extraneous-class.md +64 -0
  318. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-floating-promises.md +46 -0
  319. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-for-in-array.md +44 -0
  320. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-inferrable-types.md +146 -0
  321. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-magic-numbers.md +68 -0
  322. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-misused-new.md +41 -0
  323. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-misused-promises.md +119 -0
  324. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-namespace.md +107 -0
  325. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-non-null-assertion.md +35 -0
  326. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-object-literal-type-assertion.md +33 -0
  327. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-parameter-properties.md +367 -0
  328. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-require-imports.md +34 -0
  329. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-this-alias.md +60 -0
  330. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-triple-slash-reference.md +43 -0
  331. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-type-alias.md +467 -0
  332. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-qualifier.md +79 -0
  333. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-type-assertion.md +69 -0
  334. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unused-vars.md +305 -0
  335. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-use-before-define.md +171 -0
  336. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-useless-constructor.md +78 -0
  337. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-var-requires.md +28 -0
  338. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-for-of.md +41 -0
  339. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-function-type.md +57 -0
  340. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-includes.md +71 -0
  341. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-interface.md +36 -0
  342. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-namespace-keyword.md +22 -0
  343. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-readonly.md +81 -0
  344. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-regexp-exec.md +53 -0
  345. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-string-starts-ends-with.md +54 -0
  346. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/promise-function-async.md +67 -0
  347. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/require-array-sort-compare.md +50 -0
  348. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/require-await.md +49 -0
  349. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/restrict-plus-operands.md +27 -0
  350. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/semi.md +28 -0
  351. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/strict-boolean-expressions.md +57 -0
  352. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/triple-slash-reference.md +58 -0
  353. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/type-annotation-spacing.md +289 -0
  354. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/unbound-method.md +92 -0
  355. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/docs/rules/unified-signatures.md +33 -0
  356. package/packages/less/node_modules/@typescript-eslint/eslint-plugin/package.json +60 -0
  357. package/packages/less/node_modules/@typescript-eslint/parser/CHANGELOG.md +150 -0
  358. package/packages/less/node_modules/@typescript-eslint/parser/LICENSE +22 -0
  359. package/packages/less/node_modules/@typescript-eslint/parser/README.md +88 -0
  360. package/packages/less/node_modules/@typescript-eslint/parser/dist/analyze-scope.d.ts +4 -0
  361. package/packages/less/node_modules/@typescript-eslint/parser/dist/analyze-scope.d.ts.map +1 -0
  362. package/packages/less/node_modules/@typescript-eslint/parser/dist/analyze-scope.js +663 -0
  363. package/packages/less/node_modules/@typescript-eslint/parser/dist/analyze-scope.js.map +1 -0
  364. package/packages/less/node_modules/@typescript-eslint/parser/dist/parser-options.d.ts +3 -0
  365. package/packages/less/node_modules/@typescript-eslint/parser/dist/parser-options.d.ts.map +1 -0
  366. package/packages/less/node_modules/@typescript-eslint/parser/dist/parser-options.js +3 -0
  367. package/packages/less/node_modules/@typescript-eslint/parser/dist/parser-options.js.map +1 -0
  368. package/packages/less/node_modules/@typescript-eslint/parser/dist/parser.d.ts +17 -0
  369. package/packages/less/node_modules/@typescript-eslint/parser/dist/parser.d.ts.map +1 -0
  370. package/packages/less/node_modules/@typescript-eslint/parser/dist/parser.js +74 -0
  371. package/packages/less/node_modules/@typescript-eslint/parser/dist/parser.js.map +1 -0
  372. package/packages/less/node_modules/@typescript-eslint/parser/dist/scope/scope-manager.d.ts +14 -0
  373. package/packages/less/node_modules/@typescript-eslint/parser/dist/scope/scope-manager.d.ts.map +1 -0
  374. package/packages/less/node_modules/@typescript-eslint/parser/dist/scope/scope-manager.js +22 -0
  375. package/packages/less/node_modules/@typescript-eslint/parser/dist/scope/scope-manager.js.map +1 -0
  376. package/packages/less/node_modules/@typescript-eslint/parser/dist/scope/scopes.d.ts +11 -0
  377. package/packages/less/node_modules/@typescript-eslint/parser/dist/scope/scopes.d.ts.map +1 -0
  378. package/packages/less/node_modules/@typescript-eslint/parser/dist/scope/scopes.js +18 -0
  379. package/packages/less/node_modules/@typescript-eslint/parser/dist/scope/scopes.js.map +1 -0
  380. package/packages/less/node_modules/@typescript-eslint/parser/dist/simple-traverse.d.ts +7 -0
  381. package/packages/less/node_modules/@typescript-eslint/parser/dist/simple-traverse.d.ts.map +1 -0
  382. package/packages/less/node_modules/@typescript-eslint/parser/dist/simple-traverse.js +42 -0
  383. package/packages/less/node_modules/@typescript-eslint/parser/dist/simple-traverse.js.map +1 -0
  384. package/packages/less/node_modules/@typescript-eslint/parser/dist/visitor-keys.d.ts +3 -0
  385. package/packages/less/node_modules/@typescript-eslint/parser/dist/visitor-keys.d.ts.map +1 -0
  386. package/packages/less/node_modules/@typescript-eslint/parser/dist/visitor-keys.js +129 -0
  387. package/packages/less/node_modules/@typescript-eslint/parser/dist/visitor-keys.js.map +1 -0
  388. package/packages/less/node_modules/@typescript-eslint/parser/package.json +53 -0
  389. package/packages/less/node_modules/acorn/CHANGELOG.md +544 -0
  390. package/packages/less/node_modules/acorn/LICENSE +19 -0
  391. package/packages/less/node_modules/acorn/README.md +269 -0
  392. package/packages/less/node_modules/acorn/bin/acorn +4 -0
  393. package/packages/less/node_modules/acorn/dist/acorn.d.ts +209 -0
  394. package/packages/less/node_modules/acorn/dist/acorn.js +4968 -0
  395. package/packages/less/node_modules/acorn/dist/acorn.js.map +1 -0
  396. package/packages/less/node_modules/acorn/dist/acorn.mjs +4937 -0
  397. package/packages/less/node_modules/acorn/dist/acorn.mjs.map +1 -0
  398. package/packages/less/node_modules/acorn/dist/bin.js +64 -0
  399. package/packages/less/node_modules/acorn/package.json +34 -0
  400. package/packages/less/node_modules/ansi-regex/index.js +10 -0
  401. package/packages/less/node_modules/ansi-regex/license +9 -0
  402. package/packages/less/node_modules/ansi-regex/package.json +53 -0
  403. package/packages/less/node_modules/ansi-regex/readme.md +46 -0
  404. package/packages/less/node_modules/chevrotain/CHANGELOG.md +2 -0
  405. package/packages/less/node_modules/chevrotain/LICENSE.txt +202 -0
  406. package/packages/less/node_modules/chevrotain/README.md +20 -0
  407. package/packages/less/node_modules/chevrotain/diagrams/README.md +1 -0
  408. package/packages/less/node_modules/chevrotain/diagrams/diagrams.css +85 -0
  409. package/packages/less/node_modules/chevrotain/diagrams/src/diagrams_behavior.js +225 -0
  410. package/packages/less/node_modules/chevrotain/diagrams/src/diagrams_builder.js +211 -0
  411. package/packages/less/node_modules/chevrotain/diagrams/src/diagrams_serializer.js +20 -0
  412. package/packages/less/node_modules/chevrotain/diagrams/src/main.js +38 -0
  413. package/packages/less/node_modules/chevrotain/diagrams/vendor/railroad-diagrams.js +1042 -0
  414. package/packages/less/node_modules/chevrotain/lib/chevrotain.d.ts +2961 -0
  415. package/packages/less/node_modules/chevrotain/lib/chevrotain.js +9785 -0
  416. package/packages/less/node_modules/chevrotain/lib/chevrotain.min.js +2 -0
  417. package/packages/less/node_modules/chevrotain/lib/src/api.js +70 -0
  418. package/packages/less/node_modules/chevrotain/lib/src/diagrams/render_public.js +15 -0
  419. package/packages/less/node_modules/chevrotain/lib/src/generate/generate.js +142 -0
  420. package/packages/less/node_modules/chevrotain/lib/src/generate/generate_public.js +21 -0
  421. package/packages/less/node_modules/chevrotain/lib/src/lang/lang_extensions.js +42 -0
  422. package/packages/less/node_modules/chevrotain/lib/src/parse/constants.js +5 -0
  423. package/packages/less/node_modules/chevrotain/lib/src/parse/cst/cst.js +194 -0
  424. package/packages/less/node_modules/chevrotain/lib/src/parse/cst/cst_visitor.js +129 -0
  425. package/packages/less/node_modules/chevrotain/lib/src/parse/errors_public.js +205 -0
  426. package/packages/less/node_modules/chevrotain/lib/src/parse/exceptions_public.js +58 -0
  427. package/packages/less/node_modules/chevrotain/lib/src/parse/grammar/checks.js +590 -0
  428. package/packages/less/node_modules/chevrotain/lib/src/parse/grammar/first.js +63 -0
  429. package/packages/less/node_modules/chevrotain/lib/src/parse/grammar/follow.js +67 -0
  430. package/packages/less/node_modules/chevrotain/lib/src/parse/grammar/gast/gast.js +170 -0
  431. package/packages/less/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_public.js +262 -0
  432. package/packages/less/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_resolver_public.js +39 -0
  433. package/packages/less/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_visitor_public.js +48 -0
  434. package/packages/less/node_modules/chevrotain/lib/src/parse/grammar/interpreter.js +548 -0
  435. package/packages/less/node_modules/chevrotain/lib/src/parse/grammar/keys.js +42 -0
  436. package/packages/less/node_modules/chevrotain/lib/src/parse/grammar/lookahead.js +502 -0
  437. package/packages/less/node_modules/chevrotain/lib/src/parse/grammar/resolver.js +59 -0
  438. package/packages/less/node_modules/chevrotain/lib/src/parse/grammar/rest.js +112 -0
  439. package/packages/less/node_modules/chevrotain/lib/src/parse/parser/parser.js +235 -0
  440. package/packages/less/node_modules/chevrotain/lib/src/parse/parser/traits/context_assist.js +28 -0
  441. package/packages/less/node_modules/chevrotain/lib/src/parse/parser/traits/error_handler.js +83 -0
  442. package/packages/less/node_modules/chevrotain/lib/src/parse/parser/traits/gast_recorder.js +318 -0
  443. package/packages/less/node_modules/chevrotain/lib/src/parse/parser/traits/lexer_adapter.js +76 -0
  444. package/packages/less/node_modules/chevrotain/lib/src/parse/parser/traits/looksahead.js +108 -0
  445. package/packages/less/node_modules/chevrotain/lib/src/parse/parser/traits/parser_traits.js +7 -0
  446. package/packages/less/node_modules/chevrotain/lib/src/parse/parser/traits/perf_tracer.js +53 -0
  447. package/packages/less/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_api.js +343 -0
  448. package/packages/less/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js +645 -0
  449. package/packages/less/node_modules/chevrotain/lib/src/parse/parser/traits/recoverable.js +309 -0
  450. package/packages/less/node_modules/chevrotain/lib/src/parse/parser/traits/tree_builder.js +290 -0
  451. package/packages/less/node_modules/chevrotain/lib/src/scan/lexer.js +910 -0
  452. package/packages/less/node_modules/chevrotain/lib/src/scan/lexer_errors_public.js +11 -0
  453. package/packages/less/node_modules/chevrotain/lib/src/scan/lexer_public.js +674 -0
  454. package/packages/less/node_modules/chevrotain/lib/src/scan/reg_exp.js +265 -0
  455. package/packages/less/node_modules/chevrotain/lib/src/scan/reg_exp_parser.js +22 -0
  456. package/packages/less/node_modules/chevrotain/lib/src/scan/tokens.js +129 -0
  457. package/packages/less/node_modules/chevrotain/lib/src/scan/tokens_constants.js +4 -0
  458. package/packages/less/node_modules/chevrotain/lib/src/scan/tokens_public.js +95 -0
  459. package/packages/less/node_modules/chevrotain/lib/src/text/range.js +33 -0
  460. package/packages/less/node_modules/chevrotain/lib/src/utils/utils.js +473 -0
  461. package/packages/less/node_modules/chevrotain/lib/src/version.js +7 -0
  462. package/packages/less/node_modules/chevrotain/lib_esm/src/api.js +25 -0
  463. package/packages/less/node_modules/chevrotain/lib_esm/src/diagrams/render_public.js +12 -0
  464. package/packages/less/node_modules/chevrotain/lib_esm/src/generate/generate.js +131 -0
  465. package/packages/less/node_modules/chevrotain/lib_esm/src/generate/generate_public.js +17 -0
  466. package/packages/less/node_modules/chevrotain/lib_esm/src/lang/lang_extensions.js +37 -0
  467. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/constants.js +3 -0
  468. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/cst/cst.js +187 -0
  469. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/cst/cst_visitor.js +121 -0
  470. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/errors_public.js +203 -0
  471. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/exceptions_public.js +51 -0
  472. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/grammar/checks.js +574 -0
  473. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/grammar/first.js +57 -0
  474. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/grammar/follow.js +62 -0
  475. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast.js +163 -0
  476. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast_public.js +258 -0
  477. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast_resolver_public.js +34 -0
  478. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast_visitor_public.js +46 -0
  479. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/grammar/interpreter.js +544 -0
  480. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/grammar/keys.js +38 -0
  481. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/grammar/lookahead.js +489 -0
  482. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/grammar/resolver.js +56 -0
  483. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/grammar/rest.js +110 -0
  484. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/parser/parser.js +232 -0
  485. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/parser/traits/context_assist.js +26 -0
  486. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/parser/traits/error_handler.js +81 -0
  487. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/parser/traits/gast_recorder.js +316 -0
  488. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/parser/traits/lexer_adapter.js +74 -0
  489. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/parser/traits/looksahead.js +106 -0
  490. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/parser/traits/parser_traits.js +5 -0
  491. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/parser/traits/perf_tracer.js +51 -0
  492. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/parser/traits/recognizer_api.js +341 -0
  493. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/parser/traits/recognizer_engine.js +643 -0
  494. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/parser/traits/recoverable.js +305 -0
  495. package/packages/less/node_modules/chevrotain/lib_esm/src/parse/parser/traits/tree_builder.js +288 -0
  496. package/packages/less/node_modules/chevrotain/lib_esm/src/scan/lexer.js +885 -0
  497. package/packages/less/node_modules/chevrotain/lib_esm/src/scan/lexer_errors_public.js +9 -0
  498. package/packages/less/node_modules/chevrotain/lib_esm/src/scan/lexer_public.js +672 -0
  499. package/packages/less/node_modules/chevrotain/lib_esm/src/scan/reg_exp.js +260 -0
  500. package/packages/less/node_modules/chevrotain/lib_esm/src/scan/reg_exp_parser.js +18 -0
  501. package/packages/less/node_modules/chevrotain/lib_esm/src/scan/tokens.js +114 -0
  502. package/packages/less/node_modules/chevrotain/lib_esm/src/scan/tokens_constants.js +2 -0
  503. package/packages/less/node_modules/chevrotain/lib_esm/src/scan/tokens_public.js +87 -0
  504. package/packages/less/node_modules/chevrotain/lib_esm/src/text/range.js +30 -0
  505. package/packages/less/node_modules/chevrotain/lib_esm/src/utils/utils.js +420 -0
  506. package/packages/less/node_modules/chevrotain/lib_esm/src/version.js +5 -0
  507. package/packages/less/node_modules/chevrotain/package.json +142 -0
  508. package/packages/less/node_modules/debug/CHANGELOG.md +395 -0
  509. package/packages/less/node_modules/debug/LICENSE +19 -0
  510. package/packages/less/node_modules/debug/README.md +455 -0
  511. package/packages/less/node_modules/debug/dist/debug.js +912 -0
  512. package/packages/less/node_modules/debug/package.json +63 -0
  513. package/packages/less/node_modules/debug/src/browser.js +264 -0
  514. package/packages/less/node_modules/debug/src/common.js +266 -0
  515. package/packages/less/node_modules/debug/src/index.js +10 -0
  516. package/packages/less/node_modules/debug/src/node.js +257 -0
  517. package/packages/less/node_modules/eslint/CHANGELOG.md +5110 -0
  518. package/packages/less/node_modules/eslint/LICENSE +19 -0
  519. package/packages/less/node_modules/eslint/README.md +293 -0
  520. package/packages/less/node_modules/eslint/bin/eslint.js +79 -0
  521. package/packages/less/node_modules/eslint/conf/category-list.json +40 -0
  522. package/packages/less/node_modules/eslint/conf/config-schema.js +70 -0
  523. package/packages/less/node_modules/eslint/conf/default-cli-options.js +31 -0
  524. package/packages/less/node_modules/eslint/conf/environments.js +109 -0
  525. package/packages/less/node_modules/eslint/conf/eslint-all.js +29 -0
  526. package/packages/less/node_modules/eslint/conf/eslint-recommended.js +15 -0
  527. package/packages/less/node_modules/eslint/conf/replacements.json +22 -0
  528. package/packages/less/node_modules/eslint/lib/api.js +28 -0
  529. package/packages/less/node_modules/eslint/lib/built-in-rules-index.js +278 -0
  530. package/packages/less/node_modules/eslint/lib/cli-engine.js +796 -0
  531. package/packages/less/node_modules/eslint/lib/cli.js +235 -0
  532. package/packages/less/node_modules/eslint/lib/code-path-analysis/code-path-analyzer.js +683 -0
  533. package/packages/less/node_modules/eslint/lib/code-path-analysis/code-path-segment.js +245 -0
  534. package/packages/less/node_modules/eslint/lib/code-path-analysis/code-path-state.js +1440 -0
  535. package/packages/less/node_modules/eslint/lib/code-path-analysis/code-path.js +239 -0
  536. package/packages/less/node_modules/eslint/lib/code-path-analysis/debug-helpers.js +200 -0
  537. package/packages/less/node_modules/eslint/lib/code-path-analysis/fork-context.js +260 -0
  538. package/packages/less/node_modules/eslint/lib/code-path-analysis/id-generator.js +46 -0
  539. package/packages/less/node_modules/eslint/lib/config/autoconfig.js +358 -0
  540. package/packages/less/node_modules/eslint/lib/config/config-cache.js +130 -0
  541. package/packages/less/node_modules/eslint/lib/config/config-file.js +640 -0
  542. package/packages/less/node_modules/eslint/lib/config/config-initializer.js +654 -0
  543. package/packages/less/node_modules/eslint/lib/config/config-ops.js +404 -0
  544. package/packages/less/node_modules/eslint/lib/config/config-rule.js +319 -0
  545. package/packages/less/node_modules/eslint/lib/config/config-validator.js +279 -0
  546. package/packages/less/node_modules/eslint/lib/config/environments.js +84 -0
  547. package/packages/less/node_modules/eslint/lib/config/plugins.js +169 -0
  548. package/packages/less/node_modules/eslint/lib/config.js +377 -0
  549. package/packages/less/node_modules/eslint/lib/formatters/checkstyle.js +60 -0
  550. package/packages/less/node_modules/eslint/lib/formatters/codeframe.js +138 -0
  551. package/packages/less/node_modules/eslint/lib/formatters/compact.js +60 -0
  552. package/packages/less/node_modules/eslint/lib/formatters/html-template-message.html +8 -0
  553. package/packages/less/node_modules/eslint/lib/formatters/html-template-page.html +115 -0
  554. package/packages/less/node_modules/eslint/lib/formatters/html-template-result.html +6 -0
  555. package/packages/less/node_modules/eslint/lib/formatters/html.js +139 -0
  556. package/packages/less/node_modules/eslint/lib/formatters/jslint-xml.js +41 -0
  557. package/packages/less/node_modules/eslint/lib/formatters/json-with-metadata.js +16 -0
  558. package/packages/less/node_modules/eslint/lib/formatters/json.js +13 -0
  559. package/packages/less/node_modules/eslint/lib/formatters/junit.js +70 -0
  560. package/packages/less/node_modules/eslint/lib/formatters/stylish.js +100 -0
  561. package/packages/less/node_modules/eslint/lib/formatters/table.js +159 -0
  562. package/packages/less/node_modules/eslint/lib/formatters/tap.js +95 -0
  563. package/packages/less/node_modules/eslint/lib/formatters/unix.js +58 -0
  564. package/packages/less/node_modules/eslint/lib/formatters/visualstudio.js +63 -0
  565. package/packages/less/node_modules/eslint/lib/linter.js +1085 -0
  566. package/packages/less/node_modules/eslint/lib/load-rules.js +46 -0
  567. package/packages/less/node_modules/eslint/lib/options.js +246 -0
  568. package/packages/less/node_modules/eslint/lib/rules/accessor-pairs.js +167 -0
  569. package/packages/less/node_modules/eslint/lib/rules/array-bracket-newline.js +261 -0
  570. package/packages/less/node_modules/eslint/lib/rules/array-bracket-spacing.js +241 -0
  571. package/packages/less/node_modules/eslint/lib/rules/array-callback-return.js +258 -0
  572. package/packages/less/node_modules/eslint/lib/rules/array-element-newline.js +262 -0
  573. package/packages/less/node_modules/eslint/lib/rules/arrow-body-style.js +240 -0
  574. package/packages/less/node_modules/eslint/lib/rules/arrow-parens.js +164 -0
  575. package/packages/less/node_modules/eslint/lib/rules/arrow-spacing.js +161 -0
  576. package/packages/less/node_modules/eslint/lib/rules/block-scoped-var.js +122 -0
  577. package/packages/less/node_modules/eslint/lib/rules/block-spacing.js +147 -0
  578. package/packages/less/node_modules/eslint/lib/rules/brace-style.js +188 -0
  579. package/packages/less/node_modules/eslint/lib/rules/callback-return.js +182 -0
  580. package/packages/less/node_modules/eslint/lib/rules/camelcase.js +228 -0
  581. package/packages/less/node_modules/eslint/lib/rules/capitalized-comments.js +307 -0
  582. package/packages/less/node_modules/eslint/lib/rules/class-methods-use-this.js +118 -0
  583. package/packages/less/node_modules/eslint/lib/rules/comma-dangle.js +345 -0
  584. package/packages/less/node_modules/eslint/lib/rules/comma-spacing.js +195 -0
  585. package/packages/less/node_modules/eslint/lib/rules/comma-style.js +315 -0
  586. package/packages/less/node_modules/eslint/lib/rules/complexity.js +160 -0
  587. package/packages/less/node_modules/eslint/lib/rules/computed-property-spacing.js +187 -0
  588. package/packages/less/node_modules/eslint/lib/rules/consistent-return.js +197 -0
  589. package/packages/less/node_modules/eslint/lib/rules/consistent-this.js +151 -0
  590. package/packages/less/node_modules/eslint/lib/rules/constructor-super.js +397 -0
  591. package/packages/less/node_modules/eslint/lib/rules/curly.js +382 -0
  592. package/packages/less/node_modules/eslint/lib/rules/default-case.js +97 -0
  593. package/packages/less/node_modules/eslint/lib/rules/dot-location.js +96 -0
  594. package/packages/less/node_modules/eslint/lib/rules/dot-notation.js +169 -0
  595. package/packages/less/node_modules/eslint/lib/rules/eol-last.js +112 -0
  596. package/packages/less/node_modules/eslint/lib/rules/eqeqeq.js +186 -0
  597. package/packages/less/node_modules/eslint/lib/rules/for-direction.js +126 -0
  598. package/packages/less/node_modules/eslint/lib/rules/func-call-spacing.js +168 -0
  599. package/packages/less/node_modules/eslint/lib/rules/func-name-matching.js +251 -0
  600. package/packages/less/node_modules/eslint/lib/rules/func-names.js +179 -0
  601. package/packages/less/node_modules/eslint/lib/rules/func-style.js +98 -0
  602. package/packages/less/node_modules/eslint/lib/rules/function-paren-newline.js +233 -0
  603. package/packages/less/node_modules/eslint/lib/rules/generator-star-spacing.js +211 -0
  604. package/packages/less/node_modules/eslint/lib/rules/getter-return.js +186 -0
  605. package/packages/less/node_modules/eslint/lib/rules/global-require.js +81 -0
  606. package/packages/less/node_modules/eslint/lib/rules/guard-for-in.js +76 -0
  607. package/packages/less/node_modules/eslint/lib/rules/handle-callback-err.js +95 -0
  608. package/packages/less/node_modules/eslint/lib/rules/id-blacklist.js +127 -0
  609. package/packages/less/node_modules/eslint/lib/rules/id-length.js +122 -0
  610. package/packages/less/node_modules/eslint/lib/rules/id-match.js +225 -0
  611. package/packages/less/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js +81 -0
  612. package/packages/less/node_modules/eslint/lib/rules/indent-legacy.js +1141 -0
  613. package/packages/less/node_modules/eslint/lib/rules/indent.js +1608 -0
  614. package/packages/less/node_modules/eslint/lib/rules/init-declarations.js +139 -0
  615. package/packages/less/node_modules/eslint/lib/rules/jsx-quotes.js +95 -0
  616. package/packages/less/node_modules/eslint/lib/rules/key-spacing.js +652 -0
  617. package/packages/less/node_modules/eslint/lib/rules/keyword-spacing.js +590 -0
  618. package/packages/less/node_modules/eslint/lib/rules/line-comment-position.js +123 -0
  619. package/packages/less/node_modules/eslint/lib/rules/linebreak-style.js +99 -0
  620. package/packages/less/node_modules/eslint/lib/rules/lines-around-comment.js +404 -0
  621. package/packages/less/node_modules/eslint/lib/rules/lines-around-directive.js +201 -0
  622. package/packages/less/node_modules/eslint/lib/rules/lines-between-class-members.js +144 -0
  623. package/packages/less/node_modules/eslint/lib/rules/max-classes-per-file.js +64 -0
  624. package/packages/less/node_modules/eslint/lib/rules/max-depth.js +154 -0
  625. package/packages/less/node_modules/eslint/lib/rules/max-len.js +386 -0
  626. package/packages/less/node_modules/eslint/lib/rules/max-lines-per-function.js +219 -0
  627. package/packages/less/node_modules/eslint/lib/rules/max-lines.js +148 -0
  628. package/packages/less/node_modules/eslint/lib/rules/max-nested-callbacks.js +117 -0
  629. package/packages/less/node_modules/eslint/lib/rules/max-params.js +103 -0
  630. package/packages/less/node_modules/eslint/lib/rules/max-statements-per-line.js +200 -0
  631. package/packages/less/node_modules/eslint/lib/rules/max-statements.js +175 -0
  632. package/packages/less/node_modules/eslint/lib/rules/multiline-comment-style.js +299 -0
  633. package/packages/less/node_modules/eslint/lib/rules/multiline-ternary.js +95 -0
  634. package/packages/less/node_modules/eslint/lib/rules/new-cap.js +282 -0
  635. package/packages/less/node_modules/eslint/lib/rules/new-parens.js +63 -0
  636. package/packages/less/node_modules/eslint/lib/rules/newline-after-var.js +256 -0
  637. package/packages/less/node_modules/eslint/lib/rules/newline-before-return.js +218 -0
  638. package/packages/less/node_modules/eslint/lib/rules/newline-per-chained-call.js +112 -0
  639. package/packages/less/node_modules/eslint/lib/rules/no-alert.js +127 -0
  640. package/packages/less/node_modules/eslint/lib/rules/no-array-constructor.js +54 -0
  641. package/packages/less/node_modules/eslint/lib/rules/no-async-promise-executor.js +39 -0
  642. package/packages/less/node_modules/eslint/lib/rules/no-await-in-loop.js +106 -0
  643. package/packages/less/node_modules/eslint/lib/rules/no-bitwise.js +119 -0
  644. package/packages/less/node_modules/eslint/lib/rules/no-buffer-constructor.js +45 -0
  645. package/packages/less/node_modules/eslint/lib/rules/no-caller.js +46 -0
  646. package/packages/less/node_modules/eslint/lib/rules/no-case-declarations.js +64 -0
  647. package/packages/less/node_modules/eslint/lib/rules/no-catch-shadow.js +80 -0
  648. package/packages/less/node_modules/eslint/lib/rules/no-class-assign.js +61 -0
  649. package/packages/less/node_modules/eslint/lib/rules/no-compare-neg-zero.js +61 -0
  650. package/packages/less/node_modules/eslint/lib/rules/no-cond-assign.js +149 -0
  651. package/packages/less/node_modules/eslint/lib/rules/no-confusing-arrow.js +83 -0
  652. package/packages/less/node_modules/eslint/lib/rules/no-console.js +138 -0
  653. package/packages/less/node_modules/eslint/lib/rules/no-const-assign.js +54 -0
  654. package/packages/less/node_modules/eslint/lib/rules/no-constant-condition.js +239 -0
  655. package/packages/less/node_modules/eslint/lib/rules/no-continue.js +39 -0
  656. package/packages/less/node_modules/eslint/lib/rules/no-control-regex.js +113 -0
  657. package/packages/less/node_modules/eslint/lib/rules/no-debugger.js +43 -0
  658. package/packages/less/node_modules/eslint/lib/rules/no-delete-var.js +42 -0
  659. package/packages/less/node_modules/eslint/lib/rules/no-div-regex.js +45 -0
  660. package/packages/less/node_modules/eslint/lib/rules/no-dupe-args.js +80 -0
  661. package/packages/less/node_modules/eslint/lib/rules/no-dupe-class-members.js +116 -0
  662. package/packages/less/node_modules/eslint/lib/rules/no-dupe-keys.js +142 -0
  663. package/packages/less/node_modules/eslint/lib/rules/no-duplicate-case.js +50 -0
  664. package/packages/less/node_modules/eslint/lib/rules/no-duplicate-imports.js +146 -0
  665. package/packages/less/node_modules/eslint/lib/rules/no-else-return.js +285 -0
  666. package/packages/less/node_modules/eslint/lib/rules/no-empty-character-class.js +64 -0
  667. package/packages/less/node_modules/eslint/lib/rules/no-empty-function.js +167 -0
  668. package/packages/less/node_modules/eslint/lib/rules/no-empty-pattern.js +43 -0
  669. package/packages/less/node_modules/eslint/lib/rules/no-empty.js +86 -0
  670. package/packages/less/node_modules/eslint/lib/rules/no-eq-null.js +46 -0
  671. package/packages/less/node_modules/eslint/lib/rules/no-eval.js +314 -0
  672. package/packages/less/node_modules/eslint/lib/rules/no-ex-assign.js +52 -0
  673. package/packages/less/node_modules/eslint/lib/rules/no-extend-native.js +181 -0
  674. package/packages/less/node_modules/eslint/lib/rules/no-extra-bind.js +173 -0
  675. package/packages/less/node_modules/eslint/lib/rules/no-extra-boolean-cast.js +129 -0
  676. package/packages/less/node_modules/eslint/lib/rules/no-extra-label.js +146 -0
  677. package/packages/less/node_modules/eslint/lib/rules/no-extra-parens.js +756 -0
  678. package/packages/less/node_modules/eslint/lib/rules/no-extra-semi.js +127 -0
  679. package/packages/less/node_modules/eslint/lib/rules/no-fallthrough.js +142 -0
  680. package/packages/less/node_modules/eslint/lib/rules/no-floating-decimal.js +70 -0
  681. package/packages/less/node_modules/eslint/lib/rules/no-func-assign.js +66 -0
  682. package/packages/less/node_modules/eslint/lib/rules/no-global-assign.js +88 -0
  683. package/packages/less/node_modules/eslint/lib/rules/no-implicit-coercion.js +296 -0
  684. package/packages/less/node_modules/eslint/lib/rules/no-implicit-globals.js +58 -0
  685. package/packages/less/node_modules/eslint/lib/rules/no-implied-eval.js +164 -0
  686. package/packages/less/node_modules/eslint/lib/rules/no-inline-comments.js +68 -0
  687. package/packages/less/node_modules/eslint/lib/rules/no-inner-declarations.js +92 -0
  688. package/packages/less/node_modules/eslint/lib/rules/no-invalid-regexp.js +126 -0
  689. package/packages/less/node_modules/eslint/lib/rules/no-invalid-this.js +126 -0
  690. package/packages/less/node_modules/eslint/lib/rules/no-irregular-whitespace.js +239 -0
  691. package/packages/less/node_modules/eslint/lib/rules/no-iterator.js +41 -0
  692. package/packages/less/node_modules/eslint/lib/rules/no-label-var.js +72 -0
  693. package/packages/less/node_modules/eslint/lib/rules/no-labels.js +146 -0
  694. package/packages/less/node_modules/eslint/lib/rules/no-lone-blocks.js +115 -0
  695. package/packages/less/node_modules/eslint/lib/rules/no-lonely-if.js +85 -0
  696. package/packages/less/node_modules/eslint/lib/rules/no-loop-func.js +202 -0
  697. package/packages/less/node_modules/eslint/lib/rules/no-magic-numbers.js +167 -0
  698. package/packages/less/node_modules/eslint/lib/rules/no-misleading-character-class.js +193 -0
  699. package/packages/less/node_modules/eslint/lib/rules/no-mixed-operators.js +214 -0
  700. package/packages/less/node_modules/eslint/lib/rules/no-mixed-requires.js +223 -0
  701. package/packages/less/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js +146 -0
  702. package/packages/less/node_modules/eslint/lib/rules/no-multi-assign.js +45 -0
  703. package/packages/less/node_modules/eslint/lib/rules/no-multi-spaces.js +134 -0
  704. package/packages/less/node_modules/eslint/lib/rules/no-multi-str.js +58 -0
  705. package/packages/less/node_modules/eslint/lib/rules/no-multiple-empty-lines.js +139 -0
  706. package/packages/less/node_modules/eslint/lib/rules/no-native-reassign.js +93 -0
  707. package/packages/less/node_modules/eslint/lib/rules/no-negated-condition.js +85 -0
  708. package/packages/less/node_modules/eslint/lib/rules/no-negated-in-lhs.js +42 -0
  709. package/packages/less/node_modules/eslint/lib/rules/no-nested-ternary.js +37 -0
  710. package/packages/less/node_modules/eslint/lib/rules/no-new-func.js +48 -0
  711. package/packages/less/node_modules/eslint/lib/rules/no-new-object.js +38 -0
  712. package/packages/less/node_modules/eslint/lib/rules/no-new-require.js +38 -0
  713. package/packages/less/node_modules/eslint/lib/rules/no-new-symbol.js +46 -0
  714. package/packages/less/node_modules/eslint/lib/rules/no-new-wrappers.js +40 -0
  715. package/packages/less/node_modules/eslint/lib/rules/no-new.js +36 -0
  716. package/packages/less/node_modules/eslint/lib/rules/no-obj-calls.js +42 -0
  717. package/packages/less/node_modules/eslint/lib/rules/no-octal-escape.js +50 -0
  718. package/packages/less/node_modules/eslint/lib/rules/no-octal.js +38 -0
  719. package/packages/less/node_modules/eslint/lib/rules/no-param-reassign.js +184 -0
  720. package/packages/less/node_modules/eslint/lib/rules/no-path-concat.js +52 -0
  721. package/packages/less/node_modules/eslint/lib/rules/no-plusplus.js +65 -0
  722. package/packages/less/node_modules/eslint/lib/rules/no-process-env.js +42 -0
  723. package/packages/less/node_modules/eslint/lib/rules/no-process-exit.js +38 -0
  724. package/packages/less/node_modules/eslint/lib/rules/no-proto.js +41 -0
  725. package/packages/less/node_modules/eslint/lib/rules/no-prototype-builtins.js +57 -0
  726. package/packages/less/node_modules/eslint/lib/rules/no-redeclare.js +104 -0
  727. package/packages/less/node_modules/eslint/lib/rules/no-regex-spaces.js +116 -0
  728. package/packages/less/node_modules/eslint/lib/rules/no-restricted-globals.js +123 -0
  729. package/packages/less/node_modules/eslint/lib/rules/no-restricted-imports.js +282 -0
  730. package/packages/less/node_modules/eslint/lib/rules/no-restricted-modules.js +180 -0
  731. package/packages/less/node_modules/eslint/lib/rules/no-restricted-properties.js +176 -0
  732. package/packages/less/node_modules/eslint/lib/rules/no-restricted-syntax.js +65 -0
  733. package/packages/less/node_modules/eslint/lib/rules/no-return-assign.js +75 -0
  734. package/packages/less/node_modules/eslint/lib/rules/no-return-await.js +101 -0
  735. package/packages/less/node_modules/eslint/lib/rules/no-script-url.js +44 -0
  736. package/packages/less/node_modules/eslint/lib/rules/no-self-assign.js +219 -0
  737. package/packages/less/node_modules/eslint/lib/rules/no-self-compare.js +56 -0
  738. package/packages/less/node_modules/eslint/lib/rules/no-sequences.js +115 -0
  739. package/packages/less/node_modules/eslint/lib/rules/no-shadow-restricted-names.js +60 -0
  740. package/packages/less/node_modules/eslint/lib/rules/no-shadow.js +191 -0
  741. package/packages/less/node_modules/eslint/lib/rules/no-spaced-func.js +79 -0
  742. package/packages/less/node_modules/eslint/lib/rules/no-sparse-arrays.js +46 -0
  743. package/packages/less/node_modules/eslint/lib/rules/no-sync.js +57 -0
  744. package/packages/less/node_modules/eslint/lib/rules/no-tabs.js +68 -0
  745. package/packages/less/node_modules/eslint/lib/rules/no-template-curly-in-string.js +40 -0
  746. package/packages/less/node_modules/eslint/lib/rules/no-ternary.js +37 -0
  747. package/packages/less/node_modules/eslint/lib/rules/no-this-before-super.js +301 -0
  748. package/packages/less/node_modules/eslint/lib/rules/no-throw-literal.js +46 -0
  749. package/packages/less/node_modules/eslint/lib/rules/no-trailing-spaces.js +174 -0
  750. package/packages/less/node_modules/eslint/lib/rules/no-undef-init.js +65 -0
  751. package/packages/less/node_modules/eslint/lib/rules/no-undef.js +78 -0
  752. package/packages/less/node_modules/eslint/lib/rules/no-undefined.js +80 -0
  753. package/packages/less/node_modules/eslint/lib/rules/no-underscore-dangle.js +209 -0
  754. package/packages/less/node_modules/eslint/lib/rules/no-unexpected-multiline.js +102 -0
  755. package/packages/less/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js +369 -0
  756. package/packages/less/node_modules/eslint/lib/rules/no-unneeded-ternary.js +159 -0
  757. package/packages/less/node_modules/eslint/lib/rules/no-unreachable.js +214 -0
  758. package/packages/less/node_modules/eslint/lib/rules/no-unsafe-finally.js +110 -0
  759. package/packages/less/node_modules/eslint/lib/rules/no-unsafe-negation.js +87 -0
  760. package/packages/less/node_modules/eslint/lib/rules/no-unused-expressions.js +132 -0
  761. package/packages/less/node_modules/eslint/lib/rules/no-unused-labels.js +113 -0
  762. package/packages/less/node_modules/eslint/lib/rules/no-unused-vars.js +656 -0
  763. package/packages/less/node_modules/eslint/lib/rules/no-use-before-define.js +234 -0
  764. package/packages/less/node_modules/eslint/lib/rules/no-useless-call.js +83 -0
  765. package/packages/less/node_modules/eslint/lib/rules/no-useless-catch.js +52 -0
  766. package/packages/less/node_modules/eslint/lib/rules/no-useless-computed-key.js +77 -0
  767. package/packages/less/node_modules/eslint/lib/rules/no-useless-concat.js +111 -0
  768. package/packages/less/node_modules/eslint/lib/rules/no-useless-constructor.js +185 -0
  769. package/packages/less/node_modules/eslint/lib/rules/no-useless-escape.js +226 -0
  770. package/packages/less/node_modules/eslint/lib/rules/no-useless-rename.js +152 -0
  771. package/packages/less/node_modules/eslint/lib/rules/no-useless-return.js +300 -0
  772. package/packages/less/node_modules/eslint/lib/rules/no-var.js +331 -0
  773. package/packages/less/node_modules/eslint/lib/rules/no-void.js +40 -0
  774. package/packages/less/node_modules/eslint/lib/rules/no-warning-comments.js +159 -0
  775. package/packages/less/node_modules/eslint/lib/rules/no-whitespace-before-property.js +97 -0
  776. package/packages/less/node_modules/eslint/lib/rules/no-with.js +35 -0
  777. package/packages/less/node_modules/eslint/lib/rules/nonblock-statement-body-position.js +119 -0
  778. package/packages/less/node_modules/eslint/lib/rules/object-curly-newline.js +302 -0
  779. package/packages/less/node_modules/eslint/lib/rules/object-curly-spacing.js +302 -0
  780. package/packages/less/node_modules/eslint/lib/rules/object-property-newline.js +94 -0
  781. package/packages/less/node_modules/eslint/lib/rules/object-shorthand.js +463 -0
  782. package/packages/less/node_modules/eslint/lib/rules/one-var-declaration-per-line.js +89 -0
  783. package/packages/less/node_modules/eslint/lib/rules/one-var.js +526 -0
  784. package/packages/less/node_modules/eslint/lib/rules/operator-assignment.js +213 -0
  785. package/packages/less/node_modules/eslint/lib/rules/operator-linebreak.js +255 -0
  786. package/packages/less/node_modules/eslint/lib/rules/padded-blocks.js +282 -0
  787. package/packages/less/node_modules/eslint/lib/rules/padding-line-between-statements.js +643 -0
  788. package/packages/less/node_modules/eslint/lib/rules/prefer-arrow-callback.js +310 -0
  789. package/packages/less/node_modules/eslint/lib/rules/prefer-const.js +471 -0
  790. package/packages/less/node_modules/eslint/lib/rules/prefer-destructuring.js +274 -0
  791. package/packages/less/node_modules/eslint/lib/rules/prefer-named-capture-group.js +123 -0
  792. package/packages/less/node_modules/eslint/lib/rules/prefer-numeric-literals.js +114 -0
  793. package/packages/less/node_modules/eslint/lib/rules/prefer-object-spread.js +265 -0
  794. package/packages/less/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js +129 -0
  795. package/packages/less/node_modules/eslint/lib/rules/prefer-reflect.js +123 -0
  796. package/packages/less/node_modules/eslint/lib/rules/prefer-rest-params.js +114 -0
  797. package/packages/less/node_modules/eslint/lib/rules/prefer-spread.js +87 -0
  798. package/packages/less/node_modules/eslint/lib/rules/prefer-template.js +289 -0
  799. package/packages/less/node_modules/eslint/lib/rules/quote-props.js +301 -0
  800. package/packages/less/node_modules/eslint/lib/rules/quotes.js +323 -0
  801. package/packages/less/node_modules/eslint/lib/rules/radix.js +174 -0
  802. package/packages/less/node_modules/eslint/lib/rules/require-atomic-updates.js +300 -0
  803. package/packages/less/node_modules/eslint/lib/rules/require-await.js +104 -0
  804. package/packages/less/node_modules/eslint/lib/rules/require-jsdoc.js +117 -0
  805. package/packages/less/node_modules/eslint/lib/rules/require-unicode-regexp.js +69 -0
  806. package/packages/less/node_modules/eslint/lib/rules/require-yield.js +74 -0
  807. package/packages/less/node_modules/eslint/lib/rules/rest-spread-spacing.js +118 -0
  808. package/packages/less/node_modules/eslint/lib/rules/semi-spacing.js +212 -0
  809. package/packages/less/node_modules/eslint/lib/rules/semi-style.js +147 -0
  810. package/packages/less/node_modules/eslint/lib/rules/semi.js +328 -0
  811. package/packages/less/node_modules/eslint/lib/rules/sort-imports.js +208 -0
  812. package/packages/less/node_modules/eslint/lib/rules/sort-keys.js +169 -0
  813. package/packages/less/node_modules/eslint/lib/rules/sort-vars.js +100 -0
  814. package/packages/less/node_modules/eslint/lib/rules/space-before-blocks.js +160 -0
  815. package/packages/less/node_modules/eslint/lib/rules/space-before-function-paren.js +145 -0
  816. package/packages/less/node_modules/eslint/lib/rules/space-in-parens.js +276 -0
  817. package/packages/less/node_modules/eslint/lib/rules/space-infix-ops.js +165 -0
  818. package/packages/less/node_modules/eslint/lib/rules/space-unary-ops.js +321 -0
  819. package/packages/less/node_modules/eslint/lib/rules/spaced-comment.js +375 -0
  820. package/packages/less/node_modules/eslint/lib/rules/strict.js +279 -0
  821. package/packages/less/node_modules/eslint/lib/rules/switch-colon-spacing.js +141 -0
  822. package/packages/less/node_modules/eslint/lib/rules/symbol-description.js +72 -0
  823. package/packages/less/node_modules/eslint/lib/rules/template-curly-spacing.js +124 -0
  824. package/packages/less/node_modules/eslint/lib/rules/template-tag-spacing.js +84 -0
  825. package/packages/less/node_modules/eslint/lib/rules/unicode-bom.js +73 -0
  826. package/packages/less/node_modules/eslint/lib/rules/use-isnan.js +40 -0
  827. package/packages/less/node_modules/eslint/lib/rules/valid-jsdoc.js +515 -0
  828. package/packages/less/node_modules/eslint/lib/rules/valid-typeof.js +85 -0
  829. package/packages/less/node_modules/eslint/lib/rules/vars-on-top.js +144 -0
  830. package/packages/less/node_modules/eslint/lib/rules/wrap-iife.js +160 -0
  831. package/packages/less/node_modules/eslint/lib/rules/wrap-regex.js +59 -0
  832. package/packages/less/node_modules/eslint/lib/rules/yield-star-spacing.js +127 -0
  833. package/packages/less/node_modules/eslint/lib/rules/yoda.js +318 -0
  834. package/packages/less/node_modules/eslint/lib/rules.js +110 -0
  835. package/packages/less/node_modules/eslint/lib/testers/rule-tester.js +602 -0
  836. package/packages/less/node_modules/eslint/lib/token-store/backward-token-comment-cursor.js +57 -0
  837. package/packages/less/node_modules/eslint/lib/token-store/backward-token-cursor.js +58 -0
  838. package/packages/less/node_modules/eslint/lib/token-store/cursor.js +76 -0
  839. package/packages/less/node_modules/eslint/lib/token-store/cursors.js +92 -0
  840. package/packages/less/node_modules/eslint/lib/token-store/decorative-cursor.js +39 -0
  841. package/packages/less/node_modules/eslint/lib/token-store/filter-cursor.js +43 -0
  842. package/packages/less/node_modules/eslint/lib/token-store/forward-token-comment-cursor.js +57 -0
  843. package/packages/less/node_modules/eslint/lib/token-store/forward-token-cursor.js +63 -0
  844. package/packages/less/node_modules/eslint/lib/token-store/index.js +633 -0
  845. package/packages/less/node_modules/eslint/lib/token-store/limit-cursor.js +40 -0
  846. package/packages/less/node_modules/eslint/lib/token-store/padded-token-cursor.js +38 -0
  847. package/packages/less/node_modules/eslint/lib/token-store/skip-cursor.js +42 -0
  848. package/packages/less/node_modules/eslint/lib/token-store/utils.js +104 -0
  849. package/packages/less/node_modules/eslint/lib/util/ajv.js +31 -0
  850. package/packages/less/node_modules/eslint/lib/util/apply-disable-directives.js +159 -0
  851. package/packages/less/node_modules/eslint/lib/util/ast-utils.js +1346 -0
  852. package/packages/less/node_modules/eslint/lib/util/config-comment-parser.js +141 -0
  853. package/packages/less/node_modules/eslint/lib/util/file-finder.js +144 -0
  854. package/packages/less/node_modules/eslint/lib/util/fix-tracker.js +120 -0
  855. package/packages/less/node_modules/eslint/lib/util/glob-utils.js +285 -0
  856. package/packages/less/node_modules/eslint/lib/util/glob.js +63 -0
  857. package/packages/less/node_modules/eslint/lib/util/hash.js +35 -0
  858. package/packages/less/node_modules/eslint/lib/util/ignored-paths.js +381 -0
  859. package/packages/less/node_modules/eslint/lib/util/interpolate.js +28 -0
  860. package/packages/less/node_modules/eslint/lib/util/keywords.js +67 -0
  861. package/packages/less/node_modules/eslint/lib/util/lint-result-cache.js +146 -0
  862. package/packages/less/node_modules/eslint/lib/util/logging.js +28 -0
  863. package/packages/less/node_modules/eslint/lib/util/module-resolver.js +83 -0
  864. package/packages/less/node_modules/eslint/lib/util/naming.js +107 -0
  865. package/packages/less/node_modules/eslint/lib/util/node-event-generator.js +308 -0
  866. package/packages/less/node_modules/eslint/lib/util/npm-utils.js +183 -0
  867. package/packages/less/node_modules/eslint/lib/util/path-utils.js +72 -0
  868. package/packages/less/node_modules/eslint/lib/util/patterns/letters.js +36 -0
  869. package/packages/less/node_modules/eslint/lib/util/report-translator.js +281 -0
  870. package/packages/less/node_modules/eslint/lib/util/rule-fixer.js +140 -0
  871. package/packages/less/node_modules/eslint/lib/util/safe-emitter.js +52 -0
  872. package/packages/less/node_modules/eslint/lib/util/source-code-fixer.js +152 -0
  873. package/packages/less/node_modules/eslint/lib/util/source-code-utils.js +105 -0
  874. package/packages/less/node_modules/eslint/lib/util/source-code.js +507 -0
  875. package/packages/less/node_modules/eslint/lib/util/timing.js +139 -0
  876. package/packages/less/node_modules/eslint/lib/util/traverser.js +193 -0
  877. package/packages/less/node_modules/eslint/lib/util/unicode/index.js +11 -0
  878. package/packages/less/node_modules/eslint/lib/util/unicode/is-combining-character.js +13 -0
  879. package/packages/less/node_modules/eslint/lib/util/unicode/is-emoji-modifier.js +13 -0
  880. package/packages/less/node_modules/eslint/lib/util/unicode/is-regional-indicator-symbol.js +13 -0
  881. package/packages/less/node_modules/eslint/lib/util/unicode/is-surrogate-pair.js +14 -0
  882. package/packages/less/node_modules/eslint/lib/util/xml-escape.js +34 -0
  883. package/packages/less/node_modules/eslint/messages/all-files-ignored.txt +8 -0
  884. package/packages/less/node_modules/eslint/messages/extend-config-missing.txt +3 -0
  885. package/packages/less/node_modules/eslint/messages/failed-to-read-json.txt +3 -0
  886. package/packages/less/node_modules/eslint/messages/file-not-found.txt +2 -0
  887. package/packages/less/node_modules/eslint/messages/no-config-found.txt +7 -0
  888. package/packages/less/node_modules/eslint/messages/plugin-missing.txt +11 -0
  889. package/packages/less/node_modules/eslint/messages/whitespace-found.txt +3 -0
  890. package/packages/less/node_modules/eslint/package.json +128 -0
  891. package/packages/less/node_modules/espree/CHANGELOG.md +446 -0
  892. package/packages/less/node_modules/espree/LICENSE +22 -0
  893. package/packages/less/node_modules/espree/README.md +164 -0
  894. package/packages/less/node_modules/espree/espree.js +172 -0
  895. package/packages/less/node_modules/espree/lib/ast-node-types.js +96 -0
  896. package/packages/less/node_modules/espree/lib/espree.js +309 -0
  897. package/packages/less/node_modules/espree/lib/features.js +29 -0
  898. package/packages/less/node_modules/espree/lib/token-translator.js +262 -0
  899. package/packages/less/node_modules/espree/lib/visitor-keys.js +123 -0
  900. package/packages/less/node_modules/espree/package.json +62 -0
  901. package/packages/less/node_modules/source-map/CHANGELOG.md +301 -0
  902. package/packages/less/node_modules/source-map/LICENSE +28 -0
  903. package/packages/less/node_modules/source-map/README.md +742 -0
  904. package/packages/less/node_modules/source-map/dist/source-map.debug.js +3234 -0
  905. package/packages/less/node_modules/source-map/dist/source-map.js +3233 -0
  906. package/packages/less/node_modules/source-map/dist/source-map.min.js +2 -0
  907. package/packages/less/node_modules/source-map/dist/source-map.min.js.map +1 -0
  908. package/packages/less/node_modules/source-map/lib/array-set.js +121 -0
  909. package/packages/less/node_modules/source-map/lib/base64-vlq.js +140 -0
  910. package/packages/less/node_modules/source-map/lib/base64.js +67 -0
  911. package/packages/less/node_modules/source-map/lib/binary-search.js +111 -0
  912. package/packages/less/node_modules/source-map/lib/mapping-list.js +79 -0
  913. package/packages/less/node_modules/source-map/lib/quick-sort.js +114 -0
  914. package/packages/less/node_modules/source-map/lib/source-map-consumer.js +1145 -0
  915. package/packages/less/node_modules/source-map/lib/source-map-generator.js +425 -0
  916. package/packages/less/node_modules/source-map/lib/source-node.js +413 -0
  917. package/packages/less/node_modules/source-map/lib/util.js +488 -0
  918. package/packages/less/node_modules/source-map/package.json +73 -0
  919. package/packages/less/node_modules/source-map/source-map.d.ts +98 -0
  920. package/packages/less/node_modules/source-map/source-map.js +8 -0
  921. package/packages/less/node_modules/strip-ansi/index.js +4 -0
  922. package/packages/less/node_modules/strip-ansi/license +9 -0
  923. package/packages/less/node_modules/strip-ansi/package.json +52 -0
  924. package/packages/less/node_modules/strip-ansi/readme.md +39 -0
  925. package/packages/less/tmp/less.cjs.js +10536 -0
  926. package/test/browser/common.js +11 -49
  927. package/test/browser/generator/benchmark.config.js +50 -0
  928. package/test/browser/generator/generate.js +78 -0
  929. package/test/browser/generator/runner.config.js +180 -0
  930. package/test/browser/generator/runner.js +2 -0
  931. package/test/browser/generator/template.js +83 -0
  932. package/test/browser/less.min.js +3 -3
  933. package/test/browser/less.min.js.map +1 -1
  934. package/test/browser/runner-browser-options.js +0 -6
  935. package/test/browser/runner-browser-spec.js +1 -1
  936. package/test/browser/runner-main-spec.js +1 -1
  937. package/test/browser/runner-modify-vars-spec.js +1 -1
  938. package/test/browser/runner-production-spec.js +1 -1
  939. package/test/css/comments.css +1 -1
  940. package/test/css/css-3.css +5 -5
  941. package/test/css/css-escapes.css +1 -0
  942. package/test/css/css-guards.css +1 -1
  943. package/test/css/debug/linenumbers-all.css +5 -5
  944. package/test/css/debug/linenumbers-comments.css +5 -5
  945. package/test/css/debug/linenumbers-mediaquery.css +5 -5
  946. package/test/css/extend-chaining.css +3 -3
  947. package/test/css/extend-media.css +1 -1
  948. package/test/css/extend-nest.css +1 -1
  949. package/test/css/filemanagerPlugin/filemanager.css +1 -1
  950. package/test/css/functions-each.css +1 -1
  951. package/test/css/import-once.css +2 -2
  952. package/test/css/import-reference-issues.css +1 -1
  953. package/test/css/import-reference.css +6 -6
  954. package/test/css/import.css +1 -1
  955. package/test/css/javascript.css +1 -1
  956. package/test/css/legacy/legacy.css +1 -1
  957. package/test/css/math/parens-division/mixins-args.css +1 -1
  958. package/test/css/math/parens-division/parens.css +1 -1
  959. package/test/css/math/strict/mixins-args.css +1 -1
  960. package/test/css/math/strict/parens.css +1 -1
  961. package/test/css/math/strict-legacy/mixins-args.css +1 -1
  962. package/test/css/math/strict-legacy/parens.css +1 -1
  963. package/test/css/media.css +14 -14
  964. package/test/css/merge.css +10 -10
  965. package/test/css/mixins-guards.css +6 -6
  966. package/test/css/mixins.css +2 -2
  967. package/test/css/namespacing/namespacing-3.css +16 -1
  968. package/test/css/namespacing/namespacing-4.css +1 -1
  969. package/test/css/namespacing/namespacing-functions.css +6 -0
  970. package/test/css/no-strict-math/mixins-guards.css +1 -1
  971. package/test/css/permissive-parse.css +1 -1
  972. package/test/css/plugin.css +9 -9
  973. package/test/css/postProcessorPlugin/postProcessor.css +2 -2
  974. package/test/css/preProcessorPlugin/preProcessor.css +1 -1
  975. package/test/css/selectors.css +2 -2
  976. package/test/css/variables.css +1 -1
  977. package/test/css/visitorPlugin/visitor.css +1 -1
  978. package/test/less/comments.less +1 -1
  979. package/test/less/css-3.less +5 -5
  980. package/test/less/css-escapes.less +3 -1
  981. package/test/less/css-guards.less +2 -2
  982. package/test/less/debug/import/test.less +2 -2
  983. package/test/less/debug/linenumbers.less +3 -3
  984. package/test/less/errors/color-func-invalid-color.less +1 -1
  985. package/test/less/errors/color-func-invalid-color.txt +1 -1
  986. package/test/less/errors/plugin-1.txt +2 -2
  987. package/test/less/errors/plugin-2.txt +1 -2
  988. package/test/less/errors/plugin-3.txt +1 -2
  989. package/test/less/errors/property-ie5-hack.less +1 -1
  990. package/test/less/extend-chaining.less +3 -3
  991. package/test/less/extend-media.less +1 -1
  992. package/test/less/extend-nest.less +1 -1
  993. package/test/less/filemanagerPlugin/filemanager.less +1 -1
  994. package/test/less/functions-each.less +1 -1
  995. package/test/less/import/import-reference.less +1 -1
  996. package/test/less/import/import-test-f.less +1 -1
  997. package/test/less/import-reference-issues/global-scope-import.less +2 -2
  998. package/test/less/import-reference-issues/global-scope-nested.less +1 -1
  999. package/test/less/import-reference-issues.less +2 -2
  1000. package/test/less/import-reference.less +1 -1
  1001. package/test/less/javascript.less +1 -1
  1002. package/test/less/legacy/legacy.less +1 -1
  1003. package/test/less/math/parens-division/mixins-args.less +4 -4
  1004. package/test/less/math/parens-division/parens.less +1 -1
  1005. package/test/less/math/strict/mixins-args.less +4 -4
  1006. package/test/less/math/strict/parens.less +1 -1
  1007. package/test/less/math/strict-legacy/mixins-args.less +4 -4
  1008. package/test/less/math/strict-legacy/parens.less +1 -1
  1009. package/test/less/media.less +9 -9
  1010. package/test/less/merge.less +10 -10
  1011. package/test/less/mixins-guards.less +8 -8
  1012. package/test/less/mixins-important.less +3 -3
  1013. package/test/less/mixins.less +2 -2
  1014. package/test/less/namespacing/namespacing-3.less +25 -2
  1015. package/test/less/namespacing/namespacing-4.less +1 -1
  1016. package/test/less/namespacing/namespacing-5.less +2 -2
  1017. package/test/less/namespacing/namespacing-functions.less +26 -0
  1018. package/test/less/no-strict-math/mixins-guards.less +2 -2
  1019. package/test/less/permissive-parse.less +1 -1
  1020. package/test/less/plugin.less +9 -9
  1021. package/test/less/postProcessorPlugin/postProcessor.less +2 -2
  1022. package/test/less/preProcessorPlugin/preProcessor.less +1 -1
  1023. package/test/less/selectors.less +1 -1
  1024. package/test/less/sourcemaps/imported.css +1 -1
  1025. package/test/less/variables.less +1 -1
  1026. package/test/less/visitorPlugin/visitor.less +1 -1
  1027. package/test/less-test.js +1 -9
  1028. package/test/less.js +11 -0
  1029. package/.DS_Store +0 -0
  1030. package/test/.DS_Store +0 -0
  1031. package/test/browser/onload.js +0 -13
  1032. package/test/browser/test-runner-template.tmpl +0 -105
  1033. package/test/browser/vendor/jasmine-jsreporter.js +0 -391
  1034. package/test/browser/vendor/promise.js +0 -2
  1035. package/test/css/.DS_Store +0 -0
  1036. package/test/css/math/.DS_Store +0 -0
  1037. package/test/less/.DS_Store +0 -0
  1038. package/test/less/math/.DS_Store +0 -0
@@ -0,0 +1,1608 @@
1
+ /**
2
+ * @fileoverview This rule sets a specific indentation style and width for your code
3
+ *
4
+ * @author Teddy Katz
5
+ * @author Vitaly Puzrin
6
+ * @author Gyandeep Singh
7
+ */
8
+
9
+ "use strict";
10
+
11
+ //------------------------------------------------------------------------------
12
+ // Requirements
13
+ //------------------------------------------------------------------------------
14
+
15
+ const lodash = require("lodash");
16
+ const astUtils = require("../util/ast-utils");
17
+ const createTree = require("functional-red-black-tree");
18
+
19
+ //------------------------------------------------------------------------------
20
+ // Rule Definition
21
+ //------------------------------------------------------------------------------
22
+
23
+ const KNOWN_NODES = new Set([
24
+ "AssignmentExpression",
25
+ "AssignmentPattern",
26
+ "ArrayExpression",
27
+ "ArrayPattern",
28
+ "ArrowFunctionExpression",
29
+ "AwaitExpression",
30
+ "BlockStatement",
31
+ "BinaryExpression",
32
+ "BreakStatement",
33
+ "CallExpression",
34
+ "CatchClause",
35
+ "ClassBody",
36
+ "ClassDeclaration",
37
+ "ClassExpression",
38
+ "ConditionalExpression",
39
+ "ContinueStatement",
40
+ "DoWhileStatement",
41
+ "DebuggerStatement",
42
+ "EmptyStatement",
43
+ "ExperimentalRestProperty",
44
+ "ExperimentalSpreadProperty",
45
+ "ExpressionStatement",
46
+ "ForStatement",
47
+ "ForInStatement",
48
+ "ForOfStatement",
49
+ "FunctionDeclaration",
50
+ "FunctionExpression",
51
+ "Identifier",
52
+ "IfStatement",
53
+ "Literal",
54
+ "LabeledStatement",
55
+ "LogicalExpression",
56
+ "MemberExpression",
57
+ "MetaProperty",
58
+ "MethodDefinition",
59
+ "NewExpression",
60
+ "ObjectExpression",
61
+ "ObjectPattern",
62
+ "Program",
63
+ "Property",
64
+ "RestElement",
65
+ "ReturnStatement",
66
+ "SequenceExpression",
67
+ "SpreadElement",
68
+ "Super",
69
+ "SwitchCase",
70
+ "SwitchStatement",
71
+ "TaggedTemplateExpression",
72
+ "TemplateElement",
73
+ "TemplateLiteral",
74
+ "ThisExpression",
75
+ "ThrowStatement",
76
+ "TryStatement",
77
+ "UnaryExpression",
78
+ "UpdateExpression",
79
+ "VariableDeclaration",
80
+ "VariableDeclarator",
81
+ "WhileStatement",
82
+ "WithStatement",
83
+ "YieldExpression",
84
+ "JSXIdentifier",
85
+ "JSXNamespacedName",
86
+ "JSXMemberExpression",
87
+ "JSXEmptyExpression",
88
+ "JSXExpressionContainer",
89
+ "JSXElement",
90
+ "JSXClosingElement",
91
+ "JSXOpeningElement",
92
+ "JSXAttribute",
93
+ "JSXSpreadAttribute",
94
+ "JSXText",
95
+ "ExportDefaultDeclaration",
96
+ "ExportNamedDeclaration",
97
+ "ExportAllDeclaration",
98
+ "ExportSpecifier",
99
+ "ImportDeclaration",
100
+ "ImportSpecifier",
101
+ "ImportDefaultSpecifier",
102
+ "ImportNamespaceSpecifier"
103
+ ]);
104
+
105
+ /*
106
+ * General rule strategy:
107
+ * 1. An OffsetStorage instance stores a map of desired offsets, where each token has a specified offset from another
108
+ * specified token or to the first column.
109
+ * 2. As the AST is traversed, modify the desired offsets of tokens accordingly. For example, when entering a
110
+ * BlockStatement, offset all of the tokens in the BlockStatement by 1 indent level from the opening curly
111
+ * brace of the BlockStatement.
112
+ * 3. After traversing the AST, calculate the expected indentation levels of every token according to the
113
+ * OffsetStorage container.
114
+ * 4. For each line, compare the expected indentation of the first token to the actual indentation in the file,
115
+ * and report the token if the two values are not equal.
116
+ */
117
+
118
+
119
+ /**
120
+ * A mutable balanced binary search tree that stores (key, value) pairs. The keys are numeric, and must be unique.
121
+ * This is intended to be a generic wrapper around a balanced binary search tree library, so that the underlying implementation
122
+ * can easily be swapped out.
123
+ */
124
+ class BinarySearchTree {
125
+
126
+ /**
127
+ * Creates an empty tree
128
+ */
129
+ constructor() {
130
+ this._rbTree = createTree();
131
+ }
132
+
133
+ /**
134
+ * Inserts an entry into the tree.
135
+ * @param {number} key The entry's key
136
+ * @param {*} value The entry's value
137
+ * @returns {void}
138
+ */
139
+ insert(key, value) {
140
+ const iterator = this._rbTree.find(key);
141
+
142
+ if (iterator.valid) {
143
+ this._rbTree = iterator.update(value);
144
+ } else {
145
+ this._rbTree = this._rbTree.insert(key, value);
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Finds the entry with the largest key less than or equal to the provided key
151
+ * @param {number} key The provided key
152
+ * @returns {{key: number, value: *}|null} The found entry, or null if no such entry exists.
153
+ */
154
+ findLe(key) {
155
+ const iterator = this._rbTree.le(key);
156
+
157
+ return iterator && { key: iterator.key, value: iterator.value };
158
+ }
159
+
160
+ /**
161
+ * Deletes all of the keys in the interval [start, end)
162
+ * @param {number} start The start of the range
163
+ * @param {number} end The end of the range
164
+ * @returns {void}
165
+ */
166
+ deleteRange(start, end) {
167
+
168
+ // Exit without traversing the tree if the range has zero size.
169
+ if (start === end) {
170
+ return;
171
+ }
172
+ const iterator = this._rbTree.ge(start);
173
+
174
+ while (iterator.valid && iterator.key < end) {
175
+ this._rbTree = this._rbTree.remove(iterator.key);
176
+ iterator.next();
177
+ }
178
+ }
179
+ }
180
+
181
+ /**
182
+ * A helper class to get token-based info related to indentation
183
+ */
184
+ class TokenInfo {
185
+
186
+ /**
187
+ * @param {SourceCode} sourceCode A SourceCode object
188
+ */
189
+ constructor(sourceCode) {
190
+ this.sourceCode = sourceCode;
191
+ this.firstTokensByLineNumber = sourceCode.tokensAndComments.reduce((map, token) => {
192
+ if (!map.has(token.loc.start.line)) {
193
+ map.set(token.loc.start.line, token);
194
+ }
195
+ if (!map.has(token.loc.end.line) && sourceCode.text.slice(token.range[1] - token.loc.end.column, token.range[1]).trim()) {
196
+ map.set(token.loc.end.line, token);
197
+ }
198
+ return map;
199
+ }, new Map());
200
+ }
201
+
202
+ /**
203
+ * Gets the first token on a given token's line
204
+ * @param {Token|ASTNode} token a node or token
205
+ * @returns {Token} The first token on the given line
206
+ */
207
+ getFirstTokenOfLine(token) {
208
+ return this.firstTokensByLineNumber.get(token.loc.start.line);
209
+ }
210
+
211
+ /**
212
+ * Determines whether a token is the first token in its line
213
+ * @param {Token} token The token
214
+ * @returns {boolean} `true` if the token is the first on its line
215
+ */
216
+ isFirstTokenOfLine(token) {
217
+ return this.getFirstTokenOfLine(token) === token;
218
+ }
219
+
220
+ /**
221
+ * Get the actual indent of a token
222
+ * @param {Token} token Token to examine. This should be the first token on its line.
223
+ * @returns {string} The indentation characters that precede the token
224
+ */
225
+ getTokenIndent(token) {
226
+ return this.sourceCode.text.slice(token.range[0] - token.loc.start.column, token.range[0]);
227
+ }
228
+ }
229
+
230
+ /**
231
+ * A class to store information on desired offsets of tokens from each other
232
+ */
233
+ class OffsetStorage {
234
+
235
+ /**
236
+ * @param {TokenInfo} tokenInfo a TokenInfo instance
237
+ * @param {number} indentSize The desired size of each indentation level
238
+ * @param {string} indentType The indentation character
239
+ */
240
+ constructor(tokenInfo, indentSize, indentType) {
241
+ this._tokenInfo = tokenInfo;
242
+ this._indentSize = indentSize;
243
+ this._indentType = indentType;
244
+
245
+ this._tree = new BinarySearchTree();
246
+ this._tree.insert(0, { offset: 0, from: null, force: false });
247
+
248
+ this._lockedFirstTokens = new WeakMap();
249
+ this._desiredIndentCache = new WeakMap();
250
+ this._ignoredTokens = new WeakSet();
251
+ }
252
+
253
+ _getOffsetDescriptor(token) {
254
+ return this._tree.findLe(token.range[0]).value;
255
+ }
256
+
257
+ /**
258
+ * Sets the offset column of token B to match the offset column of token A.
259
+ * **WARNING**: This matches a *column*, even if baseToken is not the first token on its line. In
260
+ * most cases, `setDesiredOffset` should be used instead.
261
+ * @param {Token} baseToken The first token
262
+ * @param {Token} offsetToken The second token, whose offset should be matched to the first token
263
+ * @returns {void}
264
+ */
265
+ matchOffsetOf(baseToken, offsetToken) {
266
+
267
+ /*
268
+ * lockedFirstTokens is a map from a token whose indentation is controlled by the "first" option to
269
+ * the token that it depends on. For example, with the `ArrayExpression: first` option, the first
270
+ * token of each element in the array after the first will be mapped to the first token of the first
271
+ * element. The desired indentation of each of these tokens is computed based on the desired indentation
272
+ * of the "first" element, rather than through the normal offset mechanism.
273
+ */
274
+ this._lockedFirstTokens.set(offsetToken, baseToken);
275
+ }
276
+
277
+ /**
278
+ * Sets the desired offset of a token.
279
+ *
280
+ * This uses a line-based offset collapsing behavior to handle tokens on the same line.
281
+ * For example, consider the following two cases:
282
+ *
283
+ * (
284
+ * [
285
+ * bar
286
+ * ]
287
+ * )
288
+ *
289
+ * ([
290
+ * bar
291
+ * ])
292
+ *
293
+ * Based on the first case, it's clear that the `bar` token needs to have an offset of 1 indent level (4 spaces) from
294
+ * the `[` token, and the `[` token has to have an offset of 1 indent level from the `(` token. Since the `(` token is
295
+ * the first on its line (with an indent of 0 spaces), the `bar` token needs to be offset by 2 indent levels (8 spaces)
296
+ * from the start of its line.
297
+ *
298
+ * However, in the second case `bar` should only be indented by 4 spaces. This is because the offset of 1 indent level
299
+ * between the `(` and the `[` tokens gets "collapsed" because the two tokens are on the same line. As a result, the
300
+ * `(` token is mapped to the `[` token with an offset of 0, and the rule correctly decides that `bar` should be indented
301
+ * by 1 indent level from the start of the line.
302
+ *
303
+ * This is useful because rule listeners can usually just call `setDesiredOffset` for all the tokens in the node,
304
+ * without needing to check which lines those tokens are on.
305
+ *
306
+ * Note that since collapsing only occurs when two tokens are on the same line, there are a few cases where non-intuitive
307
+ * behavior can occur. For example, consider the following cases:
308
+ *
309
+ * foo(
310
+ * ).
311
+ * bar(
312
+ * baz
313
+ * )
314
+ *
315
+ * foo(
316
+ * ).bar(
317
+ * baz
318
+ * )
319
+ *
320
+ * Based on the first example, it would seem that `bar` should be offset by 1 indent level from `foo`, and `baz`
321
+ * should be offset by 1 indent level from `bar`. However, this is not correct, because it would result in `baz`
322
+ * being indented by 2 indent levels in the second case (since `foo`, `bar`, and `baz` are all on separate lines, no
323
+ * collapsing would occur).
324
+ *
325
+ * Instead, the correct way would be to offset `baz` by 1 level from `bar`, offset `bar` by 1 level from the `)`, and
326
+ * offset the `)` by 0 levels from `foo`. This ensures that the offset between `bar` and the `)` are correctly collapsed
327
+ * in the second case.
328
+ *
329
+ * @param {Token} token The token
330
+ * @param {Token} fromToken The token that `token` should be offset from
331
+ * @param {number} offset The desired indent level
332
+ * @returns {void}
333
+ */
334
+ setDesiredOffset(token, fromToken, offset) {
335
+ return this.setDesiredOffsets(token.range, fromToken, offset);
336
+ }
337
+
338
+ /**
339
+ * Sets the desired offset of all tokens in a range
340
+ * It's common for node listeners in this file to need to apply the same offset to a large, contiguous range of tokens.
341
+ * Moreover, the offset of any given token is usually updated multiple times (roughly once for each node that contains
342
+ * it). This means that the offset of each token is updated O(AST depth) times.
343
+ * It would not be performant to store and update the offsets for each token independently, because the rule would end
344
+ * up having a time complexity of O(number of tokens * AST depth), which is quite slow for large files.
345
+ *
346
+ * Instead, the offset tree is represented as a collection of contiguous offset ranges in a file. For example, the following
347
+ * list could represent the state of the offset tree at a given point:
348
+ *
349
+ * * Tokens starting in the interval [0, 15) are aligned with the beginning of the file
350
+ * * Tokens starting in the interval [15, 30) are offset by 1 indent level from the `bar` token
351
+ * * Tokens starting in the interval [30, 43) are offset by 1 indent level from the `foo` token
352
+ * * Tokens starting in the interval [43, 820) are offset by 2 indent levels from the `bar` token
353
+ * * Tokens starting in the interval [820, ∞) are offset by 1 indent level from the `baz` token
354
+ *
355
+ * The `setDesiredOffsets` methods inserts ranges like the ones above. The third line above would be inserted by using:
356
+ * `setDesiredOffsets([30, 43], fooToken, 1);`
357
+ *
358
+ * @param {[number, number]} range A [start, end] pair. All tokens with range[0] <= token.start < range[1] will have the offset applied.
359
+ * @param {Token} fromToken The token that this is offset from
360
+ * @param {number} offset The desired indent level
361
+ * @param {boolean} force `true` if this offset should not use the normal collapsing behavior. This should almost always be false.
362
+ * @returns {void}
363
+ */
364
+ setDesiredOffsets(range, fromToken, offset, force) {
365
+
366
+ /*
367
+ * Offset ranges are stored as a collection of nodes, where each node maps a numeric key to an offset
368
+ * descriptor. The tree for the example above would have the following nodes:
369
+ *
370
+ * * key: 0, value: { offset: 0, from: null }
371
+ * * key: 15, value: { offset: 1, from: barToken }
372
+ * * key: 30, value: { offset: 1, from: fooToken }
373
+ * * key: 43, value: { offset: 2, from: barToken }
374
+ * * key: 820, value: { offset: 1, from: bazToken }
375
+ *
376
+ * To find the offset descriptor for any given token, one needs to find the node with the largest key
377
+ * which is <= token.start. To make this operation fast, the nodes are stored in a balanced binary
378
+ * search tree indexed by key.
379
+ */
380
+
381
+ const descriptorToInsert = { offset, from: fromToken, force };
382
+
383
+ const descriptorAfterRange = this._tree.findLe(range[1]).value;
384
+
385
+ const fromTokenIsInRange = fromToken && fromToken.range[0] >= range[0] && fromToken.range[1] <= range[1];
386
+ const fromTokenDescriptor = fromTokenIsInRange && this._getOffsetDescriptor(fromToken);
387
+
388
+ // First, remove any existing nodes in the range from the tree.
389
+ this._tree.deleteRange(range[0] + 1, range[1]);
390
+
391
+ // Insert a new node into the tree for this range
392
+ this._tree.insert(range[0], descriptorToInsert);
393
+
394
+ /*
395
+ * To avoid circular offset dependencies, keep the `fromToken` token mapped to whatever it was mapped to previously,
396
+ * even if it's in the current range.
397
+ */
398
+ if (fromTokenIsInRange) {
399
+ this._tree.insert(fromToken.range[0], fromTokenDescriptor);
400
+ this._tree.insert(fromToken.range[1], descriptorToInsert);
401
+ }
402
+
403
+ /*
404
+ * To avoid modifying the offset of tokens after the range, insert another node to keep the offset of the following
405
+ * tokens the same as it was before.
406
+ */
407
+ this._tree.insert(range[1], descriptorAfterRange);
408
+ }
409
+
410
+ /**
411
+ * Gets the desired indent of a token
412
+ * @param {Token} token The token
413
+ * @returns {string} The desired indent of the token
414
+ */
415
+ getDesiredIndent(token) {
416
+ if (!this._desiredIndentCache.has(token)) {
417
+
418
+ if (this._ignoredTokens.has(token)) {
419
+
420
+ /*
421
+ * If the token is ignored, use the actual indent of the token as the desired indent.
422
+ * This ensures that no errors are reported for this token.
423
+ */
424
+ this._desiredIndentCache.set(
425
+ token,
426
+ this._tokenInfo.getTokenIndent(token)
427
+ );
428
+ } else if (this._lockedFirstTokens.has(token)) {
429
+ const firstToken = this._lockedFirstTokens.get(token);
430
+
431
+ this._desiredIndentCache.set(
432
+ token,
433
+
434
+ // (indentation for the first element's line)
435
+ this.getDesiredIndent(this._tokenInfo.getFirstTokenOfLine(firstToken)) +
436
+
437
+ // (space between the start of the first element's line and the first element)
438
+ this._indentType.repeat(firstToken.loc.start.column - this._tokenInfo.getFirstTokenOfLine(firstToken).loc.start.column)
439
+ );
440
+ } else {
441
+ const offsetInfo = this._getOffsetDescriptor(token);
442
+ const offset = (
443
+ offsetInfo.from &&
444
+ offsetInfo.from.loc.start.line === token.loc.start.line &&
445
+ !/^\s*?\n/u.test(token.value) &&
446
+ !offsetInfo.force
447
+ ) ? 0 : offsetInfo.offset * this._indentSize;
448
+
449
+ this._desiredIndentCache.set(
450
+ token,
451
+ (offsetInfo.from ? this.getDesiredIndent(offsetInfo.from) : "") + this._indentType.repeat(offset)
452
+ );
453
+ }
454
+ }
455
+ return this._desiredIndentCache.get(token);
456
+ }
457
+
458
+ /**
459
+ * Ignores a token, preventing it from being reported.
460
+ * @param {Token} token The token
461
+ * @returns {void}
462
+ */
463
+ ignoreToken(token) {
464
+ if (this._tokenInfo.isFirstTokenOfLine(token)) {
465
+ this._ignoredTokens.add(token);
466
+ }
467
+ }
468
+
469
+ /**
470
+ * Gets the first token that the given token's indentation is dependent on
471
+ * @param {Token} token The token
472
+ * @returns {Token} The token that the given token depends on, or `null` if the given token is at the top level
473
+ */
474
+ getFirstDependency(token) {
475
+ return this._getOffsetDescriptor(token).from;
476
+ }
477
+ }
478
+
479
+ const ELEMENT_LIST_SCHEMA = {
480
+ oneOf: [
481
+ {
482
+ type: "integer",
483
+ minimum: 0
484
+ },
485
+ {
486
+ enum: ["first", "off"]
487
+ }
488
+ ]
489
+ };
490
+
491
+ module.exports = {
492
+ meta: {
493
+ type: "layout",
494
+
495
+ docs: {
496
+ description: "enforce consistent indentation",
497
+ category: "Stylistic Issues",
498
+ recommended: false,
499
+ url: "https://eslint.org/docs/rules/indent"
500
+ },
501
+
502
+ fixable: "whitespace",
503
+
504
+ schema: [
505
+ {
506
+ oneOf: [
507
+ {
508
+ enum: ["tab"]
509
+ },
510
+ {
511
+ type: "integer",
512
+ minimum: 0
513
+ }
514
+ ]
515
+ },
516
+ {
517
+ type: "object",
518
+ properties: {
519
+ SwitchCase: {
520
+ type: "integer",
521
+ minimum: 0,
522
+ default: 0
523
+ },
524
+ VariableDeclarator: {
525
+ oneOf: [
526
+ ELEMENT_LIST_SCHEMA,
527
+ {
528
+ type: "object",
529
+ properties: {
530
+ var: ELEMENT_LIST_SCHEMA,
531
+ let: ELEMENT_LIST_SCHEMA,
532
+ const: ELEMENT_LIST_SCHEMA
533
+ },
534
+ additionalProperties: false
535
+ }
536
+ ]
537
+ },
538
+ outerIIFEBody: {
539
+ type: "integer",
540
+ minimum: 0
541
+ },
542
+ MemberExpression: {
543
+ oneOf: [
544
+ {
545
+ type: "integer",
546
+ minimum: 0
547
+ },
548
+ {
549
+ enum: ["off"]
550
+ }
551
+ ]
552
+ },
553
+ FunctionDeclaration: {
554
+ type: "object",
555
+ properties: {
556
+ parameters: ELEMENT_LIST_SCHEMA,
557
+ body: {
558
+ type: "integer",
559
+ minimum: 0
560
+ }
561
+ },
562
+ additionalProperties: false
563
+ },
564
+ FunctionExpression: {
565
+ type: "object",
566
+ properties: {
567
+ parameters: ELEMENT_LIST_SCHEMA,
568
+ body: {
569
+ type: "integer",
570
+ minimum: 0
571
+ }
572
+ },
573
+ additionalProperties: false
574
+ },
575
+ CallExpression: {
576
+ type: "object",
577
+ properties: {
578
+ arguments: ELEMENT_LIST_SCHEMA
579
+ },
580
+ additionalProperties: false
581
+ },
582
+ ArrayExpression: ELEMENT_LIST_SCHEMA,
583
+ ObjectExpression: ELEMENT_LIST_SCHEMA,
584
+ ImportDeclaration: ELEMENT_LIST_SCHEMA,
585
+ flatTernaryExpressions: {
586
+ type: "boolean",
587
+ default: false
588
+ },
589
+ ignoredNodes: {
590
+ type: "array",
591
+ items: {
592
+ type: "string",
593
+ not: {
594
+ pattern: ":exit$"
595
+ }
596
+ }
597
+ },
598
+ ignoreComments: {
599
+ type: "boolean",
600
+ default: false
601
+ }
602
+ },
603
+ additionalProperties: false
604
+ }
605
+ ],
606
+ messages: {
607
+ wrongIndentation: "Expected indentation of {{expected}} but found {{actual}}."
608
+ }
609
+ },
610
+
611
+ create(context) {
612
+ const DEFAULT_VARIABLE_INDENT = 1;
613
+ const DEFAULT_PARAMETER_INDENT = 1;
614
+ const DEFAULT_FUNCTION_BODY_INDENT = 1;
615
+
616
+ let indentType = "space";
617
+ let indentSize = 4;
618
+ const options = {
619
+ SwitchCase: 0,
620
+ VariableDeclarator: {
621
+ var: DEFAULT_VARIABLE_INDENT,
622
+ let: DEFAULT_VARIABLE_INDENT,
623
+ const: DEFAULT_VARIABLE_INDENT
624
+ },
625
+ outerIIFEBody: 1,
626
+ FunctionDeclaration: {
627
+ parameters: DEFAULT_PARAMETER_INDENT,
628
+ body: DEFAULT_FUNCTION_BODY_INDENT
629
+ },
630
+ FunctionExpression: {
631
+ parameters: DEFAULT_PARAMETER_INDENT,
632
+ body: DEFAULT_FUNCTION_BODY_INDENT
633
+ },
634
+ CallExpression: {
635
+ arguments: DEFAULT_PARAMETER_INDENT
636
+ },
637
+ MemberExpression: 1,
638
+ ArrayExpression: 1,
639
+ ObjectExpression: 1,
640
+ ImportDeclaration: 1,
641
+ flatTernaryExpressions: false,
642
+ ignoredNodes: [],
643
+ ignoreComments: false
644
+ };
645
+
646
+ if (context.options.length) {
647
+ if (context.options[0] === "tab") {
648
+ indentSize = 1;
649
+ indentType = "tab";
650
+ } else {
651
+ indentSize = context.options[0];
652
+ indentType = "space";
653
+ }
654
+
655
+ if (context.options[1]) {
656
+ Object.assign(options, context.options[1]);
657
+
658
+ if (typeof options.VariableDeclarator === "number" || options.VariableDeclarator === "first") {
659
+ options.VariableDeclarator = {
660
+ var: options.VariableDeclarator,
661
+ let: options.VariableDeclarator,
662
+ const: options.VariableDeclarator
663
+ };
664
+ }
665
+ }
666
+ }
667
+
668
+ const sourceCode = context.getSourceCode();
669
+ const tokenInfo = new TokenInfo(sourceCode);
670
+ const offsets = new OffsetStorage(tokenInfo, indentSize, indentType === "space" ? " " : "\t");
671
+ const parameterParens = new WeakSet();
672
+
673
+ /**
674
+ * Creates an error message for a line, given the expected/actual indentation.
675
+ * @param {int} expectedAmount The expected amount of indentation characters for this line
676
+ * @param {int} actualSpaces The actual number of indentation spaces that were found on this line
677
+ * @param {int} actualTabs The actual number of indentation tabs that were found on this line
678
+ * @returns {string} An error message for this line
679
+ */
680
+ function createErrorMessageData(expectedAmount, actualSpaces, actualTabs) {
681
+ const expectedStatement = `${expectedAmount} ${indentType}${expectedAmount === 1 ? "" : "s"}`; // e.g. "2 tabs"
682
+ const foundSpacesWord = `space${actualSpaces === 1 ? "" : "s"}`; // e.g. "space"
683
+ const foundTabsWord = `tab${actualTabs === 1 ? "" : "s"}`; // e.g. "tabs"
684
+ let foundStatement;
685
+
686
+ if (actualSpaces > 0) {
687
+
688
+ /*
689
+ * Abbreviate the message if the expected indentation is also spaces.
690
+ * e.g. 'Expected 4 spaces but found 2' rather than 'Expected 4 spaces but found 2 spaces'
691
+ */
692
+ foundStatement = indentType === "space" ? actualSpaces : `${actualSpaces} ${foundSpacesWord}`;
693
+ } else if (actualTabs > 0) {
694
+ foundStatement = indentType === "tab" ? actualTabs : `${actualTabs} ${foundTabsWord}`;
695
+ } else {
696
+ foundStatement = "0";
697
+ }
698
+ return {
699
+ expected: expectedStatement,
700
+ actual: foundStatement
701
+ };
702
+ }
703
+
704
+ /**
705
+ * Reports a given indent violation
706
+ * @param {Token} token Token violating the indent rule
707
+ * @param {string} neededIndent Expected indentation string
708
+ * @returns {void}
709
+ */
710
+ function report(token, neededIndent) {
711
+ const actualIndent = Array.from(tokenInfo.getTokenIndent(token));
712
+ const numSpaces = actualIndent.filter(char => char === " ").length;
713
+ const numTabs = actualIndent.filter(char => char === "\t").length;
714
+
715
+ context.report({
716
+ node: token,
717
+ messageId: "wrongIndentation",
718
+ data: createErrorMessageData(neededIndent.length, numSpaces, numTabs),
719
+ loc: {
720
+ start: { line: token.loc.start.line, column: 0 },
721
+ end: { line: token.loc.start.line, column: token.loc.start.column }
722
+ },
723
+ fix(fixer) {
724
+ const range = [token.range[0] - token.loc.start.column, token.range[0]];
725
+ const newText = neededIndent;
726
+
727
+ return fixer.replaceTextRange(range, newText);
728
+ }
729
+ });
730
+ }
731
+
732
+ /**
733
+ * Checks if a token's indentation is correct
734
+ * @param {Token} token Token to examine
735
+ * @param {string} desiredIndent Desired indentation of the string
736
+ * @returns {boolean} `true` if the token's indentation is correct
737
+ */
738
+ function validateTokenIndent(token, desiredIndent) {
739
+ const indentation = tokenInfo.getTokenIndent(token);
740
+
741
+ return indentation === desiredIndent ||
742
+
743
+ // To avoid conflicts with no-mixed-spaces-and-tabs, don't report mixed spaces and tabs.
744
+ indentation.includes(" ") && indentation.includes("\t");
745
+ }
746
+
747
+ /**
748
+ * Check to see if the node is a file level IIFE
749
+ * @param {ASTNode} node The function node to check.
750
+ * @returns {boolean} True if the node is the outer IIFE
751
+ */
752
+ function isOuterIIFE(node) {
753
+
754
+ /*
755
+ * Verify that the node is an IIFE
756
+ */
757
+ if (!node.parent || node.parent.type !== "CallExpression" || node.parent.callee !== node) {
758
+ return false;
759
+ }
760
+
761
+ /*
762
+ * Navigate legal ancestors to determine whether this IIFE is outer.
763
+ * A "legal ancestor" is an expression or statement that causes the function to get executed immediately.
764
+ * For example, `!(function(){})()` is an outer IIFE even though it is preceded by a ! operator.
765
+ */
766
+ let statement = node.parent && node.parent.parent;
767
+
768
+ while (
769
+ statement.type === "UnaryExpression" && ["!", "~", "+", "-"].indexOf(statement.operator) > -1 ||
770
+ statement.type === "AssignmentExpression" ||
771
+ statement.type === "LogicalExpression" ||
772
+ statement.type === "SequenceExpression" ||
773
+ statement.type === "VariableDeclarator"
774
+ ) {
775
+ statement = statement.parent;
776
+ }
777
+
778
+ return (statement.type === "ExpressionStatement" || statement.type === "VariableDeclaration") && statement.parent.type === "Program";
779
+ }
780
+
781
+ /**
782
+ * Counts the number of linebreaks that follow the last non-whitespace character in a string
783
+ * @param {string} string The string to check
784
+ * @returns {number} The number of JavaScript linebreaks that follow the last non-whitespace character,
785
+ * or the total number of linebreaks if the string is all whitespace.
786
+ */
787
+ function countTrailingLinebreaks(string) {
788
+ const trailingWhitespace = string.match(/\s*$/u)[0];
789
+ const linebreakMatches = trailingWhitespace.match(astUtils.createGlobalLinebreakMatcher());
790
+
791
+ return linebreakMatches === null ? 0 : linebreakMatches.length;
792
+ }
793
+
794
+ /**
795
+ * Check indentation for lists of elements (arrays, objects, function params)
796
+ * @param {ASTNode[]} elements List of elements that should be offset
797
+ * @param {Token} startToken The start token of the list that element should be aligned against, e.g. '['
798
+ * @param {Token} endToken The end token of the list, e.g. ']'
799
+ * @param {number|string} offset The amount that the elements should be offset
800
+ * @returns {void}
801
+ */
802
+ function addElementListIndent(elements, startToken, endToken, offset) {
803
+
804
+ /**
805
+ * Gets the first token of a given element, including surrounding parentheses.
806
+ * @param {ASTNode} element A node in the `elements` list
807
+ * @returns {Token} The first token of this element
808
+ */
809
+ function getFirstToken(element) {
810
+ let token = sourceCode.getTokenBefore(element);
811
+
812
+ while (astUtils.isOpeningParenToken(token) && token !== startToken) {
813
+ token = sourceCode.getTokenBefore(token);
814
+ }
815
+ return sourceCode.getTokenAfter(token);
816
+ }
817
+
818
+ // Run through all the tokens in the list, and offset them by one indent level (mainly for comments, other things will end up overridden)
819
+ offsets.setDesiredOffsets(
820
+ [startToken.range[1], endToken.range[0]],
821
+ startToken,
822
+ typeof offset === "number" ? offset : 1
823
+ );
824
+ offsets.setDesiredOffset(endToken, startToken, 0);
825
+
826
+ // If the preference is "first" but there is no first element (e.g. sparse arrays w/ empty first slot), fall back to 1 level.
827
+ if (offset === "first" && elements.length && !elements[0]) {
828
+ return;
829
+ }
830
+ elements.forEach((element, index) => {
831
+ if (!element) {
832
+
833
+ // Skip holes in arrays
834
+ return;
835
+ }
836
+ if (offset === "off") {
837
+
838
+ // Ignore the first token of every element if the "off" option is used
839
+ offsets.ignoreToken(getFirstToken(element));
840
+ }
841
+
842
+ // Offset the following elements correctly relative to the first element
843
+ if (index === 0) {
844
+ return;
845
+ }
846
+ if (offset === "first" && tokenInfo.isFirstTokenOfLine(getFirstToken(element))) {
847
+ offsets.matchOffsetOf(getFirstToken(elements[0]), getFirstToken(element));
848
+ } else {
849
+ const previousElement = elements[index - 1];
850
+ const firstTokenOfPreviousElement = previousElement && getFirstToken(previousElement);
851
+ const previousElementLastToken = previousElement && sourceCode.getLastToken(previousElement);
852
+
853
+ if (
854
+ previousElement &&
855
+ previousElementLastToken.loc.end.line - countTrailingLinebreaks(previousElementLastToken.value) > startToken.loc.end.line
856
+ ) {
857
+ offsets.setDesiredOffsets(
858
+ [previousElement.range[1], element.range[1]],
859
+ firstTokenOfPreviousElement,
860
+ 0
861
+ );
862
+ }
863
+ }
864
+ });
865
+ }
866
+
867
+ /**
868
+ * Check and decide whether to check for indentation for blockless nodes
869
+ * Scenarios are for or while statements without braces around them
870
+ * @param {ASTNode} node node to examine
871
+ * @returns {void}
872
+ */
873
+ function addBlocklessNodeIndent(node) {
874
+ if (node.type !== "BlockStatement") {
875
+ const lastParentToken = sourceCode.getTokenBefore(node, astUtils.isNotOpeningParenToken);
876
+
877
+ let firstBodyToken = sourceCode.getFirstToken(node);
878
+ let lastBodyToken = sourceCode.getLastToken(node);
879
+
880
+ while (
881
+ astUtils.isOpeningParenToken(sourceCode.getTokenBefore(firstBodyToken)) &&
882
+ astUtils.isClosingParenToken(sourceCode.getTokenAfter(lastBodyToken))
883
+ ) {
884
+ firstBodyToken = sourceCode.getTokenBefore(firstBodyToken);
885
+ lastBodyToken = sourceCode.getTokenAfter(lastBodyToken);
886
+ }
887
+
888
+ offsets.setDesiredOffsets([firstBodyToken.range[0], lastBodyToken.range[1]], lastParentToken, 1);
889
+
890
+ /*
891
+ * For blockless nodes with semicolon-first style, don't indent the semicolon.
892
+ * e.g.
893
+ * if (foo) bar()
894
+ * ; [1, 2, 3].map(foo)
895
+ */
896
+ const lastToken = sourceCode.getLastToken(node);
897
+
898
+ if (node.type !== "EmptyStatement" && astUtils.isSemicolonToken(lastToken)) {
899
+ offsets.setDesiredOffset(lastToken, lastParentToken, 0);
900
+ }
901
+ }
902
+ }
903
+
904
+ /**
905
+ * Checks the indentation for nodes that are like function calls (`CallExpression` and `NewExpression`)
906
+ * @param {ASTNode} node A CallExpression or NewExpression node
907
+ * @returns {void}
908
+ */
909
+ function addFunctionCallIndent(node) {
910
+ let openingParen;
911
+
912
+ if (node.arguments.length) {
913
+ openingParen = sourceCode.getFirstTokenBetween(node.callee, node.arguments[0], astUtils.isOpeningParenToken);
914
+ } else {
915
+ openingParen = sourceCode.getLastToken(node, 1);
916
+ }
917
+ const closingParen = sourceCode.getLastToken(node);
918
+
919
+ parameterParens.add(openingParen);
920
+ parameterParens.add(closingParen);
921
+ offsets.setDesiredOffset(openingParen, sourceCode.getTokenBefore(openingParen), 0);
922
+
923
+ addElementListIndent(node.arguments, openingParen, closingParen, options.CallExpression.arguments);
924
+ }
925
+
926
+ /**
927
+ * Checks the indentation of parenthesized values, given a list of tokens in a program
928
+ * @param {Token[]} tokens A list of tokens
929
+ * @returns {void}
930
+ */
931
+ function addParensIndent(tokens) {
932
+ const parenStack = [];
933
+ const parenPairs = [];
934
+
935
+ tokens.forEach(nextToken => {
936
+
937
+ // Accumulate a list of parenthesis pairs
938
+ if (astUtils.isOpeningParenToken(nextToken)) {
939
+ parenStack.push(nextToken);
940
+ } else if (astUtils.isClosingParenToken(nextToken)) {
941
+ parenPairs.unshift({ left: parenStack.pop(), right: nextToken });
942
+ }
943
+ });
944
+
945
+ parenPairs.forEach(pair => {
946
+ const leftParen = pair.left;
947
+ const rightParen = pair.right;
948
+
949
+ // We only want to handle parens around expressions, so exclude parentheses that are in function parameters and function call arguments.
950
+ if (!parameterParens.has(leftParen) && !parameterParens.has(rightParen)) {
951
+ const parenthesizedTokens = new Set(sourceCode.getTokensBetween(leftParen, rightParen));
952
+
953
+ parenthesizedTokens.forEach(token => {
954
+ if (!parenthesizedTokens.has(offsets.getFirstDependency(token))) {
955
+ offsets.setDesiredOffset(token, leftParen, 1);
956
+ }
957
+ });
958
+ }
959
+
960
+ offsets.setDesiredOffset(rightParen, leftParen, 0);
961
+ });
962
+ }
963
+
964
+ /**
965
+ * Ignore all tokens within an unknown node whose offset do not depend
966
+ * on another token's offset within the unknown node
967
+ * @param {ASTNode} node Unknown Node
968
+ * @returns {void}
969
+ */
970
+ function ignoreNode(node) {
971
+ const unknownNodeTokens = new Set(sourceCode.getTokens(node, { includeComments: true }));
972
+
973
+ unknownNodeTokens.forEach(token => {
974
+ if (!unknownNodeTokens.has(offsets.getFirstDependency(token))) {
975
+ const firstTokenOfLine = tokenInfo.getFirstTokenOfLine(token);
976
+
977
+ if (token === firstTokenOfLine) {
978
+ offsets.ignoreToken(token);
979
+ } else {
980
+ offsets.setDesiredOffset(token, firstTokenOfLine, 0);
981
+ }
982
+ }
983
+ });
984
+ }
985
+
986
+ /**
987
+ * Check whether the given token is on the first line of a statement.
988
+ * @param {Token} token The token to check.
989
+ * @param {ASTNode} leafNode The expression node that the token belongs directly.
990
+ * @returns {boolean} `true` if the token is on the first line of a statement.
991
+ */
992
+ function isOnFirstLineOfStatement(token, leafNode) {
993
+ let node = leafNode;
994
+
995
+ while (node.parent && !node.parent.type.endsWith("Statement") && !node.parent.type.endsWith("Declaration")) {
996
+ node = node.parent;
997
+ }
998
+ node = node.parent;
999
+
1000
+ return !node || node.loc.start.line === token.loc.start.line;
1001
+ }
1002
+
1003
+ /**
1004
+ * Check whether there are any blank (whitespace-only) lines between
1005
+ * two tokens on separate lines.
1006
+ * @param {Token} firstToken The first token.
1007
+ * @param {Token} secondToken The second token.
1008
+ * @returns {boolean} `true` if the tokens are on separate lines and
1009
+ * there exists a blank line between them, `false` otherwise.
1010
+ */
1011
+ function hasBlankLinesBetween(firstToken, secondToken) {
1012
+ const firstTokenLine = firstToken.loc.end.line;
1013
+ const secondTokenLine = secondToken.loc.start.line;
1014
+
1015
+ if (firstTokenLine === secondTokenLine || firstTokenLine === secondTokenLine - 1) {
1016
+ return false;
1017
+ }
1018
+
1019
+ for (let line = firstTokenLine + 1; line < secondTokenLine; ++line) {
1020
+ if (!tokenInfo.firstTokensByLineNumber.has(line)) {
1021
+ return true;
1022
+ }
1023
+ }
1024
+
1025
+ return false;
1026
+ }
1027
+
1028
+ const ignoredNodeFirstTokens = new Set();
1029
+
1030
+ const baseOffsetListeners = {
1031
+ "ArrayExpression, ArrayPattern"(node) {
1032
+ const openingBracket = sourceCode.getFirstToken(node);
1033
+ const closingBracket = sourceCode.getTokenAfter(lodash.findLast(node.elements) || openingBracket, astUtils.isClosingBracketToken);
1034
+
1035
+ addElementListIndent(node.elements, openingBracket, closingBracket, options.ArrayExpression);
1036
+ },
1037
+
1038
+ "ObjectExpression, ObjectPattern"(node) {
1039
+ const openingCurly = sourceCode.getFirstToken(node);
1040
+ const closingCurly = sourceCode.getTokenAfter(
1041
+ node.properties.length ? node.properties[node.properties.length - 1] : openingCurly,
1042
+ astUtils.isClosingBraceToken
1043
+ );
1044
+
1045
+ addElementListIndent(node.properties, openingCurly, closingCurly, options.ObjectExpression);
1046
+ },
1047
+
1048
+ ArrowFunctionExpression(node) {
1049
+ const firstToken = sourceCode.getFirstToken(node);
1050
+
1051
+ if (astUtils.isOpeningParenToken(firstToken)) {
1052
+ const openingParen = firstToken;
1053
+ const closingParen = sourceCode.getTokenBefore(node.body, astUtils.isClosingParenToken);
1054
+
1055
+ parameterParens.add(openingParen);
1056
+ parameterParens.add(closingParen);
1057
+ addElementListIndent(node.params, openingParen, closingParen, options.FunctionExpression.parameters);
1058
+ }
1059
+ addBlocklessNodeIndent(node.body);
1060
+ },
1061
+
1062
+ AssignmentExpression(node) {
1063
+ const operator = sourceCode.getFirstTokenBetween(node.left, node.right, token => token.value === node.operator);
1064
+
1065
+ offsets.setDesiredOffsets([operator.range[0], node.range[1]], sourceCode.getLastToken(node.left), 1);
1066
+ offsets.ignoreToken(operator);
1067
+ offsets.ignoreToken(sourceCode.getTokenAfter(operator));
1068
+ },
1069
+
1070
+ "BinaryExpression, LogicalExpression"(node) {
1071
+ const operator = sourceCode.getFirstTokenBetween(node.left, node.right, token => token.value === node.operator);
1072
+
1073
+ /*
1074
+ * For backwards compatibility, don't check BinaryExpression indents, e.g.
1075
+ * var foo = bar &&
1076
+ * baz;
1077
+ */
1078
+
1079
+ const tokenAfterOperator = sourceCode.getTokenAfter(operator);
1080
+
1081
+ offsets.ignoreToken(operator);
1082
+ offsets.ignoreToken(tokenAfterOperator);
1083
+ offsets.setDesiredOffset(tokenAfterOperator, operator, 0);
1084
+ },
1085
+
1086
+ "BlockStatement, ClassBody"(node) {
1087
+
1088
+ let blockIndentLevel;
1089
+
1090
+ if (node.parent && isOuterIIFE(node.parent)) {
1091
+ blockIndentLevel = options.outerIIFEBody;
1092
+ } else if (node.parent && (node.parent.type === "FunctionExpression" || node.parent.type === "ArrowFunctionExpression")) {
1093
+ blockIndentLevel = options.FunctionExpression.body;
1094
+ } else if (node.parent && node.parent.type === "FunctionDeclaration") {
1095
+ blockIndentLevel = options.FunctionDeclaration.body;
1096
+ } else {
1097
+ blockIndentLevel = 1;
1098
+ }
1099
+
1100
+ /*
1101
+ * For blocks that aren't lone statements, ensure that the opening curly brace
1102
+ * is aligned with the parent.
1103
+ */
1104
+ if (!astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type)) {
1105
+ offsets.setDesiredOffset(sourceCode.getFirstToken(node), sourceCode.getFirstToken(node.parent), 0);
1106
+ }
1107
+ addElementListIndent(node.body, sourceCode.getFirstToken(node), sourceCode.getLastToken(node), blockIndentLevel);
1108
+ },
1109
+
1110
+ CallExpression: addFunctionCallIndent,
1111
+
1112
+
1113
+ "ClassDeclaration[superClass], ClassExpression[superClass]"(node) {
1114
+ const classToken = sourceCode.getFirstToken(node);
1115
+ const extendsToken = sourceCode.getTokenBefore(node.superClass, astUtils.isNotOpeningParenToken);
1116
+
1117
+ offsets.setDesiredOffsets([extendsToken.range[0], node.body.range[0]], classToken, 1);
1118
+ },
1119
+
1120
+ ConditionalExpression(node) {
1121
+ const firstToken = sourceCode.getFirstToken(node);
1122
+
1123
+ // `flatTernaryExpressions` option is for the following style:
1124
+ // var a =
1125
+ // foo > 0 ? bar :
1126
+ // foo < 0 ? baz :
1127
+ // /*else*/ qiz ;
1128
+ if (!options.flatTernaryExpressions ||
1129
+ !astUtils.isTokenOnSameLine(node.test, node.consequent) ||
1130
+ isOnFirstLineOfStatement(firstToken, node)
1131
+ ) {
1132
+ const questionMarkToken = sourceCode.getFirstTokenBetween(node.test, node.consequent, token => token.type === "Punctuator" && token.value === "?");
1133
+ const colonToken = sourceCode.getFirstTokenBetween(node.consequent, node.alternate, token => token.type === "Punctuator" && token.value === ":");
1134
+
1135
+ const firstConsequentToken = sourceCode.getTokenAfter(questionMarkToken);
1136
+ const lastConsequentToken = sourceCode.getTokenBefore(colonToken);
1137
+ const firstAlternateToken = sourceCode.getTokenAfter(colonToken);
1138
+
1139
+ offsets.setDesiredOffset(questionMarkToken, firstToken, 1);
1140
+ offsets.setDesiredOffset(colonToken, firstToken, 1);
1141
+
1142
+ offsets.setDesiredOffset(firstConsequentToken, firstToken, 1);
1143
+
1144
+ /*
1145
+ * The alternate and the consequent should usually have the same indentation.
1146
+ * If they share part of a line, align the alternate against the first token of the consequent.
1147
+ * This allows the alternate to be indented correctly in cases like this:
1148
+ * foo ? (
1149
+ * bar
1150
+ * ) : ( // this '(' is aligned with the '(' above, so it's considered to be aligned with `foo`
1151
+ * baz // as a result, `baz` is offset by 1 rather than 2
1152
+ * )
1153
+ */
1154
+ if (lastConsequentToken.loc.end.line === firstAlternateToken.loc.start.line) {
1155
+ offsets.setDesiredOffset(firstAlternateToken, firstConsequentToken, 0);
1156
+ } else {
1157
+
1158
+ /**
1159
+ * If the alternate and consequent do not share part of a line, offset the alternate from the first
1160
+ * token of the conditional expression. For example:
1161
+ * foo ? bar
1162
+ * : baz
1163
+ *
1164
+ * If `baz` were aligned with `bar` rather than being offset by 1 from `foo`, `baz` would end up
1165
+ * having no expected indentation.
1166
+ */
1167
+ offsets.setDesiredOffset(firstAlternateToken, firstToken, 1);
1168
+ }
1169
+ }
1170
+ },
1171
+
1172
+ "DoWhileStatement, WhileStatement, ForInStatement, ForOfStatement": node => addBlocklessNodeIndent(node.body),
1173
+
1174
+ ExportNamedDeclaration(node) {
1175
+ if (node.declaration === null) {
1176
+ const closingCurly = sourceCode.getLastToken(node, astUtils.isClosingBraceToken);
1177
+
1178
+ // Indent the specifiers in `export {foo, bar, baz}`
1179
+ addElementListIndent(node.specifiers, sourceCode.getFirstToken(node, { skip: 1 }), closingCurly, 1);
1180
+
1181
+ if (node.source) {
1182
+
1183
+ // Indent everything after and including the `from` token in `export {foo, bar, baz} from 'qux'`
1184
+ offsets.setDesiredOffsets([closingCurly.range[1], node.range[1]], sourceCode.getFirstToken(node), 1);
1185
+ }
1186
+ }
1187
+ },
1188
+
1189
+ ForStatement(node) {
1190
+ const forOpeningParen = sourceCode.getFirstToken(node, 1);
1191
+
1192
+ if (node.init) {
1193
+ offsets.setDesiredOffsets(node.init.range, forOpeningParen, 1);
1194
+ }
1195
+ if (node.test) {
1196
+ offsets.setDesiredOffsets(node.test.range, forOpeningParen, 1);
1197
+ }
1198
+ if (node.update) {
1199
+ offsets.setDesiredOffsets(node.update.range, forOpeningParen, 1);
1200
+ }
1201
+ addBlocklessNodeIndent(node.body);
1202
+ },
1203
+
1204
+ "FunctionDeclaration, FunctionExpression"(node) {
1205
+ const closingParen = sourceCode.getTokenBefore(node.body);
1206
+ const openingParen = sourceCode.getTokenBefore(node.params.length ? node.params[0] : closingParen);
1207
+
1208
+ parameterParens.add(openingParen);
1209
+ parameterParens.add(closingParen);
1210
+ addElementListIndent(node.params, openingParen, closingParen, options[node.type].parameters);
1211
+ },
1212
+
1213
+ IfStatement(node) {
1214
+ addBlocklessNodeIndent(node.consequent);
1215
+ if (node.alternate && node.alternate.type !== "IfStatement") {
1216
+ addBlocklessNodeIndent(node.alternate);
1217
+ }
1218
+ },
1219
+
1220
+ ImportDeclaration(node) {
1221
+ if (node.specifiers.some(specifier => specifier.type === "ImportSpecifier")) {
1222
+ const openingCurly = sourceCode.getFirstToken(node, astUtils.isOpeningBraceToken);
1223
+ const closingCurly = sourceCode.getLastToken(node, astUtils.isClosingBraceToken);
1224
+
1225
+ addElementListIndent(node.specifiers.filter(specifier => specifier.type === "ImportSpecifier"), openingCurly, closingCurly, options.ImportDeclaration);
1226
+ }
1227
+
1228
+ const fromToken = sourceCode.getLastToken(node, token => token.type === "Identifier" && token.value === "from");
1229
+ const sourceToken = sourceCode.getLastToken(node, token => token.type === "String");
1230
+ const semiToken = sourceCode.getLastToken(node, token => token.type === "Punctuator" && token.value === ";");
1231
+
1232
+ if (fromToken) {
1233
+ const end = semiToken && semiToken.range[1] === sourceToken.range[1] ? node.range[1] : sourceToken.range[1];
1234
+
1235
+ offsets.setDesiredOffsets([fromToken.range[0], end], sourceCode.getFirstToken(node), 1);
1236
+ }
1237
+ },
1238
+
1239
+ "MemberExpression, JSXMemberExpression, MetaProperty"(node) {
1240
+ const object = node.type === "MetaProperty" ? node.meta : node.object;
1241
+ const firstNonObjectToken = sourceCode.getFirstTokenBetween(object, node.property, astUtils.isNotClosingParenToken);
1242
+ const secondNonObjectToken = sourceCode.getTokenAfter(firstNonObjectToken);
1243
+
1244
+ const objectParenCount = sourceCode.getTokensBetween(object, node.property, { filter: astUtils.isClosingParenToken }).length;
1245
+ const firstObjectToken = objectParenCount
1246
+ ? sourceCode.getTokenBefore(object, { skip: objectParenCount - 1 })
1247
+ : sourceCode.getFirstToken(object);
1248
+ const lastObjectToken = sourceCode.getTokenBefore(firstNonObjectToken);
1249
+ const firstPropertyToken = node.computed ? firstNonObjectToken : secondNonObjectToken;
1250
+
1251
+ if (node.computed) {
1252
+
1253
+ // For computed MemberExpressions, match the closing bracket with the opening bracket.
1254
+ offsets.setDesiredOffset(sourceCode.getLastToken(node), firstNonObjectToken, 0);
1255
+ offsets.setDesiredOffsets(node.property.range, firstNonObjectToken, 1);
1256
+ }
1257
+
1258
+ /*
1259
+ * If the object ends on the same line that the property starts, match against the last token
1260
+ * of the object, to ensure that the MemberExpression is not indented.
1261
+ *
1262
+ * Otherwise, match against the first token of the object, e.g.
1263
+ * foo
1264
+ * .bar
1265
+ * .baz // <-- offset by 1 from `foo`
1266
+ */
1267
+ const offsetBase = lastObjectToken.loc.end.line === firstPropertyToken.loc.start.line
1268
+ ? lastObjectToken
1269
+ : firstObjectToken;
1270
+
1271
+ if (typeof options.MemberExpression === "number") {
1272
+
1273
+ // Match the dot (for non-computed properties) or the opening bracket (for computed properties) against the object.
1274
+ offsets.setDesiredOffset(firstNonObjectToken, offsetBase, options.MemberExpression);
1275
+
1276
+ /*
1277
+ * For computed MemberExpressions, match the first token of the property against the opening bracket.
1278
+ * Otherwise, match the first token of the property against the object.
1279
+ */
1280
+ offsets.setDesiredOffset(secondNonObjectToken, node.computed ? firstNonObjectToken : offsetBase, options.MemberExpression);
1281
+ } else {
1282
+
1283
+ // If the MemberExpression option is off, ignore the dot and the first token of the property.
1284
+ offsets.ignoreToken(firstNonObjectToken);
1285
+ offsets.ignoreToken(secondNonObjectToken);
1286
+
1287
+ // To ignore the property indentation, ensure that the property tokens depend on the ignored tokens.
1288
+ offsets.setDesiredOffset(firstNonObjectToken, offsetBase, 0);
1289
+ offsets.setDesiredOffset(secondNonObjectToken, firstNonObjectToken, 0);
1290
+ }
1291
+ },
1292
+
1293
+ NewExpression(node) {
1294
+
1295
+ // Only indent the arguments if the NewExpression has parens (e.g. `new Foo(bar)` or `new Foo()`, but not `new Foo`
1296
+ if (node.arguments.length > 0 ||
1297
+ astUtils.isClosingParenToken(sourceCode.getLastToken(node)) &&
1298
+ astUtils.isOpeningParenToken(sourceCode.getLastToken(node, 1))) {
1299
+ addFunctionCallIndent(node);
1300
+ }
1301
+ },
1302
+
1303
+ Property(node) {
1304
+ if (!node.shorthand && !node.method && node.kind === "init") {
1305
+ const colon = sourceCode.getFirstTokenBetween(node.key, node.value, astUtils.isColonToken);
1306
+
1307
+ offsets.ignoreToken(sourceCode.getTokenAfter(colon));
1308
+ }
1309
+ },
1310
+
1311
+ SwitchStatement(node) {
1312
+ const openingCurly = sourceCode.getTokenAfter(node.discriminant, astUtils.isOpeningBraceToken);
1313
+ const closingCurly = sourceCode.getLastToken(node);
1314
+
1315
+ offsets.setDesiredOffsets([openingCurly.range[1], closingCurly.range[0]], openingCurly, options.SwitchCase);
1316
+
1317
+ if (node.cases.length) {
1318
+ sourceCode.getTokensBetween(
1319
+ node.cases[node.cases.length - 1],
1320
+ closingCurly,
1321
+ { includeComments: true, filter: astUtils.isCommentToken }
1322
+ ).forEach(token => offsets.ignoreToken(token));
1323
+ }
1324
+ },
1325
+
1326
+ SwitchCase(node) {
1327
+ if (!(node.consequent.length === 1 && node.consequent[0].type === "BlockStatement")) {
1328
+ const caseKeyword = sourceCode.getFirstToken(node);
1329
+ const tokenAfterCurrentCase = sourceCode.getTokenAfter(node);
1330
+
1331
+ offsets.setDesiredOffsets([caseKeyword.range[1], tokenAfterCurrentCase.range[0]], caseKeyword, 1);
1332
+ }
1333
+ },
1334
+
1335
+ TemplateLiteral(node) {
1336
+ node.expressions.forEach((expression, index) => {
1337
+ const previousQuasi = node.quasis[index];
1338
+ const nextQuasi = node.quasis[index + 1];
1339
+ const tokenToAlignFrom = previousQuasi.loc.start.line === previousQuasi.loc.end.line
1340
+ ? sourceCode.getFirstToken(previousQuasi)
1341
+ : null;
1342
+
1343
+ offsets.setDesiredOffsets([previousQuasi.range[1], nextQuasi.range[0]], tokenToAlignFrom, 1);
1344
+ offsets.setDesiredOffset(sourceCode.getFirstToken(nextQuasi), tokenToAlignFrom, 0);
1345
+ });
1346
+ },
1347
+
1348
+ VariableDeclaration(node) {
1349
+ let variableIndent = Object.prototype.hasOwnProperty.call(options.VariableDeclarator, node.kind)
1350
+ ? options.VariableDeclarator[node.kind]
1351
+ : DEFAULT_VARIABLE_INDENT;
1352
+
1353
+ const firstToken = sourceCode.getFirstToken(node),
1354
+ lastToken = sourceCode.getLastToken(node);
1355
+
1356
+ if (options.VariableDeclarator[node.kind] === "first") {
1357
+ if (node.declarations.length > 1) {
1358
+ addElementListIndent(
1359
+ node.declarations,
1360
+ firstToken,
1361
+ lastToken,
1362
+ "first"
1363
+ );
1364
+ return;
1365
+ }
1366
+
1367
+ variableIndent = DEFAULT_VARIABLE_INDENT;
1368
+ }
1369
+
1370
+ if (node.declarations[node.declarations.length - 1].loc.start.line > node.loc.start.line) {
1371
+
1372
+ /*
1373
+ * VariableDeclarator indentation is a bit different from other forms of indentation, in that the
1374
+ * indentation of an opening bracket sometimes won't match that of a closing bracket. For example,
1375
+ * the following indentations are correct:
1376
+ *
1377
+ * var foo = {
1378
+ * ok: true
1379
+ * };
1380
+ *
1381
+ * var foo = {
1382
+ * ok: true,
1383
+ * },
1384
+ * bar = 1;
1385
+ *
1386
+ * Account for when exiting the AST (after indentations have already been set for the nodes in
1387
+ * the declaration) by manually increasing the indentation level of the tokens in this declarator
1388
+ * on the same line as the start of the declaration, provided that there are declarators that
1389
+ * follow this one.
1390
+ */
1391
+ offsets.setDesiredOffsets(node.range, firstToken, variableIndent, true);
1392
+ } else {
1393
+ offsets.setDesiredOffsets(node.range, firstToken, variableIndent);
1394
+ }
1395
+
1396
+ if (astUtils.isSemicolonToken(lastToken)) {
1397
+ offsets.ignoreToken(lastToken);
1398
+ }
1399
+ },
1400
+
1401
+ VariableDeclarator(node) {
1402
+ if (node.init) {
1403
+ const equalOperator = sourceCode.getTokenBefore(node.init, astUtils.isNotOpeningParenToken);
1404
+ const tokenAfterOperator = sourceCode.getTokenAfter(equalOperator);
1405
+
1406
+ offsets.ignoreToken(equalOperator);
1407
+ offsets.ignoreToken(tokenAfterOperator);
1408
+ offsets.setDesiredOffsets([tokenAfterOperator.range[0], node.range[1]], equalOperator, 1);
1409
+ offsets.setDesiredOffset(equalOperator, sourceCode.getLastToken(node.id), 0);
1410
+ }
1411
+ },
1412
+
1413
+ "JSXAttribute[value]"(node) {
1414
+ const equalsToken = sourceCode.getFirstTokenBetween(node.name, node.value, token => token.type === "Punctuator" && token.value === "=");
1415
+
1416
+ offsets.setDesiredOffsets([equalsToken.range[0], node.value.range[1]], sourceCode.getFirstToken(node.name), 1);
1417
+ },
1418
+
1419
+ JSXElement(node) {
1420
+ if (node.closingElement) {
1421
+ addElementListIndent(node.children, sourceCode.getFirstToken(node.openingElement), sourceCode.getFirstToken(node.closingElement), 1);
1422
+ }
1423
+ },
1424
+
1425
+ JSXOpeningElement(node) {
1426
+ const firstToken = sourceCode.getFirstToken(node);
1427
+ let closingToken;
1428
+
1429
+ if (node.selfClosing) {
1430
+ closingToken = sourceCode.getLastToken(node, { skip: 1 });
1431
+ offsets.setDesiredOffset(sourceCode.getLastToken(node), closingToken, 0);
1432
+ } else {
1433
+ closingToken = sourceCode.getLastToken(node);
1434
+ }
1435
+ offsets.setDesiredOffsets(node.name.range, sourceCode.getFirstToken(node));
1436
+ addElementListIndent(node.attributes, firstToken, closingToken, 1);
1437
+ },
1438
+
1439
+ JSXClosingElement(node) {
1440
+ const firstToken = sourceCode.getFirstToken(node);
1441
+
1442
+ offsets.setDesiredOffsets(node.name.range, firstToken, 1);
1443
+ },
1444
+
1445
+ JSXExpressionContainer(node) {
1446
+ const openingCurly = sourceCode.getFirstToken(node);
1447
+ const closingCurly = sourceCode.getLastToken(node);
1448
+
1449
+ offsets.setDesiredOffsets(
1450
+ [openingCurly.range[1], closingCurly.range[0]],
1451
+ openingCurly,
1452
+ 1
1453
+ );
1454
+ },
1455
+
1456
+ "*"(node) {
1457
+ const firstToken = sourceCode.getFirstToken(node);
1458
+
1459
+ // Ensure that the children of every node are indented at least as much as the first token.
1460
+ if (firstToken && !ignoredNodeFirstTokens.has(firstToken)) {
1461
+ offsets.setDesiredOffsets(node.range, firstToken, 0);
1462
+ }
1463
+ }
1464
+ };
1465
+
1466
+ const listenerCallQueue = [];
1467
+
1468
+ /*
1469
+ * To ignore the indentation of a node:
1470
+ * 1. Don't call the node's listener when entering it (if it has a listener)
1471
+ * 2. Don't set any offsets against the first token of the node.
1472
+ * 3. Call `ignoreNode` on the node sometime after exiting it and before validating offsets.
1473
+ */
1474
+ const offsetListeners = lodash.mapValues(
1475
+ baseOffsetListeners,
1476
+
1477
+ /*
1478
+ * Offset listener calls are deferred until traversal is finished, and are called as
1479
+ * part of the final `Program:exit` listener. This is necessary because a node might
1480
+ * be matched by multiple selectors.
1481
+ *
1482
+ * Example: Suppose there is an offset listener for `Identifier`, and the user has
1483
+ * specified in configuration that `MemberExpression > Identifier` should be ignored.
1484
+ * Due to selector specificity rules, the `Identifier` listener will get called first. However,
1485
+ * if a given Identifier node is supposed to be ignored, then the `Identifier` offset listener
1486
+ * should not have been called at all. Without doing extra selector matching, we don't know
1487
+ * whether the Identifier matches the `MemberExpression > Identifier` selector until the
1488
+ * `MemberExpression > Identifier` listener is called.
1489
+ *
1490
+ * To avoid this, the `Identifier` listener isn't called until traversal finishes and all
1491
+ * ignored nodes are known.
1492
+ */
1493
+ listener =>
1494
+ node =>
1495
+ listenerCallQueue.push({ listener, node })
1496
+ );
1497
+
1498
+ // For each ignored node selector, set up a listener to collect it into the `ignoredNodes` set.
1499
+ const ignoredNodes = new Set();
1500
+
1501
+ /**
1502
+ * Ignores a node
1503
+ * @param {ASTNode} node The node to ignore
1504
+ * @returns {void}
1505
+ */
1506
+ function addToIgnoredNodes(node) {
1507
+ ignoredNodes.add(node);
1508
+ ignoredNodeFirstTokens.add(sourceCode.getFirstToken(node));
1509
+ }
1510
+
1511
+ const ignoredNodeListeners = options.ignoredNodes.reduce(
1512
+ (listeners, ignoredSelector) => Object.assign(listeners, { [ignoredSelector]: addToIgnoredNodes }),
1513
+ {}
1514
+ );
1515
+
1516
+ /*
1517
+ * Join the listeners, and add a listener to verify that all tokens actually have the correct indentation
1518
+ * at the end.
1519
+ *
1520
+ * Using Object.assign will cause some offset listeners to be overwritten if the same selector also appears
1521
+ * in `ignoredNodeListeners`. This isn't a problem because all of the matching nodes will be ignored,
1522
+ * so those listeners wouldn't be called anyway.
1523
+ */
1524
+ return Object.assign(
1525
+ offsetListeners,
1526
+ ignoredNodeListeners,
1527
+ {
1528
+ "*:exit"(node) {
1529
+
1530
+ // If a node's type is nonstandard, we can't tell how its children should be offset, so ignore it.
1531
+ if (!KNOWN_NODES.has(node.type)) {
1532
+ addToIgnoredNodes(node);
1533
+ }
1534
+ },
1535
+ "Program:exit"() {
1536
+
1537
+ // If ignoreComments option is enabled, ignore all comment tokens.
1538
+ if (options.ignoreComments) {
1539
+ sourceCode.getAllComments()
1540
+ .forEach(comment => offsets.ignoreToken(comment));
1541
+ }
1542
+
1543
+ // Invoke the queued offset listeners for the nodes that aren't ignored.
1544
+ listenerCallQueue
1545
+ .filter(nodeInfo => !ignoredNodes.has(nodeInfo.node))
1546
+ .forEach(nodeInfo => nodeInfo.listener(nodeInfo.node));
1547
+
1548
+ // Update the offsets for ignored nodes to prevent their child tokens from being reported.
1549
+ ignoredNodes.forEach(ignoreNode);
1550
+
1551
+ addParensIndent(sourceCode.ast.tokens);
1552
+
1553
+ /*
1554
+ * Create a Map from (tokenOrComment) => (precedingToken).
1555
+ * This is necessary because sourceCode.getTokenBefore does not handle a comment as an argument correctly.
1556
+ */
1557
+ const precedingTokens = sourceCode.ast.comments.reduce((commentMap, comment) => {
1558
+ const tokenOrCommentBefore = sourceCode.getTokenBefore(comment, { includeComments: true });
1559
+
1560
+ return commentMap.set(comment, commentMap.has(tokenOrCommentBefore) ? commentMap.get(tokenOrCommentBefore) : tokenOrCommentBefore);
1561
+ }, new WeakMap());
1562
+
1563
+ sourceCode.lines.forEach((line, lineIndex) => {
1564
+ const lineNumber = lineIndex + 1;
1565
+
1566
+ if (!tokenInfo.firstTokensByLineNumber.has(lineNumber)) {
1567
+
1568
+ // Don't check indentation on blank lines
1569
+ return;
1570
+ }
1571
+
1572
+ const firstTokenOfLine = tokenInfo.firstTokensByLineNumber.get(lineNumber);
1573
+
1574
+ if (firstTokenOfLine.loc.start.line !== lineNumber) {
1575
+
1576
+ // Don't check the indentation of multi-line tokens (e.g. template literals or block comments) twice.
1577
+ return;
1578
+ }
1579
+
1580
+ // If the token matches the expected expected indentation, don't report it.
1581
+ if (validateTokenIndent(firstTokenOfLine, offsets.getDesiredIndent(firstTokenOfLine))) {
1582
+ return;
1583
+ }
1584
+
1585
+ if (astUtils.isCommentToken(firstTokenOfLine)) {
1586
+ const tokenBefore = precedingTokens.get(firstTokenOfLine);
1587
+ const tokenAfter = tokenBefore ? sourceCode.getTokenAfter(tokenBefore) : sourceCode.ast.tokens[0];
1588
+
1589
+ const mayAlignWithBefore = tokenBefore && !hasBlankLinesBetween(tokenBefore, firstTokenOfLine);
1590
+ const mayAlignWithAfter = tokenAfter && !hasBlankLinesBetween(firstTokenOfLine, tokenAfter);
1591
+
1592
+ // If a comment matches the expected indentation of the token immediately before or after, don't report it.
1593
+ if (
1594
+ mayAlignWithBefore && validateTokenIndent(firstTokenOfLine, offsets.getDesiredIndent(tokenBefore)) ||
1595
+ mayAlignWithAfter && validateTokenIndent(firstTokenOfLine, offsets.getDesiredIndent(tokenAfter))
1596
+ ) {
1597
+ return;
1598
+ }
1599
+ }
1600
+
1601
+ // Otherwise, report the token/comment.
1602
+ report(firstTokenOfLine, offsets.getDesiredIndent(firstTokenOfLine));
1603
+ });
1604
+ }
1605
+ }
1606
+ );
1607
+ }
1608
+ };