linter-bundle 5.0.1 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/.linter-bundle.js +4 -0
  2. package/.linter-bundle.schema.json +125 -0
  3. package/CHANGELOG.md +79 -3
  4. package/README.md +5 -3
  5. package/TODO.md +10 -0
  6. package/eslint/index.cjs +6 -3
  7. package/eslint/overrides-javascript.cjs +1 -1
  8. package/eslint/overrides-jest.cjs +1 -0
  9. package/eslint/overrides-jsdoc.cjs +1 -0
  10. package/eslint/rules/no-global-undefined-check.js +5 -3
  11. package/eslint/rules/no-unnecessary-typeof.js +26 -24
  12. package/eslint/rules/restricted-filenames.js +3 -1
  13. package/helper/ensure-type.cjs +2 -2
  14. package/helper/get-git-files.js +1 -1
  15. package/helper/get-outdated-dependencies.js +1 -1
  16. package/helper/get-outdated-overrides.js +1 -1
  17. package/helper/get-stylelint-path.js +1 -1
  18. package/helper/is-npm-or-yarn.js +1 -1
  19. package/helper/linter-bundle-config.d.ts +7 -7
  20. package/helper/linter-bundle-config.js +28 -6
  21. package/helper/run-process.js +3 -3
  22. package/lint.js +31 -35
  23. package/package.json +27 -26
  24. package/stylelint/index.cjs +89 -5
  25. package/stylelint/plugins/stylelint-15.11.0-stylistic/LICENSE +20 -0
  26. package/stylelint/plugins/stylelint-15.11.0-stylistic/html-tags/LICENSE +9 -0
  27. package/stylelint/plugins/stylelint-15.11.0-stylistic/html-tags/index.cjs +122 -0
  28. package/stylelint/plugins/stylelint-15.11.0-stylistic/reference/selectors.cjs +327 -0
  29. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-name-case/README.md +110 -0
  30. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-name-case/index.cjs +66 -0
  31. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-name-space-after/README.md +117 -0
  32. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-name-space-after/index.cjs +55 -0
  33. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-semicolon-newline-after/README.md +63 -0
  34. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-semicolon-newline-after/index.cjs +87 -0
  35. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-semicolon-space-before/README.md +50 -0
  36. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-semicolon-space-before/index.cjs +70 -0
  37. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/atRuleNameSpaceChecker.cjs +56 -0
  38. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-empty-line-before/README.md +238 -0
  39. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-empty-line-before/index.cjs +130 -0
  40. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-after/README.md +196 -0
  41. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-after/index.cjs +154 -0
  42. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-before/README.md +93 -0
  43. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-before/index.cjs +133 -0
  44. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-space-before/README.md +174 -0
  45. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-space-before/index.cjs +111 -0
  46. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-newline-after/README.md +138 -0
  47. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-newline-after/index.cjs +184 -0
  48. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-space-after/README.md +191 -0
  49. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-space-after/index.cjs +118 -0
  50. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-space-before/README.md +218 -0
  51. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-space-before/index.cjs +141 -0
  52. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/color-hex-case/README.md +58 -0
  53. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/color-hex-case/index.cjs +95 -0
  54. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-after/README.md +72 -0
  55. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-after/index.cjs +95 -0
  56. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-before/README.md +67 -0
  57. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-before/index.cjs +96 -0
  58. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-newline-after/README.md +141 -0
  59. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-newline-after/index.cjs +109 -0
  60. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-newline-before/README.md +120 -0
  61. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-newline-before/index.cjs +75 -0
  62. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-space-after/README.md +147 -0
  63. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-space-after/index.cjs +97 -0
  64. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-space-before/README.md +130 -0
  65. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-space-before/index.cjs +106 -0
  66. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-trailing-semicolon/README.md +108 -0
  67. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-trailing-semicolon/index.cjs +147 -0
  68. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-newline-after/README.md +78 -0
  69. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-newline-after/index.cjs +99 -0
  70. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-space-after/README.md +111 -0
  71. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-space-after/index.cjs +75 -0
  72. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-space-before/README.md +72 -0
  73. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-space-before/index.cjs +74 -0
  74. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declarationBangSpaceChecker.cjs +63 -0
  75. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declarationColonSpaceChecker.cjs +58 -0
  76. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/findMediaOperator.cjs +32 -0
  77. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-newline-after/README.md +113 -0
  78. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-newline-after/index.cjs +61 -0
  79. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-newline-before/README.md +129 -0
  80. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-newline-before/index.cjs +61 -0
  81. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-space-after/README.md +144 -0
  82. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-space-after/index.cjs +62 -0
  83. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-space-before/README.md +144 -0
  84. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-space-before/index.cjs +62 -0
  85. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-max-empty-lines/README.md +78 -0
  86. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-max-empty-lines/index.cjs +115 -0
  87. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-parentheses-newline-inside/README.md +144 -0
  88. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-parentheses-newline-inside/index.cjs +282 -0
  89. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-parentheses-space-inside/README.md +140 -0
  90. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-parentheses-space-inside/index.cjs +182 -0
  91. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-whitespace-after/README.md +80 -0
  92. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-whitespace-after/index.cjs +198 -0
  93. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/functionCommaSpaceChecker.cjs +125 -0
  94. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/functionCommaSpaceFix.cjs +51 -0
  95. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/indentation/README.md +339 -0
  96. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/indentation/index.cjs +743 -0
  97. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/linebreaks/README.md +21 -0
  98. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/linebreaks/index.cjs +132 -0
  99. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/max-empty-lines/README.md +116 -0
  100. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/max-empty-lines/index.cjs +225 -0
  101. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/max-line-length/README.md +151 -0
  102. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/max-line-length/index.cjs +200 -0
  103. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-colon-space-after/README.md +72 -0
  104. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-colon-space-after/index.cjs +91 -0
  105. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-colon-space-before/README.md +72 -0
  106. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-colon-space-before/index.cjs +91 -0
  107. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-name-case/README.md +108 -0
  108. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-name-case/index.cjs +93 -0
  109. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-parentheses-space-inside/README.md +62 -0
  110. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-parentheses-space-inside/index.cjs +112 -0
  111. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-range-operator-space-after/README.md +72 -0
  112. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-range-operator-space-after/index.cjs +109 -0
  113. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-range-operator-space-before/README.md +72 -0
  114. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-range-operator-space-before/index.cjs +109 -0
  115. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-newline-after/README.md +113 -0
  116. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-newline-after/index.cjs +97 -0
  117. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-newline-before/README.md +111 -0
  118. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-newline-before/index.cjs +49 -0
  119. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-space-after/README.md +136 -0
  120. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-space-after/index.cjs +93 -0
  121. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-space-before/README.md +136 -0
  122. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-space-before/index.cjs +93 -0
  123. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/mediaFeatureColonSpaceChecker.cjs +54 -0
  124. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/mediaQueryListCommaWhitespaceChecker.cjs +73 -0
  125. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-empty-first-line/README.md +34 -0
  126. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-empty-first-line/index.cjs +63 -0
  127. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-eol-whitespace/README.md +79 -0
  128. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-eol-whitespace/index.cjs +302 -0
  129. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-extra-semicolons/README.md +78 -0
  130. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-extra-semicolons/index.cjs +246 -0
  131. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-missing-end-of-source-newline/README.md +34 -0
  132. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-missing-end-of-source-newline/index.cjs +62 -0
  133. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/number-leading-zero/README.md +74 -0
  134. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/number-leading-zero/index.cjs +197 -0
  135. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/number-no-trailing-zeros/README.md +40 -0
  136. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/number-no-trailing-zeros/index.cjs +139 -0
  137. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/property-case/README.md +192 -0
  138. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/property-case/index.cjs +95 -0
  139. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-brackets-space-inside/README.md +112 -0
  140. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-brackets-space-inside/index.cjs +214 -0
  141. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-operator-space-after/README.md +162 -0
  142. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-operator-space-after/index.cjs +109 -0
  143. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-operator-space-before/README.md +162 -0
  144. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-operator-space-before/index.cjs +88 -0
  145. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-combinator-space-after/README.md +78 -0
  146. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-combinator-space-after/index.cjs +67 -0
  147. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-combinator-space-before/README.md +78 -0
  148. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-combinator-space-before/index.cjs +67 -0
  149. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-descendant-combinator-no-non-space/README.md +40 -0
  150. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-descendant-combinator-no-non-space/index.cjs +95 -0
  151. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-newline-after/README.md +120 -0
  152. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-newline-after/index.cjs +126 -0
  153. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-newline-before/README.md +112 -0
  154. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-newline-before/index.cjs +101 -0
  155. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-space-after/README.md +110 -0
  156. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-space-after/index.cjs +92 -0
  157. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-space-before/README.md +110 -0
  158. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-space-before/index.cjs +92 -0
  159. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-max-empty-lines/README.md +103 -0
  160. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-max-empty-lines/index.cjs +74 -0
  161. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-class-case/README.md +108 -0
  162. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-class-case/index.cjs +104 -0
  163. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-class-parentheses-space-inside/README.md +62 -0
  164. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-class-parentheses-space-inside/index.cjs +162 -0
  165. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-element-case/README.md +128 -0
  166. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-element-case/index.cjs +90 -0
  167. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selectorAttributeOperatorSpaceChecker.cjs +95 -0
  168. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selectorCombinatorSpaceChecker.cjs +113 -0
  169. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selectorListCommaWhitespaceChecker.cjs +64 -0
  170. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/string-quotes/README.md +130 -0
  171. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/string-quotes/index.cjs +256 -0
  172. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/unicode-bom/README.md +41 -0
  173. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/unicode-bom/index.cjs +67 -0
  174. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/unit-case/README.md +126 -0
  175. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/unit-case/index.cjs +133 -0
  176. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-newline-after/README.md +102 -0
  177. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-newline-after/index.cjs +107 -0
  178. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-newline-before/README.md +100 -0
  179. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-newline-before/index.cjs +49 -0
  180. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-space-after/README.md +136 -0
  181. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-space-after/index.cjs +94 -0
  182. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-space-before/README.md +136 -0
  183. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-space-before/index.cjs +94 -0
  184. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-max-empty-lines/README.md +121 -0
  185. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-max-empty-lines/index.cjs +68 -0
  186. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/valueListCommaWhitespaceChecker.cjs +74 -0
  187. package/stylelint/plugins/stylelint-15.11.0-stylistic/style-search/LICENSE +13 -0
  188. package/stylelint/plugins/stylelint-15.11.0-stylistic/style-search/index.cjs +216 -0
  189. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/addEmptyLineAfter.cjs +30 -0
  190. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/hasEmptyBlock.cjs +14 -0
  191. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/nextNonCommentNode.cjs +21 -0
  192. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/removeEmptyLinesAfter.cjs +16 -0
  193. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/whitespaceChecker.cjs +361 -0
  194. package/stylelint/plugins/stylelint-selector-no-empty.js +8 -8
  195. package/stylelint/plugins/stylelint-selector-tag-no-without-class.js +4 -4
  196. package/stylelint/plugins/stylelint-high-performance-animation.js +0 -276
  197. package/stylelint/plugins/stylelint-stylistic.js +0 -188
@@ -0,0 +1,93 @@
1
+ # block-closing-brace-newline-before
2
+
3
+ Require a newline or disallow whitespace before the closing brace of blocks.
4
+
5
+ <!-- prettier-ignore -->
6
+ ```css
7
+ a { color: pink;
8
+ }
9
+ /** ↑
10
+ * The newline before this brace */
11
+ ```
12
+
13
+ The [`fix` option](https://stylelint.io/user-guide/options/#fix) can automatically fix all of the problems reported by this rule.
14
+
15
+ ## Options
16
+
17
+ `string`: `"always"|"always-multi-line"|"never-multi-line"`
18
+
19
+ ### `"always"`
20
+
21
+ There _must always_ be a newline before the closing brace.
22
+
23
+ The following patterns are considered problems:
24
+
25
+ <!-- prettier-ignore -->
26
+ ```css
27
+ a { color: pink;}
28
+ ```
29
+
30
+ The following patterns are _not_ considered problems:
31
+
32
+ <!-- prettier-ignore -->
33
+ ```css
34
+ a { color: pink;
35
+ }
36
+ ```
37
+
38
+ <!-- prettier-ignore -->
39
+ ```css
40
+ a {
41
+ color: pink;
42
+ }
43
+ ```
44
+
45
+ ### `"always-multi-line"`
46
+
47
+ There _must always_ be a newline before the closing brace in multi-line blocks.
48
+
49
+ The following patterns are considered problems:
50
+
51
+ <!-- prettier-ignore -->
52
+ ```css
53
+ a {
54
+ color: pink;}
55
+ ```
56
+
57
+ The following patterns are _not_ considered problems:
58
+
59
+ <!-- prettier-ignore -->
60
+ ```css
61
+ a { color: pink; }
62
+ ```
63
+
64
+ <!-- prettier-ignore -->
65
+ ```css
66
+ a { color: pink;
67
+ }
68
+ ```
69
+
70
+ ### `"never-multi-line"`
71
+
72
+ There _must never_ be whitespace before the closing brace in multi-line blocks.
73
+
74
+ The following patterns are considered problems:
75
+
76
+ <!-- prettier-ignore -->
77
+ ```css
78
+ a {
79
+ color: pink; }
80
+ ```
81
+
82
+ The following patterns are _not_ considered problems:
83
+
84
+ <!-- prettier-ignore -->
85
+ ```css
86
+ a { color: pink; }
87
+ ```
88
+
89
+ <!-- prettier-ignore -->
90
+ ```css
91
+ a {
92
+ color: pink;}
93
+ ```
@@ -0,0 +1,133 @@
1
+ /* eslint-disable -- We want to keep as much of the original code as possible */
2
+ // @ts-nocheck
3
+
4
+ const stylelint = require('stylelint');
5
+ const blockString = require('stylelint/lib/utils/blockString.cjs');
6
+ const hasBlock = require('stylelint/lib/utils/hasBlock.cjs');
7
+ const isSingleLineString = require('stylelint/lib/utils/isSingleLineString.cjs');
8
+ const report = require('stylelint/lib/utils/report.cjs');
9
+ const ruleMessages = require('stylelint/lib/utils/ruleMessages.cjs');
10
+ const validateOptions = require('stylelint/lib/utils/validateOptions.cjs');
11
+
12
+ const hasEmptyBlock = require('../../utils/hasEmptyBlock.cjs');
13
+
14
+ const ruleName = 'plugin/block-closing-brace-newline-before';
15
+
16
+ const messages = ruleMessages(ruleName, {
17
+ expectedBefore: 'Expected newline before "}"',
18
+ expectedBeforeMultiLine: 'Expected newline before "}" of a multi-line block',
19
+ rejectedBeforeMultiLine: 'Unexpected whitespace before "}" of a multi-line block'
20
+ });
21
+
22
+ const meta = {
23
+ url: 'https://github.com/jens-duttke/linter-bundle/blob/main/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-before/README.md',
24
+ fixable: true
25
+ };
26
+
27
+ /** @type {import('stylelint').Rule} */
28
+ const rule = (primary, _secondaryOptions, context) => (root, result) => {
29
+ const validOptions = validateOptions(result, ruleName, {
30
+ actual: primary,
31
+ possible: ['always', 'always-multi-line', 'never-multi-line']
32
+ });
33
+
34
+ if (!validOptions) {
35
+ return;
36
+ }
37
+
38
+ // Check both kinds of statements: rules and at-rules
39
+ root.walkRules(check);
40
+ root.walkAtRules(check);
41
+
42
+ /**
43
+ * @param {import('postcss').Rule | import('postcss').AtRule} statement
44
+ */
45
+ function check (statement) {
46
+ // Return early if blockless or has empty block
47
+ if (!hasBlock(statement) || hasEmptyBlock(statement)) {
48
+ return;
49
+ }
50
+
51
+ // Ignore extra semicolon
52
+ const after = (statement.raws.after || '').replace(/;+/, '');
53
+
54
+ if (after === undefined) {
55
+ return;
56
+ }
57
+
58
+ const blockIsMultiLine = !isSingleLineString(blockString(statement));
59
+ const statementString = statement.toString();
60
+
61
+ let index = statementString.length - 2;
62
+
63
+ if (statementString[index - 1] === '\r') {
64
+ index -= 1;
65
+ }
66
+
67
+ // We're really just checking whether a
68
+ // newline *starts* the block's final space -- between
69
+ // the last declaration and the closing brace. We can
70
+ // ignore any other whitespace between them, because that
71
+ // will be checked by the indentation rule.
72
+ if (!after.startsWith('\n') && !after.startsWith('\r\n')) {
73
+ if (primary === 'always') {
74
+ complain(messages.expectedBefore);
75
+ }
76
+ else if (blockIsMultiLine && primary === 'always-multi-line') {
77
+ complain(messages.expectedBeforeMultiLine);
78
+ }
79
+ }
80
+
81
+ if (after !== '' && blockIsMultiLine && primary === 'never-multi-line') {
82
+ complain(messages.rejectedBeforeMultiLine);
83
+ }
84
+
85
+ /**
86
+ * @param {string} message
87
+ */
88
+ function complain (message) {
89
+ if (context.fix) {
90
+ const statementRaws = statement.raws;
91
+
92
+ if (typeof statementRaws.after !== 'string') { return; }
93
+
94
+ if (primary.startsWith('always')) {
95
+ const firstWhitespaceIndex = statementRaws.after.search(/\s/);
96
+ const newlineBefore =
97
+ firstWhitespaceIndex >= 0 ?
98
+ statementRaws.after.slice(0, firstWhitespaceIndex)
99
+ : statementRaws.after;
100
+ const newlineAfter =
101
+ firstWhitespaceIndex >= 0 ? statementRaws.after.slice(firstWhitespaceIndex) : '';
102
+ const newlineIndex = newlineAfter.search(/\r?\n/);
103
+
104
+ statementRaws.after =
105
+ newlineIndex >= 0 ?
106
+ newlineBefore + newlineAfter.slice(newlineIndex)
107
+ : newlineBefore + context.newline + newlineAfter;
108
+
109
+ return;
110
+ }
111
+
112
+ if (primary === 'never-multi-line') {
113
+ statementRaws.after = statementRaws.after.replace(/\s/g, '');
114
+
115
+ return;
116
+ }
117
+ }
118
+
119
+ report({
120
+ message,
121
+ result,
122
+ ruleName,
123
+ node: statement,
124
+ index
125
+ });
126
+ }
127
+ }
128
+ };
129
+
130
+ rule.ruleName = ruleName;
131
+ rule.messages = messages;
132
+ rule.meta = meta;
133
+ module.exports = stylelint.createPlugin(ruleName, rule);
@@ -0,0 +1,174 @@
1
+ # block-closing-brace-space-before
2
+
3
+ Require a single space or disallow whitespace before the closing brace of blocks.
4
+
5
+ <!-- prettier-ignore -->
6
+ ```css
7
+ a { color: pink; }
8
+ /** ↑
9
+ * The space before this brace */
10
+ ```
11
+
12
+ The [`fix` option](https://stylelint.io/user-guide/options/#fix) can automatically fix all of the problems reported by this rule.
13
+
14
+ ## Options
15
+
16
+ `string`: `"always"|"never"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line"`
17
+
18
+ ### `"always"`
19
+
20
+ There _must always_ be a single space before the closing brace.
21
+
22
+ The following patterns are considered problems:
23
+
24
+ <!-- prettier-ignore -->
25
+ ```css
26
+ a { color: pink;}
27
+ ```
28
+
29
+ <!-- prettier-ignore -->
30
+ ```css
31
+ a
32
+ { color: pink;}
33
+ ```
34
+
35
+ The following patterns are _not_ considered problems:
36
+
37
+ <!-- prettier-ignore -->
38
+ ```css
39
+ a { color: pink; }
40
+ ```
41
+
42
+ <!-- prettier-ignore -->
43
+ ```css
44
+ a {
45
+ color: pink; }
46
+ ```
47
+
48
+ ### `"never"`
49
+
50
+ There _must never_ be whitespace before the closing brace.
51
+
52
+ The following patterns are considered problems:
53
+
54
+ <!-- prettier-ignore -->
55
+ ```css
56
+ a { color: pink; }
57
+ ```
58
+
59
+ <!-- prettier-ignore -->
60
+ ```css
61
+ a
62
+ { color: pink; }
63
+ ```
64
+
65
+ The following patterns are _not_ considered problems:
66
+
67
+ <!-- prettier-ignore -->
68
+ ```css
69
+ a{ color: pink;}
70
+ ```
71
+
72
+ <!-- prettier-ignore -->
73
+ ```css
74
+ a{
75
+ color: pink;}
76
+ ```
77
+
78
+ ### `"always-single-line"`
79
+
80
+ There _must always_ be a single space before the closing brace in single-line blocks.
81
+
82
+ The following patterns are considered problems:
83
+
84
+ <!-- prettier-ignore -->
85
+ ```css
86
+ a { color: pink;}
87
+ ```
88
+
89
+ The following patterns are _not_ considered problems:
90
+
91
+ <!-- prettier-ignore -->
92
+ ```css
93
+ a { color: pink; }
94
+ ```
95
+
96
+ <!-- prettier-ignore -->
97
+ ```css
98
+ a {
99
+ color: pink;}
100
+ ```
101
+
102
+ ### `"never-single-line"`
103
+
104
+ There _must never_ be whitespace before the closing brace in single-line blocks.
105
+
106
+ The following patterns are considered problems:
107
+
108
+ <!-- prettier-ignore -->
109
+ ```css
110
+ a { color: pink; }
111
+ ```
112
+
113
+ The following patterns are _not_ considered problems:
114
+
115
+ <!-- prettier-ignore -->
116
+ ```css
117
+ a { color: pink;}
118
+ ```
119
+
120
+ <!-- prettier-ignore -->
121
+ ```css
122
+ a {
123
+ color: pink; }
124
+ ```
125
+
126
+ ### `"always-multi-line"`
127
+
128
+ There _must always_ be a single space before the closing brace in multi-line blocks.
129
+
130
+ The following patterns are considered problems:
131
+
132
+ <!-- prettier-ignore -->
133
+ ```css
134
+ a {
135
+ color: pink;}
136
+ ```
137
+
138
+ The following patterns are _not_ considered problems:
139
+
140
+ <!-- prettier-ignore -->
141
+ ```css
142
+ a { color: pink;}
143
+ ```
144
+
145
+ <!-- prettier-ignore -->
146
+ ```css
147
+ a {
148
+ color: pink; }
149
+ ```
150
+
151
+ ### `"never-multi-line"`
152
+
153
+ There _must never_ be whitespace before the closing brace in multi-line blocks.
154
+
155
+ The following patterns are considered problems:
156
+
157
+ <!-- prettier-ignore -->
158
+ ```css
159
+ a {
160
+ color: pink; }
161
+ ```
162
+
163
+ The following patterns are _not_ considered problems:
164
+
165
+ <!-- prettier-ignore -->
166
+ ```css
167
+ a { color: pink; }
168
+ ```
169
+
170
+ <!-- prettier-ignore -->
171
+ ```css
172
+ a {
173
+ color: pink;}
174
+ ```
@@ -0,0 +1,111 @@
1
+ /* eslint-disable -- We want to keep as much of the original code as possible */
2
+ // @ts-nocheck
3
+
4
+ const stylelint = require('stylelint');
5
+ const blockString = require('stylelint/lib/utils/blockString.cjs');
6
+ const hasBlock = require('stylelint/lib/utils/hasBlock.cjs');
7
+ const report = require('stylelint/lib/utils/report.cjs');
8
+ const ruleMessages = require('stylelint/lib/utils/ruleMessages.cjs');
9
+ const validateOptions = require('stylelint/lib/utils/validateOptions.cjs');
10
+
11
+ const hasEmptyBlock = require('../../utils/hasEmptyBlock.cjs');
12
+ const whitespaceChecker = require('../../utils/whitespaceChecker.cjs');
13
+
14
+ const ruleName = 'plugin/block-closing-brace-space-before';
15
+
16
+ const messages = ruleMessages(ruleName, {
17
+ expectedBefore: () => 'Expected single space before "}"',
18
+ rejectedBefore: () => 'Unexpected whitespace before "}"',
19
+ expectedBeforeSingleLine: () => 'Expected single space before "}" of a single-line block',
20
+ rejectedBeforeSingleLine: () => 'Unexpected whitespace before "}" of a single-line block',
21
+ expectedBeforeMultiLine: () => 'Expected single space before "}" of a multi-line block',
22
+ rejectedBeforeMultiLine: () => 'Unexpected whitespace before "}" of a multi-line block'
23
+ });
24
+
25
+ const meta = {
26
+ url: 'https://github.com/jens-duttke/linter-bundle/blob/main/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-space-before/README.md',
27
+ fixable: true
28
+ };
29
+
30
+ /** @type {import('stylelint').Rule} */
31
+ const rule = (primary, _secondaryOptions, context) => {
32
+ const checker = whitespaceChecker('space', primary, messages);
33
+
34
+ return (root, result) => {
35
+ const validOptions = validateOptions(result, ruleName, {
36
+ actual: primary,
37
+ possible: [
38
+ 'always',
39
+ 'never',
40
+ 'always-single-line',
41
+ 'never-single-line',
42
+ 'always-multi-line',
43
+ 'never-multi-line'
44
+ ]
45
+ });
46
+
47
+ if (!validOptions) {
48
+ return;
49
+ }
50
+
51
+ // Check both kinds of statement: rules and at-rules
52
+ root.walkRules(check);
53
+ root.walkAtRules(check);
54
+
55
+ /**
56
+ * @param {import('postcss').Rule | import('postcss').AtRule} statement
57
+ */
58
+ function check (statement) {
59
+ // Return early if blockless or has empty block
60
+ if (!hasBlock(statement) || hasEmptyBlock(statement)) {
61
+ return;
62
+ }
63
+
64
+ const source = blockString(statement);
65
+ const statementString = statement.toString();
66
+
67
+ let index = statementString.length - 2;
68
+
69
+ if (statementString[index - 1] === '\r') {
70
+ index -= 1;
71
+ }
72
+
73
+ checker.before({
74
+ source,
75
+ index: source.length - 1,
76
+ err: (message) => {
77
+ if (context.fix) {
78
+ const statementRaws = statement.raws;
79
+
80
+ if (typeof statementRaws.after !== 'string') { return; }
81
+
82
+ if (primary.startsWith('always')) {
83
+ statementRaws.after = statementRaws.after.replace(/\s*$/, ' ');
84
+
85
+ return;
86
+ }
87
+
88
+ if (primary.startsWith('never')) {
89
+ statementRaws.after = statementRaws.after.replace(/\s*$/, '');
90
+
91
+ return;
92
+ }
93
+ }
94
+
95
+ report({
96
+ message,
97
+ node: statement,
98
+ index,
99
+ result,
100
+ ruleName
101
+ });
102
+ }
103
+ });
104
+ }
105
+ };
106
+ };
107
+
108
+ rule.ruleName = ruleName;
109
+ rule.messages = messages;
110
+ rule.meta = meta;
111
+ module.exports = stylelint.createPlugin(ruleName, rule);
@@ -0,0 +1,138 @@
1
+ # block-opening-brace-newline-after
2
+
3
+ Require a newline after the opening brace of blocks.
4
+
5
+ <!-- prettier-ignore -->
6
+ ```css
7
+ a {
8
+ ↑ color: pink; }
9
+ /** ↑
10
+ * The newline after this brace */
11
+ ```
12
+
13
+ This rule allows an end-of-line comment followed by a newline. For example,
14
+
15
+ <!-- prettier-ignore -->
16
+ ```css
17
+ a { /* end-of-line comment */
18
+ color: pink;
19
+ }
20
+ ```
21
+
22
+ The [`fix` option](https://stylelint.io/user-guide/options/#fix) can automatically fix all of the problems reported by this rule.
23
+
24
+ ## Options
25
+
26
+ `string`: `"always"|"always-multi-line"|"never-multi-line"`
27
+
28
+ ### `"always"`
29
+
30
+ There _must always_ be a newline after the opening brace.
31
+
32
+ The following patterns are considered problems:
33
+
34
+ <!-- prettier-ignore -->
35
+ ```css
36
+ a{ color: pink; }
37
+ ```
38
+
39
+ <!-- prettier-ignore -->
40
+ ```css
41
+ a{ color: pink;
42
+ }
43
+ ```
44
+
45
+ <!-- prettier-ignore -->
46
+ ```css
47
+ a{ /* end-of-line comment
48
+ with a newline */
49
+ color: pink;
50
+ }
51
+ ```
52
+
53
+ The following patterns are _not_ considered problems:
54
+
55
+ <!-- prettier-ignore -->
56
+ ```css
57
+ a {
58
+ color: pink; }
59
+ ```
60
+
61
+ <!-- prettier-ignore -->
62
+ ```css
63
+ a
64
+ {
65
+ color: pink; }
66
+ ```
67
+
68
+ <!-- prettier-ignore -->
69
+ ```css
70
+ a { /* end-of-line comment */
71
+ color: pink;
72
+ }
73
+ ```
74
+
75
+ ### `"always-multi-line"`
76
+
77
+ There _must always_ be a newline after the opening brace in multi-line blocks.
78
+
79
+ The following patterns are considered problems:
80
+
81
+ <!-- prettier-ignore -->
82
+ ```css
83
+ a{color: pink;
84
+ }
85
+ ```
86
+
87
+ The following patterns are _not_ considered problems:
88
+
89
+ <!-- prettier-ignore -->
90
+ ```css
91
+ a { color: pink; }
92
+ ```
93
+
94
+ <!-- prettier-ignore -->
95
+ ```css
96
+ a {
97
+ color: pink; }
98
+ ```
99
+
100
+ ### `"never-multi-line"`
101
+
102
+ There _must never_ be whitespace after the opening brace in multi-line blocks.
103
+
104
+ The following patterns are considered problems:
105
+
106
+ <!-- prettier-ignore -->
107
+ ```css
108
+ a { color: pink;
109
+ }
110
+ ```
111
+
112
+ The following patterns are _not_ considered problems:
113
+
114
+ <!-- prettier-ignore -->
115
+ ```css
116
+ a { color: pink; }
117
+ ```
118
+
119
+ <!-- prettier-ignore -->
120
+ ```css
121
+ a {color: pink;
122
+ }
123
+ ```
124
+
125
+ ## Optional secondary options
126
+
127
+ ### `ignore: ["rules"]`
128
+
129
+ Ignore the opening brace of rules.
130
+
131
+ For example, with `"always"`:
132
+
133
+ The following pattern is _not_ considered a problem:
134
+
135
+ <!-- prettier-ignore -->
136
+ ```css
137
+ a { color: pink; }
138
+ ```